From d067afdbb2db02d1df96d8e3bd8ca5b55dfa312f Mon Sep 17 00:00:00 2001 From: jinglong <1309572580@qq.com> Date: Wed, 27 Nov 2019 15:19:25 +0800 Subject: [PATCH] 增加文件 --- addons/command/Command.php | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/command/application/admin/controller/Command.php | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/command/application/admin/lang/zh-cn/command.php | 16 ++++++++++++++++ addons/command/application/admin/model/Command.php | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/command/application/admin/validate/Command.php | 27 +++++++++++++++++++++++++++ addons/command/application/admin/view/command/add.html | 400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/command/application/admin/view/command/detail.html | 42 ++++++++++++++++++++++++++++++++++++++++++ addons/command/application/admin/view/command/index.html | 25 +++++++++++++++++++++++++ addons/command/config.php | 4 ++++ addons/command/controller/Index.php | 15 +++++++++++++++ addons/command/info.ini | 8 ++++++++ addons/command/install.sql | 12 ++++++++++++ addons/command/library/Output.php | 28 ++++++++++++++++++++++++++++ addons/command/public/assets/js/backend/command.js | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/Nkeditor.php | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/README.md | 17 +++++++++++++++++ addons/nkeditor/assets/css/common.css | 5 +++++ addons/nkeditor/assets/img/download.png | Bin 0 -> 1141 bytes addons/nkeditor/assets/img/downloading.png | Bin 0 -> 8849 bytes addons/nkeditor/assets/js/customplugin.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/ar.js | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/en.js | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/ja-JP.js | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/ko.js | 246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/ru.js | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/zh-CN.js | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/lang/zh-TW.js | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/nkeditor.js | 9532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/nkeditor.min.js | 1 + addons/nkeditor/assets/plugins/anchor/anchor.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/autoheight/autoheight.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/baidumap/baidumap.js | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/baidumap/index.html | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/baidumap/map.html | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/clearhtml/clearhtml.js | 29 +++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/code/code.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/code/pretty.js | 18 ++++++++++++++++++ addons/nkeditor/assets/plugins/code/prism.css | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/code/prism.js | 26 ++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/emoticons/emoticons.js | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/emoticons/images/0.gif | Bin 0 -> 1810 bytes addons/nkeditor/assets/plugins/emoticons/images/1.gif | Bin 0 -> 1582 bytes addons/nkeditor/assets/plugins/emoticons/images/10.gif | Bin 0 -> 3716 bytes addons/nkeditor/assets/plugins/emoticons/images/100.gif | Bin 0 -> 1780 bytes addons/nkeditor/assets/plugins/emoticons/images/101.gif | Bin 0 -> 2443 bytes addons/nkeditor/assets/plugins/emoticons/images/102.gif | Bin 0 -> 1446 bytes addons/nkeditor/assets/plugins/emoticons/images/103.gif | Bin 0 -> 2166 bytes addons/nkeditor/assets/plugins/emoticons/images/104.gif | Bin 0 -> 2169 bytes addons/nkeditor/assets/plugins/emoticons/images/105.gif | Bin 0 -> 1277 bytes addons/nkeditor/assets/plugins/emoticons/images/106.gif | Bin 0 -> 1041 bytes addons/nkeditor/assets/plugins/emoticons/images/107.gif | Bin 0 -> 1058 bytes addons/nkeditor/assets/plugins/emoticons/images/108.gif | Bin 0 -> 1046 bytes addons/nkeditor/assets/plugins/emoticons/images/109.gif | Bin 0 -> 1081 bytes addons/nkeditor/assets/plugins/emoticons/images/11.gif | Bin 0 -> 8033 bytes addons/nkeditor/assets/plugins/emoticons/images/110.gif | Bin 0 -> 1082 bytes addons/nkeditor/assets/plugins/emoticons/images/111.gif | Bin 0 -> 1039 bytes addons/nkeditor/assets/plugins/emoticons/images/112.gif | Bin 0 -> 1111 bytes addons/nkeditor/assets/plugins/emoticons/images/113.gif | Bin 0 -> 1015 bytes addons/nkeditor/assets/plugins/emoticons/images/114.gif | Bin 0 -> 1003 bytes addons/nkeditor/assets/plugins/emoticons/images/115.gif | Bin 0 -> 1061 bytes addons/nkeditor/assets/plugins/emoticons/images/116.gif | Bin 0 -> 996 bytes addons/nkeditor/assets/plugins/emoticons/images/117.gif | Bin 0 -> 1041 bytes addons/nkeditor/assets/plugins/emoticons/images/118.gif | Bin 0 -> 1012 bytes addons/nkeditor/assets/plugins/emoticons/images/119.gif | Bin 0 -> 1101 bytes addons/nkeditor/assets/plugins/emoticons/images/12.gif | Bin 0 -> 2247 bytes addons/nkeditor/assets/plugins/emoticons/images/120.gif | Bin 0 -> 1008 bytes addons/nkeditor/assets/plugins/emoticons/images/121.gif | Bin 0 -> 1060 bytes addons/nkeditor/assets/plugins/emoticons/images/122.gif | Bin 0 -> 999 bytes addons/nkeditor/assets/plugins/emoticons/images/123.gif | Bin 0 -> 1055 bytes addons/nkeditor/assets/plugins/emoticons/images/124.gif | Bin 0 -> 1022 bytes addons/nkeditor/assets/plugins/emoticons/images/125.gif | Bin 0 -> 1013 bytes addons/nkeditor/assets/plugins/emoticons/images/126.gif | Bin 0 -> 1030 bytes addons/nkeditor/assets/plugins/emoticons/images/127.gif | Bin 0 -> 956 bytes addons/nkeditor/assets/plugins/emoticons/images/128.gif | Bin 0 -> 1022 bytes addons/nkeditor/assets/plugins/emoticons/images/129.gif | Bin 0 -> 972 bytes addons/nkeditor/assets/plugins/emoticons/images/13.gif | Bin 0 -> 1736 bytes addons/nkeditor/assets/plugins/emoticons/images/130.gif | Bin 0 -> 980 bytes addons/nkeditor/assets/plugins/emoticons/images/131.gif | Bin 0 -> 945 bytes addons/nkeditor/assets/plugins/emoticons/images/132.gif | Bin 0 -> 936 bytes addons/nkeditor/assets/plugins/emoticons/images/133.gif | Bin 0 -> 1012 bytes addons/nkeditor/assets/plugins/emoticons/images/134.gif | Bin 0 -> 968 bytes addons/nkeditor/assets/plugins/emoticons/images/14.gif | Bin 0 -> 4006 bytes addons/nkeditor/assets/plugins/emoticons/images/15.gif | Bin 0 -> 1562 bytes addons/nkeditor/assets/plugins/emoticons/images/16.gif | Bin 0 -> 1413 bytes addons/nkeditor/assets/plugins/emoticons/images/17.gif | Bin 0 -> 3366 bytes addons/nkeditor/assets/plugins/emoticons/images/18.gif | Bin 0 -> 8137 bytes addons/nkeditor/assets/plugins/emoticons/images/19.gif | Bin 0 -> 8135 bytes addons/nkeditor/assets/plugins/emoticons/images/2.gif | Bin 0 -> 1804 bytes addons/nkeditor/assets/plugins/emoticons/images/20.gif | Bin 0 -> 1808 bytes addons/nkeditor/assets/plugins/emoticons/images/21.gif | Bin 0 -> 1864 bytes addons/nkeditor/assets/plugins/emoticons/images/22.gif | Bin 0 -> 3010 bytes addons/nkeditor/assets/plugins/emoticons/images/23.gif | Bin 0 -> 1950 bytes addons/nkeditor/assets/plugins/emoticons/images/24.gif | Bin 0 -> 2257 bytes addons/nkeditor/assets/plugins/emoticons/images/25.gif | Bin 0 -> 2446 bytes addons/nkeditor/assets/plugins/emoticons/images/26.gif | Bin 0 -> 4014 bytes addons/nkeditor/assets/plugins/emoticons/images/27.gif | Bin 0 -> 2893 bytes addons/nkeditor/assets/plugins/emoticons/images/28.gif | Bin 0 -> 3262 bytes addons/nkeditor/assets/plugins/emoticons/images/29.gif | Bin 0 -> 5861 bytes addons/nkeditor/assets/plugins/emoticons/images/3.gif | Bin 0 -> 1852 bytes addons/nkeditor/assets/plugins/emoticons/images/30.gif | Bin 0 -> 1780 bytes addons/nkeditor/assets/plugins/emoticons/images/31.gif | Bin 0 -> 5174 bytes addons/nkeditor/assets/plugins/emoticons/images/32.gif | Bin 0 -> 7189 bytes addons/nkeditor/assets/plugins/emoticons/images/33.gif | Bin 0 -> 4317 bytes addons/nkeditor/assets/plugins/emoticons/images/34.gif | Bin 0 -> 2140 bytes addons/nkeditor/assets/plugins/emoticons/images/35.gif | Bin 0 -> 13392 bytes addons/nkeditor/assets/plugins/emoticons/images/36.gif | Bin 0 -> 1417 bytes addons/nkeditor/assets/plugins/emoticons/images/37.gif | Bin 0 -> 1195 bytes addons/nkeditor/assets/plugins/emoticons/images/38.gif | Bin 0 -> 1674 bytes addons/nkeditor/assets/plugins/emoticons/images/39.gif | Bin 0 -> 1798 bytes addons/nkeditor/assets/plugins/emoticons/images/4.gif | Bin 0 -> 1977 bytes addons/nkeditor/assets/plugins/emoticons/images/40.gif | Bin 0 -> 10092 bytes addons/nkeditor/assets/plugins/emoticons/images/41.gif | Bin 0 -> 3368 bytes addons/nkeditor/assets/plugins/emoticons/images/42.gif | Bin 0 -> 13367 bytes addons/nkeditor/assets/plugins/emoticons/images/43.gif | Bin 0 -> 4327 bytes addons/nkeditor/assets/plugins/emoticons/images/44.gif | Bin 0 -> 1571 bytes addons/nkeditor/assets/plugins/emoticons/images/45.gif | Bin 0 -> 4692 bytes addons/nkeditor/assets/plugins/emoticons/images/46.gif | Bin 0 -> 5162 bytes addons/nkeditor/assets/plugins/emoticons/images/47.gif | Bin 0 -> 3685 bytes addons/nkeditor/assets/plugins/emoticons/images/48.gif | Bin 0 -> 1755 bytes addons/nkeditor/assets/plugins/emoticons/images/49.gif | Bin 0 -> 6361 bytes addons/nkeditor/assets/plugins/emoticons/images/5.gif | Bin 0 -> 1866 bytes addons/nkeditor/assets/plugins/emoticons/images/50.gif | Bin 0 -> 3073 bytes addons/nkeditor/assets/plugins/emoticons/images/51.gif | Bin 0 -> 3731 bytes addons/nkeditor/assets/plugins/emoticons/images/52.gif | Bin 0 -> 1532 bytes addons/nkeditor/assets/plugins/emoticons/images/53.gif | Bin 0 -> 2056 bytes addons/nkeditor/assets/plugins/emoticons/images/54.gif | Bin 0 -> 2362 bytes addons/nkeditor/assets/plugins/emoticons/images/55.gif | Bin 0 -> 1582 bytes addons/nkeditor/assets/plugins/emoticons/images/56.gif | Bin 0 -> 1170 bytes addons/nkeditor/assets/plugins/emoticons/images/57.gif | Bin 0 -> 5072 bytes addons/nkeditor/assets/plugins/emoticons/images/58.gif | Bin 0 -> 2596 bytes addons/nkeditor/assets/plugins/emoticons/images/59.gif | Bin 0 -> 1533 bytes addons/nkeditor/assets/plugins/emoticons/images/6.gif | Bin 0 -> 3556 bytes addons/nkeditor/assets/plugins/emoticons/images/60.gif | Bin 0 -> 2667 bytes addons/nkeditor/assets/plugins/emoticons/images/61.gif | Bin 0 -> 1136 bytes addons/nkeditor/assets/plugins/emoticons/images/62.gif | Bin 0 -> 1269 bytes addons/nkeditor/assets/plugins/emoticons/images/63.gif | Bin 0 -> 971 bytes addons/nkeditor/assets/plugins/emoticons/images/64.gif | Bin 0 -> 988 bytes addons/nkeditor/assets/plugins/emoticons/images/65.gif | Bin 0 -> 5285 bytes addons/nkeditor/assets/plugins/emoticons/images/66.gif | Bin 0 -> 1159 bytes addons/nkeditor/assets/plugins/emoticons/images/67.gif | Bin 0 -> 2746 bytes addons/nkeditor/assets/plugins/emoticons/images/68.gif | Bin 0 -> 4148 bytes addons/nkeditor/assets/plugins/emoticons/images/69.gif | Bin 0 -> 1015 bytes addons/nkeditor/assets/plugins/emoticons/images/7.gif | Bin 0 -> 3929 bytes addons/nkeditor/assets/plugins/emoticons/images/70.gif | Bin 0 -> 1162 bytes addons/nkeditor/assets/plugins/emoticons/images/71.gif | Bin 0 -> 824 bytes addons/nkeditor/assets/plugins/emoticons/images/72.gif | Bin 0 -> 3679 bytes addons/nkeditor/assets/plugins/emoticons/images/73.gif | Bin 0 -> 2195 bytes addons/nkeditor/assets/plugins/emoticons/images/74.gif | Bin 0 -> 2454 bytes addons/nkeditor/assets/plugins/emoticons/images/75.gif | Bin 0 -> 1222 bytes addons/nkeditor/assets/plugins/emoticons/images/76.gif | Bin 0 -> 1211 bytes addons/nkeditor/assets/plugins/emoticons/images/77.gif | Bin 0 -> 1151 bytes addons/nkeditor/assets/plugins/emoticons/images/78.gif | Bin 0 -> 1565 bytes addons/nkeditor/assets/plugins/emoticons/images/79.gif | Bin 0 -> 1518 bytes addons/nkeditor/assets/plugins/emoticons/images/8.gif | Bin 0 -> 4679 bytes addons/nkeditor/assets/plugins/emoticons/images/80.gif | Bin 0 -> 1537 bytes addons/nkeditor/assets/plugins/emoticons/images/81.gif | Bin 0 -> 1591 bytes addons/nkeditor/assets/plugins/emoticons/images/82.gif | Bin 0 -> 1547 bytes addons/nkeditor/assets/plugins/emoticons/images/83.gif | Bin 0 -> 1591 bytes addons/nkeditor/assets/plugins/emoticons/images/84.gif | Bin 0 -> 3424 bytes addons/nkeditor/assets/plugins/emoticons/images/85.gif | Bin 0 -> 1581 bytes addons/nkeditor/assets/plugins/emoticons/images/86.gif | Bin 0 -> 1519 bytes addons/nkeditor/assets/plugins/emoticons/images/87.gif | Bin 0 -> 1558 bytes addons/nkeditor/assets/plugins/emoticons/images/88.gif | Bin 0 -> 2134 bytes addons/nkeditor/assets/plugins/emoticons/images/89.gif | Bin 0 -> 1219 bytes addons/nkeditor/assets/plugins/emoticons/images/9.gif | Bin 0 -> 3298 bytes addons/nkeditor/assets/plugins/emoticons/images/90.gif | Bin 0 -> 2743 bytes addons/nkeditor/assets/plugins/emoticons/images/91.gif | Bin 0 -> 654 bytes addons/nkeditor/assets/plugins/emoticons/images/92.gif | Bin 0 -> 1377 bytes addons/nkeditor/assets/plugins/emoticons/images/93.gif | Bin 0 -> 1119 bytes addons/nkeditor/assets/plugins/emoticons/images/94.gif | Bin 0 -> 3426 bytes addons/nkeditor/assets/plugins/emoticons/images/95.gif | Bin 0 -> 3011 bytes addons/nkeditor/assets/plugins/emoticons/images/96.gif | Bin 0 -> 1796 bytes addons/nkeditor/assets/plugins/emoticons/images/97.gif | Bin 0 -> 5300 bytes addons/nkeditor/assets/plugins/emoticons/images/98.gif | Bin 0 -> 1629 bytes addons/nkeditor/assets/plugins/emoticons/images/99.gif | Bin 0 -> 2261 bytes addons/nkeditor/assets/plugins/emoticons/images/static.gif | Bin 0 -> 35504 bytes addons/nkeditor/assets/plugins/filemanager/FManager.js | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/filemanager/FManager.min.js | 2 ++ addons/nkeditor/assets/plugins/filemanager/css/filemanager.min.css | 0 addons/nkeditor/assets/plugins/filemanager/filemanager.js | 35 +++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/fixtoolbar/fixtoolbar.js | 35 +++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/flash/flash.js | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/graft/css/images/addimg.png | Bin 0 -> 628 bytes addons/nkeditor/assets/plugins/graft/css/images/blur.png | Bin 0 -> 3376 bytes addons/nkeditor/assets/plugins/graft/css/images/brush.png | Bin 0 -> 608 bytes addons/nkeditor/assets/plugins/graft/css/images/delimg.png | Bin 0 -> 516 bytes addons/nkeditor/assets/plugins/graft/css/images/delimgH.png | Bin 0 -> 578 bytes addons/nkeditor/assets/plugins/graft/css/images/empty.png | Bin 0 -> 519 bytes addons/nkeditor/assets/plugins/graft/css/images/emptyH.png | Bin 0 -> 657 bytes addons/nkeditor/assets/plugins/graft/css/images/eraser.png | Bin 0 -> 43271 bytes addons/nkeditor/assets/plugins/graft/css/images/init.png | Bin 0 -> 695 bytes addons/nkeditor/assets/plugins/graft/css/images/redo.png | Bin 0 -> 454 bytes addons/nkeditor/assets/plugins/graft/css/images/redoH.png | Bin 0 -> 536 bytes addons/nkeditor/assets/plugins/graft/css/images/save.png | Bin 0 -> 837 bytes addons/nkeditor/assets/plugins/graft/css/images/scale.png | Bin 0 -> 435 bytes addons/nkeditor/assets/plugins/graft/css/images/scaleH.png | Bin 0 -> 330 bytes addons/nkeditor/assets/plugins/graft/css/images/size.png | Bin 0 -> 775 bytes addons/nkeditor/assets/plugins/graft/css/images/undo.png | Bin 0 -> 444 bytes addons/nkeditor/assets/plugins/graft/css/images/undoH.png | Bin 0 -> 511 bytes addons/nkeditor/assets/plugins/graft/css/scrawl.css | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/graft/css/scrawl.css.map | 7 +++++++ addons/nkeditor/assets/plugins/graft/css/scrawl.scss | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/graft/graft.js | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/graft/index.html | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/graft/scrawl.js | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/image/image.js | 340 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/image/images/align_left.gif | Bin 0 -> 639 bytes addons/nkeditor/assets/plugins/image/images/align_right.gif | Bin 0 -> 636 bytes addons/nkeditor/assets/plugins/image/images/align_top.gif | Bin 0 -> 625 bytes addons/nkeditor/assets/plugins/image/images/refresh.png | Bin 0 -> 800 bytes addons/nkeditor/assets/plugins/insertfile/insertfile.js | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/lineheight/lineheight.js | 38 ++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/link/link.js | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/map/map.html | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/map/map.js | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/media/media.js | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/multiimage/BUpload.js | 625 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/multiimage/BUpload.min.js | 2 ++ addons/nkeditor/assets/plugins/multiimage/css/icons/aep.png | Bin 0 -> 11058 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/asp.png | Bin 0 -> 27562 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/avi.png | Bin 0 -> 11778 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/c.png | Bin 0 -> 7341 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/conf.png | Bin 0 -> 12352 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/css.png | Bin 0 -> 26823 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/default.png | Bin 0 -> 27900 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/doc.png | Bin 0 -> 14939 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/eml.png | Bin 0 -> 13584 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/eps.png | Bin 0 -> 10488 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/fla.png | Bin 0 -> 11240 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/htm.png | Bin 0 -> 26753 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/idn.png | Bin 0 -> 10993 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/ini.png | Bin 0 -> 9847 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/java.png | Bin 0 -> 26203 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/js.png | Bin 0 -> 9156 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/jsf.png | Bin 0 -> 10661 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/markdown.png | Bin 0 -> 9053 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/mdb.png | Bin 0 -> 15587 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/midi.png | Bin 0 -> 10479 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/mov.png | Bin 0 -> 11855 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/mp3.png | Bin 0 -> 12130 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/mpeg.png | Bin 0 -> 14349 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/pdf.png | Bin 0 -> 12064 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/php.png | Bin 0 -> 11551 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/ppt.png | Bin 0 -> 14255 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/psd.png | Bin 0 -> 11360 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/pst.png | Bin 0 -> 14430 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/pub.png | Bin 0 -> 15185 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/py.png | Bin 0 -> 24844 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/rb.png | Bin 0 -> 25872 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/rmvb.png | Bin 0 -> 14349 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/scss.png | Bin 0 -> 10890 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/sql.png | Bin 0 -> 26862 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/tif.png | Bin 0 -> 11254 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/txt.png | Bin 0 -> 9035 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/vsd.png | Bin 0 -> 14362 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/wav.png | Bin 0 -> 18838 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/wma.png | Bin 0 -> 12844 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/wmv.png | Bin 0 -> 12468 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/xls.png | Bin 0 -> 15671 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/xml.png | Bin 0 -> 26594 bytes addons/nkeditor/assets/plugins/multiimage/css/icons/zip.png | Bin 0 -> 10319 bytes addons/nkeditor/assets/plugins/multiimage/css/images/dialog-title-bg.png | Bin 0 -> 938 bytes addons/nkeditor/assets/plugins/multiimage/css/images/icons-all.gif | Bin 0 -> 3750 bytes addons/nkeditor/assets/plugins/multiimage/css/images/icons.png | Bin 0 -> 2678 bytes addons/nkeditor/assets/plugins/multiimage/css/images/image.png | Bin 0 -> 1672 bytes addons/nkeditor/assets/plugins/multiimage/css/images/loader.gif | Bin 0 -> 1787 bytes addons/nkeditor/assets/plugins/multiimage/css/images/progress.png | Bin 0 -> 1269 bytes addons/nkeditor/assets/plugins/multiimage/css/images/success.png | Bin 0 -> 1621 bytes addons/nkeditor/assets/plugins/multiimage/css/upload.css | 552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/multiimage/css/upload.css.map | 7 +++++++ addons/nkeditor/assets/plugins/multiimage/css/upload.min.css | 1 + addons/nkeditor/assets/plugins/multiimage/css/upload.scss | 642 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/multiimage/multiimage.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/multiimage/template/template.html | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/pagebreak/pagebreak.js | 27 +++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/plainpaste/plainpaste.js | 41 +++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/preview/preview.js | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/quickformat/quickformat.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/quote/quote.js | 12 ++++++++++++ addons/nkeditor/assets/plugins/table/table.js | 746 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/template/html/1.html | 14 ++++++++++++++ addons/nkeditor/assets/plugins/template/html/2.html | 42 ++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/template/html/3.html | 36 ++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/template/template.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/plugins/wordpaste/wordpaste.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/app.css | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/black/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/black/editor.css.map | 7 +++++++ addons/nkeditor/assets/themes/black/editor.min.css | 1 + addons/nkeditor/assets/themes/black/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/black/images/nkeditor.png | Bin 0 -> 14650 bytes addons/nkeditor/assets/themes/black/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/blue/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/blue/editor.css.map | 7 +++++++ addons/nkeditor/assets/themes/blue/editor.min.css | 1 + addons/nkeditor/assets/themes/blue/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/blue/images/nkeditor.png | Bin 0 -> 15428 bytes addons/nkeditor/assets/themes/blue/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/common/anchor.gif | Bin 0 -> 371 bytes addons/nkeditor/assets/themes/common/blank.gif | Bin 0 -> 43 bytes addons/nkeditor/assets/themes/common/common.css | 605 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/common/common.css.map | 7 +++++++ addons/nkeditor/assets/themes/common/common.scss | 830 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/common/dialog-title-bg.png | Bin 0 -> 938 bytes addons/nkeditor/assets/themes/common/flash.gif | Bin 0 -> 1089 bytes addons/nkeditor/assets/themes/common/flash.png | Bin 0 -> 1133 bytes addons/nkeditor/assets/themes/common/flash.svg | 1 + addons/nkeditor/assets/themes/common/icons-all.gif | Bin 0 -> 3750 bytes addons/nkeditor/assets/themes/common/loading.gif | Bin 0 -> 2608 bytes addons/nkeditor/assets/themes/common/media.gif | Bin 0 -> 1036 bytes addons/nkeditor/assets/themes/common/play.png | Bin 0 -> 1130 bytes addons/nkeditor/assets/themes/common/play.svg | 1 + addons/nkeditor/assets/themes/common/rm.gif | Bin 0 -> 989 bytes addons/nkeditor/assets/themes/default/editor.css | 1398 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/default/editor.min.css | 1 + addons/nkeditor/assets/themes/default/images/background.png | Bin 0 -> 1410 bytes addons/nkeditor/assets/themes/default/images/default.png | Bin 0 -> 8299 bytes addons/nkeditor/assets/themes/default/images/scrawl.png | Bin 0 -> 919 bytes addons/nkeditor/assets/themes/grey/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/grey/editor.css.map | 7 +++++++ addons/nkeditor/assets/themes/grey/editor.min.css | 1 + addons/nkeditor/assets/themes/grey/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/grey/images/nkeditor.png | Bin 0 -> 14637 bytes addons/nkeditor/assets/themes/grey/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/primary/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/primary/editor.css.map | 7 +++++++ addons/nkeditor/assets/themes/primary/editor.min.css | 1 + addons/nkeditor/assets/themes/primary/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/assets/themes/primary/images/nkeditor.png | Bin 0 -> 15396 bytes addons/nkeditor/assets/themes/primary/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/bootstrap.js | 285 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/config.php | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/controller/Index.php | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/info.ini | 8 ++++++++ addons/nkeditor/license.txt | 502 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/nkeditor/nodejs/word.js | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/qiniu/Qiniu.php | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/qiniu/bootstrap.js | 21 +++++++++++++++++++++ addons/qiniu/config.php | 236 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/qiniu/controller/Index.php | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ addons/qiniu/info.ini | 8 ++++++++ addons/qiniu/library/Auth.php | 160 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/command/Install/install.lock | 1 + application/admin/controller/Banner.php | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/controller/Command.php | 219 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/controller/Index.php | 8 ++++---- application/admin/lang/zh-cn/banner.php | 8 ++++++++ application/admin/lang/zh-cn/command.php | 16 ++++++++++++++++ application/admin/model/Banner.php | 40 ++++++++++++++++++++++++++++++++++++++++ application/admin/model/Command.php | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/validate/Banner.php | 27 +++++++++++++++++++++++++++ application/admin/validate/Command.php | 27 +++++++++++++++++++++++++++ application/admin/view/banner/add.html | 24 ++++++++++++++++++++++++ application/admin/view/banner/edit.html | 24 ++++++++++++++++++++++++ application/admin/view/banner/index.html | 35 +++++++++++++++++++++++++++++++++++ application/admin/view/command/add.html | 400 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ application/admin/view/command/detail.html | 42 ++++++++++++++++++++++++++++++++++++++++++ application/admin/view/command/index.html | 25 +++++++++++++++++++++++++ application/admin/view/common/menu.html | 8 ++++---- application/config.php | 2 +- application/database.php | 8 ++++---- application/extra/addons.php | 12 ++++++++++++ public/XzuemHTJfG.php | 38 ++++++++++++++++++++++++++++++++++++++ public/admin.php | 38 -------------------------------------- public/assets/addons/nkeditor/css/common.css | 5 +++++ public/assets/addons/nkeditor/img/download.png | Bin 0 -> 1141 bytes public/assets/addons/nkeditor/img/downloading.png | Bin 0 -> 8849 bytes public/assets/addons/nkeditor/js/customplugin.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/ar.js | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/en.js | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/ja-JP.js | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/ko.js | 246 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/ru.js | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/zh-CN.js | 267 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/lang/zh-TW.js | 243 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/nkeditor.js | 9532 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/nkeditor.min.js | 1 + public/assets/addons/nkeditor/plugins/anchor/anchor.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/autoheight/autoheight.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/baidumap/baidumap.js | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/baidumap/index.html | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/baidumap/map.html | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/clearhtml/clearhtml.js | 29 +++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/code/code.js | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/code/pretty.js | 18 ++++++++++++++++++ public/assets/addons/nkeditor/plugins/code/prism.css | 292 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/code/prism.js | 26 ++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/emoticons/emoticons.js | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/emoticons/images/0.gif | Bin 0 -> 1810 bytes public/assets/addons/nkeditor/plugins/emoticons/images/1.gif | Bin 0 -> 1582 bytes public/assets/addons/nkeditor/plugins/emoticons/images/10.gif | Bin 0 -> 3716 bytes public/assets/addons/nkeditor/plugins/emoticons/images/100.gif | Bin 0 -> 1780 bytes public/assets/addons/nkeditor/plugins/emoticons/images/101.gif | Bin 0 -> 2443 bytes public/assets/addons/nkeditor/plugins/emoticons/images/102.gif | Bin 0 -> 1446 bytes public/assets/addons/nkeditor/plugins/emoticons/images/103.gif | Bin 0 -> 2166 bytes public/assets/addons/nkeditor/plugins/emoticons/images/104.gif | Bin 0 -> 2169 bytes public/assets/addons/nkeditor/plugins/emoticons/images/105.gif | Bin 0 -> 1277 bytes public/assets/addons/nkeditor/plugins/emoticons/images/106.gif | Bin 0 -> 1041 bytes public/assets/addons/nkeditor/plugins/emoticons/images/107.gif | Bin 0 -> 1058 bytes public/assets/addons/nkeditor/plugins/emoticons/images/108.gif | Bin 0 -> 1046 bytes public/assets/addons/nkeditor/plugins/emoticons/images/109.gif | Bin 0 -> 1081 bytes public/assets/addons/nkeditor/plugins/emoticons/images/11.gif | Bin 0 -> 8033 bytes public/assets/addons/nkeditor/plugins/emoticons/images/110.gif | Bin 0 -> 1082 bytes public/assets/addons/nkeditor/plugins/emoticons/images/111.gif | Bin 0 -> 1039 bytes public/assets/addons/nkeditor/plugins/emoticons/images/112.gif | Bin 0 -> 1111 bytes public/assets/addons/nkeditor/plugins/emoticons/images/113.gif | Bin 0 -> 1015 bytes public/assets/addons/nkeditor/plugins/emoticons/images/114.gif | Bin 0 -> 1003 bytes public/assets/addons/nkeditor/plugins/emoticons/images/115.gif | Bin 0 -> 1061 bytes public/assets/addons/nkeditor/plugins/emoticons/images/116.gif | Bin 0 -> 996 bytes public/assets/addons/nkeditor/plugins/emoticons/images/117.gif | Bin 0 -> 1041 bytes public/assets/addons/nkeditor/plugins/emoticons/images/118.gif | Bin 0 -> 1012 bytes public/assets/addons/nkeditor/plugins/emoticons/images/119.gif | Bin 0 -> 1101 bytes public/assets/addons/nkeditor/plugins/emoticons/images/12.gif | Bin 0 -> 2247 bytes public/assets/addons/nkeditor/plugins/emoticons/images/120.gif | Bin 0 -> 1008 bytes public/assets/addons/nkeditor/plugins/emoticons/images/121.gif | Bin 0 -> 1060 bytes public/assets/addons/nkeditor/plugins/emoticons/images/122.gif | Bin 0 -> 999 bytes public/assets/addons/nkeditor/plugins/emoticons/images/123.gif | Bin 0 -> 1055 bytes public/assets/addons/nkeditor/plugins/emoticons/images/124.gif | Bin 0 -> 1022 bytes public/assets/addons/nkeditor/plugins/emoticons/images/125.gif | Bin 0 -> 1013 bytes public/assets/addons/nkeditor/plugins/emoticons/images/126.gif | Bin 0 -> 1030 bytes public/assets/addons/nkeditor/plugins/emoticons/images/127.gif | Bin 0 -> 956 bytes public/assets/addons/nkeditor/plugins/emoticons/images/128.gif | Bin 0 -> 1022 bytes public/assets/addons/nkeditor/plugins/emoticons/images/129.gif | Bin 0 -> 972 bytes public/assets/addons/nkeditor/plugins/emoticons/images/13.gif | Bin 0 -> 1736 bytes public/assets/addons/nkeditor/plugins/emoticons/images/130.gif | Bin 0 -> 980 bytes public/assets/addons/nkeditor/plugins/emoticons/images/131.gif | Bin 0 -> 945 bytes public/assets/addons/nkeditor/plugins/emoticons/images/132.gif | Bin 0 -> 936 bytes public/assets/addons/nkeditor/plugins/emoticons/images/133.gif | Bin 0 -> 1012 bytes public/assets/addons/nkeditor/plugins/emoticons/images/134.gif | Bin 0 -> 968 bytes public/assets/addons/nkeditor/plugins/emoticons/images/14.gif | Bin 0 -> 4006 bytes public/assets/addons/nkeditor/plugins/emoticons/images/15.gif | Bin 0 -> 1562 bytes public/assets/addons/nkeditor/plugins/emoticons/images/16.gif | Bin 0 -> 1413 bytes public/assets/addons/nkeditor/plugins/emoticons/images/17.gif | Bin 0 -> 3366 bytes public/assets/addons/nkeditor/plugins/emoticons/images/18.gif | Bin 0 -> 8137 bytes public/assets/addons/nkeditor/plugins/emoticons/images/19.gif | Bin 0 -> 8135 bytes public/assets/addons/nkeditor/plugins/emoticons/images/2.gif | Bin 0 -> 1804 bytes public/assets/addons/nkeditor/plugins/emoticons/images/20.gif | Bin 0 -> 1808 bytes public/assets/addons/nkeditor/plugins/emoticons/images/21.gif | Bin 0 -> 1864 bytes public/assets/addons/nkeditor/plugins/emoticons/images/22.gif | Bin 0 -> 3010 bytes public/assets/addons/nkeditor/plugins/emoticons/images/23.gif | Bin 0 -> 1950 bytes public/assets/addons/nkeditor/plugins/emoticons/images/24.gif | Bin 0 -> 2257 bytes public/assets/addons/nkeditor/plugins/emoticons/images/25.gif | Bin 0 -> 2446 bytes public/assets/addons/nkeditor/plugins/emoticons/images/26.gif | Bin 0 -> 4014 bytes public/assets/addons/nkeditor/plugins/emoticons/images/27.gif | Bin 0 -> 2893 bytes public/assets/addons/nkeditor/plugins/emoticons/images/28.gif | Bin 0 -> 3262 bytes public/assets/addons/nkeditor/plugins/emoticons/images/29.gif | Bin 0 -> 5861 bytes public/assets/addons/nkeditor/plugins/emoticons/images/3.gif | Bin 0 -> 1852 bytes public/assets/addons/nkeditor/plugins/emoticons/images/30.gif | Bin 0 -> 1780 bytes public/assets/addons/nkeditor/plugins/emoticons/images/31.gif | Bin 0 -> 5174 bytes public/assets/addons/nkeditor/plugins/emoticons/images/32.gif | Bin 0 -> 7189 bytes public/assets/addons/nkeditor/plugins/emoticons/images/33.gif | Bin 0 -> 4317 bytes public/assets/addons/nkeditor/plugins/emoticons/images/34.gif | Bin 0 -> 2140 bytes public/assets/addons/nkeditor/plugins/emoticons/images/35.gif | Bin 0 -> 13392 bytes public/assets/addons/nkeditor/plugins/emoticons/images/36.gif | Bin 0 -> 1417 bytes public/assets/addons/nkeditor/plugins/emoticons/images/37.gif | Bin 0 -> 1195 bytes public/assets/addons/nkeditor/plugins/emoticons/images/38.gif | Bin 0 -> 1674 bytes public/assets/addons/nkeditor/plugins/emoticons/images/39.gif | Bin 0 -> 1798 bytes public/assets/addons/nkeditor/plugins/emoticons/images/4.gif | Bin 0 -> 1977 bytes public/assets/addons/nkeditor/plugins/emoticons/images/40.gif | Bin 0 -> 10092 bytes public/assets/addons/nkeditor/plugins/emoticons/images/41.gif | Bin 0 -> 3368 bytes public/assets/addons/nkeditor/plugins/emoticons/images/42.gif | Bin 0 -> 13367 bytes public/assets/addons/nkeditor/plugins/emoticons/images/43.gif | Bin 0 -> 4327 bytes public/assets/addons/nkeditor/plugins/emoticons/images/44.gif | Bin 0 -> 1571 bytes public/assets/addons/nkeditor/plugins/emoticons/images/45.gif | Bin 0 -> 4692 bytes public/assets/addons/nkeditor/plugins/emoticons/images/46.gif | Bin 0 -> 5162 bytes public/assets/addons/nkeditor/plugins/emoticons/images/47.gif | Bin 0 -> 3685 bytes public/assets/addons/nkeditor/plugins/emoticons/images/48.gif | Bin 0 -> 1755 bytes public/assets/addons/nkeditor/plugins/emoticons/images/49.gif | Bin 0 -> 6361 bytes public/assets/addons/nkeditor/plugins/emoticons/images/5.gif | Bin 0 -> 1866 bytes public/assets/addons/nkeditor/plugins/emoticons/images/50.gif | Bin 0 -> 3073 bytes public/assets/addons/nkeditor/plugins/emoticons/images/51.gif | Bin 0 -> 3731 bytes public/assets/addons/nkeditor/plugins/emoticons/images/52.gif | Bin 0 -> 1532 bytes public/assets/addons/nkeditor/plugins/emoticons/images/53.gif | Bin 0 -> 2056 bytes public/assets/addons/nkeditor/plugins/emoticons/images/54.gif | Bin 0 -> 2362 bytes public/assets/addons/nkeditor/plugins/emoticons/images/55.gif | Bin 0 -> 1582 bytes public/assets/addons/nkeditor/plugins/emoticons/images/56.gif | Bin 0 -> 1170 bytes public/assets/addons/nkeditor/plugins/emoticons/images/57.gif | Bin 0 -> 5072 bytes public/assets/addons/nkeditor/plugins/emoticons/images/58.gif | Bin 0 -> 2596 bytes public/assets/addons/nkeditor/plugins/emoticons/images/59.gif | Bin 0 -> 1533 bytes public/assets/addons/nkeditor/plugins/emoticons/images/6.gif | Bin 0 -> 3556 bytes public/assets/addons/nkeditor/plugins/emoticons/images/60.gif | Bin 0 -> 2667 bytes public/assets/addons/nkeditor/plugins/emoticons/images/61.gif | Bin 0 -> 1136 bytes public/assets/addons/nkeditor/plugins/emoticons/images/62.gif | Bin 0 -> 1269 bytes public/assets/addons/nkeditor/plugins/emoticons/images/63.gif | Bin 0 -> 971 bytes public/assets/addons/nkeditor/plugins/emoticons/images/64.gif | Bin 0 -> 988 bytes public/assets/addons/nkeditor/plugins/emoticons/images/65.gif | Bin 0 -> 5285 bytes public/assets/addons/nkeditor/plugins/emoticons/images/66.gif | Bin 0 -> 1159 bytes public/assets/addons/nkeditor/plugins/emoticons/images/67.gif | Bin 0 -> 2746 bytes public/assets/addons/nkeditor/plugins/emoticons/images/68.gif | Bin 0 -> 4148 bytes public/assets/addons/nkeditor/plugins/emoticons/images/69.gif | Bin 0 -> 1015 bytes public/assets/addons/nkeditor/plugins/emoticons/images/7.gif | Bin 0 -> 3929 bytes public/assets/addons/nkeditor/plugins/emoticons/images/70.gif | Bin 0 -> 1162 bytes public/assets/addons/nkeditor/plugins/emoticons/images/71.gif | Bin 0 -> 824 bytes public/assets/addons/nkeditor/plugins/emoticons/images/72.gif | Bin 0 -> 3679 bytes public/assets/addons/nkeditor/plugins/emoticons/images/73.gif | Bin 0 -> 2195 bytes public/assets/addons/nkeditor/plugins/emoticons/images/74.gif | Bin 0 -> 2454 bytes public/assets/addons/nkeditor/plugins/emoticons/images/75.gif | Bin 0 -> 1222 bytes public/assets/addons/nkeditor/plugins/emoticons/images/76.gif | Bin 0 -> 1211 bytes public/assets/addons/nkeditor/plugins/emoticons/images/77.gif | Bin 0 -> 1151 bytes public/assets/addons/nkeditor/plugins/emoticons/images/78.gif | Bin 0 -> 1565 bytes public/assets/addons/nkeditor/plugins/emoticons/images/79.gif | Bin 0 -> 1518 bytes public/assets/addons/nkeditor/plugins/emoticons/images/8.gif | Bin 0 -> 4679 bytes public/assets/addons/nkeditor/plugins/emoticons/images/80.gif | Bin 0 -> 1537 bytes public/assets/addons/nkeditor/plugins/emoticons/images/81.gif | Bin 0 -> 1591 bytes public/assets/addons/nkeditor/plugins/emoticons/images/82.gif | Bin 0 -> 1547 bytes public/assets/addons/nkeditor/plugins/emoticons/images/83.gif | Bin 0 -> 1591 bytes public/assets/addons/nkeditor/plugins/emoticons/images/84.gif | Bin 0 -> 3424 bytes public/assets/addons/nkeditor/plugins/emoticons/images/85.gif | Bin 0 -> 1581 bytes public/assets/addons/nkeditor/plugins/emoticons/images/86.gif | Bin 0 -> 1519 bytes public/assets/addons/nkeditor/plugins/emoticons/images/87.gif | Bin 0 -> 1558 bytes public/assets/addons/nkeditor/plugins/emoticons/images/88.gif | Bin 0 -> 2134 bytes public/assets/addons/nkeditor/plugins/emoticons/images/89.gif | Bin 0 -> 1219 bytes public/assets/addons/nkeditor/plugins/emoticons/images/9.gif | Bin 0 -> 3298 bytes public/assets/addons/nkeditor/plugins/emoticons/images/90.gif | Bin 0 -> 2743 bytes public/assets/addons/nkeditor/plugins/emoticons/images/91.gif | Bin 0 -> 654 bytes public/assets/addons/nkeditor/plugins/emoticons/images/92.gif | Bin 0 -> 1377 bytes public/assets/addons/nkeditor/plugins/emoticons/images/93.gif | Bin 0 -> 1119 bytes public/assets/addons/nkeditor/plugins/emoticons/images/94.gif | Bin 0 -> 3426 bytes public/assets/addons/nkeditor/plugins/emoticons/images/95.gif | Bin 0 -> 3011 bytes public/assets/addons/nkeditor/plugins/emoticons/images/96.gif | Bin 0 -> 1796 bytes public/assets/addons/nkeditor/plugins/emoticons/images/97.gif | Bin 0 -> 5300 bytes public/assets/addons/nkeditor/plugins/emoticons/images/98.gif | Bin 0 -> 1629 bytes public/assets/addons/nkeditor/plugins/emoticons/images/99.gif | Bin 0 -> 2261 bytes public/assets/addons/nkeditor/plugins/emoticons/images/static.gif | Bin 0 -> 35504 bytes public/assets/addons/nkeditor/plugins/filemanager/FManager.js | 307 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/filemanager/FManager.min.js | 2 ++ public/assets/addons/nkeditor/plugins/filemanager/css/filemanager.min.css | 0 public/assets/addons/nkeditor/plugins/filemanager/filemanager.js | 35 +++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/fixtoolbar/fixtoolbar.js | 35 +++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/flash/flash.js | 165 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/graft/css/images/addimg.png | Bin 0 -> 628 bytes public/assets/addons/nkeditor/plugins/graft/css/images/blur.png | Bin 0 -> 3376 bytes public/assets/addons/nkeditor/plugins/graft/css/images/brush.png | Bin 0 -> 608 bytes public/assets/addons/nkeditor/plugins/graft/css/images/delimg.png | Bin 0 -> 516 bytes public/assets/addons/nkeditor/plugins/graft/css/images/delimgH.png | Bin 0 -> 578 bytes public/assets/addons/nkeditor/plugins/graft/css/images/empty.png | Bin 0 -> 519 bytes public/assets/addons/nkeditor/plugins/graft/css/images/emptyH.png | Bin 0 -> 657 bytes public/assets/addons/nkeditor/plugins/graft/css/images/eraser.png | Bin 0 -> 43271 bytes public/assets/addons/nkeditor/plugins/graft/css/images/init.png | Bin 0 -> 695 bytes public/assets/addons/nkeditor/plugins/graft/css/images/redo.png | Bin 0 -> 454 bytes public/assets/addons/nkeditor/plugins/graft/css/images/redoH.png | Bin 0 -> 536 bytes public/assets/addons/nkeditor/plugins/graft/css/images/save.png | Bin 0 -> 837 bytes public/assets/addons/nkeditor/plugins/graft/css/images/scale.png | Bin 0 -> 435 bytes public/assets/addons/nkeditor/plugins/graft/css/images/scaleH.png | Bin 0 -> 330 bytes public/assets/addons/nkeditor/plugins/graft/css/images/size.png | Bin 0 -> 775 bytes public/assets/addons/nkeditor/plugins/graft/css/images/undo.png | Bin 0 -> 444 bytes public/assets/addons/nkeditor/plugins/graft/css/images/undoH.png | Bin 0 -> 511 bytes public/assets/addons/nkeditor/plugins/graft/css/scrawl.css | 204 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/graft/css/scrawl.css.map | 7 +++++++ public/assets/addons/nkeditor/plugins/graft/css/scrawl.scss | 284 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/graft/graft.js | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/graft/index.html | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/graft/scrawl.js | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/image/image.js | 340 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/image/images/align_left.gif | Bin 0 -> 639 bytes public/assets/addons/nkeditor/plugins/image/images/align_right.gif | Bin 0 -> 636 bytes public/assets/addons/nkeditor/plugins/image/images/align_top.gif | Bin 0 -> 625 bytes public/assets/addons/nkeditor/plugins/image/images/refresh.png | Bin 0 -> 800 bytes public/assets/addons/nkeditor/plugins/insertfile/insertfile.js | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/lineheight/lineheight.js | 38 ++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/link/link.js | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/map/map.html | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/map/map.js | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/media/media.js | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/multiimage/BUpload.js | 625 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/multiimage/BUpload.min.js | 2 ++ public/assets/addons/nkeditor/plugins/multiimage/css/icons/aep.png | Bin 0 -> 11058 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/asp.png | Bin 0 -> 27562 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/avi.png | Bin 0 -> 11778 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/c.png | Bin 0 -> 7341 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/conf.png | Bin 0 -> 12352 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/css.png | Bin 0 -> 26823 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/default.png | Bin 0 -> 27900 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/doc.png | Bin 0 -> 14939 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/eml.png | Bin 0 -> 13584 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/eps.png | Bin 0 -> 10488 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/fla.png | Bin 0 -> 11240 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/htm.png | Bin 0 -> 26753 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/idn.png | Bin 0 -> 10993 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/ini.png | Bin 0 -> 9847 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/java.png | Bin 0 -> 26203 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/js.png | Bin 0 -> 9156 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/jsf.png | Bin 0 -> 10661 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/markdown.png | Bin 0 -> 9053 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/mdb.png | Bin 0 -> 15587 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/midi.png | Bin 0 -> 10479 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/mov.png | Bin 0 -> 11855 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/mp3.png | Bin 0 -> 12130 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/mpeg.png | Bin 0 -> 14349 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/pdf.png | Bin 0 -> 12064 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/php.png | Bin 0 -> 11551 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/ppt.png | Bin 0 -> 14255 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/psd.png | Bin 0 -> 11360 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/pst.png | Bin 0 -> 14430 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/pub.png | Bin 0 -> 15185 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/py.png | Bin 0 -> 24844 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/rb.png | Bin 0 -> 25872 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/rmvb.png | Bin 0 -> 14349 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/scss.png | Bin 0 -> 10890 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/sql.png | Bin 0 -> 26862 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/tif.png | Bin 0 -> 11254 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/txt.png | Bin 0 -> 9035 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/vsd.png | Bin 0 -> 14362 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/wav.png | Bin 0 -> 18838 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/wma.png | Bin 0 -> 12844 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/wmv.png | Bin 0 -> 12468 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/xls.png | Bin 0 -> 15671 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/xml.png | Bin 0 -> 26594 bytes public/assets/addons/nkeditor/plugins/multiimage/css/icons/zip.png | Bin 0 -> 10319 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/dialog-title-bg.png | Bin 0 -> 938 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/icons-all.gif | Bin 0 -> 3750 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/icons.png | Bin 0 -> 2678 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/image.png | Bin 0 -> 1672 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/loader.gif | Bin 0 -> 1787 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/progress.png | Bin 0 -> 1269 bytes public/assets/addons/nkeditor/plugins/multiimage/css/images/success.png | Bin 0 -> 1621 bytes public/assets/addons/nkeditor/plugins/multiimage/css/upload.css | 552 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/multiimage/css/upload.css.map | 7 +++++++ public/assets/addons/nkeditor/plugins/multiimage/css/upload.min.css | 1 + public/assets/addons/nkeditor/plugins/multiimage/css/upload.scss | 642 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/multiimage/multiimage.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/multiimage/template/template.html | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/pagebreak/pagebreak.js | 27 +++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/plainpaste/plainpaste.js | 41 +++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/preview/preview.js | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/quickformat/quickformat.js | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/quote/quote.js | 12 ++++++++++++ public/assets/addons/nkeditor/plugins/table/table.js | 746 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/template/html/1.html | 14 ++++++++++++++ public/assets/addons/nkeditor/plugins/template/html/2.html | 42 ++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/template/html/3.html | 36 ++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/template/template.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/plugins/wordpaste/wordpaste.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/app.css | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/black/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/black/editor.css.map | 7 +++++++ public/assets/addons/nkeditor/themes/black/editor.min.css | 1 + public/assets/addons/nkeditor/themes/black/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/black/images/nkeditor.png | Bin 0 -> 14650 bytes public/assets/addons/nkeditor/themes/black/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/blue/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/blue/editor.css.map | 7 +++++++ public/assets/addons/nkeditor/themes/blue/editor.min.css | 1 + public/assets/addons/nkeditor/themes/blue/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/blue/images/nkeditor.png | Bin 0 -> 15428 bytes public/assets/addons/nkeditor/themes/blue/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/common/anchor.gif | Bin 0 -> 371 bytes public/assets/addons/nkeditor/themes/common/blank.gif | Bin 0 -> 43 bytes public/assets/addons/nkeditor/themes/common/common.css | 605 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/common/common.css.map | 7 +++++++ public/assets/addons/nkeditor/themes/common/common.scss | 830 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/common/dialog-title-bg.png | Bin 0 -> 938 bytes public/assets/addons/nkeditor/themes/common/flash.gif | Bin 0 -> 1089 bytes public/assets/addons/nkeditor/themes/common/flash.png | Bin 0 -> 1133 bytes public/assets/addons/nkeditor/themes/common/flash.svg | 1 + public/assets/addons/nkeditor/themes/common/icons-all.gif | Bin 0 -> 3750 bytes public/assets/addons/nkeditor/themes/common/loading.gif | Bin 0 -> 2608 bytes public/assets/addons/nkeditor/themes/common/media.gif | Bin 0 -> 1036 bytes public/assets/addons/nkeditor/themes/common/play.png | Bin 0 -> 1130 bytes public/assets/addons/nkeditor/themes/common/play.svg | 1 + public/assets/addons/nkeditor/themes/common/rm.gif | Bin 0 -> 989 bytes public/assets/addons/nkeditor/themes/default/editor.css | 1398 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/default/editor.min.css | 1 + public/assets/addons/nkeditor/themes/default/images/background.png | Bin 0 -> 1410 bytes public/assets/addons/nkeditor/themes/default/images/default.png | Bin 0 -> 8299 bytes public/assets/addons/nkeditor/themes/default/images/scrawl.png | Bin 0 -> 919 bytes public/assets/addons/nkeditor/themes/grey/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/grey/editor.css.map | 7 +++++++ public/assets/addons/nkeditor/themes/grey/editor.min.css | 1 + public/assets/addons/nkeditor/themes/grey/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/grey/images/nkeditor.png | Bin 0 -> 14637 bytes public/assets/addons/nkeditor/themes/grey/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/primary/editor.css | 822 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/primary/editor.css.map | 7 +++++++ public/assets/addons/nkeditor/themes/primary/editor.min.css | 1 + public/assets/addons/nkeditor/themes/primary/editor.scss | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/addons/nkeditor/themes/primary/images/nkeditor.png | Bin 0 -> 15396 bytes public/assets/addons/nkeditor/themes/primary/images/nkeditor.svg | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/js/addons.js | 308 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- public/assets/js/backend/banner.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ public/assets/js/backend/command.js | 234 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public/uploads/20191127/79e122b17786dbf0365a1018e27872d7.png | Bin 0 -> 61603 bytes vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php | 2 +- 683 files changed, 58634 insertions(+), 53 deletions(-) create mode 100644 addons/command/Command.php create mode 100644 addons/command/application/admin/controller/Command.php create mode 100644 addons/command/application/admin/lang/zh-cn/command.php create mode 100644 addons/command/application/admin/model/Command.php create mode 100644 addons/command/application/admin/validate/Command.php create mode 100644 addons/command/application/admin/view/command/add.html create mode 100644 addons/command/application/admin/view/command/detail.html create mode 100644 addons/command/application/admin/view/command/index.html create mode 100644 addons/command/config.php create mode 100644 addons/command/controller/Index.php create mode 100644 addons/command/info.ini create mode 100644 addons/command/install.sql create mode 100644 addons/command/library/Output.php create mode 100644 addons/command/public/assets/js/backend/command.js create mode 100644 addons/nkeditor/Nkeditor.php create mode 100644 addons/nkeditor/README.md create mode 100644 addons/nkeditor/assets/css/common.css create mode 100644 addons/nkeditor/assets/img/download.png create mode 100644 addons/nkeditor/assets/img/downloading.png create mode 100644 addons/nkeditor/assets/js/customplugin.js create mode 100644 addons/nkeditor/assets/lang/ar.js create mode 100644 addons/nkeditor/assets/lang/en.js create mode 100644 addons/nkeditor/assets/lang/ja-JP.js create mode 100644 addons/nkeditor/assets/lang/ko.js create mode 100644 addons/nkeditor/assets/lang/ru.js create mode 100644 addons/nkeditor/assets/lang/zh-CN.js create mode 100644 addons/nkeditor/assets/lang/zh-TW.js create mode 100644 addons/nkeditor/assets/nkeditor.js create mode 100644 addons/nkeditor/assets/nkeditor.min.js create mode 100644 addons/nkeditor/assets/plugins/anchor/anchor.js create mode 100644 addons/nkeditor/assets/plugins/autoheight/autoheight.js create mode 100644 addons/nkeditor/assets/plugins/baidumap/baidumap.js create mode 100644 addons/nkeditor/assets/plugins/baidumap/index.html create mode 100644 addons/nkeditor/assets/plugins/baidumap/map.html create mode 100644 addons/nkeditor/assets/plugins/clearhtml/clearhtml.js create mode 100644 addons/nkeditor/assets/plugins/code/code.js create mode 100644 addons/nkeditor/assets/plugins/code/pretty.js create mode 100644 addons/nkeditor/assets/plugins/code/prism.css create mode 100644 addons/nkeditor/assets/plugins/code/prism.js create mode 100644 addons/nkeditor/assets/plugins/emoticons/emoticons.js create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/0.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/1.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/10.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/100.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/101.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/102.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/103.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/104.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/105.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/106.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/107.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/108.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/109.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/11.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/110.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/111.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/112.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/113.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/114.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/115.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/116.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/117.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/118.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/119.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/12.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/120.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/121.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/122.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/123.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/124.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/125.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/126.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/127.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/128.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/129.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/13.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/130.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/131.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/132.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/133.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/134.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/14.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/15.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/16.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/17.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/18.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/19.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/2.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/20.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/21.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/22.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/23.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/24.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/25.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/26.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/27.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/28.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/29.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/3.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/30.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/31.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/32.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/33.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/34.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/35.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/36.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/37.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/38.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/39.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/4.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/40.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/41.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/42.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/43.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/44.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/45.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/46.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/47.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/48.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/49.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/5.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/50.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/51.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/52.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/53.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/54.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/55.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/56.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/57.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/58.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/59.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/6.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/60.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/61.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/62.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/63.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/64.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/65.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/66.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/67.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/68.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/69.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/7.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/70.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/71.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/72.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/73.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/74.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/75.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/76.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/77.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/78.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/79.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/8.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/80.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/81.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/82.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/83.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/84.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/85.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/86.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/87.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/88.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/89.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/9.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/90.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/91.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/92.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/93.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/94.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/95.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/96.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/97.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/98.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/99.gif create mode 100644 addons/nkeditor/assets/plugins/emoticons/images/static.gif create mode 100644 addons/nkeditor/assets/plugins/filemanager/FManager.js create mode 100644 addons/nkeditor/assets/plugins/filemanager/FManager.min.js create mode 100644 addons/nkeditor/assets/plugins/filemanager/css/filemanager.min.css create mode 100644 addons/nkeditor/assets/plugins/filemanager/filemanager.js create mode 100644 addons/nkeditor/assets/plugins/fixtoolbar/fixtoolbar.js create mode 100644 addons/nkeditor/assets/plugins/flash/flash.js create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/addimg.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/blur.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/brush.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/delimg.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/delimgH.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/empty.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/emptyH.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/eraser.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/init.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/redo.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/redoH.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/save.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/scale.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/scaleH.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/size.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/undo.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/images/undoH.png create mode 100644 addons/nkeditor/assets/plugins/graft/css/scrawl.css create mode 100644 addons/nkeditor/assets/plugins/graft/css/scrawl.css.map create mode 100644 addons/nkeditor/assets/plugins/graft/css/scrawl.scss create mode 100644 addons/nkeditor/assets/plugins/graft/graft.js create mode 100644 addons/nkeditor/assets/plugins/graft/index.html create mode 100644 addons/nkeditor/assets/plugins/graft/scrawl.js create mode 100644 addons/nkeditor/assets/plugins/image/image.js create mode 100644 addons/nkeditor/assets/plugins/image/images/align_left.gif create mode 100644 addons/nkeditor/assets/plugins/image/images/align_right.gif create mode 100644 addons/nkeditor/assets/plugins/image/images/align_top.gif create mode 100644 addons/nkeditor/assets/plugins/image/images/refresh.png create mode 100644 addons/nkeditor/assets/plugins/insertfile/insertfile.js create mode 100644 addons/nkeditor/assets/plugins/lineheight/lineheight.js create mode 100644 addons/nkeditor/assets/plugins/link/link.js create mode 100644 addons/nkeditor/assets/plugins/map/map.html create mode 100644 addons/nkeditor/assets/plugins/map/map.js create mode 100644 addons/nkeditor/assets/plugins/media/media.js create mode 100644 addons/nkeditor/assets/plugins/multiimage/BUpload.js create mode 100644 addons/nkeditor/assets/plugins/multiimage/BUpload.min.js create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/aep.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/asp.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/avi.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/c.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/conf.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/css.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/default.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/doc.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/eml.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/eps.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/fla.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/htm.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/idn.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/ini.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/java.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/js.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/jsf.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/markdown.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/mdb.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/midi.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/mov.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/mp3.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/mpeg.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/pdf.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/php.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/ppt.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/psd.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/pst.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/pub.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/py.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/rb.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/rmvb.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/scss.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/sql.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/tif.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/txt.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/vsd.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/wav.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/wma.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/wmv.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/xls.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/xml.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/icons/zip.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/dialog-title-bg.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/icons-all.gif create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/icons.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/image.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/loader.gif create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/progress.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/images/success.png create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/upload.css create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/upload.css.map create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/upload.min.css create mode 100644 addons/nkeditor/assets/plugins/multiimage/css/upload.scss create mode 100644 addons/nkeditor/assets/plugins/multiimage/multiimage.js create mode 100644 addons/nkeditor/assets/plugins/multiimage/template/template.html create mode 100644 addons/nkeditor/assets/plugins/pagebreak/pagebreak.js create mode 100644 addons/nkeditor/assets/plugins/plainpaste/plainpaste.js create mode 100644 addons/nkeditor/assets/plugins/preview/preview.js create mode 100644 addons/nkeditor/assets/plugins/quickformat/quickformat.js create mode 100644 addons/nkeditor/assets/plugins/quote/quote.js create mode 100644 addons/nkeditor/assets/plugins/table/table.js create mode 100644 addons/nkeditor/assets/plugins/template/html/1.html create mode 100644 addons/nkeditor/assets/plugins/template/html/2.html create mode 100644 addons/nkeditor/assets/plugins/template/html/3.html create mode 100644 addons/nkeditor/assets/plugins/template/template.js create mode 100644 addons/nkeditor/assets/plugins/wordpaste/wordpaste.js create mode 100644 addons/nkeditor/assets/themes/app.css create mode 100644 addons/nkeditor/assets/themes/black/editor.css create mode 100644 addons/nkeditor/assets/themes/black/editor.css.map create mode 100644 addons/nkeditor/assets/themes/black/editor.min.css create mode 100644 addons/nkeditor/assets/themes/black/editor.scss create mode 100644 addons/nkeditor/assets/themes/black/images/nkeditor.png create mode 100644 addons/nkeditor/assets/themes/black/images/nkeditor.svg create mode 100644 addons/nkeditor/assets/themes/blue/editor.css create mode 100644 addons/nkeditor/assets/themes/blue/editor.css.map create mode 100644 addons/nkeditor/assets/themes/blue/editor.min.css create mode 100644 addons/nkeditor/assets/themes/blue/editor.scss create mode 100644 addons/nkeditor/assets/themes/blue/images/nkeditor.png create mode 100644 addons/nkeditor/assets/themes/blue/images/nkeditor.svg create mode 100644 addons/nkeditor/assets/themes/common/anchor.gif create mode 100644 addons/nkeditor/assets/themes/common/blank.gif create mode 100644 addons/nkeditor/assets/themes/common/common.css create mode 100644 addons/nkeditor/assets/themes/common/common.css.map create mode 100644 addons/nkeditor/assets/themes/common/common.scss create mode 100644 addons/nkeditor/assets/themes/common/dialog-title-bg.png create mode 100644 addons/nkeditor/assets/themes/common/flash.gif create mode 100644 addons/nkeditor/assets/themes/common/flash.png create mode 100644 addons/nkeditor/assets/themes/common/flash.svg create mode 100644 addons/nkeditor/assets/themes/common/icons-all.gif create mode 100644 addons/nkeditor/assets/themes/common/loading.gif create mode 100644 addons/nkeditor/assets/themes/common/media.gif create mode 100644 addons/nkeditor/assets/themes/common/play.png create mode 100644 addons/nkeditor/assets/themes/common/play.svg create mode 100644 addons/nkeditor/assets/themes/common/rm.gif create mode 100644 addons/nkeditor/assets/themes/default/editor.css create mode 100644 addons/nkeditor/assets/themes/default/editor.min.css create mode 100644 addons/nkeditor/assets/themes/default/images/background.png create mode 100644 addons/nkeditor/assets/themes/default/images/default.png create mode 100644 addons/nkeditor/assets/themes/default/images/scrawl.png create mode 100644 addons/nkeditor/assets/themes/grey/editor.css create mode 100644 addons/nkeditor/assets/themes/grey/editor.css.map create mode 100644 addons/nkeditor/assets/themes/grey/editor.min.css create mode 100644 addons/nkeditor/assets/themes/grey/editor.scss create mode 100644 addons/nkeditor/assets/themes/grey/images/nkeditor.png create mode 100644 addons/nkeditor/assets/themes/grey/images/nkeditor.svg create mode 100644 addons/nkeditor/assets/themes/primary/editor.css create mode 100644 addons/nkeditor/assets/themes/primary/editor.css.map create mode 100644 addons/nkeditor/assets/themes/primary/editor.min.css create mode 100644 addons/nkeditor/assets/themes/primary/editor.scss create mode 100644 addons/nkeditor/assets/themes/primary/images/nkeditor.png create mode 100644 addons/nkeditor/assets/themes/primary/images/nkeditor.svg create mode 100644 addons/nkeditor/bootstrap.js create mode 100644 addons/nkeditor/config.php create mode 100644 addons/nkeditor/controller/Index.php create mode 100644 addons/nkeditor/info.ini create mode 100644 addons/nkeditor/license.txt create mode 100644 addons/nkeditor/nodejs/word.js create mode 100644 addons/qiniu/Qiniu.php create mode 100644 addons/qiniu/bootstrap.js create mode 100644 addons/qiniu/config.php create mode 100644 addons/qiniu/controller/Index.php create mode 100644 addons/qiniu/info.ini create mode 100644 addons/qiniu/library/Auth.php create mode 100644 application/admin/command/Install/install.lock create mode 100644 application/admin/controller/Banner.php create mode 100644 application/admin/controller/Command.php create mode 100644 application/admin/lang/zh-cn/banner.php create mode 100644 application/admin/lang/zh-cn/command.php create mode 100644 application/admin/model/Banner.php create mode 100644 application/admin/model/Command.php create mode 100644 application/admin/validate/Banner.php create mode 100644 application/admin/validate/Command.php create mode 100644 application/admin/view/banner/add.html create mode 100644 application/admin/view/banner/edit.html create mode 100644 application/admin/view/banner/index.html create mode 100644 application/admin/view/command/add.html create mode 100644 application/admin/view/command/detail.html create mode 100644 application/admin/view/command/index.html create mode 100644 public/XzuemHTJfG.php delete mode 100644 public/admin.php create mode 100644 public/assets/addons/nkeditor/css/common.css create mode 100644 public/assets/addons/nkeditor/img/download.png create mode 100644 public/assets/addons/nkeditor/img/downloading.png create mode 100644 public/assets/addons/nkeditor/js/customplugin.js create mode 100644 public/assets/addons/nkeditor/lang/ar.js create mode 100644 public/assets/addons/nkeditor/lang/en.js create mode 100644 public/assets/addons/nkeditor/lang/ja-JP.js create mode 100644 public/assets/addons/nkeditor/lang/ko.js create mode 100644 public/assets/addons/nkeditor/lang/ru.js create mode 100644 public/assets/addons/nkeditor/lang/zh-CN.js create mode 100644 public/assets/addons/nkeditor/lang/zh-TW.js create mode 100644 public/assets/addons/nkeditor/nkeditor.js create mode 100644 public/assets/addons/nkeditor/nkeditor.min.js create mode 100644 public/assets/addons/nkeditor/plugins/anchor/anchor.js create mode 100644 public/assets/addons/nkeditor/plugins/autoheight/autoheight.js create mode 100644 public/assets/addons/nkeditor/plugins/baidumap/baidumap.js create mode 100644 public/assets/addons/nkeditor/plugins/baidumap/index.html create mode 100644 public/assets/addons/nkeditor/plugins/baidumap/map.html create mode 100644 public/assets/addons/nkeditor/plugins/clearhtml/clearhtml.js create mode 100644 public/assets/addons/nkeditor/plugins/code/code.js create mode 100644 public/assets/addons/nkeditor/plugins/code/pretty.js create mode 100644 public/assets/addons/nkeditor/plugins/code/prism.css create mode 100644 public/assets/addons/nkeditor/plugins/code/prism.js create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/emoticons.js create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/0.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/1.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/10.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/100.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/101.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/102.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/103.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/104.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/105.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/106.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/107.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/108.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/109.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/11.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/110.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/111.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/112.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/113.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/114.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/115.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/116.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/117.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/118.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/119.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/12.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/120.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/121.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/122.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/123.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/124.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/125.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/126.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/127.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/128.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/129.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/13.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/130.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/131.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/132.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/133.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/134.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/14.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/15.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/16.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/17.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/18.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/19.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/2.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/20.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/21.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/22.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/23.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/24.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/25.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/26.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/27.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/28.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/29.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/3.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/30.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/31.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/32.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/33.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/34.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/35.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/36.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/37.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/38.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/39.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/4.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/40.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/41.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/42.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/43.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/44.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/45.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/46.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/47.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/48.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/49.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/5.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/50.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/51.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/52.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/53.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/54.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/55.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/56.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/57.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/58.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/59.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/6.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/60.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/61.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/62.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/63.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/64.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/65.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/66.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/67.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/68.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/69.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/7.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/70.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/71.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/72.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/73.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/74.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/75.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/76.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/77.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/78.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/79.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/8.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/80.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/81.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/82.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/83.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/84.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/85.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/86.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/87.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/88.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/89.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/9.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/90.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/91.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/92.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/93.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/94.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/95.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/96.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/97.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/98.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/99.gif create mode 100644 public/assets/addons/nkeditor/plugins/emoticons/images/static.gif create mode 100644 public/assets/addons/nkeditor/plugins/filemanager/FManager.js create mode 100644 public/assets/addons/nkeditor/plugins/filemanager/FManager.min.js create mode 100644 public/assets/addons/nkeditor/plugins/filemanager/css/filemanager.min.css create mode 100644 public/assets/addons/nkeditor/plugins/filemanager/filemanager.js create mode 100644 public/assets/addons/nkeditor/plugins/fixtoolbar/fixtoolbar.js create mode 100644 public/assets/addons/nkeditor/plugins/flash/flash.js create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/addimg.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/blur.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/brush.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/delimg.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/delimgH.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/empty.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/emptyH.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/eraser.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/init.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/redo.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/redoH.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/save.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/scale.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/scaleH.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/size.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/undo.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/images/undoH.png create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/scrawl.css create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/scrawl.css.map create mode 100644 public/assets/addons/nkeditor/plugins/graft/css/scrawl.scss create mode 100644 public/assets/addons/nkeditor/plugins/graft/graft.js create mode 100644 public/assets/addons/nkeditor/plugins/graft/index.html create mode 100644 public/assets/addons/nkeditor/plugins/graft/scrawl.js create mode 100644 public/assets/addons/nkeditor/plugins/image/image.js create mode 100644 public/assets/addons/nkeditor/plugins/image/images/align_left.gif create mode 100644 public/assets/addons/nkeditor/plugins/image/images/align_right.gif create mode 100644 public/assets/addons/nkeditor/plugins/image/images/align_top.gif create mode 100644 public/assets/addons/nkeditor/plugins/image/images/refresh.png create mode 100644 public/assets/addons/nkeditor/plugins/insertfile/insertfile.js create mode 100644 public/assets/addons/nkeditor/plugins/lineheight/lineheight.js create mode 100644 public/assets/addons/nkeditor/plugins/link/link.js create mode 100644 public/assets/addons/nkeditor/plugins/map/map.html create mode 100644 public/assets/addons/nkeditor/plugins/map/map.js create mode 100644 public/assets/addons/nkeditor/plugins/media/media.js create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/BUpload.js create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/BUpload.min.js create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/aep.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/asp.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/avi.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/c.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/conf.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/css.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/default.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/doc.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/eml.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/eps.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/fla.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/htm.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/idn.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/ini.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/java.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/js.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/jsf.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/markdown.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/mdb.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/midi.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/mov.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/mp3.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/mpeg.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/pdf.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/php.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/ppt.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/psd.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/pst.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/pub.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/py.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/rb.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/rmvb.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/scss.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/sql.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/tif.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/txt.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/vsd.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/wav.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/wma.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/wmv.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/xls.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/xml.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/icons/zip.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/dialog-title-bg.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/icons-all.gif create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/icons.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/image.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/loader.gif create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/progress.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/images/success.png create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/upload.css create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/upload.css.map create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/upload.min.css create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/css/upload.scss create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/multiimage.js create mode 100644 public/assets/addons/nkeditor/plugins/multiimage/template/template.html create mode 100644 public/assets/addons/nkeditor/plugins/pagebreak/pagebreak.js create mode 100644 public/assets/addons/nkeditor/plugins/plainpaste/plainpaste.js create mode 100644 public/assets/addons/nkeditor/plugins/preview/preview.js create mode 100644 public/assets/addons/nkeditor/plugins/quickformat/quickformat.js create mode 100644 public/assets/addons/nkeditor/plugins/quote/quote.js create mode 100644 public/assets/addons/nkeditor/plugins/table/table.js create mode 100644 public/assets/addons/nkeditor/plugins/template/html/1.html create mode 100644 public/assets/addons/nkeditor/plugins/template/html/2.html create mode 100644 public/assets/addons/nkeditor/plugins/template/html/3.html create mode 100644 public/assets/addons/nkeditor/plugins/template/template.js create mode 100644 public/assets/addons/nkeditor/plugins/wordpaste/wordpaste.js create mode 100644 public/assets/addons/nkeditor/themes/app.css create mode 100644 public/assets/addons/nkeditor/themes/black/editor.css create mode 100644 public/assets/addons/nkeditor/themes/black/editor.css.map create mode 100644 public/assets/addons/nkeditor/themes/black/editor.min.css create mode 100644 public/assets/addons/nkeditor/themes/black/editor.scss create mode 100644 public/assets/addons/nkeditor/themes/black/images/nkeditor.png create mode 100644 public/assets/addons/nkeditor/themes/black/images/nkeditor.svg create mode 100644 public/assets/addons/nkeditor/themes/blue/editor.css create mode 100644 public/assets/addons/nkeditor/themes/blue/editor.css.map create mode 100644 public/assets/addons/nkeditor/themes/blue/editor.min.css create mode 100644 public/assets/addons/nkeditor/themes/blue/editor.scss create mode 100644 public/assets/addons/nkeditor/themes/blue/images/nkeditor.png create mode 100644 public/assets/addons/nkeditor/themes/blue/images/nkeditor.svg create mode 100644 public/assets/addons/nkeditor/themes/common/anchor.gif create mode 100644 public/assets/addons/nkeditor/themes/common/blank.gif create mode 100644 public/assets/addons/nkeditor/themes/common/common.css create mode 100644 public/assets/addons/nkeditor/themes/common/common.css.map create mode 100644 public/assets/addons/nkeditor/themes/common/common.scss create mode 100644 public/assets/addons/nkeditor/themes/common/dialog-title-bg.png create mode 100644 public/assets/addons/nkeditor/themes/common/flash.gif create mode 100644 public/assets/addons/nkeditor/themes/common/flash.png create mode 100644 public/assets/addons/nkeditor/themes/common/flash.svg create mode 100644 public/assets/addons/nkeditor/themes/common/icons-all.gif create mode 100644 public/assets/addons/nkeditor/themes/common/loading.gif create mode 100644 public/assets/addons/nkeditor/themes/common/media.gif create mode 100644 public/assets/addons/nkeditor/themes/common/play.png create mode 100644 public/assets/addons/nkeditor/themes/common/play.svg create mode 100644 public/assets/addons/nkeditor/themes/common/rm.gif create mode 100644 public/assets/addons/nkeditor/themes/default/editor.css create mode 100644 public/assets/addons/nkeditor/themes/default/editor.min.css create mode 100644 public/assets/addons/nkeditor/themes/default/images/background.png create mode 100644 public/assets/addons/nkeditor/themes/default/images/default.png create mode 100644 public/assets/addons/nkeditor/themes/default/images/scrawl.png create mode 100644 public/assets/addons/nkeditor/themes/grey/editor.css create mode 100644 public/assets/addons/nkeditor/themes/grey/editor.css.map create mode 100644 public/assets/addons/nkeditor/themes/grey/editor.min.css create mode 100644 public/assets/addons/nkeditor/themes/grey/editor.scss create mode 100644 public/assets/addons/nkeditor/themes/grey/images/nkeditor.png create mode 100644 public/assets/addons/nkeditor/themes/grey/images/nkeditor.svg create mode 100644 public/assets/addons/nkeditor/themes/primary/editor.css create mode 100644 public/assets/addons/nkeditor/themes/primary/editor.css.map create mode 100644 public/assets/addons/nkeditor/themes/primary/editor.min.css create mode 100644 public/assets/addons/nkeditor/themes/primary/editor.scss create mode 100644 public/assets/addons/nkeditor/themes/primary/images/nkeditor.png create mode 100644 public/assets/addons/nkeditor/themes/primary/images/nkeditor.svg create mode 100644 public/assets/js/backend/banner.js create mode 100644 public/assets/js/backend/command.js create mode 100644 public/uploads/20191127/79e122b17786dbf0365a1018e27872d7.png diff --git a/addons/command/Command.php b/addons/command/Command.php new file mode 100644 index 0000000..71126b4 --- /dev/null +++ b/addons/command/Command.php @@ -0,0 +1,69 @@ +<?php + +namespace addons\command; + +use app\common\library\Menu; +use think\Addons; + +/** + * 在线命令插件 + */ +class Command extends Addons +{ + + /** + * 插件安装方法 + * @return bool + */ + public function install() + { + $menu = [ + [ + 'name' => 'command', + 'title' => '在线命令管理', + 'icon' => 'fa fa-terminal', + 'sublist' => [ + ['name' => 'command/index', 'title' => '查看'], + ['name' => 'command/add', 'title' => '添加'], + ['name' => 'command/detail', 'title' => '详情'], + ['name' => 'command/execute', 'title' => '运行'], + ['name' => 'command/del', 'title' => '删除'], + ['name' => 'command/multi', 'title' => '批量更新'], + ] + ] + ]; + Menu::create($menu); + return true; + } + + /** + * 插件卸载方法 + * @return bool + */ + public function uninstall() + { + Menu::delete('command'); + return true; + } + + /** + * 插件启用方法 + * @return bool + */ + public function enable() + { + Menu::enable('command'); + return true; + } + + /** + * 插件禁用方法 + * @return bool + */ + public function disable() + { + Menu::disable('command'); + return true; + } + +} diff --git a/addons/command/application/admin/controller/Command.php b/addons/command/application/admin/controller/Command.php new file mode 100644 index 0000000..64669b6 --- /dev/null +++ b/addons/command/application/admin/controller/Command.php @@ -0,0 +1,219 @@ +<?php + +namespace app\admin\controller; + +use app\common\controller\Backend; +use think\Config; +use think\console\Input; +use think\Db; +use think\Exception; + +/** + * 在线命令管理 + * + * @icon fa fa-circle-o + */ +class Command extends Backend +{ + + /** + * Command模型对象 + */ + protected $model = null; + protected $noNeedRight = ['get_controller_list', 'get_field_list']; + + public function _initialize() + { + parent::_initialize(); + $this->model = model('Command'); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 添加 + */ + public function add() + { + + $tableList = []; + $list = \think\Db::query("SHOW TABLES"); + foreach ($list as $key => $row) { + $tableList[reset($row)] = reset($row); + } + + $this->view->assign("tableList", $tableList); + return $this->view->fetch(); + } + + /** + * 获取字段列表 + * @internal + */ + public function get_field_list() + { + $dbname = Config::get('database.database'); + $prefix = Config::get('database.prefix'); + $table = $this->request->request('table'); + //从数据库中获取表字段信息 + $sql = "SELECT * FROM `information_schema`.`columns` " + . "WHERE TABLE_SCHEMA = ? AND table_name = ? " + . "ORDER BY ORDINAL_POSITION"; + //加载主表的列 + $columnList = Db::query($sql, [$dbname, $table]); + $fieldlist = []; + foreach ($columnList as $index => $item) { + $fieldlist[] = $item['COLUMN_NAME']; + } + $this->success("", null, ['fieldlist' => $fieldlist]); + } + + /** + * 获取控制器列表 + * @internal + */ + public function get_controller_list() + { + $adminPath = dirname(__DIR__) . DS; + $controllerDir = $adminPath . 'controller' . DS; + $files = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($controllerDir), \RecursiveIteratorIterator::LEAVES_ONLY + ); + $list = []; + foreach ($files as $name => $file) { + if (!$file->isDir()) { + $filePath = $file->getRealPath(); + $name = str_replace($controllerDir, '', $filePath); + $name = str_replace(DS, "/", $name); + $list[] = ['id' => $name, 'name' => $name]; + } + } + $pageNumber = $this->request->request("pageNumber"); + $pageSize = $this->request->request("pageSize"); + return json(['list' => array_slice($list, ($pageNumber - 1) * $pageSize, $pageSize), 'total' => count($list)]); + } + + /** + * 详情 + */ + public function detail($ids) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $this->view->assign("row", $row); + return $this->view->fetch(); + } + + /** + * 执行 + */ + public function execute($ids) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $result = $this->doexecute($row['type'], json_decode($row['params'], true)); + $this->success("", null, ['result' => $result]); + } + + /** + * 执行命令 + */ + public function command($action = '') + { + $commandtype = $this->request->request("commandtype"); + $params = $this->request->request(); + $allowfields = [ + 'crud' => 'table,controller,model,fields,force,local,delete,menu', + 'menu' => 'controller,delete', + 'min' => 'module,resource,optimize', + 'api' => 'url,module,output,template,force,title,author,class,language', + ]; + $argv = []; + $allowfields = isset($allowfields[$commandtype]) ? explode(',', $allowfields[$commandtype]) : []; + $allowfields = array_filter(array_intersect_key($params, array_flip($allowfields))); + if (isset($params['local']) && !$params['local']) { + $allowfields['local'] = $params['local']; + } else { + unset($allowfields['local']); + } + foreach ($allowfields as $key => $param) { + $argv[] = "--{$key}=" . (is_array($param) ? implode(',', $param) : $param); + } + if ($commandtype == 'crud') { + $extend = 'setcheckboxsuffix,enumradiosuffix,imagefield,filefield,intdatesuffix,switchsuffix,citysuffix,selectpagesuffix,selectpagessuffix,ignorefields,sortfield,editorsuffix,headingfilterfield'; + $extendArr = explode(',', $extend); + foreach ($params as $index => $item) { + if (in_array($index, $extendArr)) { + foreach (explode(',', $item) as $key => $value) { + if ($value) { + $argv[] = "--{$index}={$value}"; + } + } + } + } + $isrelation = (int)$this->request->request('isrelation'); + if ($isrelation && isset($params['relation'])) { + foreach ($params['relation'] as $index => $relation) { + foreach ($relation as $key => $value) { + $argv[] = "--{$key}=" . (is_array($value) ? implode(',', $value) : $value); + } + } + } + } else if ($commandtype == 'menu') { + if (isset($params['allcontroller']) && $params['allcontroller']) { + $argv[] = "--controller=all-controller"; + } else { + foreach (explode(',', $params['controllerfile']) as $index => $param) { + if ($param) { + $argv[] = "--controller=" . substr($param, 0, -4); + } + } + } + } else if ($commandtype == 'min') { + + } else if ($commandtype == 'api') { + + } else { + + } + if ($action == 'execute') { + $result = $this->doexecute($commandtype, $argv); + $this->success("", null, ['result' => $result]); + } else { + $this->success("", null, ['command' => "php think {$commandtype} " . implode(' ', $argv)]); + } + + return; + } + + protected function doexecute($commandtype, $argv) + { + $commandName = "\\app\\admin\\command\\" . ucfirst($commandtype); + $input = new Input($argv); + $output = new \addons\command\library\Output(); + $command = new $commandName($commandtype); + $data = [ + 'type' => $commandtype, + 'params' => json_encode($argv), + 'command' => "php think {$commandtype} " . implode(' ', $argv), + 'executetime' => time(), + ]; + $this->model->save($data); + try { + $command->run($input, $output); + $result = implode("\n", $output->getMessage()); + $this->model->status = 'successed'; + } catch (Exception $e) { + $result = implode("\n", $output->getMessage()) . "\n"; + $result .= $e->getMessage(); + $this->model->status = 'failured'; + } + $result = trim($result); + $this->model->content = $result; + $this->model->save(); + return $result; + } + + +} diff --git a/addons/command/application/admin/lang/zh-cn/command.php b/addons/command/application/admin/lang/zh-cn/command.php new file mode 100644 index 0000000..b010250 --- /dev/null +++ b/addons/command/application/admin/lang/zh-cn/command.php @@ -0,0 +1,16 @@ +<?php + +return [ + 'Id' => 'ID', + 'Type' => '类型', + 'Params' => '参数', + 'Command' => '命令', + 'Content' => '返回结果', + 'Executetime' => '执行时间', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Execute again' => '再次执行', + 'Successed' => '成功', + 'Failured' => '失败', + 'Status' => '状态' +]; diff --git a/addons/command/application/admin/model/Command.php b/addons/command/application/admin/model/Command.php new file mode 100644 index 0000000..131e0bd --- /dev/null +++ b/addons/command/application/admin/model/Command.php @@ -0,0 +1,59 @@ +<?php + +namespace app\admin\model; + +use think\Model; + +class Command extends Model +{ + // 表名 + protected $name = 'command'; + + // 自动写入时间戳字段 + protected $autoWriteTimestamp = 'int'; + + // 定义时间戳字段名 + protected $createTime = 'createtime'; + protected $updateTime = 'updatetime'; + + // 追加属性 + protected $append = [ + 'executetime_text', + 'type_text', + 'status_text' + ]; + + + public function getStatusList() + { + return ['successed' => __('Successed'), 'failured' => __('Failured')]; + } + + + public function getExecutetimeTextAttr($value, $data) + { + $value = $value ? $value : $data['executetime']; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = ['crud' => '一键生成CRUD', 'menu' => '一键生成菜单', 'min' => '一键压缩打包', 'api' => '一键生成文档']; + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + protected function setExecutetimeAttr($value) + { + return $value && !is_numeric($value) ? strtotime($value) : $value; + } + + +} diff --git a/addons/command/application/admin/validate/Command.php b/addons/command/application/admin/validate/Command.php new file mode 100644 index 0000000..9da8fa6 --- /dev/null +++ b/addons/command/application/admin/validate/Command.php @@ -0,0 +1,27 @@ +<?php + +namespace app\admin\validate; + +use think\Validate; + +class Command extends Validate +{ + /** + * 验证规则 + */ + protected $rule = [ + ]; + /** + * 提示消息 + */ + protected $message = [ + ]; + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [], + 'edit' => [], + ]; + +} diff --git a/addons/command/application/admin/view/command/add.html b/addons/command/application/admin/view/command/add.html new file mode 100644 index 0000000..bb69b43 --- /dev/null +++ b/addons/command/application/admin/view/command/add.html @@ -0,0 +1,400 @@ +<style> + .relation-item {margin-top:10px;} + legend {padding-bottom:5px;font-size:14px;font-weight:600;} + label {font-weight:normal;} + .form-control{padding:6px 8px;} + #extend-zone .col-xs-2 {margin-top:10px;padding-right:0;} + #extend-zone .col-xs-2:nth-child(6n+0) {padding-right:15px;} +</style> +<div class="panel panel-default panel-intro"> + <div class="panel-heading"> + <ul class="nav nav-tabs"> + <li class="active"><a href="#crud" data-toggle="tab">{:__('一键生成CRUD')}</a></li> + <li><a href="#menu" data-toggle="tab">{:__('一键生成菜单')}</a></li> + <li><a href="#min" data-toggle="tab">{:__('一键压缩打包')}</a></li> + <li><a href="#api" data-toggle="tab">{:__('一键生成API文档')}</a></li> + </ul> + </div> + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="crud"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="crud" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="isrelation" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="当前只支持生成1对1关联模型,选中后请配置关联表和字段"> + <input name="isrelation" type="checkbox" value="1"> + 关联模型 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="local" type="hidden" value="1"> + <label class="control-label" data-toggle="tooltip" title="默认模型生成在application/admin/model目录下,选中后将生成在application/common/model目录下"> + <input name="local" type="checkbox" value="0"> 全局模型类 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="delete" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="删除CRUD生成的相关文件"> + <input name="delete" type="checkbox" value="1"> 删除模式 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="选中后,如果已经存在同名文件将被覆盖。如果是删除将不再提醒"> + <input name="force" type="checkbox" value="1"> + 强制覆盖模式 + </label> + </div> + <!-- + <div class="col-xs-3"> + <input checked="" name="menu" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="选中后,将同时生成后台菜单规则"> + <input name="menu" type="checkbox" value="1"> + 生成菜单 + </label> + </div> + --> + </div> + </div> + <div class="form-group"> + <legend>主表设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请选择主表</label> + {:build_select('table',$tableList,null,['class'=>'form-control selectpicker']);} + </div> + <div class="col-xs-3"> + <label>自定义控制器名</label> + <input type="text" class="form-control" name="controller" data-toggle="tooltip" title="默认根据表名自动生成,如果需要放在二级目录请手动填写" placeholder="支持目录层级,以/分隔"> + </div> + <div class="col-xs-3"> + <label>自定义模型名</label> + <input type="text" class="form-control" name="model" data-toggle="tooltip" title="默认根据表名自动生成" placeholder="不支持目录层级"> + </div> + <div class="col-xs-3"> + <label>请选择显示字段(默认全部)</label> + <select name="fields[]" id="fields" multiple style="height:30px;" class="form-control selectpicker"></select> + </div> + + </div> + + </div> + + <div class="form-group hide" id="relation-zone"> + <legend>关联表设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + <a href="javascript:;" class="btn btn-primary btn-sm btn-newrelation" data-index="1">追加关联模型</a> + </div> + </div> + </div> + + <hr> + <div class="form-group" id="extend-zone"> + <legend>字段识别设置 <span style="font-size:12px;font-weight: normal;">(与之匹配的字段都将生成相应组件)</span></legend> + <div class="row"> + <div class="col-xs-2"> + <label>复选框后缀</label> + <input type="text" class="form-control" name="setcheckboxsuffix" placeholder="默认为set类型" /> + </div> + <div class="col-xs-2"> + <label>单选框后缀</label> + <input type="text" class="form-control" name="enumradiosuffix" placeholder="默认为enum类型" /> + </div> + <div class="col-xs-2"> + <label>图片类型后缀</label> + <input type="text" class="form-control" name="imagefield" placeholder="默认为image,images,avatar,avatars" /> + </div> + <div class="col-xs-2"> + <label>文件类型后缀</label> + <input type="text" class="form-control" name="filefield" placeholder="默认为file,files" /> + </div> + <div class="col-xs-2"> + <label>日期时间后缀</label> + <input type="text" class="form-control" name="intdatesuffix" placeholder="默认为time" /> + </div> + <div class="col-xs-2"> + <label>开关后缀</label> + <input type="text" class="form-control" name="switchsuffix" placeholder="默认为switch" /> + </div> + <div class="col-xs-2"> + <label>城市选择后缀</label> + <input type="text" class="form-control" name="citysuffix" placeholder="默认为city" /> + </div> + <div class="col-xs-2"> + <label>动态下拉后缀(单)</label> + <input type="text" class="form-control" name="selectpagesuffix" placeholder="默认为_id" /> + </div> + <div class="col-xs-2"> + <label>动态下拉后缀(多)</label> + <input type="text" class="form-control" name="selectpagessuffix" placeholder="默认为_ids" /> + </div> + <div class="col-xs-2"> + <label>忽略的字段</label> + <input type="text" class="form-control" name="ignorefields" placeholder="默认无" /> + </div> + <div class="col-xs-2"> + <label>排序字段</label> + <input type="text" class="form-control" name="sortfield" placeholder="默认为weigh" /> + </div> + <div class="col-xs-2"> + <label>富文本编辑器</label> + <input type="text" class="form-control" name="editorsuffix" placeholder="默认为content" /> + </div> + <div class="col-xs-2"> + <label>选项卡过滤字段</label> + <input type="text" class="form-control" name="headingfilterfield" placeholder="默认为status" /> + </div> + + </div> + + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" data-toggle="tooltip" title="如果在线执行命令失败,可以将命令复制到命令行进行执行" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="menu"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="menu" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="allcontroller" type="hidden" value="0"> + <label class="control-label"> + <input name="allcontroller" data-toggle="collapse" data-target="#controller" type="checkbox" value="1"> 一键生成全部控制器 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="delete" type="hidden" value="0"> + <label class="control-label"> + <input name="delete" type="checkbox" value="1"> 删除模式 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label"> + <input name="force" type="checkbox" value="1"> 强制覆盖模式 + </label> + </div> + </div> + </div> + + <div class="form-group in" id="controller"> + <legend>控制器设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + <input type="text" name="controllerfile" class="form-control selectpage" style="width:720px;" data-source="command/get_controller_list" data-multiple="true" name="controller" placeholder="请选择控制器" /> + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="min"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="min" /> + <div class="form-group"> + <legend>基础设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请选择压缩模块</label> + <select name="module" class="form-control selectpicker"> + <option value="all" selected>全部</option> + <option value="backend">后台Backend</option> + <option value="frontend">前台Frontend</option> + </select> + </div> + <div class="col-xs-3"> + <label>请选择压缩资源</label> + <select name="resource" class="form-control selectpicker"> + <option value="all" selected>全部</option> + <option value="js">JS</option> + <option value="css">CSS</option> + </select> + </div> + <div class="col-xs-3"> + <label>请选择压缩模式</label> + <select name="optimize" class="form-control selectpicker"> + <option value="">无</option> + <option value="uglify">uglify</option> + <option value="closure">closure</option> + </select> + </div> + </div> + </div> + + <div class="form-group in"> + <legend>控制器设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="api"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="api" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label"> + <input name="force" type="checkbox" value="1"> + 覆盖模式 + </label> + </div> + </div> + </div> + <div class="form-group"> + <legend>文档设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请输入接口URL</label> + <input type="text" name="url" class="form-control" placeholder="API URL,可留空" /> + </div> + <div class="col-xs-3"> + <label>接口生成文件</label> + <input type="text" name="output" class="form-control" placeholder="留空则使用api.html" /> + </div> + <div class="col-xs-3"> + <label>模板文件</label> + <input type="text" name="template" class="form-control" placeholder="如果不清楚请留空" /> + </div> + </div> + <div class="row" style="margin-top:10px;"> + <div class="col-xs-3"> + <label>文档标题</label> + <input type="text" name="title" class="form-control" placeholder="默认为FastAdmin" /> + </div> + <div class="col-xs-3"> + <label>文档作者</label> + <input type="text" name="author" class="form-control" placeholder="默认为FastAdmin" /> + </div> + <div class="col-xs-3"> + <label>文档语言</label> + <select name="language" class="form-control"> + <option value="" selected>请选择语言</option> + <option value="zh-cn">中文</option> + <option value="en">英文</option> + </select> + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + </div> + </div> +</div> +<script id="relationtpl" type="text/html"> + <div class="row relation-item"> + <div class="col-xs-2"> + <label>请选择关联表</label> + <select name="relation[<%=index%>][relation]" class="form-control relationtable"></select> + </div> + <div class="col-xs-2"> + <label>请选择关联类型</label> + <select name="relation[<%=index%>][relationmode]" class="form-control relationmode"></select> + </div> + <div class="col-xs-2"> + <label>关联外键</label> + <select name="relation[<%=index%>][relationforeignkey]" class="form-control relationforeignkey"></select> + </div> + <div class="col-xs-2"> + <label>关联主键</label> + <select name="relation[<%=index%>][relationprimarykey]" class="form-control relationprimarykey"></select> + </div> + <div class="col-xs-2"> + <label>请选择显示字段</label> + <select name="relation[<%=index%>][relationfields][]" multiple class="form-control relationfields"></select> + </div> + <div class="col-xs-2"> + <label> </label> + <a href="javascript:;" class="btn btn-danger btn-block btn-removerelation">移除</a> + </div> + </div> +</script> \ No newline at end of file diff --git a/addons/command/application/admin/view/command/detail.html b/addons/command/application/admin/view/command/detail.html new file mode 100644 index 0000000..24bf12d --- /dev/null +++ b/addons/command/application/admin/view/command/detail.html @@ -0,0 +1,42 @@ +<table class="table table-striped"> + <thead> + <tr> + <th>{:__('Title')}</th> + <th>{:__('Content')}</th> + </tr> + </thead> + <tbody> + <tr> + <td>{:__('Type')}</td> + <td>{$row.type}({$row.type_text})</td> + </tr> + <tr> + <td>{:__('Params')}</td> + <td>{$row.params}</td> + </tr> + <tr> + <td>{:__('Command')}</td> + <td>{$row.command}</td> + </tr> + <tr> + <td>{:__('Content')}</td> + <td> + <textarea class="form-control" name="" id="" cols="60" rows="10">{$row.content}</textarea> + </td> + </tr> + <tr> + <td>{:__('Executetime')}</td> + <td>{$row.executetime|datetime}</td> + </tr> + <tr> + <td>{:__('Status')}</td> + <td>{$row.status_text}</td> + </tr> + </tbody> +</table> +<div class="hide layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="reset" class="btn btn-primary btn-embossed btn-close" onclick="Layer.closeAll();">{:__('Close')}</button> + </div> +</div> \ No newline at end of file diff --git a/addons/command/application/admin/view/command/index.html b/addons/command/application/admin/view/command/index.html new file mode 100644 index 0000000..3b4f823 --- /dev/null +++ b/addons/command/application/admin/view/command/index.html @@ -0,0 +1,25 @@ +<div class="panel panel-default panel-intro"> + {:build_heading()} + + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="one"> + <div class="widget-body no-padding"> + <div id="toolbar" class="toolbar"> + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('command/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('command/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> + + </div> + <table id="table" class="table table-striped table-bordered table-hover" + data-operate-detail="{:$auth->check('command/detail')}" + data-operate-execute="{:$auth->check('command/execute')}" + data-operate-del="{:$auth->check('command/del')}" + width="100%"> + </table> + </div> + </div> + + </div> + </div> +</div> diff --git a/addons/command/config.php b/addons/command/config.php new file mode 100644 index 0000000..b625128 --- /dev/null +++ b/addons/command/config.php @@ -0,0 +1,4 @@ +<?php + +return [ +]; diff --git a/addons/command/controller/Index.php b/addons/command/controller/Index.php new file mode 100644 index 0000000..fa88cef --- /dev/null +++ b/addons/command/controller/Index.php @@ -0,0 +1,15 @@ +<?php + +namespace addons\command\controller; + +use think\addons\Controller; + +class Index extends Controller +{ + + public function index() + { + $this->error("当前插件暂无前台页面"); + } + +} diff --git a/addons/command/info.ini b/addons/command/info.ini new file mode 100644 index 0000000..5214fc4 --- /dev/null +++ b/addons/command/info.ini @@ -0,0 +1,8 @@ +name = command +title = 在线命令 +intro = 可在线执行FastAdmin的命令行相关命令 +author = Karson +website = http://www.fastadmin.net +version = 1.0.5 +state = 1 +url = /addons/command.html diff --git a/addons/command/install.sql b/addons/command/install.sql new file mode 100644 index 0000000..ea58444 --- /dev/null +++ b/addons/command/install.sql @@ -0,0 +1,12 @@ +CREATE TABLE IF NOT EXISTS `__PREFIX__command` ( + `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', + `type` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '类型', + `params` varchar(1500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '参数', + `command` varchar(1500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '命令', + `content` text COMMENT '返回结果', + `executetime` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '执行时间', + `createtime` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '创建时间', + `updatetime` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '更新时间', + `status` enum('successed','failured') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'failured' COMMENT '状态', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '在线命令表' ROW_FORMAT = Compact; \ No newline at end of file diff --git a/addons/command/library/Output.php b/addons/command/library/Output.php new file mode 100644 index 0000000..aba7982 --- /dev/null +++ b/addons/command/library/Output.php @@ -0,0 +1,28 @@ +<?php + +namespace addons\command\library; + +/** + * Class Output + */ +class Output extends \think\console\Output +{ + + protected $message = []; + + public function __construct($driver = 'console') + { + parent::__construct($driver); + } + + protected function block($style, $message) + { + $this->message[] = $message; + } + + public function getMessage() + { + return $this->message; + } + +} diff --git a/addons/command/public/assets/js/backend/command.js b/addons/command/public/assets/js/backend/command.js new file mode 100644 index 0000000..f31d8f4 --- /dev/null +++ b/addons/command/public/assets/js/backend/command.js @@ -0,0 +1,234 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'command/index', + add_url: 'command/add', + edit_url: '', + del_url: 'command/del', + multi_url: 'command/multi', + table: 'command', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'type', title: __('Type'), formatter: Table.api.formatter.search}, + {field: 'type_text', title: __('Type')}, + { + field: 'command', title: __('Command'), formatter: function (value, row, index) { + return '<input type="text" class="form-control" value="' + value + '">'; + } + }, + { + field: 'executetime', + title: __('Executetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'createtime', + title: __('Createtime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'status', + title: __('Status'), + table: table, + custom: {"successed": 'success', "failured": 'danger'}, + searchList: {"successed": __('Successed'), "failured": __('Failured')}, + formatter: Table.api.formatter.status + }, + { + field: 'operate', + title: __('Operate'), + buttons: [ + { + name: 'execute', + title: __('Execute again'), + text: __('Execute again'), + url: 'command/execute', + icon: 'fa fa-repeat', + classname: 'btn btn-success btn-xs btn-execute btn-ajax', + success: function (data) { + Layer.alert("<textarea class='form-control' cols='60' rows='5'>" + data.result + "</textarea>", { + title: __("执行结果"), + shadeClose: true + }); + table.bootstrapTable('refresh'); + return false; + } + }, + { + name: 'execute', + title: __('Detail'), + text: __('Detail'), + url: 'command/detail', + icon: 'fa fa-list', + classname: 'btn btn-info btn-xs btn-execute btn-dialog' + } + ], + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + require(['bootstrap-select', 'bootstrap-select-lang']); + var mainfields = []; + var relationfields = {}; + var maintable = []; + var relationtable = []; + var relationmode = ["belongsto", "hasone"]; + + var renderselect = function (select, data) { + var html = []; + for (var i = 0; i < data.length; i++) { + html.push("<option value='" + data[i] + "'>" + data[i] + "</option>"); + } + $(select).html(html.join("")); + select.trigger("change"); + if (select.data("selectpicker")) { + select.selectpicker('refresh'); + } + return select; + }; + + $("select[name=table] option").each(function () { + maintable.push($(this).val()); + }); + $(document).on('change', "input[name='isrelation']", function () { + $("#relation-zone").toggleClass("hide", !$(this).prop("checked")); + }); + $(document).on('change', "select[name='table']", function () { + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: $(that).val()}, + }, function (data, ret) { + mainfields = data.fieldlist; + $("#relation-zone .relation-item").remove(); + renderselect($("#fields"), mainfields); + return false; + }); + return false; + }); + $(document).on('click', "a.btn-newrelation", function () { + var that = this; + var index = parseInt($(that).data("index")) + 1; + var content = Template("relationtpl", {index: index}); + content = $(content.replace(/\[index\]/, index)); + $(this).data("index", index); + $(content).insertBefore($(that).closest(".row")); + $('select', content).selectpicker(); + var exists = [$("select[name='table']").val()]; + $("select.relationtable").each(function () { + exists.push($(this).val()); + }); + relationtable = []; + $.each(maintable, function (i, j) { + if ($.inArray(j, exists) < 0) { + relationtable.push(j); + } + }); + renderselect($("select.relationtable", content), relationtable); + $("select.relationtable", content).trigger("change"); + }); + $(document).on('click', "a.btn-removerelation", function () { + $(this).closest(".row").remove(); + }); + $(document).on('change', "#relation-zone select.relationmode", function () { + var table = $("select.relationtable", $(this).closest(".row")).val(); + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: table}, + }, function (data, ret) { + renderselect($(that).closest(".row").find("select.relationprimarykey"), $(that).val() == 'belongsto' ? data.fieldlist : mainfields); + renderselect($(that).closest(".row").find("select.relationforeignkey"), $(that).val() == 'hasone' ? data.fieldlist : mainfields); + return false; + }); + }); + $(document).on('change', "#relation-zone select.relationtable", function () { + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: $(that).val()}, + }, function (data, ret) { + renderselect($(that).closest(".row").find("select.relationmode"), relationmode); + renderselect($(that).closest(".row").find("select.relationfields"), mainfields) + renderselect($(that).closest(".row").find("select.relationforeignkey"), data.fieldlist) + renderselect($(that).closest(".row").find("select.relationfields"), data.fieldlist) + return false; + }); + }); + $(document).on('click', ".btn-command", function () { + var form = $(this).closest("form"); + var textarea = $("textarea[rel=command]", form); + textarea.val(''); + Fast.api.ajax({ + url: "command/command/action/command", + data: form.serialize(), + }, function (data, ret) { + textarea.val(data.command); + return false; + }); + }); + $(document).on('click', ".btn-execute", function () { + var form = $(this).closest("form"); + var textarea = $("textarea[rel=result]", form); + textarea.val(''); + Fast.api.ajax({ + url: "command/command/action/execute", + data: form.serialize(), + }, function (data, ret) { + textarea.val(data.result); + window.parent.$(".toolbar .btn-refresh").trigger('click'); + top.window.Fast.api.refreshmenu(); + return false; + }, function () { + window.parent.$(".toolbar .btn-refresh").trigger('click'); + }); + }); + $("select[name='table']").trigger("change"); + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); diff --git a/addons/nkeditor/Nkeditor.php b/addons/nkeditor/Nkeditor.php new file mode 100644 index 0000000..b8f252a --- /dev/null +++ b/addons/nkeditor/Nkeditor.php @@ -0,0 +1,63 @@ +<?php + +namespace addons\nkeditor; + +use app\common\library\Menu; +use think\Addons; + +/** + * 富文本编辑器插件 + */ +class Nkeditor extends Addons +{ + + /** + * 插件安装方法 + * @return bool + */ + public function install() + { + + return true; + } + + /** + * 插件卸载方法 + * @return bool + */ + public function uninstall() + { + + return true; + } + + /** + * 插件启用方法 + * @return bool + */ + public function enable() + { + + return true; + } + + /** + * 插件禁用方法 + * @return bool + */ + public function disable() + { + + return true; + } + + /** + * @param $params + */ + public function configInit(&$params) + { + $config = $this->getConfig(); + $params['nkeditor'] = ['theme' => $config['theme'], 'wordimageserver' => $config['wordimageserver']]; + } + +} diff --git a/addons/nkeditor/README.md b/addons/nkeditor/README.md new file mode 100644 index 0000000..6ee75c7 --- /dev/null +++ b/addons/nkeditor/README.md @@ -0,0 +1,17 @@ +# NKeditor +NKedtior是基于 kindeditor 进行二次开发的项目 +kindeditor 是一款优秀的开源在线编辑器。轻量级且功能强大,代码量却不到百度的ueditor编辑器的一半。可惜已经4年没有更新了,由于业务的需求我们在kindeditor的基础上开发了 NKeditor, 主要做了一下工作: +1. 调整编辑器和弹出 dialog 的样式,美化了UI +2. 重写图片上传和批量图片上传插件,使用 html5 上传代替了 flash,实现了待上传图片预览,优化用户体验 +3. 修复一些已知的bug,如 ajax 提交无法获取内容等 +4. 新增涂鸦等功能 + +再次感谢 kindeditor 的开发者,为我们提供了如此优秀的在线编辑器,让我们能在前人的基础上继续贡献自己的微薄之力。 + +# 开源说明 +本插件基于Nkeditor进行二次开发,修改的核心文件已开源于 https://gitee.com/karson/kindeditor + +# 特别感谢 +[Kindeditor](https://gitee.com/luolonghao/kindeditor) +[Nkeditor](https://gitee.com/blackfox/kindeditor) + diff --git a/addons/nkeditor/assets/css/common.css b/addons/nkeditor/assets/css/common.css new file mode 100644 index 0000000..12fa84e --- /dev/null +++ b/addons/nkeditor/assets/css/common.css @@ -0,0 +1,5 @@ + +.ke-container-black .ke-toolbar .ke-icon-remoteimage { + background-image: url(../img/download.png); + background-size: 16px 16px; +} \ No newline at end of file diff --git a/addons/nkeditor/assets/img/download.png b/addons/nkeditor/assets/img/download.png new file mode 100644 index 0000000..1945ae7 Binary files /dev/null and b/addons/nkeditor/assets/img/download.png differ diff --git a/addons/nkeditor/assets/img/downloading.png b/addons/nkeditor/assets/img/downloading.png new file mode 100644 index 0000000..1d6cbd1 Binary files /dev/null and b/addons/nkeditor/assets/img/downloading.png differ diff --git a/addons/nkeditor/assets/js/customplugin.js b/addons/nkeditor/assets/js/customplugin.js new file mode 100644 index 0000000..79075e9 --- /dev/null +++ b/addons/nkeditor/assets/js/customplugin.js @@ -0,0 +1,74 @@ +define(['nkeditor-core'], function (Nkeditor) { + Nkeditor.plugin('multiimage', function (K) { + var self = this, name = 'multiimage', lang = self.lang(name + '.'), + allowImages = K.undef(self.allowImages, false); + + var click = function () { + + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class=""><div class="ke-inline-block ke-upload-button">' + + '<form class="ke-upload-area ke-form nice-validator n-default" method="post" enctype="multipart/form-data" style="width: 266px;margin:50px auto;">' + + '<span class="ke-button-common"><input type="button" class="ke-button-common ke-button" value="批量上传图片" style="width:128px;"></span><input type="file" class="ke-upload-file" name="imgFiles" multiple style="width:128px;left:0;right:inherit" tabindex="-1">' + + '<span class="ke-button-common" style="margin-left:10px;"><input type="button" class="ke-button-common ke-button ke-select-image" style="width:128px;" value="从图片空间选择"></span>' + + '</form>' + + '</div></span></div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + height: 260, + title: self.lang(name), + body: html, + noBtn: { + name: self.lang('no'), + click: function (e) { + self.hideDialog().focus(); + } + } + }), + div = dialog.div; + $("input[name=imgFiles]", div).change(function () { + dialog.showLoading(); + var files = $(this).prop('files'); + $.each(files, function (i, file) { + self.beforeUpload.call(self, function (data) { + self.exec('insertimage', Fast.api.cdnurl(data.data.url)); + }, file); + }); + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + }); + $(".ke-select-image", div).click(function () { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'image', + multiple: true, + clickFn: function (urls) { + $.each(urls, function(i, url){ + self.exec('insertimage', url); + }); + } + }); + }); + self.hideDialog().focus(); + // parent.Fast.api.open("general/attachment/select?element_id=&multiple=true&mimetype=*", __('Choose'), { + // callback: function (data) { + // var urlArr = data.url.split(/\,/); + // $.each(urlArr, function () { + // var url = Fast.api.cdnurl(this); + // self.exec('insertimage', url); + // }); + // } + // }); + }); + }; + self.clickToolbar(name, click); + }); + + return Nkeditor; +}); diff --git a/addons/nkeditor/assets/lang/ar.js b/addons/nkeditor/assets/lang/ar.js new file mode 100644 index 0000000..6eb4b7e --- /dev/null +++ b/addons/nkeditor/assets/lang/ar.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Arabic Translation By daif alotaibi (http://daif.net/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'عرض المصدر', + preview : 'معاينة الصفحة', + undo : 'تراجع(Ctrl+Z)', + redo : 'إعادة التراجع(Ctrl+Y)', + cut : 'قص(Ctrl+X)', + copy : 'نسخ(Ctrl+C)', + paste : 'لصق(Ctrl+V)', + plainpaste : 'لصق كنص عادي', + wordpaste : 'لصق من مايكروسفت ورد', + selectall : 'تحديد الكل', + justifyleft : 'محاذاه لليسار', + justifycenter : 'محاذاه للوسط', + justifyright : 'محاذاه لليمين', + justifyfull : 'محاذاه تلقائية', + insertorderedlist : 'قائمة مرقمه', + insertunorderedlist : 'قائمة نقطية', + indent : 'إزاحه النص', + outdent : 'إلغاء الازاحة', + subscript : 'أسفل النص', + superscript : 'أعلى النص', + formatblock : 'Paragraph format', + fontname : 'نوع الخط', + fontsize : 'حجم الخط', + forecolor : 'لون النص', + hilitecolor : 'لون خلفية النص', + bold : 'عريض(Ctrl+B)', + italic : 'مائل(Ctrl+I)', + underline : 'خط تحت النص(Ctrl+U)', + strikethrough : 'خط على النص', + removeformat : 'إزالة التنسيق', + image : 'إدراج صورة', + multiimage : 'Multi image', + flash : 'إدراج فلاش', + media : 'إدراج وسائط متعددة', + table : 'إدراج جدول', + tablecell : 'خلية', + hr : 'إدراج خط أفقي', + emoticons : 'إدراج وجه ضاحك', + link : 'رابط', + unlink : 'إزالة الرابط', + fullscreen : 'محرر ملئ الشاشة', + about : 'حول', + print : 'طباعة', + filemanager : 'مدير الملفات', + code : 'إدراج نص برمجي', + map : 'خرائط قووقل', + baidumap : 'خرائط قووقل', + lineheight : 'إرتفاع السطر', + clearhtml : 'مسح كود HTML', + pagebreak : 'إدراج فاصل صفحات', + quickformat : 'تنسيق سريع', + insertfile : 'إدراج ملف', + template : 'إدراج قالب', + anchor : 'رابط', + yes : 'موافق', + no : 'إلغاء', + close : 'إغلاق', + editImage : 'خصائص الصورة', + deleteImage : 'حذفالصورة', + editFlash : 'خصائص الفلاش', + deleteFlash : 'حذف الفلاش', + editMedia : 'خصائص الوسائط', + deleteMedia : 'حذف الوسائط', + editLink : 'خصائص الرابط', + deleteLink : 'إزالة الرابط', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'خصائص الجدول', + tablecellprop : 'خصائص الخلية', + tableinsert : 'إدراج جدول', + tabledelete : 'حذف جدول', + tablecolinsertleft : 'إدراج عمود لليسار', + tablecolinsertright : 'إدراج عمود لليسار', + tablerowinsertabove : 'إدراج صف للأعلى', + tablerowinsertbelow : 'إدراج صف للأسفل', + tablerowmerge : 'دمج للأسفل', + tablecolmerge : 'دمج لليمين', + tablerowsplit : 'تقسم الصف', + tablecolsplit : 'تقسيم العمود', + tablecoldelete : 'حذف العمود', + tablerowdelete : 'حذف الصف', + noColor : 'إفتراضي', + pleaseSelectFile : 'Please select file.', + invalidImg : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: jpg,gif,bmp,png", + invalidMedia : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "العرض يجب أن يكون رقم.", + invalidHeight : "الإرتفاع يجب أن يكون رقم.", + invalidBorder : "عرض الحد يجب أن يكون رقم.", + invalidUrl : "الرجاء إدخال رابط حيح.", + invalidRows : 'صفوف غير صحيح.', + invalidCols : 'أعمدة غير صحيحة.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'تم رفع الملف بنجاح.', + cutError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+X).', + copyError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+C).', + pasteError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+V).', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'wordpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'الرابط', + 'link.linkType' : 'الهدف', + 'link.newWindow' : 'نافذة جديدة', + 'link.selfWindow' : 'نفس النافذة', + 'flash.url' : 'الرابط', + 'flash.width' : 'العرض', + 'flash.height' : 'الإرتفاع', + 'flash.upload' : 'رفع', + 'flash.viewServer' : 'أستعراض', + 'media.url' : 'الرابط', + 'media.width' : 'العرض', + 'media.height' : 'الإرتفاع', + 'media.autostart' : 'تشغيل تلقائي', + 'media.upload' : 'رفع', + 'media.viewServer' : 'أستعراض', + 'image.remoteImage' : 'إدراج الرابط', + 'image.localImage' : 'رفع', + 'image.remoteUrl' : 'الرابط', + 'image.localUrl' : 'الملف', + 'image.size' : 'الحجم', + 'image.width' : 'العرض', + 'image.height' : 'الإرتفاع', + 'image.resetSize' : 'إستعادة الأبعاد', + 'image.align' : 'محاذاة', + 'image.defaultAlign' : 'الإفتراضي', + 'image.leftAlign' : 'اليسار', + 'image.rightAlign' : 'اليمين', + 'image.imgTitle' : 'العنوان', + 'image.upload' : 'أستعراض', + 'image.viewServer' : 'أستعراض', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'فارغ', + 'filemanager.moveup' : 'المجلد الأب', + 'filemanager.viewType' : 'العرض: ', + 'filemanager.viewImage' : 'مصغرات', + 'filemanager.listImage' : 'قائمة', + 'filemanager.orderType' : 'الترتيب: ', + 'filemanager.fileName' : 'بالإسم', + 'filemanager.fileSize' : 'بالحجم', + 'filemanager.fileType' : 'بالنوع', + 'insertfile.url' : 'الرابط', + 'insertfile.title' : 'العنوان', + 'insertfile.upload' : 'رفع', + 'insertfile.viewServer' : 'أستعراض', + 'table.cells' : 'خلايا', + 'table.rows' : 'صفوف', + 'table.cols' : 'أعمدة', + 'table.size' : 'الأبعاد', + 'table.width' : 'العرض', + 'table.height' : 'الإرتفاع', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'الخارج', + 'table.padding' : 'الداخل', + 'table.spacing' : 'الفراغات', + 'table.align' : 'محاذاه', + 'table.textAlign' : 'افقى', + 'table.verticalAlign' : 'رأسي', + 'table.alignDefault' : 'إفتراضي', + 'table.alignLeft' : 'يسار', + 'table.alignCenter' : 'وسط', + 'table.alignRight' : 'يمين', + 'table.alignTop' : 'أعلى', + 'table.alignMiddle' : 'منتصف', + 'table.alignBottom' : 'أسفل', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'الحدود', + 'table.borderWidth' : 'العرض', + 'table.borderColor' : 'اللون', + 'table.backgroundColor' : 'الخلفية', + 'map.address' : 'العنوان: ', + 'map.search' : 'بحث', + 'baidumap.address' : 'العنوان: ', + 'baidumap.search' : 'بحث', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'إسم الرابط', + 'formatblock.formatBlock' : { + h1 : 'عنوان 1', + h2 : 'عنوان 2', + h3 : 'عنوان 3', + h4 : 'عنوان 4', + p : 'عادي' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'إرتفاع السطر 1'}, + {'1.5' : 'إرتفاع السطر 1.5'}, + {'2' : 'إرتفاع السطر 2'}, + {'2.5' : 'إرتفاع السطر 2.5'}, + {'3' : 'إرتفاع السطر 3'} + ], + 'template.selectTemplate' : 'قالب', + 'template.replaceContent' : 'إستبدال المحتوى الحالي', + 'template.fileList' : { + '1.html' : 'صورة ونص', + '2.html' : 'جدول', + '3.html' : 'قائمة' + } +}, 'ar'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ar'; \ No newline at end of file diff --git a/addons/nkeditor/assets/lang/en.js b/addons/nkeditor/assets/lang/en.js new file mode 100644 index 0000000..dbaa616 --- /dev/null +++ b/addons/nkeditor/assets/lang/en.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Undo(Ctrl+Z)', + redo : 'Redo(Ctrl+Y)', + cut : 'Cut(Ctrl+X)', + copy : 'Copy(Ctrl+C)', + paste : 'Paste(Ctrl+V)', + plainpaste : 'Paste as plain text', + wordpaste : 'Paste from Word', + selectall : 'Select all', + justifyleft : 'Align left', + justifycenter : 'Align center', + justifyright : 'Align right', + justifyfull : 'Align full', + insertorderedlist : 'Ordered list', + insertunorderedlist : 'Unordered list', + indent : 'Increase indent', + outdent : 'Decrease indent', + subscript : 'Subscript', + superscript : 'Superscript', + formatblock : 'Paragraph format', + fontname : 'Font family', + fontsize : 'Font size', + forecolor : 'Text color', + hilitecolor : 'Highlight color', + bold : 'Bold(Ctrl+B)', + italic : 'Italic(Ctrl+I)', + underline : 'Underline(Ctrl+U)', + strikethrough : 'Strikethrough', + removeformat : 'Remove format', + image : 'Image', + multiimage : 'Multi image', + flash : 'Flash', + media : 'Embeded media', + table : 'Table', + tablecell : 'Cell', + hr : 'Insert horizontal line', + emoticons : 'Insert emoticon', + link : 'Link', + unlink : 'Unlink', + fullscreen : 'Toggle fullscreen mode', + about : 'About', + print : 'Print', + filemanager : 'File Manager', + code : 'Insert code', + map : 'Google Maps', + baidumap : 'Baidu Maps', + lineheight : 'Line height', + clearhtml : 'Clear HTML code', + pagebreak : 'Insert Page Break', + quickformat : 'Quick Format', + insertfile : 'Insert file', + template : 'Insert Template', + anchor : 'Anchor', + yes : 'OK', + no : 'Cancel', + close : 'Close', + editImage : 'Image properties', + deleteImage : 'Delete image', + editFlash : 'Flash properties', + deleteFlash : 'Delete flash', + editMedia : 'Media properties', + deleteMedia : 'Delete media', + editLink : 'Link properties', + deleteLink : 'Unlink', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Table properties', + tablecellprop : 'Cell properties', + tableinsert : 'Insert table', + tabledelete : 'Delete table', + tablecolinsertleft : 'Insert column left', + tablecolinsertright : 'Insert column right', + tablerowinsertabove : 'Insert row above', + tablerowinsertbelow : 'Insert row below', + tablerowmerge : 'Merge down', + tablecolmerge : 'Merge right', + tablerowsplit : 'Split row', + tablecolsplit : 'Split column', + tablecoldelete : 'Delete column', + tablerowdelete : 'Delete row', + noColor : 'Default', + pleaseSelectFile : 'Please select file.', + invalidImg : "Please type valid URL.\nAllowed file extension: jpg,gif,bmp,png", + invalidMedia : "Please type valid URL.\nAllowed file extension: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "The width must be number.", + invalidHeight : "The height must be number.", + invalidBorder : "The border must be number.", + invalidUrl : "Please type valid URL.", + invalidRows : 'Invalid rows.', + invalidCols : 'Invalid columns.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'Upload success.', + cutError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+X) instead.', + copyError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+C) instead.', + pasteError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+V) instead.', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'wordpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : 'Target', + 'link.newWindow' : 'New window', + 'link.selfWindow' : 'Same window', + 'flash.url' : 'URL', + 'flash.width' : 'Width', + 'flash.height' : 'Height', + 'flash.upload' : 'Upload', + 'flash.viewServer' : 'Browse', + 'media.url' : 'URL', + 'media.width' : 'Width', + 'media.height' : 'Height', + 'media.autostart' : 'Auto start', + 'media.upload' : 'Upload', + 'media.viewServer' : 'Browse', + 'image.remoteImage' : 'Insert URL', + 'image.localImage' : 'Upload', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'File', + 'image.size' : 'Size', + 'image.width' : 'Width', + 'image.height' : 'Height', + 'image.resetSize' : 'Reset dimensions', + 'image.align' : 'Align', + 'image.defaultAlign' : 'Default', + 'image.leftAlign' : 'Left', + 'image.rightAlign' : 'Right', + 'image.imgTitle' : 'Title', + 'image.upload' : 'Browse', + 'image.viewServer' : 'Browse', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'Blank', + 'filemanager.moveup' : 'Parent folder', + 'filemanager.viewType' : 'Display: ', + 'filemanager.viewImage' : 'Thumbnails', + 'filemanager.listImage' : 'List', + 'filemanager.orderType' : 'Sorting: ', + 'filemanager.fileName' : 'By name', + 'filemanager.fileSize' : 'By size', + 'filemanager.fileType' : 'By type', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Title', + 'insertfile.upload' : 'Upload', + 'insertfile.viewServer' : 'Browse', + 'table.cells' : 'Cells', + 'table.rows' : 'Rows', + 'table.cols' : 'Columns', + 'table.size' : 'Dimensions', + 'table.width' : 'Width', + 'table.height' : 'Height', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Align', + 'table.textAlign' : 'Horizontal', + 'table.verticalAlign' : 'Vertical', + 'table.alignDefault' : 'Default', + 'table.alignLeft' : 'Left', + 'table.alignCenter' : 'Center', + 'table.alignRight' : 'Right', + 'table.alignTop' : 'Top', + 'table.alignMiddle' : 'Middle', + 'table.alignBottom' : 'Bottom', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'Border', + 'table.borderWidth' : 'Width', + 'table.borderColor' : 'Color', + 'table.backgroundColor' : 'Background', + 'map.address' : 'Address: ', + 'map.search' : 'Search', + 'baidumap.address' : 'Address: ', + 'baidumap.search' : 'Search', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'Anchor name', + 'formatblock.formatBlock' : { + h1 : 'Heading 1', + h2 : 'Heading 2', + h3 : 'Heading 3', + h4 : 'Heading 4', + p : 'Normal' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'Line height 1'}, + {'1.5' : 'Line height 1.5'}, + {'2' : 'Line height 2'}, + {'2.5' : 'Line height 2.5'}, + {'3' : 'Line height 3'} + ], + 'template.selectTemplate' : 'Template', + 'template.replaceContent' : 'Replace current content', + 'template.fileList' : { + '1.html' : 'Image and Text', + '2.html' : 'Table', + '3.html' : 'List' + } +}, 'en'); + +//自动加载代码美化的js插件 +// KindEditor.loadScript(KindEditor.options.pluginsPath+"code/prettify.js"); +// KindEditor.each(KindEditor.options.items, function(i, name) { +// if (name == 'code') { +// KindEditor.options.items[i] = 'map'; +// } +// }); +KindEditor.options.langType = 'en'; diff --git a/addons/nkeditor/assets/lang/ja-JP.js b/addons/nkeditor/assets/lang/ja-JP.js new file mode 100644 index 0000000..7806d08 --- /dev/null +++ b/addons/nkeditor/assets/lang/ja-JP.js @@ -0,0 +1,234 @@ +/******************************************************************************* +* @author 您的名字 お名前 +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTMLコード', + preview : 'プレビュー', + undo : '戻る(Ctrl+Z)', + redo : '進む(Ctrl+Y)', + cut : 'カット(Ctrl+X)', + copy : 'コピー(Ctrl+C)', + paste : '貼り付け(Ctrl+V)', + plainpaste : 'フォーマットされていないテキストとして貼り付ける', + wordpaste : '「word」ドからペースト', + selectall : 'すべて選択(Ctrl+A)', + justifyleft : '左揃え', + justifycenter : '中央揃え', + justifyright : '右揃え', + justifyfull : '両端揃え', + insertorderedlist : '番号', + insertunorderedlist : '箇条書き', + indent : 'インデントを増やす', + outdent : 'インデントを減らす', + subscript : '下付き', + superscript : '上付き', + formatblock : '段落', + fontname : 'フォント', + fontsize : 'フォントサイズ', + forecolor : 'フォントカラー', + hilitecolor : 'テキストの背景', + bold : '太字(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下線(Ctrl+U)', + strikethrough : '取り消し線', + removeformat : 'フォーマットを削除', + image : '画像', + multiimage : '一括画像アップロード', + flash : 'Flash', + media : 'ビデオとオーディオ', + table : 'テーブル', + tablecell : 'セル', + hr : '水平線を挿入する', + emoticons : '絵文字を挿入する', + link : 'ハイパーリンク', + unlink : 'ハイパーリンクをキャンセル', + fullscreen : 'フルスクリーン表示', + about : 'について', + print : 'プリント(Ctrl+P)', + filemanager : 'ファイルスペース', + code : 'プログラムコードを挿入', + map : 'Googleマップ', + baidumap : 'Baiduマップ', + lineheight : '行間隔', + clearhtml : 'HTMLコードをクリア', + pagebreak : 'ページ区切りの挿入', + quickformat : 'ワンクリックレイアウト', + insertfile : 'ファイルの挿入', + template : 'テンプレートの挿入', + anchor : 'アンカー', + yes : 'はい', + no : 'いいえ', + close : '閉じる', + editImage : 'イメージプロパティ', + deleteImage : 'イメージを削除', + editFlash : 'Flashプロパティ', + deleteFlash : 'Flashを削除', + editMedia : 'ビデオとオーディオのプロパティ', + deleteMedia : 'ビデオとオーディオを削除', + editLink : 'ハイパーリンク属性', + deleteLink : 'ハイパーリンクを削除', + editAnchor : 'アンカー属性', + deleteAnchor : 'アンカーを削除', + tableprop : 'テーブル属性', + tablecellprop : 'セル属性', + tableinsert : 'テーブルを挿入', + tabledelete : 'テーブルを削除', + tablecolinsertleft : '左に列を挿入する', + tablecolinsertright : '右に列を挿入する', + tablerowinsertabove : '上に行を挿入する', + tablerowinsertbelow : '下に行を挿入する', + tablerowmerge : '下にセルをマージする', + tablecolmerge : '右にセルをマージする', + tablerowsplit : '行を分割', + tablecolsplit : '列を分割', + tablecoldelete : '列を削除', + tablerowdelete : '行を削除', + noColor : '色なし', + pleaseSelectFile : 'ファイルを選択してください。', + invalidImg : "有効なURLアドレスを入力してください。\ n jpg、gif、bmp、png形式のみが許可されています。", + invalidMedia : "有効なURLアドレスを入力してください。swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb形式のみが許可されています。", + invalidWidth : "幅は数字でなければなりません。", + invalidHeight : "高さは数字でなければなりません。", + invalidBorder : "ボーダーは数字でなければなりません。", + invalidUrl : "有効なURLアドレスを入力してください。", + invalidRows : '行数は必須項目で、0以上の数字を入力してください。', + invalidCols : '列数は必須項目で、0以上の数字を入力してください。', + invalidPadding : 'マージンは数字でなければなりません。', + invalidSpacing : 'スペースは数字でなければなりません。', + invalidJson : 'サーバーエラー。', + uploadSuccess : 'アップロード成功。', + cutError : 'ブラウザのセキュリティ設定によってカット操作を使用できないので、ショートカットキー(Ctrl + X)を使用してください。', + copyError : 'ブラウザのセキュリティ設定によってコピー操作をできないので、ショートカットキー(Ctrl + C)を使用してください。', + pasteError : 'ブラウザのセキュリティ設定によって貼り付け操作をできないので、ショートカットキー(Ctrl + V)を使用してください。', + ajaxLoading : '読み込み中、お待ちください...', + uploadLoading : 'アップロード、しばらくお待ちください...', + uploadError : 'アップロードエラー', + 'plainpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'wordpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'code.pleaseInput' : 'プログラムコードを入力してください。 ', + 'link.url' : 'URL', + 'link.linkType' : 'タイプを開く', + 'link.newWindow' : '新しいウィンドウ', + 'link.selfWindow' : '現在のウィンドウ', + 'flash.url' : 'URL', + 'flash.width' : '幅', + 'flash.height' : '高さ', + 'flash.upload' : 'アップロード', + 'flash.viewServer' : 'ファイルスペース', + 'media.url' : 'URL', + 'media.width' : '幅', + 'media.height' : '高さ', + 'media.autostart' : '自動再生', + 'media.upload' : 'アップロード', + 'media.viewServer' : 'ファイルスペース', + 'image.remoteImage' : 'ネットワークイメージ', + 'image.localImage' : 'ローカルアップロード', + 'image.remoteUrl' : 'イメージアドレス ', + 'image.localUrl' : 'アップロードファイル', + 'image.size' : 'イメージサイズ', + 'image.width' : '幅', + 'image.height' : '高さ', + 'image.resetSize' : 'リセットサイズ', + 'image.align' : '配置', + 'image.defaultAlign' : 'デフォルト', + 'image.leftAlign' : '左揃え', + 'image.rightAlign' : '右揃え', + 'image.imgTitle' : '画像の説明', + 'image.upload' : 'ブラウズ...', + 'image.viewServer' : 'イメージスペース', + 'multiimage.uploadDesc' : 'ユーザーが<%= uploadLimit%>画像を同時にアップロードできますが、画像の容量は<%= sizeLimit%>を超えることができません', + 'multiimage.startUpload' : 'アップロード', + 'multiimage.clearAll' : 'すべてクリア', + 'multiimage.insertAll' : 'すべて挿入', + 'multiimage.queueLimitExceeded' : 'ファイルの数が上限を超えています。', + 'multiimage.fileExceedsSizeLimit' : 'ファイルサイズが制限を超えています。', + 'multiimage.zeroByteFile' : '空のファイルをアップロードできません。 ', + 'multiimage.invalidFiletype' : 'ファイル形式は正しくありません。', + 'multiimage.unknownError' : 'エラー、アップロードできません。', + 'multiimage.pending' : 'アップロード待ち', + 'multiimage.uploadError' : 'アップロード失敗', + 'filemanager.emptyFolder' : '空のフォルダ', + 'filemanager.moveup' : '前のフォルダに移動', + 'filemanager.viewType' : '表示モード:', + 'filemanager.viewImage' : 'サムネイル', + 'filemanager.listImage' : '詳細', + 'filemanager.orderType' : '並べ替え:', + 'filemanager.fileName' : 'ネーム', + 'filemanager.fileSize' : 'サイズ', + 'filemanager.fileType' : 'タイプ', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'ファイルの説明', + 'insertfile.upload' : 'アップロード', + 'insertfile.viewServer' : 'ファイルスペース', + 'table.cells' : 'セル番号', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : 'サイズ', + 'table.width' : '幅', + 'table.height' : '高さ', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'テーブルスペース', + 'table.padding' : 'パッディング', + 'table.spacing' : 'スペース', + 'table.align' : '配置', + 'table.textAlign' : '水平配置', + 'table.verticalAlign' : '垂直配置', + 'table.alignDefault' : 'デフォルト', + 'table.alignLeft' : '左揃え', + 'table.alignCenter' : '中央揃え', + 'table.alignRight' : '右揃え', + 'table.alignTop' : 'トップ', + 'table.alignMiddle' : 'ミドル', + 'table.alignBottom' : 'ボトム', + 'table.alignBaseline' : 'ベースライン', + 'table.border' : 'ボーダー', + 'table.borderWidth' : 'ボーダー', + 'table.borderColor' : 'カラー', + 'table.backgroundColor' : '背景色', + 'map.address' : 'アドレス: ', + 'map.search' : '検索', + 'baidumap.address' : 'アドレス: ', + 'baidumap.search' : '検索', + 'baidumap.insertDynamicMap' : 'ダイナミックマップの挿入', + 'anchor.name' : 'アンカー名', + + 'formatblock.formatBlock' : { + h1 : '見出し1', + h2 : '見出し2', + h3 : '見出し3', + h4 : '見出し4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '明朝体', + 'NSimSun' : '新宋体', + 'FangSong_GB2312' : '仿宋_GB2312', + 'KaiTi_GB2312' : '楷書体_GB2312', + 'SimHei' : 'ゴチック体', + 'Microsoft YaHei' : 'Msyh', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '行間1倍'}, + {'1.5' : '行間1.5倍'}, + {'2' : '行間2倍'}, + {'2.5' : '行間2.5倍'}, + {'3' : '行間3倍'} + ], + 'template.selectTemplate' : 'オプションテンプレート', + 'template.replaceContent' : '現在のコンテンツを置き換える', + 'template.fileList' : { + '1.html' : 'イメージとテキスト', + '2.html' : '表', + '3.html' : '段落番号' + } +}, 'ja-JP'); + +KindEditor.options.langType = 'ja-JP'; \ No newline at end of file diff --git a/addons/nkeditor/assets/lang/ko.js b/addons/nkeditor/assets/lang/ko.js new file mode 100644 index 0000000..bf5eb22 --- /dev/null +++ b/addons/nkeditor/assets/lang/ko.js @@ -0,0 +1,246 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Composite <ukjinplant@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '소스', + preview : '미리보기', + undo : '작업취소(Ctrl+Z)', + redo : '작업재개(Ctrl+Y)', + cut : '잘라내기(Ctrl+X)', + copy : '복사(Ctrl+C)', + paste : '붙여넣기(Ctrl+V)', + plainpaste : '일반 텍스트로 붙여넣기', + wordpaste : '워드 문서로 붙여넣기', + selectall : '전체 선택', + justifyleft : '왼쪽 정렬', + justifycenter : '가운데 정렬', + justifyright : '오른쪽 정렬', + justifyfull : '양쪽 정렬', + insertorderedlist : '순서 목록', + insertunorderedlist : '비순서 목록', + indent : '들여쓰기', + outdent : '내어쓰기', + subscript : '아랫첨자', + superscript : '윗첨자', + formatblock : '문단 형식', + fontname : '글꼴', + fontsize : '글자 크기', + forecolor : '글자색', + hilitecolor : '강조색', + bold : '굵게(Ctrl+B)', + italic : '이텔릭(Ctrl+I)', + underline : '빝줄(Ctrl+U)', + strikethrough : '취소선', + removeformat : '형식 제거', + image : '이미지 추가', + multiimage : '여러 이미지 추가', + flash : '플래시 추가', + media : '미디어 추가', + table : '표', + tablecell : '열', + hr : '구분선 추가', + emoticons : '이모티콘 추가', + link : '링크', + unlink : '링크 제거', + fullscreen : '전체 화면 모드', + about : '이 에디터는...', + print : '인쇄', + filemanager : '파일 관리자', + code : '코드 추가', + map : '구글 맵 추가', + baidumap : '바이두 맵 추가', + lineheight : '행 간격', + clearhtml : 'HTML 코드 정리', + pagebreak : '페이지 구분 추가', + quickformat : '빠른 형식', + insertfile : '파일 추가', + template : '템플릿 추가', + anchor : '책갈피', + yes : '확인', + no : '취소', + close : '닫기', + editImage : '이미지 속성', + deleteImage : '이미지 삭제', + editFlash : '플래시 속성', + deleteFlash : '플래시 삭제', + editMedia : '미디어 속성', + deleteMedia : '미디어 삭제', + editLink : '링크 속성', + deleteLink : '링크 삭제', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : '표 속성', + tablecellprop : '열 속성', + tableinsert : '표 추가', + tabledelete : '표 삭제', + tablecolinsertleft : '왼쪽으로 열 추가', + tablecolinsertright : '오른쪽으로 열 추가', + tablerowinsertabove : '위쪽으로 열 추가', + tablerowinsertbelow : '아래쪽으로 열 추가', + tablerowmerge : '아래로 병합', + tablecolmerge : '오른쪽으로 병합', + tablerowsplit : '행 나누기', + tablecolsplit : '열 나누기', + tablecoldelete : '열 삭제', + tablerowdelete : '행 삭제', + noColor : '기본색', + pleaseSelectFile : '파일 선택', + invalidImg : "올바른 주소를 입력하세요.\njpg,gif,bmp,png 형식이 가능합니다.", + invalidMedia : "올바른 주소를 입력하세요.\nswf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb 형식이 가능합니다.", + invalidWidth : "넓이 값은 숫자여야 합니다.", + invalidHeight : "높이 값은 숫자여야 합니다.", + invalidBorder : "굵기 값은 숫자여야 합니다.", + invalidUrl : "올바른 주소를 입력하세요.", + invalidRows : '올바른 행이 아닙니다.', + invalidCols : '올바른 열이 아닙니다.', + invalidPadding : '안쪽 여백 값은 숫자여야 합니다.', + invalidSpacing : '간격 길이 값은 숫자여야 합니다.', + invalidJson : '올바른 JSON 형식이 아닙니다.', + uploadSuccess : '업로드가 완료되었습니다.', + cutError : '브라우저가 잘라내기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + copyError : '브라우저가 복사 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + pasteError : '브라우저가 붙여넣기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + ajaxLoading : '불러오는 중 ...', + uploadLoading : '업로드 중 ...', + uploadError : '업로드 오류', + 'plainpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 텍스트를 붙여넣으세요.', + 'wordpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 워드 텍스트를 붙여넣으세요.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : '주소', + 'link.linkType' : '창', + 'link.newWindow' : '새 창', + 'link.selfWindow' : '현재 창', + 'flash.url' : '주소', + 'flash.width' : '넓이', + 'flash.height' : '높이', + 'flash.upload' : '업로드', + 'flash.viewServer' : '찾아보기', + 'media.url' : '주소', + 'media.width' : '넓이', + 'media.height' : '높이', + 'media.autostart' : '자동 시작', + 'media.upload' : '업로드', + 'media.viewServer' : '찾아보기', + 'image.remoteImage' : '외부 이미지', + 'image.localImage' : '내부 이미지', + 'image.remoteUrl' : '주소', + 'image.localUrl' : '파일', + 'image.size' : '크기', + 'image.width' : '넓이', + 'image.height' : '높이', + 'image.resetSize' : '기본 크기로', + 'image.align' : '정렬', + 'image.defaultAlign' : '기본', + 'image.leftAlign' : '왼쪽', + 'image.rightAlign' : '오른쪽', + 'image.imgTitle' : '제목', + 'image.upload' : '찾아보기', + 'image.viewServer' : '찾아보기', + 'multiimage.uploadDesc' : '최대 이미지 개수: <%=uploadLimit%>개, 개당 이미지 크기: <%=sizeLimit%>', + 'multiimage.startUpload' : '업로드 시작', + 'multiimage.clearAll' : '모두 삭제', + 'multiimage.insertAll' : '모두 삽입', + 'multiimage.queueLimitExceeded' : '업로드 개수가 초과되었습니다.', + 'multiimage.fileExceedsSizeLimit' : '업로드 크기가 초과되었습니다.', + 'multiimage.zeroByteFile' : '파일 크기가 없습니다.', + 'multiimage.invalidFiletype' : '올바른 이미지가 아닙니다.', + 'multiimage.unknownError' : '알 수 없는 업로드 오류가 발생하였습니다.', + 'multiimage.pending' : '처리 중 ...', + 'multiimage.uploadError' : '업로드 오류', + 'filemanager.emptyFolder' : '빈 폴더', + 'filemanager.moveup' : '위로', + 'filemanager.viewType' : '보기 방식: ', + 'filemanager.viewImage' : '미리 보기', + 'filemanager.listImage' : '목록', + 'filemanager.orderType' : '정렬 방식: ', + 'filemanager.fileName' : '이름별', + 'filemanager.fileSize' : '크기별', + 'filemanager.fileType' : '종류별', + 'insertfile.url' : '주소', + 'insertfile.title' : '제목', + 'insertfile.upload' : '업로드', + 'insertfile.viewServer' : '찾아보기', + 'table.cells' : '열', + 'table.rows' : '행', + 'table.cols' : '열', + 'table.size' : '표 크기', + 'table.width' : '넓이', + 'table.height' : '높이', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '간격', + 'table.padding' : '안쪽여백', + 'table.spacing' : '간격', + 'table.align' : '정렬', + 'table.textAlign' : '수직', + 'table.verticalAlign' : '수평', + 'table.alignDefault' : '기본', + 'table.alignLeft' : '왼쪽', + 'table.alignCenter' : '가운데', + 'table.alignRight' : '오른쪽', + 'table.alignTop' : '위쪽', + 'table.alignMiddle' : '중간', + 'table.alignBottom' : '아래쪽', + 'table.alignBaseline' : '글자기준', + 'table.border' : '테두리', + 'table.borderWidth' : '크기', + 'table.borderColor' : '색상', + 'table.backgroundColor' : '배경', + 'map.address' : '주소: ', + 'map.search' : '검색', + 'baidumap.address' : '주소: ', + 'baidumap.search' : '검색', + 'baidumap.insertDynamicMap' : '동적 지도', + 'anchor.name' : '책갈피명', + 'formatblock.formatBlock' : { + h1 : '제목 1', + h2 : '제목 2', + h3 : '제목 3', + h4 : '제목 4', + p : '본문' + }, + 'fontname.fontName' : { + 'Gulim' : '굴림', + 'Dotum' : '돋움', + 'Batang' : '바탕', + 'Gungsuh' : '궁서', + 'Malgun Gothic' : '맑은 고딕', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '행간 1'}, + {'1.5' : '행간 1.5'}, + {'2' : '행간 2'}, + {'2.5' : '행간 2.5'}, + {'3' : '행간 3'} + ], + 'template.selectTemplate' : '템플릿', + 'template.replaceContent' : '내용 바꾸기', + 'template.fileList' : { + '1.html' : '이미지와 텍스트', + '2.html' : '표', + '3.html' : '목록' + } +}, 'ko'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ko'; diff --git a/addons/nkeditor/assets/lang/ru.js b/addons/nkeditor/assets/lang/ru.js new file mode 100644 index 0000000..dda10bf --- /dev/null +++ b/addons/nkeditor/assets/lang/ru.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Translated to Russian by Valery Votintsev (http://codersclub.org/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Отмена(Ctrl+Z)', + redo : 'Повтор(Ctrl+Y)', + cut : 'Вырезать(Ctrl+X)', + copy : 'Копировать(Ctrl+C)', + paste : 'Вставить(Ctrl+V)', + plainpaste : 'Вставить как простой текст', + wordpaste : 'Вставить из Word', + selectall : 'Выбрать все', + justifyleft : 'Выравнивание влево', + justifycenter : 'Выравнивание по центру', + justifyright : 'Выравнивание вправо', + justifyfull : 'Выравнивание по обеим сторонам', + insertorderedlist : 'Нумерованый список', + insertunorderedlist : 'Ненумерованый список', + indent : 'Добавить отступ', + outdent : 'Убрать отступ', + subscript : 'Надстрочный', + superscript : 'Подстрочный', + formatblock : 'Формат параграфа', + fontname : 'Шрифт', + fontsize : 'Размер', + forecolor : 'Цвет текста', + hilitecolor : 'Цвет фона', + bold : 'Жирный(Ctrl+B)', + italic : 'Наклонный(Ctrl+I)', + underline : 'Подчёркнутый(Ctrl+U)', + strikethrough : 'Перечёркнутый', + removeformat : 'Удалить формат', + image : 'Изображение', + multiimage : 'Мульти-загрузка', + flash : 'Flash', + media : 'Встроенные данные', + table : 'Таблица', + tablecell : 'Ячейка', + hr : 'Горизонтальный разделитель', + emoticons : 'Смайл', + link : 'Ссылка', + unlink : 'Убрать ссылку', + fullscreen : 'На весь экран', + about : 'О программе', + print : 'Печать', + filemanager : 'Файлы', + code : 'Код', + map : 'Карта Google', + baidumap : 'Карта Baidu', + lineheight : 'Межстрочный интервал', + clearhtml : 'Очистить HTML код', + pagebreak : 'Разрыв страницы', + quickformat : 'Быстрый формат', + insertfile : 'Вставить файл', + template : 'Вставить шаблон', + anchor : 'Якорь', + yes : 'OK', + no : 'Отмена', + close : 'Закрыть', + editImage : 'Свойства изображения', + deleteImage : 'Удалить изображение', + editFlash : 'Свойства Flash', + deleteFlash : 'Удалить Flash', + editMedia : 'Свойства Media', + deleteMedia : 'Удалить Media', + editLink : 'Свойства ссылки', + deleteLink : 'Удалить ссылку', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Свойства таблицы', + tablecellprop : 'Свойства ячейки', + tableinsert : 'Вставить таблицу', + tabledelete : 'Удалить таблицу', + tablecolinsertleft : 'Добавить столбец слева', + tablecolinsertright : 'Добавить столбец справа', + tablerowinsertabove : 'Добавить строку выше', + tablerowinsertbelow : 'Добавить строку ниже', + tablerowmerge : 'Объединить вниз', + tablecolmerge : 'Объединить вправо', + tablerowsplit : 'Разделить строку', + tablecolsplit : 'Разделить столбец', + tablecoldelete : 'Удалить столбец', + tablerowdelete : 'Удалить строку', + noColor : 'По умолчанию', + pleaseSelectFile : 'Выберите файл.', + invalidImg : "Укажите корректный URL изображения.\nРазрешённые форматы: jpg,gif,bmp,png", + invalidMedia : "Укажите корректный тип медиа-объекта.\nРазрешённые типы: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "Ширина должна быть числом.", + invalidHeight : "Высота должна быть числом.", + invalidBorder : "Ширина рамки должна быть числом.", + invalidUrl : "Укажите корректный URL.", + invalidRows : 'Неверные строки.', + invalidCols : 'Неверные столбцы.', + invalidPadding : 'padding должен быть числом.', + invalidSpacing : 'spacing должен быть числом.', + invalidJson : 'Неверная JSON строка.', + uploadSuccess : 'Загрузка завершена.', + cutError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+X).', + copyError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+C).', + pasteError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+V).', + ajaxLoading : 'Загрузка ...', + uploadLoading : 'Загрузка ...', + uploadError : 'Сбой загрузки', + 'plainpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'wordpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'code.pleaseInput' : 'Введите код.', + 'link.url' : 'URL', + 'link.linkType' : 'Открывать ссылку', + 'link.newWindow' : 'в новом окне', + 'link.selfWindow' : 'в том же окне', + 'flash.url' : 'URL', + 'flash.width' : 'Ширина', + 'flash.height' : 'Высота', + 'flash.upload' : 'Загрузить', + 'flash.viewServer' : 'Выбрать', + 'media.url' : 'URL', + 'media.width' : 'Ширина', + 'media.height' : 'Высота', + 'media.autostart' : 'Автостарт', + 'media.upload' : 'Загрузить', + 'media.viewServer' : 'Выбрать', + 'image.remoteImage' : 'Вставить URL изображения', + 'image.localImage' : 'Загрузить', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'Файл', + 'image.size' : 'Размер', + 'image.width' : 'Ширина', + 'image.height' : 'Высота', + 'image.resetSize' : 'Сбросить размеры', + 'image.align' : 'Выравнивание', + 'image.defaultAlign' : 'По умолчанию', + 'image.leftAlign' : 'Влево', + 'image.rightAlign' : 'Вправо', + 'image.imgTitle' : 'Название', + 'image.upload' : 'Загрузить', + 'image.viewServer' : 'Выбрать', + 'multiimage.uploadDesc' : 'Максимальное кол-во изображений: <%=uploadLimit%>, Максимальный размер одного изображения: <%=sizeLimit%>', + 'multiimage.startUpload' : 'Начать загрузку', + 'multiimage.clearAll' : 'Очистить все', + 'multiimage.insertAll' : 'Вставить все', + 'multiimage.queueLimitExceeded' : 'Превышен лимит очереди.', + 'multiimage.fileExceedsSizeLimit' : 'Превышен максимальный размер файла.', + 'multiimage.zeroByteFile' : 'Файл нулевой длины.', + 'multiimage.invalidFiletype' : 'Недопустимый тип файла.', + 'multiimage.unknownError' : 'Непредвиденная ошибка загрузки.', + 'multiimage.pending' : 'Ожидает ...', + 'multiimage.uploadError' : 'Ошибка загрузки', + 'filemanager.emptyFolder' : 'Папка пуста', + 'filemanager.moveup' : 'Наверх', + 'filemanager.viewType' : 'Тип показа: ', + 'filemanager.viewImage' : 'Превьюшки', + 'filemanager.listImage' : 'Список', + 'filemanager.orderType' : 'Сортировка: ', + 'filemanager.fileName' : 'По имени', + 'filemanager.fileSize' : 'По размеру', + 'filemanager.fileType' : 'По типу', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Название', + 'insertfile.upload' : 'Загрузить', + 'insertfile.viewServer' : 'Выбрать', + 'table.cells' : 'Ячейки', + 'table.rows' : 'Строки', + 'table.cols' : 'Столбцы', + 'table.size' : 'Размеры', + 'table.width' : 'Ширина', + 'table.height' : 'Высота', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Выравнивание', + 'table.textAlign' : 'По горизонтали', + 'table.verticalAlign' : 'По вертикали', + 'table.alignDefault' : 'По умолчанию', + 'table.alignLeft' : 'Влево', + 'table.alignCenter' : 'По центру', + 'table.alignRight' : 'Вправо', + 'table.alignTop' : 'Вверх', + 'table.alignMiddle' : 'Посередине', + 'table.alignBottom' : 'Вниз', + 'table.alignBaseline' : 'По базовой линии', + 'table.border' : 'Рамка', + 'table.borderWidth' : 'Ширина', + 'table.borderColor' : 'Цвет', + 'table.backgroundColor' : 'Цвет фона', + 'map.address' : 'Адрес: ', + 'map.search' : 'Поиск', + 'baidumap.address' : 'Адрес: ', + 'baidumap.search' : 'Поиск', + 'baidumap.insertDynamicMap' : 'Динамическая карта', + 'anchor.name' : 'Имя якоря', + 'formatblock.formatBlock' : { + h1 : 'Заголовок 1', + h2 : 'Заголовок 2', + h3 : 'Заголовок 3', + h4 : 'Заголовок 4', + p : 'Обычный текст' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '1'}, + {'1.5' : '1.5'}, + {'2' : '2'}, + {'2.5' : '2.5'}, + {'3' : '3'} + ], + 'template.selectTemplate' : 'Шаблон', + 'template.replaceContent' : 'Заменить текущий шаблон', + 'template.fileList' : { + '1.html' : 'Текст и изображения', + '2.html' : 'Таблица', + '3.html' : 'Список' + } +}, 'en'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ru'; diff --git a/addons/nkeditor/assets/lang/zh-CN.js b/addons/nkeditor/assets/lang/zh-CN.js new file mode 100644 index 0000000..405e2f4 --- /dev/null +++ b/addons/nkeditor/assets/lang/zh-CN.js @@ -0,0 +1,267 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTML代码', + preview : '预览', + undo : '后退(Ctrl+Z)', + redo : '前进(Ctrl+Y)', + cut : '剪切(Ctrl+X)', + copy : '复制(Ctrl+C)', + paste : '粘贴(Ctrl+V)', + plainpaste : '粘贴为无格式文本', + wordpaste : '从Word粘贴', + selectall : '全选(Ctrl+A)', + justifyleft : '左对齐', + justifycenter : '居中', + justifyright : '右对齐', + justifyfull : '两端对齐', + insertorderedlist : '编号', + insertunorderedlist : '项目符号', + indent : '增加缩进', + outdent : '减少缩进', + subscript : '下标', + superscript : '上标', + formatblock : '段落', + fontname : '字体', + fontsize : '文字大小', + forecolor : '文字颜色', + hilitecolor : '文字背景', + bold : '粗体(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下划线(Ctrl+U)', + strikethrough : '删除线', + removeformat : '删除格式', + image : '图片', + multiimage : '批量图片上传', + graft : '涂鸦', + flash : 'Flash', + media : '视音频', + table : '表格', + tablecell : '单元格', + hr : '插入横线', + emoticons : '插入表情', + link : '超级链接', + unlink : '取消超级链接', + fullscreen : '全屏显示', + about : '关于', + print : '打印(Ctrl+P)', + filemanager : '文件空间', + code : '插入程序代码', + quote : '插入引用', + map : 'Google地图', + baidumap : '百度地图', + lineheight : '行距', + clearhtml : '清理HTML代码', + pagebreak : '插入分页符', + quickformat : '一键排版', + insertfile : '插入文件', + template : '插入模板', + anchor : '锚点', + yes : '确定', + no : '取消', + close : '关闭', + editImage : '图片属性', + deleteImage : '删除图片', + editFlash : 'Flash属性', + deleteFlash : '删除Flash', + editMedia : '视音频属性', + deleteMedia : '删除视音频', + editLink : '超级链接属性', + deleteLink : '取消超级链接', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格属性', + tablecellprop : '单元格属性', + tableinsert : '插入表格', + tabledelete : '删除表格', + tablecolinsertleft : '左侧插入列', + tablecolinsertright : '右侧插入列', + tablerowinsertabove : '上方插入行', + tablerowinsertbelow : '下方插入行', + tablerowmerge : '向下合并单元格', + tablecolmerge : '向右合并单元格', + tablerowsplit : '拆分行', + tablecolsplit : '拆分列', + tablecoldelete : '删除列', + tablerowdelete : '删除行', + noColor : '无颜色', + pleaseSelectFile : '请选择文件。', + invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。", + invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "宽度必须为数字。", + invalidHeight : "高度必须为数字。", + invalidBorder : "边框必须为数字。", + invalidUrl : "请输入有效的URL地址。", + invalidRows : '行数为必选项,只允许输入大于0的数字。', + invalidCols : '列数为必选项,只允许输入大于0的数字。', + invalidPadding : '边距必须为数字。', + invalidSpacing : '间距必须为数字。', + invalidJson : '服务器发生故障。', + uploadSuccess : '上传成功。', + cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。', + copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。', + pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。', + ajaxLoading : '加载中,请稍候 ...', + uploadLoading : '上传中,请稍候 ...', + uploadError : '上传错误', + + 'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'code.pleaseInput' : '请输入程序代码。', + 'link.url' : 'URL', + 'link.linkType' : '打开类型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '当前窗口', + 'flash.url' : 'URL', + 'flash.width' : '宽度', + 'flash.height' : '高度', + 'flash.upload' : '上传', + 'flash.viewServer' : '文件空间', + 'media.url' : 'URL', + 'media.width' : '宽度', + 'media.height' : '高度', + 'media.autostart' : '自动播放', + 'media.upload' : '上传', + 'media.viewServer' : '文件空间', + 'image.remoteImage' : '网络图片', + 'image.localImage' : '本地上传', + 'image.remoteUrl' : '图片地址', + 'image.localUrl' : '上传文件', + 'image.size' : '图片大小', + 'image.width' : '宽', + 'image.height' : '高', + 'image.resetSize' : '重置大小', + 'image.align' : '对齐方式', + 'image.defaultAlign' : '默认方式', + 'image.leftAlign' : '左对齐', + 'image.rightAlign' : '右对齐', + 'image.imgTitle' : '图片说明', + 'image.upload' : '浏览...', + 'image.viewServer' : '图片空间', + + 'multiimage.title' : '多图上传', + 'multiimage.uploadDesc' : '共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.', + 'multiimage.startUpload' : '开始上传', + 'multiimage.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'multiimage.noSearchUrl' : '无法进行图片搜索,请先配置 imageSearchJson.', + 'multiimage.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'multiimage.closeText' : '关闭对话框', + 'multiimage.confirmBtnText' : '确定', + 'multiimage.cancelBtnText' : '取消', + 'multiimage.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'multiimage.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'multiimage.localUpload' : '本地上传', + 'multiimage.fileServer' : '文件服务器', + 'multiimage.imgSearch' : '图片搜索', + 'multiimage.selectFile' : '点击选择图片', + 'multiimage.continueAdd' : '继续添加', + 'multiimage.searchBtn' : '搜索一下', + 'multiimage.searchPlaceholder' : '请输入搜索关键词', + 'multiimage.searchClear' : '清空搜索', + 'multiimage.noFileAdded' : '请至少添加一个文件!', + 'multiimage.uploading' : '正在上传', + 'multiimage.fileNotUpload' : '您还有文件没有上传!', + 'multiimage.uploadLimit' : '您本次最多上传 <%=uploadLimit%> 个文件.', + 'multiimage.sizeLimit' : '文件大小不能超过 <%=sizeLimit%> KB.', + 'multiimage.invalidExt' : '非法的文件后缀 <%=invalidExt%>.', + 'multiimage.remove' : '删除', + 'multiimage.rotateRight' : '向右旋转', + 'multiimage.rotateLeft' : '向左旋转', + 'multiimage.uploadFail' : '发生异常,上传失败!', + 'multiimage.noFileSelected' : '请至少选择一个文件或一张图片.', + + 'filemanager.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'filemanager.title' : '文件服务器', + 'filemanager.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'filemanager.closeText' : '关闭对话框', + 'filemanager.confirmBtnText' : '确定', + 'filemanager.cancelBtnText' : '取消', + 'filemanager.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'filemanager.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'filemanager.fileType' : '类型', + + 'graft.btnText' : '保存并插入涂鸦', + 'graft.uploadSuccess' : '涂鸦上传成功', + 'graft.uploadFaild' : '涂鸦上传失败', + 'graft.empty' : '您没有在画布上绘制任何图像', + + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件说明', + 'insertfile.upload' : '上传', + 'insertfile.viewServer' : '文件空间', + 'table.cells' : '单元格数', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : '大小', + 'table.width' : '宽度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '边距间距', + 'table.padding' : '边距', + 'table.spacing' : '间距', + 'table.align' : '对齐方式', + 'table.textAlign' : '水平对齐', + 'table.verticalAlign' : '垂直对齐', + 'table.alignDefault' : '默认', + 'table.alignLeft' : '左对齐', + 'table.alignCenter' : '居中', + 'table.alignRight' : '右对齐', + 'table.alignTop' : '顶部', + 'table.alignMiddle' : '中部', + 'table.alignBottom' : '底部', + 'table.alignBaseline' : '基线', + 'table.border' : '边框', + 'table.borderWidth' : '宽度', + 'table.borderColor' : '颜色', + 'table.backgroundColor' : '背景颜色', + 'map.address' : '地址: ', + 'map.search' : '搜索', + 'baidumap.address' : '地址: ', + 'baidumap.search' : '搜索', + 'baidumap.insertDynamicMap' : '插入动态地图', + 'anchor.name' : '锚点名称', + 'formatblock.formatBlock' : { + h1 : '标题 1', + h2 : '标题 2', + h3 : '标题 3', + h4 : '标题 4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '宋体', + 'NSimSun' : '新宋体', + 'FangSong' : '仿宋', + 'KaiTi' : '楷体', + 'SimHei' : '黑体', + 'Microsoft YaHei' : '微软雅黑', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可选模板', + 'template.replaceContent' : '替换当前内容', + 'template.fileList' : { + '1.html' : '图片和文字', + '2.html' : '表格', + '3.html' : '项目编号' + } +}, 'zh-CN'); +KindEditor.options.langType = 'zh-CN'; diff --git a/addons/nkeditor/assets/lang/zh-TW.js b/addons/nkeditor/assets/lang/zh-TW.js new file mode 100644 index 0000000..4946898 --- /dev/null +++ b/addons/nkeditor/assets/lang/zh-TW.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '原始碼', + preview : '預覽', + undo : '復原(Ctrl+Z)', + redo : '重複(Ctrl+Y)', + cut : '剪下(Ctrl+X)', + copy : '複製(Ctrl+C)', + paste : '貼上(Ctrl+V)', + plainpaste : '貼為純文字格式', + wordpaste : '自Word貼上', + selectall : '全選(Ctrl+A)', + justifyleft : '靠左對齊', + justifycenter : '置中', + justifyright : '靠右對齊', + justifyfull : '左右對齊', + insertorderedlist : '編號清單', + insertunorderedlist : '項目清單', + indent : '增加縮排', + outdent : '減少縮排', + subscript : '下標', + superscript : '上標', + formatblock : '標題', + fontname : '字體', + fontsize : '文字大小', + forecolor : '文字顏色', + hilitecolor : '背景顏色', + bold : '粗體(Ctrl+B)', + italic : '斜體(Ctrl+I)', + underline : '底線(Ctrl+U)', + strikethrough : '刪除線', + removeformat : '清除格式', + image : '影像', + multiimage : '批量影像上傳', + flash : 'Flash', + media : '多媒體', + table : '表格', + tablecell : '儲存格', + hr : '插入水平線', + emoticons : '插入表情', + link : '超連結', + unlink : '移除超連結', + fullscreen : '最大化', + about : '關於', + print : '列印(Ctrl+P)', + filemanager : '瀏覽伺服器', + code : '插入程式代碼', + map : 'Google地圖', + baidumap : 'Baidu地圖', + lineheight : '行距', + clearhtml : '清理HTML代碼', + pagebreak : '插入分頁符號', + quickformat : '快速排版', + insertfile : '插入文件', + template : '插入樣板', + anchor : '錨點', + yes : '確定', + no : '取消', + close : '關閉', + editImage : '影像屬性', + deleteImage : '刪除影像', + editFlash : 'Flash屬性', + deleteFlash : '删除Flash', + editMedia : '多媒體屬性', + deleteMedia : '删除多媒體', + editLink : '超連結屬性', + deleteLink : '移除超連結', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格屬性', + tablecellprop : '儲存格屬性', + tableinsert : '插入表格', + tabledelete : '刪除表格', + tablecolinsertleft : '向左插入列', + tablecolinsertright : '向右插入列', + tablerowinsertabove : '向上插入欄', + tablerowinsertbelow : '下方插入欄', + tablerowmerge : '向下合併單元格', + tablecolmerge : '向右合併單元格', + tablerowsplit : '分割欄', + tablecolsplit : '分割列', + tablecoldelete : '删除列', + tablerowdelete : '删除欄', + noColor : '自動', + pleaseSelectFile : '請選擇文件。', + invalidImg : "請輸入有效的URL。\n只允許jpg,gif,bmp,png格式。", + invalidMedia : "請輸入有效的URL。\n只允許swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "寬度必須是數字。", + invalidHeight : "高度必須是數字。", + invalidBorder : "邊框必須是數字。", + invalidUrl : "請輸入有效的URL。", + invalidRows : '欄數是必須輸入項目,只允許輸入大於0的數字。', + invalidCols : '列數是必須輸入項目,只允許輸入大於0的數字。', + invalidPadding : '內距必須是數字。', + invalidSpacing : '間距必須是數字。', + invalidJson : '伺服器發生故障。', + uploadSuccess : '上傳成功。', + cutError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+X)完成。', + copyError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+C)完成。', + pasteError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+V)完成。', + ajaxLoading : '加載中,請稍候 ...', + uploadLoading : '上傳中,請稍候 ...', + uploadError : '上傳錯誤', + 'plainpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'wordpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : '打開類型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '本頁窗口', + 'flash.url' : 'URL', + 'flash.width' : '寬度', + 'flash.height' : '高度', + 'flash.upload' : '上傳', + 'flash.viewServer' : '瀏覽', + 'media.url' : 'URL', + 'media.width' : '寬度', + 'media.height' : '高度', + 'media.autostart' : '自動播放', + 'media.upload' : '上傳', + 'media.viewServer' : '瀏覽', + 'image.remoteImage' : '網絡影像', + 'image.localImage' : '上傳影像', + 'image.remoteUrl' : '影像URL', + 'image.localUrl' : '影像URL', + 'image.size' : '影像大小', + 'image.width' : '寬度', + 'image.height' : '高度', + 'image.resetSize' : '原始大小', + 'image.align' : '對齊方式', + 'image.defaultAlign' : '未設定', + 'image.leftAlign' : '向左對齊', + 'image.rightAlign' : '向右對齊', + 'image.imgTitle' : '影像說明', + 'image.upload' : '瀏覽...', + 'image.viewServer' : '瀏覽...', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : '空文件夾', + 'filemanager.moveup' : '至上一級文件夾', + 'filemanager.viewType' : '顯示方式:', + 'filemanager.viewImage' : '縮略圖', + 'filemanager.listImage' : '詳細信息', + 'filemanager.orderType' : '排序方式:', + 'filemanager.fileName' : '名稱', + 'filemanager.fileSize' : '大小', + 'filemanager.fileType' : '類型', + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件說明', + 'insertfile.upload' : '上傳', + 'insertfile.viewServer' : '瀏覽', + 'table.cells' : '儲存格數', + 'table.rows' : '欄數', + 'table.cols' : '列數', + 'table.size' : '表格大小', + 'table.width' : '寬度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '內距間距', + 'table.padding' : '內距', + 'table.spacing' : '間距', + 'table.align' : '對齊方式', + 'table.textAlign' : '水平對齊', + 'table.verticalAlign' : '垂直對齊', + 'table.alignDefault' : '未設定', + 'table.alignLeft' : '向左對齊', + 'table.alignCenter' : '置中', + 'table.alignRight' : '向右對齊', + 'table.alignTop' : '靠上', + 'table.alignMiddle' : '置中', + 'table.alignBottom' : '靠下', + 'table.alignBaseline' : '基線', + 'table.border' : '表格邊框', + 'table.borderWidth' : '邊框', + 'table.borderColor' : '顏色', + 'table.backgroundColor' : '背景顏色', + 'map.address' : '住所: ', + 'map.search' : '尋找', + 'baidumap.address' : '住所: ', + 'baidumap.search' : '尋找', + 'baidumap.insertDynamicMap' : '插入動態地圖', + 'anchor.name' : '錨點名稱', + 'formatblock.formatBlock' : { + h1 : '標題 1', + h2 : '標題 2', + h3 : '標題 3', + h4 : '標題 4', + p : '一般' + }, + 'fontname.fontName' : { + 'MingLiU' : '細明體', + 'PMingLiU' : '新細明體', + 'DFKai-SB' : '標楷體', + 'SimSun' : '宋體', + 'NSimSun' : '新宋體', + 'FangSong' : '仿宋體', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可選樣板', + 'template.replaceContent' : '取代當前內容', + 'template.fileList' : { + '1.html' : '影像和文字', + '2.html' : '表格', + '3.html' : '项目清單' + } +}, 'zh-TW'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'zh-TW'; \ No newline at end of file diff --git a/addons/nkeditor/assets/nkeditor.js b/addons/nkeditor/assets/nkeditor.js new file mode 100644 index 0000000..911fc6f --- /dev/null +++ b/addons/nkeditor/assets/nkeditor.js @@ -0,0 +1,9532 @@ +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2018 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @website http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + * @version 5.0.3 (2018-10-25) + *******************************************************************************/ +(function (window, undefined) { + if (window.KindEditor) { + return; + } + + + if (!window.console) { + window.console = {}; + } + if (!console.log) { + console.log = function () { + }; + } + var _VERSION = '5.0.3 (2018-10-25)', + _ua = navigator.userAgent.toLowerCase(), + _IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1, + _NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1, + _GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1, + _WEBKIT = _ua.indexOf('applewebkit') > -1, + _OPERA = _ua.indexOf('opera') > -1, + _MOBILE = _ua.indexOf('mobile') > -1, + _IOS = /ipad|iphone|ipod/.test(_ua), + _QUIRKS = document.compatMode != 'CSS1Compat', + _IERANGE = !window.getSelection, + _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua), + _V = _matches ? _matches[1] : '0', + _TIME = new Date().getTime(); + + function _isArray(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Array]'; + } + + function _isFunction(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Function]'; + } + + function _inArray(val, arr) { + for (var i = 0, len = arr.length; i < len; i++) { + if (val === arr[i]) { + return i; + } + } + return -1; + } + + function _each(obj, fn) { + if (_isArray(obj)) { + for (var i = 0, len = obj.length; i < len; i++) { + if (fn.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (fn.call(obj[key], key, obj[key]) === false) { + break; + } + } + } + } + } + + function _trim(str) { + return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ''); + } + + function _inString(val, str, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + return (delimiter + str + delimiter).indexOf(delimiter + val + delimiter) >= 0; + } + + function _addUnit(val, unit) { + unit = unit || 'px'; + return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val; + } + + function _removeUnit(val) { + var match; + return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0; + } + + function _escape(val) { + return val.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); + } + + function _unescape(val) { + return val.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&'); + } + + function _toCamel(str) { + var arr = str.split('-'); + str = ''; + _each(arr, function (key, val) { + str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val; + }); + return str; + } + + function _toHex(val) { + function hex(d) { + var s = parseInt(d, 10).toString(16).toUpperCase(); + return s.length > 1 ? s : '0' + s; + } + + return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig, + function ($0, $1, $2, $3) { + return '#' + hex($1) + hex($2) + hex($3); + } + ); + } + + function _toMap(val, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + var map = {}, arr = _isArray(val) ? val : val.split(delimiter), match; + _each(arr, function (key, val) { + if ((match = /^(\d+)\.\.(\d+)$/.exec(val))) { + for (var i = parseInt(match[1], 10); i <= parseInt(match[2], 10); i++) { + map[i.toString()] = true; + } + } else { + map[val] = true; + } + }); + return map; + } + + function _toArray(obj, offset) { + return Array.prototype.slice.call(obj, offset || 0); + } + + function _undef(val, defaultVal) { + return val === undefined ? defaultVal : val; + } + + function _invalidUrl(url) { + return !url || /[<>"]/.test(url); + } + + function _addParam(url, param) { + return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param; + } + + function _extend(child, parent, proto) { + if (!proto) { + proto = parent; + parent = null; + } + var childProto; + if (parent) { + var fn = function () { + }; + fn.prototype = parent.prototype; + childProto = new fn(); + _each(proto, function (key, val) { + childProto[key] = val; + }); + } else { + childProto = proto; + } + childProto.constructor = child; + child.prototype = childProto; + child.parent = parent ? parent.prototype : null; + } + + + function _json(text) { + var match; + if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) { + text = match[0]; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + return eval('(' + text + ')'); + } + throw 'JSON parse error'; + } + + + function _merge(distObj, obj) { + for (var name in distObj) { + obj[name] = distObj[name]; + } + return obj; + } + + var _round = Math.round; + var K = { + DEBUG: false, + VERSION: _VERSION, + IE: _IE, + GECKO: _GECKO, + WEBKIT: _WEBKIT, + OPERA: _OPERA, + V: _V, + TIME: _TIME, + each: _each, + isArray: _isArray, + isFunction: _isFunction, + inArray: _inArray, + inString: _inString, + trim: _trim, + addUnit: _addUnit, + removeUnit: _removeUnit, + escape: _escape, + unescape: _unescape, + toCamel: _toCamel, + toHex: _toHex, + toMap: _toMap, + toArray: _toArray, + undef: _undef, + invalidUrl: _invalidUrl, + addParam: _addParam, + extend: _extend, + merge: _merge, + json: _json + }; + var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'), + _BLOCK_TAG_MAP = _toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'), + _SINGLE_TAG_MAP = _toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'), + _STYLE_TAG_MAP = _toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'), + _CONTROL_TAG_MAP = _toMap('img,table,input,textarea,button'), + _PRE_TAG_MAP = _toMap('pre,style,script'), + _NOSPLIT_TAG_MAP = _toMap('html,head,body,td,tr,table,ol,ul,li'), + _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'), + _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), + _VALUE_TAG_MAP = _toMap('input,button,textarea,select'); + + + function _getBasePath() { + var els = document.getElementsByTagName('script'), src; + for (var i = 0, len = els.length; i < len; i++) { + src = els[i].src || ''; + if (/NKeditor[\w\-\.]*\.js/i.test(src)) { + return src.substring(0, src.lastIndexOf('/') + 1); + } + } + return ''; + } + + K.basePath = _getBasePath(); + K.options = { + designMode: true, + fullscreenMode: false, + filterMode: true, + wellFormatMode: true, + loadStyleMode: true, + basePath: K.basePath, + themesPath: K.basePath + 'themes/', + langPath: K.basePath + 'lang/', + pluginsPath: K.basePath + 'plugins/', + themeType: 'primary', + langType: 'zh-CN', + urlType: '', + newlineTag: 'p', + resizeType: 2, + syncType: 'form', + pasteType: 2, + dialogAlignType: 'page', + useContextmenu: true, + fullscreenShortcut: false, + bodyClass: 'ke-content', + indentChar: '\t', + cssPath: [], + jsPath: [], + showHelpGrid: false, + cssData: '', + minWidth: 650, + minHeight: 300, + minChangeSize: 50, + zIndex: 811213, + items: [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage', 'graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'about', 'fullscreen' + ], + noDisableItems: ['source', 'fullscreen'], + colorTable: [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#DDDDDD', '#999999', '#666666', '#333333', '#000000'] + ], + fontSizeTable: ['9px', '10px', '12px', '14px', '16px', '18px', '24px', '32px'], + htmlTags: { + font: ['id', 'class', 'color', 'size', 'face', '.background-color'], + span: [ + 'id', 'class', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.line-height' + ], + div: [ + 'id', 'class', 'align', '.border', '.margin', '.padding', '.text-align', '.color', + '.background-color', '.font-size', '.font-family', '.font-weight', '.background', + '.font-style', '.text-decoration', '.vertical-align', '.margin-left' + ], + table: [ + 'id', 'class', 'border', 'cellspacing', 'cellpadding', 'width', 'height', 'align', 'bordercolor', + '.padding', '.margin', '.border', 'bgcolor', '.text-align', '.color', '.background-color', + '.font-size', '.font-family', '.font-weight', '.font-style', '.text-decoration', '.background', + '.width', '.height', '.border-collapse' + ], + 'td,th': [ + 'id', 'class', 'align', 'valign', 'width', 'height', 'colspan', 'rowspan', 'bgcolor', + '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.font-weight', + '.font-style', '.text-decoration', '.vertical-align', '.background', '.border' + ], + a: ['id', 'class', 'href', 'target', 'name'], + embed: ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'wmode', 'controls'], + img: ['id', 'class', 'src', 'width', 'height', 'border', 'alt', 'title', 'align', '.width', '.height', '.border'], + 'p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6': [ + 'id', 'class', 'align', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.text-indent', '.margin-left' + ], + pre: ['id', 'class'], + hr: ['id', 'class', '.page-break-after'], + 'br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del': ['id', 'class'], + iframe: ['id', 'class', 'src', 'frameborder', 'width', 'height', '.width', '.height'] + }, + layout: '<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>', + afterBlur: function () { + this.sync(); + }, + errorMsgHandler: function (message, type) { + console.log(message); + console.log(type); + alert(message); + }, + dialogOffset: 0, + allowUploadGraft: true, + resLoadCache: {}, + tableBorderColor: '#cccccc', + }; + + + var _useCapture = false; + + + var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); + + var _CURSORMOVE_KEY_MAP = _toMap('33..40'); + + var _CHANGE_KEY_MAP = {}; + _each(_INPUT_KEY_MAP, function (key, val) { + _CHANGE_KEY_MAP[key] = val; + }); + _each(_CURSORMOVE_KEY_MAP, function (key, val) { + _CHANGE_KEY_MAP[key] = val; + }); + + + function _bindEvent(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, _useCapture); + } else if (el.attachEvent) { + el.attachEvent('on' + type, fn); + } + } + + function _unbindEvent(el, type, fn) { + if (el.removeEventListener) { + el.removeEventListener(type, fn, _useCapture); + } else if (el.detachEvent) { + el.detachEvent('on' + type, fn); + } + } + + var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' + + 'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' + + 'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(','); + + + function KEvent(el, event) { + this.init(el, event); + } + + _extend(KEvent, { + init: function (el, event) { + var self = this, doc = el.ownerDocument || el.document || el; + self.event = event; + _each(_EVENT_PROPS, function (key, val) { + self[val] = event[val]; + }); + if (!self.target) { + self.target = self.srcElement || doc; + } + if (self.target.nodeType === 3) { + self.target = self.target.parentNode; + } + if (!self.relatedTarget && self.fromElement) { + self.relatedTarget = self.fromElement === self.target ? self.toElement : self.fromElement; + } + if (self.pageX == null && self.clientX != null) { + var d = doc.documentElement, body = doc.body; + self.pageX = self.clientX + (d && d.scrollLeft || body && body.scrollLeft || 0) - (d && d.clientLeft || body && body.clientLeft || 0); + self.pageY = self.clientY + (d && d.scrollTop || body && body.scrollTop || 0) - (d && d.clientTop || body && body.clientTop || 0); + } + if (!self.which && ((self.charCode || self.charCode === 0) ? self.charCode : self.keyCode)) { + self.which = self.charCode || self.keyCode; + } + if (!self.metaKey && self.ctrlKey) { + self.metaKey = self.ctrlKey; + } + if (!self.which && self.button !== undefined) { + self.which = (self.button & 1 ? 1 : (self.button & 2 ? 3 : (self.button & 4 ? 2 : 0))); + } + switch (self.which) { + case 186 : + self.which = 59; + break; + case 187 : + case 107 : + case 43 : + self.which = 61; + break; + case 189 : + case 45 : + self.which = 109; + break; + case 42 : + self.which = 106; + break; + case 47 : + self.which = 111; + break; + case 78 : + self.which = 110; + break; + } + if (self.which >= 96 && self.which <= 105) { + self.which -= 48; + } + }, + preventDefault: function () { + var ev = this.event; + if (ev.preventDefault) { + ev.preventDefault(); + } else { + ev.returnValue = false; + } + }, + stopPropagation: function () { + var ev = this.event; + if (ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = true; + } + }, + stop: function () { + this.preventDefault(); + this.stopPropagation(); + } + }); + var _eventExpendo = 'kindeditor_' + _TIME, _eventId = 0, _eventData = {}; + + function _getId(el) { + return el[_eventExpendo] || null; + } + + function _setId(el) { + el[_eventExpendo] = ++_eventId; + return _eventId; + } + + function _removeId(el) { + try { + delete el[_eventExpendo]; + } catch (e) { + if (el.removeAttribute) { + el.removeAttribute(_eventExpendo); + } + } + } + + function _bind(el, type, fn) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _bind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + id = _setId(el); + } + if (_eventData[id] === undefined) { + _eventData[id] = {}; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + _unbindEvent(el, type, events[0]); + } else { + _eventData[id][type] = []; + _eventData[id].el = el; + } + events = _eventData[id][type]; + if (events.length === 0) { + events[0] = function (e) { + var kevent = e ? new KEvent(el, e) : undefined; + _each(events, function (i, event) { + if (i > 0 && event) { + event.call(el, kevent); + } + }); + }; + } + if (_inArray(fn, events) < 0) { + events.push(fn); + } + _bindEvent(el, type, events[0]); + } + + function _unbind(el, type, fn) { + if (type && type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _unbind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + if (type === undefined) { + if (id in _eventData) { + _each(_eventData[id], function (key, events) { + if (key != 'el' && events.length > 0) { + _unbindEvent(el, key, events[0]); + } + }); + delete _eventData[id]; + _removeId(el); + } + return; + } + if (!_eventData[id]) { + return; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + if (fn === undefined) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } else { + _each(events, function (i, event) { + if (i > 0 && event === fn) { + events.splice(i, 1); + } + }); + if (events.length == 1) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } + } + var count = 0; + _each(_eventData[id], function () { + count++; + }); + if (count < 2) { + delete _eventData[id]; + _removeId(el); + } + } + } + + function _fire(el, type) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _fire(el, this); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + var events = _eventData[id][type]; + if (_eventData[id] && events && events.length > 0) { + events[0](); + } + } + + function _ctrl(el, key, fn) { + var self = this; + key = /^\d{2,}$/.test(key) ? key : key.toUpperCase().charCodeAt(0); + _bind(el, 'keydown', function (e) { + if (e.ctrlKey && e.which == key && !e.shiftKey && !e.altKey) { + fn.call(el); + e.stop(); + } + }); + } + + var _readyFinished = false; + + function _ready(fn) { + if (_readyFinished) { + fn(KindEditor); + return; + } + var loaded = false; + + function readyFunc() { + if (!loaded) { + loaded = true; + fn(KindEditor); + _readyFinished = true; + } + } + + function ieReadyFunc() { + if (!loaded) { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(ieReadyFunc, 100); + return; + } + readyFunc(); + } + } + + function ieReadyStateFunc() { + if (document.readyState === 'complete') { + readyFunc(); + } + } + + if (document.addEventListener) { + _bind(document, 'DOMContentLoaded', readyFunc); + } else if (document.attachEvent) { + _bind(document, 'readystatechange', ieReadyStateFunc); + var toplevel = false; + try { + toplevel = window.frameElement == null; + } catch (e) { + } + if (document.documentElement.doScroll && toplevel) { + ieReadyFunc(); + } + } + _bind(window, 'load', readyFunc); + } + + if (window.attachEvent) { + window.attachEvent('onunload', function () { + _each(_eventData, function (key, events) { + if (events.el) { + _unbind(events.el); + } + }); + }); + } + K.ctrl = _ctrl; + K.ready = _ready; + + function _getCssList(css) { + css = css.replace(/"/g, '"'); + var list = {}, + reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g, + match; + while ((match = reg.exec(css))) { + var key = _trim(match[1].toLowerCase()), + val = _trim(_toHex(match[2])); + list[key] = val; + } + return list; + } + + function _getAttrList(tag) { + var list = {}, + reg = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g, + match; + while ((match = reg.exec(tag))) { + var key = (match[1] || match[2] || match[4] || match[6]).toLowerCase(), + val = (match[2] ? match[3] : (match[4] ? match[5] : match[7])) || ''; + list[key] = val; + } + return list; + } + + function _addClassToTag(tag, className) { + if (/\s+class\s*=/.test(tag)) { + tag = tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/, function ($0, $1, $2, $3) { + if ((' ' + $2 + ' ').indexOf(' ' + className + ' ') < 0) { + return $2 === '' ? $1 + className + $3 : $1 + $2 + ' ' + className + $3; + } else { + return $0; + } + }); + } else { + tag = tag.substr(0, tag.length - 1) + ' class="' + className + '">'; + } + return tag; + } + + function _formatCss(css) { + var str = ''; + _each(_getCssList(css), function (key, val) { + str += key + ':' + val + ';'; + }); + return str; + } + + function _formatUrl(url, mode, host, pathname) { + mode = _undef(mode, '').toLowerCase(); + if (url.substr(0, 5) != 'data:') { + url = url.replace(/([^:])\/\//g, '$1/'); + } + if (_inArray(mode, ['absolute', 'relative', 'domain']) < 0) { + return url; + } + host = host || location.protocol + '//' + location.host; + if (pathname === undefined) { + var m = location.pathname.match(/^(\/.*)\//); + pathname = m ? m[1] : ''; + } + if (/^\w+:/.test(url)) { + return url; + } + var match; + if ((match = /^(\w+:\/\/[^\/]*)/.exec(url))) { + if (match[1] !== host) { + return url; + } + } + + function getRealPath(path) { + var parts = path.split('/'), paths = []; + for (var i = 0, len = parts.length; i < len; i++) { + var part = parts[i]; + if (part == '..') { + if (paths.length > 0) { + paths.pop(); + } + } else if (part !== '' && part != '.') { + paths.push(part); + } + } + return '/' + paths.join('/'); + } + + if (/^\//.test(url)) { + url = host + getRealPath(url.substr(1)); + } else if (!/^\w+:\/\//.test(url)) { + url = host + getRealPath(pathname + '/' + url); + } + + function getRelativePath(path, depth) { + if (url.substr(0, path.length) === path) { + var arr = []; + for (var i = 0; i < depth; i++) { + arr.push('..'); + } + var prefix = '.'; + if (arr.length > 0) { + prefix += '/' + arr.join('/'); + } + if (pathname == '/') { + prefix += '/'; + } + return prefix + url.substr(path.length); + } else { + if ((match = /^(.*)\//.exec(path))) { + return getRelativePath(match[1], ++depth); + } + } + } + + if (mode === 'relative') { + url = getRelativePath(host + pathname, 0).substr(2); + } else if (mode === 'absolute') { + if (url.substr(0, host.length) === host) { + url = url.substr(host.length); + } + } + return url; + } + + function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { + if (html == null) { + html = ''; + } + urlType = urlType || ''; + wellFormatted = _undef(wellFormatted, false); + indentChar = _undef(indentChar, '\t'); + var fontSizeList = 'xx-small,x-small,small,medium,large,x-large,xx-large'.split(','); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function ($0, $1, $2, $3) { + return $1 + $2.replace(/<(?:br|br\s[^>]*)>/ig, '\n') + $3; + }); + html = html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig, '</p>'); + html = html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig, '$1<br />$2'); + html = html.replace(/\u200B/g, ''); + html = html.replace(/\u00A9/g, '©'); + html = html.replace(/\u00AE/g, '®'); + html = html.replace(/\u2003/g, ' '); + html = html.replace(/\u3000/g, ' '); + html = html.replace(/<[^>]+/g, function ($0) { + return $0.replace(/\s+/g, ' '); + }); + var htmlTagMap = {}; + if (htmlTags) { + _each(htmlTags, function (key, val) { + var arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + htmlTagMap[arr[i]] = _toMap(val); + } + }); + if (!htmlTagMap.script) { + html = html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig, ''); + } + if (!htmlTagMap.style) { + html = html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig, ''); + } + } + var re = /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g; + var tagStack = []; + html = html.replace(re, function ($0, $1, $2, $3, $4, $5, $6) { + var full = $0, + startNewline = $1 || '', + startSlash = $2 || '', + tagName = $3.toLowerCase(), + attr = $4 || '', + endSlash = $5 ? ' ' + $5 : '', + endNewline = $6 || ''; + if (tagName == 'code') { + return full; + } + if (htmlTags && !htmlTagMap[tagName]) { + return ''; + } + if (endSlash === '' && _SINGLE_TAG_MAP[tagName]) { + endSlash = ' /'; + } + if (_INLINE_TAG_MAP[tagName]) { + if (startNewline) { + startNewline = ' '; + } + if (endNewline) { + endNewline = ' '; + } + } + if (_PRE_TAG_MAP[tagName]) { + if (startSlash) { + endNewline = '\n'; + } else { + startNewline = '\n'; + } + } + if (wellFormatted && tagName == 'br') { + endNewline = '\n'; + } + if (_BLOCK_TAG_MAP[tagName] && !_PRE_TAG_MAP[tagName]) { + if (wellFormatted) { + if (startSlash && tagStack.length > 0 && tagStack[tagStack.length - 1] === tagName) { + tagStack.pop(); + } else { + tagStack.push(tagName); + } + startNewline = '\n'; + endNewline = '\n'; + for (var i = 0, len = startSlash ? tagStack.length : tagStack.length - 1; i < len; i++) { + startNewline += indentChar; + if (!startSlash) { + endNewline += indentChar; + } + } + if (endSlash) { + tagStack.pop(); + } else if (!startSlash) { + endNewline += indentChar; + } + } else { + startNewline = endNewline = ''; + } + } + if (attr !== '') { + var attrMap = _getAttrList(full); + if (tagName === 'font') { + var fontStyleMap = {}, fontStyle = ''; + _each(attrMap, function (key, val) { + if (key === 'color') { + fontStyleMap.color = val; + delete attrMap[key]; + } + if (key === 'size') { + fontStyleMap['font-size'] = fontSizeList[parseInt(val, 10) - 1] || ''; + delete attrMap[key]; + } + if (key === 'face') { + fontStyleMap['font-family'] = val; + delete attrMap[key]; + } + if (key === 'style') { + fontStyle = val; + } + }); + if (fontStyle && !/;$/.test(fontStyle)) { + fontStyle += ';'; + } + _each(fontStyleMap, function (key, val) { + if (val === '') { + return; + } + if (/\s/.test(val)) { + val = "'" + val + "'"; + } + fontStyle += key + ':' + val + ';'; + }); + attrMap.style = fontStyle; + } + _each(attrMap, function (key, val) { + if (_FILL_ATTR_MAP[key]) { + attrMap[key] = key; + } + if (_inArray(key, ['src', 'href']) >= 0) { + attrMap[key] = _formatUrl(val, urlType); + } + if (htmlTags && key !== 'style' && !htmlTagMap[tagName]['*'] && !htmlTagMap[tagName][key] || + tagName === 'body' && key === 'contenteditable' || + /^kindeditor_\d+$/.test(key)) { + delete attrMap[key]; + } + if (key === 'style' && val !== '') { + var styleMap = _getCssList(val); + _each(styleMap, function (k, v) { + if (htmlTags && !htmlTagMap[tagName].style && !htmlTagMap[tagName]['.' + k]) { + delete styleMap[k]; + } + }); + var style = ''; + _each(styleMap, function (k, v) { + style += k + ':' + v + ';'; + }); + attrMap.style = style; + } + }); + attr = ''; + _each(attrMap, function (key, val) { + if (key === 'style' && val === '') { + return; + } + val = val.replace(/"/g, '"'); + attr += ' ' + key + '="' + val + '"'; + }); + } + if (tagName === 'font') { + tagName = 'span'; + } + return startNewline + '<' + startSlash + tagName + attr + endSlash + '>' + endNewline; + }); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function ($0, $1, $2, $3) { + return $1 + $2.replace(/\n/g, '<span id="__kindeditor_pre_newline__">\n') + $3; + }); + html = html.replace(/\n\s*\n/g, '\n'); + html = html.replace(/<span id="__kindeditor_pre_newline__">\n/g, '\n'); + return _trim(html); + } + + function _clearMsWord(html, htmlTags) { + html = html.replace(/<meta[\s\S]*?>/ig, '') + .replace(/<![\s\S]*?>/ig, '') + .replace(/<style[^>]*>[\s\S]*?<\/style>/ig, '') + .replace(/<script[^>]*>[\s\S]*?<\/script>/ig, '') + .replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/ig, '') + .replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/ig, '') + .replace(/<xml>[\s\S]*?<\/xml>/ig, '') + .replace(/<(?:table|td)[^>]*>/ig, function (full) { + return full.replace(/border-bottom:([#\w\s]+)/ig, 'border:$1'); + }); + return _formatHtml(html, htmlTags); + } + + function _mediaType(src) { + if (/\.(rm|rmvb)(\?|$)/i.test(src)) { + return 'audio/x-pn-realaudio-plugin'; + } + if (/\.(mp4)(\?|$)/i.test(src)) { + return 'video/mpeg4'; + } + if (/\.(swf|flv)(\?|$)/i.test(src)) { + return 'application/x-shockwave-flash'; + } + return 'video/x-ms-asf-plugin'; + } + + function _mediaClass(type) { + if (/realaudio/i.test(type)) { + return 'ke-rm'; + } + if (/flash/i.test(type)) { + return 'ke-flash'; + } + return 'ke-media'; + } + + function _mediaAttrs(srcTag) { + return _getAttrList(unescape(srcTag)); + } + + function _mediaEmbed(attrs) { + var type = attrs.type == 'video/mpeg4' ? 'video' : 'embed'; + if (type == 'video') { + attrs.controls = "controls"; + } + var html = '<' + type + ' '; + _each(attrs, function (key, val) { + html += key + '="' + val + '" '; + }); + html += '/>'; + return html; + } + + function _mediaImg(blankPath, attrs) { + var width = attrs.width, + height = attrs.height, + type = attrs.type || _mediaType(attrs.src), + srcTag = _mediaEmbed(attrs), + style = ''; + if (/\D/.test(width)) { + style += 'width:' + width + ';'; + } else if (width > 0) { + style += 'width:' + width + 'px;'; + } + if (/\D/.test(height)) { + style += 'height:' + height + ';'; + } else if (height > 0) { + style += 'height:' + height + 'px;'; + } + var html = '<img class="' + _mediaClass(type) + '" src="' + blankPath + '" '; + if (style !== '') { + html += 'style="' + style + '" '; + } + html += 'data-ke-tag="' + escape(srcTag) + '" alt="" />'; + return html; + } + + + function _tmpl(str, data) { + var fn = new Function("obj", + "var p=[],print=function(){p.push.apply(p,arguments);};" + + "with(obj){p.push('" + + str.replace(/[\r\t\n]/g, " ") + .split("<%").join("\t") + .replace(/((^|%>)[^\t]*)'/g, "$1\r") + .replace(/\t=(.*?)%>/g, "',$1,'") + .split("\t").join("');") + .split("%>").join("p.push('") + .split("\r").join("\\'") + "');}return p.join('');"); + return data ? fn(data) : fn; + } + + K.formatUrl = _formatUrl; + K.formatHtml = _formatHtml; + K.getCssList = _getCssList; + K.getAttrList = _getAttrList; + K.mediaType = _mediaType; + K.mediaAttrs = _mediaAttrs; + K.mediaEmbed = _mediaEmbed; + K.mediaImg = _mediaImg; + K.clearMsWord = _clearMsWord; + K.tmpl = _tmpl; + + + function _contains(nodeA, nodeB) { + if (nodeA.nodeType == 9 && nodeB.nodeType != 9) { + return true; + } + while ((nodeB = nodeB.parentNode)) { + if (nodeB == nodeA) { + return true; + } + } + return false; + } + + var _getSetAttrDiv = document.createElement('div'); + _getSetAttrDiv.setAttribute('className', 't'); + var _GET_SET_ATTRIBUTE = _getSetAttrDiv.className !== 't'; + + function _getAttr(el, key) { + key = key.toLowerCase(); + var val = null; + if (!_GET_SET_ATTRIBUTE && el.nodeName.toLowerCase() != 'script') { + var div = el.ownerDocument.createElement('div'); + div.appendChild(el.cloneNode(false)); + var list = _getAttrList(_unescape(div.innerHTML)); + if (key in list) { + val = list[key]; + } + } else { + try { + val = el.getAttribute(key, 2); + } catch (e) { + val = el.getAttribute(key, 1); + } + } + if (key === 'style' && val !== null) { + val = _formatCss(val); + } + return val; + } + + function _queryAll(expr, root) { + var exprList = expr.split(','); + if (exprList.length > 1) { + var mergedResults = []; + _each(exprList, function () { + _each(_queryAll(this, root), function () { + if (_inArray(this, mergedResults) < 0) { + mergedResults.push(this); + } + }); + }); + return mergedResults; + } + root = root || document; + + function escape(str) { + if (typeof str != 'string') { + return str; + } + return str.replace(/([^\w\-])/g, '\\$1'); + } + + function stripslashes(str) { + return str.replace(/\\/g, ''); + } + + function cmpTag(tagA, tagB) { + return tagA === '*' || tagA.toLowerCase() === escape(tagB.toLowerCase()); + } + + function byId(id, tag, root) { + var arr = [], + doc = root.ownerDocument || root, + el = doc.getElementById(stripslashes(id)); + if (el) { + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + arr.push(el); + } + } + return arr; + } + + function byClass(className, tag, root) { + var doc = root.ownerDocument || root, arr = [], els, i, len, el; + if (root.getElementsByClassName) { + els = root.getElementsByClassName(stripslashes(className)); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName)) { + arr.push(el); + } + } + } else if (doc.querySelectorAll) { + els = doc.querySelectorAll((root.nodeName !== '#document' ? root.nodeName + ' ' : '') + tag + '.' + className); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (_contains(root, el)) { + arr.push(el); + } + } + } else { + els = root.getElementsByTagName(tag); + className = ' ' + className + ' '; + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + var cls = el.className; + if (cls && (' ' + cls + ' ').indexOf(className) > -1) { + arr.push(el); + } + } + } + } + return arr; + } + + function byName(name, tag, root) { + var arr = [], doc = root.ownerDocument || root, + els = doc.getElementsByName(stripslashes(name)), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + if (el.getAttribute('name') !== null) { + arr.push(el); + } + } + } + return arr; + } + + function byAttr(key, val, tag, root) { + var arr = [], els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + if (val === null) { + if (_getAttr(el, key) !== null) { + arr.push(el); + } + } else { + if (val === escape(_getAttr(el, key))) { + arr.push(el); + } + } + } + } + return arr; + } + + function select(expr, root) { + var arr = [], matches; + matches = /^((?:\\.|[^.#\s\[<>])+)/.exec(expr); + var tag = matches ? matches[1] : '*'; + if ((matches = /#((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byId(matches[1], tag, root); + } else if ((matches = /\.((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byClass(matches[1], tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\]/.exec(expr))) { + arr = byAttr(matches[1].toLowerCase(), null, tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr))) { + var key = matches[1].toLowerCase(), val = matches[2]; + if (key === 'id') { + arr = byId(val, tag, root); + } else if (key === 'class') { + arr = byClass(val, tag, root); + } else if (key === 'name') { + arr = byName(val, tag, root); + } else { + arr = byAttr(key, val, tag, root); + } + } else { + var els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + arr.push(el); + } + } + } + return arr; + } + + var parts = [], arr, re = /((?:\\.|[^\s>])+|[\s>])/g; + while ((arr = re.exec(expr))) { + if (arr[1] !== ' ') { + parts.push(arr[1]); + } + } + var results = []; + if (parts.length == 1) { + return select(parts[0], root); + } + var isChild = false, part, els, subResults, val, v, i, j, k, length, len, l; + for (i = 0, lenth = parts.length; i < lenth; i++) { + part = parts[i]; + if (part === '>') { + isChild = true; + continue; + } + if (i > 0) { + els = []; + for (j = 0, len = results.length; j < len; j++) { + val = results[j]; + subResults = select(part, val); + for (k = 0, l = subResults.length; k < l; k++) { + v = subResults[k]; + if (isChild) { + if (val === v.parentNode) { + els.push(v); + } + } else { + els.push(v); + } + } + } + results = els; + } else { + results = select(part, root); + } + if (results.length === 0) { + return []; + } + } + return results; + } + + function _query(expr, root) { + var arr = _queryAll(expr, root); + return arr.length > 0 ? arr[0] : null; + } + + K.query = _query; + K.queryAll = _queryAll; + + + function _get(val) { + return K(val)[0]; + } + + function _getDoc(node) { + if (!node) { + return document; + } + return node.ownerDocument || node.document || node; + } + + function _getWin(node) { + if (!node) { + return window; + } + var doc = _getDoc(node); + return doc.parentWindow || doc.defaultView; + } + + function _setHtml(el, html) { + if (el.nodeType != 1) { + return; + } + var doc = _getDoc(el); + try { + el.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + html; + var temp = doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + } catch (e) { + K(el).empty(); + K('@' + html, doc).each(function () { + el.appendChild(this); + }); + } + } + + function _hasClass(el, cls) { + return _inString(cls, el.className, ' '); + } + + function _setAttr(el, key, val) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + el.setAttribute(key, '' + val); + } + + function _removeAttr(el, key) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + _setAttr(el, key, ''); + el.removeAttribute(key); + } + + function _getNodeName(node) { + if (!node || !node.nodeName) { + return ''; + } + return node.nodeName.toLowerCase(); + } + + function _computedCss(el, key) { + var self = this, win = _getWin(el), camelKey = _toCamel(key), val = ''; + if (win.getComputedStyle) { + var style = win.getComputedStyle(el, null); + val = style[camelKey] || style.getPropertyValue(key) || el.style[camelKey]; + } else if (el.currentStyle) { + val = el.currentStyle[camelKey] || el.style[camelKey]; + } + return val; + } + + function _hasVal(node) { + return !!_VALUE_TAG_MAP[_getNodeName(node)]; + } + + function _docElement(doc) { + doc = doc || document; + return _QUIRKS ? doc.body : doc.documentElement; + } + + function _docHeight(doc) { + var el = _docElement(doc); + return Math.max(el.scrollHeight, el.clientHeight); + } + + function _docWidth(doc) { + var el = _docElement(doc); + return Math.max(el.scrollWidth, el.clientWidth); + } + + function _getScrollPos(doc) { + doc = doc || document; + var x, y; + if (_IE || _NEWIE || _OPERA) { + x = _docElement(doc).scrollLeft; + y = _docElement(doc).scrollTop; + } else { + x = _getWin(doc).scrollX; + y = _getWin(doc).scrollY; + } + return {x: x, y: y}; + } + + + function KNode(node) { + this.init(node); + } + + _extend(KNode, { + init: function (node) { + var self = this; + node = _isArray(node) ? node : [node]; + var length = 0; + for (var i = 0, len = node.length; i < len; i++) { + if (node[i]) { + self[i] = node[i].constructor === KNode ? node[i][0] : node[i]; + length++; + } + } + self.length = length; + self.doc = _getDoc(self[0]); + self.name = _getNodeName(self[0]); + self.type = self.length > 0 ? self[0].nodeType : null; + self.win = _getWin(self[0]); + }, + each: function (fn) { + var self = this; + for (var i = 0; i < self.length; i++) { + if (fn.call(self[i], i, self[i]) === false) { + return self; + } + } + return self; + }, + bind: function (type, fn) { + this.each(function () { + _bind(this, type, fn); + }); + return this; + }, + unbind: function (type, fn) { + this.each(function () { + _unbind(this, type, fn); + }); + return this; + }, + fire: function (type) { + if (this.length < 1) { + return this; + } + _fire(this[0], type); + return this; + }, + hasAttr: function (key) { + if (this.length < 1) { + return false; + } + return !!_getAttr(this[0], key); + }, + attr: function (key, val) { + var self = this; + if (key === undefined) { + return _getAttrList(self.outer()); + } + if (typeof key === 'object') { + _each(key, function (k, v) { + self.attr(k, v); + }); + return self; + } + if (val === undefined) { + val = self.length < 1 ? null : _getAttr(self[0], key); + return val === null ? '' : val; + } + self.each(function () { + _setAttr(this, key, val); + }); + return self; + }, + removeAttr: function (key) { + this.each(function () { + _removeAttr(this, key); + }); + return this; + }, + get: function (i) { + if (this.length < 1) { + return null; + } + return this[i || 0]; + }, + eq: function (i) { + if (this.length < 1) { + return null; + } + return this[i] ? new KNode(this[i]) : null; + }, + hasClass: function (cls) { + if (this.length < 1) { + return false; + } + return _hasClass(this[0], cls); + }, + addClass: function (cls) { + this.each(function () { + if (!_hasClass(this, cls)) { + this.className = _trim(this.className + ' ' + cls); + } + }); + return this; + }, + removeClass: function (cls) { + this.each(function () { + if (_hasClass(this, cls)) { + this.className = _trim(this.className.replace(new RegExp('(^|\\s)' + cls + '(\\s|$)'), ' ')); + } + }); + return this; + }, + html: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1 || self.type != 1) { + return ''; + } + return _formatHtml(self[0].innerHTML); + } + self.each(function () { + _setHtml(this, val); + }); + return self; + }, + text: function () { + var self = this; + if (self.length < 1) { + return ''; + } + return _IE ? self[0].innerText : self[0].textContent; + }, + hasVal: function () { + if (this.length < 1) { + return false; + } + return _hasVal(this[0]); + }, + val: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self.hasVal() ? self[0].value : self.attr('value'); + } else { + self.each(function () { + if (_hasVal(this)) { + this.value = val; + } else { + _setAttr(this, 'value', val); + } + }); + return self; + } + }, + css: function (key, val) { + var self = this; + if (key === undefined) { + return _getCssList(self.attr('style')); + } + if (typeof key === 'object') { + _each(key, function (k, v) { + self.css(k, v); + }); + return self; + } + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self[0].style[_toCamel(key)] || _computedCss(self[0], key) || ''; + } + self.each(function () { + this.style[_toCamel(key)] = val; + }); + return self; + }, + width: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetWidth; + } + return self.css('width', _addUnit(val)); + }, + height: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetHeight; + } + return self.css('height', _addUnit(val)); + }, + opacity: function (val) { + this.each(function () { + if (this.style.opacity === undefined) { + this.style.filter = val == 1 ? '' : 'alpha(opacity=' + (val * 100) + ')'; + } else { + this.style.opacity = val == 1 ? '' : val; + } + }); + return this; + }, + data: function (key, val) { + var self = this; + key = 'kindeditor_data_' + key; + if (val === undefined) { + if (self.length < 1) { + return null; + } + return self[0][key]; + } + this.each(function () { + this[key] = val; + }); + return self; + }, + pos: function () { + var self = this, node = self[0], x = 0, y = 0; + if (node) { + if (node.getBoundingClientRect) { + var box = node.getBoundingClientRect(), + pos = _getScrollPos(self.doc); + x = box.left + pos.x; + y = box.top + pos.y; + } else { + while (node) { + x += node.offsetLeft; + y += node.offsetTop; + node = node.offsetParent; + } + } + } + return {x: _round(x), y: _round(y)}; + }, + clone: function (bool) { + if (this.length < 1) { + return new KNode([]); + } + return new KNode(this[0].cloneNode(bool)); + }, + append: function (expr) { + this.each(function () { + if (this.appendChild) { + this.appendChild(_get(expr)); + } + }); + return this; + }, + appendTo: function (expr) { + this.each(function () { + _get(expr).appendChild(this); + }); + return this; + }, + before: function (expr) { + this.each(function () { + try { + this.parentNode.insertBefore(_get(expr), this); + } catch (e) { + } + }); + return this; + }, + after: function (expr) { + this.each(function () { + if (this.nextSibling) { + this.parentNode.insertBefore(_get(expr), this.nextSibling); + } else { + this.parentNode.appendChild(_get(expr)); + } + }); + return this; + }, + replaceWith: function (expr) { + var nodes = []; + this.each(function (i, node) { + _unbind(node); + var newNode = _get(expr); + node.parentNode.replaceChild(newNode, node); + nodes.push(newNode); + }); + return K(nodes); + }, + empty: function () { + var self = this; + self.each(function (i, node) { + var child = node.firstChild; + while (child) { + if (!node.parentNode) { + return; + } + var next = child.nextSibling; + child.parentNode.removeChild(child); + child = next; + } + }); + return self; + }, + remove: function (keepChilds) { + var self = this; + self.each(function (i, node) { + if (!node.parentNode) { + return; + } + _unbind(node); + if (keepChilds) { + var child = node.firstChild; + while (child) { + var next = child.nextSibling; + node.parentNode.insertBefore(child, node); + child = next; + } + } + node.parentNode.removeChild(node); + delete self[i]; + }); + self.length = 0; + return self; + }, + show: function (val) { + var self = this; + if (val === undefined) { + val = self._originDisplay || ''; + } + if (self.css('display') != 'none') { + return self; + } + return self.css('display', val); + }, + hide: function () { + var self = this; + if (self.length < 1) { + return self; + } + self._originDisplay = self[0].style.display; + return self.css('display', 'none'); + }, + outer: function () { + var self = this; + if (self.length < 1) { + return ''; + } + var div = self.doc.createElement('div'), html; + div.appendChild(self[0].cloneNode(true)); + html = _formatHtml(div.innerHTML); + div = null; + return html; + }, + isSingle: function () { + return !!_SINGLE_TAG_MAP[this.name]; + }, + isInline: function () { + return !!_INLINE_TAG_MAP[this.name]; + }, + isBlock: function () { + return !!_BLOCK_TAG_MAP[this.name]; + }, + isStyle: function () { + return !!_STYLE_TAG_MAP[this.name]; + }, + isControl: function () { + return !!_CONTROL_TAG_MAP[this.name]; + }, + contains: function (otherNode) { + if (this.length < 1) { + return false; + } + return _contains(this[0], _get(otherNode)); + }, + parent: function () { + if (this.length < 1) { + return null; + } + var node = this[0].parentNode; + return node ? new KNode(node) : null; + }, + children: function () { + if (this.length < 1) { + return new KNode([]); + } + var list = [], child = this[0].firstChild; + while (child) { + if (child.nodeType != 3 || _trim(child.nodeValue) !== '') { + list.push(child); + } + child = child.nextSibling; + } + return new KNode(list); + }, + first: function () { + var list = this.children(); + return list.length > 0 ? list.eq(0) : null; + }, + last: function () { + var list = this.children(); + return list.length > 0 ? list.eq(list.length - 1) : null; + }, + index: function () { + if (this.length < 1) { + return -1; + } + var i = -1, sibling = this[0]; + while (sibling) { + i++; + sibling = sibling.previousSibling; + } + return i; + }, + prev: function () { + if (this.length < 1) { + return null; + } + var node = this[0].previousSibling; + return node ? new KNode(node) : null; + }, + next: function () { + if (this.length < 1) { + return null; + } + var node = this[0].nextSibling; + return node ? new KNode(node) : null; + }, + scan: function (fn, order) { + if (this.length < 1) { + return; + } + order = (order === undefined) ? true : order; + + function walk(node) { + var n = order ? node.firstChild : node.lastChild; + while (n) { + var next = order ? n.nextSibling : n.previousSibling; + if (fn(n) === false) { + return false; + } + if (walk(n) === false) { + return false; + } + n = next; + } + } + + walk(this[0]); + return this; + } + }); + _each(('blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,' + + 'mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,' + + 'change,select,submit,keydown,keypress,keyup,error,contextmenu').split(','), function (i, type) { + KNode.prototype[type] = function (fn) { + return fn ? this.bind(type, fn) : this.fire(type); + }; + }); + var _K = K; + K = function (expr, root) { + if (expr === undefined || expr === null) { + return; + } + + function newNode(node) { + if (!node[0]) { + node = []; + } + return new KNode(node); + } + + if (typeof expr === 'string') { + if (root) { + root = _get(root); + } + var length = expr.length; + if (expr.charAt(0) === '@') { + expr = expr.substr(1); + } + if (expr.length !== length || /<.+>/.test(expr)) { + var doc = root ? root.ownerDocument || root : document, + div = doc.createElement('div'), list = []; + div.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + expr; + for (var i = 0, len = div.childNodes.length; i < len; i++) { + var child = div.childNodes[i]; + if (child.id == '__kindeditor_temp_tag__') { + continue; + } + list.push(child); + } + return newNode(list); + } + return newNode(_queryAll(expr, root)); + } + if (expr && expr.constructor === KNode) { + return expr; + } + if (expr.toArray) { + expr = expr.toArray(); + } + if (_isArray(expr)) { + return newNode(expr); + } + return newNode(_toArray(arguments)); + }; + _each(_K, function (key, val) { + K[key] = val; + }); + K.NodeClass = KNode; + window.KindEditor = K; + + + var _START_TO_START = 0, + _START_TO_END = 1, + _END_TO_END = 2, + _END_TO_START = 3, + _BOOKMARK_ID = 0; + + function _updateCollapsed(range) { + range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); + return range; + } + + function _copyAndDelete(range, isCopy, isDelete) { + var doc = range.doc, nodeList = []; + + function splitTextNode(node, startOffset, endOffset) { + var length = node.nodeValue.length, centerNode; + if (isCopy) { + var cloneNode = node.cloneNode(true); + if (startOffset > 0) { + centerNode = cloneNode.splitText(startOffset); + } else { + centerNode = cloneNode; + } + if (endOffset < length) { + centerNode.splitText(endOffset - startOffset); + } + } + if (isDelete) { + var center = node; + if (startOffset > 0) { + center = node.splitText(startOffset); + range.setStart(node, startOffset); + } + if (endOffset < length) { + var right = center.splitText(endOffset - startOffset); + range.setEnd(right, 0); + } + nodeList.push(center); + } + return centerNode; + } + + function removeNodes() { + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + } + + var copyRange = range.cloneRange().down(); + var start = -1, incStart = -1, incEnd = -1, end = -1, + ancestor = range.commonAncestor(), frag = doc.createDocumentFragment(); + if (ancestor.nodeType == 3) { + var textNode = splitTextNode(ancestor, range.startOffset, range.endOffset); + if (isCopy) { + frag.appendChild(textNode); + } + removeNodes(); + return isCopy ? frag : range; + } + + function extractNodes(parent, frag) { + var node = parent.firstChild, nextNode; + while (node) { + var testRange = new KRange(doc).selectNode(node); + start = testRange.compareBoundaryPoints(_START_TO_END, range); + if (start >= 0 && incStart <= 0) { + incStart = testRange.compareBoundaryPoints(_START_TO_START, range); + } + if (incStart >= 0 && incEnd <= 0) { + incEnd = testRange.compareBoundaryPoints(_END_TO_END, range); + } + if (incEnd >= 0 && end <= 0) { + end = testRange.compareBoundaryPoints(_END_TO_START, range); + } + if (end >= 0) { + return false; + } + nextNode = node.nextSibling; + if (start > 0) { + if (node.nodeType == 1) { + if (incStart >= 0 && incEnd <= 0) { + if (isCopy) { + frag.appendChild(node.cloneNode(true)); + } + if (isDelete) { + nodeList.push(node); + } + } else { + var childFlag; + if (isCopy) { + childFlag = node.cloneNode(false); + frag.appendChild(childFlag); + } + if (extractNodes(node, childFlag) === false) { + return false; + } + } + } else if (node.nodeType == 3) { + var textNode; + if (node == copyRange.startContainer) { + textNode = splitTextNode(node, copyRange.startOffset, node.nodeValue.length); + } else if (node == copyRange.endContainer) { + textNode = splitTextNode(node, 0, copyRange.endOffset); + } else { + textNode = splitTextNode(node, 0, node.nodeValue.length); + } + if (isCopy) { + try { + frag.appendChild(textNode); + } catch (e) { + } + } + } + } + node = nextNode; + } + } + + extractNodes(ancestor, frag); + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return isCopy ? frag : range; + } + + function _moveToElementText(range, el) { + var node = el; + while (node) { + var knode = K(node); + if (knode.name == 'marquee' || knode.name == 'select') { + return; + } + node = node.parentNode; + } + try { + range.moveToElementText(el); + } catch (e) { + } + } + + function _getStartEnd(rng, isStart) { + var doc = rng.parentElement().ownerDocument, + pointRange = rng.duplicate(); + pointRange.collapse(isStart); + var parent = pointRange.parentElement(), + nodes = parent.childNodes; + if (nodes.length === 0) { + return {node: parent.parentNode, offset: K(parent).index()}; + } + var startNode = doc, startPos = 0, cmp = -1; + var testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + for (var i = 0, len = nodes.length; i < len; i++) { + var node = nodes[i]; + cmp = testRange.compareEndPoints('StartToStart', pointRange); + if (cmp === 0) { + return {node: node.parentNode, offset: i}; + } + if (node.nodeType == 1) { + var nodeRange = rng.duplicate(), dummy, knode = K(node), newNode = node; + if (knode.isControl()) { + dummy = doc.createElement('span'); + knode.after(dummy); + newNode = dummy; + startPos += knode.text().replace(/\r\n|\n|\r/g, '').length; + } + _moveToElementText(nodeRange, newNode); + testRange.setEndPoint('StartToEnd', nodeRange); + if (cmp > 0) { + startPos += nodeRange.text.replace(/\r\n|\n|\r/g, '').length; + } else { + startPos = 0; + } + if (dummy) { + K(dummy).remove(); + } + } else if (node.nodeType == 3) { + testRange.moveStart('character', node.nodeValue.length); + startPos += node.nodeValue.length; + } + if (cmp < 0) { + startNode = node; + } + } + if (cmp < 0 && startNode.nodeType == 1) { + return {node: parent, offset: K(parent.lastChild).index() + 1}; + } + if (cmp > 0) { + while (startNode.nextSibling && startNode.nodeType == 1) { + startNode = startNode.nextSibling; + } + } + testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + testRange.setEndPoint('StartToEnd', pointRange); + startPos -= testRange.text.replace(/\r\n|\n|\r/g, '').length; + if (cmp > 0 && startNode.nodeType == 3) { + var prevNode = startNode.previousSibling; + while (prevNode && prevNode.nodeType == 3) { + startPos -= prevNode.nodeValue.length; + prevNode = prevNode.previousSibling; + } + } + return {node: startNode, offset: startPos}; + } + + function _getEndRange(node, offset) { + var doc = node.ownerDocument || node, + range = doc.body.createTextRange(); + if (doc == node) { + range.collapse(true); + return range; + } + if (node.nodeType == 1 && node.childNodes.length > 0) { + var children = node.childNodes, isStart, child; + if (offset === 0) { + child = children[0]; + isStart = true; + } else { + child = children[offset - 1]; + isStart = false; + } + if (!child) { + return range; + } + if (K(child).name === 'head') { + if (offset === 1) { + isStart = true; + } + if (offset === 2) { + isStart = false; + } + range.collapse(isStart); + return range; + } + if (child.nodeType == 1) { + var kchild = K(child), span; + if (kchild.isControl()) { + span = doc.createElement('span'); + if (isStart) { + kchild.before(span); + } else { + kchild.after(span); + } + child = span; + } + _moveToElementText(range, child); + range.collapse(isStart); + if (span) { + K(span).remove(); + } + return range; + } + node = child; + offset = isStart ? 0 : child.nodeValue.length; + } + var dummy = doc.createElement('span'); + K(node).before(dummy); + _moveToElementText(range, dummy); + range.moveStart('character', offset); + K(dummy).remove(); + return range; + } + + function _toRange(rng) { + var doc, range; + + function tr2td(start) { + if (K(start.node).name == 'tr') { + start.node = start.node.cells[start.offset]; + start.offset = 0; + } + } + + if (_IERANGE) { + if (rng.item) { + doc = _getDoc(rng.item(0)); + range = new KRange(doc); + range.selectNode(rng.item(0)); + return range; + } + doc = rng.parentElement().ownerDocument; + var start = _getStartEnd(rng, true), + end = _getStartEnd(rng, false); + tr2td(start); + tr2td(end); + range = new KRange(doc); + range.setStart(start.node, start.offset); + range.setEnd(end.node, end.offset); + return range; + } + var startContainer = rng.startContainer; + doc = startContainer.ownerDocument || startContainer; + range = new KRange(doc); + range.setStart(startContainer, rng.startOffset); + range.setEnd(rng.endContainer, rng.endOffset); + return range; + } + + + function KRange(doc) { + this.init(doc); + } + + _extend(KRange, { + init: function (doc) { + var self = this; + self.startContainer = doc; + self.startOffset = 0; + self.endContainer = doc; + self.endOffset = 0; + self.collapsed = true; + self.doc = doc; + }, + commonAncestor: function () { + function getParents(node) { + var parents = []; + while (node) { + parents.push(node); + node = node.parentNode; + } + return parents; + } + + var parentsA = getParents(this.startContainer), + parentsB = getParents(this.endContainer), + i = 0, lenA = parentsA.length, lenB = parentsB.length, parentA, parentB; + while (++i) { + parentA = parentsA[lenA - i]; + parentB = parentsB[lenB - i]; + if (!parentA || !parentB || parentA !== parentB) { + break; + } + } + return parentsA[lenA - i + 1]; + }, + setStart: function (node, offset) { + var self = this, doc = self.doc; + self.startContainer = node; + self.startOffset = offset; + if (self.endContainer === doc) { + self.endContainer = node; + self.endOffset = offset; + } + return _updateCollapsed(this); + }, + setEnd: function (node, offset) { + var self = this, doc = self.doc; + self.endContainer = node; + self.endOffset = offset; + if (self.startContainer === doc) { + self.startContainer = node; + self.startOffset = offset; + } + return _updateCollapsed(this); + }, + setStartBefore: function (node) { + return this.setStart(node.parentNode || this.doc, K(node).index()); + }, + setStartAfter: function (node) { + return this.setStart(node.parentNode || this.doc, K(node).index() + 1); + }, + setEndBefore: function (node) { + return this.setEnd(node.parentNode || this.doc, K(node).index()); + }, + setEndAfter: function (node) { + return this.setEnd(node.parentNode || this.doc, K(node).index() + 1); + }, + selectNode: function (node) { + return this.setStartBefore(node).setEndAfter(node); + }, + selectNodeContents: function (node) { + var knode = K(node); + if (knode.type == 3 || knode.isSingle()) { + return this.selectNode(node); + } + var children = knode.children(); + if (children.length > 0) { + return this.setStartBefore(children[0]).setEndAfter(children[children.length - 1]); + } + return this.setStart(node, 0).setEnd(node, 0); + }, + collapse: function (toStart) { + if (toStart) { + return this.setEnd(this.startContainer, this.startOffset); + } + return this.setStart(this.endContainer, this.endOffset); + }, + compareBoundaryPoints: function (how, range) { + var rangeA = this.get(), rangeB = range.get(); + if (_IERANGE) { + var arr = {}; + arr[_START_TO_START] = 'StartToStart'; + arr[_START_TO_END] = 'EndToStart'; + arr[_END_TO_END] = 'EndToEnd'; + arr[_END_TO_START] = 'StartToEnd'; + var cmp = rangeA.compareEndPoints(arr[how], rangeB); + if (cmp !== 0) { + return cmp; + } + var nodeA, nodeB, nodeC, posA, posB; + if (how === _START_TO_START || how === _END_TO_START) { + nodeA = this.startContainer; + posA = this.startOffset; + } + if (how === _START_TO_END || how === _END_TO_END) { + nodeA = this.endContainer; + posA = this.endOffset; + } + if (how === _START_TO_START || how === _START_TO_END) { + nodeB = range.startContainer; + posB = range.startOffset; + } + if (how === _END_TO_END || how === _END_TO_START) { + nodeB = range.endContainer; + posB = range.endOffset; + } + if (nodeA === nodeB) { + var diff = posA - posB; + return diff > 0 ? 1 : (diff < 0 ? -1 : 0); + } + nodeC = nodeB; + while (nodeC && nodeC.parentNode !== nodeA) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posA ? -1 : 1; + } + nodeC = nodeA; + while (nodeC && nodeC.parentNode !== nodeB) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posB ? 1 : -1; + } + nodeC = K(nodeB).next(); + if (nodeC && nodeC.contains(nodeA)) { + return 1; + } + nodeC = K(nodeA).next(); + if (nodeC && nodeC.contains(nodeB)) { + return -1; + } + } else { + return rangeA.compareBoundaryPoints(how, rangeB); + } + }, + cloneRange: function () { + return new KRange(this.doc).setStart(this.startContainer, this.startOffset).setEnd(this.endContainer, this.endOffset); + }, + toString: function () { + var rng = this.get(), str = _IERANGE ? rng.text : rng.toString(); + return str.replace(/\r\n|\n|\r/g, ''); + }, + cloneContents: function () { + return _copyAndDelete(this, true, false); + }, + deleteContents: function () { + return _copyAndDelete(this, false, true); + }, + extractContents: function () { + return _copyAndDelete(this, true, true); + }, + insertNode: function (node) { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, + firstChild, lastChild, c, nodeCount = 1; + if (node.nodeName.toLowerCase() === '#document-fragment') { + firstChild = node.firstChild; + lastChild = node.lastChild; + nodeCount = node.childNodes.length; + } + if (sc.nodeType == 1) { + c = sc.childNodes[so]; + if (c) { + sc.insertBefore(node, c); + if (sc === ec) { + eo += nodeCount; + } + } else { + sc.appendChild(node); + } + } else if (sc.nodeType == 3) { + if (so === 0) { + sc.parentNode.insertBefore(node, sc); + if (sc.parentNode === ec) { + eo += nodeCount; + } + } else if (so >= sc.nodeValue.length) { + if (sc.nextSibling) { + sc.parentNode.insertBefore(node, sc.nextSibling); + } else { + sc.parentNode.appendChild(node); + } + } else { + if (so > 0) { + c = sc.splitText(so); + } else { + c = sc; + } + sc.parentNode.insertBefore(node, c); + if (sc === ec) { + ec = c; + eo -= so; + } + } + } + if (firstChild) { + self.setStartBefore(firstChild).setEndAfter(lastChild); + } else { + self.selectNode(node); + } + if (self.compareBoundaryPoints(_END_TO_END, self.cloneRange().setEnd(ec, eo)) >= 1) { + return self; + } + return self.setEnd(ec, eo); + }, + surroundContents: function (node) { + node.appendChild(this.extractContents()); + return this.insertNode(node).selectNode(node); + }, + isControl: function () { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, rng; + return sc.nodeType == 1 && sc === ec && so + 1 === eo && K(sc.childNodes[so]).isControl(); + }, + get: function (hasControlRange) { + var self = this, doc = self.doc, node, rng; + if (!_IERANGE) { + rng = doc.createRange(); + try { + rng.setStart(self.startContainer, self.startOffset); + rng.setEnd(self.endContainer, self.endOffset); + } catch (e) { + } + return rng; + } + if (hasControlRange && self.isControl()) { + rng = doc.body.createControlRange(); + rng.addElement(self.startContainer.childNodes[self.startOffset]); + return rng; + } + var range = self.cloneRange().down(); + rng = doc.body.createTextRange(); + rng.setEndPoint('StartToStart', _getEndRange(range.startContainer, range.startOffset)); + rng.setEndPoint('EndToStart', _getEndRange(range.endContainer, range.endOffset)); + return rng; + }, + html: function () { + return K(this.cloneContents()).outer(); + }, + down: function () { + var self = this; + + function downPos(node, pos, isStart) { + if (node.nodeType != 1) { + return; + } + var children = K(node).children(); + if (children.length === 0) { + return; + } + var left, right, child, offset; + if (pos > 0) { + left = children.eq(pos - 1); + } + if (pos < children.length) { + right = children.eq(pos); + } + if (left && left.type == 3) { + child = left[0]; + offset = child.nodeValue.length; + } + if (right && right.type == 3) { + child = right[0]; + offset = 0; + } + if (!child) { + return; + } + if (isStart) { + self.setStart(child, offset); + } else { + self.setEnd(child, offset); + } + } + + downPos(self.startContainer, self.startOffset, true); + downPos(self.endContainer, self.endOffset, false); + return self; + }, + up: function () { + var self = this; + + function upPos(node, pos, isStart) { + if (node.nodeType != 3) { + return; + } + if (pos === 0) { + if (isStart) { + self.setStartBefore(node); + } else { + self.setEndBefore(node); + } + } else if (pos == node.nodeValue.length) { + if (isStart) { + self.setStartAfter(node); + } else { + self.setEndAfter(node); + } + } + } + + upPos(self.startContainer, self.startOffset, true); + upPos(self.endContainer, self.endOffset, false); + return self; + }, + enlarge: function (toBlock) { + var self = this; + self.up(); + + function enlargePos(node, pos, isStart) { + var knode = K(node), parent; + if (knode.type == 3 || _NOSPLIT_TAG_MAP[knode.name] || !toBlock && knode.isBlock()) { + return; + } + if (pos === 0) { + while (!knode.prev()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartBefore(knode[0]); + } else { + self.setEndBefore(knode[0]); + } + } else if (pos == knode.children().length) { + while (!knode.next()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartAfter(knode[0]); + } else { + self.setEndAfter(knode[0]); + } + } + } + + enlargePos(self.startContainer, self.startOffset, true); + enlargePos(self.endContainer, self.endOffset, false); + return self; + }, + shrink: function () { + var self = this, child, collapsed = self.collapsed; + while (self.startContainer.nodeType == 1 && (child = self.startContainer.childNodes[self.startOffset]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setStart(child, 0); + } + if (collapsed) { + return self.collapse(collapsed); + } + while (self.endContainer.nodeType == 1 && self.endOffset > 0 && (child = self.endContainer.childNodes[self.endOffset - 1]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setEnd(child, child.childNodes.length); + } + return self; + }, + createBookmark: function (serialize) { + var self = this, doc = self.doc, endNode, + startNode = K('<span style="display:none;"></span>', doc)[0]; + startNode.id = '__kindeditor_bookmark_start_' + (_BOOKMARK_ID++) + '__'; + if (!self.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = '__kindeditor_bookmark_end_' + (_BOOKMARK_ID++) + '__'; + } + if (endNode) { + self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode); + } + self.insertNode(startNode).setStartAfter(startNode); + return { + start: serialize ? '#' + startNode.id : startNode, + end: endNode ? (serialize ? '#' + endNode.id : endNode) : null + }; + }, + moveToBookmark: function (bookmark) { + var self = this, doc = self.doc, + start = K(bookmark.start, doc), end = bookmark.end ? K(bookmark.end, doc) : null; + if (!start || start.length < 1) { + return self; + } + self.setStartBefore(start[0]); + start.remove(); + if (end && end.length > 0) { + self.setEndBefore(end[0]); + end.remove(); + } else { + self.collapse(true); + } + return self; + }, + dump: function () { + console.log('--------------------'); + console.log(this.startContainer.nodeType == 3 ? this.startContainer.nodeValue : this.startContainer, this.startOffset); + console.log(this.endContainer.nodeType == 3 ? this.endContainer.nodeValue : this.endContainer, this.endOffset); + } + }); + + function _range(mixed) { + if (!mixed.nodeName) { + return mixed.constructor === KRange ? mixed : _toRange(mixed); + } + return new KRange(mixed); + } + + K.RangeClass = KRange; + K.range = _range; + K.START_TO_START = _START_TO_START; + K.START_TO_END = _START_TO_END; + K.END_TO_END = _END_TO_END; + K.END_TO_START = _END_TO_START; + + + function _nativeCommand(doc, key, val) { + try { + doc.execCommand(key, false, val); + } catch (e) { + } + } + + function _nativeCommandValue(doc, key) { + var val = ''; + try { + val = doc.queryCommandValue(key); + } catch (e) { + } + if (typeof val !== 'string') { + val = ''; + } + return val; + } + + function _getSel(doc) { + var win = _getWin(doc); + return _IERANGE ? doc.selection : win.getSelection(); + } + + function _getRng(doc) { + var sel = _getSel(doc), rng; + try { + if (sel.rangeCount > 0) { + rng = sel.getRangeAt(0); + } else { + rng = sel.createRange(); + } + } catch (e) { + } + if (_IERANGE && (!rng || (!rng.item && rng.parentElement().ownerDocument !== doc))) { + return null; + } + return rng; + } + + function _singleKeyMap(map) { + var newMap = {}, arr, v; + _each(map, function (key, val) { + arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + v = arr[i]; + newMap[v] = val; + } + }); + return newMap; + } + + function _hasAttrOrCss(knode, map) { + return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map); + } + + function _hasAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return false; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return false; + } + var arr = newMap[mapKey].split(','); + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + return true; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + var method = match[1] ? 'css' : 'attr'; + key = match[2]; + var val = match[3] || ''; + if (val === '' && knode[method](key) !== '') { + return true; + } + if (val !== '' && knode[method](key) === val) { + return true; + } + } + return false; + } + + function _removeAttrOrCss(knode, map) { + if (knode.type != 1) { + return; + } + _removeAttrOrCssByKey(knode, map, '*'); + _removeAttrOrCssByKey(knode, map); + } + + function _removeAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return; + } + var arr = newMap[mapKey].split(','), allFlag = false; + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + allFlag = true; + break; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + key = match[2]; + if (match[1]) { + key = _toCamel(key); + if (knode[0].style[key]) { + knode[0].style[key] = ''; + } + } else { + knode.removeAttr(key); + } + } + if (allFlag) { + knode.remove(true); + } + } + + function _getInnerNode(knode) { + var inner = knode; + while (inner.first()) { + inner = inner.first(); + } + return inner; + } + + function _isEmptyNode(knode) { + if (knode.type != 1 || knode.isSingle()) { + return false; + } + return knode.html().replace(/<[^>]+>/g, '') === ''; + } + + + function _mergeWrapper(a, b) { + a = a.clone(true); + var lastA = _getInnerNode(a), childA = a, merged = false; + while (b) { + while (childA) { + if (childA.name === b.name) { + _mergeAttrs(childA, b.attr(), b.css()); + merged = true; + } + childA = childA.first(); + } + if (!merged) { + lastA.append(b.clone(false)); + } + merged = false; + b = b.first(); + } + return a; + } + + function _wrapNode(knode, wrapper) { + wrapper = wrapper.clone(true); + if (knode.type == 3) { + _getInnerNode(wrapper).append(knode.clone(false)); + knode.replaceWith(wrapper); + return wrapper; + } + var nodeWrapper = knode, child; + while ((child = knode.first()) && child.children().length == 1) { + knode = child; + } + child = knode.first(); + var frag = knode.doc.createDocumentFragment(); + while (child) { + frag.appendChild(child[0]); + child = child.next(); + } + wrapper = _mergeWrapper(nodeWrapper, wrapper); + if (frag.firstChild) { + _getInnerNode(wrapper).append(frag); + } + nodeWrapper.replaceWith(wrapper); + return wrapper; + } + + function _mergeAttrs(knode, attrs, styles) { + _each(attrs, function (key, val) { + if (key !== 'style') { + knode.attr(key, val); + } + }); + _each(styles, function (key, val) { + knode.css(key, val); + }); + } + + function _inPreElement(knode) { + while (knode && knode.name != 'body') { + if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) { + return true; + } + knode = knode.parent(); + } + return false; + } + + function KCmd(range) { + this.init(range); + } + + _extend(KCmd, { + init: function (range) { + var self = this, doc = range.doc; + self.doc = doc; + self.win = _getWin(doc); + self.sel = _getSel(doc); + self.range = range; + }, + selection: function (forceReset) { + var self = this, doc = self.doc, rng = _getRng(doc); + self.sel = _getSel(doc); + if (rng) { + self.range = _range(rng); + if (K(self.range.startContainer).name == 'html') { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + } + if (forceReset) { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + }, + select: function (hasDummy) { + hasDummy = _undef(hasDummy, true); + var self = this, sel = self.sel, range = self.range.cloneRange().shrink(), + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + doc = _getDoc(sc), win = self.win, rng, hasU200b = false; + if (hasDummy && sc.nodeType == 1 && range.collapsed) { + if (_IERANGE) { + var dummy = K('<span> </span>', doc); + range.insertNode(dummy[0]); + rng = doc.body.createTextRange(); + try { + rng.moveToElementText(dummy[0]); + } catch (ex) { + } + rng.collapse(false); + rng.select(); + dummy.remove(); + win.focus(); + return self; + } + if (_WEBKIT) { + var children = sc.childNodes; + if (K(sc).isInline() || so > 0 && K(children[so - 1]).isInline() || children[so] && K(children[so]).isInline()) { + range.insertNode(doc.createTextNode('\u200B')); + hasU200b = true; + } + } + } + if (_IERANGE) { + try { + rng = range.get(true); + rng.select(); + } catch (e) { + } + } else { + if (hasU200b) { + range.collapse(false); + } + rng = range.get(true); + sel.removeAllRanges(); + sel.addRange(rng); + if (doc !== document) { + var pos = K(rng.endContainer).pos(); + win.scrollTo(pos.x, pos.y); + } + } + win.focus(); + return self; + }, + wrap: function (val) { + var self = this, doc = self.doc, range = self.range, wrapper; + wrapper = K(val, doc); + if (range.collapsed) { + range.shrink(); + range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]); + return self; + } + if (wrapper.isBlock()) { + var copyWrapper = wrapper.clone(true), child = copyWrapper; + while (child.first()) { + child = child.first(); + } + child.append(range.extractContents()); + range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]); + return self; + } + range.enlarge(); + var bookmark = range.createBookmark(), ancestor = range.commonAncestor(), isStart = false; + K(ancestor).scan(function (node) { + if (!isStart && node == bookmark.start) { + isStart = true; + return; + } + if (isStart) { + if (node == bookmark.end) { + return false; + } + var knode = K(node); + if (_inPreElement(knode)) { + return; + } + if (knode.type == 3 && _trim(node.nodeValue).length > 0) { + var parent; + while ((parent = knode.parent()) && parent.isStyle() && parent.children().length == 1) { + knode = parent; + } + _wrapNode(knode, wrapper); + } + } + }); + range.moveToBookmark(bookmark); + return self; + }, + split: function (isStart, map) { + var range = this.range, doc = range.doc; + var tempRange = range.cloneRange().collapse(isStart); + var node = tempRange.startContainer, pos = tempRange.startOffset, + parent = node.nodeType == 3 ? node.parentNode : node, + needSplit = false, knode; + while (parent && parent.parentNode) { + knode = K(parent); + if (map) { + if (!knode.isStyle()) { + break; + } + if (!_hasAttrOrCss(knode, map)) { + break; + } + } else { + if (_NOSPLIT_TAG_MAP[knode.name]) { + break; + } + } + needSplit = true; + parent = parent.parentNode; + } + if (needSplit) { + var dummy = doc.createElement('span'); + range.cloneRange().collapse(!isStart).insertNode(dummy); + if (isStart) { + tempRange.setStartBefore(parent.firstChild).setEnd(node, pos); + } else { + tempRange.setStart(node, pos).setEndAfter(parent.lastChild); + } + var frag = tempRange.extractContents(), + first = frag.firstChild, last = frag.lastChild; + if (isStart) { + tempRange.insertNode(frag); + range.setStartAfter(last).setEndBefore(dummy); + } else { + parent.appendChild(frag); + range.setStartBefore(dummy).setEndBefore(first); + } + var dummyParent = dummy.parentNode; + if (dummyParent == range.endContainer) { + var prev = K(dummy).prev(), next = K(dummy).next(); + if (prev && next && prev.type == 3 && next.type == 3) { + range.setEnd(prev[0], prev[0].nodeValue.length); + } else if (!isStart) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + dummyParent.removeChild(dummy); + } + return this; + }, + remove: function (map) { + var self = this, doc = self.doc, range = self.range; + range.enlarge(); + if (range.startOffset === 0) { + var ksc = K(range.startContainer), parent; + while ((parent = ksc.parent()) && parent.isStyle() && parent.children().length == 1) { + ksc = parent; + } + range.setStart(ksc[0], 0); + ksc = K(range.startContainer); + if (ksc.isBlock()) { + _removeAttrOrCss(ksc, map); + } + var kscp = ksc.parent(); + if (kscp && kscp.isBlock()) { + _removeAttrOrCss(kscp, map); + } + } + var sc, so; + if (range.collapsed) { + self.split(true, map); + sc = range.startContainer; + so = range.startOffset; + if (so > 0) { + var sb = K(sc.childNodes[so - 1]); + if (sb && _isEmptyNode(sb)) { + sb.remove(); + range.setStart(sc, so - 1); + } + } + var sa = K(sc.childNodes[so]); + if (sa && _isEmptyNode(sa)) { + sa.remove(); + } + if (_isEmptyNode(sc)) { + range.startBefore(sc); + sc.remove(); + } + range.collapse(true); + return self; + } + self.split(true, map); + self.split(false, map); + var startDummy = doc.createElement('span'), endDummy = doc.createElement('span'); + range.cloneRange().collapse(false).insertNode(endDummy); + range.cloneRange().collapse(true).insertNode(startDummy); + var nodeList = [], cmpStart = false; + K(range.commonAncestor()).scan(function (node) { + if (!cmpStart && node == startDummy) { + cmpStart = true; + return; + } + if (node == endDummy) { + return false; + } + if (cmpStart) { + nodeList.push(node); + } + }); + K(startDummy).remove(); + K(endDummy).remove(); + sc = range.startContainer; + so = range.startOffset; + var ec = range.endContainer, eo = range.endOffset; + if (so > 0) { + var startBefore = K(sc.childNodes[so - 1]); + if (startBefore && _isEmptyNode(startBefore)) { + startBefore.remove(); + range.setStart(sc, so - 1); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + var startAfter = K(sc.childNodes[so]); + if (startAfter && _isEmptyNode(startAfter)) { + startAfter.remove(); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + } + var endAfter = K(ec.childNodes[range.endOffset]); + if (endAfter && _isEmptyNode(endAfter)) { + endAfter.remove(); + } + var bookmark = range.createBookmark(true); + _each(nodeList, function (i, node) { + _removeAttrOrCss(K(node), map); + }); + range.moveToBookmark(bookmark); + return self; + }, + commonNode: function (map) { + var range = this.range; + var ec = range.endContainer, eo = range.endOffset, + node = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + + function find(node) { + var child = node, parent = node; + while (parent) { + if (_hasAttrOrCss(K(parent), map)) { + return K(parent); + } + parent = parent.parentNode; + } + while (child && (child = child.lastChild)) { + if (_hasAttrOrCss(K(child), map)) { + return K(child); + } + } + return null; + } + + var cNode = find(node); + if (cNode) { + return cNode; + } + if (node.nodeType == 1 || (ec.nodeType == 3 && eo === 0)) { + var prev = K(node).prev(); + if (prev) { + return find(prev); + } + } + return null; + }, + commonAncestor: function (tagName) { + var range = this.range, + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + startNode = (sc.nodeType == 3 || so === 0) ? sc : sc.childNodes[so - 1], + endNode = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + + function find(node) { + while (node) { + if (node.nodeType == 1) { + if (node.tagName.toLowerCase() === tagName) { + return node; + } + } + node = node.parentNode; + } + return null; + } + + var start = find(startNode), end = find(endNode); + if (start && end && start === end) { + return K(start); + } + return null; + }, + state: function (key) { + var self = this, doc = self.doc, bool = false; + try { + bool = doc.queryCommandState(key); + } catch (e) { + } + return bool; + }, + val: function (key) { + var self = this, doc = self.doc, range = self.range; + + function lc(val) { + return val.toLowerCase(); + } + + key = lc(key); + var val = '', knode; + if (key === 'fontfamily' || key === 'fontname') { + val = _nativeCommandValue(doc, 'fontname'); + val = val.replace(/['"]/g, ''); + return lc(val); + } + if (key === 'formatblock') { + val = _nativeCommandValue(doc, key); + if (val === '') { + knode = self.commonNode({'h1,h2,h3,h4,h5,h6,p,div,pre,address': '*'}); + if (knode) { + val = knode.name; + } + } + if (val === 'Normal') { + val = 'p'; + } + return lc(val); + } + if (key === 'fontsize') { + knode = self.commonNode({'*': '.font-size'}); + if (knode) { + val = knode.css('font-size'); + } + return lc(val); + } + if (key === 'forecolor') { + knode = self.commonNode({'*': '.color'}); + if (knode) { + val = knode.css('color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + if (key === 'hilitecolor') { + knode = self.commonNode({'*': '.background-color'}); + if (knode) { + val = knode.css('background-color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + return val; + }, + toggle: function (wrapper, map) { + var self = this; + if (self.commonNode(map)) { + self.remove(map); + } else { + self.wrap(wrapper); + } + return self.select(); + }, + bold: function () { + return this.toggle('<strong></strong>', { + span: '.font-weight=bold', + strong: '*', + b: '*' + }); + }, + italic: function () { + return this.toggle('<em></em>', { + span: '.font-style=italic', + em: '*', + i: '*' + }); + }, + underline: function () { + return this.toggle('<u></u>', { + span: '.text-decoration=underline', + u: '*' + }); + }, + strikethrough: function () { + return this.toggle('<s></s>', { + span: '.text-decoration=line-through', + s: '*' + }); + }, + forecolor: function (val) { + return this.wrap('<span style="color:' + val + ';"></span>').select(); + }, + hilitecolor: function (val) { + return this.wrap('<span style="background-color:' + val + ';"></span>').select(); + }, + fontsize: function (val) { + return this.wrap('<span style="font-size:' + val + ';"></span>').select(); + }, + fontname: function (val) { + return this.fontfamily(val); + }, + fontfamily: function (val) { + return this.wrap('<span style="font-family:' + val + ';"></span>').select(); + }, + removeformat: function () { + var map = { + '*': '.font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent' + }, + tags = _STYLE_TAG_MAP; + _each(tags, function (key, val) { + map[key] = '*'; + }); + this.remove(map); + return this.select(); + }, + inserthtml: function (val, quickMode) { + var self = this, range = self.range; + if (val === '') { + return self; + } + + function pasteHtml(range, val) { + val = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + val; + var rng = range.get(); + if (rng.item) { + rng.item(0).outerHTML = val; + } else { + rng.pasteHTML(val); + } + var temp = range.doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + var newRange = _toRange(rng); + range.setEnd(newRange.endContainer, newRange.endOffset); + range.collapse(false); + self.select(false); + } + + function insertHtml(range, val) { + var doc = range.doc, + frag = doc.createDocumentFragment(); + K('@' + val, doc).each(function () { + frag.appendChild(this); + }); + range.deleteContents(); + range.insertNode(frag); + range.collapse(false); + self.select(false); + } + + if (_IERANGE && quickMode) { + try { + pasteHtml(range, val); + } catch (e) { + insertHtml(range, val); + } + return self; + } + insertHtml(range, val); + return self; + }, + hr: function () { + return this.inserthtml('<hr />'); + }, + print: function () { + this.win.print(); + return this; + }, + insertimage: function (url, title, width, height, border, align) { + title = _undef(title, ''); + border = _undef(border, 0); + var html = '<img src="' + _escape(url) + '" data-ke-src="' + _escape(url) + '" '; + if (width) { + html += 'width="' + _escape(width) + '" '; + } + if (height) { + html += 'height="' + _escape(height) + '" '; + } + if (title) { + html += 'title="' + _escape(title) + '" '; + } + if (align) { + html += 'align="' + _escape(align) + '" '; + } + html += 'alt="' + _escape(title) + '" '; + html += '/>'; + return this.inserthtml(html); + }, + createlink: function (url, type) { + var self = this, doc = self.doc, range = self.range; + self.select(); + var a = self.commonNode({a: '*'}); + if (a && !range.isControl()) { + range.selectNode(a.get()); + self.select(); + } + var html = '<a href="' + _escape(url) + '" data-ke-src="' + _escape(url) + '" '; + if (type) { + html += ' target="' + _escape(type) + '"'; + } + if (range.collapsed) { + html += '>' + _escape(url) + '</a>'; + return self.inserthtml(html); + } + if (range.isControl()) { + var node = K(range.startContainer.childNodes[range.startOffset]); + html += '></a>'; + node.after(K(html, doc)); + node.next().append(node); + range.selectNode(node[0]); + return self.select(); + } + + function setAttr(node, url, type) { + K(node).attr('href', url).attr('data-ke-src', url); + if (type) { + K(node).attr('target', type); + } else { + K(node).removeAttr('target'); + } + } + + var sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset; + if (sc.nodeType == 1 && sc === ec && so + 1 === eo) { + var child = sc.childNodes[so]; + if (child.nodeName.toLowerCase() == 'a') { + setAttr(child, url, type); + return self; + } + } + _nativeCommand(doc, 'createlink', '__kindeditor_temp_url__'); + K('a[href="__kindeditor_temp_url__"]', doc).each(function () { + setAttr(this, url, type); + }); + return self; + }, + unlink: function () { + var self = this, doc = self.doc, range = self.range; + self.select(); + if (range.collapsed) { + var a = self.commonNode({a: '*'}); + if (a) { + range.selectNode(a.get()); + self.select(); + } + _nativeCommand(doc, 'unlink', null); + if (_WEBKIT && K(range.startContainer).name === 'img') { + var parent = K(range.startContainer).parent(); + if (parent.name === 'a') { + parent.remove(true); + } + } + } else { + _nativeCommand(doc, 'unlink', null); + } + return self; + } + }); + _each(('formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript').split(','), function (i, name) { + KCmd.prototype[name] = function (val) { + var self = this; + self.select(); + _nativeCommand(self.doc, name, val); + if (_IERANGE && _inArray(name, 'justifyleft,justifycenter,justifyright,justifyfull'.split(',')) >= 0) { + self.selection(); + } + if (!_IERANGE || _inArray(name, 'formatblock,selectall,insertorderedlist,insertunorderedlist'.split(',')) >= 0) { + self.selection(); + } + return self; + }; + }); + _each('cut,copy,paste'.split(','), function (i, name) { + KCmd.prototype[name] = function () { + var self = this; + if (!self.doc.queryCommandSupported(name)) { + throw 'not supported'; + } + self.select(); + _nativeCommand(self.doc, name, null); + return self; + }; + }); + + function _cmd(mixed) { + if (mixed.nodeName) { + var doc = _getDoc(mixed); + mixed = _range(doc).selectNodeContents(doc.body).collapse(false); + } + return new KCmd(mixed); + } + + K.CmdClass = KCmd; + K.cmd = _cmd; + + + function _drag(options) { + var moveEl = options.moveEl, + moveFn = options.moveFn, + clickEl = options.clickEl || moveEl, + beforeDrag = options.beforeDrag, + iframeFix = options.iframeFix === undefined ? true : options.iframeFix; + var docs = [document]; + if (iframeFix) { + K('iframe').each(function () { + var src = _formatUrl(this.src || '', 'absolute'); + if (/^https?:\/\//.test(src)) { + return; + } + var doc; + try { + doc = _iframeDoc(this); + } catch (e) { + } + if (doc) { + var pos = K(this).pos(); + K(doc).data('pos-x', pos.x); + K(doc).data('pos-y', pos.y); + docs.push(doc); + } + }); + } + clickEl.mousedown(function (e) { + if (e.button !== 0 && e.button !== 1) { + return; + } + e.stopPropagation(); + var self = clickEl.get(), + x = _removeUnit(moveEl.css('left')), + y = _removeUnit(moveEl.css('top')), + width = moveEl.width(), + height = moveEl.height(), + pageX = e.pageX, + pageY = e.pageY; + if (beforeDrag) { + beforeDrag(); + } + + function moveListener(e) { + e.preventDefault(); + var kdoc = K(_getDoc(e.target)); + var diffX = _round((kdoc.data('pos-x') || 0) + e.pageX - pageX); + var diffY = _round((kdoc.data('pos-y') || 0) + e.pageY - pageY); + moveFn.call(clickEl, x, y, width, height, diffX, diffY); + } + + function selectListener(e) { + e.preventDefault(); + } + + function upListener(e) { + e.preventDefault(); + K(docs).unbind('mousemove', moveListener) + .unbind('mouseup', upListener) + .unbind('selectstart', selectListener); + if (self.releaseCapture) { + self.releaseCapture(); + } + } + + K(docs).mousemove(moveListener) + .mouseup(upListener) + .bind('selectstart', selectListener); + if (self.setCapture) { + self.setCapture(); + } + }); + } + + + function KWidget(options) { + this.init(options); + } + + _extend(KWidget, { + init: function (options) { + var self = this; + self.name = options.name || ''; + self.doc = options.doc || document; + self.win = _getWin(self.doc); + self.x = _addUnit(options.x); + self.y = _addUnit(options.y); + self.z = options.z; + self.width = _addUnit(options.width); + self.height = _addUnit(options.height); + self.div = K('<div style="display:block;"></div>'); + self.options = options; + self._alignEl = options.alignEl; + if (self.width) { + self.div.css('width', self.width); + } + if (self.height) { + self.div.css('height', self.height); + } + if (self.z) { + self.div.css({ + position: 'absolute', + left: self.x, + top: self.y, + 'z-index': self.z + }); + } + if (self.z && (self.x === undefined || self.y === undefined)) { + self.autoPos(self.width, self.height); + } + if (options.cls) { + self.div.addClass(options.cls); + } + if (options.shadowMode) { + self.div.addClass('ke-shadow'); + } + if (options.css) { + self.div.css(options.css); + } + if (options.src) { + K(options.src).replaceWith(self.div); + } else { + K(self.doc.body).append(self.div); + } + if (options.html) { + self.div.html(options.html); + } + if (options.autoScroll) { + if (_IE && _V < 7 || _QUIRKS) { + var scrollPos = _getScrollPos(); + K(self.win).bind('scroll', function (e) { + var pos = _getScrollPos(), + diffX = pos.x - scrollPos.x, + diffY = pos.y - scrollPos.y; + self.pos(_removeUnit(self.x) + diffX, _removeUnit(self.y) + diffY, false); + }); + } else { + self.div.css('position', 'fixed'); + } + } + }, + pos: function (x, y, updateProp) { + var self = this; + updateProp = _undef(updateProp, true); + if (x !== null) { + x = x < 0 ? 0 : _addUnit(x); + self.div.css('left', x); + if (updateProp) { + self.x = x; + } + } + if (y !== null) { + y = y < 0 ? 0 : _addUnit(y); + self.div.css('top', y); + if (updateProp) { + self.y = y; + } + } + return self; + }, + autoPos: function (width, height) { + var x, y, self = this, + w = _removeUnit(width) || 0, + h = _removeUnit(height) || 0, + scrollPos = _getScrollPos(); + if (self._alignEl) { + var knode = K(self._alignEl), + pos = knode.pos(), + diffX = _round(knode[0].clientWidth / 2 - w / 2), + diffY = _round(knode[0].clientHeight / 2 - h / 2); + x = diffX < 0 ? pos.x : pos.x + diffX; + } else { + var docEl = _docElement(self.doc); + x = _round(scrollPos.x + (docEl.clientWidth - w) / 2); + y = _round(scrollPos.y + (docEl.clientHeight - h) / 2); + } + if (K.options.dialogOffset > 0) { + y = scrollPos.y + 20; + } + if (!(_IE && _V < 7 || _QUIRKS)) { + x -= scrollPos.x; + y -= scrollPos.y; + } + return self.pos(x, y); + }, + remove: function () { + var self = this; + if (_IE && _V < 7 || _QUIRKS) { + K(self.win).unbind('scroll'); + } + self.div.remove(); + _each(self, function (i) { + self[i] = null; + }); + return this; + }, + show: function () { + this.div.show(); + return this; + }, + hide: function () { + this.div.hide(); + return this; + }, + draggable: function (options) { + var self = this; + options = options || {}; + options.moveEl = self.div; + options.moveFn = function (x, y, width, height, diffX, diffY) { + if ((x = x + diffX) < 0) { + x = 0; + } + if ((y = y + diffY) < 0) { + y = 0; + } + self.pos(x, y); + }; + _drag(options); + return self; + } + }); + + function _widget(options) { + return new KWidget(options); + } + + K.WidgetClass = KWidget; + K.widget = _widget; + + + function _iframeDoc(iframe) { + iframe = _get(iframe); + return iframe.contentDocument || iframe.contentWindow.document; + } + + var html, _direction = ''; + if ((html = document.getElementsByTagName('html'))) { + _direction = html[0].dir; + } + + function _getInitHtml(options) { + var themesPath = _undef(options.themesPath, ''), + bodyClass = options.bodyClass, + cssPath = options.cssPath, + jsPath = options.jsPath, + cssData = options.cssData; + var arr = [ + (_direction === '' ? '<html>' : '<html dir="' + _direction + '">'), + '<head><meta charset="utf-8" /><title></title>', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/flash.svg);', + ' *background-image:url(' + themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/play.svg);', + ' *background-image:url(' + themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}', + ]; + if (options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + if (!_isArray(cssPath)) { + cssPath = [cssPath]; + } + if (_inArray(K.basePath + 'themes/app.css', cssPath) < 0) { + cssPath.push(K.basePath + 'themes/app.css'); + } + _each(cssPath, function (i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (cssData) { + arr.push('<style>' + cssData + '</style>'); + } + arr.push('</head><body ' + (bodyClass ? 'class="' + bodyClass + '"' : '') + '>'); + if (!_isArray(jsPath)) { + jsPath = [jsPath]; + } + _each(jsPath, function (i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + return arr.join('\n'); + } + + function _elementVal(knode, val) { + if (knode.hasVal()) { + if (val === undefined) { + var html = knode.val(); + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + return html; + } + return knode.val(val); + } + return knode.html(val); + } + + + function KEdit(options) { + this.init(options); + } + + _extend(KEdit, KWidget, { + init: function (options) { + var self = this; + KEdit.parent.init.call(self, options); + self.srcElement = K(options.srcElement); + self.div.addClass('ke-edit'); + self.designMode = _undef(options.designMode, true); + self.beforeGetHtml = options.beforeGetHtml; + self.beforeSetHtml = options.beforeSetHtml; + self.afterSetHtml = options.afterSetHtml; + var isDocumentDomain = location.protocol != 'res:' && location.host.replace(/:\d+/, '') !== document.domain, + srcScript = ('document.open();' + + (isDocumentDomain ? 'document.domain="' + document.domain + '";' : '') + + 'document.close();'), + iframeSrc = _IE ? ' src="javascript:void(function(){' + encodeURIComponent(srcScript) + '}())"' : ''; + self.iframe = K('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"' + iframeSrc + '></iframe>').css('width', '100%'); + self.textarea = K('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css('width', '100%'); + self.tabIndex = isNaN(parseInt(options.tabIndex, 10)) ? self.srcElement.attr('tabindex') : parseInt(options.tabIndex, 10); + self.iframe.attr('tabindex', self.tabIndex); + self.textarea.attr('tabindex', self.tabIndex); + if (self.width) { + self.setWidth(self.width); + } + if (self.height) { + self.setHeight(self.height); + } + if (self.designMode) { + self.textarea.hide(); + } else { + self.iframe.hide(); + } + + function ready() { + var doc = _iframeDoc(self.iframe); + doc.open(); + if (isDocumentDomain) { + doc.domain = document.domain; + } + doc.write(_getInitHtml(self.options)); + doc.close(); + self.win = self.iframe[0].contentWindow; + self.doc = doc; + var cmd = _cmd(doc); + self.afterChange(function (e) { + cmd.selection(); + }); + if (_WEBKIT) { + K(doc).click(function (e) { + if (K(e.target).name === 'img') { + cmd.selection(true); + cmd.range.selectNode(e.target); + cmd.select(); + } + }); + } + if (_IE) { + self._mousedownHandler = function () { + var newRange = cmd.range.cloneRange(); + newRange.shrink(); + if (newRange.isControl()) { + self.blur(); + } + }; + K(document).mousedown(self._mousedownHandler); + K(doc).keydown(function (e) { + if (e.which == 8) { + cmd.selection(); + var rng = cmd.range; + if (rng.isControl()) { + rng.collapse(true); + K(rng.startContainer.childNodes[rng.startOffset]).remove(); + e.preventDefault(); + } + } + }); + } + self.cmd = cmd; + self.html(_elementVal(self.srcElement)); + if (_IE) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.removeAttribute('disabled'); + } else { + doc.designMode = 'on'; + } + if (options.afterCreate) { + options.afterCreate.call(self); + } + } + + if (isDocumentDomain) { + self.iframe.bind('load', function (e) { + self.iframe.unbind('load'); + if (_IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + } + self.div.append(self.iframe); + self.div.append(self.textarea); + self.srcElement.hide(); + !isDocumentDomain && ready(); + }, + setWidth: function (val) { + var self = this; + val = _addUnit(val); + self.width = val; + self.div.css('width', val); + return self; + }, + setHeight: function (val) { + var self = this; + val = _addUnit(val); + self.height = val; + self.div.css('height', val); + self.iframe.css('height', val); + if ((_IE && _V < 8) || _QUIRKS) { + val = _addUnit(_removeUnit(val) - 2); + } + self.textarea.css('height', val); + return self; + }, + remove: function () { + var self = this, doc = self.doc; + K(doc.body).unbind(); + K(doc).unbind(); + K(self.win).unbind(); + if (self._mousedownHandler) { + K(document).unbind('mousedown', self._mousedownHandler); + } + _elementVal(self.srcElement, self.html()); + self.srcElement.show(); + self.iframe.unbind(); + self.textarea.unbind(); + KEdit.parent.remove.call(self); + }, + html: function (val, isFull) { + var self = this, doc = self.doc; + if (self.designMode) { + var body = doc.body; + if (val === undefined) { + if (isFull) { + val = '<!doctype html><html>' + body.parentNode.innerHTML + '</html>'; + } else { + val = body.innerHTML; + } + if (self.beforeGetHtml) { + val = self.beforeGetHtml(val); + } + if (_GECKO && val == '<br />') { + val = ''; + } + return val; + } + if (self.beforeSetHtml) { + val = self.beforeSetHtml(val); + } + if (_IE && _V >= 9) { + val = val.replace(/(<.*?checked=")checked(".*>)/ig, '$1$2'); + } + K(body).html(val); + if (self.afterSetHtml) { + self.afterSetHtml(); + } + return self; + } + if (val === undefined) { + return self.textarea.val(); + } + self.textarea.val(val); + return self; + }, + design: function (bool) { + var self = this, val; + if (bool === undefined ? !self.designMode : bool) { + if (!self.designMode) { + val = self.html(); + self.designMode = true; + self.textarea.hide(); + self.html(val); + var iframe = self.iframe; + var height = _removeUnit(self.height); + iframe.height(height - 2); + iframe.show(); + setTimeout(function () { + iframe.height(height); + }, 0); + } + } else { + if (self.designMode) { + val = self.html(); + self.designMode = false; + self.html(val); + self.iframe.hide(); + self.textarea.show(); + } + } + return self.focus(); + }, + focus: function () { + var self = this; + self.designMode ? self.win.focus() : self.textarea[0].focus(); + return self; + }, + blur: function () { + var self = this; + if (_IE) { + var input = K('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />', self.div); + self.div.append(input); + input[0].focus(); + input.remove(); + } else { + self.designMode ? self.win.blur() : self.textarea[0].blur(); + } + return self; + }, + afterChange: function (fn) { + var self = this, doc = self.doc, body = doc.body; + K(doc).keyup(function (e) { + if (!e.ctrlKey && !e.altKey && _CHANGE_KEY_MAP[e.which]) { + fn(e); + } + }); + K(doc).mouseup(fn).contextmenu(fn); + K(self.win).blur(fn); + + function timeoutHandler(e) { + setTimeout(function () { + fn(e); + }, 1); + } + + K(body).bind('paste', timeoutHandler); + K(body).bind('cut', timeoutHandler); + return self; + } + }); + + function _edit(options) { + return new KEdit(options); + } + + K.EditClass = KEdit; + K.edit = _edit; + K.iframeDoc = _iframeDoc; + + + function _selectToolbar(name, fn) { + var self = this, + knode = self.get(name); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + fn(knode); + } + } + + + function KToolbar(options) { + this.init(options); + } + + _extend(KToolbar, KWidget, { + init: function (options) { + var self = this; + KToolbar.parent.init.call(self, options); + self.disableMode = _undef(options.disableMode, false); + self.noDisableItemMap = _toMap(_undef(options.noDisableItems, [])); + self._itemMap = {}; + self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove', function (e) { + e.preventDefault(); + }).attr('unselectable', 'on'); + + function find(target) { + var knode = K(target); + if (knode.hasClass('ke-outline')) { + return knode; + } + if (knode.hasClass('ke-toolbar-icon')) { + return knode.parent(); + } + } + + function hover(e, method) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + if (knode.hasClass('ke-selected')) { + return; + } + knode[method]('ke-on'); + } + } + + self.div.mouseover(function (e) { + hover(e, 'addClass'); + }) + .mouseout(function (e) { + hover(e, 'removeClass'); + }) + .click(function (e) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + self.options.click.call(this, e, knode.attr('data-name')); + } + }); + }, + get: function (name) { + if (this._itemMap[name]) { + return this._itemMap[name]; + } + return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); + }, + select: function (name) { + _selectToolbar.call(this, name, function (knode) { + knode.addClass('ke-selected'); + }); + return self; + }, + unselect: function (name) { + _selectToolbar.call(this, name, function (knode) { + knode.removeClass('ke-selected').removeClass('ke-on'); + }); + return self; + }, + enable: function (name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-disabled'); + knode.opacity(1); + } + return self; + }, + disable: function (name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-selected').addClass('ke-disabled'); + knode.opacity(0.5); + } + return self; + }, + disableAll: function (bool, noDisableItems) { + var self = this, map = self.noDisableItemMap, item; + if (noDisableItems) { + map = _toMap(noDisableItems); + } + if (bool === undefined ? !self.disableMode : bool) { + K('span.ke-outline', self.div).each(function () { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.disable(knode); + } + }); + self.disableMode = true; + } else { + K('span.ke-outline', self.div).each(function () { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.enable(knode); + } + }); + self.disableMode = false; + } + return self; + } + }); + + function _toolbar(options) { + return new KToolbar(options); + } + + K.ToolbarClass = KToolbar; + K.toolbar = _toolbar; + + + function KMenu(options) { + this.init(options); + } + + _extend(KMenu, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + KMenu.parent.init.call(self, options); + self.centerLineMode = _undef(options.centerLineMode, true); + self.div.addClass('ke-menu ke-menu-' + options.themeType).bind('click,mousedown', function (e) { + e.stopPropagation(); + }).attr('unselectable', 'on'); + }, + addItem: function (item) { + var self = this; + if (item.title === '-') { + self.div.append(K('<div class="ke-menu-separator"></div>')); + return; + } + var itemDiv = K('<div class="ke-menu-item" unselectable="on"></div>'), + leftDiv = K('<div class="ke-inline-block ke-menu-item-left"></div>'), + rightDiv = K('<div class="ke-inline-block ke-menu-item-right"></div>'), + height = _addUnit(item.height), + iconClass = _undef(item.iconClass, ''); + self.div.append(itemDiv); + if (height) { + itemDiv.css('height', height); + rightDiv.css('line-height', height); + } + var centerDiv; + if (self.centerLineMode) { + centerDiv = K('<div class="ke-inline-block ke-menu-item-center"></div>'); + if (height) { + centerDiv.css('height', height); + } + } + itemDiv.mouseover(function (e) { + K(this).addClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.addClass('ke-menu-item-center-on'); + } + }) + .mouseout(function (e) { + K(this).removeClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.removeClass('ke-menu-item-center-on'); + } + }) + .click(function (e) { + item.click.call(K(this)); + e.stopPropagation(); + }) + .append(leftDiv); + if (centerDiv) { + itemDiv.append(centerDiv); + } + itemDiv.append(rightDiv); + if (item.checked) { + iconClass = 'ke-icon-checked'; + } + if (iconClass !== '') { + leftDiv.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url ' + iconClass + '"></span>'); + } + rightDiv.html(item.title); + return self; + }, + remove: function () { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + K('.ke-menu-item', self.div[0]).unbind(); + KMenu.parent.remove.call(self); + return self; + } + }); + + function _menu(options) { + return new KMenu(options); + } + + K.MenuClass = KMenu; + K.menu = _menu; + + + function KColorPicker(options) { + this.init(options); + } + + _extend(KColorPicker, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + KColorPicker.parent.init.call(self, options); + var colors = options.colors || [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#CCCCCC', '#999999', '#666666', '#333333', '#000000'] + ]; + self.selectedColor = (options.selectedColor || '').toLowerCase(); + self._cells = []; + self.div.addClass('ke-colorpicker').bind('click,mousedown', function (e) { + e.stopPropagation(); + }).attr('unselectable', 'on'); + var table = self.doc.createElement('table'); + self.div.append(table); + table.className = 'ke-colorpicker-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var row = table.insertRow(0), cell = row.insertCell(0); + cell.colSpan = colors[0].length; + self._addAttr(cell, '', 'ke-colorpicker-cell-top'); + for (var i = 0; i < colors.length; i++) { + row = table.insertRow(i + 1); + for (var j = 0; j < colors[i].length; j++) { + cell = row.insertCell(j); + self._addAttr(cell, colors[i][j], 'ke-colorpicker-cell'); + } + } + }, + _addAttr: function (cell, color, cls) { + var self = this; + cell = K(cell).addClass(cls); + if (self.selectedColor === color.toLowerCase()) { + cell.addClass('ke-colorpicker-cell-selected'); + } + cell.attr('title', color || self.options.noColor); + cell.mouseover(function (e) { + K(this).addClass('ke-colorpicker-cell-on'); + }); + cell.mouseout(function (e) { + K(this).removeClass('ke-colorpicker-cell-on'); + }); + cell.click(function (e) { + e.stop(); + self.options.click.call(K(this), color); + }); + if (color) { + cell.append(K('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css('background-color', color)); + } else { + cell.html(self.options.noColor); + } + K(cell).attr('unselectable', 'on'); + self._cells.push(cell); + }, + remove: function () { + var self = this; + _each(self._cells, function () { + this.unbind(); + }); + KColorPicker.parent.remove.call(self); + return self; + } + }); + + function _colorpicker(options) { + return new KColorPicker(options); + } + + K.ColorPickerClass = KColorPicker; + K.colorpicker = _colorpicker; + + + function KUploadButton(options) { + this.init(options); + } + + _extend(KUploadButton, { + init: function (options) { + var self = this, + button = K(options.button), + fieldName = options.fieldName || 'file', + url = options.url || '', + title = button.val(), + extraParams = options.extraParams || {}, + cls = button[0].className || '', + target = options.target || 'kindeditor_upload_iframe_' + new Date().getTime(); + options.afterError = options.afterError || function (str) { + K.options.errorMsgHandler(str, "error"); + }; + var hiddenElements = []; + for (var k in extraParams) { + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-inline-block ' + cls + '">', + (options.target ? '' : '<iframe name="' + target + '" style="display:none;"></iframe>'), + (options.form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + url + '">'), + '<span class="ke-button-common">', + hiddenElements.join(''), + '<input type="button" class="ke-button-common ke-button" value="' + title + '" />', + '</span>', + '<input type="file" class="ke-upload-file" name="' + fieldName + '" tabindex="-1" />', + (options.form ? '</div>' : '</form>'), + '</div>'].join(''); + var div = K(html, button.doc); + button.hide(); + button.before(div); + self.div = div; + self.button = button; + self.iframe = options.target ? K('iframe[name="' + target + '"]') : K('iframe', div); + self.form = options.form ? K(options.form) : K('form', div); + self.fileBox = K('.ke-upload-file', div); + var width = options.width || K('.ke-button-common', div).width(); + K('.ke-upload-area', div).width(width); + self.options = options; + }, + submit: function () { + var self = this, + iframe = self.iframe; + if (typeof self.options.beforeUpload == 'function') { + var result = self.options.beforeUpload.call(self); + if (!result) { + return false; + } + } + iframe.bind('load', function () { + iframe.unbind(); + var tempForm = document.createElement('form'); + self.fileBox.before(tempForm); + K(tempForm).append(self.fileBox); + tempForm.reset(); + K(tempForm).remove(true); + var doc = K.iframeDoc(iframe), + pre = doc.getElementsByTagName('pre')[0], + str = '', data; + if (pre) { + str = pre.innerHTML; + } else { + str = doc.body.innerHTML; + } + str = _unescape(str); + iframe[0].src = 'javascript:false'; + try { + data = K.json(str); + } catch (e) { + self.options.afterError.call(self, '<!doctype html><html>' + doc.body.parentNode.innerHTML + '</html>'); + } + if (data) { + self.options.afterUpload.call(self, data); + } + }); + self.form[0].submit(); + return self; + }, + remove: function () { + var self = this; + if (self.fileBox) { + self.fileBox.unbind(); + } + self.iframe.remove(); + self.div.remove(); + self.button.show(); + return self; + } + }); + + function _uploadbutton(options) { + return new KUploadButton(options); + } + + K.UploadButtonClass = KUploadButton; + K.uploadbutton = _uploadbutton; + + + function _createButton(arg) { + arg = arg || {}; + var name = arg.name || '', + btn = K('<a href="javascript:;" class="ke-dialog-btn" title="' + name + '">' + name + '</a>'); + if (arg.click) { + btn.click(arg.click); + } + return btn; + } + + + function KDialog(options) { + this.init(options); + } + + _extend(KDialog, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + options.shadowMode = false; + options.autoScroll = _undef(options.autoScroll, true); + KDialog.parent.init.call(self, options); + var title = options.title, + body = K(options.body, self.doc), + previewBtn = options.previewBtn, + yesBtn = options.yesBtn, + noBtn = options.noBtn, + closeBtn = options.closeBtn, + showMask = _undef(options.showMask, true); + self.div.addClass('ke-dialog ke-animated').bind('click,mousedown', function (e) { + e.stopPropagation(); + }); + var contentDiv = K('<div class="ke-dialog-content"></div>').appendTo(self.div); + var headerDiv = K('<div class="ke-dialog-header"></div>'); + contentDiv.append(headerDiv); + headerDiv.html(title); + self.closeIcon = K('<span class="ke-dialog-icon-close" title="' + closeBtn.name + '"></span>').click(closeBtn.click); + headerDiv.append(self.closeIcon); + self.draggable({ + clickEl: headerDiv, + beforeDrag: options.beforeDrag + }); + var bodyDiv = K('<div class="ke-dialog-body"></div>'); + contentDiv.append(bodyDiv); + bodyDiv.append(body); + var footerDiv = K('<div class="ke-dialog-footer"></div>'); + if (previewBtn || yesBtn || noBtn) { + self.div.append(footerDiv); + contentDiv.height(self.div.height() - footerDiv.height()); + } + _each([ + {btn: previewBtn, name: 'preview'}, + {btn: yesBtn, name: 'yes'}, + {btn: noBtn, name: 'no'} + ], function () { + if (this.btn) { + var button = _createButton(this.btn); + button.addClass('ke-dialog-' + this.name); + footerDiv.append(button); + } + }); + if (self.height) { + bodyDiv.height(_removeUnit(self.height) - headerDiv.height() - footerDiv.height()); + } + self.div.width(self.div.width()); + self.div.height(self.div.height()); + self.mask = null; + if (showMask) { + var docEl = _docElement(self.doc), + docWidth = Math.max(docEl.scrollWidth, docEl.clientWidth), + docHeight = Math.max(docEl.scrollHeight, docEl.clientHeight); + self.mask = _widget({ + x: 0, + y: 0, + z: self.z - 1, + cls: 'ke-dialog-mask', + width: docWidth, + height: docHeight + }); + } + self.autoPos(self.div.width(), self.div.height()); + self.footerDiv = footerDiv; + self.bodyDiv = bodyDiv; + self.headerDiv = headerDiv; + self.isLoading = false; + }, + setMaskIndex: function (z) { + var self = this; + self.mask.div.css('z-index', z); + }, + showLoading: function (msg) { + msg = _undef(msg, ''); + var self = this, body = self.bodyDiv; + self.loading = K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:' + Math.round(body.height() / 3) + 'px;">' + msg + '</div></div>') + .width(body.width()).height(body.height()) + .css('top', self.headerDiv.height() + 'px'); + body.css('visibility', 'hidden').after(self.loading); + self.isLoading = true; + return self; + }, + hideLoading: function () { + this.loading && this.loading.remove(); + this.bodyDiv.css('visibility', 'visible'); + this.isLoading = false; + return this; + }, + remove: function () { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + self.mask && self.mask.remove(); + self.iframeMask && self.iframeMask.remove(); + self.closeIcon.unbind(); + K('input', self.div).unbind(); + K('button', self.div).unbind(); + self.footerDiv.unbind(); + self.bodyDiv.unbind(); + self.headerDiv.unbind(); + K('iframe', self.div).each(function () { + K(this).remove(); + }); + KDialog.parent.remove.call(self); + return self; + } + }); + + function _dialog(options) { + return new KDialog(options); + } + + K.DialogClass = KDialog; + K.dialog = _dialog; + + + function _tabs(options) { + var self = _widget(options), + remove = self.remove, + afterSelect = options.afterSelect, + div = self.div, + liList = []; + div.addClass('ke-tabs') + .bind('contextmenu,mousedown,mousemove', function (e) { + e.preventDefault(); + }); + var ul = K('<ul class="ke-tabs-ul ke-clearfix"></ul>'); + div.append(ul); + self.add = function (tab) { + var li = K('<li class="ke-tabs-li">' + tab.title + '</li>'); + li.data('tab', tab); + liList.push(li); + ul.append(li); + }; + self.selectedIndex = 0; + self.select = function (index) { + self.selectedIndex = index; + _each(liList, function (i, li) { + li.unbind(); + if (i === index) { + li.addClass('ke-tabs-li-selected'); + K(li.data('tab').panel).show(''); + } else { + li.removeClass('ke-tabs-li-selected').removeClass('ke-tabs-li-on') + .mouseover(function () { + K(this).addClass('ke-tabs-li-on'); + }) + .mouseout(function () { + K(this).removeClass('ke-tabs-li-on'); + }) + .click(function () { + self.select(i); + }); + K(li.data('tab').panel).hide(); + } + }); + if (afterSelect) { + afterSelect.call(self, index); + } + }; + self.remove = function () { + _each(liList, function () { + this.remove(); + }); + ul.remove(); + remove.call(self); + }; + return self; + } + + K.tabs = _tabs; + + + function _loadScript(url, fn) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + script = document.createElement('script'); + head.appendChild(script); + K.options.resLoadCache[url] = 1; + script.src = url; + script.charset = 'utf-8'; + script.onload = script.onreadystatechange = function () { + if (!this.readyState || this.readyState === 'loaded') { + if (fn) { + fn(); + } + script.onload = script.onreadystatechange = null; + head.removeChild(script); + } + }; + } + + + function _chopQuery(url) { + var index = url.indexOf('?'); + return index > 0 ? url.substr(0, index) : url; + } + + function _loadStyle(url) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + link = document.createElement('link'), + absoluteUrl = _chopQuery(_formatUrl(url, 'absolute')); + var links = K('link[rel="stylesheet"]', head); + for (var i = 0, len = links.length; i < len; i++) { + if (_chopQuery(_formatUrl(links[i].href, 'absolute')) === absoluteUrl) { + return; + } + } + head.appendChild(link); + K.options.resLoadCache[url] = 1; + link.href = url; + link.rel = 'stylesheet'; + } + + function _ajax(url, fn, method, param, dataType) { + method = method || 'GET'; + dataType = dataType || 'json'; + var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + xhr.open(method, url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + if (fn) { + var data = _trim(xhr.responseText); + if (dataType == 'json') { + data = _json(data); + } + fn(data); + } + } + }; + if (method == 'POST') { + var params = []; + _each(param, function (key, val) { + params.push(encodeURIComponent(key) + '=' + encodeURIComponent(val)); + }); + try { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } catch (e) { + } + xhr.send(params.join('&')); + } else { + xhr.send(null); + } + } + + K.loadScript = _loadScript; + K.loadStyle = _loadStyle; + K.ajax = _ajax; + + + var _plugins = {}; + + function _plugin(name, fn) { + if (name === undefined) { + return _plugins; + } + if (!fn) { + return _plugins[name]; + } + _plugins[name] = fn; + } + + var _language = {}; + + function _parseLangKey(key) { + var match, ns = 'core'; + if ((match = /^(\w+)\.(\w+)$/.exec(key))) { + ns = match[1]; + key = match[2]; + } + return {ns: ns, key: key}; + } + + function _lang(mixed, langType) { + langType = langType === undefined ? K.options.langType : langType; + if (typeof mixed === 'string') { + if (!_language[langType]) { + return 'no language'; + } + var pos = mixed.length - 1; + if (mixed.substr(pos) === '.') { + return _language[langType][mixed.substr(0, pos)]; + } + var obj = _parseLangKey(mixed); + return _language[langType][obj.ns][obj.key]; + } + _each(mixed, function (key, val) { + var obj = _parseLangKey(key); + if (!_language[langType]) { + _language[langType] = {}; + } + if (!_language[langType][obj.ns]) { + _language[langType][obj.ns] = {}; + } + _language[langType][obj.ns][obj.key] = val; + }); + } + + + function _getImageFromRange(range, fn) { + if (range.collapsed) { + return; + } + range = range.cloneRange().up(); + var sc = range.startContainer, so = range.startOffset; + if (!_WEBKIT && !range.isControl()) { + return; + } + var img = K(sc.childNodes[so]); + if (!img || img.name != 'img') { + return; + } + if (fn(img)) { + return img; + } + } + + function _bindContextmenuEvent() { + var self = this, doc = self.edit.doc; + K(doc).contextmenu(function (e) { + if (self.menu) { + self.hideMenu(); + } + if (!self.useContextmenu) { + e.preventDefault(); + return; + } + if (self._contextmenus.length === 0) { + return; + } + var maxWidth = 0, items = []; + _each(self._contextmenus, function () { + if (this.title == '-') { + items.push(this); + return; + } + if (this.cond && this.cond()) { + items.push(this); + if (this.width && this.width > maxWidth) { + maxWidth = this.width; + } + } + }); + while (items.length > 0 && items[0].title == '-') { + items.shift(); + } + while (items.length > 0 && items[items.length - 1].title == '-') { + items.pop(); + } + var prevItem = null; + _each(items, function (i) { + if (this.title == '-' && prevItem.title == '-') { + delete items[i]; + } + prevItem = this; + }); + if (items.length > 0) { + e.preventDefault(); + var pos = K(self.edit.iframe).pos(), + menu = _menu({ + x: pos.x + e.clientX, + themeType: self.themeType, + y: pos.y + e.clientY, + width: maxWidth, + css: {visibility: 'hidden'}, + shadowMode: self.shadowMode + }); + _each(items, function () { + if (this.title) { + menu.addItem(this); + } + }); + var docEl = _docElement(menu.doc), + menuHeight = menu.div.height(); + if (e.clientY + menuHeight >= docEl.clientHeight - 100) { + menu.pos(menu.x, _removeUnit(menu.y) - menuHeight); + } + menu.div.css('visibility', 'visible'); + self.menu = menu; + } + }); + } + + function _bindNewlineEvent() { + var self = this, doc = self.edit.doc, newlineTag = self.newlineTag; + if (_IE && newlineTag !== 'br') { + return; + } + if (_GECKO && _V < 3 && newlineTag !== 'p') { + return; + } + if (_OPERA && _V < 9) { + return; + } + var brSkipTagMap = _toMap('h1,h2,h3,h4,h5,h6,pre,li'), + pSkipTagMap = _toMap('p,h1,h2,h3,h4,h5,h6,pre,li,blockquote'); + + function getAncestorTagName(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor.name; + } + + K(doc).keydown(function (e) { + if (e.which == 39) { + if (self.__startOffset == self.cmd.range.startOffset) { + var tagName = getAncestorTagName(self.cmd.range); + if (tagName != 'body') { + self.appendHtml('<br />') + } + } else { + self.__startOffset = self.cmd.range.startOffset + } + return; + } + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (newlineTag === 'br' && !brSkipTagMap[tagName]) { + e.preventDefault(); + self.insertHtml('<br />' + (_IE && _V < 9 ? '' : '\u200B')); + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '<p>'); + } + }); + K(doc).keyup(function (e) { + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + if (newlineTag == 'br') { + return; + } + if (_GECKO) { + var root = self.cmd.commonAncestor('p'); + var a = self.cmd.commonAncestor('a'); + if (a && a.text() == '') { + a.remove(true); + self.cmd.range.selectNodeContents(root[0]).collapse(true); + self.cmd.select(); + } + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '<p>'); + } + var div = self.cmd.commonAncestor('div'); + if (div) { + var p = K('<p></p>'), + child = div[0].firstChild; + while (child) { + var next = child.nextSibling; + p.append(child); + child = next; + } + div.before(p); + div.remove(); + self.cmd.range.selectNodeContents(p[0]); + self.cmd.select(); + } + }); + } + + function _bindTabEvent() { + var self = this, doc = self.edit.doc; + K(doc).keydown(function (e) { + if (e.which == 9) { + e.preventDefault(); + if (self.afterTab) { + self.afterTab.call(self, e); + return; + } + var cmd = self.cmd, range = cmd.range; + range.shrink(); + if (range.collapsed && range.startContainer.nodeType == 1) { + range.insertNode(K('@ ', doc)[0]); + cmd.select(); + } + self.insertHtml(' '); + } + }); + } + + function _bindFocusEvent() { + var self = this; + K(self.edit.textarea[0], self.edit.win).focus(function (e) { + if (self.afterFocus) { + self.afterFocus.call(self, e); + } + }).blur(function (e) { + if (self.afterBlur) { + self.afterBlur.call(self, e); + } + }); + } + + function _removeBookmarkTag(html) { + return _trim(html.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig, '')); + } + + function _removeTempTag(html) { + return html.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig, ''); + } + + function _addBookmarkToStack(stack, bookmark) { + if (stack.length === 0) { + stack.push(bookmark); + return; + } + var prev = stack[stack.length - 1]; + if (_removeBookmarkTag(bookmark.html) !== _removeBookmarkTag(prev.html)) { + stack.push(bookmark); + } + } + + + function _undoToRedo(fromStack, toStack) { + var self = this, edit = self.edit, + body = edit.doc.body, + range, bookmark; + if (fromStack.length === 0) { + return self; + } + if (edit.designMode) { + range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = body.innerHTML; + } else { + bookmark = { + html: body.innerHTML + }; + } + _addBookmarkToStack(toStack, bookmark); + var prev = fromStack.pop(); + if (_removeBookmarkTag(bookmark.html) === _removeBookmarkTag(prev.html) && fromStack.length > 0) { + prev = fromStack.pop(); + } + if (edit.designMode) { + edit.html(prev.html); + if (prev.start) { + range.moveToBookmark(prev); + self.select(); + } + } else { + K(body).html(_removeBookmarkTag(prev.html)); + } + return self; + } + + function KEditor(options) { + var self = this; + self.options = {}; + + function setOption(key, val) { + if (KEditor.prototype[key] === undefined) { + self[key] = val; + } + self.options[key] = val; + } + + _each(options, function (key, val) { + setOption(key, options[key]); + }); + _each(K.options, function (key, val) { + if (self[key] === undefined) { + setOption(key, val); + } + }); + var se = K(self.srcElement || '<textarea/>'); + if (!self.width) { + self.width = se[0].style.width || se.width(); + } + if (!self.height) { + self.height = se[0].style.height || se.height(); + } + setOption('width', _undef(self.width, self.minWidth)); + setOption('height', _undef(self.height, self.minHeight)); + setOption('width', _addUnit(self.width)); + setOption('height', _addUnit(self.height)); + if (_MOBILE && (!_IOS || _V < 534)) { + self.designMode = false; + } + self.srcElement = se; + self.initContent = ''; + self.plugin = {}; + self.isCreated = false; + self._handlers = {}; + self._contextmenus = []; + self._undoStack = []; + self._redoStack = []; + self._firstAddBookmark = true; + self.menu = self.contextmenu = null; + self.dialogs = []; + } + + KEditor.prototype = { + lang: function (mixed) { + return _lang(mixed, this.langType); + }, + loadPlugin: function (name, fn) { + var self = this; + var _pluginStatus = this._pluginStatus; + if (!_pluginStatus) { + _pluginStatus = this._pluginStatus = {}; + } + if (_plugins[name]) { + if (!_isFunction(_plugins[name])) { + setTimeout(function () { + self.loadPlugin(name, fn); + }, 100); + return self; + } + if (!_pluginStatus[name]) { + _plugins[name].call(self, KindEditor); + _pluginStatus[name] = 'inited'; + } + if (fn) { + fn.call(self); + } + return self; + } + _plugins[name] = 'loading'; + _loadScript(self.pluginsPath + name + '/' + name + '.js?ver=' + encodeURIComponent(K.DEBUG ? _TIME : _VERSION), function () { + setTimeout(function () { + if (_plugins[name]) { + self.loadPlugin(name, fn); + } + }, 0); + }); + return self; + }, + handler: function (key, fn) { + var self = this; + if (!self._handlers[key]) { + self._handlers[key] = []; + } + if (_isFunction(fn)) { + self._handlers[key].push(fn); + return self; + } + _each(self._handlers[key], function () { + fn = this.call(self, fn); + }); + return fn; + }, + clickToolbar: function (name, fn) { + var self = this, key = 'clickToolbar' + name; + if (fn === undefined) { + if (self._handlers[key]) { + return self.handler(key); + } + self.loadPlugin(name, function () { + self.handler(key); + }); + return self; + } + return self.handler(key, fn); + }, + updateState: function () { + var self = this; + _each(('justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,' + + 'subscript,superscript,bold,italic,underline,strikethrough').split(','), function (i, name) { + self.cmd.state(name) ? self.toolbar.select(name) : self.toolbar.unselect(name); + }); + return self; + }, + addContextmenu: function (item) { + this._contextmenus.push(item); + return this; + }, + afterCreate: function (fn) { + return this.handler('afterCreate', fn); + }, + beforeRemove: function (fn) { + return this.handler('beforeRemove', fn); + }, + beforeGetHtml: function (fn) { + return this.handler('beforeGetHtml', fn); + }, + beforeSetHtml: function (fn) { + return this.handler('beforeSetHtml', fn); + }, + afterSetHtml: function (fn) { + return this.handler('afterSetHtml', fn); + }, + create: function () { + var self = this, fullscreenMode = self.fullscreenMode; + if (self.isCreated) { + return self; + } + if (self.srcElement.data('kindeditor')) { + return self; + } + self.srcElement.data('kindeditor', 'true'); + if (fullscreenMode) { + _docElement().style.overflow = 'hidden'; + } else { + _docElement().style.overflow = ''; + } + var width = fullscreenMode ? _docElement().clientWidth + 'px' : self.width, + height = fullscreenMode ? _docElement().clientHeight + 'px' : self.height; + if ((_IE && _V < 8) || _QUIRKS) { + height = _addUnit(_removeUnit(height) + 2); + } + var container = self.container = K(self.layout); + if (fullscreenMode) { + K(document.body).append(container); + } else { + self.srcElement.before(container); + } + var toolbarDiv = K('.toolbar', container), + editDiv = K('.edit', container), + statusbar = self.statusbar = K('.statusbar', container); + container.removeClass('container') + .addClass('ke-container ke-container-' + self.themeType).css('width', width); + if (fullscreenMode) { + container.css({ + position: 'absolute', + left: 0, + top: 0, + 'z-index': 811211 + }); + if (!_GECKO) { + self._scrollPos = _getScrollPos(); + } + window.scrollTo(0, 0); + K(document.body).css({ + 'height': '1px', + 'overflow': 'hidden' + }); + K(document.body.parentNode).css('overflow', 'hidden'); + self._fullscreenExecuted = true; + } else { + if (self._fullscreenExecuted) { + K(document.body).css({ + 'height': '', + 'overflow': '' + }); + K(document.body.parentNode).css('overflow', ''); + } + if (self._scrollPos) { + window.scrollTo(self._scrollPos.x, self._scrollPos.y); + } + } + var htmlList = []; + K.each(self.items, function (i, name) { + if (name == '|') { + htmlList.push('<span class="ke-inline-block ke-separator"></span>'); + } else if (name == '/') { + htmlList.push('<div class="ke-hr"></div>'); + } else { + htmlList.push('<span class="ke-outline" data-name="' + name + '" title="' + self.lang(name) + '" unselectable="on">'); + htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + name + '" unselectable="on"></span></span>'); + } + }); + var toolbar = self.toolbar = _toolbar({ + src: toolbarDiv, + html: htmlList.join(''), + noDisableItems: self.noDisableItems, + click: function (e, name) { + e.stop(); + if (self.menu) { + var menuName = self.menu.name; + self.hideMenu(); + if (menuName === name) { + return; + } + } + self.clickToolbar(name); + } + }); + var editHeight = _removeUnit(height) - toolbar.div.height(); + var edit = self.edit = _edit({ + height: editHeight > 0 && _removeUnit(height) > self.minHeight ? editHeight : self.minHeight, + src: editDiv, + srcElement: self.srcElement, + designMode: self.designMode, + themesPath: self.themesPath, + bodyClass: self.bodyClass, + cssPath: self.cssPath, + jsPath: self.jsPath, + showHelpGrid: self.showHelpGrid, + cssData: self.cssData, + beforeGetHtml: function (html) { + html = self.beforeGetHtml(html); + html = _removeBookmarkTag(_removeTempTag(html)); + return _formatHtml(html, self.filterMode ? self.htmlTags : null, self.urlType, self.wellFormatMode, self.indentChar); + }, + beforeSetHtml: function (html) { + html = _formatHtml(html, self.filterMode ? self.htmlTags : null, '', false); + return self.beforeSetHtml(html); + }, + afterSetHtml: function () { + self.edit = edit = this; + self.afterSetHtml(); + }, + afterCreate: function () { + self.edit = edit = this; + self.cmd = edit.cmd; + self._docMousedownFn = function (e) { + if (self.menu) { + self.hideMenu(); + } + }; + K(edit.doc, document).mousedown(self._docMousedownFn); + _bindContextmenuEvent.call(self); + _bindNewlineEvent.call(self); + _bindTabEvent.call(self); + _bindFocusEvent.call(self); + edit.afterChange(function (e) { + if (!edit.designMode) { + return; + } + self.updateState(); + self.addBookmark(); + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + }); + edit.textarea.keyup(function (e) { + if (!e.ctrlKey && !e.altKey && _INPUT_KEY_MAP[e.which]) { + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + } + }); + if (self.readonlyMode) { + self.readonly(); + } + self.isCreated = true; + if (self.initContent === '') { + self.initContent = self.html(); + } + if (self._undoStack.length > 0) { + var prev = self._undoStack.pop(); + if (prev.start) { + self.html(prev.html); + edit.cmd.range.moveToBookmark(prev); + self.select(); + } + } + self.afterCreate(); + if (self.options.afterCreate) { + self.options.afterCreate.call(self); + } + } + }); + statusbar.removeClass('statusbar').addClass('ke-statusbar') + .append('<span class="ke-inline-block ke-statusbar-center-icon"></span>') + .append('<span class="ke-inline-block ke-statusbar-right-icon"></span>'); + if (self._fullscreenResizeHandler) { + K(window).unbind('resize', self._fullscreenResizeHandler); + self._fullscreenResizeHandler = null; + } + + function initResize() { + if (statusbar.height() === 0) { + setTimeout(initResize, 100); + return; + } + self.resize(width, height, false); + } + + initResize(); + if (fullscreenMode) { + self._fullscreenResizeHandler = function (e) { + if (self.isCreated) { + self.resize(_docElement().clientWidth, _docElement().clientHeight, false); + } + }; + K(window).bind('resize', self._fullscreenResizeHandler); + toolbar.select('fullscreen'); + statusbar.first().css('visibility', 'hidden'); + statusbar.last().css('visibility', 'hidden'); + } else { + if (_GECKO) { + K(window).bind('scroll', function (e) { + self._scrollPos = _getScrollPos(); + }); + } + if (self.resizeType > 0) { + _drag({ + moveEl: container, + clickEl: statusbar, + moveFn: function (x, y, width, height, diffX, diffY) { + height += diffY; + self.resize(null, height); + } + }); + } else { + statusbar.first().css('visibility', 'hidden'); + } + if (self.resizeType === 2) { + _drag({ + moveEl: container, + clickEl: statusbar.last(), + moveFn: function (x, y, width, height, diffX, diffY) { + width += diffX; + height += diffY; + self.resize(width, height); + } + }); + } else { + statusbar.last().css('visibility', 'hidden'); + } + } + return self; + }, + remove: function () { + var self = this; + if (!self.isCreated) { + return self; + } + self.beforeRemove(); + self.srcElement.data('kindeditor', ''); + if (self.menu) { + self.hideMenu(); + } + _each(self.dialogs, function () { + self.hideDialog(); + }); + K(document).unbind('mousedown', self._docMousedownFn); + self.toolbar.remove(); + self.edit.remove(); + self.statusbar.last().unbind(); + self.statusbar.unbind(); + self.container.remove(); + self.container = self.toolbar = self.edit = self.menu = null; + self.dialogs = []; + self.isCreated = false; + return self; + }, + resize: function (width, height, updateProp) { + var self = this; + updateProp = _undef(updateProp, true); + if (width) { + if (!/%/.test(width)) { + width = _removeUnit(width); + width = width < self.minWidth ? self.minWidth : width; + } + self.container.css('width', _addUnit(width)); + if (updateProp) { + self.width = _addUnit(width); + } + } + if (height) { + height = _removeUnit(height); + var editHeight = _removeUnit(height) - self.toolbar.div.height() - self.statusbar.height(); + editHeight = editHeight < self.minHeight ? self.minHeight : editHeight; + self.edit.setHeight(editHeight); + if (updateProp) { + self.height = _addUnit(height); + } + } + return self; + }, + select: function () { + this.isCreated && this.cmd.select(); + return this; + }, + html: function (val) { + var self = this; + if (val === undefined) { + return self.isCreated ? self.edit.html() : _elementVal(self.srcElement); + } + self.isCreated ? self.edit.html(val) : _elementVal(self.srcElement, val); + if (self.isCreated) { + self.cmd.selection(); + } + return self; + }, + fullHtml: function () { + return this.isCreated ? this.edit.html(undefined, true) : ''; + }, + text: function (val) { + var self = this; + if (val === undefined) { + return _trim(self.html().replace(/<(?!img|embed).*?>/ig, '').replace(/ /ig, ' ')); + } else { + return self.html(_escape(val)); + } + }, + isEmpty: function () { + return _trim(this.text().replace(/\r\n|\n|\r/, '')) === ''; + }, + isDirty: function () { + return _trim(this.initContent.replace(/\r\n|\n|\r|t/g, '')) !== _trim(this.html().replace(/\r\n|\n|\r|t/g, '')); + }, + selectedHtml: function () { + var val = this.isCreated ? this.cmd.range.html() : ''; + val = _removeBookmarkTag(_removeTempTag(val)); + return val; + }, + count: function (mode) { + var self = this; + mode = (mode || 'html').toLowerCase(); + if (mode === 'html') { + return self.html().length; + } + if (mode === 'text') { + return self.text().replace(/<(?:img|embed).*?>/ig, 'K').replace(/\r\n|\n|\r/g, '').length; + } + return 0; + }, + exec: function (key) { + key = key.toLowerCase(); + var self = this, cmd = self.cmd, + changeFlag = _inArray(key, 'selectall,copy,paste,print'.split(',')) < 0; + if (changeFlag) { + self.addBookmark(false); + } + cmd[key].apply(cmd, _toArray(arguments, 1)); + if (changeFlag) { + self.updateState(); + self.addBookmark(false); + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + } + return self; + }, + insertHtml: function (val, quickMode) { + if (!this.isCreated) { + return this; + } + val = this.beforeSetHtml(val); + this.exec('inserthtml', val, quickMode); + return this; + }, + appendHtml: function (val) { + this.html(this.html() + val); + if (this.isCreated) { + var cmd = this.cmd; + cmd.range.selectNodeContents(cmd.doc.body).collapse(false); + cmd.select(); + } + return this; + }, + sync: function () { + _elementVal(this.srcElement, this.html()); + return this; + }, + focus: function () { + this.isCreated ? this.edit.focus() : this.srcElement[0].focus(); + return this; + }, + blur: function () { + this.isCreated ? this.edit.blur() : this.srcElement[0].blur(); + return this; + }, + addBookmark: function (checkSize) { + checkSize = _undef(checkSize, true); + var self = this, edit = self.edit, + body = edit.doc.body, + html = _removeTempTag(body.innerHTML), bookmark; + if (checkSize && self._undoStack.length > 0) { + var prev = self._undoStack[self._undoStack.length - 1]; + if (Math.abs(html.length - _removeBookmarkTag(prev.html).length) < self.minChangeSize) { + return self; + } + } + if (edit.designMode && !self._firstAddBookmark) { + var range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = _removeTempTag(body.innerHTML); + range.moveToBookmark(bookmark); + } else { + bookmark = { + html: html + }; + } + self._firstAddBookmark = false; + _addBookmarkToStack(self._undoStack, bookmark); + return self; + }, + undo: function () { + return _undoToRedo.call(this, this._undoStack, this._redoStack); + }, + redo: function () { + return _undoToRedo.call(this, this._redoStack, this._undoStack); + }, + fullscreen: function (bool) { + this.fullscreenMode = (bool === undefined ? !this.fullscreenMode : bool); + this.addBookmark(false); + return this.remove().create(); + }, + readonly: function (isReadonly) { + isReadonly = _undef(isReadonly, true); + var self = this, edit = self.edit, doc = edit.doc; + if (self.designMode) { + self.toolbar.disableAll(isReadonly, []); + } else { + _each(self.noDisableItems, function () { + self.toolbar[isReadonly ? 'disable' : 'enable'](this); + }); + } + if (_IE) { + doc.body.contentEditable = !isReadonly; + } else { + doc.designMode = isReadonly ? 'off' : 'on'; + } + edit.textarea[0].disabled = isReadonly; + }, + createMenu: function (options) { + var self = this, + name = options.name, + knode = self.toolbar.get(name), + pos = knode.pos(); + options.x = pos.x; + options.y = pos.y + knode.height(); + options.z = self.options.zIndex; + options.shadowMode = _undef(options.shadowMode, self.shadowMode); + if (options.selectedColor !== undefined) { + options.cls = 'ke-colorpicker-' + self.themeType; + options.noColor = self.lang('noColor'); + self.menu = _colorpicker(options); + } else { + options.cls = 'ke-menu-' + self.themeType; + options.centerLineMode = false; + self.menu = _menu(options); + } + return self.menu; + }, + hideMenu: function () { + this.menu.remove(); + this.menu = null; + return this; + }, + hideContextmenu: function () { + this.contextmenu.remove(); + this.contextmenu = null; + return this; + }, + createDialog: function (options) { + var self = this; + options.z = self.options.zIndex; + options.shadowMode = _undef(options.shadowMode, self.shadowMode); + options.closeBtn = _undef(options.closeBtn, { + name: self.lang('close'), + click: function (e) { + self.hideDialog(); + if (_IE && self.cmd) { + self.cmd.select(); + } + } + }); + options.noBtn = _undef(options.noBtn, { + name: self.lang(options.yesBtn ? 'no' : 'close'), + click: function (e) { + self.hideDialog(); + if (_IE && self.cmd) { + self.cmd.select(); + } + } + }); + if (self.dialogAlignType != 'page') { + options.alignEl = self.container; + } + options.cls = 'ke-dialog-' + self.themeType; + if (self.dialogs.length > 0) { + var firstDialog = self.dialogs[0], + parentDialog = self.dialogs[self.dialogs.length - 1]; + firstDialog.setMaskIndex(parentDialog.z + 2); + options.z = parentDialog.z + 3; + options.showMask = false; + } + var dialog = _dialog(options); + self.dialogs.push(dialog); + return dialog; + }, + hideDialog: function () { + var self = this; + if (self.dialogs.length > 0) { + self.dialogs.pop().remove(); + } + if (self.dialogs.length > 0) { + var firstDialog = self.dialogs[0], + parentDialog = self.dialogs[self.dialogs.length - 1]; + firstDialog.setMaskIndex(parentDialog.z - 1); + } + return self; + }, + errorDialog: function (html) { + var self = this; + var dialog = self.createDialog({ + width: 750, + title: self.lang('uploadError'), + body: '<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>' + }); + var iframe = K('iframe', dialog.div), doc = K.iframeDoc(iframe); + doc.open(); + doc.write(html); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + return self; + } + }; + + function _editor(options) { + return new KEditor(options); + } + + var _instances = []; + + function _create(expr, options) { + options = options || {}; + options.basePath = _undef(options.basePath, K.basePath); + options.themesPath = _undef(options.themesPath, options.basePath + 'themes/'); + options.langPath = _undef(options.langPath, options.basePath + 'lang/'); + options.pluginsPath = _undef(options.pluginsPath, options.basePath + 'plugins/'); + if (typeof options.errorMsgHandler == "function") { + K.options.errorMsgHandler = options.errorMsgHandler; + } + if (_undef(options.loadStyleMode, K.options.loadStyleMode)) { + var themeType = _undef(options.themeType, K.options.themeType); + _loadStyle(options.themesPath + themeType + '/editor.min.css'); + } + + function create(editor) { + _each(_plugins, function (name, fn) { + if (_isFunction(fn)) { + fn.call(editor, KindEditor); + if (!editor._pluginStatus) { + editor._pluginStatus = {}; + } + editor._pluginStatus[name] = 'inited'; + } + }); + return editor.create(); + } + + var knode = K(expr); + if (!knode || knode.length === 0) { + return; + } + if (knode.length > 1) { + knode.each(function () { + _create(this, options); + }); + return _instances[0]; + } + options.srcElement = knode[0]; + var editor = new KEditor(options); + _instances.push(editor); + if (_language[editor.langType]) { + return create(editor); + } + _loadScript(editor.langPath + editor.langType + '.js?ver=' + encodeURIComponent(K.DEBUG ? _TIME : _VERSION), function () { + create(editor); + }); + return editor; + } + + function _eachEditor(expr, fn) { + K(expr).each(function (i, el) { + K.each(_instances, function (j, editor) { + if (editor && editor.srcElement[0] == el) { + fn.call(editor, j); + return false; + } + }); + }); + } + + K.remove = function (expr) { + _eachEditor(expr, function (i) { + this.remove(); + _instances.splice(i, 1); + }); + }; + K.sync = function (expr) { + _eachEditor(expr, function () { + this.sync(); + }); + }; + K.html = function (expr, val) { + _eachEditor(expr, function () { + this.html(val); + }); + }; + K.insertHtml = function (expr, val) { + _eachEditor(expr, function () { + this.insertHtml(val); + }); + }; + K.appendHtml = function (expr, val) { + _eachEditor(expr, function () { + this.appendHtml(val); + }); + }; + + + if (_IE && _V < 7) { + _nativeCommand(document, 'BackgroundImageCache', true); + } + K.EditorClass = KEditor; + K.editor = _editor; + K.create = _create; + K.instances = _instances; + K.plugin = _plugin; + K.lang = _lang; + + + _plugin('core', function (K) { + var self = this, + shortcutKeys = { + undo: 'Z', redo: 'Y', bold: 'B', italic: 'I', underline: 'U', print: 'P', selectall: 'A' + }; + self.afterSetHtml(function () { + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + }); + self.afterCreate(function () { + if (self.syncType != 'form') { + return; + } + var el = K(self.srcElement), hasForm = false; + while ((el = el.parent())) { + if (el.name == 'form') { + hasForm = true; + break; + } + } + if (hasForm) { + el.bind('submit', function (e) { + self.sync(); + K(window).bind('unload', function () { + self.edit.textarea.remove(); + }); + }); + var resetBtn = K('[type="reset"]', el); + resetBtn.click(function () { + self.html(self.initContent); + self.cmd.selection(); + }); + self.beforeRemove(function () { + el.unbind(); + resetBtn.unbind(); + }); + } + }); + self.clickToolbar('source', function () { + if (self.edit.designMode) { + self.toolbar.disableAll(true); + self.edit.design(false); + self.toolbar.select('source'); + } else { + self.toolbar.disableAll(false); + self.edit.design(true); + self.toolbar.unselect('source'); + if (_GECKO) { + setTimeout(function () { + self.cmd.selection(); + }, 0); + } else { + self.cmd.selection(); + } + } + self.designMode = self.edit.designMode; + }); + self.afterCreate(function () { + if (!self.designMode) { + self.toolbar.disableAll(true).select('source'); + } + }); + self.clickToolbar('fullscreen', function () { + self.fullscreen(); + }); + if (self.fullscreenShortcut) { + var loaded = false; + self.afterCreate(function () { + K(self.edit.doc, self.edit.textarea).keyup(function (e) { + if (e.which == 27) { + setTimeout(function () { + self.fullscreen(); + }, 0); + } + }); + if (loaded) { + if (_IE && !self.designMode) { + return; + } + self.focus(); + } + if (!loaded) { + loaded = true; + } + }); + } + _each('undo,redo'.split(','), function (i, name) { + if (shortcutKeys[name]) { + self.afterCreate(function () { + _ctrl(this.edit.doc, shortcutKeys[name], function () { + self.clickToolbar(name); + }); + }); + } + self.clickToolbar(name, function () { + self[name](); + }); + }); + self.clickToolbar('formatblock', function () { + var blocks = self.lang('formatblock.formatBlock'), + heights = { + h1: 28, + h2: 24, + h3: 18, + H4: 14, + p: 12 + }, + curVal = self.cmd.val('formatblock'), + menu = self.createMenu({ + name: 'formatblock', + width: self.langType == 'en' ? 200 : 150 + }); + _each(blocks, function (key, val) { + var style = 'font-size:' + heights[key] + 'px;'; + if (key.charAt(0) === 'h') { + style += 'font-weight:bold;'; + } + menu.addItem({ + title: '<span style="' + style + '" unselectable="on">' + val + '</span>', + height: heights[key] + 12, + checked: (curVal === key || curVal === val), + click: function () { + self.select().exec('formatblock', '<' + key + '>').hideMenu(); + } + }); + }); + }); + self.clickToolbar('fontname', function () { + var curVal = self.cmd.val('fontname'), + menu = self.createMenu({ + name: 'fontname', + width: 150 + }); + console + _each(self.lang('fontname.fontName'), function (key, val) { + menu.addItem({ + title: '<span style="font-family: ' + key + ';" unselectable="on">' + val + '</span>', + checked: (curVal === key.toLowerCase() || curVal === val.toLowerCase()), + click: function () { + self.exec('fontname', key).hideMenu(); + } + }); + }); + }); + self.clickToolbar('fontsize', function () { + var curVal = self.cmd.val('fontsize'), + menu = self.createMenu({ + name: 'fontsize', + width: 150 + }); + _each(self.fontSizeTable, function (i, val) { + menu.addItem({ + title: '<span style="font-size:' + val + ';" unselectable="on">' + val + '</span>', + height: _removeUnit(val) + 12, + checked: curVal === val, + click: function () { + self.exec('fontsize', val).hideMenu(); + } + }); + }); + }); + _each('forecolor,hilitecolor'.split(','), function (i, name) { + self.clickToolbar(name, function () { + self.createMenu({ + name: name, + selectedColor: self.cmd.val(name) || 'default', + colors: self.colorTable, + click: function (color) { + self.exec(name, color).hideMenu(); + } + }); + }); + }); + _each(('cut,copy,paste').split(','), function (i, name) { + self.clickToolbar(name, function () { + self.focus(); + try { + self.exec(name, null); + } catch (e) { + K.options.errorMsgHandler(self.lang(name + 'Error'), "error"); + } + }); + }); + self.clickToolbar('about', function () { + var html = '<div style="margin:20px;">' + + '<div>NKeditor ' + _VERSION + '</div>' + + '<div>Forked from KindEditor By BlackFox. <a href="http://git.oschina.net/blackfox/kindeditor">Git项目地址</a>.</div>' + + '</div>'; + self.createDialog({ + name: 'about', + width: 350, + title: self.lang('about'), + body: html + }); + }); + self.plugin.getSelectedLink = function () { + return self.cmd.commonAncestor('a'); + }; + self.plugin.getSelectedImage = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return !/^ke-\w+$/i.test(img[0].className); + }); + }; + self.plugin.getSelectedFlash = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-flash'; + }); + }; + self.plugin.getSelectedMedia = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-media' || img[0].className == 'ke-rm'; + }); + }; + self.plugin.getSelectedAnchor = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-anchor'; + }); + }; + _each('link,image,flash,media,anchor'.split(','), function (i, name) { + var uName = name.charAt(0).toUpperCase() + name.substr(1); + _each('edit,delete'.split(','), function (j, val) { + self.addContextmenu({ + title: self.lang(val + uName), + click: function () { + self.loadPlugin(name, function () { + self.plugin[name][val](); + self.hideMenu(); + }); + }, + cond: self.plugin['getSelected' + uName], + width: 150, + iconClass: val == 'edit' ? 'ke-icon-' + name : undefined + }); + }); + self.addContextmenu({title: '-'}); + }); + self.plugin.getSelectedTable = function () { + return self.cmd.commonAncestor('table'); + }; + self.plugin.getSelectedRow = function () { + return self.cmd.commonAncestor('tr'); + }; + self.plugin.getSelectedCell = function () { + return self.cmd.commonAncestor('td'); + }; + _each(('prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,' + + 'rowsplit,colsplit,coldelete,rowdelete,insert,delete').split(','), function (i, val) { + var cond = _inArray(val, ['prop', 'delete']) < 0 ? self.plugin.getSelectedCell : self.plugin.getSelectedTable; + self.addContextmenu({ + title: self.lang('table' + val), + click: function () { + self.loadPlugin('table', function () { + self.plugin.table[val](); + self.hideMenu(); + }); + }, + cond: cond, + width: 170, + iconClass: 'ke-icon-table' + val + }); + }); + self.addContextmenu({title: '-'}); + _each(('selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript,hr,print,' + + 'bold,italic,underline,strikethrough,removeformat,unlink').split(','), function (i, name) { + if (shortcutKeys[name]) { + self.afterCreate(function () { + _ctrl(this.edit.doc, shortcutKeys[name], function () { + self.cmd.selection(); + self.clickToolbar(name); + }); + }); + } + self.clickToolbar(name, function () { + self.focus().exec(name, null); + }); + }); + self.afterCreate(function () { + var doc = self.edit.doc, cmd, bookmark, div, + cls = '__kindeditor_paste__', pasting = false; + + function movePastedData() { + cmd.range.moveToBookmark(bookmark); + cmd.select(); + if (_WEBKIT) { + K('div.' + cls, div).each(function () { + K(this).after('<br />').remove(true); + }); + K('span.Apple-style-span', div).remove(true); + K('span.Apple-tab-span', div).remove(true); + K('span[style]', div).each(function () { + if (K(this).css('white-space') == 'nowrap') { + K(this).remove(true); + } + }); + K('meta', div).remove(); + } + var html = div[0].innerHTML; + div.remove(); + if (html === '') { + return; + } + if (_WEBKIT) { + html = html.replace(/(<br>)\1/ig, '$1'); + } + if (self.pasteType === 2) { + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + if (/schemas-microsoft-com|worddocument|mso-\w+/i.test(html)) { + html = _clearMsWord(html, self.filterMode ? self.htmlTags : K.options.htmlTags); + } else { + html = _formatHtml(html, self.filterMode ? self.htmlTags : null); + html = self.beforeSetHtml(html); + } + } + if (self.pasteType === 1) { + html = html.replace(/ /ig, ' '); + html = html.replace(/\n\s*\n/g, '\n'); + html = html.replace(/<br[^>]*>/ig, '\n'); + html = html.replace(/<\/p><p[^>]*>/ig, '\n'); + html = html.replace(/<[^>]+>/g, ''); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + if (/\n/.test(html)) { + html = html.replace(/^/, '<p>').replace(/$/, '<br /></p>').replace(/\n/g, '<br /></p><p>'); + } + } else { + html = html.replace(/\n/g, '<br />$&'); + } + } + self.insertHtml(html, true); + } + + K(doc.body).bind('paste', function (e) { + if (self.pasteType === 0) { + e.stop(); + return; + } + if (pasting) { + return; + } + pasting = true; + K('div.' + cls, doc).remove(); + cmd = self.cmd.selection(); + bookmark = cmd.range.createBookmark(); + div = K('<div class="' + cls + '"></div>', doc).css({ + position: 'absolute', + width: '1px', + height: '1px', + overflow: 'hidden', + left: '-1981px', + top: K(bookmark.start).pos().y + 'px', + 'white-space': 'nowrap' + }); + K(doc.body).append(div); + if (_IE) { + var rng = cmd.range.get(true); + rng.moveToElementText(div[0]); + rng.select(); + rng.execCommand('paste'); + e.preventDefault(); + } else { + cmd.range.selectNodeContents(div[0]); + cmd.select(); + div[0].tabIndex = -1; + div[0].focus(); + } + setTimeout(function () { + movePastedData(); + pasting = false; + }, 0); + }); + }); + self.beforeGetHtml(function (html) { + if (_IE && _V <= 8) { + html = html.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, tag) { + return unescape(tag); + }); + html = html.replace(/(<input)((?:\s+[^>]*)?>)/ig, function ($0, $1, $2) { + if (!/\s+type="[^"]+"/i.test($0)) { + return $1 + ' type="text"' + $2; + } + return $0; + }); + } + return html.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig, function ($0, $1, $2, $3) { + return $1 + _unescape($2).replace(/\s+/g, ' ') + $3; + }) + .replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig, function (full) { + var imgAttrs = _getAttrList(full); + var styles = _getCssList(imgAttrs.style || ''); + var attrs = _mediaAttrs(imgAttrs['data-ke-tag']); + var width = _undef(styles.width, ''); + var height = _undef(styles.height, ''); + if (/px/i.test(width)) { + width = _removeUnit(width); + } + if (/px/i.test(height)) { + height = _removeUnit(height); + } + attrs.width = _undef(imgAttrs.width, width); + attrs.height = _undef(imgAttrs.height, height); + return _mediaEmbed(attrs); + }) + .replace(/<img[^>]*class="?ke-anchor"?[^>]*>/ig, function (full) { + var imgAttrs = _getAttrList(full); + return '<a name="' + unescape(imgAttrs['data-ke-name']) + '"></a>'; + }) + .replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, attr, code) { + return '<script' + unescape(attr) + '>' + unescape(code) + '</script>'; + }) + .replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, attr, code) { + return '<noscript' + unescape(attr) + '>' + unescape(code) + '</noscript>'; + }) + .replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig, function (full, start, src, end) { + full = full.replace(/(\s+(?:href|src)=")[^"]*(")/i, function ($0, $1, $2) { + return $1 + _unescape(src) + $2; + }); + full = full.replace(/\s+data-ke-src="[^"]*"/i, ''); + return full; + }) + .replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/ig, function (full, start, end) { + return start + end; + }); + }); + self.beforeSetHtml(function (html) { + if (_IE && _V <= 8) { + html = html.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/ig, function (full) { + var attrs = _getAttrList(full); + var styles = _getCssList(attrs.style || ''); + if (styles.display == 'none') { + return '<div class="ke-display-none" data-ke-input-tag="' + escape(full) + '"></div>'; + } + return full; + }); + } + return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig, function (full) { + var attrs = _getAttrList(full); + attrs.src = _undef(attrs.src, ''); + attrs.width = _undef(attrs.width, 0); + attrs.height = _undef(attrs.height, 0); + return _mediaImg(self.themesPath + 'common/blank.gif', attrs); + }) + .replace(/<video[^>]*type="([^"]+)"[^>]*>(?:<\/video>)?/ig, function (full) { + var attrs = _getAttrList(full); + attrs.src = _undef(attrs.src, ''); + attrs.width = _undef(attrs.width, 0); + attrs.height = _undef(attrs.height, 0); + return _mediaImg(self.themesPath + 'common/blank.gif', attrs); + }) + .replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig, function (full) { + var attrs = _getAttrList(full); + if (attrs.href !== undefined) { + return full; + } + return '<img class="ke-anchor" src="' + self.themesPath + 'common/anchor.gif" data-ke-name="' + escape(attrs.name) + '" />'; + }) + .replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig, function (full, attr, code) { + return '<div class="ke-script" data-ke-script-attr="' + escape(attr) + '">' + escape(code) + '</div>'; + }) + .replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig, function (full, attr, code) { + return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(attr) + '">' + escape(code) + '</div>'; + }) + .replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig, function (full, start, key, src, end) { + if (full.match(/\sdata-ke-src="[^"]*"/i)) { + return full; + } + full = start + key + '="' + src + '"' + ' data-ke-src="' + _escape(src) + '"' + end; + return full; + }) + .replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig, function (full, start, end) { + return start + 'data-ke-' + end; + }) + .replace(/<table[^>]*\s+border="0"[^>]*>/ig, function (full) { + if (full.indexOf('ke-zeroborder') >= 0) { + return full; + } + return _addClassToTag(full, 'ke-zeroborder'); + }); + }); + }); + + +})(window); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.lang({ + source: 'HTML代码', + preview: '预览', + undo: '后退(Ctrl+Z)', + redo: '前进(Ctrl+Y)', + cut: '剪切(Ctrl+X)', + copy: '复制(Ctrl+C)', + paste: '粘贴(Ctrl+V)', + plainpaste: '粘贴为无格式文本', + wordpaste: '从Word粘贴', + selectall: '全选(Ctrl+A)', + justifyleft: '左对齐', + justifycenter: '居中', + justifyright: '右对齐', + justifyfull: '两端对齐', + insertorderedlist: '编号', + insertunorderedlist: '项目符号', + indent: '增加缩进', + outdent: '减少缩进', + subscript: '下标', + superscript: '上标', + formatblock: '段落', + fontname: '字体', + fontsize: '文字大小', + forecolor: '文字颜色', + hilitecolor: '文字背景', + bold: '粗体(Ctrl+B)', + italic: '斜体(Ctrl+I)', + underline: '下划线(Ctrl+U)', + strikethrough: '删除线', + removeformat: '删除格式', + image: '图片', + multiimage: '批量图片上传', + graft: '涂鸦', + flash: 'Flash', + media: '视音频', + table: '表格', + tablecell: '单元格', + hr: '插入横线', + emoticons: '插入表情', + link: '超级链接', + unlink: '取消超级链接', + fullscreen: '全屏显示', + about: '关于', + print: '打印(Ctrl+P)', + filemanager: '文件空间', + code: '插入程序代码', + quote: '插入引用', + map: 'Google地图', + baidumap: '百度地图', + lineheight: '行距', + clearhtml: '清理HTML代码', + pagebreak: '插入分页符', + quickformat: '一键排版', + insertfile: '插入文件', + template: '插入模板', + anchor: '锚点', + yes: '确定', + no: '取消', + close: '关闭', + editImage: '图片属性', + deleteImage: '删除图片', + editFlash: 'Flash属性', + deleteFlash: '删除Flash', + editMedia: '视音频属性', + deleteMedia: '删除视音频', + editLink: '超级链接属性', + deleteLink: '取消超级链接', + editAnchor: '锚点属性', + deleteAnchor: '删除锚点', + tableprop: '表格属性', + tablecellprop: '单元格属性', + tableinsert: '插入表格', + tabledelete: '删除表格', + tablecolinsertleft: '左侧插入列', + tablecolinsertright: '右侧插入列', + tablerowinsertabove: '上方插入行', + tablerowinsertbelow: '下方插入行', + tablerowmerge: '向下合并单元格', + tablecolmerge: '向右合并单元格', + tablerowsplit: '拆分行', + tablecolsplit: '拆分列', + tablecoldelete: '删除列', + tablerowdelete: '删除行', + noColor: '无颜色', + pleaseSelectFile: '请选择文件。', + invalidImg: "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。", + invalidMedia: "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth: "宽度必须为数字。", + invalidHeight: "高度必须为数字。", + invalidBorder: "边框必须为数字。", + invalidUrl: "请输入有效的URL地址。", + invalidRows: '行数为必选项,只允许输入大于0的数字。', + invalidCols: '列数为必选项,只允许输入大于0的数字。', + invalidPadding: '边距必须为数字。', + invalidSpacing: '间距必须为数字。', + invalidJson: '服务器发生故障。', + uploadSuccess: '上传成功。', + cutError: '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。', + copyError: '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。', + pasteError: '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。', + ajaxLoading: '加载中,请稍候 ...', + uploadLoading: '上传中,请稍候 ...', + uploadError: '上传错误', + 'plainpaste.comment': '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'wordpaste.comment': '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'code.pleaseInput': '请输入程序代码。', + 'link.url': 'URL', + 'link.linkType': '打开类型', + 'link.newWindow': '新窗口', + 'link.selfWindow': '当前窗口', + 'flash.url': 'URL', + 'flash.width': '宽度', + 'flash.height': '高度', + 'flash.upload': '上传', + 'flash.viewServer': '文件空间', + 'media.url': 'URL', + 'media.width': '宽度', + 'media.height': '高度', + 'media.autostart': '自动播放', + 'media.upload': '上传', + 'media.viewServer': '文件空间', + 'image.remoteImage': '网络图片', + 'image.localImage': '本地上传', + 'image.remoteUrl': '图片地址', + 'image.localUrl': '上传文件', + 'image.size': '图片大小', + 'image.width': '宽', + 'image.height': '高', + 'image.resetSize': '重置大小', + 'image.align': '对齐方式', + 'image.defaultAlign': '默认方式', + 'image.leftAlign': '左对齐', + 'image.rightAlign': '右对齐', + 'image.imgTitle': '图片说明', + 'image.upload': '浏览...', + 'image.viewServer': '图片空间', + 'multiimage.title': '多图上传', + 'multiimage.uploadDesc': '共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.', + 'multiimage.startUpload': '开始上传', + 'multiimage.noListUrl': '无法获取图片,请先配置 fileManagerJson.', + 'multiimage.noSearchUrl': '无法进行图片搜索,请先配置 imageSearchJson.', + 'multiimage.noDataText': '(⊙o⊙)亲,没有多数据了。', + 'multiimage.closeText': '关闭对话框', + 'multiimage.confirmBtnText': '确定', + 'multiimage.cancelBtnText': '取消', + 'multiimage.loadMoreData': '往下拉动滚动条可以加载更多数据.', + 'multiimage.depJQueryError': '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'multiimage.localUpload': '本地上传', + 'multiimage.fileServer': '文件服务器', + 'multiimage.imgSearch': '图片搜索', + 'multiimage.selectFile': '点击选择图片', + 'multiimage.continueAdd': '继续添加', + 'multiimage.searchBtn': '搜索一下', + 'multiimage.searchPlaceholder': '请输入搜索关键词', + 'multiimage.searchClear': '清空搜索', + 'multiimage.noFileAdded': '请至少添加一个文件!', + 'multiimage.uploading': '正在上传', + 'multiimage.fileNotUpload': '您还有文件没有上传!', + 'multiimage.uploadLimit': '您本次最多上传 <%=uploadLimit%> 个文件.', + 'multiimage.sizeLimit': '文件大小不能超过 <%=sizeLimit%> KB.', + 'multiimage.invalidExt': '非法的文件后缀 <%=invalidExt%>.', + 'multiimage.remove': '删除', + 'multiimage.rotateRight': '向右旋转', + 'multiimage.rotateLeft': '向左旋转', + 'multiimage.uploadFail': '发生异常,上传失败!', + 'multiimage.noFileSelected': '请至少选择一个文件或一张图片.', + 'filemanager.noDataText': '(⊙o⊙)亲,没有多数据了。', + 'filemanager.title': '文件服务器', + 'filemanager.noListUrl': '无法获取图片,请先配置 fileManagerJson.', + 'filemanager.closeText': '关闭对话框', + 'filemanager.confirmBtnText': '确定', + 'filemanager.cancelBtnText': '取消', + 'filemanager.loadMoreData': '往下拉动滚动条可以加载更多数据.', + 'filemanager.depJQueryError': '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'filemanager.fileType': '类型', + 'graft.btnText': '保存并插入涂鸦', + 'graft.uploadSuccess': '涂鸦上传成功', + 'graft.uploadFaild': '涂鸦上传失败', + 'graft.empty': '您没有在画布上绘制任何图像', + 'insertfile.url': 'URL', + 'insertfile.title': '文件说明', + 'insertfile.upload': '上传', + 'insertfile.viewServer': '文件空间', + 'table.cells': '单元格数', + 'table.rows': '行数', + 'table.cols': '列数', + 'table.size': '大小', + 'table.width': '宽度', + 'table.height': '高度', + 'table.percent': '%', + 'table.px': 'px', + 'table.space': '边距间距', + 'table.padding': '边距', + 'table.spacing': '间距', + 'table.align': '对齐方式', + 'table.textAlign': '水平对齐', + 'table.verticalAlign': '垂直对齐', + 'table.alignDefault': '默认', + 'table.alignLeft': '左对齐', + 'table.alignCenter': '居中', + 'table.alignRight': '右对齐', + 'table.alignTop': '顶部', + 'table.alignMiddle': '中部', + 'table.alignBottom': '底部', + 'table.alignBaseline': '基线', + 'table.border': '边框', + 'table.borderWidth': '宽度', + 'table.borderColor': '颜色', + 'table.backgroundColor': '背景颜色', + 'map.address': '地址: ', + 'map.search': '搜索', + 'baidumap.address': '地址: ', + 'baidumap.search': '搜索', + 'baidumap.insertDynamicMap': '插入动态地图', + 'anchor.name': '锚点名称', + 'formatblock.formatBlock': { + h1: '标题 1', + h2: '标题 2', + h3: '标题 3', + h4: '标题 4', + p: '正 文' + }, + 'fontname.fontName': { + 'SimSun': '宋体', + 'NSimSun': '新宋体', + 'FangSong': '仿宋', + 'KaiTi': '楷体', + 'SimHei': '黑体', + 'Microsoft YaHei': '微软雅黑', + 'Arial': 'Arial', + 'Arial Black': 'Arial Black', + 'Times New Roman': 'Times New Roman', + 'Courier New': 'Courier New', + 'Tahoma': 'Tahoma', + 'Verdana': 'Verdana' + }, + 'lineheight.lineHeight': [ + {'1': '单倍行距'}, + {'1.5': '1.5倍行距'}, + {'2': '2倍行距'}, + {'2.5': '2.5倍行距'}, + {'3': '3倍行距'} + ], + 'template.selectTemplate': '可选模板', + 'template.replaceContent': '替换当前内容', + 'template.fileList': { + '1.html': '图片和文字', + '2.html': '表格', + '3.html': '项目编号' + } +}, 'zh-CN'); +KindEditor.options.langType = 'zh-CN'; + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('anchor', function (K) { + var self = this, name = 'anchor', lang = self.lang(name + '.'); + self.plugin.anchor = { + edit: function () { + var html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keName">' + lang.name + ':</label>', + '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />', + '</div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 300, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus(); + } + } + }); + var div = dialog.div, + nameBox = K('input[name="name"]', div); + var img = self.plugin.getSelectedAnchor(); + if (img) { + nameBox.val(unescape(img.attr('data-ke-name'))); + } + nameBox[0].focus(); + nameBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedAnchor().remove(); + } + }; + self.clickToolbar(name, self.plugin.anchor.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('autoheight', function (K) { + var self = this; + if (!self.autoHeightMode) { + return; + } + var minHeight; + + function hideScroll() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe[0].scroll = 'no'; + body.style.overflowY = 'hidden'; + } + + function resetHeight() { + if (self.fullscreenMode) { + return; + } + var edit = self.edit; + var body = edit.doc.body; + edit.iframe.height(minHeight); + self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); + } + + function init() { + minHeight = K.removeUnit(self.height); + self.edit.afterChange(resetHeight); + if (!self.fullscreenMode) { + hideScroll(); + } + resetHeight(); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); +/* +* 如何实现真正的自动高度? +* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 +* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 +* 由此就实现了真正的自动高度 +* 测试:chrome、firefox、IE9、IE8 +* */ + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('baidumap', function (K) { + var self = this, name = 'baidumap', lang = self.lang(name + '.'); + var mapWidth = K.undef(self.mapWidth, 558); + var mapHeight = K.undef(self.mapHeight, 360); + self.clickToolbar(name, function () { + var html = ['<div class="ke-dialog-content-inner" style="padding-top: 0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header">' + lang.address, + '<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span>', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" style="line-height:22px;padding:0 10px;" />', + '</span>', + '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>', + '</div>', + '</div>', + '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: mapWidth + 42, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var map = win.map; + var centerObj = map.getCenter(); + var center = centerObj.lng + ',' + centerObj.lat; + var zoom = map.getZoom(); + var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'https://api.map.baidu.com/staticimage', + '?center=' + encodeURIComponent(center), + '&zoom=' + encodeURIComponent(zoom), + '&width=' + mapWidth, + '&height=' + mapHeight, + '&markers=' + encodeURIComponent(center), + '&markerStyles=' + encodeURIComponent('l,A')].join(''); + if (checkbox[0].checked) { + self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>'); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove: function () { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>'); + + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + + iframe.bind('load', function () { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + searchBtn.click(function () { + win.search(addressBox.val()); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + + +KindEditor.plugin('map', function (K) { + var self = this, name = 'map', lang = self.lang(name + '.'); + self.clickToolbar(name, function () { + var html = ['<div style="padding:10px 20px;">', + '<div class="ke-dialog-row">', + lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />', + '</span>', + '</div>', + '<div class="ke-map" style="width:558px;height:360px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 600, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var geocoder = win.geocoder, + map = win.map, + center = map.getCenter().lat() + ',' + map.getCenter().lng(), + zoom = map.getZoom(), + maptype = map.getMapTypeId(), + url = 'https://maps.googleapis.com/maps/api/staticmap'; + url += '?center=' + encodeURIComponent(center); + url += '&zoom=' + encodeURIComponent(zoom); + url += '&size=558x360'; + url += '&maptype=' + encodeURIComponent(maptype); + url += '&markers=' + encodeURIComponent(center); + url += '&language=' + self.langType; + url += '&sensor=false'; + self.exec('insertimage', url).hideDialog().focus(); + } + }, + beforeRemove: function () { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + win, doc; + var iframeHtml = ['<!doctype html><html><head>', + '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />', + '<style>', + ' html { height: 100% }', + ' body { height: 100%; margin: 0; padding: 0; background-color: #FFF }', + ' #map_canvas { height: 100% }', + '</style>', + '<script src="https://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>', + '<script>', + 'var map, geocoder;', + 'function initialize() {', + ' var latlng = new google.maps.LatLng(31.230393, 121.473704);', + ' var options = {', + ' zoom: 11,', + ' center: latlng,', + ' disableDefaultUI: true,', + ' panControl: true,', + ' zoomControl: true,', + ' mapTypeControl: true,', + ' scaleControl: true,', + ' streetViewControl: false,', + ' overviewMapControl: true,', + ' mapTypeId: google.maps.MapTypeId.ROADMAP', + ' };', + ' map = new google.maps.Map(document.getElementById("map_canvas"), options);', + ' geocoder = new google.maps.Geocoder();', + ' geocoder.geocode({latLng: latlng}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' if (results[3]) {', + ' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;', + ' }', + ' }', + ' });', + '}', + 'function search(address) {', + ' if (!map) return;', + ' geocoder.geocode({address : address}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' map.setZoom(11);', + ' map.setCenter(results[0].geometry.location);', + ' var marker = new google.maps.Marker({', + ' map: map,', + ' position: results[0].geometry.location', + ' });', + ' } else {', + ' alert("Invalid address: " + address);', + ' }', + ' });', + '}', + '</script>', + '</head>', + '<body onload="initialize();">', + '<div id="map_canvas" style="width:100%; height:100%"></div>', + '</body></html>'].join('\n'); + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>'); + + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + + iframe.bind('load', function () { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + searchBtn.click(function () { + win.search(addressBox.val()); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('clearhtml', function (K) { + var self = this, name = 'clearhtml'; + self.clickToolbar(name, function () { + self.focus(); + var html = self.html(); + html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, ''); + html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, ''); + html = K.formatHtml(html, { + a: ['href', 'target'], + embed: ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'controls'], + img: ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], + table: ['border'], + 'td,th': ['rowspan', 'colspan'], + 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6': [] + }); + self.html(html); + self.cmd.selection(true); + self.addBookmark(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + + + +KindEditor.plugin('code', function (K) { + var self = this, name = 'code'; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + html = ['<div style="margin: 0px 20px;">', + '<div class="ke-dialog-row">', + '<select class="ke-select" style="margin-bottom: 5px;">', + '<option value="javascript">JavaScript</option>', + '<option value="html">HTML</option>', + '<option value="css">CSS</option>', + '<option value="php">PHP</option>', + '<option value="perl">Perl</option>', + '<option value="python">Python</option>', + '<option value="ruby">Ruby</option>', + '<option value="java">Java</option>', + '<option value="go">Go</option>', + '<option value="asp">ASP/VB</option>', + '<option value="csharp">C#</option>', + '<option value="cpp">C/C++</option>', + '<option value="cs">C#</option>', + '<option value="bash">Shell</option>', + '<option value="sql">SQL</option>', + '<option value="markup">Other</option>', + '</select>', + '</div>', + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>', + '</div>'].join(''), + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '<pre class="' + cls + '"><code>' + K.escape(code) + '</code></pre> <br/>'; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('emoticons', function (K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function () { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'), + elements = [], + menu = self.createMenu({ + name: name, + beforeRemove: function () { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('<div class="ke-preview"></div>').css('right', 0); + previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />'); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function () { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function () { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function () { + K(this).removeClass('ke-on'); + }); + cell.click(function (e) { + self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus(); + e.stop(); + }); + } + + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function () { + previewDiv.show('block'); + }); + K(table).mouseout(function () { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('<span class="ke-img"></span>') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + + function removeEvent() { + K.each(elements, function () { + this.unbind(); + }); + } + + var pageDiv; + + function bindPageEvent(el, pageNum) { + el.click(function (e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + + function createPageTable(currentPageNum) { + pageDiv = K('<div class="ke-page"></div>'); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('<a href="javascript:;">[' + pageNum + ']</a>'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + + createPageTable(currentPageNum); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('flash', function (K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit: function () { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType('.swf'), + width: width, + height: height, + quality: 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + if (allowFlashUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + extraParams: extraParams, + url: K.addParam(uploadJson, 'fileType=flash'), + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'flash', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedFlash().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('image', function (K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + self.plugin.imageDialog = function (options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for (var k in extraParams) { + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="tabs"></div>', + '<div class="tab1" style="display:none;">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteUrl" class="row-left">' + lang.remoteUrl + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix ">', + '<label for="remoteWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">' + lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> ' + + '<img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" /></span>', + ' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> ' + + '<img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" /></span>', + ' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> ' + + '<img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" /></span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteTitle" class="row-left">' + lang.imgTitle + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />', + '</div>', + '</div>', + '</div>', + '<div class="tab2" style="display:none;">', + '<iframe name="' + target + '" style="display:none;"></iframe>', + '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'fileType=image') + '">', + '<div class="ke-dialog-row ke-clearfix">', + hiddenElements.join(''), + '<label class="row-left">' + lang.localUrl + ':</label>', + '<div class="row-right">', + '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />', + '</div>', + '</div>', + '</form>', + '</div>', + '</div>' + ].join(''); + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name: name, + width: dialogWidth, + height: dialogHeight, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + if (dialog.isLoading) { + return; + } + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function () { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove: function () { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src: K('.tabs', div), + afterSelect: function (i) { + } + }); + tabs.add({ + title: lang.remoteImage, + panel: K('.tab1', div) + }); + tabs.add({ + title: lang.localImage, + panel: K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + var callback = function (data) { + if (data.code == "000") { + dialog.hideLoading(); + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + form: K('.ke-form', div), + target: target, + width: 60, + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'image', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + + refreshBtn.click(function (e) { + var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({ + position: 'absolute', + visibility: 'hidden', + top: 0, + left: '-1000px' + }); + tempImg.bind('load', function () { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function (e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function (e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function () { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit: function () { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl: img ? img.attr('data-ke-src') : 'http://', + imageWidth: img ? img.width() : '', + imageHeight: img ? img.height() : '', + imageTitle: img ? img.attr('title') : '', + imageAlign: img ? img.attr('align') : '', + showRemote: allowImageRemote, + showLocal: allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn: function (url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete': function () { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('insertfile', function (K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function (options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keTitle" class="row-left">' + lang.title + ':</label>', + '<div class="row-right">', + '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>', + '</div>', + '</div>', + '</form>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + if (allowFileUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + url: K.addParam(uploadJson, 'fileType=file'), + extraParams: extraParams, + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + viewType: 'LIST', + dirName: 'file', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function () { + self.plugin.fileDialog({ + clickFn: function (url, title) { + var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>'; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('lineheight', function (K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function () { + var curVal = '', commonNode = self.cmd.commonNode({'*': '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name: name, + width: 150 + }); + K.each(lang.lineHeight, function (i, row) { + K.each(row, function (key, val) { + menu.addItem({ + title: val, + checked: curVal === key, + click: function () { + self.cmd.toggle('<span style="line-height:' + key + ';"></span>', { + span: '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('link', function (K) { + var self = this, name = 'link'; + self.plugin.link = { + edit: function () { + var lang = self.lang(name + '.'), + html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix"">', + '<label for="keType" class="row-left">' + lang.linkType + ':</label>', + '<div class="row-right">', + '<select id="keType" class="ke-select" name="type"></select>', + '</div>', + '</div>', + '</div>'].join(""), + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('media', function (K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.media = { + edit: function () { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '<div style="margin-top:5px;color:#aaa;">支持优酷、爱奇艺、腾讯视频等视频网站【<span style="color:green">通用代码</span>】', + '</div>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAutostart" class="row-left">' + lang.autostart + ':</label>', + '<div class="row-right">', + '<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + height: 260, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + var match = url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/); + if (!match) { + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!match) { + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType(url), + width: width, + height: height, + autostart: autostartBox[0].checked ? 'true' : 'false', + loop: 'true' + }); + } else { + var html = '<iframe src="' + match[3] + '" frameborder="0" style="width:' + width + 'px;height:' + height + 'px;"></iframe>'; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + if (allowMediaUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + extraParams: extraParams, + url: K.addParam(uploadJson, 'fileType=media'), + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'media', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedMedia().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); + +KindEditor.plugin('multiimage', function (K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath + name + "/BUpload.js"); + K.loadStyle(K.options.pluginsPath + name + "/css/upload.css"); + } + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x: 0, + y: 0, + cls: 'ke-dialog-lock', + width: docWidth, + height: docHeight + }); + } + self.plugin.multiImageDialog = function (options) { + + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + var dialog = new BUpload({ + src: filePostName, + upload_url: uploadJson, + list_url: fileManagerJson, + max_filesize: imageSizeLimit, + max_filenum: imageUploadLimit, + ext_allow: imageFileTypes, + lang: lang, + top: self.dialogOffset, + fileType: "image", + errorHandler: K.options.errorMsgHandler, + callback: function (data) { + clickFn.call(this, data); + }, + close: function () { + locker.remove(); + } + }); + return dialog; + }; + self.clickToolbar(name, function () { + self.plugin.multiImageDialog({ + clickFn: function (urlList) { + if (urlList.length === 0) { + return; + } + K.each(urlList, function (i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); + + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('graft', function (K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath + "graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath + "graft/scrawl.js"); + } + self.plugin.graftDialog = function (options) { + var clickFn = options.clickFn; + var html = [ + '<div class="scrawl-main" id="scrawl-main">', + '<div class="hot">', + '<div class="drawBoard border_style">', + '<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>', + '<div class="picBoard" id="picBoard" style=""></div>', + '</div>', + '<div class="operateBar">', + '<button id="J_prevStep" class="prevStep" title="上一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_nextStep" class="nextStep" title="下一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_clearBoard" class="clearBoard" title="清空">', + '<em class="icon"></em>', + '</button>', + '</div>', + '</div>', + '<div class="drawToolbar border_style">', + '<div class="colorBar">', + '<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>', + '<span data-color="#003366" style="background:#003366;"></span>', + '<span data-color="#993333" style="background:#993333;"></span>', + '<span data-color="#FF9900" style="background:#FF9900;"></span>', + '<span data-color="#0000CC" style="background:#0000CC;"></span>', + '<span data-color="#CC3333" style="background:#CC3333;"></span>', + '<span data-color="#F4D03F" style="background:#641E16;"></span>', + '<span data-color="#4A235A" style="background:#4A235A;"></span>', + '<span data-color="#009966" style="background:#009966;"></span>', + '<span data-color="#ffff00" style="background:#ffff00;"></span>', + '<span data-color="#7D6608" style="background:#7D6608;"></span>', + '<span data-color="#FF33CC" style="background:#FF33CC;"></span>', + '<span data-color="#990066" style="background:#990066;"></span>', + '<span data-color="#ffffff" style="background:#ffffff;"></span>', + '<span data-color="#9bbb59" style="background:#9bbb59;"></span>', + '<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>', + '<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>', + '<span data-color="#CC99CC" style="background:#CC99CC;"></span>', + '</div>', + '<div class="sectionBar">', + '<em class="brushIcon"></em>', + '<a href="javascript:void(0)" class="brush-size size1">1</a>', + '<a href="javascript:void(0)" class="brush-size size2">3</a>', + '<a href="javascript:void(0)" class="brush-size size3">5</a>', + '<a href="javascript:void(0)" class="brush-size size4">7</a>', + '</div>', + '<div class="sectionBar">', + '<em class="eraserIcon"></em>', + '<a href="javascript:void(0)" class="eraser-size size1">5</a>', + '<a href="javascript:void(0)" class="eraser-size size2">10</a>', + '<a href="javascript:void(0)" class="eraser-size size3">15</a>', + '<a href="javascript:void(0)" class="eraser-size size4">20</a>', + '</div>', + '<div class="sectionBar">', + '<em class="blurIcon"></em>', + '<a href="javascript:void(0)" class="blur-size size1">2</a>', + '<a href="javascript:void(0)" class="blur-size size2">4</a>', + '<a href="javascript:void(0)" class="blur-size size3">6</a>', + '<a href="javascript:void(0)" class="blur-size size4">8</a>', + '</div>', + '<div class="sectionBar">', + '<span id="clearSetting" class="clearSetting">', + '<em class="icon"></em>', + '<em class="text">初始化设置</em>', + '</span>', + '</div>', + '<div class="sectionBar">', + '<div id="J_addImg" class="addImgH">', + '<em class="icon"></em>', + '<em class="text">添加背景</em>', + '<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>', + '</div>', + '</div>', + '<div class="sectionBar">', + '<span id="J_removeImg" class="removeImg">', + '<em class="icon"></em>', + '<em class="text">删除背景</em>', + '</span>', + '</div>', + '</div>' + ].join(''); + var dataURLtoFile = function (dataurl, filename) { + var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new File([u8arr], filename, {type: mime}); + }; + var dialog = self.createDialog({ + name: name, + width: 750, + height: 440, + title: self.lang(name), + body: html, + yesBtn: { + name: lang.btnText, + click: function (e) { + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function (data) { + if (allowUploadGraft) { + var callback = function (res) { + dialog.hideLoading(); + if (res.code == "000") { + //K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + }; + dialog.showLoading(self.lang('uploadLoading')); + if (typeof self.beforeUpload == 'function') { + var file = dataURLtoFile(data, "graft.png"); + self.beforeUpload.call(this, callback, file); + } else { + $.post(uploadJson, { + img_base64_data: data, + fileType: "image", + base64: 1 + }, function (res) { + callback(res); + }, "json"); + } + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + }); + } + } + }); + var canvas = new Canvas({ + canvasId: "canvas-borad", + width: 600, + height: 320 + }); + }; + self.clickToolbar(name, function () { + self.plugin.graftDialog({ + clickFn: function (url) { + self.exec('insertimage', url); + } + }); + }); +}); +/** + * 文件服务器管理 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ +KindEditor.plugin('filemanager', function (K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath + "filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath + "multiimage/css/upload.css"); + } + + self.plugin.filemanagerDialog = function (options) { + + var clickFn = options.clickFn; + new FManager({ + list_url: fileManagerJson, //图片列表数据获取url + lang: lang, //语言包 + fileType: options.dirName, + top: self.dialogOffset, + multiple: options.multiple ? true : false, + callback: function (data) { + clickFn.call(this, options.multiple ? data : data[0]); + } + }); + //return dialog; + } + +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('pagebreak', function (K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />'); + self.clickToolbar(name, function () { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<span id="__kindeditor_tail_tag__"></span>'; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('plainpaste', function (K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>'); + } else { + html = html.replace(/\n/g, '<br />$&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('preview', function (K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '<div style="padding:10px 20px;">' + + '<iframe class="ke-textarea" frameborder="0" style="width:' + (width - 42) + 'px;height:' + height + 'px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: width, + title: self.lang(name), + body: html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '<html lang="en">', + '<head><meta charset="utf-8" /><title></title>', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/flash.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/play.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}' + ]; + if (self.options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath + 'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath + 'code/prism.css'); + } + K.each(cssPath, function (i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (self.options.cssData) { + arr.push('<style>' + self.options.cssData + '</style>'); + } + arr.push('</head><body ' + (self.options.bodyClass ? 'class="' + self.options.bodyClass + '"' : '') + '>'); + arr.push(self.fullHtml()); + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + if (K.inArray(self.options.pluginsPath + 'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath + 'code/prism.js'); + } + K.each(jsPath, function (i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('quickformat', function (K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + + self.clickToolbar(name, function () { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while (child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function (i, subList) { + var wrapper = K('<p style="text-indent:2em;"></p>', doc); + subList[0].before(wrapper); + K.each(subList, function (i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('table', function (K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + + var pickerList = []; + + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function (e) { + e.stopPropagation(); + }); + + function removePicker() { + K.each(pickerList, function () { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + + colorBox.click(function (e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x: pos.x, + y: pos.y + box.height(), + z: 811214, + selectedColor: K(this).html(), + colors: self.colorTable, + noColor: self.lang('noColor'), + shadowMode: self.shadowMode, + click: function (color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + + self.plugin.table = { + prop: function (isInsert) { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keRows" class="row-left">' + lang.cells + ':</label>', + '<div class="row-right">', + lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ', + lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="kePadding" class="row-left">' + lang.space + ':</label>', + '<div class="row-right">', + lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ', + lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<select id="keAlign" class="ke-select" name="align">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" class="row-left">' + lang.border + ':</label>', + '<div class="row-right">', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" class="row-left">' + lang.backgroundColor + ':</label>', + '<div class="row-right">', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang(name), + body: html, + beforeRemove: function () { + colorBox.unbind(); + }, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '<table class="table"'; + if (style !== '') { + html += ' style="' + style + '"'; + } + if (padding !== '') { + html += ' cellpadding="' + padding + '"'; + } + if (spacing !== '') { + html += ' cellspacing="' + spacing + '"'; + } + if (align !== '') { + html += ' align="' + align + '"'; + } + if (border !== '') { + html += ' border="' + border + '"'; + } + if (border === '' || border === '0') { + html += ' class="table ' + zeroborder + '"'; + } + if (borderColor !== '') { + html += ' bordercolor="' + borderColor + '"'; + } + html += '>'; + for (var i = 0; i < rows; i++) { + html += '<tr>'; + for (var j = 0; j < cols; j++) { + html += '<td>' + (K.IE ? ' ' : '<br />') + '</td>'; + } + html += '</tr>'; + } + html += '</table>'; + if (!K.IE) { + html += '<br />'; + } + + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('<br />'); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + cellprop: function () { + var html = [ + '<div style="padding:20px;">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" style="width:90px;">' + lang.size + '</label>', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" style="width:90px;">' + lang.align + '</label>', + lang.textAlign + ' <select id="keAlign" name="textAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select> ', + lang.verticalAlign + ' <select name="verticalAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="top">' + lang.alignTop + '</option>', + '<option value="middle">' + lang.alignMiddle + '</option>', + '<option value="bottom">' + lang.alignBottom + '</option>', + '<option value="baseline">' + lang.alignBaseline + '</option>', + '</select>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" style="width:90px;">' + lang.border + '</label>', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang('tablecell'), + body: html, + beforeRemove: function () { + colorBox.unbind(); + }, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width: width !== '' ? (width + widthType) : '', + height: height !== '' ? (height + heightType) : '', + 'background-color': bgColor, + 'text-align': textAlign, + 'vertical-align': verticalAlign, + 'border-width': border, + 'border-style': border !== '' ? 'solid' : '', + 'border-color': borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + widthBox[0].focus(); + widthBox[0].select(); + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert: function () { + this.prop(true); + }, + 'delete': function () { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert: function (offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + index += table.rows[0].cells.length - row.cells.length; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '<br />'; + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft: function () { + this.colinsert(0); + }, + colinsertright: function () { + this.colinsert(1); + }, + rowinsert: function (offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove: function () { + this.rowinsert(0); + }, + rowinsertbelow: function () { + this.rowinsert(1); + }, + rowmerge: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + nextRowIndex = rowIndex + cell.rowSpan, + nextRow = table.rows[nextRowIndex]; + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('template', function (K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + arr = ['<div class="ke-dialog-content-inner" style="padding-top:0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header" style="height: 32px;">', + lang.selectTemplate + ' <select class="ke-select">']; + K.each(lang.fileList, function (key, val) { + arr.push('<option value="' + key + '">' + val + '</option>'); + }); + html = [arr.join(''), + '</select>', + '<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>', + '</div>', + '</div>', + '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function () { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('wordpaste', function (K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function () { + var jsonp = function (url, callback) { + var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random()); + window[callbackName] = function (data) { + delete window[callbackName]; + document.body.removeChild(script); + callback(data); + }; + + var script = document.createElement('script'); + script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName; + document.body.appendChild(script); + }; + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + if (typeof self.wordImageServer !== 'undefined' && self.wordImageServer) { + var i = 0; + var arr = []; + var replacedStr = str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/ig, function (value) { + arr[i] = value; + var replaced = "##" + i + "##"; + i++; + return replaced; + }); + for (var j = 0; j < arr.length; j++) { + jsonp("http://" + self.wordImageServer + "/word?index=" + j + "&file=" + encodeURIComponent(arr[j]), function (data) { + K.uploadwordimage.call(self, data.index, data.info); + }); + } + str = replacedStr; + } + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('<!doctype html><html><head><title>WordPaste</title></head>'); + doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">'); + if (!K.IE) { + doc.write('<br />'); + } + doc.write('</body></html>'); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); + + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if (document.body.scrollTop - originY < 0) { + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); diff --git a/addons/nkeditor/assets/nkeditor.min.js b/addons/nkeditor/assets/nkeditor.min.js new file mode 100644 index 0000000..1c399aa --- /dev/null +++ b/addons/nkeditor/assets/nkeditor.min.js @@ -0,0 +1 @@ +(function(window,undefined){if(window.KindEditor){return}if(!window.console){window.console={}}if(!console.log){console.log=function(){}}var _VERSION="5.0.3 (2018-10-25)",_ua=navigator.userAgent.toLowerCase(),_IE=_ua.indexOf("msie")>-1&&_ua.indexOf("opera")==-1,_NEWIE=_ua.indexOf("msie")==-1&&_ua.indexOf("trident")>-1,_GECKO=_ua.indexOf("gecko")>-1&&_ua.indexOf("khtml")==-1,_WEBKIT=_ua.indexOf("applewebkit")>-1,_OPERA=_ua.indexOf("opera")>-1,_MOBILE=_ua.indexOf("mobile")>-1,_IOS=/ipad|iphone|ipod/.test(_ua),_QUIRKS=document.compatMode!="CSS1Compat",_IERANGE=!window.getSelection,_matches=/(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua),_V=_matches?_matches[1]:"0",_TIME=(new Date).getTime();function _isArray(val){if(!val){return false}return Object.prototype.toString.call(val)==="[object Array]"}function _isFunction(val){if(!val){return false}return Object.prototype.toString.call(val)==="[object Function]"}function _inArray(val,arr){for(var i=0,len=arr.length;i<len;i++){if(val===arr[i]){return i}}return-1}function _each(obj,fn){if(_isArray(obj)){for(var i=0,len=obj.length;i<len;i++){if(fn.call(obj[i],i,obj[i])===false){break}}}else{for(var key in obj){if(obj.hasOwnProperty(key)){if(fn.call(obj[key],key,obj[key])===false){break}}}}}function _trim(str){return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(val,str,delimiter){delimiter=delimiter===undefined?",":delimiter;return(delimiter+str+delimiter).indexOf(delimiter+val+delimiter)>=0}function _addUnit(val,unit){unit=unit||"px";return val&&/^-?\d+(?:\.\d+)?$/.test(val)?val+unit:val}function _removeUnit(val){var match;return val&&(match=/(\d+)/.exec(val))?parseInt(match[1],10):0}function _escape(val){return val.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function _unescape(val){return val.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(str){var arr=str.split("-");str="";_each(arr,function(key,val){str+=key>0?val.charAt(0).toUpperCase()+val.substr(1):val});return str}function _toHex(val){function hex(d){var s=parseInt(d,10).toString(16).toUpperCase();return s.length>1?s:"0"+s}return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function($0,$1,$2,$3){return"#"+hex($1)+hex($2)+hex($3)})}function _toMap(val,delimiter){delimiter=delimiter===undefined?",":delimiter;var map={},arr=_isArray(val)?val:val.split(delimiter),match;_each(arr,function(key,val){if(match=/^(\d+)\.\.(\d+)$/.exec(val)){for(var i=parseInt(match[1],10);i<=parseInt(match[2],10);i++){map[i.toString()]=true}}else{map[val]=true}});return map}function _toArray(obj,offset){return Array.prototype.slice.call(obj,offset||0)}function _undef(val,defaultVal){return val===undefined?defaultVal:val}function _invalidUrl(url){return!url||/[<>"]/.test(url)}function _addParam(url,param){return url.indexOf("?")>=0?url+"&"+param:url+"?"+param}function _extend(child,parent,proto){if(!proto){proto=parent;parent=null}var childProto;if(parent){var fn=function(){};fn.prototype=parent.prototype;childProto=new fn;_each(proto,function(key,val){childProto[key]=val})}else{childProto=proto}childProto.constructor=child;child.prototype=childProto;child.parent=parent?parent.prototype:null}function _json(text){var match;if(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text)){text=match[0]}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){return eval("("+text+")")}throw"JSON parse error"}function _merge(distObj,obj){for(var name in distObj){obj[name]=distObj[name]}return obj}var _round=Math.round;var K={DEBUG:false,VERSION:_VERSION,IE:_IE,GECKO:_GECKO,WEBKIT:_WEBKIT,OPERA:_OPERA,V:_V,TIME:_TIME,each:_each,isArray:_isArray,isFunction:_isFunction,inArray:_inArray,inString:_inString,trim:_trim,addUnit:_addUnit,removeUnit:_removeUnit,escape:_escape,unescape:_unescape,toCamel:_toCamel,toHex:_toHex,toMap:_toMap,toArray:_toArray,undef:_undef,invalidUrl:_invalidUrl,addParam:_addParam,extend:_extend,merge:_merge,json:_json};var _INLINE_TAG_MAP=_toMap("a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),_BLOCK_TAG_MAP=_toMap("address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul"),_SINGLE_TAG_MAP=_toMap("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),_STYLE_TAG_MAP=_toMap("b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u"),_CONTROL_TAG_MAP=_toMap("img,table,input,textarea,button"),_PRE_TAG_MAP=_toMap("pre,style,script"),_NOSPLIT_TAG_MAP=_toMap("html,head,body,td,tr,table,ol,ul,li"),_AUTOCLOSE_TAG_MAP=_toMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),_FILL_ATTR_MAP=_toMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),_VALUE_TAG_MAP=_toMap("input,button,textarea,select");function _getBasePath(){var els=document.getElementsByTagName("script"),src;for(var i=0,len=els.length;i<len;i++){src=els[i].src||"";if(/NKeditor[\w\-\.]*\.js/i.test(src)){return src.substring(0,src.lastIndexOf("/")+1)}}return""}K.basePath=_getBasePath();K.options={designMode:true,fullscreenMode:false,filterMode:true,wellFormatMode:true,loadStyleMode:true,basePath:K.basePath,themesPath:K.basePath+"themes/",langPath:K.basePath+"lang/",pluginsPath:K.basePath+"plugins/",themeType:"primary",langType:"zh-CN",urlType:"",newlineTag:"p",resizeType:2,syncType:"form",pasteType:2,dialogAlignType:"page",useContextmenu:true,fullscreenShortcut:false,bodyClass:"ke-content",indentChar:"\t",cssPath:[],jsPath:[],showHelpGrid:false,cssData:"",minWidth:650,minHeight:300,minChangeSize:50,zIndex:811213,items:["source","undo","redo","preview","print","template","code","quote","cut","copy","paste","plainpaste","wordpaste","justifyleft","justifycenter","justifyright","justifyfull","insertorderedlist","insertunorderedlist","indent","outdent","subscript","superscript","clearhtml","quickformat","selectall","formatblock","fontname","fontsize","forecolor","hilitecolor","bold","italic","underline","strikethrough","lineheight","removeformat","image","multiimage","graft","flash","media","insertfile","table","hr","emoticons","baidumap","pagebreak","anchor","link","unlink","about","fullscreen"],noDisableItems:["source","fullscreen"],colorTable:[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#DDDDDD","#999999","#666666","#333333","#000000"]],fontSizeTable:["9px","10px","12px","14px","16px","18px","24px","32px"],htmlTags:{font:["id","class","color","size","face",".background-color"],span:["id","class",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".line-height"],div:["id","class","align",".border",".margin",".padding",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".background",".font-style",".text-decoration",".vertical-align",".margin-left"],table:["id","class","border","cellspacing","cellpadding","width","height","align","bordercolor",".padding",".margin",".border","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".background",".width",".height",".border-collapse"],"td,th":["id","class","align","valign","width","height","colspan","rowspan","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".vertical-align",".background",".border"],a:["id","class","href","target","name"],embed:["id","class","src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess","wmode","controls"],img:["id","class","src","width","height","border","alt","title","align",".width",".height",".border"],"p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":["id","class","align",".text-align",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".text-indent",".margin-left"],pre:["id","class"],hr:["id","class",".page-break-after"],"br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del":["id","class"],iframe:["id","class","src","frameborder","width","height",".width",".height"]},layout:'<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>',afterBlur:function(){this.sync()},errorMsgHandler:function(message,type){console.log(message);console.log(type);alert(message)},dialogOffset:0,allowUploadGraft:true,resLoadCache:{},tableBorderColor:"#cccccc"};var _useCapture=false;var _INPUT_KEY_MAP=_toMap("8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222");var _CURSORMOVE_KEY_MAP=_toMap("33..40");var _CHANGE_KEY_MAP={};_each(_INPUT_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val});_each(_CURSORMOVE_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val});function _bindEvent(el,type,fn){if(el.addEventListener){el.addEventListener(type,fn,_useCapture)}else if(el.attachEvent){el.attachEvent("on"+type,fn)}}function _unbindEvent(el,type,fn){if(el.removeEventListener){el.removeEventListener(type,fn,_useCapture)}else if(el.detachEvent){el.detachEvent("on"+type,fn)}}var _EVENT_PROPS=("altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,"+"data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,"+"pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which").split(",");function KEvent(el,event){this.init(el,event)}_extend(KEvent,{init:function(el,event){var self=this,doc=el.ownerDocument||el.document||el;self.event=event;_each(_EVENT_PROPS,function(key,val){self[val]=event[val]});if(!self.target){self.target=self.srcElement||doc}if(self.target.nodeType===3){self.target=self.target.parentNode}if(!self.relatedTarget&&self.fromElement){self.relatedTarget=self.fromElement===self.target?self.toElement:self.fromElement}if(self.pageX==null&&self.clientX!=null){var d=doc.documentElement,body=doc.body;self.pageX=self.clientX+(d&&d.scrollLeft||body&&body.scrollLeft||0)-(d&&d.clientLeft||body&&body.clientLeft||0);self.pageY=self.clientY+(d&&d.scrollTop||body&&body.scrollTop||0)-(d&&d.clientTop||body&&body.clientTop||0)}if(!self.which&&(self.charCode||self.charCode===0?self.charCode:self.keyCode)){self.which=self.charCode||self.keyCode}if(!self.metaKey&&self.ctrlKey){self.metaKey=self.ctrlKey}if(!self.which&&self.button!==undefined){self.which=self.button&1?1:self.button&2?3:self.button&4?2:0}switch(self.which){case 186:self.which=59;break;case 187:case 107:case 43:self.which=61;break;case 189:case 45:self.which=109;break;case 42:self.which=106;break;case 47:self.which=111;break;case 78:self.which=110;break}if(self.which>=96&&self.which<=105){self.which-=48}},preventDefault:function(){var ev=this.event;if(ev.preventDefault){ev.preventDefault()}else{ev.returnValue=false}},stopPropagation:function(){var ev=this.event;if(ev.stopPropagation){ev.stopPropagation()}else{ev.cancelBubble=true}},stop:function(){this.preventDefault();this.stopPropagation()}});var _eventExpendo="kindeditor_"+_TIME,_eventId=0,_eventData={};function _getId(el){return el[_eventExpendo]||null}function _setId(el){el[_eventExpendo]=++_eventId;return _eventId}function _removeId(el){try{delete el[_eventExpendo]}catch(e){if(el.removeAttribute){el.removeAttribute(_eventExpendo)}}}function _bind(el,type,fn){if(type.indexOf(",")>=0){_each(type.split(","),function(){_bind(el,this,fn)});return}var id=_getId(el);if(!id){id=_setId(el)}if(_eventData[id]===undefined){_eventData[id]={}}var events=_eventData[id][type];if(events&&events.length>0){_unbindEvent(el,type,events[0])}else{_eventData[id][type]=[];_eventData[id].el=el}events=_eventData[id][type];if(events.length===0){events[0]=function(e){var kevent=e?new KEvent(el,e):undefined;_each(events,function(i,event){if(i>0&&event){event.call(el,kevent)}})}}if(_inArray(fn,events)<0){events.push(fn)}_bindEvent(el,type,events[0])}function _unbind(el,type,fn){if(type&&type.indexOf(",")>=0){_each(type.split(","),function(){_unbind(el,this,fn)});return}var id=_getId(el);if(!id){return}if(type===undefined){if(id in _eventData){_each(_eventData[id],function(key,events){if(key!="el"&&events.length>0){_unbindEvent(el,key,events[0])}});delete _eventData[id];_removeId(el)}return}if(!_eventData[id]){return}var events=_eventData[id][type];if(events&&events.length>0){if(fn===undefined){_unbindEvent(el,type,events[0]);delete _eventData[id][type]}else{_each(events,function(i,event){if(i>0&&event===fn){events.splice(i,1)}});if(events.length==1){_unbindEvent(el,type,events[0]);delete _eventData[id][type]}}var count=0;_each(_eventData[id],function(){count++});if(count<2){delete _eventData[id];_removeId(el)}}}function _fire(el,type){if(type.indexOf(",")>=0){_each(type.split(","),function(){_fire(el,this)});return}var id=_getId(el);if(!id){return}var events=_eventData[id][type];if(_eventData[id]&&events&&events.length>0){events[0]()}}function _ctrl(el,key,fn){var self=this;key=/^\d{2,}$/.test(key)?key:key.toUpperCase().charCodeAt(0);_bind(el,"keydown",function(e){if(e.ctrlKey&&e.which==key&&!e.shiftKey&&!e.altKey){fn.call(el);e.stop()}})}var _readyFinished=false;function _ready(fn){if(_readyFinished){fn(KindEditor);return}var loaded=false;function readyFunc(){if(!loaded){loaded=true;fn(KindEditor);_readyFinished=true}}function ieReadyFunc(){if(!loaded){try{document.documentElement.doScroll("left")}catch(e){setTimeout(ieReadyFunc,100);return}readyFunc()}}function ieReadyStateFunc(){if(document.readyState==="complete"){readyFunc()}}if(document.addEventListener){_bind(document,"DOMContentLoaded",readyFunc)}else if(document.attachEvent){_bind(document,"readystatechange",ieReadyStateFunc);var toplevel=false;try{toplevel=window.frameElement==null}catch(e){}if(document.documentElement.doScroll&&toplevel){ieReadyFunc()}}_bind(window,"load",readyFunc)}if(window.attachEvent){window.attachEvent("onunload",function(){_each(_eventData,function(key,events){if(events.el){_unbind(events.el)}})})}K.ctrl=_ctrl;K.ready=_ready;function _getCssList(css){css=css.replace(/"/g,'"');var list={},reg=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,match;while(match=reg.exec(css)){var key=_trim(match[1].toLowerCase()),val=_trim(_toHex(match[2]));list[key]=val}return list}function _getAttrList(tag){var list={},reg=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,match;while(match=reg.exec(tag)){var key=(match[1]||match[2]||match[4]||match[6]).toLowerCase(),val=(match[2]?match[3]:match[4]?match[5]:match[7])||"";list[key]=val}return list}function _addClassToTag(tag,className){if(/\s+class\s*=/.test(tag)){tag=tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function($0,$1,$2,$3){if((" "+$2+" ").indexOf(" "+className+" ")<0){return $2===""?$1+className+$3:$1+$2+" "+className+$3}else{return $0}})}else{tag=tag.substr(0,tag.length-1)+' class="'+className+'">'}return tag}function _formatCss(css){var str="";_each(_getCssList(css),function(key,val){str+=key+":"+val+";"});return str}function _formatUrl(url,mode,host,pathname){mode=_undef(mode,"").toLowerCase();if(url.substr(0,5)!="data:"){url=url.replace(/([^:])\/\//g,"$1/")}if(_inArray(mode,["absolute","relative","domain"])<0){return url}host=host||location.protocol+"//"+location.host;if(pathname===undefined){var m=location.pathname.match(/^(\/.*)\//);pathname=m?m[1]:""}if(/^\w+:/.test(url)){return url}var match;if(match=/^(\w+:\/\/[^\/]*)/.exec(url)){if(match[1]!==host){return url}}function getRealPath(path){var parts=path.split("/"),paths=[];for(var i=0,len=parts.length;i<len;i++){var part=parts[i];if(part==".."){if(paths.length>0){paths.pop()}}else if(part!==""&&part!="."){paths.push(part)}}return"/"+paths.join("/")}if(/^\//.test(url)){url=host+getRealPath(url.substr(1))}else if(!/^\w+:\/\//.test(url)){url=host+getRealPath(pathname+"/"+url)}function getRelativePath(path,depth){if(url.substr(0,path.length)===path){var arr=[];for(var i=0;i<depth;i++){arr.push("..")}var prefix=".";if(arr.length>0){prefix+="/"+arr.join("/")}if(pathname=="/"){prefix+="/"}return prefix+url.substr(path.length)}else{if(match=/^(.*)\//.exec(path)){return getRelativePath(match[1],++depth)}}}if(mode==="relative"){url=getRelativePath(host+pathname,0).substr(2)}else if(mode==="absolute"){if(url.substr(0,host.length)===host){url=url.substr(host.length)}}return url}function _formatHtml(html,htmlTags,urlType,wellFormatted,indentChar){if(html==null){html=""}urlType=urlType||"";wellFormatted=_undef(wellFormatted,false);indentChar=_undef(indentChar,"\t");var fontSizeList="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function($0,$1,$2,$3){return $1+$2.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+$3});html=html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,"</p>");html=html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1<br />$2");html=html.replace(/\u200B/g,"");html=html.replace(/\u00A9/g,"©");html=html.replace(/\u00AE/g,"®");html=html.replace(/\u2003/g," ");html=html.replace(/\u3000/g," ");html=html.replace(/<[^>]+/g,function($0){return $0.replace(/\s+/g," ")});var htmlTagMap={};if(htmlTags){_each(htmlTags,function(key,val){var arr=key.split(",");for(var i=0,len=arr.length;i<len;i++){htmlTagMap[arr[i]]=_toMap(val)}});if(!htmlTagMap.script){html=html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")}if(!htmlTagMap.style){html=html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")}}var re=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g;var tagStack=[];html=html.replace(re,function($0,$1,$2,$3,$4,$5,$6){var full=$0,startNewline=$1||"",startSlash=$2||"",tagName=$3.toLowerCase(),attr=$4||"",endSlash=$5?" "+$5:"",endNewline=$6||"";if(tagName=="code"){return full}if(htmlTags&&!htmlTagMap[tagName]){return""}if(endSlash===""&&_SINGLE_TAG_MAP[tagName]){endSlash=" /"}if(_INLINE_TAG_MAP[tagName]){if(startNewline){startNewline=" "}if(endNewline){endNewline=" "}}if(_PRE_TAG_MAP[tagName]){if(startSlash){endNewline="\n"}else{startNewline="\n"}}if(wellFormatted&&tagName=="br"){endNewline="\n"}if(_BLOCK_TAG_MAP[tagName]&&!_PRE_TAG_MAP[tagName]){if(wellFormatted){if(startSlash&&tagStack.length>0&&tagStack[tagStack.length-1]===tagName){tagStack.pop()}else{tagStack.push(tagName)}startNewline="\n";endNewline="\n";for(var i=0,len=startSlash?tagStack.length:tagStack.length-1;i<len;i++){startNewline+=indentChar;if(!startSlash){endNewline+=indentChar}}if(endSlash){tagStack.pop()}else if(!startSlash){endNewline+=indentChar}}else{startNewline=endNewline=""}}if(attr!==""){var attrMap=_getAttrList(full);if(tagName==="font"){var fontStyleMap={},fontStyle="";_each(attrMap,function(key,val){if(key==="color"){fontStyleMap.color=val;delete attrMap[key]}if(key==="size"){fontStyleMap["font-size"]=fontSizeList[parseInt(val,10)-1]||"";delete attrMap[key]}if(key==="face"){fontStyleMap["font-family"]=val;delete attrMap[key]}if(key==="style"){fontStyle=val}});if(fontStyle&&!/;$/.test(fontStyle)){fontStyle+=";"}_each(fontStyleMap,function(key,val){if(val===""){return}if(/\s/.test(val)){val="'"+val+"'"}fontStyle+=key+":"+val+";"});attrMap.style=fontStyle}_each(attrMap,function(key,val){if(_FILL_ATTR_MAP[key]){attrMap[key]=key}if(_inArray(key,["src","href"])>=0){attrMap[key]=_formatUrl(val,urlType)}if(htmlTags&&key!=="style"&&!htmlTagMap[tagName]["*"]&&!htmlTagMap[tagName][key]||tagName==="body"&&key==="contenteditable"||/^kindeditor_\d+$/.test(key)){delete attrMap[key]}if(key==="style"&&val!==""){var styleMap=_getCssList(val);_each(styleMap,function(k,v){if(htmlTags&&!htmlTagMap[tagName].style&&!htmlTagMap[tagName]["."+k]){delete styleMap[k]}});var style="";_each(styleMap,function(k,v){style+=k+":"+v+";"});attrMap.style=style}});attr="";_each(attrMap,function(key,val){if(key==="style"&&val===""){return}val=val.replace(/"/g,""");attr+=" "+key+'="'+val+'"'})}if(tagName==="font"){tagName="span"}return startNewline+"<"+startSlash+tagName+attr+endSlash+">"+endNewline});html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function($0,$1,$2,$3){return $1+$2.replace(/\n/g,'<span id="__kindeditor_pre_newline__">\n')+$3});html=html.replace(/\n\s*\n/g,"\n");html=html.replace(/<span id="__kindeditor_pre_newline__">\n/g,"\n");return _trim(html)}function _clearMsWord(html,htmlTags){html=html.replace(/<meta[\s\S]*?>/gi,"").replace(/<![\s\S]*?>/gi,"").replace(/<style[^>]*>[\s\S]*?<\/style>/gi,"").replace(/<script[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/gi,"").replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/gi,"").replace(/<xml>[\s\S]*?<\/xml>/gi,"").replace(/<(?:table|td)[^>]*>/gi,function(full){return full.replace(/border-bottom:([#\w\s]+)/gi,"border:$1")});return _formatHtml(html,htmlTags)}function _mediaType(src){if(/\.(rm|rmvb)(\?|$)/i.test(src)){return"audio/x-pn-realaudio-plugin"}if(/\.(mp4)(\?|$)/i.test(src)){return"video/mpeg4"}if(/\.(swf|flv)(\?|$)/i.test(src)){return"application/x-shockwave-flash"}return"video/x-ms-asf-plugin"}function _mediaClass(type){if(/realaudio/i.test(type)){return"ke-rm"}if(/flash/i.test(type)){return"ke-flash"}return"ke-media"}function _mediaAttrs(srcTag){return _getAttrList(unescape(srcTag))}function _mediaEmbed(attrs){var type=attrs.type=="video/mpeg4"?"video":"embed";if(type=="video"){attrs.controls="controls"}var html="<"+type+" ";_each(attrs,function(key,val){html+=key+'="'+val+'" '});html+="/>";return html}function _mediaImg(blankPath,attrs){var width=attrs.width,height=attrs.height,type=attrs.type||_mediaType(attrs.src),srcTag=_mediaEmbed(attrs),style="";if(/\D/.test(width)){style+="width:"+width+";"}else if(width>0){style+="width:"+width+"px;"}if(/\D/.test(height)){style+="height:"+height+";"}else if(height>0){style+="height:"+height+"px;"}var html='<img class="'+_mediaClass(type)+'" src="'+blankPath+'" ';if(style!==""){html+='style="'+style+'" '}html+='data-ke-tag="'+escape(srcTag)+'" alt="" />';return html}function _tmpl(str,data){var fn=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};"+"with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn}K.formatUrl=_formatUrl;K.formatHtml=_formatHtml;K.getCssList=_getCssList;K.getAttrList=_getAttrList;K.mediaType=_mediaType;K.mediaAttrs=_mediaAttrs;K.mediaEmbed=_mediaEmbed;K.mediaImg=_mediaImg;K.clearMsWord=_clearMsWord;K.tmpl=_tmpl;function _contains(nodeA,nodeB){if(nodeA.nodeType==9&&nodeB.nodeType!=9){return true}while(nodeB=nodeB.parentNode){if(nodeB==nodeA){return true}}return false}var _getSetAttrDiv=document.createElement("div");_getSetAttrDiv.setAttribute("className","t");var _GET_SET_ATTRIBUTE=_getSetAttrDiv.className!=="t";function _getAttr(el,key){key=key.toLowerCase();var val=null;if(!_GET_SET_ATTRIBUTE&&el.nodeName.toLowerCase()!="script"){var div=el.ownerDocument.createElement("div");div.appendChild(el.cloneNode(false));var list=_getAttrList(_unescape(div.innerHTML));if(key in list){val=list[key]}}else{try{val=el.getAttribute(key,2)}catch(e){val=el.getAttribute(key,1)}}if(key==="style"&&val!==null){val=_formatCss(val)}return val}function _queryAll(expr,root){var exprList=expr.split(",");if(exprList.length>1){var mergedResults=[];_each(exprList,function(){_each(_queryAll(this,root),function(){if(_inArray(this,mergedResults)<0){mergedResults.push(this)}})});return mergedResults}root=root||document;function escape(str){if(typeof str!="string"){return str}return str.replace(/([^\w\-])/g,"\\$1")}function stripslashes(str){return str.replace(/\\/g,"")}function cmpTag(tagA,tagB){return tagA==="*"||tagA.toLowerCase()===escape(tagB.toLowerCase())}function byId(id,tag,root){var arr=[],doc=root.ownerDocument||root,el=doc.getElementById(stripslashes(id));if(el){if(cmpTag(tag,el.nodeName)&&_contains(root,el)){arr.push(el)}}return arr}function byClass(className,tag,root){var doc=root.ownerDocument||root,arr=[],els,i,len,el;if(root.getElementsByClassName){els=root.getElementsByClassName(stripslashes(className));for(i=0,len=els.length;i<len;i++){el=els[i];if(cmpTag(tag,el.nodeName)){arr.push(el)}}}else if(doc.querySelectorAll){els=doc.querySelectorAll((root.nodeName!=="#document"?root.nodeName+" ":"")+tag+"."+className);for(i=0,len=els.length;i<len;i++){el=els[i];if(_contains(root,el)){arr.push(el)}}}else{els=root.getElementsByTagName(tag);className=" "+className+" ";for(i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){var cls=el.className;if(cls&&(" "+cls+" ").indexOf(className)>-1){arr.push(el)}}}}return arr}function byName(name,tag,root){var arr=[],doc=root.ownerDocument||root,els=doc.getElementsByName(stripslashes(name)),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(cmpTag(tag,el.nodeName)&&_contains(root,el)){if(el.getAttribute("name")!==null){arr.push(el)}}}return arr}function byAttr(key,val,tag,root){var arr=[],els=root.getElementsByTagName(tag),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){if(val===null){if(_getAttr(el,key)!==null){arr.push(el)}}else{if(val===escape(_getAttr(el,key))){arr.push(el)}}}}return arr}function select(expr,root){var arr=[],matches;matches=/^((?:\\.|[^.#\s\[<>])+)/.exec(expr);var tag=matches?matches[1]:"*";if(matches=/#((?:[\w\-]|\\.)+)$/.exec(expr)){arr=byId(matches[1],tag,root)}else if(matches=/\.((?:[\w\-]|\\.)+)$/.exec(expr)){arr=byClass(matches[1],tag,root)}else if(matches=/\[((?:[\w\-]|\\.)+)\]/.exec(expr)){arr=byAttr(matches[1].toLowerCase(),null,tag,root)}else if(matches=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr)){var key=matches[1].toLowerCase(),val=matches[2];if(key==="id"){arr=byId(val,tag,root)}else if(key==="class"){arr=byClass(val,tag,root)}else if(key==="name"){arr=byName(val,tag,root)}else{arr=byAttr(key,val,tag,root)}}else{var els=root.getElementsByTagName(tag),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){arr.push(el)}}}return arr}var parts=[],arr,re=/((?:\\.|[^\s>])+|[\s>])/g;while(arr=re.exec(expr)){if(arr[1]!==" "){parts.push(arr[1])}}var results=[];if(parts.length==1){return select(parts[0],root)}var isChild=false,part,els,subResults,val,v,i,j,k,length,len,l;for(i=0,lenth=parts.length;i<lenth;i++){part=parts[i];if(part===">"){isChild=true;continue}if(i>0){els=[];for(j=0,len=results.length;j<len;j++){val=results[j];subResults=select(part,val);for(k=0,l=subResults.length;k<l;k++){v=subResults[k];if(isChild){if(val===v.parentNode){els.push(v)}}else{els.push(v)}}}results=els}else{results=select(part,root)}if(results.length===0){return[]}}return results}function _query(expr,root){var arr=_queryAll(expr,root);return arr.length>0?arr[0]:null}K.query=_query;K.queryAll=_queryAll;function _get(val){return K(val)[0]}function _getDoc(node){if(!node){return document}return node.ownerDocument||node.document||node}function _getWin(node){if(!node){return window}var doc=_getDoc(node);return doc.parentWindow||doc.defaultView}function _setHtml(el,html){if(el.nodeType!=1){return}var doc=_getDoc(el);try{el.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+html;var temp=doc.getElementById("__kindeditor_temp_tag__");temp.parentNode.removeChild(temp)}catch(e){K(el).empty();K("@"+html,doc).each(function(){el.appendChild(this)})}}function _hasClass(el,cls){return _inString(cls,el.className," ")}function _setAttr(el,key,val){if(_IE&&_V<8&&key.toLowerCase()=="class"){key="className"}el.setAttribute(key,""+val)}function _removeAttr(el,key){if(_IE&&_V<8&&key.toLowerCase()=="class"){key="className"}_setAttr(el,key,"");el.removeAttribute(key)}function _getNodeName(node){if(!node||!node.nodeName){return""}return node.nodeName.toLowerCase()}function _computedCss(el,key){var self=this,win=_getWin(el),camelKey=_toCamel(key),val="";if(win.getComputedStyle){var style=win.getComputedStyle(el,null);val=style[camelKey]||style.getPropertyValue(key)||el.style[camelKey]}else if(el.currentStyle){val=el.currentStyle[camelKey]||el.style[camelKey]}return val}function _hasVal(node){return!!_VALUE_TAG_MAP[_getNodeName(node)]}function _docElement(doc){doc=doc||document;return _QUIRKS?doc.body:doc.documentElement}function _docHeight(doc){var el=_docElement(doc);return Math.max(el.scrollHeight,el.clientHeight)}function _docWidth(doc){var el=_docElement(doc);return Math.max(el.scrollWidth,el.clientWidth)}function _getScrollPos(doc){doc=doc||document;var x,y;if(_IE||_NEWIE||_OPERA){x=_docElement(doc).scrollLeft;y=_docElement(doc).scrollTop}else{x=_getWin(doc).scrollX;y=_getWin(doc).scrollY}return{x:x,y:y}}function KNode(node){this.init(node)}_extend(KNode,{init:function(node){var self=this;node=_isArray(node)?node:[node];var length=0;for(var i=0,len=node.length;i<len;i++){if(node[i]){self[i]=node[i].constructor===KNode?node[i][0]:node[i];length++}}self.length=length;self.doc=_getDoc(self[0]);self.name=_getNodeName(self[0]);self.type=self.length>0?self[0].nodeType:null;self.win=_getWin(self[0])},each:function(fn){var self=this;for(var i=0;i<self.length;i++){if(fn.call(self[i],i,self[i])===false){return self}}return self},bind:function(type,fn){this.each(function(){_bind(this,type,fn)});return this},unbind:function(type,fn){this.each(function(){_unbind(this,type,fn)});return this},fire:function(type){if(this.length<1){return this}_fire(this[0],type);return this},hasAttr:function(key){if(this.length<1){return false}return!!_getAttr(this[0],key)},attr:function(key,val){var self=this;if(key===undefined){return _getAttrList(self.outer())}if(typeof key==="object"){_each(key,function(k,v){self.attr(k,v)});return self}if(val===undefined){val=self.length<1?null:_getAttr(self[0],key);return val===null?"":val}self.each(function(){_setAttr(this,key,val)});return self},removeAttr:function(key){this.each(function(){_removeAttr(this,key)});return this},get:function(i){if(this.length<1){return null}return this[i||0]},eq:function(i){if(this.length<1){return null}return this[i]?new KNode(this[i]):null},hasClass:function(cls){if(this.length<1){return false}return _hasClass(this[0],cls)},addClass:function(cls){this.each(function(){if(!_hasClass(this,cls)){this.className=_trim(this.className+" "+cls)}});return this},removeClass:function(cls){this.each(function(){if(_hasClass(this,cls)){this.className=_trim(this.className.replace(new RegExp("(^|\\s)"+cls+"(\\s|$)")," "))}});return this},html:function(val){var self=this;if(val===undefined){if(self.length<1||self.type!=1){return""}return _formatHtml(self[0].innerHTML)}self.each(function(){_setHtml(this,val)});return self},text:function(){var self=this;if(self.length<1){return""}return _IE?self[0].innerText:self[0].textContent},hasVal:function(){if(this.length<1){return false}return _hasVal(this[0])},val:function(val){var self=this;if(val===undefined){if(self.length<1){return""}return self.hasVal()?self[0].value:self.attr("value")}else{self.each(function(){if(_hasVal(this)){this.value=val}else{_setAttr(this,"value",val)}});return self}},css:function(key,val){var self=this;if(key===undefined){return _getCssList(self.attr("style"))}if(typeof key==="object"){_each(key,function(k,v){self.css(k,v)});return self}if(val===undefined){if(self.length<1){return""}return self[0].style[_toCamel(key)]||_computedCss(self[0],key)||""}self.each(function(){this.style[_toCamel(key)]=val});return self},width:function(val){var self=this;if(val===undefined){if(self.length<1){return 0}return self[0].offsetWidth}return self.css("width",_addUnit(val))},height:function(val){var self=this;if(val===undefined){if(self.length<1){return 0}return self[0].offsetHeight}return self.css("height",_addUnit(val))},opacity:function(val){this.each(function(){if(this.style.opacity===undefined){this.style.filter=val==1?"":"alpha(opacity="+val*100+")"}else{this.style.opacity=val==1?"":val}});return this},data:function(key,val){var self=this;key="kindeditor_data_"+key;if(val===undefined){if(self.length<1){return null}return self[0][key]}this.each(function(){this[key]=val});return self},pos:function(){var self=this,node=self[0],x=0,y=0;if(node){if(node.getBoundingClientRect){var box=node.getBoundingClientRect(),pos=_getScrollPos(self.doc);x=box.left+pos.x;y=box.top+pos.y}else{while(node){x+=node.offsetLeft;y+=node.offsetTop;node=node.offsetParent}}}return{x:_round(x),y:_round(y)}},clone:function(bool){if(this.length<1){return new KNode([])}return new KNode(this[0].cloneNode(bool))},append:function(expr){this.each(function(){if(this.appendChild){this.appendChild(_get(expr))}});return this},appendTo:function(expr){this.each(function(){_get(expr).appendChild(this)});return this},before:function(expr){this.each(function(){try{this.parentNode.insertBefore(_get(expr),this)}catch(e){}});return this},after:function(expr){this.each(function(){if(this.nextSibling){this.parentNode.insertBefore(_get(expr),this.nextSibling)}else{this.parentNode.appendChild(_get(expr))}});return this},replaceWith:function(expr){var nodes=[];this.each(function(i,node){_unbind(node);var newNode=_get(expr);node.parentNode.replaceChild(newNode,node);nodes.push(newNode)});return K(nodes)},empty:function(){var self=this;self.each(function(i,node){var child=node.firstChild;while(child){if(!node.parentNode){return}var next=child.nextSibling;child.parentNode.removeChild(child);child=next}});return self},remove:function(keepChilds){var self=this;self.each(function(i,node){if(!node.parentNode){return}_unbind(node);if(keepChilds){var child=node.firstChild;while(child){var next=child.nextSibling;node.parentNode.insertBefore(child,node);child=next}}node.parentNode.removeChild(node);delete self[i]});self.length=0;return self},show:function(val){var self=this;if(val===undefined){val=self._originDisplay||""}if(self.css("display")!="none"){return self}return self.css("display",val)},hide:function(){var self=this;if(self.length<1){return self}self._originDisplay=self[0].style.display;return self.css("display","none")},outer:function(){var self=this;if(self.length<1){return""}var div=self.doc.createElement("div"),html;div.appendChild(self[0].cloneNode(true));html=_formatHtml(div.innerHTML);div=null;return html},isSingle:function(){return!!_SINGLE_TAG_MAP[this.name]},isInline:function(){return!!_INLINE_TAG_MAP[this.name]},isBlock:function(){return!!_BLOCK_TAG_MAP[this.name]},isStyle:function(){return!!_STYLE_TAG_MAP[this.name]},isControl:function(){return!!_CONTROL_TAG_MAP[this.name]},contains:function(otherNode){if(this.length<1){return false}return _contains(this[0],_get(otherNode))},parent:function(){if(this.length<1){return null}var node=this[0].parentNode;return node?new KNode(node):null},children:function(){if(this.length<1){return new KNode([])}var list=[],child=this[0].firstChild;while(child){if(child.nodeType!=3||_trim(child.nodeValue)!==""){list.push(child)}child=child.nextSibling}return new KNode(list)},first:function(){var list=this.children();return list.length>0?list.eq(0):null},last:function(){var list=this.children();return list.length>0?list.eq(list.length-1):null},index:function(){if(this.length<1){return-1}var i=-1,sibling=this[0];while(sibling){i++;sibling=sibling.previousSibling}return i},prev:function(){if(this.length<1){return null}var node=this[0].previousSibling;return node?new KNode(node):null},next:function(){if(this.length<1){return null}var node=this[0].nextSibling;return node?new KNode(node):null},scan:function(fn,order){if(this.length<1){return}order=order===undefined?true:order;function walk(node){var n=order?node.firstChild:node.lastChild;while(n){var next=order?n.nextSibling:n.previousSibling;if(fn(n)===false){return false}if(walk(n)===false){return false}n=next}}walk(this[0]);return this}});_each(("blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,"+"change,select,submit,keydown,keypress,keyup,error,contextmenu").split(","),function(i,type){KNode.prototype[type]=function(fn){return fn?this.bind(type,fn):this.fire(type)}});var _K=K;K=function(expr,root){if(expr===undefined||expr===null){return}function newNode(node){if(!node[0]){node=[]}return new KNode(node)}if(typeof expr==="string"){if(root){root=_get(root)}var length=expr.length;if(expr.charAt(0)==="@"){expr=expr.substr(1)}if(expr.length!==length||/<.+>/.test(expr)){var doc=root?root.ownerDocument||root:document,div=doc.createElement("div"),list=[];div.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+expr;for(var i=0,len=div.childNodes.length;i<len;i++){var child=div.childNodes[i];if(child.id=="__kindeditor_temp_tag__"){continue}list.push(child)}return newNode(list)}return newNode(_queryAll(expr,root))}if(expr&&expr.constructor===KNode){return expr}if(expr.toArray){expr=expr.toArray()}if(_isArray(expr)){return newNode(expr)}return newNode(_toArray(arguments))};_each(_K,function(key,val){K[key]=val});K.NodeClass=KNode;window.KindEditor=K;var _START_TO_START=0,_START_TO_END=1,_END_TO_END=2,_END_TO_START=3,_BOOKMARK_ID=0;function _updateCollapsed(range){range.collapsed=range.startContainer===range.endContainer&&range.startOffset===range.endOffset;return range}function _copyAndDelete(range,isCopy,isDelete){var doc=range.doc,nodeList=[];function splitTextNode(node,startOffset,endOffset){var length=node.nodeValue.length,centerNode;if(isCopy){var cloneNode=node.cloneNode(true);if(startOffset>0){centerNode=cloneNode.splitText(startOffset)}else{centerNode=cloneNode}if(endOffset<length){centerNode.splitText(endOffset-startOffset)}}if(isDelete){var center=node;if(startOffset>0){center=node.splitText(startOffset);range.setStart(node,startOffset)}if(endOffset<length){var right=center.splitText(endOffset-startOffset);range.setEnd(right,0)}nodeList.push(center)}return centerNode}function removeNodes(){if(isDelete){range.up().collapse(true)}for(var i=0,len=nodeList.length;i<len;i++){var node=nodeList[i];if(node.parentNode){node.parentNode.removeChild(node)}}}var copyRange=range.cloneRange().down();var start=-1,incStart=-1,incEnd=-1,end=-1,ancestor=range.commonAncestor(),frag=doc.createDocumentFragment();if(ancestor.nodeType==3){var textNode=splitTextNode(ancestor,range.startOffset,range.endOffset);if(isCopy){frag.appendChild(textNode)}removeNodes();return isCopy?frag:range}function extractNodes(parent,frag){var node=parent.firstChild,nextNode;while(node){var testRange=new KRange(doc).selectNode(node);start=testRange.compareBoundaryPoints(_START_TO_END,range);if(start>=0&&incStart<=0){incStart=testRange.compareBoundaryPoints(_START_TO_START,range)}if(incStart>=0&&incEnd<=0){incEnd=testRange.compareBoundaryPoints(_END_TO_END,range)}if(incEnd>=0&&end<=0){end=testRange.compareBoundaryPoints(_END_TO_START,range)}if(end>=0){return false}nextNode=node.nextSibling;if(start>0){if(node.nodeType==1){if(incStart>=0&&incEnd<=0){if(isCopy){frag.appendChild(node.cloneNode(true))}if(isDelete){nodeList.push(node)}}else{var childFlag;if(isCopy){childFlag=node.cloneNode(false);frag.appendChild(childFlag)}if(extractNodes(node,childFlag)===false){return false}}}else if(node.nodeType==3){var textNode;if(node==copyRange.startContainer){textNode=splitTextNode(node,copyRange.startOffset,node.nodeValue.length)}else if(node==copyRange.endContainer){textNode=splitTextNode(node,0,copyRange.endOffset)}else{textNode=splitTextNode(node,0,node.nodeValue.length)}if(isCopy){try{frag.appendChild(textNode)}catch(e){}}}}node=nextNode}}extractNodes(ancestor,frag);if(isDelete){range.up().collapse(true)}for(var i=0,len=nodeList.length;i<len;i++){var node=nodeList[i];if(node.parentNode){node.parentNode.removeChild(node)}}return isCopy?frag:range}function _moveToElementText(range,el){var node=el;while(node){var knode=K(node);if(knode.name=="marquee"||knode.name=="select"){return}node=node.parentNode}try{range.moveToElementText(el)}catch(e){}}function _getStartEnd(rng,isStart){var doc=rng.parentElement().ownerDocument,pointRange=rng.duplicate();pointRange.collapse(isStart);var parent=pointRange.parentElement(),nodes=parent.childNodes;if(nodes.length===0){return{node:parent.parentNode,offset:K(parent).index()}}var startNode=doc,startPos=0,cmp=-1;var testRange=rng.duplicate();_moveToElementText(testRange,parent);for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];cmp=testRange.compareEndPoints("StartToStart",pointRange);if(cmp===0){return{node:node.parentNode,offset:i}}if(node.nodeType==1){var nodeRange=rng.duplicate(),dummy,knode=K(node),newNode=node;if(knode.isControl()){dummy=doc.createElement("span");knode.after(dummy);newNode=dummy;startPos+=knode.text().replace(/\r\n|\n|\r/g,"").length}_moveToElementText(nodeRange,newNode);testRange.setEndPoint("StartToEnd",nodeRange);if(cmp>0){startPos+=nodeRange.text.replace(/\r\n|\n|\r/g,"").length}else{startPos=0}if(dummy){K(dummy).remove()}}else if(node.nodeType==3){testRange.moveStart("character",node.nodeValue.length);startPos+=node.nodeValue.length}if(cmp<0){startNode=node}}if(cmp<0&&startNode.nodeType==1){return{node:parent,offset:K(parent.lastChild).index()+1}}if(cmp>0){while(startNode.nextSibling&&startNode.nodeType==1){startNode=startNode.nextSibling}}testRange=rng.duplicate();_moveToElementText(testRange,parent);testRange.setEndPoint("StartToEnd",pointRange);startPos-=testRange.text.replace(/\r\n|\n|\r/g,"").length;if(cmp>0&&startNode.nodeType==3){var prevNode=startNode.previousSibling;while(prevNode&&prevNode.nodeType==3){startPos-=prevNode.nodeValue.length;prevNode=prevNode.previousSibling}}return{node:startNode,offset:startPos}}function _getEndRange(node,offset){var doc=node.ownerDocument||node,range=doc.body.createTextRange();if(doc==node){range.collapse(true);return range}if(node.nodeType==1&&node.childNodes.length>0){var children=node.childNodes,isStart,child;if(offset===0){child=children[0];isStart=true}else{child=children[offset-1];isStart=false}if(!child){return range}if(K(child).name==="head"){if(offset===1){isStart=true}if(offset===2){isStart=false}range.collapse(isStart);return range}if(child.nodeType==1){var kchild=K(child),span;if(kchild.isControl()){span=doc.createElement("span");if(isStart){kchild.before(span)}else{kchild.after(span)}child=span}_moveToElementText(range,child);range.collapse(isStart);if(span){K(span).remove()}return range}node=child;offset=isStart?0:child.nodeValue.length}var dummy=doc.createElement("span");K(node).before(dummy);_moveToElementText(range,dummy);range.moveStart("character",offset);K(dummy).remove();return range}function _toRange(rng){var doc,range;function tr2td(start){if(K(start.node).name=="tr"){start.node=start.node.cells[start.offset];start.offset=0}}if(_IERANGE){if(rng.item){doc=_getDoc(rng.item(0));range=new KRange(doc);range.selectNode(rng.item(0));return range}doc=rng.parentElement().ownerDocument;var start=_getStartEnd(rng,true),end=_getStartEnd(rng,false);tr2td(start);tr2td(end);range=new KRange(doc);range.setStart(start.node,start.offset);range.setEnd(end.node,end.offset);return range}var startContainer=rng.startContainer;doc=startContainer.ownerDocument||startContainer;range=new KRange(doc);range.setStart(startContainer,rng.startOffset);range.setEnd(rng.endContainer,rng.endOffset);return range}function KRange(doc){this.init(doc)}_extend(KRange,{init:function(doc){var self=this;self.startContainer=doc;self.startOffset=0;self.endContainer=doc;self.endOffset=0;self.collapsed=true;self.doc=doc},commonAncestor:function(){function getParents(node){var parents=[];while(node){parents.push(node);node=node.parentNode}return parents}var parentsA=getParents(this.startContainer),parentsB=getParents(this.endContainer),i=0,lenA=parentsA.length,lenB=parentsB.length,parentA,parentB;while(++i){parentA=parentsA[lenA-i];parentB=parentsB[lenB-i];if(!parentA||!parentB||parentA!==parentB){break}}return parentsA[lenA-i+1]},setStart:function(node,offset){var self=this,doc=self.doc;self.startContainer=node;self.startOffset=offset;if(self.endContainer===doc){self.endContainer=node;self.endOffset=offset}return _updateCollapsed(this)},setEnd:function(node,offset){var self=this,doc=self.doc;self.endContainer=node;self.endOffset=offset;if(self.startContainer===doc){self.startContainer=node;self.startOffset=offset}return _updateCollapsed(this)},setStartBefore:function(node){return this.setStart(node.parentNode||this.doc,K(node).index())},setStartAfter:function(node){return this.setStart(node.parentNode||this.doc,K(node).index()+1)},setEndBefore:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index())},setEndAfter:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index()+1)},selectNode:function(node){return this.setStartBefore(node).setEndAfter(node)},selectNodeContents:function(node){var knode=K(node);if(knode.type==3||knode.isSingle()){return this.selectNode(node)}var children=knode.children();if(children.length>0){return this.setStartBefore(children[0]).setEndAfter(children[children.length-1])}return this.setStart(node,0).setEnd(node,0)},collapse:function(toStart){if(toStart){return this.setEnd(this.startContainer,this.startOffset)}return this.setStart(this.endContainer,this.endOffset)},compareBoundaryPoints:function(how,range){var rangeA=this.get(),rangeB=range.get();if(_IERANGE){var arr={};arr[_START_TO_START]="StartToStart";arr[_START_TO_END]="EndToStart";arr[_END_TO_END]="EndToEnd";arr[_END_TO_START]="StartToEnd";var cmp=rangeA.compareEndPoints(arr[how],rangeB);if(cmp!==0){return cmp}var nodeA,nodeB,nodeC,posA,posB;if(how===_START_TO_START||how===_END_TO_START){nodeA=this.startContainer;posA=this.startOffset}if(how===_START_TO_END||how===_END_TO_END){nodeA=this.endContainer;posA=this.endOffset}if(how===_START_TO_START||how===_START_TO_END){nodeB=range.startContainer;posB=range.startOffset}if(how===_END_TO_END||how===_END_TO_START){nodeB=range.endContainer;posB=range.endOffset}if(nodeA===nodeB){var diff=posA-posB;return diff>0?1:diff<0?-1:0}nodeC=nodeB;while(nodeC&&nodeC.parentNode!==nodeA){nodeC=nodeC.parentNode}if(nodeC){return K(nodeC).index()>=posA?-1:1}nodeC=nodeA;while(nodeC&&nodeC.parentNode!==nodeB){nodeC=nodeC.parentNode}if(nodeC){return K(nodeC).index()>=posB?1:-1}nodeC=K(nodeB).next();if(nodeC&&nodeC.contains(nodeA)){return 1}nodeC=K(nodeA).next();if(nodeC&&nodeC.contains(nodeB)){return-1}}else{return rangeA.compareBoundaryPoints(how,rangeB)}},cloneRange:function(){return new KRange(this.doc).setStart(this.startContainer,this.startOffset).setEnd(this.endContainer,this.endOffset)},toString:function(){var rng=this.get(),str=_IERANGE?rng.text:rng.toString();return str.replace(/\r\n|\n|\r/g,"")},cloneContents:function(){return _copyAndDelete(this,true,false)},deleteContents:function(){return _copyAndDelete(this,false,true)},extractContents:function(){return _copyAndDelete(this,true,true)},insertNode:function(node){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,firstChild,lastChild,c,nodeCount=1;if(node.nodeName.toLowerCase()==="#document-fragment"){firstChild=node.firstChild;lastChild=node.lastChild;nodeCount=node.childNodes.length}if(sc.nodeType==1){c=sc.childNodes[so];if(c){sc.insertBefore(node,c);if(sc===ec){eo+=nodeCount}}else{sc.appendChild(node)}}else if(sc.nodeType==3){if(so===0){sc.parentNode.insertBefore(node,sc);if(sc.parentNode===ec){eo+=nodeCount}}else if(so>=sc.nodeValue.length){if(sc.nextSibling){sc.parentNode.insertBefore(node,sc.nextSibling)}else{sc.parentNode.appendChild(node)}}else{if(so>0){c=sc.splitText(so)}else{c=sc}sc.parentNode.insertBefore(node,c);if(sc===ec){ec=c;eo-=so}}}if(firstChild){self.setStartBefore(firstChild).setEndAfter(lastChild)}else{self.selectNode(node)}if(self.compareBoundaryPoints(_END_TO_END,self.cloneRange().setEnd(ec,eo))>=1){return self}return self.setEnd(ec,eo)},surroundContents:function(node){node.appendChild(this.extractContents());return this.insertNode(node).selectNode(node)},isControl:function(){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,rng;return sc.nodeType==1&&sc===ec&&so+1===eo&&K(sc.childNodes[so]).isControl()},get:function(hasControlRange){var self=this,doc=self.doc,node,rng;if(!_IERANGE){rng=doc.createRange();try{rng.setStart(self.startContainer,self.startOffset);rng.setEnd(self.endContainer,self.endOffset)}catch(e){}return rng}if(hasControlRange&&self.isControl()){rng=doc.body.createControlRange();rng.addElement(self.startContainer.childNodes[self.startOffset]);return rng}var range=self.cloneRange().down();rng=doc.body.createTextRange();rng.setEndPoint("StartToStart",_getEndRange(range.startContainer,range.startOffset));rng.setEndPoint("EndToStart",_getEndRange(range.endContainer,range.endOffset));return rng},html:function(){return K(this.cloneContents()).outer()},down:function(){var self=this;function downPos(node,pos,isStart){if(node.nodeType!=1){return}var children=K(node).children();if(children.length===0){return}var left,right,child,offset;if(pos>0){left=children.eq(pos-1)}if(pos<children.length){right=children.eq(pos)}if(left&&left.type==3){child=left[0];offset=child.nodeValue.length}if(right&&right.type==3){child=right[0];offset=0}if(!child){return}if(isStart){self.setStart(child,offset)}else{self.setEnd(child,offset)}}downPos(self.startContainer,self.startOffset,true);downPos(self.endContainer,self.endOffset,false);return self},up:function(){var self=this;function upPos(node,pos,isStart){if(node.nodeType!=3){return}if(pos===0){if(isStart){self.setStartBefore(node)}else{self.setEndBefore(node)}}else if(pos==node.nodeValue.length){if(isStart){self.setStartAfter(node)}else{self.setEndAfter(node)}}}upPos(self.startContainer,self.startOffset,true);upPos(self.endContainer,self.endOffset,false);return self},enlarge:function(toBlock){var self=this;self.up();function enlargePos(node,pos,isStart){var knode=K(node),parent;if(knode.type==3||_NOSPLIT_TAG_MAP[knode.name]||!toBlock&&knode.isBlock()){return}if(pos===0){while(!knode.prev()){parent=knode.parent();if(!parent||_NOSPLIT_TAG_MAP[parent.name]||!toBlock&&parent.isBlock()){break}knode=parent}if(isStart){self.setStartBefore(knode[0])}else{self.setEndBefore(knode[0])}}else if(pos==knode.children().length){while(!knode.next()){parent=knode.parent();if(!parent||_NOSPLIT_TAG_MAP[parent.name]||!toBlock&&parent.isBlock()){break}knode=parent}if(isStart){self.setStartAfter(knode[0])}else{self.setEndAfter(knode[0])}}}enlargePos(self.startContainer,self.startOffset,true);enlargePos(self.endContainer,self.endOffset,false);return self},shrink:function(){var self=this,child,collapsed=self.collapsed;while(self.startContainer.nodeType==1&&(child=self.startContainer.childNodes[self.startOffset])&&child.nodeType==1&&!K(child).isSingle()){self.setStart(child,0)}if(collapsed){return self.collapse(collapsed)}while(self.endContainer.nodeType==1&&self.endOffset>0&&(child=self.endContainer.childNodes[self.endOffset-1])&&child.nodeType==1&&!K(child).isSingle()){self.setEnd(child,child.childNodes.length)}return self},createBookmark:function(serialize){var self=this,doc=self.doc,endNode,startNode=K('<span style="display:none;"></span>',doc)[0];startNode.id="__kindeditor_bookmark_start_"+_BOOKMARK_ID+++"__";if(!self.collapsed){endNode=startNode.cloneNode(true);endNode.id="__kindeditor_bookmark_end_"+_BOOKMARK_ID+++"__"}if(endNode){self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode)}self.insertNode(startNode).setStartAfter(startNode);return{start:serialize?"#"+startNode.id:startNode,end:endNode?serialize?"#"+endNode.id:endNode:null}},moveToBookmark:function(bookmark){var self=this,doc=self.doc,start=K(bookmark.start,doc),end=bookmark.end?K(bookmark.end,doc):null;if(!start||start.length<1){return self}self.setStartBefore(start[0]);start.remove();if(end&&end.length>0){self.setEndBefore(end[0]);end.remove()}else{self.collapse(true)}return self},dump:function(){console.log("--------------------");console.log(this.startContainer.nodeType==3?this.startContainer.nodeValue:this.startContainer,this.startOffset);console.log(this.endContainer.nodeType==3?this.endContainer.nodeValue:this.endContainer,this.endOffset)}});function _range(mixed){if(!mixed.nodeName){return mixed.constructor===KRange?mixed:_toRange(mixed)}return new KRange(mixed)}K.RangeClass=KRange;K.range=_range;K.START_TO_START=_START_TO_START;K.START_TO_END=_START_TO_END;K.END_TO_END=_END_TO_END;K.END_TO_START=_END_TO_START;function _nativeCommand(doc,key,val){try{doc.execCommand(key,false,val)}catch(e){}}function _nativeCommandValue(doc,key){var val="";try{val=doc.queryCommandValue(key)}catch(e){}if(typeof val!=="string"){val=""}return val}function _getSel(doc){var win=_getWin(doc);return _IERANGE?doc.selection:win.getSelection()}function _getRng(doc){var sel=_getSel(doc),rng;try{if(sel.rangeCount>0){rng=sel.getRangeAt(0)}else{rng=sel.createRange()}}catch(e){}if(_IERANGE&&(!rng||!rng.item&&rng.parentElement().ownerDocument!==doc)){return null}return rng}function _singleKeyMap(map){var newMap={},arr,v;_each(map,function(key,val){arr=key.split(",");for(var i=0,len=arr.length;i<len;i++){v=arr[i];newMap[v]=val}});return newMap}function _hasAttrOrCss(knode,map){return _hasAttrOrCssByKey(knode,map,"*")||_hasAttrOrCssByKey(knode,map)}function _hasAttrOrCssByKey(knode,map,mapKey){mapKey=mapKey||knode.name;if(knode.type!==1){return false}var newMap=_singleKeyMap(map);if(!newMap[mapKey]){return false}var arr=newMap[mapKey].split(",");for(var i=0,len=arr.length;i<len;i++){var key=arr[i];if(key==="*"){return true}var match=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key);var method=match[1]?"css":"attr";key=match[2];var val=match[3]||"";if(val===""&&knode[method](key)!==""){return true}if(val!==""&&knode[method](key)===val){return true}}return false}function _removeAttrOrCss(knode,map){if(knode.type!=1){return}_removeAttrOrCssByKey(knode,map,"*");_removeAttrOrCssByKey(knode,map)}function _removeAttrOrCssByKey(knode,map,mapKey){mapKey=mapKey||knode.name;if(knode.type!==1){return}var newMap=_singleKeyMap(map);if(!newMap[mapKey]){return}var arr=newMap[mapKey].split(","),allFlag=false;for(var i=0,len=arr.length;i<len;i++){var key=arr[i];if(key==="*"){allFlag=true;break}var match=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key);key=match[2];if(match[1]){key=_toCamel(key);if(knode[0].style[key]){knode[0].style[key]=""}}else{knode.removeAttr(key)}}if(allFlag){knode.remove(true)}}function _getInnerNode(knode){var inner=knode;while(inner.first()){inner=inner.first()}return inner}function _isEmptyNode(knode){if(knode.type!=1||knode.isSingle()){return false}return knode.html().replace(/<[^>]+>/g,"")===""}function _mergeWrapper(a,b){a=a.clone(true);var lastA=_getInnerNode(a),childA=a,merged=false;while(b){while(childA){if(childA.name===b.name){_mergeAttrs(childA,b.attr(),b.css());merged=true}childA=childA.first()}if(!merged){lastA.append(b.clone(false))}merged=false;b=b.first()}return a}function _wrapNode(knode,wrapper){wrapper=wrapper.clone(true);if(knode.type==3){_getInnerNode(wrapper).append(knode.clone(false));knode.replaceWith(wrapper);return wrapper}var nodeWrapper=knode,child;while((child=knode.first())&&child.children().length==1){knode=child}child=knode.first();var frag=knode.doc.createDocumentFragment();while(child){frag.appendChild(child[0]);child=child.next()}wrapper=_mergeWrapper(nodeWrapper,wrapper);if(frag.firstChild){_getInnerNode(wrapper).append(frag)}nodeWrapper.replaceWith(wrapper);return wrapper}function _mergeAttrs(knode,attrs,styles){_each(attrs,function(key,val){if(key!=="style"){knode.attr(key,val)}});_each(styles,function(key,val){knode.css(key,val)})}function _inPreElement(knode){while(knode&&knode.name!="body"){if(_PRE_TAG_MAP[knode.name]||knode.name=="div"&&knode.hasClass("ke-script")){return true}knode=knode.parent()}return false}function KCmd(range){this.init(range)}_extend(KCmd,{init:function(range){var self=this,doc=range.doc;self.doc=doc;self.win=_getWin(doc);self.sel=_getSel(doc);self.range=range},selection:function(forceReset){var self=this,doc=self.doc,rng=_getRng(doc);self.sel=_getSel(doc);if(rng){self.range=_range(rng);if(K(self.range.startContainer).name=="html"){self.range.selectNodeContents(doc.body).collapse(false)}return self}if(forceReset){self.range.selectNodeContents(doc.body).collapse(false)}return self},select:function(hasDummy){hasDummy=_undef(hasDummy,true);var self=this,sel=self.sel,range=self.range.cloneRange().shrink(),sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,doc=_getDoc(sc),win=self.win,rng,hasU200b=false;if(hasDummy&&sc.nodeType==1&&range.collapsed){if(_IERANGE){var dummy=K("<span> </span>",doc);range.insertNode(dummy[0]);rng=doc.body.createTextRange();try{rng.moveToElementText(dummy[0])}catch(ex){}rng.collapse(false);rng.select();dummy.remove();win.focus();return self}if(_WEBKIT){var children=sc.childNodes;if(K(sc).isInline()||so>0&&K(children[so-1]).isInline()||children[so]&&K(children[so]).isInline()){range.insertNode(doc.createTextNode(""));hasU200b=true}}}if(_IERANGE){try{rng=range.get(true);rng.select()}catch(e){}}else{if(hasU200b){range.collapse(false)}rng=range.get(true);sel.removeAllRanges();sel.addRange(rng);if(doc!==document){var pos=K(rng.endContainer).pos();win.scrollTo(pos.x,pos.y)}}win.focus();return self},wrap:function(val){var self=this,doc=self.doc,range=self.range,wrapper;wrapper=K(val,doc);if(range.collapsed){range.shrink();range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]);return self}if(wrapper.isBlock()){var copyWrapper=wrapper.clone(true),child=copyWrapper;while(child.first()){child=child.first()}child.append(range.extractContents());range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]);return self}range.enlarge();var bookmark=range.createBookmark(),ancestor=range.commonAncestor(),isStart=false;K(ancestor).scan(function(node){if(!isStart&&node==bookmark.start){isStart=true;return}if(isStart){if(node==bookmark.end){return false}var knode=K(node);if(_inPreElement(knode)){return}if(knode.type==3&&_trim(node.nodeValue).length>0){var parent;while((parent=knode.parent())&&parent.isStyle()&&parent.children().length==1){knode=parent}_wrapNode(knode,wrapper)}}});range.moveToBookmark(bookmark);return self},split:function(isStart,map){var range=this.range,doc=range.doc;var tempRange=range.cloneRange().collapse(isStart);var node=tempRange.startContainer,pos=tempRange.startOffset,parent=node.nodeType==3?node.parentNode:node,needSplit=false,knode;while(parent&&parent.parentNode){knode=K(parent);if(map){if(!knode.isStyle()){break}if(!_hasAttrOrCss(knode,map)){break}}else{if(_NOSPLIT_TAG_MAP[knode.name]){break}}needSplit=true;parent=parent.parentNode}if(needSplit){var dummy=doc.createElement("span");range.cloneRange().collapse(!isStart).insertNode(dummy);if(isStart){tempRange.setStartBefore(parent.firstChild).setEnd(node,pos)}else{tempRange.setStart(node,pos).setEndAfter(parent.lastChild)}var frag=tempRange.extractContents(),first=frag.firstChild,last=frag.lastChild;if(isStart){tempRange.insertNode(frag);range.setStartAfter(last).setEndBefore(dummy)}else{parent.appendChild(frag);range.setStartBefore(dummy).setEndBefore(first)}var dummyParent=dummy.parentNode;if(dummyParent==range.endContainer){var prev=K(dummy).prev(),next=K(dummy).next();if(prev&&next&&prev.type==3&&next.type==3){range.setEnd(prev[0],prev[0].nodeValue.length)}else if(!isStart){range.setEnd(range.endContainer,range.endOffset-1)}}dummyParent.removeChild(dummy)}return this},remove:function(map){var self=this,doc=self.doc,range=self.range;range.enlarge();if(range.startOffset===0){var ksc=K(range.startContainer),parent;while((parent=ksc.parent())&&parent.isStyle()&&parent.children().length==1){ksc=parent}range.setStart(ksc[0],0);ksc=K(range.startContainer);if(ksc.isBlock()){_removeAttrOrCss(ksc,map)}var kscp=ksc.parent();if(kscp&&kscp.isBlock()){_removeAttrOrCss(kscp,map)}}var sc,so;if(range.collapsed){self.split(true,map);sc=range.startContainer;so=range.startOffset;if(so>0){var sb=K(sc.childNodes[so-1]);if(sb&&_isEmptyNode(sb)){sb.remove();range.setStart(sc,so-1)}}var sa=K(sc.childNodes[so]);if(sa&&_isEmptyNode(sa)){sa.remove()}if(_isEmptyNode(sc)){range.startBefore(sc);sc.remove()}range.collapse(true);return self}self.split(true,map);self.split(false,map);var startDummy=doc.createElement("span"),endDummy=doc.createElement("span");range.cloneRange().collapse(false).insertNode(endDummy);range.cloneRange().collapse(true).insertNode(startDummy);var nodeList=[],cmpStart=false;K(range.commonAncestor()).scan(function(node){if(!cmpStart&&node==startDummy){cmpStart=true;return}if(node==endDummy){return false}if(cmpStart){nodeList.push(node)}});K(startDummy).remove();K(endDummy).remove();sc=range.startContainer;so=range.startOffset;var ec=range.endContainer,eo=range.endOffset;if(so>0){var startBefore=K(sc.childNodes[so-1]);if(startBefore&&_isEmptyNode(startBefore)){startBefore.remove();range.setStart(sc,so-1);if(sc==ec){range.setEnd(ec,eo-1)}}var startAfter=K(sc.childNodes[so]);if(startAfter&&_isEmptyNode(startAfter)){startAfter.remove();if(sc==ec){range.setEnd(ec,eo-1)}}}var endAfter=K(ec.childNodes[range.endOffset]);if(endAfter&&_isEmptyNode(endAfter)){endAfter.remove()}var bookmark=range.createBookmark(true);_each(nodeList,function(i,node){_removeAttrOrCss(K(node),map)});range.moveToBookmark(bookmark);return self},commonNode:function(map){var range=this.range;var ec=range.endContainer,eo=range.endOffset,node=ec.nodeType==3||eo===0?ec:ec.childNodes[eo-1];function find(node){var child=node,parent=node;while(parent){if(_hasAttrOrCss(K(parent),map)){return K(parent)}parent=parent.parentNode}while(child&&(child=child.lastChild)){if(_hasAttrOrCss(K(child),map)){return K(child)}}return null}var cNode=find(node);if(cNode){return cNode}if(node.nodeType==1||ec.nodeType==3&&eo===0){var prev=K(node).prev();if(prev){return find(prev)}}return null},commonAncestor:function(tagName){var range=this.range,sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,startNode=sc.nodeType==3||so===0?sc:sc.childNodes[so-1],endNode=ec.nodeType==3||eo===0?ec:ec.childNodes[eo-1];function find(node){while(node){if(node.nodeType==1){if(node.tagName.toLowerCase()===tagName){return node}}node=node.parentNode}return null}var start=find(startNode),end=find(endNode);if(start&&end&&start===end){return K(start)}return null},state:function(key){var self=this,doc=self.doc,bool=false;try{bool=doc.queryCommandState(key)}catch(e){}return bool},val:function(key){var self=this,doc=self.doc,range=self.range;function lc(val){return val.toLowerCase()}key=lc(key);var val="",knode;if(key==="fontfamily"||key==="fontname"){val=_nativeCommandValue(doc,"fontname");val=val.replace(/['"]/g,"");return lc(val)}if(key==="formatblock"){val=_nativeCommandValue(doc,key);if(val===""){knode=self.commonNode({"h1,h2,h3,h4,h5,h6,p,div,pre,address":"*"});if(knode){val=knode.name}}if(val==="Normal"){val="p"}return lc(val)}if(key==="fontsize"){knode=self.commonNode({"*":".font-size"});if(knode){val=knode.css("font-size")}return lc(val)}if(key==="forecolor"){knode=self.commonNode({"*":".color"});if(knode){val=knode.css("color")}val=_toHex(val);if(val===""){val="default"}return lc(val)}if(key==="hilitecolor"){knode=self.commonNode({"*":".background-color"});if(knode){val=knode.css("background-color")}val=_toHex(val);if(val===""){val="default"}return lc(val)}return val},toggle:function(wrapper,map){var self=this;if(self.commonNode(map)){self.remove(map)}else{self.wrap(wrapper)}return self.select()},bold:function(){return this.toggle("<strong></strong>",{span:".font-weight=bold",strong:"*",b:"*"})},italic:function(){return this.toggle("<em></em>",{span:".font-style=italic",em:"*",i:"*"})},underline:function(){return this.toggle("<u></u>",{span:".text-decoration=underline",u:"*"})},strikethrough:function(){return this.toggle("<s></s>",{span:".text-decoration=line-through",s:"*"})},forecolor:function(val){return this.wrap('<span style="color:'+val+';"></span>').select()},hilitecolor:function(val){return this.wrap('<span style="background-color:'+val+';"></span>').select()},fontsize:function(val){return this.wrap('<span style="font-size:'+val+';"></span>').select()},fontname:function(val){return this.fontfamily(val)},fontfamily:function(val){return this.wrap('<span style="font-family:'+val+';"></span>').select()},removeformat:function(){var map={"*":".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent"},tags=_STYLE_TAG_MAP;_each(tags,function(key,val){map[key]="*"});this.remove(map);return this.select()},inserthtml:function(val,quickMode){var self=this,range=self.range;if(val===""){return self}function pasteHtml(range,val){val='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+val;var rng=range.get();if(rng.item){rng.item(0).outerHTML=val}else{rng.pasteHTML(val)}var temp=range.doc.getElementById("__kindeditor_temp_tag__");temp.parentNode.removeChild(temp);var newRange=_toRange(rng);range.setEnd(newRange.endContainer,newRange.endOffset);range.collapse(false);self.select(false)}function insertHtml(range,val){var doc=range.doc,frag=doc.createDocumentFragment();K("@"+val,doc).each(function(){frag.appendChild(this)});range.deleteContents();range.insertNode(frag);range.collapse(false);self.select(false)}if(_IERANGE&&quickMode){try{pasteHtml(range,val)}catch(e){insertHtml(range,val)}return self}insertHtml(range,val);return self},hr:function(){return this.inserthtml("<hr />")},print:function(){this.win.print();return this},insertimage:function(url,title,width,height,border,align){title=_undef(title,"");border=_undef(border,0);var html='<img src="'+_escape(url)+'" data-ke-src="'+_escape(url)+'" ';if(width){html+='width="'+_escape(width)+'" '}if(height){html+='height="'+_escape(height)+'" '}if(title){html+='title="'+_escape(title)+'" '}if(align){html+='align="'+_escape(align)+'" '}html+='alt="'+_escape(title)+'" ';html+="/>";return this.inserthtml(html)},createlink:function(url,type){var self=this,doc=self.doc,range=self.range;self.select();var a=self.commonNode({a:"*"});if(a&&!range.isControl()){range.selectNode(a.get());self.select()}var html='<a href="'+_escape(url)+'" data-ke-src="'+_escape(url)+'" ';if(type){html+=' target="'+_escape(type)+'"'}if(range.collapsed){html+=">"+_escape(url)+"</a>";return self.inserthtml(html)}if(range.isControl()){var node=K(range.startContainer.childNodes[range.startOffset]);html+="></a>";node.after(K(html,doc));node.next().append(node);range.selectNode(node[0]);return self.select()}function setAttr(node,url,type){K(node).attr("href",url).attr("data-ke-src",url);if(type){K(node).attr("target",type)}else{K(node).removeAttr("target")}}var sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset;if(sc.nodeType==1&&sc===ec&&so+1===eo){var child=sc.childNodes[so];if(child.nodeName.toLowerCase()=="a"){setAttr(child,url,type);return self}}_nativeCommand(doc,"createlink","__kindeditor_temp_url__");K('a[href="__kindeditor_temp_url__"]',doc).each(function(){setAttr(this,url,type)});return self},unlink:function(){var self=this,doc=self.doc,range=self.range;self.select();if(range.collapsed){var a=self.commonNode({a:"*"});if(a){range.selectNode(a.get());self.select()}_nativeCommand(doc,"unlink",null);if(_WEBKIT&&K(range.startContainer).name==="img"){var parent=K(range.startContainer).parent();if(parent.name==="a"){parent.remove(true)}}}else{_nativeCommand(doc,"unlink",null)}return self}});_each(("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,"+"insertunorderedlist,indent,outdent,subscript,superscript").split(","),function(i,name){KCmd.prototype[name]=function(val){var self=this;self.select();_nativeCommand(self.doc,name,val);if(_IERANGE&&_inArray(name,"justifyleft,justifycenter,justifyright,justifyfull".split(","))>=0){self.selection()}if(!_IERANGE||_inArray(name,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=0){self.selection()}return self}});_each("cut,copy,paste".split(","),function(i,name){KCmd.prototype[name]=function(){var self=this;if(!self.doc.queryCommandSupported(name)){throw"not supported"}self.select();_nativeCommand(self.doc,name,null);return self}});function _cmd(mixed){if(mixed.nodeName){var doc=_getDoc(mixed);mixed=_range(doc).selectNodeContents(doc.body).collapse(false)}return new KCmd(mixed)}K.CmdClass=KCmd;K.cmd=_cmd;function _drag(options){var moveEl=options.moveEl,moveFn=options.moveFn,clickEl=options.clickEl||moveEl,beforeDrag=options.beforeDrag,iframeFix=options.iframeFix===undefined?true:options.iframeFix;var docs=[document];if(iframeFix){K("iframe").each(function(){var src=_formatUrl(this.src||"","absolute");if(/^https?:\/\//.test(src)){return}var doc;try{doc=_iframeDoc(this)}catch(e){}if(doc){var pos=K(this).pos();K(doc).data("pos-x",pos.x);K(doc).data("pos-y",pos.y);docs.push(doc)}})}clickEl.mousedown(function(e){if(e.button!==0&&e.button!==1){return}e.stopPropagation();var self=clickEl.get(),x=_removeUnit(moveEl.css("left")),y=_removeUnit(moveEl.css("top")),width=moveEl.width(),height=moveEl.height(),pageX=e.pageX,pageY=e.pageY;if(beforeDrag){beforeDrag()}function moveListener(e){e.preventDefault();var kdoc=K(_getDoc(e.target));var diffX=_round((kdoc.data("pos-x")||0)+e.pageX-pageX);var diffY=_round((kdoc.data("pos-y")||0)+e.pageY-pageY);moveFn.call(clickEl,x,y,width,height,diffX,diffY)}function selectListener(e){e.preventDefault()}function upListener(e){e.preventDefault();K(docs).unbind("mousemove",moveListener).unbind("mouseup",upListener).unbind("selectstart",selectListener);if(self.releaseCapture){self.releaseCapture()}}K(docs).mousemove(moveListener).mouseup(upListener).bind("selectstart",selectListener);if(self.setCapture){self.setCapture()}})}function KWidget(options){this.init(options)}_extend(KWidget,{init:function(options){var self=this;self.name=options.name||"";self.doc=options.doc||document;self.win=_getWin(self.doc);self.x=_addUnit(options.x);self.y=_addUnit(options.y);self.z=options.z;self.width=_addUnit(options.width);self.height=_addUnit(options.height);self.div=K('<div style="display:block;"></div>');self.options=options;self._alignEl=options.alignEl;if(self.width){self.div.css("width",self.width)}if(self.height){self.div.css("height",self.height)}if(self.z){self.div.css({position:"absolute",left:self.x,top:self.y,"z-index":self.z})}if(self.z&&(self.x===undefined||self.y===undefined)){self.autoPos(self.width,self.height)}if(options.cls){self.div.addClass(options.cls)}if(options.shadowMode){self.div.addClass("ke-shadow")}if(options.css){self.div.css(options.css)}if(options.src){K(options.src).replaceWith(self.div)}else{K(self.doc.body).append(self.div)}if(options.html){self.div.html(options.html)}if(options.autoScroll){if(_IE&&_V<7||_QUIRKS){var scrollPos=_getScrollPos();K(self.win).bind("scroll",function(e){var pos=_getScrollPos(),diffX=pos.x-scrollPos.x,diffY=pos.y-scrollPos.y;self.pos(_removeUnit(self.x)+diffX,_removeUnit(self.y)+diffY,false)})}else{self.div.css("position","fixed")}}},pos:function(x,y,updateProp){var self=this;updateProp=_undef(updateProp,true);if(x!==null){x=x<0?0:_addUnit(x);self.div.css("left",x);if(updateProp){self.x=x}}if(y!==null){y=y<0?0:_addUnit(y);self.div.css("top",y);if(updateProp){self.y=y}}return self},autoPos:function(width,height){var x,y,self=this,w=_removeUnit(width)||0,h=_removeUnit(height)||0,scrollPos=_getScrollPos();if(self._alignEl){var knode=K(self._alignEl),pos=knode.pos(),diffX=_round(knode[0].clientWidth/2-w/2),diffY=_round(knode[0].clientHeight/2-h/2);x=diffX<0?pos.x:pos.x+diffX}else{var docEl=_docElement(self.doc);x=_round(scrollPos.x+(docEl.clientWidth-w)/2);y=_round(scrollPos.y+(docEl.clientHeight-h)/2)}if(K.options.dialogOffset>0){y=scrollPos.y+20}if(!(_IE&&_V<7||_QUIRKS)){x-=scrollPos.x;y-=scrollPos.y}return self.pos(x,y)},remove:function(){var self=this;if(_IE&&_V<7||_QUIRKS){K(self.win).unbind("scroll")}self.div.remove();_each(self,function(i){self[i]=null});return this},show:function(){this.div.show();return this},hide:function(){this.div.hide();return this},draggable:function(options){var self=this;options=options||{};options.moveEl=self.div;options.moveFn=function(x,y,width,height,diffX,diffY){if((x=x+diffX)<0){x=0}if((y=y+diffY)<0){y=0}self.pos(x,y)};_drag(options);return self}});function _widget(options){return new KWidget(options)}K.WidgetClass=KWidget;K.widget=_widget;function _iframeDoc(iframe){iframe=_get(iframe);return iframe.contentDocument||iframe.contentWindow.document}var html,_direction="";if(html=document.getElementsByTagName("html")){_direction=html[0].dir}function _getInitHtml(options){var themesPath=_undef(options.themesPath,""),bodyClass=options.bodyClass,cssPath=options.cssPath,jsPath=options.jsPath,cssData=options.cssData;var arr=[_direction===""?"<html>":'<html dir="'+_direction+'">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}","img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/flash.svg);","\t*background-image:url("+themesPath+"common/flash.png);","\tbackground-size:64px 64px;","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/play.svg);","\t*background-image:url("+themesPath+"common/play.png);","\tbackground-position:center center;","\tbackground-size:64px 64px;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}"];if(options.showHelpGrid){arr.push("p,ul,ol,li,div{border: 1px dashed #c1c1c1;}");arr.push("li{margin:5px 0px}");arr.push("div,ul,ol{margin-bottom:10px}")}arr.push("</style>");if(!_isArray(cssPath)){cssPath=[cssPath]}if(_inArray(K.basePath+"themes/app.css",cssPath)<0){cssPath.push(K.basePath+"themes/app.css")}_each(cssPath,function(i,path){if(path){arr.push('<link href="'+path+'" rel="stylesheet" />')}});if(cssData){arr.push("<style>"+cssData+"</style>")}arr.push("</head><body "+(bodyClass?'class="'+bodyClass+'"':"")+">");if(!_isArray(jsPath)){jsPath=[jsPath]}_each(jsPath,function(i,path){if(path){arr.push('<script type="text/javascript" src="'+path+'"><\/script>')}});arr.push("</body></html>");return arr.join("\n")}function _elementVal(knode,val){if(knode.hasVal()){if(val===undefined){var html=knode.val();html=html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"");return html}return knode.val(val)}return knode.html(val)}function KEdit(options){this.init(options)}_extend(KEdit,KWidget,{init:function(options){var self=this;KEdit.parent.init.call(self,options);self.srcElement=K(options.srcElement);self.div.addClass("ke-edit");self.designMode=_undef(options.designMode,true);self.beforeGetHtml=options.beforeGetHtml;self.beforeSetHtml=options.beforeSetHtml;self.afterSetHtml=options.afterSetHtml;var isDocumentDomain=location.protocol!="res:"&&location.host.replace(/:\d+/,"")!==document.domain,srcScript="document.open();"+(isDocumentDomain?'document.domain="'+document.domain+'";':"")+"document.close();",iframeSrc=_IE?' src="javascript:void(function(){'+encodeURIComponent(srcScript)+'}())"':"";self.iframe=K('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"'+iframeSrc+"></iframe>").css("width","100%");self.textarea=K('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css("width","100%");self.tabIndex=isNaN(parseInt(options.tabIndex,10))?self.srcElement.attr("tabindex"):parseInt(options.tabIndex,10);self.iframe.attr("tabindex",self.tabIndex);self.textarea.attr("tabindex",self.tabIndex);if(self.width){self.setWidth(self.width)}if(self.height){self.setHeight(self.height)}if(self.designMode){self.textarea.hide()}else{self.iframe.hide()}function ready(){var doc=_iframeDoc(self.iframe);doc.open();if(isDocumentDomain){doc.domain=document.domain}doc.write(_getInitHtml(self.options));doc.close();self.win=self.iframe[0].contentWindow;self.doc=doc;var cmd=_cmd(doc);self.afterChange(function(e){cmd.selection()});if(_WEBKIT){K(doc).click(function(e){if(K(e.target).name==="img"){cmd.selection(true);cmd.range.selectNode(e.target);cmd.select()}})}if(_IE){self._mousedownHandler=function(){var newRange=cmd.range.cloneRange();newRange.shrink();if(newRange.isControl()){self.blur()}};K(document).mousedown(self._mousedownHandler);K(doc).keydown(function(e){if(e.which==8){cmd.selection();var rng=cmd.range;if(rng.isControl()){rng.collapse(true);K(rng.startContainer.childNodes[rng.startOffset]).remove();e.preventDefault()}}})}self.cmd=cmd;self.html(_elementVal(self.srcElement));if(_IE){doc.body.disabled=true;doc.body.contentEditable=true;doc.body.removeAttribute("disabled")}else{doc.designMode="on"}if(options.afterCreate){options.afterCreate.call(self)}}if(isDocumentDomain){self.iframe.bind("load",function(e){self.iframe.unbind("load");if(_IE){ready()}else{setTimeout(ready,0)}})}self.div.append(self.iframe);self.div.append(self.textarea);self.srcElement.hide();!isDocumentDomain&&ready()},setWidth:function(val){var self=this;val=_addUnit(val);self.width=val;self.div.css("width",val);return self},setHeight:function(val){var self=this;val=_addUnit(val);self.height=val;self.div.css("height",val);self.iframe.css("height",val);if(_IE&&_V<8||_QUIRKS){val=_addUnit(_removeUnit(val)-2)}self.textarea.css("height",val);return self},remove:function(){var self=this,doc=self.doc;K(doc.body).unbind();K(doc).unbind();K(self.win).unbind();if(self._mousedownHandler){K(document).unbind("mousedown",self._mousedownHandler)}_elementVal(self.srcElement,self.html());self.srcElement.show();self.iframe.unbind();self.textarea.unbind();KEdit.parent.remove.call(self)},html:function(val,isFull){var self=this,doc=self.doc;if(self.designMode){var body=doc.body;if(val===undefined){if(isFull){val="<!doctype html><html>"+body.parentNode.innerHTML+"</html>"}else{val=body.innerHTML}if(self.beforeGetHtml){val=self.beforeGetHtml(val)}if(_GECKO&&val=="<br />"){val=""}return val}if(self.beforeSetHtml){val=self.beforeSetHtml(val)}if(_IE&&_V>=9){val=val.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")}K(body).html(val);if(self.afterSetHtml){self.afterSetHtml()}return self}if(val===undefined){return self.textarea.val()}self.textarea.val(val);return self},design:function(bool){var self=this,val;if(bool===undefined?!self.designMode:bool){if(!self.designMode){val=self.html();self.designMode=true;self.textarea.hide();self.html(val);var iframe=self.iframe;var height=_removeUnit(self.height);iframe.height(height-2);iframe.show();setTimeout(function(){iframe.height(height)},0)}}else{if(self.designMode){val=self.html();self.designMode=false;self.html(val);self.iframe.hide();self.textarea.show()}}return self.focus()},focus:function(){var self=this;self.designMode?self.win.focus():self.textarea[0].focus();return self},blur:function(){var self=this;if(_IE){var input=K('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />',self.div);self.div.append(input);input[0].focus();input.remove()}else{self.designMode?self.win.blur():self.textarea[0].blur()}return self},afterChange:function(fn){var self=this,doc=self.doc,body=doc.body;K(doc).keyup(function(e){if(!e.ctrlKey&&!e.altKey&&_CHANGE_KEY_MAP[e.which]){fn(e)}});K(doc).mouseup(fn).contextmenu(fn);K(self.win).blur(fn);function timeoutHandler(e){setTimeout(function(){fn(e)},1)}K(body).bind("paste",timeoutHandler);K(body).bind("cut",timeoutHandler);return self}});function _edit(options){return new KEdit(options)}K.EditClass=KEdit;K.edit=_edit;K.iframeDoc=_iframeDoc;function _selectToolbar(name,fn){var self=this,knode=self.get(name);if(knode){if(knode.hasClass("ke-disabled")){return}fn(knode)}}function KToolbar(options){this.init(options)}_extend(KToolbar,KWidget,{init:function(options){var self=this;KToolbar.parent.init.call(self,options);self.disableMode=_undef(options.disableMode,false);self.noDisableItemMap=_toMap(_undef(options.noDisableItems,[]));self._itemMap={};self.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()}).attr("unselectable","on");function find(target){var knode=K(target);if(knode.hasClass("ke-outline")){return knode}if(knode.hasClass("ke-toolbar-icon")){return knode.parent()}}function hover(e,method){var knode=find(e.target);if(knode){if(knode.hasClass("ke-disabled")){return}if(knode.hasClass("ke-selected")){return}knode[method]("ke-on")}}self.div.mouseover(function(e){hover(e,"addClass")}).mouseout(function(e){hover(e,"removeClass")}).click(function(e){var knode=find(e.target);if(knode){if(knode.hasClass("ke-disabled")){return}self.options.click.call(this,e,knode.attr("data-name"))}})},get:function(name){if(this._itemMap[name]){return this._itemMap[name]}return this._itemMap[name]=K("span.ke-icon-"+name,this.div).parent()},select:function(name){_selectToolbar.call(this,name,function(knode){knode.addClass("ke-selected")});return self},unselect:function(name){_selectToolbar.call(this,name,function(knode){knode.removeClass("ke-selected").removeClass("ke-on")});return self},enable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass("ke-disabled");knode.opacity(1)}return self},disable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass("ke-selected").addClass("ke-disabled");knode.opacity(.5)}return self},disableAll:function(bool,noDisableItems){var self=this,map=self.noDisableItemMap,item;if(noDisableItems){map=_toMap(noDisableItems)}if(bool===undefined?!self.disableMode:bool){K("span.ke-outline",self.div).each(function(){var knode=K(this),name=knode[0].getAttribute("data-name",2);if(!map[name]){self.disable(knode)}});self.disableMode=true}else{K("span.ke-outline",self.div).each(function(){var knode=K(this),name=knode[0].getAttribute("data-name",2);if(!map[name]){self.enable(knode)}});self.disableMode=false}return self}});function _toolbar(options){return new KToolbar(options)}K.ToolbarClass=KToolbar;K.toolbar=_toolbar;function KMenu(options){this.init(options)}_extend(KMenu,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KMenu.parent.init.call(self,options);self.centerLineMode=_undef(options.centerLineMode,true);self.div.addClass("ke-menu ke-menu-"+options.themeType).bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on")},addItem:function(item){var self=this;if(item.title==="-"){self.div.append(K('<div class="ke-menu-separator"></div>'));return}var itemDiv=K('<div class="ke-menu-item" unselectable="on"></div>'),leftDiv=K('<div class="ke-inline-block ke-menu-item-left"></div>'),rightDiv=K('<div class="ke-inline-block ke-menu-item-right"></div>'),height=_addUnit(item.height),iconClass=_undef(item.iconClass,"");self.div.append(itemDiv);if(height){itemDiv.css("height",height);rightDiv.css("line-height",height)}var centerDiv;if(self.centerLineMode){centerDiv=K('<div class="ke-inline-block ke-menu-item-center"></div>');if(height){centerDiv.css("height",height)}}itemDiv.mouseover(function(e){K(this).addClass("ke-menu-item-on");if(centerDiv){centerDiv.addClass("ke-menu-item-center-on")}}).mouseout(function(e){K(this).removeClass("ke-menu-item-on");if(centerDiv){centerDiv.removeClass("ke-menu-item-center-on")}}).click(function(e){item.click.call(K(this));e.stopPropagation()}).append(leftDiv);if(centerDiv){itemDiv.append(centerDiv)}itemDiv.append(rightDiv);if(item.checked){iconClass="ke-icon-checked"}if(iconClass!==""){leftDiv.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url '+iconClass+'"></span>')}rightDiv.html(item.title);return self},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self)}K(".ke-menu-item",self.div[0]).unbind();KMenu.parent.remove.call(self);return self}});function _menu(options){return new KMenu(options)}K.MenuClass=KMenu;K.menu=_menu;function KColorPicker(options){this.init(options)}_extend(KColorPicker,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KColorPicker.parent.init.call(self,options);var colors=options.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];self.selectedColor=(options.selectedColor||"").toLowerCase();self._cells=[];self.div.addClass("ke-colorpicker").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on");var table=self.doc.createElement("table");self.div.append(table);table.className="ke-colorpicker-table";table.cellPadding=0;table.cellSpacing=0;table.border=0;var row=table.insertRow(0),cell=row.insertCell(0);cell.colSpan=colors[0].length;self._addAttr(cell,"","ke-colorpicker-cell-top");for(var i=0;i<colors.length;i++){row=table.insertRow(i+1);for(var j=0;j<colors[i].length;j++){cell=row.insertCell(j);self._addAttr(cell,colors[i][j],"ke-colorpicker-cell")}}},_addAttr:function(cell,color,cls){var self=this;cell=K(cell).addClass(cls);if(self.selectedColor===color.toLowerCase()){cell.addClass("ke-colorpicker-cell-selected")}cell.attr("title",color||self.options.noColor);cell.mouseover(function(e){K(this).addClass("ke-colorpicker-cell-on")});cell.mouseout(function(e){K(this).removeClass("ke-colorpicker-cell-on")});cell.click(function(e){e.stop();self.options.click.call(K(this),color)});if(color){cell.append(K('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css("background-color",color))}else{cell.html(self.options.noColor)}K(cell).attr("unselectable","on");self._cells.push(cell)},remove:function(){var self=this;_each(self._cells,function(){this.unbind()});KColorPicker.parent.remove.call(self);return self}});function _colorpicker(options){return new KColorPicker(options)}K.ColorPickerClass=KColorPicker;K.colorpicker=_colorpicker;function KUploadButton(options){this.init(options)}_extend(KUploadButton,{init:function(options){var self=this,button=K(options.button),fieldName=options.fieldName||"file",url=options.url||"",title=button.val(),extraParams=options.extraParams||{},cls=button[0].className||"",target=options.target||"kindeditor_upload_iframe_"+(new Date).getTime();options.afterError=options.afterError||function(str){K.options.errorMsgHandler(str,"error")};var hiddenElements=[];for(var k in extraParams){hiddenElements.push('<input type="hidden" name="'+k+'" value="'+extraParams[k]+'" />')}var html=['<div class="ke-inline-block '+cls+'">',options.target?"":'<iframe name="'+target+'" style="display:none;"></iframe>',options.form?'<div class="ke-upload-area">':'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+target+'" action="'+url+'">','<span class="ke-button-common">',hiddenElements.join(""),'<input type="button" class="ke-button-common ke-button" value="'+title+'" />',"</span>",'<input type="file" class="ke-upload-file" name="'+fieldName+'" tabindex="-1" />',options.form?"</div>":"</form>","</div>"].join("");var div=K(html,button.doc);button.hide();button.before(div);self.div=div;self.button=button;self.iframe=options.target?K('iframe[name="'+target+'"]'):K("iframe",div);self.form=options.form?K(options.form):K("form",div);self.fileBox=K(".ke-upload-file",div);var width=options.width||K(".ke-button-common",div).width();K(".ke-upload-area",div).width(width);self.options=options},submit:function(){var self=this,iframe=self.iframe;if(typeof self.options.beforeUpload=="function"){var result=self.options.beforeUpload.call(self);if(!result){return false}}iframe.bind("load",function(){iframe.unbind();var tempForm=document.createElement("form");self.fileBox.before(tempForm);K(tempForm).append(self.fileBox);tempForm.reset();K(tempForm).remove(true);var doc=K.iframeDoc(iframe),pre=doc.getElementsByTagName("pre")[0],str="",data;if(pre){str=pre.innerHTML}else{str=doc.body.innerHTML}str=_unescape(str);iframe[0].src="javascript:false";try{data=K.json(str)}catch(e){self.options.afterError.call(self,"<!doctype html><html>"+doc.body.parentNode.innerHTML+"</html>")}if(data){self.options.afterUpload.call(self,data)}});self.form[0].submit();return self},remove:function(){var self=this;if(self.fileBox){self.fileBox.unbind()}self.iframe.remove();self.div.remove();self.button.show();return self}});function _uploadbutton(options){return new KUploadButton(options)}K.UploadButtonClass=KUploadButton;K.uploadbutton=_uploadbutton;function _createButton(arg){arg=arg||{};var name=arg.name||"",btn=K('<a href="javascript:;" class="ke-dialog-btn" title="'+name+'">'+name+"</a>");if(arg.click){btn.click(arg.click)}return btn}function KDialog(options){this.init(options)}_extend(KDialog,KWidget,{init:function(options){var self=this;options.z=options.z||811213;options.shadowMode=false;options.autoScroll=_undef(options.autoScroll,true);KDialog.parent.init.call(self,options);var title=options.title,body=K(options.body,self.doc),previewBtn=options.previewBtn,yesBtn=options.yesBtn,noBtn=options.noBtn,closeBtn=options.closeBtn,showMask=_undef(options.showMask,true);self.div.addClass("ke-dialog ke-animated").bind("click,mousedown",function(e){e.stopPropagation()});var contentDiv=K('<div class="ke-dialog-content"></div>').appendTo(self.div);var headerDiv=K('<div class="ke-dialog-header"></div>');contentDiv.append(headerDiv);headerDiv.html(title);self.closeIcon=K('<span class="ke-dialog-icon-close" title="'+closeBtn.name+'"></span>').click(closeBtn.click);headerDiv.append(self.closeIcon);self.draggable({clickEl:headerDiv,beforeDrag:options.beforeDrag});var bodyDiv=K('<div class="ke-dialog-body"></div>');contentDiv.append(bodyDiv);bodyDiv.append(body);var footerDiv=K('<div class="ke-dialog-footer"></div>');if(previewBtn||yesBtn||noBtn){self.div.append(footerDiv);contentDiv.height(self.div.height()-footerDiv.height())}_each([{btn:previewBtn,name:"preview"},{btn:yesBtn,name:"yes"},{btn:noBtn,name:"no"}],function(){if(this.btn){var button=_createButton(this.btn);button.addClass("ke-dialog-"+this.name);footerDiv.append(button)}});if(self.height){bodyDiv.height(_removeUnit(self.height)-headerDiv.height()-footerDiv.height())}self.div.width(self.div.width());self.div.height(self.div.height());self.mask=null;if(showMask){var docEl=_docElement(self.doc),docWidth=Math.max(docEl.scrollWidth,docEl.clientWidth),docHeight=Math.max(docEl.scrollHeight,docEl.clientHeight);self.mask=_widget({x:0,y:0,z:self.z-1,cls:"ke-dialog-mask",width:docWidth,height:docHeight})}self.autoPos(self.div.width(),self.div.height());self.footerDiv=footerDiv;self.bodyDiv=bodyDiv;self.headerDiv=headerDiv;self.isLoading=false},setMaskIndex:function(z){var self=this;self.mask.div.css("z-index",z)},showLoading:function(msg){msg=_undef(msg,"");var self=this,body=self.bodyDiv;self.loading=K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:'+Math.round(body.height()/3)+'px;">'+msg+"</div></div>").width(body.width()).height(body.height()).css("top",self.headerDiv.height()+"px");body.css("visibility","hidden").after(self.loading);self.isLoading=true;return self},hideLoading:function(){this.loading&&this.loading.remove();this.bodyDiv.css("visibility","visible");this.isLoading=false;return this},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self)}self.mask&&self.mask.remove();self.iframeMask&&self.iframeMask.remove();self.closeIcon.unbind();K("input",self.div).unbind();K("button",self.div).unbind();self.footerDiv.unbind();self.bodyDiv.unbind();self.headerDiv.unbind();K("iframe",self.div).each(function(){K(this).remove()});KDialog.parent.remove.call(self);return self}});function _dialog(options){return new KDialog(options)}K.DialogClass=KDialog;K.dialog=_dialog;function _tabs(options){var self=_widget(options),remove=self.remove,afterSelect=options.afterSelect,div=self.div,liList=[];div.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()});var ul=K('<ul class="ke-tabs-ul ke-clearfix"></ul>');div.append(ul);self.add=function(tab){var li=K('<li class="ke-tabs-li">'+tab.title+"</li>");li.data("tab",tab);liList.push(li);ul.append(li)};self.selectedIndex=0;self.select=function(index){self.selectedIndex=index;_each(liList,function(i,li){li.unbind();if(i===index){li.addClass("ke-tabs-li-selected");K(li.data("tab").panel).show("")}else{li.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){K(this).addClass("ke-tabs-li-on")}).mouseout(function(){K(this).removeClass("ke-tabs-li-on")}).click(function(){self.select(i)});K(li.data("tab").panel).hide()}});if(afterSelect){afterSelect.call(self,index)}};self.remove=function(){_each(liList,function(){this.remove()});ul.remove();remove.call(self)};return self}K.tabs=_tabs;function _loadScript(url,fn){if(K.options.resLoadCache[url]){return}var head=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),script=document.createElement("script");head.appendChild(script);K.options.resLoadCache[url]=1;script.src=url;script.charset="utf-8";script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState==="loaded"){if(fn){fn()}script.onload=script.onreadystatechange=null;head.removeChild(script)}}}function _chopQuery(url){var index=url.indexOf("?");return index>0?url.substr(0,index):url}function _loadStyle(url){if(K.options.resLoadCache[url]){return}var head=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),link=document.createElement("link"),absoluteUrl=_chopQuery(_formatUrl(url,"absolute"));var links=K('link[rel="stylesheet"]',head);for(var i=0,len=links.length;i<len;i++){if(_chopQuery(_formatUrl(links[i].href,"absolute"))===absoluteUrl){return}}head.appendChild(link);K.options.resLoadCache[url]=1;link.href=url;link.rel="stylesheet"}function _ajax(url,fn,method,param,dataType){method=method||"GET";dataType=dataType||"json";var xhr=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");xhr.open(method,url,true);xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){if(fn){var data=_trim(xhr.responseText);if(dataType=="json"){data=_json(data)}fn(data)}}};if(method=="POST"){var params=[];_each(param,function(key,val){params.push(encodeURIComponent(key)+"="+encodeURIComponent(val))});try{xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}xhr.send(params.join("&"))}else{xhr.send(null)}}K.loadScript=_loadScript;K.loadStyle=_loadStyle;K.ajax=_ajax;var _plugins={};function _plugin(name,fn){if(name===undefined){return _plugins}if(!fn){return _plugins[name]}_plugins[name]=fn}var _language={};function _parseLangKey(key){var match,ns="core";if(match=/^(\w+)\.(\w+)$/.exec(key)){ns=match[1];key=match[2]}return{ns:ns,key:key}}function _lang(mixed,langType){langType=langType===undefined?K.options.langType:langType;if(typeof mixed==="string"){if(!_language[langType]){return"no language"}var pos=mixed.length-1;if(mixed.substr(pos)==="."){return _language[langType][mixed.substr(0,pos)]}var obj=_parseLangKey(mixed);return _language[langType][obj.ns][obj.key]}_each(mixed,function(key,val){var obj=_parseLangKey(key);if(!_language[langType]){_language[langType]={}}if(!_language[langType][obj.ns]){_language[langType][obj.ns]={}}_language[langType][obj.ns][obj.key]=val})}function _getImageFromRange(range,fn){if(range.collapsed){return}range=range.cloneRange().up();var sc=range.startContainer,so=range.startOffset;if(!_WEBKIT&&!range.isControl()){return}var img=K(sc.childNodes[so]);if(!img||img.name!="img"){return}if(fn(img)){return img}}function _bindContextmenuEvent(){var self=this,doc=self.edit.doc;K(doc).contextmenu(function(e){if(self.menu){self.hideMenu()}if(!self.useContextmenu){e.preventDefault();return}if(self._contextmenus.length===0){return}var maxWidth=0,items=[];_each(self._contextmenus,function(){if(this.title=="-"){items.push(this);return}if(this.cond&&this.cond()){items.push(this);if(this.width&&this.width>maxWidth){maxWidth=this.width}}});while(items.length>0&&items[0].title=="-"){items.shift()}while(items.length>0&&items[items.length-1].title=="-"){items.pop()}var prevItem=null;_each(items,function(i){if(this.title=="-"&&prevItem.title=="-"){delete items[i]}prevItem=this});if(items.length>0){e.preventDefault();var pos=K(self.edit.iframe).pos(),menu=_menu({x:pos.x+e.clientX,themeType:self.themeType,y:pos.y+e.clientY,width:maxWidth,css:{visibility:"hidden"},shadowMode:self.shadowMode});_each(items,function(){if(this.title){menu.addItem(this)}});var docEl=_docElement(menu.doc),menuHeight=menu.div.height();if(e.clientY+menuHeight>=docEl.clientHeight-100){menu.pos(menu.x,_removeUnit(menu.y)-menuHeight)}menu.div.css("visibility","visible");self.menu=menu}})}function _bindNewlineEvent(){var self=this,doc=self.edit.doc,newlineTag=self.newlineTag;if(_IE&&newlineTag!=="br"){return}if(_GECKO&&_V<3&&newlineTag!=="p"){return}if(_OPERA&&_V<9){return}var brSkipTagMap=_toMap("h1,h2,h3,h4,h5,h6,pre,li"),pSkipTagMap=_toMap("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");function getAncestorTagName(range){var ancestor=K(range.commonAncestor());while(ancestor){if(ancestor.type==1&&!ancestor.isStyle()){break}ancestor=ancestor.parent()}return ancestor.name}K(doc).keydown(function(e){if(e.which==39){if(self.__startOffset==self.cmd.range.startOffset){var tagName=getAncestorTagName(self.cmd.range);if(tagName!="body"){self.appendHtml("<br />")}}else{self.__startOffset=self.cmd.range.startOffset}return}if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return}self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=="marquee"||tagName=="select"){return}if(newlineTag==="br"&&!brSkipTagMap[tagName]){e.preventDefault();self.insertHtml("<br />"+(_IE&&_V<9?"":""));return}if(!pSkipTagMap[tagName]){_nativeCommand(doc,"formatblock","<p>")}});K(doc).keyup(function(e){if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return}if(newlineTag=="br"){return}if(_GECKO){var root=self.cmd.commonAncestor("p");var a=self.cmd.commonAncestor("a");if(a&&a.text()==""){a.remove(true);self.cmd.range.selectNodeContents(root[0]).collapse(true);self.cmd.select()}return}self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=="marquee"||tagName=="select"){return}if(!pSkipTagMap[tagName]){_nativeCommand(doc,"formatblock","<p>")}var div=self.cmd.commonAncestor("div");if(div){var p=K("<p></p>"),child=div[0].firstChild;while(child){var next=child.nextSibling;p.append(child);child=next}div.before(p);div.remove();self.cmd.range.selectNodeContents(p[0]);self.cmd.select()}})}function _bindTabEvent(){var self=this,doc=self.edit.doc;K(doc).keydown(function(e){if(e.which==9){e.preventDefault();if(self.afterTab){self.afterTab.call(self,e);return}var cmd=self.cmd,range=cmd.range;range.shrink();if(range.collapsed&&range.startContainer.nodeType==1){range.insertNode(K("@ ",doc)[0]);cmd.select()}self.insertHtml(" ")}})}function _bindFocusEvent(){var self=this;K(self.edit.textarea[0],self.edit.win).focus(function(e){if(self.afterFocus){self.afterFocus.call(self,e)}}).blur(function(e){if(self.afterBlur){self.afterBlur.call(self,e)}})}function _removeBookmarkTag(html){return _trim(html.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/gi,""))}function _removeTempTag(html){return html.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/gi,"")}function _addBookmarkToStack(stack,bookmark){if(stack.length===0){stack.push(bookmark);return}var prev=stack[stack.length-1];if(_removeBookmarkTag(bookmark.html)!==_removeBookmarkTag(prev.html)){stack.push(bookmark)}}function _undoToRedo(fromStack,toStack){var self=this,edit=self.edit,body=edit.doc.body,range,bookmark;if(fromStack.length===0){return self}if(edit.designMode){range=self.cmd.range;bookmark=range.createBookmark(true);bookmark.html=body.innerHTML}else{bookmark={html:body.innerHTML}}_addBookmarkToStack(toStack,bookmark);var prev=fromStack.pop();if(_removeBookmarkTag(bookmark.html)===_removeBookmarkTag(prev.html)&&fromStack.length>0){prev=fromStack.pop()}if(edit.designMode){edit.html(prev.html);if(prev.start){range.moveToBookmark(prev);self.select()}}else{K(body).html(_removeBookmarkTag(prev.html))}return self}function KEditor(options){var self=this;self.options={};function setOption(key,val){if(KEditor.prototype[key]===undefined){self[key]=val}self.options[key]=val}_each(options,function(key,val){setOption(key,options[key])});_each(K.options,function(key,val){if(self[key]===undefined){setOption(key,val)}});var se=K(self.srcElement||"<textarea/>");if(!self.width){self.width=se[0].style.width||se.width()}if(!self.height){self.height=se[0].style.height||se.height()}setOption("width",_undef(self.width,self.minWidth));setOption("height",_undef(self.height,self.minHeight));setOption("width",_addUnit(self.width));setOption("height",_addUnit(self.height));if(_MOBILE&&(!_IOS||_V<534)){self.designMode=false}self.srcElement=se;self.initContent="";self.plugin={};self.isCreated=false;self._handlers={};self._contextmenus=[];self._undoStack=[];self._redoStack=[];self._firstAddBookmark=true;self.menu=self.contextmenu=null;self.dialogs=[]}KEditor.prototype={lang:function(mixed){return _lang(mixed,this.langType)},loadPlugin:function(name,fn){var self=this;var _pluginStatus=this._pluginStatus;if(!_pluginStatus){_pluginStatus=this._pluginStatus={}}if(_plugins[name]){if(!_isFunction(_plugins[name])){setTimeout(function(){self.loadPlugin(name,fn)},100);return self}if(!_pluginStatus[name]){_plugins[name].call(self,KindEditor);_pluginStatus[name]="inited"}if(fn){fn.call(self)}return self}_plugins[name]="loading";_loadScript(self.pluginsPath+name+"/"+name+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){if(_plugins[name]){self.loadPlugin(name,fn)}},0)});return self},handler:function(key,fn){var self=this;if(!self._handlers[key]){self._handlers[key]=[]}if(_isFunction(fn)){self._handlers[key].push(fn);return self}_each(self._handlers[key],function(){fn=this.call(self,fn)});return fn},clickToolbar:function(name,fn){var self=this,key="clickToolbar"+name;if(fn===undefined){if(self._handlers[key]){return self.handler(key)}self.loadPlugin(name,function(){self.handler(key)});return self}return self.handler(key,fn)},updateState:function(){var self=this;_each(("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,"+"subscript,superscript,bold,italic,underline,strikethrough").split(","),function(i,name){self.cmd.state(name)?self.toolbar.select(name):self.toolbar.unselect(name)});return self},addContextmenu:function(item){this._contextmenus.push(item);return this},afterCreate:function(fn){return this.handler("afterCreate",fn)},beforeRemove:function(fn){return this.handler("beforeRemove",fn)},beforeGetHtml:function(fn){return this.handler("beforeGetHtml",fn)},beforeSetHtml:function(fn){return this.handler("beforeSetHtml",fn)},afterSetHtml:function(fn){return this.handler("afterSetHtml",fn)},create:function(){var self=this,fullscreenMode=self.fullscreenMode;if(self.isCreated){return self}if(self.srcElement.data("kindeditor")){return self}self.srcElement.data("kindeditor","true");if(fullscreenMode){_docElement().style.overflow="hidden"}else{_docElement().style.overflow=""}var width=fullscreenMode?_docElement().clientWidth+"px":self.width,height=fullscreenMode?_docElement().clientHeight+"px":self.height;if(_IE&&_V<8||_QUIRKS){height=_addUnit(_removeUnit(height)+2)}var container=self.container=K(self.layout);if(fullscreenMode){K(document.body).append(container)}else{self.srcElement.before(container)}var toolbarDiv=K(".toolbar",container),editDiv=K(".edit",container),statusbar=self.statusbar=K(".statusbar",container);container.removeClass("container").addClass("ke-container ke-container-"+self.themeType).css("width",width);if(fullscreenMode){container.css({position:"absolute",left:0,top:0,"z-index":811211});if(!_GECKO){self._scrollPos=_getScrollPos()}window.scrollTo(0,0);K(document.body).css({height:"1px",overflow:"hidden"});K(document.body.parentNode).css("overflow","hidden");self._fullscreenExecuted=true}else{if(self._fullscreenExecuted){K(document.body).css({height:"",overflow:""});K(document.body.parentNode).css("overflow","")}if(self._scrollPos){window.scrollTo(self._scrollPos.x,self._scrollPos.y)}}var htmlList=[];K.each(self.items,function(i,name){if(name=="|"){htmlList.push('<span class="ke-inline-block ke-separator"></span>')}else if(name=="/"){htmlList.push('<div class="ke-hr"></div>')}else{htmlList.push('<span class="ke-outline" data-name="'+name+'" title="'+self.lang(name)+'" unselectable="on">');htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-'+name+'" unselectable="on"></span></span>')}});var toolbar=self.toolbar=_toolbar({src:toolbarDiv,html:htmlList.join(""),noDisableItems:self.noDisableItems,click:function(e,name){e.stop();if(self.menu){var menuName=self.menu.name;self.hideMenu();if(menuName===name){return}}self.clickToolbar(name)}});var editHeight=_removeUnit(height)-toolbar.div.height();var edit=self.edit=_edit({height:editHeight>0&&_removeUnit(height)>self.minHeight?editHeight:self.minHeight,src:editDiv,srcElement:self.srcElement,designMode:self.designMode,themesPath:self.themesPath,bodyClass:self.bodyClass,cssPath:self.cssPath,jsPath:self.jsPath,showHelpGrid:self.showHelpGrid,cssData:self.cssData,beforeGetHtml:function(html){html=self.beforeGetHtml(html);html=_removeBookmarkTag(_removeTempTag(html));return _formatHtml(html,self.filterMode?self.htmlTags:null,self.urlType,self.wellFormatMode,self.indentChar)},beforeSetHtml:function(html){html=_formatHtml(html,self.filterMode?self.htmlTags:null,"",false);return self.beforeSetHtml(html)},afterSetHtml:function(){self.edit=edit=this;self.afterSetHtml()},afterCreate:function(){self.edit=edit=this;self.cmd=edit.cmd;self._docMousedownFn=function(e){if(self.menu){self.hideMenu()}};K(edit.doc,document).mousedown(self._docMousedownFn);_bindContextmenuEvent.call(self);_bindNewlineEvent.call(self);_bindTabEvent.call(self);_bindFocusEvent.call(self);edit.afterChange(function(e){if(!edit.designMode){return}self.updateState();self.addBookmark();if(self.options.afterChange){self.options.afterChange.call(self)}});edit.textarea.keyup(function(e){if(!e.ctrlKey&&!e.altKey&&_INPUT_KEY_MAP[e.which]){if(self.options.afterChange){self.options.afterChange.call(self)}}});if(self.readonlyMode){self.readonly()}self.isCreated=true;if(self.initContent===""){self.initContent=self.html()}if(self._undoStack.length>0){var prev=self._undoStack.pop();if(prev.start){self.html(prev.html);edit.cmd.range.moveToBookmark(prev);self.select()}}self.afterCreate();if(self.options.afterCreate){self.options.afterCreate.call(self)}}});statusbar.removeClass("statusbar").addClass("ke-statusbar").append('<span class="ke-inline-block ke-statusbar-center-icon"></span>').append('<span class="ke-inline-block ke-statusbar-right-icon"></span>');if(self._fullscreenResizeHandler){K(window).unbind("resize",self._fullscreenResizeHandler);self._fullscreenResizeHandler=null}function initResize(){if(statusbar.height()===0){setTimeout(initResize,100);return}self.resize(width,height,false)}initResize();if(fullscreenMode){self._fullscreenResizeHandler=function(e){if(self.isCreated){self.resize(_docElement().clientWidth,_docElement().clientHeight,false)}};K(window).bind("resize",self._fullscreenResizeHandler);toolbar.select("fullscreen");statusbar.first().css("visibility","hidden");statusbar.last().css("visibility","hidden")}else{if(_GECKO){K(window).bind("scroll",function(e){self._scrollPos=_getScrollPos()})}if(self.resizeType>0){_drag({moveEl:container,clickEl:statusbar,moveFn:function(x,y,width,height,diffX,diffY){height+=diffY;self.resize(null,height)}})}else{statusbar.first().css("visibility","hidden")}if(self.resizeType===2){_drag({moveEl:container,clickEl:statusbar.last(),moveFn:function(x,y,width,height,diffX,diffY){width+=diffX;height+=diffY;self.resize(width,height)}})}else{statusbar.last().css("visibility","hidden")}}return self},remove:function(){var self=this;if(!self.isCreated){return self}self.beforeRemove();self.srcElement.data("kindeditor","");if(self.menu){self.hideMenu()}_each(self.dialogs,function(){self.hideDialog()});K(document).unbind("mousedown",self._docMousedownFn);self.toolbar.remove();self.edit.remove();self.statusbar.last().unbind();self.statusbar.unbind();self.container.remove();self.container=self.toolbar=self.edit=self.menu=null;self.dialogs=[];self.isCreated=false;return self},resize:function(width,height,updateProp){var self=this;updateProp=_undef(updateProp,true);if(width){if(!/%/.test(width)){width=_removeUnit(width);width=width<self.minWidth?self.minWidth:width}self.container.css("width",_addUnit(width));if(updateProp){self.width=_addUnit(width)}}if(height){height=_removeUnit(height);var editHeight=_removeUnit(height)-self.toolbar.div.height()-self.statusbar.height();editHeight=editHeight<self.minHeight?self.minHeight:editHeight;self.edit.setHeight(editHeight);if(updateProp){self.height=_addUnit(height)}}return self},select:function(){this.isCreated&&this.cmd.select();return this},html:function(val){var self=this;if(val===undefined){return self.isCreated?self.edit.html():_elementVal(self.srcElement)}self.isCreated?self.edit.html(val):_elementVal(self.srcElement,val);if(self.isCreated){self.cmd.selection()}return self},fullHtml:function(){return this.isCreated?this.edit.html(undefined,true):""},text:function(val){var self=this;if(val===undefined){return _trim(self.html().replace(/<(?!img|embed).*?>/gi,"").replace(/ /gi," "))}else{return self.html(_escape(val))}},isEmpty:function(){return _trim(this.text().replace(/\r\n|\n|\r/,""))===""},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var val=this.isCreated?this.cmd.range.html():"";val=_removeBookmarkTag(_removeTempTag(val));return val},count:function(mode){var self=this;mode=(mode||"html").toLowerCase();if(mode==="html"){return self.html().length}if(mode==="text"){return self.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length}return 0},exec:function(key){key=key.toLowerCase();var self=this,cmd=self.cmd,changeFlag=_inArray(key,"selectall,copy,paste,print".split(","))<0;if(changeFlag){self.addBookmark(false)}cmd[key].apply(cmd,_toArray(arguments,1));if(changeFlag){self.updateState();self.addBookmark(false);if(self.options.afterChange){self.options.afterChange.call(self)}}return self},insertHtml:function(val,quickMode){if(!this.isCreated){return this}val=this.beforeSetHtml(val);this.exec("inserthtml",val,quickMode);return this},appendHtml:function(val){this.html(this.html()+val);if(this.isCreated){var cmd=this.cmd;cmd.range.selectNodeContents(cmd.doc.body).collapse(false);cmd.select()}return this},sync:function(){_elementVal(this.srcElement,this.html());return this},focus:function(){this.isCreated?this.edit.focus():this.srcElement[0].focus();return this},blur:function(){this.isCreated?this.edit.blur():this.srcElement[0].blur();return this},addBookmark:function(checkSize){checkSize=_undef(checkSize,true);var self=this,edit=self.edit,body=edit.doc.body,html=_removeTempTag(body.innerHTML),bookmark;if(checkSize&&self._undoStack.length>0){var prev=self._undoStack[self._undoStack.length-1];if(Math.abs(html.length-_removeBookmarkTag(prev.html).length)<self.minChangeSize){return self}}if(edit.designMode&&!self._firstAddBookmark){var range=self.cmd.range;bookmark=range.createBookmark(true);bookmark.html=_removeTempTag(body.innerHTML);range.moveToBookmark(bookmark)}else{bookmark={html:html}}self._firstAddBookmark=false;_addBookmarkToStack(self._undoStack,bookmark);return self},undo:function(){return _undoToRedo.call(this,this._undoStack,this._redoStack)},redo:function(){return _undoToRedo.call(this,this._redoStack,this._undoStack)},fullscreen:function(bool){this.fullscreenMode=bool===undefined?!this.fullscreenMode:bool;this.addBookmark(false);return this.remove().create()},readonly:function(isReadonly){isReadonly=_undef(isReadonly,true);var self=this,edit=self.edit,doc=edit.doc;if(self.designMode){self.toolbar.disableAll(isReadonly,[])}else{_each(self.noDisableItems,function(){self.toolbar[isReadonly?"disable":"enable"](this)})}if(_IE){doc.body.contentEditable=!isReadonly}else{doc.designMode=isReadonly?"off":"on"}edit.textarea[0].disabled=isReadonly},createMenu:function(options){var self=this,name=options.name,knode=self.toolbar.get(name),pos=knode.pos();options.x=pos.x;options.y=pos.y+knode.height();options.z=self.options.zIndex;options.shadowMode=_undef(options.shadowMode,self.shadowMode);if(options.selectedColor!==undefined){options.cls="ke-colorpicker-"+self.themeType;options.noColor=self.lang("noColor");self.menu=_colorpicker(options)}else{options.cls="ke-menu-"+self.themeType;options.centerLineMode=false;self.menu=_menu(options)}return self.menu},hideMenu:function(){this.menu.remove();this.menu=null;return this},hideContextmenu:function(){this.contextmenu.remove();this.contextmenu=null;return this},createDialog:function(options){var self=this;options.z=self.options.zIndex;options.shadowMode=_undef(options.shadowMode,self.shadowMode);options.closeBtn=_undef(options.closeBtn,{name:self.lang("close"),click:function(e){self.hideDialog();if(_IE&&self.cmd){self.cmd.select()}}});options.noBtn=_undef(options.noBtn,{name:self.lang(options.yesBtn?"no":"close"),click:function(e){self.hideDialog();if(_IE&&self.cmd){self.cmd.select()}}});if(self.dialogAlignType!="page"){options.alignEl=self.container}options.cls="ke-dialog-"+self.themeType;if(self.dialogs.length>0){var firstDialog=self.dialogs[0],parentDialog=self.dialogs[self.dialogs.length-1];firstDialog.setMaskIndex(parentDialog.z+2);options.z=parentDialog.z+3;options.showMask=false}var dialog=_dialog(options);self.dialogs.push(dialog);return dialog},hideDialog:function(){var self=this;if(self.dialogs.length>0){self.dialogs.pop().remove()}if(self.dialogs.length>0){var firstDialog=self.dialogs[0],parentDialog=self.dialogs[self.dialogs.length-1];firstDialog.setMaskIndex(parentDialog.z-1)}return self},errorDialog:function(html){var self=this;var dialog=self.createDialog({width:750,title:self.lang("uploadError"),body:'<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>'});var iframe=K("iframe",dialog.div),doc=K.iframeDoc(iframe);doc.open();doc.write(html);doc.close();K(doc.body).css("background-color","#FFF");iframe[0].contentWindow.focus();return self}};function _editor(options){return new KEditor(options)}var _instances=[];function _create(expr,options){options=options||{};options.basePath=_undef(options.basePath,K.basePath);options.themesPath=_undef(options.themesPath,options.basePath+"themes/");options.langPath=_undef(options.langPath,options.basePath+"lang/");options.pluginsPath=_undef(options.pluginsPath,options.basePath+"plugins/");if(typeof options.errorMsgHandler=="function"){K.options.errorMsgHandler=options.errorMsgHandler}if(_undef(options.loadStyleMode,K.options.loadStyleMode)){var themeType=_undef(options.themeType,K.options.themeType);_loadStyle(options.themesPath+themeType+"/editor.min.css")}function create(editor){_each(_plugins,function(name,fn){if(_isFunction(fn)){fn.call(editor,KindEditor);if(!editor._pluginStatus){editor._pluginStatus={}}editor._pluginStatus[name]="inited"}});return editor.create()}var knode=K(expr);if(!knode||knode.length===0){return}if(knode.length>1){knode.each(function(){_create(this,options)});return _instances[0]}options.srcElement=knode[0];var editor=new KEditor(options);_instances.push(editor);if(_language[editor.langType]){return create(editor)}_loadScript(editor.langPath+editor.langType+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){create(editor)});return editor}function _eachEditor(expr,fn){K(expr).each(function(i,el){K.each(_instances,function(j,editor){if(editor&&editor.srcElement[0]==el){fn.call(editor,j);return false}})})}K.remove=function(expr){_eachEditor(expr,function(i){this.remove();_instances.splice(i,1)})};K.sync=function(expr){_eachEditor(expr,function(){this.sync()})};K.html=function(expr,val){_eachEditor(expr,function(){this.html(val)})};K.insertHtml=function(expr,val){_eachEditor(expr,function(){this.insertHtml(val)})};K.appendHtml=function(expr,val){_eachEditor(expr,function(){this.appendHtml(val)})};if(_IE&&_V<7){_nativeCommand(document,"BackgroundImageCache",true)}K.EditorClass=KEditor;K.editor=_editor;K.create=_create;K.instances=_instances;K.plugin=_plugin;K.lang=_lang;_plugin("core",function(K){var self=this,shortcutKeys={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};self.afterSetHtml(function(){if(self.options.afterChange){self.options.afterChange.call(self)}});self.afterCreate(function(){if(self.syncType!="form"){return}var el=K(self.srcElement),hasForm=false;while(el=el.parent()){if(el.name=="form"){hasForm=true;break}}if(hasForm){el.bind("submit",function(e){self.sync();K(window).bind("unload",function(){self.edit.textarea.remove()})});var resetBtn=K('[type="reset"]',el);resetBtn.click(function(){self.html(self.initContent);self.cmd.selection()});self.beforeRemove(function(){el.unbind();resetBtn.unbind()})}});self.clickToolbar("source",function(){if(self.edit.designMode){self.toolbar.disableAll(true);self.edit.design(false);self.toolbar.select("source")}else{self.toolbar.disableAll(false);self.edit.design(true);self.toolbar.unselect("source");if(_GECKO){setTimeout(function(){self.cmd.selection()},0)}else{self.cmd.selection()}}self.designMode=self.edit.designMode});self.afterCreate(function(){if(!self.designMode){self.toolbar.disableAll(true).select("source")}});self.clickToolbar("fullscreen",function(){self.fullscreen()});if(self.fullscreenShortcut){var loaded=false;self.afterCreate(function(){K(self.edit.doc,self.edit.textarea).keyup(function(e){if(e.which==27){setTimeout(function(){self.fullscreen()},0)}});if(loaded){if(_IE&&!self.designMode){return}self.focus()}if(!loaded){loaded=true}})}_each("undo,redo".split(","),function(i,name){if(shortcutKeys[name]){self.afterCreate(function(){_ctrl(this.edit.doc,shortcutKeys[name],function(){self.clickToolbar(name)})})}self.clickToolbar(name,function(){self[name]()})});self.clickToolbar("formatblock",function(){var blocks=self.lang("formatblock.formatBlock"),heights={h1:28,h2:24,h3:18,H4:14,p:12},curVal=self.cmd.val("formatblock"),menu=self.createMenu({name:"formatblock",width:self.langType=="en"?200:150});_each(blocks,function(key,val){var style="font-size:"+heights[key]+"px;";if(key.charAt(0)==="h"){style+="font-weight:bold;"}menu.addItem({title:'<span style="'+style+'" unselectable="on">'+val+"</span>",height:heights[key]+12,checked:curVal===key||curVal===val,click:function(){self.select().exec("formatblock","<"+key+">").hideMenu()}})})});self.clickToolbar("fontname",function(){var curVal=self.cmd.val("fontname"),menu=self.createMenu({name:"fontname",width:150});console;_each(self.lang("fontname.fontName"),function(key,val){menu.addItem({title:'<span style="font-family: '+key+';" unselectable="on">'+val+"</span>",checked:curVal===key.toLowerCase()||curVal===val.toLowerCase(),click:function(){self.exec("fontname",key).hideMenu()}})})});self.clickToolbar("fontsize",function(){var curVal=self.cmd.val("fontsize"),menu=self.createMenu({name:"fontsize",width:150});_each(self.fontSizeTable,function(i,val){menu.addItem({title:'<span style="font-size:'+val+';" unselectable="on">'+val+"</span>",height:_removeUnit(val)+12,checked:curVal===val,click:function(){self.exec("fontsize",val).hideMenu()}})})});_each("forecolor,hilitecolor".split(","),function(i,name){self.clickToolbar(name,function(){self.createMenu({name:name,selectedColor:self.cmd.val(name)||"default",colors:self.colorTable,click:function(color){self.exec(name,color).hideMenu()}})})});_each("cut,copy,paste".split(","),function(i,name){self.clickToolbar(name,function(){self.focus();try{self.exec(name,null)}catch(e){K.options.errorMsgHandler(self.lang(name+"Error"),"error")}})});self.clickToolbar("about",function(){var html='<div style="margin:20px;">'+"<div>NKeditor "+_VERSION+"</div>"+'<div>Forked from KindEditor By BlackFox. <a href="http://git.oschina.net/blackfox/kindeditor">Git项目地址</a>.</div>'+"</div>";self.createDialog({name:"about",width:350,title:self.lang("about"),body:html})});self.plugin.getSelectedLink=function(){return self.cmd.commonAncestor("a")};self.plugin.getSelectedImage=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return!/^ke-\w+$/i.test(img[0].className)})};self.plugin.getSelectedFlash=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-flash"})};self.plugin.getSelectedMedia=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-media"||img[0].className=="ke-rm"})};self.plugin.getSelectedAnchor=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-anchor"})};_each("link,image,flash,media,anchor".split(","),function(i,name){var uName=name.charAt(0).toUpperCase()+name.substr(1);_each("edit,delete".split(","),function(j,val){self.addContextmenu({title:self.lang(val+uName),click:function(){self.loadPlugin(name,function(){self.plugin[name][val]();self.hideMenu()})},cond:self.plugin["getSelected"+uName],width:150,iconClass:val=="edit"?"ke-icon-"+name:undefined})});self.addContextmenu({title:"-"})});self.plugin.getSelectedTable=function(){return self.cmd.commonAncestor("table")};self.plugin.getSelectedRow=function(){return self.cmd.commonAncestor("tr")};self.plugin.getSelectedCell=function(){return self.cmd.commonAncestor("td")};_each(("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,"+"rowsplit,colsplit,coldelete,rowdelete,insert,delete").split(","),function(i,val){var cond=_inArray(val,["prop","delete"])<0?self.plugin.getSelectedCell:self.plugin.getSelectedTable;self.addContextmenu({title:self.lang("table"+val),click:function(){self.loadPlugin("table",function(){self.plugin.table[val]();self.hideMenu()})},cond:cond,width:170,iconClass:"ke-icon-table"+val})});self.addContextmenu({title:"-"});_each(("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,"+"insertunorderedlist,indent,outdent,subscript,superscript,hr,print,"+"bold,italic,underline,strikethrough,removeformat,unlink").split(","),function(i,name){if(shortcutKeys[name]){self.afterCreate(function(){_ctrl(this.edit.doc,shortcutKeys[name],function(){self.cmd.selection();self.clickToolbar(name)})})}self.clickToolbar(name,function(){self.focus().exec(name,null)})});self.afterCreate(function(){var doc=self.edit.doc,cmd,bookmark,div,cls="__kindeditor_paste__",pasting=false;function movePastedData(){cmd.range.moveToBookmark(bookmark);cmd.select();if(_WEBKIT){K("div."+cls,div).each(function(){K(this).after("<br />").remove(true)});K("span.Apple-style-span",div).remove(true);K("span.Apple-tab-span",div).remove(true);K("span[style]",div).each(function(){if(K(this).css("white-space")=="nowrap"){K(this).remove(true)}});K("meta",div).remove()}var html=div[0].innerHTML;div.remove();if(html===""){return}if(_WEBKIT){html=html.replace(/(<br>)\1/gi,"$1")}if(self.pasteType===2){html=html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"");if(/schemas-microsoft-com|worddocument|mso-\w+/i.test(html)){html=_clearMsWord(html,self.filterMode?self.htmlTags:K.options.htmlTags)}else{html=_formatHtml(html,self.filterMode?self.htmlTags:null);html=self.beforeSetHtml(html)}}if(self.pasteType===1){html=html.replace(/ /gi," ");html=html.replace(/\n\s*\n/g,"\n");html=html.replace(/<br[^>]*>/gi,"\n");html=html.replace(/<\/p><p[^>]*>/gi,"\n");html=html.replace(/<[^>]+>/g,"");html=html.replace(/ {2}/g," ");if(self.newlineTag=="p"){if(/\n/.test(html)){html=html.replace(/^/,"<p>").replace(/$/,"<br /></p>").replace(/\n/g,"<br /></p><p>")}}else{html=html.replace(/\n/g,"<br />$&")}}self.insertHtml(html,true)}K(doc.body).bind("paste",function(e){if(self.pasteType===0){e.stop();return}if(pasting){return}pasting=true;K("div."+cls,doc).remove();cmd=self.cmd.selection();bookmark=cmd.range.createBookmark();div=K('<div class="'+cls+'"></div>',doc).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:K(bookmark.start).pos().y+"px","white-space":"nowrap"});K(doc.body).append(div);if(_IE){var rng=cmd.range.get(true);rng.moveToElementText(div[0]);rng.select();rng.execCommand("paste");e.preventDefault()}else{cmd.range.selectNodeContents(div[0]);cmd.select();div[0].tabIndex=-1;div[0].focus()}setTimeout(function(){movePastedData();pasting=false},0)})});self.beforeGetHtml(function(html){if(_IE&&_V<=8){html=html.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,tag){return unescape(tag)});html=html.replace(/(<input)((?:\s+[^>]*)?>)/gi,function($0,$1,$2){if(!/\s+type="[^"]+"/i.test($0)){return $1+' type="text"'+$2}return $0})}return html.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function($0,$1,$2,$3){return $1+_unescape($2).replace(/\s+/g," ")+$3}).replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/gi,function(full){var imgAttrs=_getAttrList(full);var styles=_getCssList(imgAttrs.style||"");var attrs=_mediaAttrs(imgAttrs["data-ke-tag"]);var width=_undef(styles.width,"");var height=_undef(styles.height,"");if(/px/i.test(width)){width=_removeUnit(width)}if(/px/i.test(height)){height=_removeUnit(height)}attrs.width=_undef(imgAttrs.width,width);attrs.height=_undef(imgAttrs.height,height);return _mediaEmbed(attrs)}).replace(/<img[^>]*class="?ke-anchor"?[^>]*>/gi,function(full){var imgAttrs=_getAttrList(full);return'<a name="'+unescape(imgAttrs["data-ke-name"])+'"></a>'}).replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,attr,code){return"<script"+unescape(attr)+">"+unescape(code)+"<\/script>"}).replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,attr,code){return"<noscript"+unescape(attr)+">"+unescape(code)+"</noscript>"}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(full,start,src,end){full=full.replace(/(\s+(?:href|src)=")[^"]*(")/i,function($0,$1,$2){return $1+_unescape(src)+$2});full=full.replace(/\s+data-ke-src="[^"]*"/i,"");return full}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(full,start,end){return start+end})});self.beforeSetHtml(function(html){if(_IE&&_V<=8){html=html.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(full){var attrs=_getAttrList(full);var styles=_getCssList(attrs.style||"");if(styles.display=="none"){return'<div class="ke-display-none" data-ke-input-tag="'+escape(full)+'"></div>'}return full})}return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(full){var attrs=_getAttrList(full);attrs.src=_undef(attrs.src,"");attrs.width=_undef(attrs.width,0);attrs.height=_undef(attrs.height,0);return _mediaImg(self.themesPath+"common/blank.gif",attrs)}).replace(/<video[^>]*type="([^"]+)"[^>]*>(?:<\/video>)?/gi,function(full){var attrs=_getAttrList(full);attrs.src=_undef(attrs.src,"");attrs.width=_undef(attrs.width,0);attrs.height=_undef(attrs.height,0);return _mediaImg(self.themesPath+"common/blank.gif",attrs)}).replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(full){var attrs=_getAttrList(full);if(attrs.href!==undefined){return full}return'<img class="ke-anchor" src="'+self.themesPath+'common/anchor.gif" data-ke-name="'+escape(attrs.name)+'" />'}).replace(/<script([^>]*)>([\s\S]*?)<\/script>/gi,function(full,attr,code){return'<div class="ke-script" data-ke-script-attr="'+escape(attr)+'">'+escape(code)+"</div>"}).replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/gi,function(full,attr,code){return'<div class="ke-noscript" data-ke-noscript-attr="'+escape(attr)+'">'+escape(code)+"</div>"}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(full,start,key,src,end){if(full.match(/\sdata-ke-src="[^"]*"/i)){return full}full=start+key+'="'+src+'"'+' data-ke-src="'+_escape(src)+'"'+end;return full}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(full,start,end){return start+"data-ke-"+end}).replace(/<table[^>]*\s+border="0"[^>]*>/gi,function(full){if(full.indexOf("ke-zeroborder")>=0){return full}return _addClassToTag(full,"ke-zeroborder")})})})})(window);KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",graft:"涂鸦",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",quote:"插入引用",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.title":"多图上传","multiimage.uploadDesc":"共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.","multiimage.startUpload":"开始上传","multiimage.noListUrl":"无法获取图片,请先配置 fileManagerJson.","multiimage.noSearchUrl":"无法进行图片搜索,请先配置 imageSearchJson.","multiimage.noDataText":"(⊙o⊙)亲,没有多数据了。","multiimage.closeText":"关闭对话框","multiimage.confirmBtnText":"确定","multiimage.cancelBtnText":"取消","multiimage.loadMoreData":"往下拉动滚动条可以加载更多数据.","multiimage.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","multiimage.localUpload":"本地上传","multiimage.fileServer":"文件服务器","multiimage.imgSearch":"图片搜索","multiimage.selectFile":"点击选择图片","multiimage.continueAdd":"继续添加","multiimage.searchBtn":"搜索一下","multiimage.searchPlaceholder":"请输入搜索关键词","multiimage.searchClear":"清空搜索","multiimage.noFileAdded":"请至少添加一个文件!","multiimage.uploading":"正在上传","multiimage.fileNotUpload":"您还有文件没有上传!","multiimage.uploadLimit":"您本次最多上传 <%=uploadLimit%> 个文件.","multiimage.sizeLimit":"文件大小不能超过 <%=sizeLimit%> KB.","multiimage.invalidExt":"非法的文件后缀 <%=invalidExt%>.","multiimage.remove":"删除","multiimage.rotateRight":"向右旋转","multiimage.rotateLeft":"向左旋转","multiimage.uploadFail":"发生异常,上传失败!","multiimage.noFileSelected":"请至少选择一个文件或一张图片.","filemanager.noDataText":"(⊙o⊙)亲,没有多数据了。","filemanager.title":"文件服务器","filemanager.noListUrl":"无法获取图片,请先配置 fileManagerJson.","filemanager.closeText":"关闭对话框","filemanager.confirmBtnText":"确定","filemanager.cancelBtnText":"取消","filemanager.loadMoreData":"往下拉动滚动条可以加载更多数据.","filemanager.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","filemanager.fileType":"类型","graft.btnText":"保存并插入涂鸦","graft.uploadSuccess":"涂鸦上传成功","graft.uploadFaild":"涂鸦上传失败","graft.empty":"您没有在画布上绘制任何图像","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"宽度","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong:"仿宋",KaiTi:"楷体",SimHei:"黑体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh-CN");KindEditor.options.langType="zh-CN";KindEditor.plugin("anchor",function(K){var self=this,name="anchor",lang=self.lang(name+".");self.plugin.anchor={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keName">'+lang.name+":</label>",'<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />',"</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:300,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){self.insertHtml('<a name="'+nameBox.val()+'">').hideDialog().focus()}}});var div=dialog.div,nameBox=K('input[name="name"]',div);var img=self.plugin.getSelectedAnchor();if(img){nameBox.val(unescape(img.attr("data-ke-name")))}nameBox[0].focus();nameBox[0].select()},delete:function(){self.plugin.getSelectedAnchor().remove()}};self.clickToolbar(name,self.plugin.anchor.edit)});KindEditor.plugin("autoheight",function(K){var self=this;if(!self.autoHeightMode){return}var minHeight;function hideScroll(){var edit=self.edit;var body=edit.doc.body;edit.iframe[0].scroll="no";body.style.overflowY="hidden"}function resetHeight(){if(self.fullscreenMode){return}var edit=self.edit;var body=edit.doc.body;edit.iframe.height(minHeight);self.resize(null,Math.max((K.IE?body.scrollHeight:body.offsetHeight)+76,minHeight))}function init(){minHeight=K.removeUnit(self.height);self.edit.afterChange(resetHeight);if(!self.fullscreenMode){hideScroll()}resetHeight()}if(self.isCreated){init()}else{self.afterCreate(init)}});KindEditor.plugin("baidumap",function(K){var self=this,name="baidumap",lang=self.lang(name+".");var mapWidth=K.undef(self.mapWidth,558);var mapHeight=K.undef(self.mapHeight,360);self.clickToolbar(name,function(){var html=['<div class="ke-dialog-content-inner" style="padding-top: 0">','<div class="ke-dialog-row ke-clearfix">','<div class="ke-header">'+lang.address,'<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',"<span>",'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+lang.search+'" style="line-height:22px;padding:0 10px;" />',"</span>",'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">'+lang.insertDynamicMap+"</label>","</div>","</div>",'<div class="ke-map" style="width:'+mapWidth+"px;height:"+mapHeight+'px;"></div>',"</div>"].join("");var dialog=self.createDialog({name:name,width:mapWidth+42,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var map=win.map;var centerObj=map.getCenter();var center=centerObj.lng+","+centerObj.lat;var zoom=map.getZoom();var url=[checkbox[0].checked?self.pluginsPath+"baidumap/index.html":"https://api.map.baidu.com/staticimage","?center="+encodeURIComponent(center),"&zoom="+encodeURIComponent(zoom),"&width="+mapWidth,"&height="+mapHeight,"&markers="+encodeURIComponent(center),"&markerStyles="+encodeURIComponent("l,A")].join("");if(checkbox[0].checked){self.insertHtml('<iframe src="'+url+'" frameborder="0" style="width:'+(mapWidth+2)+"px;height:"+(mapHeight+2)+'px;"></iframe>')}else{self.exec("insertimage",url)}self.hideDialog().focus()}},beforeRemove:function(){searchBtn.remove();if(doc){doc.write("")}iframe.remove()}});var div=dialog.div,addressBox=K('[name="address"]',div),searchBtn=K('[name="searchBtn"]',div),checkbox=K('[name="insertDynamicMap"]',dialog.div),win,doc;var iframe=K('<iframe class="ke-textarea" frameborder="0" src="'+self.pluginsPath+'baidumap/map.html" style="width:'+mapWidth+"px;height:"+mapHeight+'px;"></iframe>');function ready(){win=iframe[0].contentWindow;doc=K.iframeDoc(iframe)}iframe.bind("load",function(){iframe.unbind("load");if(K.IE){ready()}else{setTimeout(ready,0)}});K(".ke-map",div).replaceWith(iframe);searchBtn.click(function(){win.search(addressBox.val())})})});KindEditor.plugin("map",function(K){var self=this,name="map",lang=self.lang(name+".");self.clickToolbar(name,function(){var html=['<div style="padding:10px 20px;">','<div class="ke-dialog-row">',lang.address+' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+lang.search+'" />',"</span>","</div>",'<div class="ke-map" style="width:558px;height:360px;"></div>',"</div>"].join("");var dialog=self.createDialog({name:name,width:600,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var geocoder=win.geocoder,map=win.map,center=map.getCenter().lat()+","+map.getCenter().lng(),zoom=map.getZoom(),maptype=map.getMapTypeId(),url="https://maps.googleapis.com/maps/api/staticmap";url+="?center="+encodeURIComponent(center);url+="&zoom="+encodeURIComponent(zoom);url+="&size=558x360";url+="&maptype="+encodeURIComponent(maptype);url+="&markers="+encodeURIComponent(center);url+="&language="+self.langType;url+="&sensor=false";self.exec("insertimage",url).hideDialog().focus()}},beforeRemove:function(){searchBtn.remove();if(doc){doc.write("")}iframe.remove()}});var div=dialog.div,addressBox=K('[name="address"]',div),searchBtn=K('[name="searchBtn"]',div),win,doc;var iframeHtml=["<!doctype html><html><head>",'<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',"<style>","\thtml { height: 100% }","\tbody { height: 100%; margin: 0; padding: 0; background-color: #FFF }","\t#map_canvas { height: 100% }","</style>",'<script src="https://maps.googleapis.com/maps/api/js?sensor=false&language='+self.langType+'"><\/script>',"<script>","var map, geocoder;","function initialize() {","\tvar latlng = new google.maps.LatLng(31.230393, 121.473704);","\tvar options = {","\t\tzoom: 11,","\t\tcenter: latlng,","\t\tdisableDefaultUI: true,","\t\tpanControl: true,","\t\tzoomControl: true,","\t\tmapTypeControl: true,","\t\tscaleControl: true,","\t\tstreetViewControl: false,","\t\toverviewMapControl: true,","\t\tmapTypeId: google.maps.MapTypeId.ROADMAP","\t};",'\tmap = new google.maps.Map(document.getElementById("map_canvas"), options);',"\tgeocoder = new google.maps.Geocoder();","\tgeocoder.geocode({latLng: latlng}, function(results, status) {","\t\tif (status == google.maps.GeocoderStatus.OK) {","\t\t\tif (results[3]) {",'\t\t\t\tparent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',"\t\t\t}","\t\t}","\t});","}","function search(address) {","\tif (!map) return;","\tgeocoder.geocode({address : address}, function(results, status) {","\t\tif (status == google.maps.GeocoderStatus.OK) {","\t\t\tmap.setZoom(11);","\t\t\tmap.setCenter(results[0].geometry.location);","\t\t\tvar marker = new google.maps.Marker({","\t\t\t\tmap: map,","\t\t\t\tposition: results[0].geometry.location","\t\t\t});","\t\t} else {",'\t\t\talert("Invalid address: " + address);',"\t\t}","\t});","}","<\/script>","</head>",'<body onload="initialize();">','<div id="map_canvas" style="width:100%; height:100%"></div>',"</body></html>"].join("\n");var iframe=K('<iframe class="ke-textarea" frameborder="0" src="'+self.pluginsPath+'map/map.html" style="width:558px;height:360px;"></iframe>');function ready(){win=iframe[0].contentWindow;doc=K.iframeDoc(iframe)}iframe.bind("load",function(){iframe.unbind("load");if(K.IE){ready()}else{setTimeout(ready,0)}});K(".ke-map",div).replaceWith(iframe);searchBtn.click(function(){win.search(addressBox.val())})})});KindEditor.plugin("clearhtml",function(K){var self=this,name="clearhtml";self.clickToolbar(name,function(){self.focus();var html=self.html();html=html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/gi,"");html=html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/gi,"");html=K.formatHtml(html,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess","controls"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]});self.html(html);self.cmd.selection(true);self.addBookmark()})});KindEditor.plugin("code",function(K){var self=this,name="code";self.clickToolbar(name,function(){var lang=self.lang(name+"."),html=['<div style="margin: 0px 20px;">','<div class="ke-dialog-row">','<select class="ke-select" style="margin-bottom: 5px;">','<option value="javascript">JavaScript</option>','<option value="html">HTML</option>','<option value="css">CSS</option>','<option value="php">PHP</option>','<option value="perl">Perl</option>','<option value="python">Python</option>','<option value="ruby">Ruby</option>','<option value="java">Java</option>','<option value="go">Go</option>','<option value="asp">ASP/VB</option>','<option value="csharp">C#</option>','<option value="cpp">C/C++</option>','<option value="cs">C#</option>','<option value="bash">Shell</option>','<option value="sql">SQL</option>','<option value="markup">Other</option>',"</select>","</div>",'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>',"</div>"].join(""),dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var type=K(".ke-select",dialog.div).val(),code=textarea.val(),cls=type===""?"":"language-"+type,html='<pre class="'+cls+'"><code>'+K.escape(code)+"</code></pre> <br/>";if(K.trim(code)===""){K.options.errorMsgHandler(lang.pleaseInput,"error");textarea[0].focus();return}self.insertHtml(html).hideDialog().focus()}}}),textarea=K("textarea",dialog.div);textarea[0].focus()})});KindEditor.plugin("emoticons",function(K){var self=this,name="emoticons",path=self.emoticonsPath||self.pluginsPath+"emoticons/images/",allowPreview=self.allowPreviewEmoticons===undefined?true:self.allowPreviewEmoticons,currentPageNum=1;self.clickToolbar(name,function(){var rows=5,cols=9,total=135,startNum=0,cells=rows*cols,pages=Math.ceil(total/cells),colsHalf=Math.floor(cols/2),wrapperDiv=K('<div class="ke-plugin-emoticons"></div>'),elements=[],menu=self.createMenu({name:name,beforeRemove:function(){removeEvent()}});menu.div.append(wrapperDiv);var previewDiv,previewImg;if(allowPreview){previewDiv=K('<div class="ke-preview"></div>').css("right",0);previewImg=K('<img class="ke-preview-img" src="'+path+startNum+'.gif" />');wrapperDiv.append(previewDiv);previewDiv.append(previewImg)}function bindCellEvent(cell,j,num){if(previewDiv){cell.mouseover(function(){if(j>colsHalf){previewDiv.css("left",0);previewDiv.css("right","")}else{previewDiv.css("left","");previewDiv.css("right",0)}previewImg.attr("src",path+num+".gif");K(this).addClass("ke-on")})}else{cell.mouseover(function(){K(this).addClass("ke-on")})}cell.mouseout(function(){K(this).removeClass("ke-on")});cell.click(function(e){self.insertHtml('<img src="'+path+num+'.gif" border="0" alt="" />').hideMenu().focus();e.stop()})}function createEmoticonsTable(pageNum,parentDiv){var table=document.createElement("table");parentDiv.append(table);if(previewDiv){K(table).mouseover(function(){previewDiv.show("block")});K(table).mouseout(function(){previewDiv.hide()});elements.push(K(table))}table.className="ke-table";table.cellPadding=0;table.cellSpacing=0;table.border=0;var num=(pageNum-1)*cells+startNum;for(var i=0;i<rows;i++){var row=table.insertRow(i);for(var j=0;j<cols;j++){var cell=K(row.insertCell(j));cell.addClass("ke-cell");bindCellEvent(cell,j,num);var span=K('<span class="ke-img"></span>').css("background-position","-"+24*num+"px 0px").css("background-image","url("+path+"static.gif)");cell.append(span);elements.push(cell);num++}}return table}var table=createEmoticonsTable(currentPageNum,wrapperDiv);function removeEvent(){K.each(elements,function(){this.unbind()})}var pageDiv;function bindPageEvent(el,pageNum){el.click(function(e){removeEvent();table.parentNode.removeChild(table);pageDiv.remove();table=createEmoticonsTable(pageNum,wrapperDiv);createPageTable(pageNum);currentPageNum=pageNum;e.stop()})}function createPageTable(currentPageNum){pageDiv=K('<div class="ke-page"></div>');wrapperDiv.append(pageDiv);for(var pageNum=1;pageNum<=pages;pageNum++){if(currentPageNum!==pageNum){var a=K('<a href="javascript:;">['+pageNum+"]</a>");bindPageEvent(a,pageNum);pageDiv.append(a);elements.push(a)}else{pageDiv.append(K("@["+pageNum+"]"))}pageDiv.append(K("@ "))}}createPageTable(currentPageNum)})});KindEditor.plugin("flash",function(K){var self=this,name="flash",lang=self.lang(name+"."),allowFlashUpload=K.undef(self.allowFlashUpload,true),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php");self.plugin.flash={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.width+":</label>",'<div class="row-right">','<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keHeight" class="row-left">'+lang.height+":</label>",'<div class="row-right">','<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ',"</div>","</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val();if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}var html=K.mediaImg(self.themesPath+"common/blank.gif",{src:url,type:K.mediaType(".swf"),width:width,height:height,quality:"high"});self.insertHtml(html).hideDialog().focus()}}}),div=dialog.div,urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('[name="width"]',div),heightBox=K('[name="height"]',div);urlBox.val("http://");if(allowFlashUpload){var callback=function(data){dialog.hideLoading();if(data.code==="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,extraParams:extraParams,url:K.addParam(uploadJson,"fileType=flash"),beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"flash",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K('[name="url"]').css("width","250px");viewServerBtn.hide()}var img=self.plugin.getSelectedFlash();if(img){var attrs=K.mediaAttrs(img.attr("data-ke-tag"));urlBox.val(attrs.src);widthBox.val(K.removeUnit(img.css("width"))||attrs.width||0);heightBox.val(K.removeUnit(img.css("height"))||attrs.height||0)}urlBox[0].focus();urlBox[0].select()},delete:function(){self.plugin.getSelectedFlash().remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.flash.edit)});KindEditor.plugin("image",function(K){var self=this,name="image",allowImageUpload=K.undef(self.allowImageUpload,true),allowImageRemote=K.undef(self.allowImageRemote,true),formatUploadUrl=K.undef(self.formatUploadUrl,true),allowFileManager=K.undef(self.allowFileManager,false),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),imageTabIndex=K.undef(self.imageTabIndex,0),imgPath=self.pluginsPath+"image/images/",extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),fillDescAfterUploadImage=K.undef(self.fillDescAfterUploadImage,false),lang=self.lang(name+".");self.plugin.imageDialog=function(options){var imageUrl=options.imageUrl,imageWidth=K.undef(options.imageWidth,""),imageHeight=K.undef(options.imageHeight,""),imageTitle=K.undef(options.imageTitle,""),imageAlign=K.undef(options.imageAlign,""),showRemote=K.undef(options.showRemote,true),showLocal=K.undef(options.showLocal,true),tabIndex=K.undef(options.tabIndex,0),clickFn=options.clickFn;var target="kindeditor_upload_iframe_"+(new Date).getTime();var hiddenElements=[];for(var k in extraParams){hiddenElements.push('<input type="hidden" name="'+k+'" value="'+extraParams[k]+'" />')}var html=['<div class="ke-dialog-content-inner">','<div class="tabs"></div>','<div class="tab1" style="display:none;">','<div class="ke-dialog-row ke-clearfix">','<label for="remoteUrl" class="row-left">'+lang.remoteUrl+":</label>",'<div class="row-right">','<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix ">','<label for="remoteWidth" class="row-left">'+lang.size+":</label>",'<div class="row-right">'+lang.width+' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<img class="ke-refresh-btn" src="'+imgPath+'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="'+lang.resetSize+'" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label class="row-left">'+lang.align+":</label>",'<div class="row-right">','<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> '+'<img name="defaultImg" src="'+imgPath+'align_top.gif" width="23" height="25" alt="" /></span>',' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> '+'<img name="leftImg" src="'+imgPath+'align_left.gif" width="23" height="25" alt="" /></span>',' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> '+'<img name="rightImg" src="'+imgPath+'align_right.gif" width="23" height="25" alt="" /></span>',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="remoteTitle" class="row-left">'+lang.imgTitle+":</label>",'<div class="row-right">','<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />',"</div>","</div>","</div>",'<div class="tab2" style="display:none;">','<iframe name="'+target+'" style="display:none;"></iframe>','<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+target+'" action="'+K.addParam(uploadJson,"fileType=image")+'">','<div class="ke-dialog-row ke-clearfix">',hiddenElements.join(""),'<label class="row-left">'+lang.localUrl+":</label>",'<div class="row-right">','<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" />',"</div>","</div>","</form>","</div>","</div>"].join("");var dialogWidth=showLocal||allowFileManager?450:400,dialogHeight=showLocal&&showRemote?310:260;var dialog=self.createDialog({name:name,width:dialogWidth,height:dialogHeight,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){if(dialog.isLoading){return}if(showLocal&&showRemote&&tabs&&tabs.selectedIndex===1||!showRemote){if(uploadbutton.fileBox.val()==""){K.options.errorMsgHandler(self.lang("pleaseSelectFile"),"error");return}dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit();localUrlBox.val("");return}var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val(),title=titleBox.val(),align="";alignBox.each(function(){if(this.checked){align=this.value;return false}});if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}clickFn.call(self,url,title,width,height,0,align)}},beforeRemove:function(){viewServerBtn.unbind();widthBox.unbind();heightBox.unbind();refreshBtn.unbind()}}),div=dialog.div;var urlBox=K('[name="url"]',div),localUrlBox=K('[name="localUrl"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('.tab1 [name="width"]',div),heightBox=K('.tab1 [name="height"]',div),refreshBtn=K(".ke-refresh-btn",div),titleBox=K('.tab1 [name="title"]',div),alignBox=K('.tab1 [name="align"]',div);var tabs;if(showRemote&&showLocal){tabs=K.tabs({src:K(".tabs",div),afterSelect:function(i){}});tabs.add({title:lang.remoteImage,panel:K(".tab1",div)});tabs.add({title:lang.localImage,panel:K(".tab2",div)});tabs.select(tabIndex)}else if(showRemote){K(".tab1",div).show()}else if(showLocal){K(".tab2",div).show()}var callback=function(data){if(data.code=="000"){dialog.hideLoading();var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}if(!fillDescAfterUploadImage){clickFn.call(self,url,data.title,data.width,data.height,data.border,data.align)}else{K(".ke-dialog-row #remoteUrl",div).val(url);K(".ke-tabs-li",div)[0].click();K(".ke-refresh-btn",div).click()}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,form:K(".ke-form",div),target:target,width:60,beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){localUrlBox.val(uploadbutton.fileBox.val())});if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"image",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{viewServerBtn.hide()}var originalWidth=0,originalHeight=0;function setSize(width,height){widthBox.val(width);heightBox.val(height);originalWidth=width;originalHeight=height}refreshBtn.click(function(e){var tempImg=K('<img src="'+urlBox.val()+'" />',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});tempImg.bind("load",function(){setSize(tempImg.width(),tempImg.height());tempImg.remove()});K(document.body).append(tempImg)});widthBox.change(function(e){if(originalWidth>0){heightBox.val(Math.round(originalHeight/originalWidth*parseInt(this.value,10)))}});heightBox.change(function(e){if(originalHeight>0){widthBox.val(Math.round(originalWidth/originalHeight*parseInt(this.value,10)))}});urlBox.val(options.imageUrl);setSize(options.imageWidth,options.imageHeight);titleBox.val(options.imageTitle);alignBox.each(function(){if(this.value===options.imageAlign){this.checked=true;return false}});if(showRemote&&tabIndex===0){urlBox[0].focus();urlBox[0].select()}return dialog};self.plugin.image={edit:function(){var img=self.plugin.getSelectedImage();self.plugin.imageDialog({imageUrl:img?img.attr("data-ke-src"):"http://",imageWidth:img?img.width():"",imageHeight:img?img.height():"",imageTitle:img?img.attr("title"):"",imageAlign:img?img.attr("align"):"",showRemote:allowImageRemote,showLocal:allowImageUpload,tabIndex:img?0:imageTabIndex,clickFn:function(url,title,width,height,border,align){if(img){img.attr("src",url);img.attr("data-ke-src",url);img.attr("width",width);img.attr("height",height);img.attr("title",title);img.attr("align",align);img.attr("alt",title)}else{self.exec("insertimage",url,title,width,height,border,align)}setTimeout(function(){self.hideDialog().focus()},0)}})},delete:function(){var target=self.plugin.getSelectedImage();if(target.parent().name=="a"){target=target.parent()}target.remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.image.edit)});KindEditor.plugin("insertfile",function(K){var self=this,name="insertfile",allowFileUpload=K.undef(self.allowFileUpload,true),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),lang=self.lang(name+".");self.plugin.fileDialog=function(options){var fileUrl=K.undef(options.fileUrl,"http://"),fileTitle=K.undef(options.fileTitle,""),clickFn=options.clickFn;var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keTitle" class="row-left">'+lang.title+":</label>",'<div class="row-right">','<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>',"</div>","</div>","</form>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),title=titleBox.val();if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(K.trim(title)===""){title=url}clickFn.call(self,url,title)}}}),div=dialog.div;var urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),titleBox=K('[name="title"]',div);if(allowFileUpload){var callback=function(data){dialog.hideLoading();if(data.code==="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,url:K.addParam(uploadJson,"fileType=file"),extraParams:extraParams,beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K("#keUrl").css("width","250px");viewServerBtn.hide()}urlBox.val(fileUrl);titleBox.val(fileTitle);urlBox[0].focus();urlBox[0].select()};self.clickToolbar(name,function(){self.plugin.fileDialog({clickFn:function(url,title){var html='<a class="ke-insertfile" href="'+url+'" data-ke-src="'+url+'" target="_blank">'+title+"</a>";self.insertHtml(html).hideDialog().focus()}})})});KindEditor.plugin("lineheight",function(K){var self=this,name="lineheight",lang=self.lang(name+".");self.clickToolbar(name,function(){var curVal="",commonNode=self.cmd.commonNode({"*":".line-height"});if(commonNode){curVal=commonNode.css("line-height")}var menu=self.createMenu({name:name,width:150});K.each(lang.lineHeight,function(i,row){K.each(row,function(key,val){menu.addItem({title:val,checked:curVal===key,click:function(){self.cmd.toggle('<span style="line-height:'+key+';"></span>',{span:".line-height="+key});self.updateState();self.addBookmark();self.hideMenu()}})})})})});KindEditor.plugin("link",function(K){var self=this,name="link";self.plugin.link={edit:function(){var lang=self.lang(name+"."),html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix"">','<label for="keType" class="row-left">'+lang.linkType+":</label>",'<div class="row-right">','<select id="keType" class="ke-select" name="type"></select>',"</div>","</div>","</div>"].join(""),dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val());if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}self.exec("createlink",url,typeBox.val()).hideDialog().focus()}}}),div=dialog.div,urlBox=K('input[name="url"]',div),typeBox=K('select[name="type"]',div);urlBox.val("http://");typeBox[0].options[0]=new Option(lang.newWindow,"_blank");typeBox[0].options[1]=new Option(lang.selfWindow,"");self.cmd.selection();var a=self.plugin.getSelectedLink();if(a){self.cmd.range.selectNode(a[0]);self.cmd.select();urlBox.val(a.attr("data-ke-src"));typeBox.val(a.attr("target"))}urlBox[0].focus();urlBox[0].select()},delete:function(){self.exec("unlink",null)}};self.clickToolbar(name,self.plugin.link.edit)});KindEditor.plugin("media",function(K){var self=this,name="media",lang=self.lang(name+"."),allowMediaUpload=K.undef(self.allowMediaUpload,false),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php");self.plugin.media={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>",'<div style="margin-top:5px;color:#aaa;">支持优酷、爱奇艺、腾讯视频等视频网站【<span style="color:green">通用代码</span>】',"</div>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.width+":</label>",'<div class="row-right">','<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keHeight" class="row-left">'+lang.height+":</label>",'<div class="row-right">','<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAutostart" class="row-left">'+lang.autostart+":</label>",'<div class="row-right">','<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ',"</div>","</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,height:260,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val();var match=url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/);if(!match){if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!match){var html=K.mediaImg(self.themesPath+"common/blank.gif",{src:url,type:K.mediaType(url),width:width,height:height,autostart:autostartBox[0].checked?"true":"false",loop:"true"})}else{var html='<iframe src="'+match[3]+'" frameborder="0" style="width:'+width+"px;height:"+height+'px;"></iframe>'}self.insertHtml(html).hideDialog().focus()}}}),div=dialog.div,urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('[name="width"]',div),heightBox=K('[name="height"]',div),autostartBox=K('[name="autostart"]',div);urlBox.val("http://");if(allowMediaUpload){var callback=function(data){dialog.hideLoading();if(data.code=="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error","error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,extraParams:extraParams,url:K.addParam(uploadJson,"fileType=media"),beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowMediaUpload&&allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"media",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K("#keUrl").css("width","250px");viewServerBtn.hide()}var img=self.plugin.getSelectedMedia();if(img){var attrs=K.mediaAttrs(img.attr("data-ke-tag"));urlBox.val(attrs.src);widthBox.val(K.removeUnit(img.css("width"))||attrs.width||0);heightBox.val(K.removeUnit(img.css("height"))||attrs.height||0);autostartBox[0].checked=attrs.autostart==="true"}urlBox[0].focus();urlBox[0].select()},delete:function(){self.plugin.getSelectedMedia().remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.media.edit)});KindEditor.plugin("multiimage",function(K){var self=this,name="multiimage",uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),fileManagerJson=K.undef(self.fileManagerJson,self.basePath+"php/file_manager_json.php"),imageSizeLimit=K.undef(self.imageSizeLimit,2048),imageFileTypes=K.undef(self.imageFileTypes,"jpg|png|gif|jpeg"),imageUploadLimit=K.undef(self.imageUploadLimit,20),filePostName=K.undef(self.filePostName,"imgFile"),lang=self.lang(name+".");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadScript(K.options.pluginsPath+name+"/BUpload.js");K.loadStyle(K.options.pluginsPath+name+"/css/upload.css")}K.locker=function(){var docWidth=Math.max(document.documentElement.clientWidth,document.body.clientWidth);var docHeight=Math.max(document.documentElement.clientHeight,document.body.clientHeight,$(document).height())+document.documentElement.scrollTop;return K.widget({x:0,y:0,cls:"ke-dialog-lock",width:docWidth,height:docHeight})};self.plugin.multiImageDialog=function(options){var clickFn=options.clickFn;var locker=K.locker();locker.show();var dialog=new BUpload({src:filePostName,upload_url:uploadJson,list_url:fileManagerJson,max_filesize:imageSizeLimit,max_filenum:imageUploadLimit,ext_allow:imageFileTypes,lang:lang,top:self.dialogOffset,fileType:"image",errorHandler:K.options.errorMsgHandler,callback:function(data){clickFn.call(this,data)},close:function(){locker.remove()}});return dialog};self.clickToolbar(name,function(){self.plugin.multiImageDialog({clickFn:function(urlList){if(urlList.length===0){return}K.each(urlList,function(i,data){if(self.afterUpload){self.afterUpload.call(self,data,data,"multiimage")}self.exec("insertimage",data)});setTimeout(function(){self.hideDialog().focus()},0)}})})});KindEditor.plugin("graft",function(K){var self=this,name="graft",uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),allowUploadGraft=K.undef(self.allowUploadGraft,true),lang=self.lang(name+".");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css");K.loadScript(K.options.pluginsPath+"graft/scrawl.js")}self.plugin.graftDialog=function(options){var clickFn=options.clickFn;var html=['<div class="scrawl-main" id="scrawl-main">','<div class="hot">','<div class="drawBoard border_style">','<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>','<div class="picBoard" id="picBoard" style=""></div>',"</div>",'<div class="operateBar">','<button id="J_prevStep" class="prevStep" title="上一步">','<em class="icon"></em>',"</button>",'<button id="J_nextStep" class="nextStep" title="下一步">','<em class="icon"></em>',"</button>",'<button id="J_clearBoard" class="clearBoard" title="清空">','<em class="icon"></em>',"</button>","</div>","</div>",'<div class="drawToolbar border_style">','<div class="colorBar">','<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>','<span data-color="#003366" style="background:#003366;"></span>','<span data-color="#993333" style="background:#993333;"></span>','<span data-color="#FF9900" style="background:#FF9900;"></span>','<span data-color="#0000CC" style="background:#0000CC;"></span>','<span data-color="#CC3333" style="background:#CC3333;"></span>','<span data-color="#F4D03F" style="background:#641E16;"></span>','<span data-color="#4A235A" style="background:#4A235A;"></span>','<span data-color="#009966" style="background:#009966;"></span>','<span data-color="#ffff00" style="background:#ffff00;"></span>','<span data-color="#7D6608" style="background:#7D6608;"></span>','<span data-color="#FF33CC" style="background:#FF33CC;"></span>','<span data-color="#990066" style="background:#990066;"></span>','<span data-color="#ffffff" style="background:#ffffff;"></span>','<span data-color="#9bbb59" style="background:#9bbb59;"></span>','<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>','<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>','<span data-color="#CC99CC" style="background:#CC99CC;"></span>',"</div>",'<div class="sectionBar">','<em class="brushIcon"></em>','<a href="javascript:void(0)" class="brush-size size1">1</a>','<a href="javascript:void(0)" class="brush-size size2">3</a>','<a href="javascript:void(0)" class="brush-size size3">5</a>','<a href="javascript:void(0)" class="brush-size size4">7</a>',"</div>",'<div class="sectionBar">','<em class="eraserIcon"></em>','<a href="javascript:void(0)" class="eraser-size size1">5</a>','<a href="javascript:void(0)" class="eraser-size size2">10</a>','<a href="javascript:void(0)" class="eraser-size size3">15</a>','<a href="javascript:void(0)" class="eraser-size size4">20</a>',"</div>",'<div class="sectionBar">','<em class="blurIcon"></em>','<a href="javascript:void(0)" class="blur-size size1">2</a>','<a href="javascript:void(0)" class="blur-size size2">4</a>','<a href="javascript:void(0)" class="blur-size size3">6</a>','<a href="javascript:void(0)" class="blur-size size4">8</a>',"</div>",'<div class="sectionBar">','<span id="clearSetting" class="clearSetting">','<em class="icon"></em>','<em class="text">初始化设置</em>',"</span>","</div>",'<div class="sectionBar">','<div id="J_addImg" class="addImgH">','<em class="icon"></em>','<em class="text">添加背景</em>','<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>',"</div>","</div>",'<div class="sectionBar">','<span id="J_removeImg" class="removeImg">','<em class="icon"></em>','<em class="text">删除背景</em>',"</span>","</div>","</div>"].join("");var dataURLtoFile=function(dataurl,filename){var arr=dataurl.split(","),mime=arr[0].match(/:(.*?);/)[1],bstr=atob(arr[1]),n=bstr.length,u8arr=new Uint8Array(n);while(n--){u8arr[n]=bstr.charCodeAt(n)}return new File([u8arr],filename,{type:mime})};var dialog=self.createDialog({name:name,width:750,height:440,title:self.lang(name),body:html,yesBtn:{name:lang.btnText,click:function(e){if(dialog.isLoading){return}if(canvas.isEmpty()){K.options.errorMsgHandler(lang.empty,"error");return}canvas.save(function(data){if(allowUploadGraft){var callback=function(res){dialog.hideLoading();if(res.code=="000"){clickFn.call(self,res.data.url);self.hideDialog().focus()}else{K.options.errorMsgHandler(lang.uploadFaild,"error")}};dialog.showLoading(self.lang("uploadLoading"));if(typeof self.beforeUpload=="function"){var file=dataURLtoFile(data,"graft.png");self.beforeUpload.call(this,callback,file)}else{$.post(uploadJson,{img_base64_data:data,fileType:"image",base64:1},function(res){callback(res)},"json")}}else{clickFn.call(self,data);self.hideDialog().focus()}})}}});var canvas=new Canvas({canvasId:"canvas-borad",width:600,height:320})};self.clickToolbar(name,function(){self.plugin.graftDialog({clickFn:function(url){self.exec("insertimage",url)}})})});KindEditor.plugin("filemanager",function(K){var self=this;var fileManagerJson=K.undef(self.fileManagerJson,self.basePath+"php/file_manager_json.php");var lang=self.lang("filemanager.");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadScript(K.options.pluginsPath+"filemanager/FManager.js");K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css")}self.plugin.filemanagerDialog=function(options){var clickFn=options.clickFn;new FManager({list_url:fileManagerJson,lang:lang,fileType:options.dirName,top:self.dialogOffset,multiple:options.multiple?true:false,callback:function(data){clickFn.call(this,options.multiple?data:data[0])}})}});KindEditor.plugin("pagebreak",function(K){var self=this;var name="pagebreak";var pagebreakHtml=K.undef(self.pagebreakHtml,'<hr style="page-break-after: always;" class="ke-pagebreak" />');self.clickToolbar(name,function(){var cmd=self.cmd,range=cmd.range;self.focus();var tail=self.newlineTag=="br"||K.WEBKIT?"":'<span id="__kindeditor_tail_tag__"></span>';self.insertHtml(pagebreakHtml+tail);if(tail!==""){var p=K("#__kindeditor_tail_tag__",self.edit.doc);range.selectNodeContents(p[0]);p.removeAttr("id");cmd.select()}})});KindEditor.plugin("plainpaste",function(K){var self=this,name="plainpaste";self.clickToolbar(name,function(){var lang=self.lang(name+"."),html='<div style="padding:10px 20px;">'+'<div style="margin-bottom:10px;">'+lang.comment+"</div>"+'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>'+"</div>",dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var html=textarea.val();html=K.escape(html);html=html.replace(/ {2}/g," ");if(self.newlineTag=="p"){html=html.replace(/^/,"<p>").replace(/$/,"</p>").replace(/\n/g,"</p><p>")}else{html=html.replace(/\n/g,"<br />$&")}self.insertHtml(html).hideDialog().focus()}}}),textarea=K("textarea",dialog.div);textarea[0].focus()})});KindEditor.plugin("preview",function(K){var self=this,name="preview",undefined;self.clickToolbar(name,function(){var lang=self.lang(name+"."),width=document.documentElement.clientWidth*.9,height=document.documentElement.clientHeight-160,html='<div style="padding:10px 20px;">'+'<iframe class="ke-textarea" frameborder="0" style="width:'+(width-42)+"px;height:"+height+'px;"></iframe>'+"</div>",dialog=self.createDialog({name:name,width:width,title:self.lang(name),body:html}),iframe=K("iframe",dialog.div),doc=K.iframeDoc(iframe);doc.open();var cssPath=self.options.cssPath;var jsPath=self.options.jsPath;var arr=['<html lang="en">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}","img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/flash.svg);","\t*background-image:url("+self.options.themesPath+"common/flash.png);","\tbackground-size:64px 64px;","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/play.svg);","\t*background-image:url("+self.options.themesPath+"common/play.png);","\tbackground-position:center center;","\tbackground-size:64px 64px;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}"];if(self.options.showHelpGrid){arr.push("p,ul,ol,li,div{border: 1px dashed #c1c1c1;}");arr.push("li{margin:5px 0px}");arr.push("div,ul,ol{margin-bottom:10px}")}arr.push("</style>");if(!K.isArray(cssPath)){cssPath=[cssPath]}if(K.inArray(self.options.pluginsPath+"code/prism.css",cssPath)<0){cssPath.push(self.options.pluginsPath+"code/prism.css")}K.each(cssPath,function(i,path){if(path){arr.push('<link href="'+path+'" rel="stylesheet" />')}});if(self.options.cssData){arr.push("<style>"+self.options.cssData+"</style>")}arr.push("</head><body "+(self.options.bodyClass?'class="'+self.options.bodyClass+'"':"")+">");arr.push(self.fullHtml());if(!K.isArray(jsPath)){jsPath=[jsPath]}if(K.inArray(self.options.pluginsPath+"code/prism.js",jsPath)<0){jsPath.push(self.options.pluginsPath+"code/prism.js")}K.each(jsPath,function(i,path){if(path){arr.push('<script type="text/javascript" src="'+path+'"><\/script>')}});arr.push("</body></html>");doc.write(arr.join("\n"));doc.close();K(doc.body).css("background-color","#FFF");iframe[0].contentWindow.focus()})});KindEditor.plugin("quickformat",function(K){var self=this,name="quickformat",blockMap=K.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");function getFirstChild(knode){var child=knode.first();while(child&&child.first()){child=child.first()}return child}self.clickToolbar(name,function(){self.focus();var doc=self.edit.doc,range=self.cmd.range,child=K(doc.body).first(),next,nodeList=[],subList=[],bookmark=range.createBookmark(true);while(child){next=child.next();var firstChild=getFirstChild(child);if(!firstChild||firstChild.name!="img"){if(blockMap[child.name]){child.html(child.html().replace(/^(\s| | )+/gi,""));child.css("text-indent","2em")}else{subList.push(child)}if(!next||(blockMap[next.name]||blockMap[child.name]&&!blockMap[next.name])){if(subList.length>0){nodeList.push(subList)}subList=[]}}child=next}K.each(nodeList,function(i,subList){var wrapper=K('<p style="text-indent:2em;"></p>',doc);subList[0].before(wrapper);K.each(subList,function(i,knode){wrapper.append(knode)})});range.moveToBookmark(bookmark);self.addBookmark()})});KindEditor.plugin("table",function(K){var self=this,name="table",lang=self.lang(name+"."),zeroborder="ke-zeroborder";var borderColor=K.undef(self.options.tableBorderColor,"#cccccc");function _setColor(box,color){color=color.toUpperCase();box.css("background-color",color);box.css("color",color==="#000000"?"#FFFFFF":"#000000");box.html(color)}var pickerList=[];function _initColorPicker(dialogDiv,colorBox){colorBox.bind("click,mousedown",function(e){e.stopPropagation()});function removePicker(){K.each(pickerList,function(){this.remove()});pickerList=[];K(document).unbind("click,mousedown",removePicker);dialogDiv.unbind("click,mousedown",removePicker)}colorBox.click(function(e){removePicker();var box=K(this),pos=box.pos();var picker=K.colorpicker({x:pos.x,y:pos.y+box.height(),z:811214,selectedColor:K(this).html(),colors:self.colorTable,noColor:self.lang("noColor"),shadowMode:self.shadowMode,click:function(color){_setColor(box,color);removePicker()}});pickerList.push(picker);K(document).bind("click,mousedown",removePicker);dialogDiv.bind("click,mousedown",removePicker)})}function _getCellIndex(table,row,cell){var rowSpanCount=0;for(var i=0,len=row.cells.length;i<len;i++){if(row.cells[i]==cell){break}rowSpanCount+=row.cells[i].rowSpan-1}return cell.cellIndex-rowSpanCount}self.plugin.table={prop:function(isInsert){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keRows" class="row-left">'+lang.cells+":</label>",'<div class="row-right">',lang.rows+' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ',lang.cols+' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.size+":</label>",'<div class="row-right">',lang.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ','<select name="widthType" class="ke-select">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select> ",lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<select name="heightType" class="ke-select">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="kePadding" class="row-left">'+lang.space+":</label>",'<div class="row-right">',lang.padding+' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ',lang.spacing+' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAlign" class="row-left">'+lang.align+":</label>",'<div class="row-right">','<select id="keAlign" class="ke-select" name="align">','<option value="">'+lang.alignDefault+"</option>",'<option value="left">'+lang.alignLeft+"</option>",'<option value="center">'+lang.alignCenter+"</option>",'<option value="right">'+lang.alignRight+"</option>","</select>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBorder" class="row-left">'+lang.border+":</label>",'<div class="row-right">',lang.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',lang.borderColor+' <span class="ke-inline-block ke-input-color"></span>',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBgColor" class="row-left">'+lang.backgroundColor+":</label>",'<div class="row-right">','<span class="ke-inline-block ke-input-color"></span>',"</div>","</div>","</div>"].join("");var bookmark=self.cmd.range.createBookmark();var dialog=self.createDialog({name:name,width:500,title:self.lang(name),body:html,beforeRemove:function(){colorBox.unbind()},yesBtn:{name:self.lang("yes"),click:function(e){var rows=rowsBox.val(),cols=colsBox.val(),width=widthBox.val(),height=heightBox.val(),widthType=widthTypeBox.val(),heightType=heightTypeBox.val(),padding=paddingBox.val(),spacing=spacingBox.val(),align=alignBox.val(),border=borderBox.val(),borderColor=K(colorBox[0]).html()||"",bgColor=K(colorBox[1]).html()||"";if(rows==0||!/^\d+$/.test(rows)){K.options.errorMsgHandler(self.lang("invalidRows"),"error");rowsBox[0].focus();return}if(cols==0||!/^\d+$/.test(cols)){K.options.errorMsgHandler(self.lang("invalidRows"),"error");colsBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!/^\d*$/.test(padding)){K.options.errorMsgHandler(self.lang("invalidPadding"),"error");paddingBox[0].focus();return}if(!/^\d*$/.test(spacing)){K.options.errorMsgHandler(self.lang("invalidSpacing"),"error");spacingBox[0].focus();return}if(!/^\d*$/.test(border)){K.options.errorMsgHandler(self.lang("invalidBorder"),"error");borderBox[0].focus();return}if(table){if(width!==""){table.width(width+widthType)}else{table.css("width","")}if(table[0].width!==undefined){table.removeAttr("width")}if(height!==""){table.height(height+heightType)}else{table.css("height","")}if(table[0].height!==undefined){table.removeAttr("height")}table.css("background-color",bgColor);if(table[0].bgColor!==undefined){table.removeAttr("bgColor")}if(padding!==""){table[0].cellPadding=padding}else{table.removeAttr("cellPadding")}if(spacing!==""){table[0].cellSpacing=spacing}else{table.removeAttr("cellSpacing")}if(align!==""){table[0].align=align}else{table.removeAttr("align")}if(border!==""){table.attr("border",border)}else{table.removeAttr("border")}if(border===""||border==="0"){table.addClass(zeroborder)}else{table.removeClass(zeroborder)}if(borderColor!==""){table.attr("borderColor",borderColor)}else{table.removeAttr("borderColor")}self.hideDialog().focus();self.cmd.range.moveToBookmark(bookmark);self.cmd.select();self.addBookmark();return}var style="";if(width!==""){style+="width:"+width+widthType+";"}if(height!==""){style+="height:"+height+heightType+";"}if(bgColor!==""){style+="background-color:"+bgColor+";"}var html='<table class="table"';if(style!==""){html+=' style="'+style+'"'}if(padding!==""){html+=' cellpadding="'+padding+'"'}if(spacing!==""){html+=' cellspacing="'+spacing+'"'}if(align!==""){html+=' align="'+align+'"'}if(border!==""){html+=' border="'+border+'"'}if(border===""||border==="0"){html+=' class="table '+zeroborder+'"'}if(borderColor!==""){html+=' bordercolor="'+borderColor+'"'}html+=">";for(var i=0;i<rows;i++){html+="<tr>";for(var j=0;j<cols;j++){html+="<td>"+(K.IE?" ":"<br />")+"</td>"}html+="</tr>"}html+="</table>";if(!K.IE){html+="<br />"}function getAncestorTag(range){var ancestor=K(range.commonAncestor());while(ancestor){if(ancestor.type==1&&!ancestor.isStyle()){break}ancestor=ancestor.parent()}return ancestor}var tag=getAncestorTag(self.cmd.range);if(tag.name=="p"){tag.before(K(html));tag.remove();self.cmd.selection();self.insertHtml("<br />");self.select().hideDialog().focus()}else{self.insertHtml(html);self.select().hideDialog().focus();self.addBookmark()}}}}),div=dialog.div,rowsBox=K('[name="rows"]',div).val(3),colsBox=K('[name="cols"]',div).val(2),widthBox=K('[name="width"]',div).val(100),heightBox=K('[name="height"]',div),widthTypeBox=K('[name="widthType"]',div),heightTypeBox=K('[name="heightType"]',div),paddingBox=K('[name="padding"]',div).val(0),spacingBox=K('[name="spacing"]',div).val(0),alignBox=K('[name="align"]',div),borderBox=K('[name="border"]',div).val(1),colorBox=K(".ke-input-color",div);_initColorPicker(div,colorBox.eq(0));_initColorPicker(div,colorBox.eq(1));_setColor(colorBox.eq(1),"");rowsBox[0].focus();rowsBox[0].select();var table;if(isInsert){return}table=self.plugin.getSelectedTable();if(table){rowsBox.val(table[0].rows.length);colsBox.val(table[0].rows.length>0?table[0].rows[0].cells.length:0);rowsBox.attr("disabled",true);colsBox.attr("disabled",true);var match,tableWidth=table[0].style.width||table[0].width,tableHeight=table[0].style.height||table[0].height;if(tableWidth!==undefined&&(match=/^(\d+)((?:px|%)*)$/.exec(tableWidth))){widthBox.val(match[1]);widthTypeBox.val(match[2])}else{widthBox.val("")}if(tableHeight!==undefined&&(match=/^(\d+)((?:px|%)*)$/.exec(tableHeight))){heightBox.val(match[1]);heightTypeBox.val(match[2])}paddingBox.val(table[0].cellPadding||"");spacingBox.val(table[0].cellSpacing||"");alignBox.val(table[0].align||"");borderBox.val(table[0].border===undefined?"":table[0].border);_setColor(colorBox.eq(0),K.toHex(table.attr("borderColor")||""));_setColor(colorBox.eq(1),K.toHex(table[0].style.backgroundColor||table[0].bgColor||""));widthBox[0].focus();widthBox[0].select()}},cellprop:function(){var html=['<div style="padding:20px;">','<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" style="width:90px;">'+lang.size+"</label>",lang.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ','<select name="widthType">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select> ",lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<select name="heightType">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAlign" style="width:90px;">'+lang.align+"</label>",lang.textAlign+' <select id="keAlign" name="textAlign">','<option value="">'+lang.alignDefault+"</option>",'<option value="left">'+lang.alignLeft+"</option>",'<option value="center">'+lang.alignCenter+"</option>",'<option value="right">'+lang.alignRight+"</option>","</select> ",lang.verticalAlign+' <select name="verticalAlign">','<option value="">'+lang.alignDefault+"</option>",'<option value="top">'+lang.alignTop+"</option>",'<option value="middle">'+lang.alignMiddle+"</option>",'<option value="bottom">'+lang.alignBottom+"</option>",'<option value="baseline">'+lang.alignBaseline+"</option>","</select>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBorder" style="width:90px;">'+lang.border+"</label>",lang.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',lang.borderColor+' <span class="ke-inline-block ke-input-color"></span>',"</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBgColor" style="width:90px;">'+lang.backgroundColor+"</label>",'<span class="ke-inline-block ke-input-color"></span>',"</div>","</div>"].join("");var bookmark=self.cmd.range.createBookmark();var dialog=self.createDialog({name:name,width:500,title:self.lang("tablecell"),body:html,beforeRemove:function(){colorBox.unbind()},yesBtn:{name:self.lang("yes"),click:function(e){var width=widthBox.val(),height=heightBox.val(),widthType=widthTypeBox.val(),heightType=heightTypeBox.val(),padding=paddingBox.val(),spacing=spacingBox.val(),textAlign=textAlignBox.val(),verticalAlign=verticalAlignBox.val(),border=borderBox.val(),borderColor=K(colorBox[0]).html()||"",bgColor=K(colorBox[1]).html()||"";if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!/^\d*$/.test(border)){K.options.errorMsgHandler(self.lang("invalidBorder"),"error");borderBox[0].focus();return}cell.css({width:width!==""?width+widthType:"",height:height!==""?height+heightType:"","background-color":bgColor,"text-align":textAlign,"vertical-align":verticalAlign,"border-width":border,"border-style":border!==""?"solid":"","border-color":borderColor});self.hideDialog().focus();self.cmd.range.moveToBookmark(bookmark);self.cmd.select();self.addBookmark()}}}),div=dialog.div,widthBox=K('[name="width"]',div).val(100),heightBox=K('[name="height"]',div),widthTypeBox=K('[name="widthType"]',div),heightTypeBox=K('[name="heightType"]',div),paddingBox=K('[name="padding"]',div).val(0),spacingBox=K('[name="spacing"]',div).val(0),textAlignBox=K('[name="textAlign"]',div),verticalAlignBox=K('[name="verticalAlign"]',div),borderBox=K('[name="border"]',div).val(1),colorBox=K(".ke-input-color",div);_initColorPicker(div,colorBox.eq(0));_initColorPicker(div,colorBox.eq(1));_setColor(colorBox.eq(1),"");widthBox[0].focus();widthBox[0].select();var cell=self.plugin.getSelectedCell();var match,cellWidth=cell[0].style.width||cell[0].width||"",cellHeight=cell[0].style.height||cell[0].height||"";if(match=/^(\d+)((?:px|%)*)$/.exec(cellWidth)){widthBox.val(match[1]);widthTypeBox.val(match[2])}else{widthBox.val("")}if(match=/^(\d+)((?:px|%)*)$/.exec(cellHeight)){heightBox.val(match[1]);heightTypeBox.val(match[2])}textAlignBox.val(cell[0].style.textAlign||"");verticalAlignBox.val(cell[0].style.verticalAlign||"");var border=cell[0].style.borderWidth||"";if(border){border=parseInt(border)}borderBox.val(border);_setColor(colorBox.eq(0),K.toHex(cell[0].style.borderColor||""));_setColor(colorBox.eq(1),K.toHex(cell[0].style.backgroundColor||""));widthBox[0].focus();widthBox[0].select()},insert:function(){this.prop(true)},delete:function(){var table=self.plugin.getSelectedTable();self.cmd.range.setStartBefore(table[0]).collapse(true);self.cmd.select();table.remove();self.addBookmark()},colinsert:function(offset){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],index=cell.cellIndex+offset;index+=table.rows[0].cells.length-row.cells.length;for(var i=0,len=table.rows.length;i<len;i++){var newRow=table.rows[i],newCell=newRow.insertCell(index);newCell.innerHTML=K.IE?"":"<br />";index=_getCellIndex(table,newRow,newCell)}self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(offset){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0];var rowIndex=row.rowIndex;if(offset===1){rowIndex=row.rowIndex+(cell.rowSpan-1)+offset}var newRow=table.insertRow(rowIndex);for(var i=0,len=row.cells.length;i<len;i++){if(row.cells[i].rowSpan>1){len-=row.cells[i].rowSpan-1}var newCell=newRow.insertCell(i);if(offset===1&&row.cells[i].colSpan>1){newCell.colSpan=row.cells[i].colSpan}newCell.innerHTML=K.IE?"":"<br />"}for(var j=rowIndex;j>=0;j--){var cells=table.rows[j].cells;if(cells.length>i){for(var k=cell.cellIndex;k>=0;k--){if(cells[k].rowSpan>1){cells[k].rowSpan+=1}}break}}self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex,nextRowIndex=rowIndex+cell.rowSpan,nextRow=table.rows[nextRowIndex];if(table.rows.length<=nextRowIndex){return}var cellIndex=cell.cellIndex;if(nextRow.cells.length<=cellIndex){return}var nextCell=nextRow.cells[cellIndex];if(cell.colSpan!==nextCell.colSpan){return}cell.rowSpan+=nextCell.rowSpan;nextRow.deleteCell(cellIndex);self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colmerge:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex,cellIndex=cell.cellIndex,nextCellIndex=cellIndex+1;if(row.cells.length<=nextCellIndex){return}var nextCell=row.cells[nextCellIndex];if(cell.rowSpan!==nextCell.rowSpan){return}cell.colSpan+=nextCell.colSpan;row.deleteCell(nextCellIndex);self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},rowsplit:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex;if(cell.rowSpan===1){return}var cellIndex=_getCellIndex(table,row,cell);for(var i=1,len=cell.rowSpan;i<len;i++){var newRow=table.rows[rowIndex+i],newCell=newRow.insertCell(cellIndex);if(cell.colSpan>1){newCell.colSpan=cell.colSpan}newCell.innerHTML=K.IE?"":"<br />";cellIndex=_getCellIndex(table,newRow,newCell)}K(cell).removeAttr("rowSpan");self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colsplit:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],cellIndex=cell.cellIndex;if(cell.colSpan===1){return}for(var i=1,len=cell.colSpan;i<len;i++){var newCell=row.insertCell(cellIndex+i);if(cell.rowSpan>1){newCell.rowSpan=cell.rowSpan}newCell.innerHTML=K.IE?"":"<br />"}K(cell).removeAttr("colSpan");self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},coldelete:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],index=cell.cellIndex;for(var i=0,len=table.rows.length;i<len;i++){var newRow=table.rows[i],newCell=newRow.cells[index];if(newCell.colSpan>1){newCell.colSpan-=1;if(newCell.colSpan===1){K(newCell).removeAttr("colSpan")}}else{newRow.deleteCell(index)}if(newCell.rowSpan>1){i+=newCell.rowSpan-1}}if(row.cells.length===0){self.cmd.range.setStartBefore(table).collapse(true);self.cmd.select();K(table).remove()}else{self.cmd.selection(true)}self.addBookmark()},rowdelete:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex;for(var i=cell.rowSpan-1;i>=0;i--){table.deleteRow(rowIndex+i)}if(table.rows.length===0){self.cmd.range.setStartBefore(table).collapse(true);self.cmd.select();K(table).remove()}else{self.cmd.selection(true)}self.addBookmark()}};self.clickToolbar(name,self.plugin.table.prop)});KindEditor.plugin("template",function(K){var self=this,name="template",lang=self.lang(name+"."),htmlPath=self.pluginsPath+name+"/html/";function getFilePath(fileName){return htmlPath+fileName+"?ver="+encodeURIComponent(K.DEBUG?K.TIME:K.VERSION)}self.clickToolbar(name,function(){var lang=self.lang(name+"."),arr=['<div class="ke-dialog-content-inner" style="padding-top:0">','<div class="ke-dialog-row ke-clearfix">','<div class="ke-header" style="height: 32px;">',lang.selectTemplate+' <select class="ke-select">'];K.each(lang.fileList,function(key,val){arr.push('<option value="'+key+'">'+val+"</option>")});html=[arr.join(""),"</select>",'<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">'+lang.replaceContent+"</label>","</div>","</div>",'<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>',"</div>"].join("");var dialog=self.createDialog({name:name,width:500,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var doc=K.iframeDoc(iframe);self[checkbox[0].checked?"html":"insertHtml"](doc.body.innerHTML).hideDialog().focus()}}});var selectBox=K("select",dialog.div),checkbox=K('[name="replaceFlag"]',dialog.div),iframe=K("iframe",dialog.div);checkbox[0].checked=true;iframe.attr("src",getFilePath(selectBox.val()));selectBox.change(function(){iframe.attr("src",getFilePath(this.value))})})});KindEditor.plugin("wordpaste",function(K){var self=this,name="wordpaste";self.clickToolbar(name,function(){var jsonp=function(url,callback){var callbackName="jsonp_callback_"+Math.round(1e5*Math.random());window[callbackName]=function(data){delete window[callbackName];document.body.removeChild(script);callback(data)};var script=document.createElement("script");script.src=url+(url.indexOf("?")>=0?"&":"?")+"callback="+callbackName;document.body.appendChild(script)};var lang=self.lang(name+"."),html='<div style="padding:10px 20px;">'+'<div style="margin-bottom:10px;">'+lang.comment+"</div>"+'<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>'+"</div>",dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var str=doc.body.innerHTML;str=K.clearMsWord(str,self.filterMode?self.htmlTags:K.options.htmlTags);if(typeof self.wordImageServer!=="undefined"&&self.wordImageServer){var i=0;var arr=[];var replacedStr=str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/gi,function(value){arr[i]=value;var replaced="##"+i+"##";i++;return replaced});for(var j=0;j<arr.length;j++){jsonp("http://"+self.wordImageServer+"/word?index="+j+"&file="+encodeURIComponent(arr[j]),function(data){K.uploadwordimage.call(self,data.index,data.info)})}str=replacedStr}self.insertHtml(str).hideDialog().focus()}}}),div=dialog.div,iframe=K("iframe",div),doc=K.iframeDoc(iframe);if(!K.IE){doc.designMode="on"}doc.open();doc.write("<!doctype html><html><head><title>WordPaste</title></head>");doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');if(!K.IE){doc.write("<br />")}doc.write("</body></html>");doc.close();if(K.IE){doc.body.contentEditable="true"}iframe[0].contentWindow.focus()})});KindEditor.plugin("fixtoolbar",function(K){var self=this;if(!self.fixToolBar){return}function init(){var toolbar=K(".ke-toolbar");var originY=toolbar.pos().y;K(window).bind("scroll",function(){if(toolbar.css("position")=="fixed"){if(document.body.scrollTop-originY<0){toolbar.css("position","static");toolbar.css("top","auto")}}else{if(toolbar.pos().y-document.body.scrollTop<0){toolbar.css("position","fixed");toolbar.css("top",0)}}})}if(self.isCreated){init()}else{self.afterCreate(init)}}); diff --git a/addons/nkeditor/assets/plugins/anchor/anchor.js b/addons/nkeditor/assets/plugins/anchor/anchor.js new file mode 100644 index 0000000..ddf6b7a --- /dev/null +++ b/addons/nkeditor/assets/plugins/anchor/anchor.js @@ -0,0 +1,46 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('anchor', function(K) { + var self = this, name = 'anchor', lang = self.lang(name + '.'); + self.plugin.anchor = { + edit : function() { + var html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keName">' + lang.name + ':</label>', + '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />', + '</div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 300, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus(); + } + } + }); + var div = dialog.div, + nameBox = K('input[name="name"]', div); + var img = self.plugin.getSelectedAnchor(); + if (img) { + nameBox.val(unescape(img.attr('data-ke-name'))); + } + nameBox[0].focus(); + nameBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedAnchor().remove(); + } + }; + self.clickToolbar(name, self.plugin.anchor.edit); +}); diff --git a/addons/nkeditor/assets/plugins/autoheight/autoheight.js b/addons/nkeditor/assets/plugins/autoheight/autoheight.js new file mode 100644 index 0000000..6123cfa --- /dev/null +++ b/addons/nkeditor/assets/plugins/autoheight/autoheight.js @@ -0,0 +1,59 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('autoheight', function(K) { + var self = this; + + if (!self.autoHeightMode) { + return; + } + + var minHeight; + + function hideScroll() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe[0].scroll = 'no'; + body.style.overflowY = 'hidden'; + } + + function resetHeight() { + if(self.fullscreenMode){ + return; + } + var edit = self.edit; + var body = edit.doc.body; + edit.iframe.height(minHeight); + self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); + } + + function init() { + minHeight = K.removeUnit(self.height); + + self.edit.afterChange(resetHeight); + if(!self.fullscreenMode){ + hideScroll(); + } + resetHeight(); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); + +/* +* 如何实现真正的自动高度? +* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 +* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 +* 由此就实现了真正的自动高度 +* 测试:chrome、firefox、IE9、IE8 +* */ diff --git a/addons/nkeditor/assets/plugins/baidumap/baidumap.js b/addons/nkeditor/assets/plugins/baidumap/baidumap.js new file mode 100644 index 0000000..31ce564 --- /dev/null +++ b/addons/nkeditor/assets/plugins/baidumap/baidumap.js @@ -0,0 +1,91 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5 + +KindEditor.plugin('baidumap', function(K) { + var self = this, name = 'baidumap', lang = self.lang(name + '.'); + var mapWidth = K.undef(self.mapWidth, 558); + var mapHeight = K.undef(self.mapHeight, 360); + self.clickToolbar(name, function() { + var html = ['<div class="ke-dialog-content-inner" style="padding-top: 0">', + '<div class="ke-dialog-row ke-clearfix">', + // right start + '<div class="ke-header">' + lang.address, + '<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span>', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" style="line-height:22px;padding:0 10px;" />', + '</span>', + '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>', + '</div>', + '</div>', + + //map iframe + '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : mapWidth + 42, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var map = win.map; + var centerObj = map.getCenter(); + var center = centerObj.lng + ',' + centerObj.lat; + var zoom = map.getZoom(); + var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'https://api.map.baidu.com/staticimage', + '?center=' + encodeURIComponent(center), + '&zoom=' + encodeURIComponent(zoom), + '&width=' + mapWidth, + '&height=' + mapHeight, + '&markers=' + encodeURIComponent(center), + '&markerStyles=' + encodeURIComponent('l,A')].join(''); + if (checkbox[0].checked) { + self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>'); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>'); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/baidumap/index.html b/addons/nkeditor/assets/plugins/baidumap/index.html new file mode 100644 index 0000000..727d52d --- /dev/null +++ b/addons/nkeditor/assets/plugins/baidumap/index.html @@ -0,0 +1,102 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"/> + <meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具"/> + <meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图"/> + <title>百度地图API自定义地图</title> + <!--引用百度地图API--> + <style type="text/css"> + html, body { + margin: 0; + padding: 0; + } + + .iw_poi_title { + color: #CC5522; + font-size: 14px; + font-weight: bold; + overflow: hidden; + padding-right: 13px; + white-space: nowrap + } + + .iw_poi_content { + font: 12px arial, sans-serif; + overflow: visible; + padding-top: 4px; + white-space: -moz-pre-wrap; + word-wrap: break-word + } + </style> + <script type="text/javascript" src="//api.map.baidu.com/api?key=&v=1.1&services=true"></script> +</head> + +<body onload="initMap();"> +<!--百度地图容器--> +<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div> +</body> +<script type="text/javascript"> + function getParam(name) { + return location.href.match(new RegExp('[?&]' + name + '=([^?&]+)', 'i')) ? decodeURIComponent(RegExp.$1) : ''; + } + + var centerParam = getParam('center'); + var zoomParam = getParam('zoom'); + var widthParam = getParam('width'); + var heightParam = getParam('height'); + var markersParam = getParam('markers'); + var markerStylesParam = getParam('markerStyles'); + + //创建和初始化地图函数: + function initMap() { + // [FF]切换模式后报错 + if (!window.BMap) { + return; + } + var dituContent = document.getElementById('dituContent'); + dituContent.style.width = widthParam + 'px'; + dituContent.style.height = heightParam + 'px'; + + createMap();//创建地图 + setMapEvent();//设置地图事件 + addMapControl();//向地图添加控件 + + // 创建标注 + var markersArr = markersParam.split(','); + var point = new BMap.Point(markersArr[0], markersArr[1]); + var marker = new BMap.Marker(point); + map.addOverlay(marker); // 将标注添加到地图中 + } + + //创建地图函数: + function createMap() { + var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图 + var centerArr = centerParam.split(','); + var point = new BMap.Point(centerArr[0], centerArr[1]);//定义一个中心点坐标 + map.centerAndZoom(point, zoomParam);//设定地图的中心点和坐标并将地图显示在地图容器中 + window.map = map;//将map变量存储在全局 + } + + //地图事件设置函数: + function setMapEvent() { + map.enableDragging();//启用地图拖拽事件,默认启用(可不写) + map.enableScrollWheelZoom();//启用地图滚轮放大缩小 + map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写) + map.enableKeyboard();//启用键盘上下左右键移动地图 + } + + //地图控件添加函数: + function addMapControl() { + //向地图中添加缩放控件 + var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE}); + map.addControl(ctrl_nav); + //向地图中添加缩略图控件 + var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1}); + map.addControl(ctrl_ove); + //向地图中添加比例尺控件 + var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT}); + map.addControl(ctrl_sca); + } +</script> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/baidumap/map.html b/addons/nkeditor/assets/plugins/baidumap/map.html new file mode 100644 index 0000000..6810c15 --- /dev/null +++ b/addons/nkeditor/assets/plugins/baidumap/map.html @@ -0,0 +1,53 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8"/> + <title>Baidu Maps</title> + <style> + html { + height: 100% + } + + body { + height: 100%; + margin: 0; + padding: 0; + background-color: #FFF + } + </style> + <script charset="utf-8" src="//api.map.baidu.com/api?v=1.3"></script> + <script> + var map, geocoder; + + function initialize() { + map = new BMap.Map('map_canvas'); + var point = new BMap.Point(114.025974, 22.546054); + map.centerAndZoom(point, 11); + map.addControl(new BMap.NavigationControl()); + map.enableScrollWheelZoom(); + + var gc = new BMap.Geocoder(); + gc.getLocation(point, function (rs) { + var addComp = rs.addressComponents; + var address = [addComp.city].join(''); + parent.document.getElementById("kindeditor_plugin_map_address").value = address; + }); + } + + function search(address) { + if (!map) return; + var local = new BMap.LocalSearch(map, { + renderOptions: { + map: map, + autoViewport: true, + selectFirstResult: false + } + }); + local.search(address); + } + </script> +</head> +<body onload="initialize();"> +<div id="map_canvas" style="width:100%; height:100%"></div> +</body> +</html> diff --git a/addons/nkeditor/assets/plugins/clearhtml/clearhtml.js b/addons/nkeditor/assets/plugins/clearhtml/clearhtml.js new file mode 100644 index 0000000..1bf0e5d --- /dev/null +++ b/addons/nkeditor/assets/plugins/clearhtml/clearhtml.js @@ -0,0 +1,29 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('clearhtml', function(K) { + var self = this, name = 'clearhtml'; + self.clickToolbar(name, function() { + self.focus(); + var html = self.html(); + html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, ''); + html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, ''); + html = K.formatHtml(html, { + a : ['href', 'target'], + embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], + img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], + table : ['border'], + 'td,th' : ['rowspan', 'colspan'], + 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] + }); + self.html(html); + self.cmd.selection(true); + self.addBookmark(); + }); +}); diff --git a/addons/nkeditor/assets/plugins/code/code.js b/addons/nkeditor/assets/plugins/code/code.js new file mode 100644 index 0000000..67bd09d --- /dev/null +++ b/addons/nkeditor/assets/plugins/code/code.js @@ -0,0 +1,64 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// google code prettify: http://google-code-prettify.googlecode.com/ +// http://google-code-prettify.googlecode.com/ + +KindEditor.plugin('code', function(K) { + var self = this, name = 'code'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = ['<div style="margin: 0px 20px;">', + '<div class="ke-dialog-row">', + '<select class="ke-select" style="margin-bottom: 5px;">', + '<option value="javascript">JavaScript</option>', + '<option value="html">HTML</option>', + '<option value="css">CSS</option>', + '<option value="php">PHP</option>', + '<option value="perl">Perl</option>', + '<option value="python">Python</option>', + '<option value="ruby">Ruby</option>', + '<option value="java">Java</option>', + '<option value="go">Go</option>', + '<option value="asp">ASP/VB</option>', + '<option value="csharp">C#</option>', + '<option value="cpp">C/C++</option>', + '<option value="cs">C#</option>', + '<option value="bash">Shell</option>', + '<option value="sql">SQL</option>', + '<option value="markup">Other</option>', + '</select>', + '</div>', + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>', + '</div>'].join(''), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '<pre class="' + cls + '"><code>' + K.escape(code) + '</code></pre> <br/>'; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/addons/nkeditor/assets/plugins/code/pretty.js b/addons/nkeditor/assets/plugins/code/pretty.js new file mode 100644 index 0000000..ec84da9 --- /dev/null +++ b/addons/nkeditor/assets/plugins/code/pretty.js @@ -0,0 +1,18 @@ +/** + * @author yangjian + * @since 18-9-11 下午9:02. + */ + +// function _bindEvent(el, type, fn) { +// if (el.addEventListener){ +// el.addEventListener(type, fn); +// } else if (el.attachEvent){ +// el.attachEvent('on' + type, fn); +// } +// } +// _bindEvent(document.body, "DOMNodeInserted", function(e) { +// var className = e.target.className; +// if (className && className.indexOf("language-") != -1) { +// Prism.highlightElement(e.target); +// } +// }) diff --git a/addons/nkeditor/assets/plugins/code/prism.css b/addons/nkeditor/assets/plugins/code/prism.css new file mode 100644 index 0000000..f88adbc --- /dev/null +++ b/addons/nkeditor/assets/plugins/code/prism.css @@ -0,0 +1,292 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%,.08); + background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + + .line-highlight:before, + .line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: hsla(24, 20%, 50%,.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; + } + + .line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; + } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; +} + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + + .line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; + } + + .line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; + } + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: .3em; + right: .2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: .8em; + padding: 0 .5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0,0,0,0.2); + border-radius: .5em; +} + +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar span:hover, +div.code-toolbar > .toolbar span:focus { + color: inherit; + text-decoration: none; +} + diff --git a/addons/nkeditor/assets/plugins/code/prism.js b/addons/nkeditor/assets/plugins/code/prism.js new file mode 100644 index 0000000..0f748e7 --- /dev/null +++ b/addons/nkeditor/assets/plugins/code/prism.js @@ -0,0 +1,26 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e,t){var r=n.util.type(e);switch(t=t||{},r){case"Object":if(t[n.util.objId(e)])return t[n.util.objId(e)];var a={};t[n.util.objId(e)]=a;for(var l in e)e.hasOwnProperty(l)&&(a[l]=n.util.clone(e[l],t));return a;case"Array":if(t[n.util.objId(e)])return t[n.util.objId(e)];var a=[];return t[n.util.objId(e)]=a,e.forEach(function(e,r){a[r]=n.util.clone(e,t)}),a}return e}},languages:{extend:function(e,t){var r=n.util.clone(n.languages[e]);for(var a in t)r[a]=t[a];return r},insertBefore:function(e,t,r,a){a=a||n.languages;var l=a[e];if(2==arguments.length){r=arguments[1];for(var i in r)r.hasOwnProperty(i)&&(l[i]=r[i]);return l}var o={};for(var s in l)if(l.hasOwnProperty(s)){if(s==t)for(var i in r)r.hasOwnProperty(i)&&(o[i]=r[i]);o[s]=l[s]}var u=a[e];return a[e]=o,n.languages.DFS(n.languages,function(t,n){n===u&&t!=e&&(this[t]=o)}),o},DFS:function(e,t,r,a){a=a||{};for(var l in e)e.hasOwnProperty(l)&&(t.call(e,l,e[l],r||l),"Object"!==n.util.type(e[l])||a[n.util.objId(e[l])]?"Array"!==n.util.type(e[l])||a[n.util.objId(e[l])]||(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,l,a)):(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,null,a)))}},plugins:{},highlightAll:function(e,t){n.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,r){var a={callback:r,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",a);for(var l,i=a.elements||e.querySelectorAll(a.selector),o=0;l=i[o++];)n.highlightElement(l,t===!0,a.callback)},highlightElement:function(t,r,a){for(var l,i,o=t;o&&!e.test(o.className);)o=o.parentNode;o&&(l=(o.className.match(e)||[,""])[1].toLowerCase(),i=n.languages[l]),t.className=t.className.replace(e,"").replace(/\s+/g," ")+" language-"+l,t.parentNode&&(o=t.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+l));var s=t.textContent,u={element:t,language:l,grammar:i,code:s};if(n.hooks.run("before-sanity-check",u),!u.code||!u.grammar)return u.code&&(n.hooks.run("before-highlight",u),u.element.textContent=u.code,n.hooks.run("after-highlight",u)),n.hooks.run("complete",u),void 0;if(n.hooks.run("before-highlight",u),r&&_self.Worker){var g=new Worker(n.filename);g.onmessage=function(e){u.highlightedCode=e.data,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,a&&a.call(u.element),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},g.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else u.highlightedCode=n.highlight(u.code,u.grammar,u.language),n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,a&&a.call(t),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},highlight:function(e,t,a){var l={code:e,grammar:t,language:a};return n.hooks.run("before-tokenize",l),l.tokens=n.tokenize(l.code,l.grammar),n.hooks.run("after-tokenize",l),r.stringify(n.util.encode(l.tokens),l.language)},matchGrammar:function(e,t,r,a,l,i,o){var s=n.Token;for(var u in r)if(r.hasOwnProperty(u)&&r[u]){if(u==o)return;var g=r[u];g="Array"===n.util.type(g)?g:[g];for(var c=0;c<g.length;++c){var h=g[c],f=h.inside,d=!!h.lookbehind,m=!!h.greedy,p=0,y=h.alias;if(m&&!h.pattern.global){var v=h.pattern.toString().match(/[imuy]*$/)[0];h.pattern=RegExp(h.pattern.source,v+"g")}h=h.pattern||h;for(var b=a,k=l;b<t.length;k+=t[b].length,++b){var w=t[b];if(t.length>e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+"</"+l.tag+">"},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},/\b(?:as|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/],number:/\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\(|\.(?:apply|bind|call)\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; +Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; +Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i}),Prism.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{"function":/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.dotnet=Prism.languages.csharp; +!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.string=e.languages.bash.string,a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a["boolean"]=e.languages.bash["boolean"],a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(Prism); +Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(?:true|false)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}); +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/(<script(?=.*runat=['"]?server['"]?)[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}}); +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m,greedy:!0}],keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}]}(Prism); +Prism.languages["markup-templating"]={},Object.defineProperties(Prism.languages["markup-templating"],{buildPlaceholders:{value:function(e,t,n,a){e.language===t&&(e.tokenStack=[],e.code=e.code.replace(n,function(n){if("function"==typeof a&&!a(n))return n;for(var r=e.tokenStack.length;-1!==e.code.indexOf("___"+t.toUpperCase()+r+"___");)++r;return e.tokenStack[r]=n,"___"+t.toUpperCase()+r+"___"}),e.grammar=Prism.languages.markup)}},tokenizePlaceholders:{value:function(e,t){if(e.language===t&&e.tokenStack){e.grammar=Prism.languages[t];var n=0,a=Object.keys(e.tokenStack),r=function(o){if(!(n>=a.length))for(var i=0;i<o.length;i++){var g=o[i];if("string"==typeof g||g.content&&"string"==typeof g.content){var c=a[n],s=e.tokenStack[c],l="string"==typeof g?g:g.content,p=l.indexOf("___"+t.toUpperCase()+c+"___");if(p>-1){++n;var f,u=l.substring(0,p),_=new Prism.Token(t,Prism.tokenize(s,e.grammar,t),"language-"+t,s),k=l.substring(p+("___"+t.toUpperCase()+c+"___").length);if(u||k?(f=[u,_,k].filter(function(e){return!!e}),r(f)):f=_,"string"==typeof g?Array.prototype.splice.apply(o,[i,1].concat(f)):g.content=f,n>=a.length)break}}else g.content&&"string"!=typeof g.content&&r(g.content)}};r(e.tokens)}}}}); +Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,"boolean":/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"]; +Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.italic.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.bold.inside.italic=Prism.languages.markdown.italic,Prism.languages.markdown.italic.inside.bold=Prism.languages.markdown.bold; +!function(e){e.languages.php=e.languages.extend("clike",{keyword:/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),e.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),e.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$+(?:\w+\b|(?={))/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),e.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var n={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:{rest:e.languages.php}};e.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:n}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:n}}}),delete e.languages.php.string,e.hooks.add("before-tokenize",function(n){if(/(?:<\?php|<\?)/gi.test(n.code)){var t=/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi;e.languages["markup-templating"].buildPlaceholders(n,"php",t)}}),e.hooks.add("after-tokenize",function(n){e.languages["markup-templating"].tokenizePlaceholders(n,"php")})}(Prism); +Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var a=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:a,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:a,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism); +Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}; +!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){n="string"==typeof n?n:e.getAttribute("data-line");for(var o,l=n.replace(/\s+/g,"").split(","),a=+e.getAttribute("data-line-offset")||0,s=r()?parseInt:parseFloat,d=s(getComputedStyle(e).lineHeight),u=t(e,"line-numbers"),c=0;o=l[c++];){var p=o.split("-"),m=+p[0],f=+p[1]||m,h=e.querySelector('.line-highlight[data-range="'+o+'"]')||document.createElement("div");if(h.setAttribute("aria-hidden","true"),h.setAttribute("data-range",o),h.className=(i||"")+" line-highlight",u&&Prism.plugins.lineNumbers){var g=Prism.plugins.lineNumbers.getLine(e,m),y=Prism.plugins.lineNumbers.getLine(e,f);g&&(h.style.top=g.offsetTop+"px"),y&&(h.style.height=y.offsetTop-g.offsetTop+y.offsetHeight+"px")}else h.setAttribute("data-start",m),f>m&&h.setAttribute("data-end",f),h.style.top=(m-a-1)*d+"px",h.textContent=new Array(f-m+2).join(" \n");u?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" <br /> ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("before-sanity-check",function(t){var n=t.element.parentNode,i=n&&n.getAttribute("data-line");if(n&&i&&/pre/i.test(n.nodeName)){var r=0;e(".line-highlight",n).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(t.code.slice(-r))&&(t.code=t.code.slice(0,-r))}}),Prism.hooks.add("complete",function l(e){var r=e.element.parentNode,a=r&&r.getAttribute("data-line");if(r&&a&&/pre/i.test(r.nodeName)){clearTimeout(o);var s=Prism.plugins.lineNumbers,d=e.plugins&&e.plugins.lineNumbers;t(r,"line-numbers")&&s&&!d?Prism.hooks.add("line-numbers",l):(n(r,a),o=setTimeout(i,1))}}),window.addEventListener("hashchange",i),window.addEventListener("resize",function(){var e=document.querySelectorAll("pre[data-line]");Array.prototype.forEach.call(e,function(e){n(e)})})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join("<span></span>"),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t=[],e={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var o;o="function"==typeof a?a:function(t){var e;return"function"==typeof a.onClick?(e=document.createElement("button"),e.type="button",e.addEventListener("click",function(){a.onClick.call(this,t)})):"string"==typeof a.url?(e=document.createElement("a"),e.href=a.url):e=document.createElement("span"),e.textContent=a.text,e},t.push(e[n]=o)},o=Prism.plugins.toolbar.hook=function(a){var o=a.element.parentNode;if(o&&/pre/i.test(o.nodeName)&&!o.parentNode.classList.contains("code-toolbar")){var r=document.createElement("div");r.classList.add("code-toolbar"),o.parentNode.insertBefore(r,o),r.appendChild(o);var i=document.createElement("div");i.classList.add("toolbar"),document.body.hasAttribute("data-toolbar-order")&&(t=document.body.getAttribute("data-toolbar-order").split(",").map(function(t){return e[t]||n})),t.forEach(function(t){var e=t(a);if(e){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(e),i.appendChild(n)}}),r.appendChild(i)}};a("label",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-label")){var n,a,o=e.getAttribute("data-label");try{a=document.querySelector("template#"+o)}catch(r){}return a?n=a.content:(e.hasAttribute("data-url")?(n=document.createElement("a"),n.href=e.getAttribute("data-url")):n=document.createElement("span"),n.textContent=o),n}}),Prism.hooks.add("complete",o)}}(); +!function(){"undefined"!=typeof self&&!self.Prism||"undefined"!=typeof global&&!global.Prism||Prism.hooks.add("wrap",function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)})}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Shell",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",jsonp:"JSONP",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."),void 0;var o=window.ClipboardJS||void 0;o||"function"!=typeof require||(o=require("clipboard"));var e=[];if(!o){var t=document.createElement("script"),n=document.querySelector("head");t.onload=function(){if(o=window.ClipboardJS)for(;e.length;)e.pop()()},t.src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",n.appendChild(t)}Prism.plugins.toolbar.registerButton("copy-to-clipboard",function(t){function n(){var e=new o(i,{text:function(){return t.code}});e.on("success",function(){i.textContent="Copied!",r()}),e.on("error",function(){i.textContent="Press Ctrl+C to copy",r()})}function r(){setTimeout(function(){i.textContent="Copy"},5e3)}var i=document.createElement("a");return i.textContent="Copy",o?n():e.push(n),i})}}(); diff --git a/addons/nkeditor/assets/plugins/emoticons/emoticons.js b/addons/nkeditor/assets/plugins/emoticons/emoticons.js new file mode 100644 index 0000000..a990066 --- /dev/null +++ b/addons/nkeditor/assets/plugins/emoticons/emoticons.js @@ -0,0 +1,129 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('emoticons', function(K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function() { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'), + elements = [], + menu = self.createMenu({ + name : name, + beforeRemove : function() { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('<div class="ke-preview"></div>').css('right', 0); + previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />'); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function() { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function() { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function() { + K(this).removeClass('ke-on'); + }); + cell.click(function(e) { + self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus(); + e.stop(); + }); + } + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function() { + previewDiv.show('block'); + }); + K(table).mouseout(function() { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('<span class="ke-img"></span>') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + function removeEvent() { + K.each(elements, function() { + this.unbind(); + }); + } + var pageDiv; + function bindPageEvent(el, pageNum) { + el.click(function(e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + function createPageTable(currentPageNum) { + pageDiv = K('<div class="ke-page"></div>'); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('<a href="javascript:;">[' + pageNum + ']</a>'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + createPageTable(currentPageNum); + }); +}); diff --git a/addons/nkeditor/assets/plugins/emoticons/images/0.gif b/addons/nkeditor/assets/plugins/emoticons/images/0.gif new file mode 100644 index 0000000..5be27cb Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/0.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/1.gif b/addons/nkeditor/assets/plugins/emoticons/images/1.gif new file mode 100644 index 0000000..a2644a9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/1.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/10.gif b/addons/nkeditor/assets/plugins/emoticons/images/10.gif new file mode 100644 index 0000000..905c15b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/10.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/100.gif b/addons/nkeditor/assets/plugins/emoticons/images/100.gif new file mode 100644 index 0000000..92ad35d Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/100.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/101.gif b/addons/nkeditor/assets/plugins/emoticons/images/101.gif new file mode 100644 index 0000000..1f27663 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/101.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/102.gif b/addons/nkeditor/assets/plugins/emoticons/images/102.gif new file mode 100644 index 0000000..748ded1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/102.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/103.gif b/addons/nkeditor/assets/plugins/emoticons/images/103.gif new file mode 100644 index 0000000..be9eaa0 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/103.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/104.gif b/addons/nkeditor/assets/plugins/emoticons/images/104.gif new file mode 100644 index 0000000..d7c2066 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/104.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/105.gif b/addons/nkeditor/assets/plugins/emoticons/images/105.gif new file mode 100644 index 0000000..2f353ca Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/105.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/106.gif b/addons/nkeditor/assets/plugins/emoticons/images/106.gif new file mode 100644 index 0000000..5193534 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/106.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/107.gif b/addons/nkeditor/assets/plugins/emoticons/images/107.gif new file mode 100644 index 0000000..70d38d3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/107.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/108.gif b/addons/nkeditor/assets/plugins/emoticons/images/108.gif new file mode 100644 index 0000000..749d500 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/108.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/109.gif b/addons/nkeditor/assets/plugins/emoticons/images/109.gif new file mode 100644 index 0000000..6f57d56 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/109.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/11.gif b/addons/nkeditor/assets/plugins/emoticons/images/11.gif new file mode 100644 index 0000000..b512dd5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/11.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/110.gif b/addons/nkeditor/assets/plugins/emoticons/images/110.gif new file mode 100644 index 0000000..e253abc Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/110.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/111.gif b/addons/nkeditor/assets/plugins/emoticons/images/111.gif new file mode 100644 index 0000000..0c56723 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/111.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/112.gif b/addons/nkeditor/assets/plugins/emoticons/images/112.gif new file mode 100644 index 0000000..c8ddce8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/112.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/113.gif b/addons/nkeditor/assets/plugins/emoticons/images/113.gif new file mode 100644 index 0000000..2727104 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/113.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/114.gif b/addons/nkeditor/assets/plugins/emoticons/images/114.gif new file mode 100644 index 0000000..53918e2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/114.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/115.gif b/addons/nkeditor/assets/plugins/emoticons/images/115.gif new file mode 100644 index 0000000..4db3369 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/115.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/116.gif b/addons/nkeditor/assets/plugins/emoticons/images/116.gif new file mode 100644 index 0000000..57326bd Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/116.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/117.gif b/addons/nkeditor/assets/plugins/emoticons/images/117.gif new file mode 100644 index 0000000..14611b6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/117.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/118.gif b/addons/nkeditor/assets/plugins/emoticons/images/118.gif new file mode 100644 index 0000000..8c25500 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/118.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/119.gif b/addons/nkeditor/assets/plugins/emoticons/images/119.gif new file mode 100644 index 0000000..65bb468 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/119.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/12.gif b/addons/nkeditor/assets/plugins/emoticons/images/12.gif new file mode 100644 index 0000000..547529c Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/12.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/120.gif b/addons/nkeditor/assets/plugins/emoticons/images/120.gif new file mode 100644 index 0000000..5ce77c0 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/120.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/121.gif b/addons/nkeditor/assets/plugins/emoticons/images/121.gif new file mode 100644 index 0000000..a021aba Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/121.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/122.gif b/addons/nkeditor/assets/plugins/emoticons/images/122.gif new file mode 100644 index 0000000..9a79e11 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/122.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/123.gif b/addons/nkeditor/assets/plugins/emoticons/images/123.gif new file mode 100644 index 0000000..b9480be Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/123.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/124.gif b/addons/nkeditor/assets/plugins/emoticons/images/124.gif new file mode 100644 index 0000000..7fed477 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/124.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/125.gif b/addons/nkeditor/assets/plugins/emoticons/images/125.gif new file mode 100644 index 0000000..e2c3c11 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/125.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/126.gif b/addons/nkeditor/assets/plugins/emoticons/images/126.gif new file mode 100644 index 0000000..24105c9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/126.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/127.gif b/addons/nkeditor/assets/plugins/emoticons/images/127.gif new file mode 100644 index 0000000..0cead36 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/127.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/128.gif b/addons/nkeditor/assets/plugins/emoticons/images/128.gif new file mode 100644 index 0000000..3185861 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/128.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/129.gif b/addons/nkeditor/assets/plugins/emoticons/images/129.gif new file mode 100644 index 0000000..ffd7c6b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/129.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/13.gif b/addons/nkeditor/assets/plugins/emoticons/images/13.gif new file mode 100644 index 0000000..3475300 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/13.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/130.gif b/addons/nkeditor/assets/plugins/emoticons/images/130.gif new file mode 100644 index 0000000..d828e3d Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/130.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/131.gif b/addons/nkeditor/assets/plugins/emoticons/images/131.gif new file mode 100644 index 0000000..dcb096f Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/131.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/132.gif b/addons/nkeditor/assets/plugins/emoticons/images/132.gif new file mode 100644 index 0000000..1b272a6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/132.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/133.gif b/addons/nkeditor/assets/plugins/emoticons/images/133.gif new file mode 100644 index 0000000..0d0e864 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/133.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/134.gif b/addons/nkeditor/assets/plugins/emoticons/images/134.gif new file mode 100644 index 0000000..cf48356 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/134.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/14.gif b/addons/nkeditor/assets/plugins/emoticons/images/14.gif new file mode 100644 index 0000000..6a788f8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/14.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/15.gif b/addons/nkeditor/assets/plugins/emoticons/images/15.gif new file mode 100644 index 0000000..debab8e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/15.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/16.gif b/addons/nkeditor/assets/plugins/emoticons/images/16.gif new file mode 100644 index 0000000..ed5d29f Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/16.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/17.gif b/addons/nkeditor/assets/plugins/emoticons/images/17.gif new file mode 100644 index 0000000..85886fe Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/17.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/18.gif b/addons/nkeditor/assets/plugins/emoticons/images/18.gif new file mode 100644 index 0000000..b6af218 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/18.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/19.gif b/addons/nkeditor/assets/plugins/emoticons/images/19.gif new file mode 100644 index 0000000..e045ff2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/19.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/2.gif b/addons/nkeditor/assets/plugins/emoticons/images/2.gif new file mode 100644 index 0000000..40cfda4 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/2.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/20.gif b/addons/nkeditor/assets/plugins/emoticons/images/20.gif new file mode 100644 index 0000000..efd650f Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/20.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/21.gif b/addons/nkeditor/assets/plugins/emoticons/images/21.gif new file mode 100644 index 0000000..cb8cf6d Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/21.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/22.gif b/addons/nkeditor/assets/plugins/emoticons/images/22.gif new file mode 100644 index 0000000..96b04df Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/22.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/23.gif b/addons/nkeditor/assets/plugins/emoticons/images/23.gif new file mode 100644 index 0000000..96516b8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/23.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/24.gif b/addons/nkeditor/assets/plugins/emoticons/images/24.gif new file mode 100644 index 0000000..5f925c7 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/24.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/25.gif b/addons/nkeditor/assets/plugins/emoticons/images/25.gif new file mode 100644 index 0000000..97f8b1a Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/25.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/26.gif b/addons/nkeditor/assets/plugins/emoticons/images/26.gif new file mode 100644 index 0000000..a7cded7 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/26.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/27.gif b/addons/nkeditor/assets/plugins/emoticons/images/27.gif new file mode 100644 index 0000000..bb46890 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/27.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/28.gif b/addons/nkeditor/assets/plugins/emoticons/images/28.gif new file mode 100644 index 0000000..f59dd58 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/28.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/29.gif b/addons/nkeditor/assets/plugins/emoticons/images/29.gif new file mode 100644 index 0000000..3c5227e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/29.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/3.gif b/addons/nkeditor/assets/plugins/emoticons/images/3.gif new file mode 100644 index 0000000..6d6f762 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/3.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/30.gif b/addons/nkeditor/assets/plugins/emoticons/images/30.gif new file mode 100644 index 0000000..e24a180 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/30.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/31.gif b/addons/nkeditor/assets/plugins/emoticons/images/31.gif new file mode 100644 index 0000000..073e743 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/31.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/32.gif b/addons/nkeditor/assets/plugins/emoticons/images/32.gif new file mode 100644 index 0000000..772eff2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/32.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/33.gif b/addons/nkeditor/assets/plugins/emoticons/images/33.gif new file mode 100644 index 0000000..217c1c5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/33.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/34.gif b/addons/nkeditor/assets/plugins/emoticons/images/34.gif new file mode 100644 index 0000000..e9d4213 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/34.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/35.gif b/addons/nkeditor/assets/plugins/emoticons/images/35.gif new file mode 100644 index 0000000..d6da2c3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/35.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/36.gif b/addons/nkeditor/assets/plugins/emoticons/images/36.gif new file mode 100644 index 0000000..c1e6ac9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/36.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/37.gif b/addons/nkeditor/assets/plugins/emoticons/images/37.gif new file mode 100644 index 0000000..92efec6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/37.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/38.gif b/addons/nkeditor/assets/plugins/emoticons/images/38.gif new file mode 100644 index 0000000..489f0f9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/38.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/39.gif b/addons/nkeditor/assets/plugins/emoticons/images/39.gif new file mode 100644 index 0000000..734f6d8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/39.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/4.gif b/addons/nkeditor/assets/plugins/emoticons/images/4.gif new file mode 100644 index 0000000..6ccdaa2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/4.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/40.gif b/addons/nkeditor/assets/plugins/emoticons/images/40.gif new file mode 100644 index 0000000..24a8eb6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/40.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/41.gif b/addons/nkeditor/assets/plugins/emoticons/images/41.gif new file mode 100644 index 0000000..99139e1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/41.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/42.gif b/addons/nkeditor/assets/plugins/emoticons/images/42.gif new file mode 100644 index 0000000..f60897e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/42.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/43.gif b/addons/nkeditor/assets/plugins/emoticons/images/43.gif new file mode 100644 index 0000000..4350491 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/43.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/44.gif b/addons/nkeditor/assets/plugins/emoticons/images/44.gif new file mode 100644 index 0000000..650d3dd Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/44.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/45.gif b/addons/nkeditor/assets/plugins/emoticons/images/45.gif new file mode 100644 index 0000000..5c8e071 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/45.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/46.gif b/addons/nkeditor/assets/plugins/emoticons/images/46.gif new file mode 100644 index 0000000..f3cb074 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/46.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/47.gif b/addons/nkeditor/assets/plugins/emoticons/images/47.gif new file mode 100644 index 0000000..5b3057a Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/47.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/48.gif b/addons/nkeditor/assets/plugins/emoticons/images/48.gif new file mode 100644 index 0000000..27a30c1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/48.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/49.gif b/addons/nkeditor/assets/plugins/emoticons/images/49.gif new file mode 100644 index 0000000..dcfa48a Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/49.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/5.gif b/addons/nkeditor/assets/plugins/emoticons/images/5.gif new file mode 100644 index 0000000..ab0b81b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/5.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/50.gif b/addons/nkeditor/assets/plugins/emoticons/images/50.gif new file mode 100644 index 0000000..029cf0f Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/50.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/51.gif b/addons/nkeditor/assets/plugins/emoticons/images/51.gif new file mode 100644 index 0000000..69f183f Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/51.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/52.gif b/addons/nkeditor/assets/plugins/emoticons/images/52.gif new file mode 100644 index 0000000..d41e8aa Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/52.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/53.gif b/addons/nkeditor/assets/plugins/emoticons/images/53.gif new file mode 100644 index 0000000..56352dd Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/53.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/54.gif b/addons/nkeditor/assets/plugins/emoticons/images/54.gif new file mode 100644 index 0000000..b28d848 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/54.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/55.gif b/addons/nkeditor/assets/plugins/emoticons/images/55.gif new file mode 100644 index 0000000..e18da84 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/55.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/56.gif b/addons/nkeditor/assets/plugins/emoticons/images/56.gif new file mode 100644 index 0000000..edf96f0 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/56.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/57.gif b/addons/nkeditor/assets/plugins/emoticons/images/57.gif new file mode 100644 index 0000000..3f0e2b9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/57.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/58.gif b/addons/nkeditor/assets/plugins/emoticons/images/58.gif new file mode 100644 index 0000000..47b1aaa Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/58.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/59.gif b/addons/nkeditor/assets/plugins/emoticons/images/59.gif new file mode 100644 index 0000000..918288b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/59.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/6.gif b/addons/nkeditor/assets/plugins/emoticons/images/6.gif new file mode 100644 index 0000000..ceab122 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/6.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/60.gif b/addons/nkeditor/assets/plugins/emoticons/images/60.gif new file mode 100644 index 0000000..66d2113 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/60.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/61.gif b/addons/nkeditor/assets/plugins/emoticons/images/61.gif new file mode 100644 index 0000000..034933e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/61.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/62.gif b/addons/nkeditor/assets/plugins/emoticons/images/62.gif new file mode 100644 index 0000000..8d5c4fd Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/62.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/63.gif b/addons/nkeditor/assets/plugins/emoticons/images/63.gif new file mode 100644 index 0000000..d58fcf6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/63.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/64.gif b/addons/nkeditor/assets/plugins/emoticons/images/64.gif new file mode 100644 index 0000000..c4e00bd Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/64.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/65.gif b/addons/nkeditor/assets/plugins/emoticons/images/65.gif new file mode 100644 index 0000000..da23bfa Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/65.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/66.gif b/addons/nkeditor/assets/plugins/emoticons/images/66.gif new file mode 100644 index 0000000..310ec65 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/66.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/67.gif b/addons/nkeditor/assets/plugins/emoticons/images/67.gif new file mode 100644 index 0000000..51761ba Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/67.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/68.gif b/addons/nkeditor/assets/plugins/emoticons/images/68.gif new file mode 100644 index 0000000..345cb43 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/68.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/69.gif b/addons/nkeditor/assets/plugins/emoticons/images/69.gif new file mode 100644 index 0000000..e0f28a0 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/69.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/7.gif b/addons/nkeditor/assets/plugins/emoticons/images/7.gif new file mode 100644 index 0000000..2f45399 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/7.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/70.gif b/addons/nkeditor/assets/plugins/emoticons/images/70.gif new file mode 100644 index 0000000..24284cf Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/70.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/71.gif b/addons/nkeditor/assets/plugins/emoticons/images/71.gif new file mode 100644 index 0000000..a0ccf2e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/71.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/72.gif b/addons/nkeditor/assets/plugins/emoticons/images/72.gif new file mode 100644 index 0000000..7e113ee Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/72.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/73.gif b/addons/nkeditor/assets/plugins/emoticons/images/73.gif new file mode 100644 index 0000000..c0293c3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/73.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/74.gif b/addons/nkeditor/assets/plugins/emoticons/images/74.gif new file mode 100644 index 0000000..1c52bde Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/74.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/75.gif b/addons/nkeditor/assets/plugins/emoticons/images/75.gif new file mode 100644 index 0000000..9cb9aa7 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/75.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/76.gif b/addons/nkeditor/assets/plugins/emoticons/images/76.gif new file mode 100644 index 0000000..27019f8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/76.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/77.gif b/addons/nkeditor/assets/plugins/emoticons/images/77.gif new file mode 100644 index 0000000..8f882f5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/77.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/78.gif b/addons/nkeditor/assets/plugins/emoticons/images/78.gif new file mode 100644 index 0000000..d0d0856 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/78.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/79.gif b/addons/nkeditor/assets/plugins/emoticons/images/79.gif new file mode 100644 index 0000000..61652a7 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/79.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/8.gif b/addons/nkeditor/assets/plugins/emoticons/images/8.gif new file mode 100644 index 0000000..f6c8834 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/8.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/80.gif b/addons/nkeditor/assets/plugins/emoticons/images/80.gif new file mode 100644 index 0000000..9a77936 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/80.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/81.gif b/addons/nkeditor/assets/plugins/emoticons/images/81.gif new file mode 100644 index 0000000..2329101 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/81.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/82.gif b/addons/nkeditor/assets/plugins/emoticons/images/82.gif new file mode 100644 index 0000000..644748a Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/82.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/83.gif b/addons/nkeditor/assets/plugins/emoticons/images/83.gif new file mode 100644 index 0000000..fbf275b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/83.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/84.gif b/addons/nkeditor/assets/plugins/emoticons/images/84.gif new file mode 100644 index 0000000..076f0c6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/84.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/85.gif b/addons/nkeditor/assets/plugins/emoticons/images/85.gif new file mode 100644 index 0000000..d254af4 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/85.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/86.gif b/addons/nkeditor/assets/plugins/emoticons/images/86.gif new file mode 100644 index 0000000..8f09d33 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/86.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/87.gif b/addons/nkeditor/assets/plugins/emoticons/images/87.gif new file mode 100644 index 0000000..df70756 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/87.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/88.gif b/addons/nkeditor/assets/plugins/emoticons/images/88.gif new file mode 100644 index 0000000..4d8b15e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/88.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/89.gif b/addons/nkeditor/assets/plugins/emoticons/images/89.gif new file mode 100644 index 0000000..05726dc Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/89.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/9.gif b/addons/nkeditor/assets/plugins/emoticons/images/9.gif new file mode 100644 index 0000000..c2d8450 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/9.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/90.gif b/addons/nkeditor/assets/plugins/emoticons/images/90.gif new file mode 100644 index 0000000..adaf20e Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/90.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/91.gif b/addons/nkeditor/assets/plugins/emoticons/images/91.gif new file mode 100644 index 0000000..608d0ad Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/91.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/92.gif b/addons/nkeditor/assets/plugins/emoticons/images/92.gif new file mode 100644 index 0000000..b909e16 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/92.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/93.gif b/addons/nkeditor/assets/plugins/emoticons/images/93.gif new file mode 100644 index 0000000..7f71a8c Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/93.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/94.gif b/addons/nkeditor/assets/plugins/emoticons/images/94.gif new file mode 100644 index 0000000..4f26d7d Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/94.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/95.gif b/addons/nkeditor/assets/plugins/emoticons/images/95.gif new file mode 100644 index 0000000..5ef6d38 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/95.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/96.gif b/addons/nkeditor/assets/plugins/emoticons/images/96.gif new file mode 100644 index 0000000..2b709e1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/96.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/97.gif b/addons/nkeditor/assets/plugins/emoticons/images/97.gif new file mode 100644 index 0000000..cf29be8 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/97.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/98.gif b/addons/nkeditor/assets/plugins/emoticons/images/98.gif new file mode 100644 index 0000000..c70e7d3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/98.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/99.gif b/addons/nkeditor/assets/plugins/emoticons/images/99.gif new file mode 100644 index 0000000..05c1863 Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/99.gif differ diff --git a/addons/nkeditor/assets/plugins/emoticons/images/static.gif b/addons/nkeditor/assets/plugins/emoticons/images/static.gif new file mode 100644 index 0000000..b8c444b Binary files /dev/null and b/addons/nkeditor/assets/plugins/emoticons/images/static.gif differ diff --git a/addons/nkeditor/assets/plugins/filemanager/FManager.js b/addons/nkeditor/assets/plugins/filemanager/FManager.js new file mode 100644 index 0000000..ad8a8f8 --- /dev/null +++ b/addons/nkeditor/assets/plugins/filemanager/FManager.js @@ -0,0 +1,307 @@ +/** + * HTML5上传插件 + * @author yangjian<yangjian102621@gmail.com> + * @version 1.0.1 + * @site https://git.oschina.net/blackfox/ajaxUpload + */ +(function ($) { + + //判断浏览器是否支持html5 + // if ( !window.applicationCache ) + // throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function (__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width / this.height; + var cropRate = __width / __height; + if (orgRate >= cropRate) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width) / 2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position": "absolute", + top: -top + "px", + left: -left + "px", + width: width + "px", + height: height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function (options) { + var defaults = { + handler: null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function (e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function (e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); + $(__self).css({ + 'top': e.pageY - offsetTop + 'px', + 'left': e.pageX - offsetLeft + 'px' + }); + }); + + }).mouseup(function () { + $(document).unbind('mousemove'); + }); + + } + + if (Array.prototype.remove == undefined) { + Array.prototype.remove = function (item) { + for (var i = 0; i < this.length; i++) { + if (this[i] == item) { + this.splice(i, 1); + break; + } + } + } + } + if (Array.prototype.uinque == undefined) { + Array.prototype.uinque = function () { + var result = [], hash = {}; + for (var i = 0, item; (item = this[i]) != null; i++) { + if (!hash[item]) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.FManager = function (options) { + options = $.extend({ + lang: {}, + list_url: null, + data_type: "json", + fileType: "image", //文件类型,默认是图片,可选flash,media,file + top: 20, + multiple: false, + callback: function (data) { + console.log(data); + } + }, options); + + var o = {}; + o.dialog = null; + o.selectedList = new Array(); //the file queue upload successfully + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + + //close the dialog + o.close = function () { + o.dialog.remove(); + try { + JDialog.lock.hide(); + } catch (e) { + } + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('<div class="uedbody ke-animated"><div class="ued_title">'); + builder.append('<div class="uedbar"><span>' + options.lang.title + '</span></div><div class="close_btn icon" title="' + options.lang.closeText + '"></div>'); + builder.append('</div><div class="wrapper"><div class="wra_body wra_body_server">'); + builder.append('<div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'); + builder.append('<div class="loading-icon"></div></div></div><div class="wra-btn-group">'); + builder.append('<div class="tip-text">' + options.lang.loadMoreData + '</div>') + builder.append('<span class="btn btn-primary btn-confirm">' + options.lang.confirmBtnText + '</span>') + builder.append('<span class="btn btn-default btn-cancel">' + options.lang.cancelBtnText + '</span></div></div>'); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height()) / 2; + } + o.dialog.css({ + left: ($(window).width() - o.dialog.width()) / 2 + "px", + top: options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler: o.dialog.find(".ued_title")}); + loadFilesFromServer(); + + } + + //绑定元素事件 + function bindEvent() { + + //关闭对话框 + G(".close_btn").on("click", function () { + o.close(); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function () { + options.callback(o.selectedList); + o.close(); + }); + G(".btn-cancel").on("click", function () { + o.close(); + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function () { + + if (this.scrollTop + this.clientHeight >= this.scrollHeight) { + loadFilesFromServer(); + } + }); + + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if (!options.list_url) { + G(".online .no-data").html('<span class="error">' + options.lang.noListUrl + '</span>').show(); + return false; + } + if (o.noRecord) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page: o.page, + marker: o.marker, + fileType: options.fileType + }, function (res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if (res.code == "000") { + if (!res.data[0]) { + G(".online .no-data").html(options.lang.noDataText).show(); + return; + } + o.page++; + o.marker = res.extra; //存储marker + appendFiles(res.data); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data) { + + $.each(data, function (idx, item) { + + var builder = new StringBuilder(); + builder.append('<li>'); + var extension = getFileExt(item.thumbURL); + if (extension == '') extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width + 'x' + item.height; //图片尺寸 + if ("jpg|jpeg|gif|png|bmp".indexOf(extension) == -1) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append('<span class="icon-placeholder icon-default icon-' + extension + '" data-src="' + item.oriURL + '"></span>'); + } else { + builder.append('<img src="' + item.thumbURL + '" data-src="' + item.oriURL + '" border="0">'); + } + + builder.append('<span class="ic"><em class="img-size">' + imgSize + '</em></span></li>'); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function () { + var src = $(this).prev().attr("data-src"); + var oldSrc = $('.selected:eq(0)').prev().attr("data-src"); + if (options.multiple) { + //多选 + if ($(this).hasClass("selected")) { + $(this).removeClass("selected"); + o.selectedList.remove(src); + } else { + $(this).addClass("selected"); + o.selectedList.push(src); + } + } else { + //这里暂时改成单选 + $('.selected:eq(0)').removeClass("selected"); //移除之前的选中的图片 + o.selectedList.remove(oldSrc); + $(this).addClass("selected"); + o.selectedList.push(src); + } + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + G(".imagelist .list").append($image); + }); + + } + + //获取文件后缀名 + function getFileExt(filename) { + if (!filename) return false; + var position = filename.lastIndexOf('.') + if (position != -1) { + return filename.substr(position + 1).toLowerCase(); + } + return false; + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if (size / 1048576 > 1) { + return (size / 1048576).toFixed(2) + "MB"; + } else { + return (size / 1024).toFixed(2) + "KB"; + } + + } + + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function () { + + var buffer = new Array(); + StringBuilder.prototype.append = function (str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/filemanager/FManager.min.js b/addons/nkeditor/assets/plugins/filemanager/FManager.min.js new file mode 100644 index 0000000..508bf23 --- /dev/null +++ b/addons/nkeditor/assets/plugins/filemanager/FManager.min.js @@ -0,0 +1,2 @@ +/* NKeditor 5.0.3 (2018-10-25), Copyright (C) r9it.com,*/ +!function(a){if(!window.applicationCache)throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!");a.fn.imageCrop=function(b,c){a(this).on("load",function(){var d,e,f,g,h=this.width/this.height,i=b/c;h>=i?(e=c,d=b*h,g=0,f=(d-b)/2):(d=b,e=c/h,f=0,g=0),a(this).css({position:"absolute",top:-g+"px",left:-f+"px",width:d+"px",height:e+"px"})})},a.fn.draggable=function(b){var c={handler:null};b=a.extend(c,b);var d=this;a(b.handler).mousedown(function(b){var c=b.pageX-a(d).position().left,e=b.pageY-a(d).position().top;a(document).mousemove(function(b){window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(),a(d).css({top:b.pageY-e+"px",left:b.pageX-c+"px"})})}).mouseup(function(){a(document).unbind("mousemove")})},void 0==Array.prototype.remove&&(Array.prototype.remove=function(a){for(var b=0;b<this.length;b++)if(this[b]==a){this.splice(b,1);break}}),void 0==Array.prototype.uinque&&(Array.prototype.uinque=function(){for(var a,b=[],c={},d=0;null!=(a=this[d]);d++)c[a]||(b.push(a),c[a]=!0);return b}),window.FManager=function(c){function d(){var d=new b;d.append('<div class="uedbody ke-animated"><div class="ued_title">'),d.append('<div class="uedbar"><span>'+c.lang.title+'</span></div><div class="close_btn icon" title="'+c.lang.closeText+'"></div>'),d.append('</div><div class="wrapper"><div class="wra_body wra_body_server">'),d.append('<div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'),d.append('<div class="loading-icon"></div></div></div><div class="wra-btn-group">'),d.append('<div class="tip-text">'+c.lang.loadMoreData+"</div>"),d.append('<span class="btn btn-primary btn-confirm">'+c.lang.confirmBtnText+"</span>"),d.append('<span class="btn btn-default btn-cancel">'+c.lang.cancelBtnText+"</span></div></div>"),k.dialog=a(d.toString()),a("body").append(k.dialog),0==c.top&&(c.top=(a(window).height()-k.dialog.height())/2),k.dialog.css({left:(a(window).width()-k.dialog.width())/2+"px",top:c.top+"px"}),k.dialog.draggable({handler:k.dialog.find(".ued_title")}),g()}function e(){f(".close_btn").on("click",function(){k.close()}),f(".btn-confirm").on("click",function(){c.callback(k.selectedList),k.close()}),f(".btn-cancel").on("click",function(){k.close()}),f(".imagelist").on("scroll",function(){this.scrollTop+this.clientHeight>=this.scrollHeight&&g()})}function f(a){return k.dialog.find(a)}function g(){return c.list_url?k.noRecord?!1:(f(".loading-icon").show(),void a.get(c.list_url,{page:k.page,marker:k.marker,fileType:c.fileType},function(a){if(f(".loading-icon").hide(),"000"==a.code){if(!a.data[0])return void f(".online .no-data").html(c.lang.noDataText).show();k.page++,k.marker=a.extra,h(a.data)}else f(".online .no-data").text(c.lang.noDataText).show(),k.noRecord=!0},"json")):(f(".online .no-data").html('<span class="error">'+c.lang.noListUrl+"</span>").show(),!1)}function h(c){a.each(c,function(c,d){var e=new b;e.append("<li>");var g=i(d.thumbURL);""==g&&(g="default"),g=g.toLowerCase();var h=d.width+"x"+d.height;-1=="jpg|jpeg|gif|png|bmp".indexOf(g)?(h=j(d.filesize),e.append('<span class="icon-placeholder icon-default icon-'+g+'" data-src="'+d.oriURL+'"></span>')):e.append('<img src="'+d.thumbURL+'" data-src="'+d.oriURL+'" border="0">'),e.append('<span class="ic"><em class="img-size">'+h+"</em></span></li>");var l=a(e.toString());l.find(".ic").on("click",function(){var b=a(this).prev().attr("data-src"),c=a(".selected:eq(0)").prev().attr("data-src");a(".selected:eq(0)").removeClass("selected"),k.selectedList.remove(c),a(this).addClass("selected"),k.selectedList.push(b)}),l.find("img").imageCrop(113,113),f(".imagelist .list").append(l)})}function i(a){if(!a)return!1;var b=a.lastIndexOf(".");return-1!=b?a.substr(b+1).toLowerCase():!1}function j(a){return a/1048576>1?(a/1048576).toFixed(2)+"MB":(a/1024).toFixed(2)+"KB"}c=a.extend({lang:{},list_url:null,data_type:"json",fileType:"image",top:20,callback:function(a){console.log(a)}},c);var k={};return k.dialog=null,k.selectedList=new Array,k.page=1,k.marker=null,k.noRecord=!1,k.close=function(){k.dialog.remove();try{JDialog.lock.hide()}catch(a){}"function"==typeof c.close&&c.close()},d(),e(),k};var b=function(){var a=new Array;b.prototype.append=function(b){a.push(b)},b.prototype.toString=function(){return a.join("")}}}(jQuery); \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/filemanager/css/filemanager.min.css b/addons/nkeditor/assets/plugins/filemanager/css/filemanager.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/addons/nkeditor/assets/plugins/filemanager/css/filemanager.min.css diff --git a/addons/nkeditor/assets/plugins/filemanager/filemanager.js b/addons/nkeditor/assets/plugins/filemanager/filemanager.js new file mode 100644 index 0000000..9f740f8 --- /dev/null +++ b/addons/nkeditor/assets/plugins/filemanager/filemanager.js @@ -0,0 +1,35 @@ +/** + * 文件服务器管理 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ +KindEditor.plugin('filemanager', function(K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+"filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css"); + } + + self.plugin.filemanagerDialog = function(options) { + + var clickFn = options.clickFn; + new FManager({ + list_url : fileManagerJson, //图片列表数据获取url + lang : lang, //语言包 + fileType : options.dirName, + top : self.dialogOffset, + callback : function(data) { + //console.log(data); + clickFn.call(this, data[0]); + } + }); + //return dialog; + } + +}); diff --git a/addons/nkeditor/assets/plugins/fixtoolbar/fixtoolbar.js b/addons/nkeditor/assets/plugins/fixtoolbar/fixtoolbar.js new file mode 100644 index 0000000..7a16fca --- /dev/null +++ b/addons/nkeditor/assets/plugins/fixtoolbar/fixtoolbar.js @@ -0,0 +1,35 @@ +/** + * Created by chenyihong on 14/12/4. + */ + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if(document.body.scrollTop - originY < 0){ + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } + +}); diff --git a/addons/nkeditor/assets/plugins/flash/flash.js b/addons/nkeditor/assets/plugins/flash/flash.js new file mode 100644 index 0000000..f26eaf3 --- /dev/null +++ b/addons/nkeditor/assets/plugins/flash/flash.js @@ -0,0 +1,165 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('flash', function(K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit : function() { + var html = [ + '<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //width + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ', + '</div>', + '</div>', + //height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType('.swf'), + width : width, + height : height, + quality : 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + + if (allowFlashUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=flash'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'flash', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedFlash().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); diff --git a/addons/nkeditor/assets/plugins/graft/css/images/addimg.png b/addons/nkeditor/assets/plugins/graft/css/images/addimg.png new file mode 100644 index 0000000..03a8713 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/addimg.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/blur.png b/addons/nkeditor/assets/plugins/graft/css/images/blur.png new file mode 100644 index 0000000..6307d27 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/blur.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/brush.png b/addons/nkeditor/assets/plugins/graft/css/images/brush.png new file mode 100644 index 0000000..efa6fdb Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/brush.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/delimg.png b/addons/nkeditor/assets/plugins/graft/css/images/delimg.png new file mode 100644 index 0000000..5a892e4 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/delimg.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/delimgH.png b/addons/nkeditor/assets/plugins/graft/css/images/delimgH.png new file mode 100644 index 0000000..2f0c5c9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/delimgH.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/empty.png b/addons/nkeditor/assets/plugins/graft/css/images/empty.png new file mode 100644 index 0000000..0375196 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/empty.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/emptyH.png b/addons/nkeditor/assets/plugins/graft/css/images/emptyH.png new file mode 100644 index 0000000..838ca72 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/emptyH.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/eraser.png b/addons/nkeditor/assets/plugins/graft/css/images/eraser.png new file mode 100644 index 0000000..63e87ce Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/eraser.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/init.png b/addons/nkeditor/assets/plugins/graft/css/images/init.png new file mode 100644 index 0000000..c2eb7be Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/init.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/redo.png b/addons/nkeditor/assets/plugins/graft/css/images/redo.png new file mode 100644 index 0000000..12cd9bb Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/redo.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/redoH.png b/addons/nkeditor/assets/plugins/graft/css/images/redoH.png new file mode 100644 index 0000000..d9f33d3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/redoH.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/save.png b/addons/nkeditor/assets/plugins/graft/css/images/save.png new file mode 100644 index 0000000..2ab611e Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/save.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/scale.png b/addons/nkeditor/assets/plugins/graft/css/images/scale.png new file mode 100644 index 0000000..935a3f3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/scale.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/scaleH.png b/addons/nkeditor/assets/plugins/graft/css/images/scaleH.png new file mode 100644 index 0000000..72e64a9 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/scaleH.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/size.png b/addons/nkeditor/assets/plugins/graft/css/images/size.png new file mode 100644 index 0000000..8366845 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/size.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/undo.png b/addons/nkeditor/assets/plugins/graft/css/images/undo.png new file mode 100644 index 0000000..084c7cc Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/undo.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/images/undoH.png b/addons/nkeditor/assets/plugins/graft/css/images/undoH.png new file mode 100644 index 0000000..fde7eb3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/graft/css/images/undoH.png differ diff --git a/addons/nkeditor/assets/plugins/graft/css/scrawl.css b/addons/nkeditor/assets/plugins/graft/css/scrawl.css new file mode 100644 index 0000000..f53a5d7 --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/css/scrawl.css @@ -0,0 +1,204 @@ +/*common +*/ +body { + margin: 0; } + body a { + text-decoration: none; } + body em { + font-style: normal; } + body .border_style { + border: 1px solid #ccc; + border-radius: 5px; + box-shadow: 2px 2px 5px #d3d6da; } + body em { + font-style: normal; } + body .ke-dialog-body { + padding-top: 8px; } + body .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; } + body .scrawl-main .hot { + float: left; } + body .scrawl-main .hot .drawBoard { + position: relative; + cursor: crosshair; } + body .scrawl-main .hot .drawBoard .brushBorad { + position: absolute; + left: 0; + top: 0; + z-index: 998; } + body .scrawl-main .hot .drawBoard .picBoard { + border: none; + text-align: center; + cursor: default; } + body .scrawl-main .hot .operateBar { + margin-top: 10px; + font-size: 12px; + text-align: center; } + body .scrawl-main .hot .operateBar span { + margin-left: 10px; } + body .scrawl-main .hot .operateBar button { + background: #e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor: default; } + body .scrawl-main .hot .operateBar .prevStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/undo.png"); } + body .scrawl-main .hot .operateBar .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .prevStep.active .icon { + background-image: url("images/undoH.png"); } + body .scrawl-main .hot .operateBar .nextStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/redo.png"); } + body .scrawl-main .hot .operateBar .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .nextStep.active .icon { + background-image: url("images/redoH.png"); } + body .scrawl-main .hot .operateBar .clearBoard { + cursor: default; } + body .scrawl-main .hot .operateBar .clearBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/empty.png"); } + body .scrawl-main .hot .operateBar .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .clearBoard.active .icon { + background-image: url("images/emptyH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/scale.png"); + cursor: default; } + body .scrawl-main .hot .operateBar .scaleBoard .iconH { + background-image: url("images/scaleH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar { + float: right; + width: 110px; + height: 320px; + overflow: hidden; } + body .scrawl-main .drawToolbar .brushIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/brush.png"); } + body .scrawl-main .drawToolbar .eraserIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/eraser.png"); } + body .scrawl-main .drawToolbar .blurIcon { + display: inline-block; + width: 16px; + height: 16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; } + body .scrawl-main .drawToolbar .colorBar { + margin-top: 10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; } + body .scrawl-main .drawToolbar .colorBar span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border: 1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; } + body .scrawl-main .drawToolbar .colorBar .active { + border-color: #FF0000; + box-shadow: 2px 2px 5px #d3d6da; } + body .scrawl-main .drawToolbar .sectionBar { + margin-top: 15px; + font-size: 12px; + text-align: center; } + body .scrawl-main .drawToolbar .sectionBar a { + display: inline-block; + width: 10px; + height: 12px; + color: #888; + text-indent: -999px; + opacity: 0.3; } + body .scrawl-main .drawToolbar .sectionBar .size1 { + background: url("images/size.png") 1px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size2 { + background: url("images/size.png") -10px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size3 { + background: url("images/size.png") -22px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size4 { + background: url("images/size.png") -35px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .icon { + position: relative; + top: 3px; } + body .scrawl-main .drawToolbar .sectionBar .clearSetting .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/init.png"); + background-size: 16px 16px; } + body .scrawl-main .drawToolbar .sectionBar .addImgH { + position: relative; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/addimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .upload { + position: absolute; + left: 18px; + top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/delimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .icon { + background-image: url("images/delimgH.png"); } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .text { + color: #000; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .saveImg { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .saveImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/save.png"); + background-size: 18px 18px; + cursor: default; } + body .scrawl-main .drawToolbar #clearSetting { + cursor: pointer; } + +/*# sourceMappingURL=scrawl.css.map */ diff --git a/addons/nkeditor/assets/plugins/graft/css/scrawl.css.map b/addons/nkeditor/assets/plugins/graft/css/scrawl.css.map new file mode 100644 index 0000000..6143e2c --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/css/scrawl.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["scrawl.scss"], +"names": [], +"file": "scrawl.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/graft/css/scrawl.scss b/addons/nkeditor/assets/plugins/graft/css/scrawl.scss new file mode 100644 index 0000000..fc23a3e --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/css/scrawl.scss @@ -0,0 +1,284 @@ +/*common +*/ +body { + + margin: 0; + a{text-decoration: none;} + em{font-style: normal;} + + .border_style{ + border: 1px solid #ccc; + border-radius: 5px; + box-shadow:2px 2px 5px #d3d6da; + } + em {font-style: normal;} + + .ke-dialog-body { + padding-top: 8px; + } + .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; + + + // 绘图区域 + .hot { + float:left; + + .drawBoard{ + position: relative; + cursor: crosshair; + + .brushBorad{ + position: absolute; + left:0; + top:0; + z-index: 998; + } + + .picBoard{ + border: none; + text-align: center; + cursor: default; + } + } + + .operateBar{ + margin-top:10px; + font-size:12px; + text-align: center; + + span {margin-left: 10px;} + + button { + background:#e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor:default; + } + + .prevStep { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/undo.png'); + } + } + + .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/undoH.png'); + } + + } + + .nextStep { + .icon { + display: inline-block; + width:16px; + height:16px; + background-image: url('images/redo.png'); + } + } + + .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/redoH.png'); + } + } + + .clearBoard { + cursor: default; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/empty.png'); + } + + } + + .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/emptyH.png'); + } + } + + .scaleBoard { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/scale.png'); + cursor:default;} + + .iconH { + background-image: url('images/scaleH.png'); + } + + .text{ + color:#ccc; + cursor:default;} + } + + + } + } + + // 绘图工具 + .drawToolbar { + float:right; + width:110px; + height:320px; + overflow: hidden; + + .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')} + + .blurIcon { + display: inline-block; + width:16px;height:16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; + } + + .colorBar { + margin-top:10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; + + span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border:1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; + } + + .active { + border-color: #FF0000; + box-shadow:2px 2px 5px #d3d6da; + } + } + + .sectionBar { + margin-top:15px; + font-size: 12px; + text-align: center; + + 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;} + + .icon { + position: relative; + top:3px; + } + .clearSetting { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/init.png'); + background-size: 16px 16px; + } + } + + .addImgH { + position: relative; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/addimg.png'); + cursor:default; + } + + .upload { + position: absolute; + left: 18px;top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; + } + } + + .removeImg { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/delimg.png'); + cursor:default; + } + + .text{color:#ccc;cursor:default;} + } //end removeImg + + .removeImg.active { + cursor: pointer; + + .icon { + background-image: url('images/delimgH.png'); + } + + .text{color:#000;cursor:default;} + } //end removeImg + + //保存图片 + .saveImg { + cursor: pointer; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/save.png'); + background-size: 18px 18px; + cursor:default; + } + } + + } + + #clearSetting {cursor: pointer;} + } + } + + +} + + diff --git a/addons/nkeditor/assets/plugins/graft/graft.js b/addons/nkeditor/assets/plugins/graft/graft.js new file mode 100644 index 0000000..0102a88 --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/graft.js @@ -0,0 +1,189 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('graft', function(K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath+"graft/scrawl.js"); + } + + self.plugin.graftDialog = function(options) { + var clickFn = options.clickFn; + var html = [ + '<div class="scrawl-main" id="scrawl-main">', + //绘图区域 + '<div class="hot">', + '<div class="drawBoard border_style">', + '<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>', + '<div class="picBoard" id="picBoard" style=""></div>', + '</div>', + '<div class="operateBar">', + '<button id="J_prevStep" class="prevStep" title="上一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_nextStep" class="nextStep" title="下一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_clearBoard" class="clearBoard" title="清空">', + '<em class="icon"></em>', + '</button>', + '</div>', + '</div>', + //绘图区域 end + + //工具栏 + '<div class="drawToolbar border_style">', + '<div class="colorBar">', + '<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>', + '<span data-color="#003366" style="background:#003366;"></span>', + '<span data-color="#993333" style="background:#993333;"></span>', + '<span data-color="#FF9900" style="background:#FF9900;"></span>', + '<span data-color="#0000CC" style="background:#0000CC;"></span>', + '<span data-color="#CC3333" style="background:#CC3333;"></span>', + + '<span data-color="#F4D03F" style="background:#641E16;"></span>', + '<span data-color="#4A235A" style="background:#4A235A;"></span>', + '<span data-color="#009966" style="background:#009966;"></span>', + '<span data-color="#ffff00" style="background:#ffff00;"></span>', + '<span data-color="#7D6608" style="background:#7D6608;"></span>', + '<span data-color="#FF33CC" style="background:#FF33CC;"></span>', + + '<span data-color="#990066" style="background:#990066;"></span>', + '<span data-color="#ffffff" style="background:#ffffff;"></span>', + '<span data-color="#9bbb59" style="background:#9bbb59;"></span>', + '<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>', + '<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>', + '<span data-color="#CC99CC" style="background:#CC99CC;"></span>', + '</div>', + + //笔刷设置 + '<div class="sectionBar">', + '<em class="brushIcon"></em>', + '<a href="javascript:void(0)" class="brush-size size1">1</a>', + '<a href="javascript:void(0)" class="brush-size size2">3</a>', + '<a href="javascript:void(0)" class="brush-size size3">5</a>', + '<a href="javascript:void(0)" class="brush-size size4">7</a>', + '</div>', + '<div class="sectionBar">', + '<em class="eraserIcon"></em>', + '<a href="javascript:void(0)" class="eraser-size size1">5</a>', + '<a href="javascript:void(0)" class="eraser-size size2">10</a>', + '<a href="javascript:void(0)" class="eraser-size size3">15</a>', + '<a href="javascript:void(0)" class="eraser-size size4">20</a>', + '</div>', + '<div class="sectionBar">', + '<em class="blurIcon"></em>', + '<a href="javascript:void(0)" class="blur-size size1">2</a>', + '<a href="javascript:void(0)" class="blur-size size2">4</a>', + '<a href="javascript:void(0)" class="blur-size size3">6</a>', + '<a href="javascript:void(0)" class="blur-size size4">8</a>', + '</div>', + //end 笔刷设置 + '<div class="sectionBar">', + '<span id="clearSetting" class="clearSetting">', + '<em class="icon"></em>', + '<em class="text">初始化设置</em>', + '</span>', + '</div>', + '<div class="sectionBar">', + '<div id="J_addImg" class="addImgH">', + '<em class="icon"></em>', + '<em class="text">添加背景</em>', + '<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>', + '</div>', + '</div>', + '<div class="sectionBar">', + '<span id="J_removeImg" class="removeImg">', + '<em class="icon"></em>', + '<em class="text">删除背景</em>', + '</span>', + '</div>', + '</div>' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 750, + height : 440, + title : self.lang(name), + body : html, + yesBtn : { + name : lang.btnText, + click : function(e) { + + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function(data) { + //上传涂鸦到服务器 + if (allowUploadGraft) { + dialog.showLoading(self.lang('uploadLoading')); + $.post(uploadJson, { + img_base64_data : data, + fileType : "image", + base64 : 1 + }, function(res) { + + dialog.hideLoading(); + if (res.code == "000") { + K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + + }, "json"); + + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + + }); + + } + } + }); + //console.log(div); + + //var urlBox = K('[name="url"]', div), + // viewServerBtn = K('[name="viewServer"]', div), + // titleBox = K('[name="title"]', div); + + var canvas = new Canvas({ + canvasId : "canvas-borad", + width : 600, + height : 320 + }); + + + + }; + + self.clickToolbar(name, function() { + self.plugin.graftDialog({ + clickFn : function(url) { + self.exec('insertimage', url); + } + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/graft/index.html b/addons/nkeditor/assets/plugins/graft/index.html new file mode 100644 index 0000000..9b684f9 --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/index.html @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<html> +<head> + <title>在线涂鸦工具</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="robots" content="noindex, nofollow"/> + <link rel="stylesheet" type="text/css" href="css/scrawl.css"> +</head> +<body> +<div class="scrawl-main" id="scrawl-main"> + <div class="hot"> + <div class="drawBoard border_style"> + <canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas> + <div class="picBoard" id="picBoard" style=""></div> + </div> + <div class="operateBar"> + <button id="J_prevStep" class="prevStep" title="上一步"> + <em class="icon"></em> + </button> + <button id="J_nextStep" class="nextStep" title="下一步"> + <em class="icon"></em> + </button> + <button id="J_clearBoard" class="clearBoard" title="清空"> + <em class="icon"></em> + </button> + <!--<span id="J_sacleBoard" class="scaleBoard">--> + <!--<em class="icon"></em>--> + <!--<em class="text">缩放背景</em>--> + <!--</span>--> + </div> + </div> + <div class="drawToolbar border_style"> + <div class="colorBar"> + <span data-color="#0099CC" style="background:#0099CC;" class="active"></span> + <span data-color="#003366" style="background:#003366;"></span> + <span data-color="#993333" style="background:#993333;"></span> + <span data-color="#FF9900" style="background:#FF9900;"></span> + <span data-color="#0000CC" style="background:#0000CC;"></span> + <span data-color="#CC3333" style="background:#CC3333;"></span> + + <span data-color="#F4D03F" style="background:#641E16;"></span> + <span data-color="#4A235A" style="background:#4A235A;"></span> + <span data-color="#009966" style="background:#009966;"></span> + <span data-color="#ffff00" style="background:#ffff00;"></span> + <span data-color="#7D6608" style="background:#7D6608;"></span> + <span data-color="#FF33CC" style="background:#FF33CC;"></span> + + <span data-color="#c00000" style="background:#641E16;"></span> + <span data-color="#ffffff" style="background:#ffffff;"></span> + <span data-color="#9bbb59" style="background:#9bbb59;"></span> + <span data-color="#CCFFFF" style="background:#CCFFFF;"></span> + <span data-color="#FFCCCC" style="background:#FFCCCC;"></span> + <span data-color="#CC99CC" style="background:#CC99CC;"></span> + </div> + + <div class="sectionBar"> + <em class="brushIcon"></em> + <a href="javascript:void(0)" class="brush-size size1">1</a> + <a href="javascript:void(0)" class="brush-size size2">3</a> + <a href="javascript:void(0)" class="brush-size size3">5</a> + <a href="javascript:void(0)" class="brush-size size4">7</a> + </div> + <div class="sectionBar"> + <em class="eraserIcon"></em> + <a href="javascript:void(0)" class="eraser-size size1">5</a> + <a href="javascript:void(0)" class="eraser-size size2">10</a> + <a href="javascript:void(0)" class="eraser-size size3">15</a> + <a href="javascript:void(0)" class="eraser-size size4">20</a> + </div> + + <div class="sectionBar"> + <em class="blurIcon"></em> + <a href="javascript:void(0)" class="blur-size size1">2</a> + <a href="javascript:void(0)" class="blur-size size2">4</a> + <a href="javascript:void(0)" class="blur-size size3">6</a> + <a href="javascript:void(0)" class="blur-size size4">8</a> + </div> + + <div class="sectionBar"> + <span id="clearSetting" class="clearSetting"> + <em class="icon"></em> + <em class="text">初始化设置</em> + </span> + </div> + + <div class="sectionBar"> + <div id="J_addImg" class="addImgH"> + <em class="icon"></em> + <em class="text">添加背景</em> + <input type="file" class="upload" id="J_canvas_bg" + accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/> + + </div> + </div> + + <div class="sectionBar"> + <span id="J_removeImg" class="removeImg"> + <em class="icon"></em> + <em class="text">删除背景</em> + </span> + </div> + + <div class="sectionBar"> + <span id="J_saveImg" class="saveImg"> + <em class="icon"></em> + <em class="text">保存图片</em> + </span> + </div> + + </div> +</div> + +<script type="text/javascript" src="scrawl/libs/jquery.min.js"></script> +<script type="text/javascript" src="scrawl.js"></script> +<script> + new Canvas({ + canvasId : "canvas-borad", + width : 700, + height : 400, + save : function(data) { + $.post("upload.php", {imgBase64: data}, function(res) { + if (res.code == "000") { + alert("图片保存成功!"); + location.href = res.url; + } else { + alert(res.url); + } + }, "json"); + } + }); +</script> + +</body> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/graft/scrawl.js b/addons/nkeditor/assets/plugins/graft/scrawl.js new file mode 100644 index 0000000..fe13f07 --- /dev/null +++ b/addons/nkeditor/assets/plugins/graft/scrawl.js @@ -0,0 +1,262 @@ +/** + * Created by yangjian on 17-9-18. + */ +(function($) { + + // 设置元素可用状态 + $.fn.enable = function() { + $(this).addClass("active"); + $(this).removeAttr("disabled"); + } + + // 设置元素不可用状态 + $.fn.disable = function() { + $(this).removeClass("active"); + $(this).attr("disabled", true); + } + + var Canvas = function(options) { + + var configs = { + width : 360, + height : 300 + }; //默认配置 + options = options || {}; + $.extend(configs, options); + + var canvas = $("#"+configs.canvasId)[0]; //画布 + canvas.width = configs.width; + canvas.height = configs.height; + var context = canvas.getContext("2d"); //绘图环境 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + //设置默认颜色 + setColor(); + var $prevBtn = $("#J_prevStep"); //上一步 + var $nextBtn = $("#J_nextStep"); //下一步 + var $clearBtn = $("#J_clearBoard"); //清空画板 + var drawing = false; //是否正在绘制 + var erasering = false; //是否正在擦除 + var prevSteps = []; //返回上一步操作集合 + var nextSteps = []; //恢复下一步操作集合 + var o = {}; + + $("#picBoard").css({ + width : configs.width + "px", + height : configs.height + "px" + }); + + // 事件绑定 + canvas.onmousedown = startDrawing; + canvas.onmouseup = stopDrawing; + canvas.onmouseout = stopDrawing; + canvas.onmousemove = doDrawing; + $prevBtn.on("click", gotoPrevStep); + $nextBtn.on("click", gotoNextStep); + $clearBtn.on("click", clearBoard); + + // 清空设置 + $("#clearSetting").on("click", function() { + context.lineWidth = 1; + setColor($(".colorBar span:first").data("color")); + context.shadowBlur = 0; + alert("画笔已重新初始化,请重新配置画笔。"); + }); + + //上传背景图片 + $("#J_canvas_bg").on("change", function() { + + if ($("#picBoard img").length > 0) { + $("#picBoard img:eq(0)").attr("src", window.URL.createObjectURL(this.files[0])); + return; + } + var $img = '<img src="'+window.URL.createObjectURL(this.files[0])+'" width="'+configs.width+'" height="'+configs.height+'" />'; + $("#picBoard").append($img); + + // 激活删除背景按钮 + $("#J_removeImg").enable(); + + }); + + // 删除背景图片 + $("#J_removeImg").on("click", function() { + $("#picBoard").empty(); + $(this).disable(); + }); + + //保存图片 + $('#J_saveImg').on("click", saveImage); + + // 设置笔刷大小 + $("#scrawl-main .brush-size").on("click", function() { + + context.restore(); //恢复到canvas的上一个状态 + context.lineWidth = parseInt($(this).text()); + erasering = false; + + }); + + // 设置笔触虚化 + $("#scrawl-main .blur-size").on("click", function() { + context.shadowBlur = parseInt($(this).text()); + }); + + // 橡皮擦功能 + $("#scrawl-main .eraser-size").on("click", function() { + + if (erasering == true) { + return; + } + erasering = true; + context.save(); //保存canvas状态 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + context.lineWidth = 10; + context.globalCompositeOperation = "destination-out"; + + }); + + //设置颜色 + $("#scrawl-main .colorBar span").on("click",function() { + + $("#scrawl-main .colorBar .active").removeClass("active"); + $(this).addClass("active"); + setColor($(this).data("color")); + }); + + // 开始绘制 + function startDrawing(e) { + drawing = true; + //记录上一步的数据 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + // 创建一个新的绘图路径 + context.beginPath(); + // 把画笔移动到鼠标位置 + var offset = $(canvas).offset(); + context.moveTo(e.pageX - offset.left, e.pageY - offset.top); + } + + // 停止绘制 + function stopDrawing() { + + drawing = false; + //清空下一步的数据集合,从新开始记录 + nextSteps = []; + $nextBtn.disable(); + if (prevSteps.length == 1) { + $prevBtn.enable(); + $clearBtn.enable(); + } + } + + //绘制图像 + function doDrawing(e) { + if (drawing) { + // 找到鼠标最新位置 + var offset = $(canvas).offset(); + var x = e.pageX - offset.left; + var y = e.pageY - offset.top; + // 画一条直线到鼠标最新位置 + context.lineTo(x, y); + context.stroke(); + } + } + + /** + * 返回上一步操作 + */ + function gotoPrevStep() { + if (prevSteps.length > 0) { + //保存当前状态到下一步的操作历史库 + nextSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var popData = prevSteps.pop(); + context.putImageData(popData, 0, 0); + $nextBtn.enable(); + + if (prevSteps.length == 0) { + $prevBtn.disable(); + } + } + } + + /** + * 恢复下一步操作 + */ + function gotoNextStep() { + if (nextSteps.length > 0) { + //保存当前状态到上一步的操作历史库 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var imgData = nextSteps.pop(); + context.putImageData(imgData, 0, 0); + $prevBtn.enable(); + + if (nextSteps.length == 0) { + $nextBtn.disable(); + } + } + } + + /** + * 清空画板 + */ + function clearBoard() { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + prevSteps = []; + nextSteps = []; + + $prevBtn.disable(); + $nextBtn.disable(); + $clearBtn.disable(); + } + + /** + * 设置画笔颜色 + * @param color + */ + function setColor(color) { + if (!color) { + color = $(".colorBar .active:eq(0)").data("color"); + } + context.strokeStyle = color; + context.shadowColor = color; + } + + /** + * 获取图片 base64 编码 + */ + function saveImage(callback) { + + if ($("#picBoard img").length > 0) { + var image = new Image(); + image.src = $("#picBoard img:eq(0)").attr("src"); + image.onload = function() { + context.save(); + context.shadowBlur = 0; + context.shadowColor = '#FFF'; + context.globalCompositeOperation = "destination-atop"; + context.drawImage(this, 0, 0, configs.width, configs.height); + context.restore(); + + callback(canvas.toDataURL("image/png")); + } + + } else { + callback(canvas.toDataURL("image/png")); + } + } + + + //要导出的API + o.nextStep = gotoNextStep; + o.prevStep = gotoNextStep; + o.setColor = setColor; + o.save = saveImage; + o.isEmpty = function() { + return prevSteps.length == 0; + } + return o; + } + + + window.Canvas = Canvas; +})(jQuery); \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/image/image.js b/addons/nkeditor/assets/plugins/image/image.js new file mode 100644 index 0000000..dc4848a --- /dev/null +++ b/addons/nkeditor/assets/plugins/image/image.js @@ -0,0 +1,340 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('image', function(K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + + self.plugin.imageDialog = function(options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-dialog-content-inner">', + //tabs + '<div class="tabs"></div>', + //remote image - start + '<div class="tab1" style="display:none;">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteUrl" class="row-left">' + lang.remoteUrl + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //size + '<div class="ke-dialog-row ke-clearfix ">', + '<label for="remoteWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">'+lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />', + '</div>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> ' + + '<img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" /></span>', + + ' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> ' + + '<img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" /></span>', + + ' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> ' + + '<img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" /></span>', + '</div>', + '</div>', + //title + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteTitle" class="row-left">' + lang.imgTitle + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />', + '</div>', + '</div>', + '</div>', + //remote image - end + //local upload - start + '<div class="tab2" style="display:none;">', + '<iframe name="' + target + '" style="display:none;"></iframe>', + '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'fileType=image') + '">', + //file + '<div class="ke-dialog-row ke-clearfix">', + hiddenElements.join(''), + '<label class="row-left">' + lang.localUrl + ':</label>', + '<div class="row-right">', + '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />', + '</div>', + '</div>', + '</form>', + '</div>', + //local upload - end + '</div>' + ].join(''); + + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name : name, + width : dialogWidth, + height : dialogHeight, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319 + if (dialog.isLoading) { + return; + } + // insert local image + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + // insert remote image + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove : function() { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src : K('.tabs', div), + afterSelect : function(i) {} + }); + tabs.add({ + title : lang.remoteImage, + panel : K('.tab1', div) + }); + tabs.add({ + title : lang.localImage, + panel : K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + form : K('.ke-form', div), + target : target, + width: 60, + afterUpload : function(data) { + + dialog.hideLoading(); + if (data.code == "000") { + + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row ke-clearfix #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'image', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + refreshBtn.click(function(e) { + var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({ + position : 'absolute', + visibility : 'hidden', + top : 0, + left : '-1000px' + }); + tempImg.bind('load', function() { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function(e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function(e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function() { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit : function() { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl : img ? img.attr('data-ke-src') : 'http://', + imageWidth : img ? img.width() : '', + imageHeight : img ? img.height() : '', + imageTitle : img ? img.attr('title') : '', + imageAlign : img ? img.attr('align') : '', + showRemote : allowImageRemote, + showLocal : allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn : function(url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete' : function() { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); diff --git a/addons/nkeditor/assets/plugins/image/images/align_left.gif b/addons/nkeditor/assets/plugins/image/images/align_left.gif new file mode 100644 index 0000000..ab17f56 Binary files /dev/null and b/addons/nkeditor/assets/plugins/image/images/align_left.gif differ diff --git a/addons/nkeditor/assets/plugins/image/images/align_right.gif b/addons/nkeditor/assets/plugins/image/images/align_right.gif new file mode 100644 index 0000000..e8ebe6a Binary files /dev/null and b/addons/nkeditor/assets/plugins/image/images/align_right.gif differ diff --git a/addons/nkeditor/assets/plugins/image/images/align_top.gif b/addons/nkeditor/assets/plugins/image/images/align_top.gif new file mode 100644 index 0000000..d8826a5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/image/images/align_top.gif differ diff --git a/addons/nkeditor/assets/plugins/image/images/refresh.png b/addons/nkeditor/assets/plugins/image/images/refresh.png new file mode 100644 index 0000000..77e12d1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/image/images/refresh.png differ diff --git a/addons/nkeditor/assets/plugins/insertfile/insertfile.js b/addons/nkeditor/assets/plugins/insertfile/insertfile.js new file mode 100644 index 0000000..12d6e27 --- /dev/null +++ b/addons/nkeditor/assets/plugins/insertfile/insertfile.js @@ -0,0 +1,141 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('insertfile', function(K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function(options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //title + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keTitle" class="row-left">' + lang.title + ':</label>', + '<div class="row-right">', + '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>', + '</div>', + '</div>', + //form end + '</form>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + + if (allowFileUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + url : K.addParam(uploadJson, 'fileType=file'), + extraParams : extraParams, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + viewType : 'LIST', + dirName : 'file', + clickFn : function(url) { + //console.log(url); + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function() { + self.plugin.fileDialog({ + clickFn : function(url, title) { + var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>'; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/lineheight/lineheight.js b/addons/nkeditor/assets/plugins/lineheight/lineheight.js new file mode 100644 index 0000000..ae679d7 --- /dev/null +++ b/addons/nkeditor/assets/plugins/lineheight/lineheight.js @@ -0,0 +1,38 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('lineheight', function(K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name : name, + width : 150 + }); + K.each(lang.lineHeight, function(i, row) { + K.each(row, function(key, val) { + menu.addItem({ + title : val, + checked : curVal === key, + click : function() { + self.cmd.toggle('<span style="line-height:' + key + ';"></span>', { + span : '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/link/link.js b/addons/nkeditor/assets/plugins/link/link.js new file mode 100644 index 0000000..9a42fbd --- /dev/null +++ b/addons/nkeditor/assets/plugins/link/link.js @@ -0,0 +1,71 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('link', function(K) { + var self = this, name = 'link'; + self.plugin.link = { + edit : function() { + var lang = self.lang(name + '.'), + html = ['<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />', + '</div>', + '</div>', + //type + '<div class="ke-dialog-row ke-clearfix"">', + '<label for="keType" class="row-left">' + lang.linkType + ':</label>', + '<div class="row-right">', + '<select id="keType" class="ke-select" name="type"></select>', + '</div>', + '</div>', + '</div>'].join(""), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); diff --git a/addons/nkeditor/assets/plugins/map/map.html b/addons/nkeditor/assets/plugins/map/map.html new file mode 100644 index 0000000..fb27555 --- /dev/null +++ b/addons/nkeditor/assets/plugins/map/map.html @@ -0,0 +1,57 @@ +<!doctype html> +<html> + <head> + <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> + <style> + html { height: 100% } + body { height: 100%; margin: 0; padding: 0; background-color: #FFF } + #map_canvas { height: 100% } + </style> + <script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=zh_CN"></script> + <script> + var map, geocoder; + function initialize() { + var latlng = new google.maps.LatLng(-34.397, 150.644); + var options = { + zoom: 11, + center: latlng, + disableDefaultUI: true, + panControl: true, + zoomControl: true, + mapTypeControl: true, + scaleControl: true, + streetViewControl: false, + overviewMapControl: true, + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + map = new google.maps.Map(document.getElementById("map_canvas"), options); + geocoder = new google.maps.Geocoder(); + geocoder.geocode({latLng: latlng}, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + if (results[3]) { + parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address; + } + } + }); + } + function search(address) { + if (!map) return; + geocoder.geocode({address : address}, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + map.setZoom(11); + map.setCenter(results[0].geometry.location); + var marker = new google.maps.Marker({ + map: map, + position: results[0].geometry.location + }); + } else { + alert("Invalid address: " + address); + } + }); + } + </script> + </head> + <body onload="initialize();"> + <div id="map_canvas" style="width:100%; height:100%"></div> + </body> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/map/map.js b/addons/nkeditor/assets/plugins/map/map.js new file mode 100644 index 0000000..5290875 --- /dev/null +++ b/addons/nkeditor/assets/plugins/map/map.js @@ -0,0 +1,137 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// Google Maps: http://code.google.com/apis/maps/index.html + +KindEditor.plugin('map', function(K) { + var self = this, name = 'map', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var html = ['<div style="padding:10px 20px;">', + '<div class="ke-dialog-row">', + lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />', + '</span>', + '</div>', + '<div class="ke-map" style="width:558px;height:360px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 600, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var geocoder = win.geocoder, + map = win.map, + center = map.getCenter().lat() + ',' + map.getCenter().lng(), + zoom = map.getZoom(), + maptype = map.getMapTypeId(), + url = 'http://maps.googleapis.com/maps/api/staticmap'; + url += '?center=' + encodeURIComponent(center); + url += '&zoom=' + encodeURIComponent(zoom); + url += '&size=558x360'; + url += '&maptype=' + encodeURIComponent(maptype); + url += '&markers=' + encodeURIComponent(center); + url += '&language=' + self.langType; + url += '&sensor=false'; + self.exec('insertimage', url).hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + win, doc; + var iframeHtml = ['<!doctype html><html><head>', + '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />', + '<style>', + ' html { height: 100% }', + ' body { height: 100%; margin: 0; padding: 0; background-color: #FFF }', + ' #map_canvas { height: 100% }', + '</style>', + '<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>', + '<script>', + 'var map, geocoder;', + 'function initialize() {', + ' var latlng = new google.maps.LatLng(31.230393, 121.473704);', + ' var options = {', + ' zoom: 11,', + ' center: latlng,', + ' disableDefaultUI: true,', + ' panControl: true,', + ' zoomControl: true,', + ' mapTypeControl: true,', + ' scaleControl: true,', + ' streetViewControl: false,', + ' overviewMapControl: true,', + ' mapTypeId: google.maps.MapTypeId.ROADMAP', + ' };', + ' map = new google.maps.Map(document.getElementById("map_canvas"), options);', + ' geocoder = new google.maps.Geocoder();', + ' geocoder.geocode({latLng: latlng}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' if (results[3]) {', + ' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;', + ' }', + ' }', + ' });', + '}', + 'function search(address) {', + ' if (!map) return;', + ' geocoder.geocode({address : address}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' map.setZoom(11);', + ' map.setCenter(results[0].geometry.location);', + ' var marker = new google.maps.Marker({', + ' map: map,', + ' position: results[0].geometry.location', + ' });', + ' } else {', + ' alert("Invalid address: " + address);', + ' }', + ' });', + '}', + '</script>', + '</head>', + '<body onload="initialize();">', + '<div id="map_canvas" style="width:100%; height:100%"></div>', + '</body></html>'].join('\n'); + // TODO:用doc.write(iframeHtml)方式加载时,在IE6上第一次加载报错,暂时使用src方式 + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>'); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + //doc.open(); + //doc.write(iframeHtml); + //doc.close(); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/media/media.js b/addons/nkeditor/assets/plugins/media/media.js new file mode 100644 index 0000000..fab7faa --- /dev/null +++ b/addons/nkeditor/assets/plugins/media/media.js @@ -0,0 +1,186 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('media', function(K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + + self.plugin.media = { + edit : function() { + var html = [ + '<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '<div>支持优酷、爱奇艺、土豆、腾讯视频、56等视频网站【<span style="color:green">通用代码</span>】', + '</div>', + '</div>', + '</div>', + //width + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />', + '</div>', + '</div>', + //height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />', + '</div>', + '</div>', + //autostart + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAutostart" class="row-left">' + lang.autostart + ':</label>', + '<div class="row-right">', + '<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + height : 260, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + var match = url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/); + if(!match) { + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if(!match) { + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType(url), + width: width, + height: height, + autostart: autostartBox[0].checked ? 'true' : 'false', + loop: 'true' + }); + } else { + var html = '<iframe src="' + match[3] + '" frameborder="0" style="width:' + width + 'px;height:' + height + 'px;"></iframe>'; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + + if (allowMediaUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=media'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'media', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "280px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedMedia().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); diff --git a/addons/nkeditor/assets/plugins/multiimage/BUpload.js b/addons/nkeditor/assets/plugins/multiimage/BUpload.js new file mode 100644 index 0000000..a314e0c --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/BUpload.js @@ -0,0 +1,625 @@ +/** + * HTML5上传插件 + * @site https://git.oschina.net/blackfox/ajaxUpload + * @author yangjian<yangjian102621@gmail.com> + * @version 1.0.1 + */ +(function($) { + + //判断浏览器是否支持html5 + // if ( !window.applicationCache ) + // throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function(__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width/this.height; + var cropRate = __width/__height; + if ( orgRate >= cropRate ) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width)/2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position" : "absolute", + top : -top + "px", + left : -left + "px", + width : width + "px", + height : height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function(options) { + var defaults = { + handler : null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function(e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function(e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); + $(__self).css({ + 'top' : e.pageY-offsetTop + 'px', + 'left' : e.pageX-offsetLeft + 'px' + }); + }); + + }).mouseup(function() { + $(document).unbind('mousemove'); + }); + + } + + if ( Array.prototype.remove == undefined ) { + Array.prototype.remove = function(item) { + for ( var i = 0; i < this.length; i++ ) { + if ( this[i] == item ) { + this.splice(i, 1); + break; + } + } + } + } + if ( Array.prototype.uinque == undefined ) { + Array.prototype.uinque = function() { + var result = [], hash = {}; + for ( var i = 0, item; (item = this[i]) != null; i++ ) { + if ( !hash[item] ) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.BUpload = function(options) { + + options = $.extend({ + src : "src", + upload_url : null, + list_url : null, + data_type : "json", + top : 20, + fileType : "image", //文件类型,默认是图片,可选flash,media,file + max_filesize : 2048, //unit:KB + max_filenum : 20, + no_data_text : "(⊙o⊙)亲,没有多数据了。", + ext_allow : "jpg|png|gif|jpeg", + ext_refuse : "exe|txt", + errorHandler : function(messsage, type) { + alert(messsage); + }, + callback : function(data) { + console.log(data); + } + }, options); + + //错误代码和提示消息 + var codeMessageMap = { + '000' : '文件上传成功', + '001' : '文件上传失败', + '003' : '文件大小超出限制', + '004' : '非法文件名后缀' + }; + + var mimeType = { + "3gpp":"audio/3gpp, video/3gpp", + "ac3":"audio/ac3", + "asf":"allpication/vnd.ms-asf", + "au":"audio/basic", + "css":"text/css", + "csv":"text/csv", + "doc":"application/msword", + "dot":"application/msword", + "dtd":"application/xml-dtd", + "dwg":"image/vnd.dwg", + "dxf":"image/vnd.dxf", + "gif":"image/gif", + "htm":"text/html", + "html":"text/html", + "jp2":"image/jp2", + "jpe":"image/jpeg", + "jpeg":"image/jpeg", + "jpg":"image/jpeg", + "js":"text/javascript, application/javascript", + "json":"application/json", + "mp2":"audio/mpeg, video/mpeg", + "mp3":"audio/mpeg", + "mp4":"audio/mp4, video/mp4", + "mpeg":"video/mpeg", + "mpg":"video/mpeg", + "mpp":"application/vnd.ms-project", + "ogg":"application/ogg, audio/ogg", + "pdf":"application/pdf", + "png":"image/png", + "pot":"application/vnd.ms-powerpoint", + "pps":"application/vnd.ms-powerpoint", + "ppt":"application/vnd.ms-powerpoint", + "rtf":"application/rtf, text/rtf", + "svf":"image/vnd.svf", + "tif":"image/tiff", + "tiff":"image/tiff", + "txt":"text/plain", + "wdb":"application/vnd.ms-works", + "wps":"application/vnd.ms-works", + "xhtml":"application/xhtml+xml", + "xlc":"application/vnd.ms-excel", + "xlm":"application/vnd.ms-excel", + "xls":"application/vnd.ms-excel", + "xlt":"application/vnd.ms-excel", + "xlw":"application/vnd.ms-excel", + "xml":"text/xml, application/xml", + "zip":"aplication/zip", + "xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + } + + var o = {}; + o.dialog = null; + o.todoList = new Array(); //the file queue to be uploaded + o.uploadSuccessNum = 0; //已经上传成功的图片数量 + o.selectedList = new Array(); //the file queue upload successfully + o.addedFileNumber = 0; //the numbers of files that has added + o.totalFilesize = 0; //total file size + o.uploadLock = false; //upload thread lock + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + var dialogSCode = Math.ceil(Math.random() * 1000000000000); //对话框的令牌,如果创建多个BUpload上传对象用来保持唯一性 + + //close the dialog + o.close = function () { + o.dialog.remove(); + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('<div class="uedbody ke-animated"><div class="ued_title">'); + builder.append('<div class="uedbar"><span>'+options.lang.title+'</span></div><div class="close_btn icon"' + + ' title="'+options.lang.closeText+'"></div>'); + builder.append('</div><div class="wrapper"><div id="wra_head" class="wra_head"><span class="tab' + + ' tab-upload focus" tab="upload-panel">'+options.lang.localUpload+'</span>'); + if ( options.list_url != null ) { + builder.append('<span class="tab tab-online" tab="online">'+options.lang.fileServer+'</span>'); + } + builder.append('</div><div class="wra_body"><div class="tab-panel upload-panel"><div class="wra_pla"><div class="upload-image-placeholder">'); + builder.append('<div class="btn btn-primary image-select">'+options.lang.selectFile+'</div><input type="file" name="'+options.src+'" class="webuploader-element-invisible"' + + ' multiple="multiple" accept="'+getAccept()+'">'); + builder.append('</div></div><div class="image-list-box" style="display: none;"><div class="wra_bar"><div class="info fl"></div>'); + builder.append('<div class="fr"><span class="btn btn-default btn-continue-add">'+options.lang.continueAdd+'</span><span class="btn btn-primary btn-start-upload">'+options.lang.startUpload+'</span></div></div>'); + builder.append('<ul class="filelist"></ul></div></div><div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'); + builder.append('<div class="tab-panel searchbox"><div class="search-bar"><input class="searTxt"' + + ' type="text" placeholder="'+options.lang.searchPlaceholder+'" />'); + builder.append('<input value="'+options.lang.searchBtn+'" class="btn btn-primary btn-search" type="button" /><input value="'+options.lang.searchClear+'" class="btn btn-default btn-reset" type="button" />'); + builder.append('</div><div class="search-imagelist-box"><ul class="search-list"></ul><div class="no-data"></div></div>'); + builder.append('</div><div class="loading-icon"></div></div><!-- end of wrapper --></div><div class="wra-btn-group"><span class="btn btn-primary btn-confirm">'+options.lang.confirmBtnText+'</span>'); + builder.append('<span class="btn btn-default btn-cancel">'+options.lang.cancelBtnText+'</span></div></div>'); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height())/2; + } + o.dialog.css({ + left : ($(window).width() - o.dialog.width())/2 + "px", + top : options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler : o.dialog.find(".ued_title")}) + + } + + //绑定元素事件 + function bindEvent() { + + //选项卡事件 + G(".tab").on("click", function() { + var tab = $(this).attr("tab"); + G(".tab-panel").hide(); + G("."+tab).show(); + G(".tab").removeClass("focus"); + $(this).addClass("focus"); + }); + + //关闭对话框 + G(".close_btn").on("click", function() { + o.close(); + }); + + //选择文件事件 + G(".webuploader-element-invisible").on("change", function() { + addFiles(this); + }); + + //弹出上传文件选择框 + G(".image-select").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + G(".btn-continue-add").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + + //开始上传按钮事件 + G(".btn-start-upload").on("click", function() { + if ( o.uploadLock ) return; + + if ( o.todoList.length == 0 ) { + options.errorHandler(options.lang.noFileAdded, "error"); + return false; + } + $(this).addClass("disabled").text(options.lang.uploading); + uploadFile(o.todoList.shift()); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function() { + if ( o.todoList.length > 0 ) { + options.errorHandler(options.lang.fileNotUpload, "error"); + return false; + } + if (o.selectedList.length == 0) { + options.errorHandler(options.lang.noFileSelected, "error"); + return false; + } + options.callback(o.selectedList); + o.close(); + + }); + G(".btn-cancel").on("click", function() { + o.close(); + }); + + //从服务器加载文件 + G(".tab-online").on("click", function() { + + if ( G(".imagelist .list").children().length == 0 ) { + loadFilesFromServer() + } + + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function() { + + if ( this.scrollTop + this.clientHeight >= this.scrollHeight ) { + loadFilesFromServer(); + } + }); + } + + //add file to upload list + function addFiles(input) { + + var files = input.files; + var totalFileNum = o.todoList.length + o.uploadSuccessNum + files.length; //本次上传文件总数 + for ( var i = o.addedFileNumber; i < o.addedFileNumber+files.length; i++ ) { + + if ( totalFileNum > options.max_filenum ) { + options.errorHandler(KindEditor.tmpl(options.lang.uploadLimit, {uploadLimit: options.max_filenum}), "error"); + return; + } + var builder = new StringBuilder(); + var tempFile = files[i- o.addedFileNumber]; + builder.append('<li id="img-comtainer-'+dialogSCode+i+'"><div class="imgWrap">'); + + //如果上传的不是图片,则通过判断文件后缀来显示不同的图标 + var extension = getFileExt(tempFile.name); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + builder.append('<span class="icon-placeholder icon-default icon-'+extension+'"></span>'); + } else { + builder.append('<img src="'+window.URL.createObjectURL(tempFile)+'" border="0" />'); + } + + builder.append('</div><div class="file-opt-box clearfix"><span class="remove" index="'+i+'">'+options.lang.remove+'</span><span class="rotateRight">'+options.lang.rotateRight+'</span>'); + builder.append('<span class="rotateLeft">'+options.lang.rotateLeft+'</span></div><div class="success"></div><div class="error"></div>'); + builder.append('<div class="progress"><span style="display: none; width: 0px;"></span></div></li>'); + + var $image = $(builder.toString()); + //bind onelele event + $image.find(".remove").on("click", function() { + $(this).parents("li").remove(); //remove element + //remove file from todoList + var index = $(this).attr("index"); + for ( var i = 0; i < o.todoList.length; i++ ) { + if ( o.todoList[i].index == index ) { + o.totalFilesize -= o.todoList[i].file.size; + updateInfoText(o.uploadSuccessNum + o.todoList.length-1, o.totalFilesize); + o.todoList.splice(i, 1); + break; + } + } + if (G(".filelist li").length == 0) { + G(".image-list-box").hide(); + G(".wra_pla").show(); + } + }); + $image.on("mouseover", function() { + $(this).find(".file-opt-box").show(); + }).on("mouseout", function() { + $(this).find(".file-opt-box").hide(); + }); + + G(".wra_pla").hide(); + G(".image-list-box").show(); + G(".filelist").append($image); + + o.todoList.push({index:i, file:tempFile}); + o.totalFilesize += tempFile.size; + + //console.log(tempFile); + } + o.addedFileNumber += files.length; + updateInfoText(o.uploadSuccessNum + o.todoList.length, o.totalFilesize); + + //缩放并裁剪图片 + $(".imgWrap img").imageCrop(113,113); + + } + + /** + * upload file function(文件上传主函数) + * @param node 数据节点 + */ + function uploadFile(node) { + + if ( !fileCheckHandler(node) ) { + uploadNextFile(); //skip the file and upload the next file + return; + } + + // prepare XMLHttpRequest + var xhr = new XMLHttpRequest(); + xhr.open('POST', options.upload_url); + //upload successfully + xhr.addEventListener('load',function(e) { + + if ( options.data_type == "json" ) { + //console.log(e); + var data = $.parseJSON(e.target.responseText); + if ( data.code == "000" ) { + o.selectedList.push(data.data.url); //添加文件到上传文件列表 + o.uploadSuccessNum++; + $("#img-comtainer-"+dialogSCode+ node.index).find(".file-opt-box").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".success").show(); + } else { + __error__(codeMessageMap[data.code], node); + } + } + + }, false); + + // file upload complete + xhr.addEventListener('loadend', function () { + uploadNextFile(); //upload the next file + }, false); + + //上传失败 + xhr.addEventListener('error', function() { + __error__(options.lang.uploadFail, node); + }, false); + + xhr.upload.addEventListener('progress', function(e) { + updateProgress(e, node); + }, false); + + // prepare FormData + var formData = new FormData(); + formData.append(options.src, node.file); + xhr.send(formData); + + } + + //upload next file(上传下一个文件) + function uploadNextFile() { + + if ( o.todoList.length ) { + var nextFile = o.todoList.shift(); + uploadFile(nextFile); + } else { + o.uploadLock = false; //release the upload lock + G(".btn-start-upload").removeClass("disabled").text(options.lang.startUpload); + //console.log(o.selectedList); + } + } + + // progress handler(文件上传进度控制) + function updateProgress(e, node) { + if ( e.lengthComputable ) { + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress span").css({"width" : (e.loaded/e.total)*100+'%', "display":"block"}); + } + } + + //update file info text + function updateInfoText(filenum, filesize) { + var text = KindEditor.tmpl(options.lang.uploadDesc, {numSelect:filenum, totalSize:formatFileSize(filesize), numLeft:(options.max_filenum - filenum)}); + G(".info").text(text); + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if ( size/1048576 > 1 ) { + return (size/1048576).toFixed(2)+"MB"; + } else { + return (size/1024).toFixed(2)+"KB"; + } + + } + + //file check handler(文件检测处理函数) + function fileCheckHandler(node) { + + //检查文件大小 + var maxsize = options.max_filesize * 1024; + if ( maxsize > 0 && node.file.size > maxsize ) { + __error__(KindEditor.tmpl(options.lang.sizeLimit, {sizeLimit:options.max_filesize}), node); + return false; + } + + //检查文件后缀名 + var ext = getFileExt(node.file.name); + if ( ext && options.ext_allow.indexOf(ext) != -1 + && options.ext_refuse.indexOf(ext) == -1 ) { + return true; + } else { + __error__(KindEditor.tmpl(options.lang.invalidExt, {invalidExt:ext}), node); + return false; + } + + } + + //获取文件后缀名 + function getFileExt(filename) { + if ( !filename ) return false; + var position = filename.lastIndexOf('.') + if ( position != -1 ) { + return filename.substr(position+1).toLowerCase(); + } + return false; + } + + //获取可接受的文件后缀 + function getAccept() { + var extensions = options.ext_allow.split("|"); + var accept = []; + $.each(extensions, function(idx, item) { + accept.push(mimeType[item]); + }); + if ( accept.length > 1 ) { + return accept.uinque().join(","); + } + return "*"; + } + + //显示上传错误信息 + function __error__(message, node) { + G("#img-comtainer-"+dialogSCode+ node.index).find(".error").show().text(message); + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if ( !options.list_url ) { + G(".online .no-data").html('<span class="error">'+options.lang.noListUrl+'</span>').show(); + return false; + } + if ( o.noRecord ) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page : o.page, + marker : o.marker, + fileType : options.fileType, + }, function(res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if ( res.code == "000" ) { + + if (!res.data[0]) { //没有加载到数据 + G(".online .no-data").text(options.lang.noDataText).show(); + return; + } + o.marker = res.extra; //存储marker + o.page++; + appendFiles(res.data, "online"); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data, module) { + + $.each(data, function(idx, item) { + + var builder = new StringBuilder(); + builder.append('<li>'); + var extension = getFileExt(item.thumbURL); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width+'x'+item.height; //图片尺寸 + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append('<span class="icon-placeholder icon-'+extension+'" data-src="'+item.oriURL+'"></span>'); + } else { + builder.append('<img src="'+item.thumbURL+'" data-src="'+item.oriURL+'" border="0">'); + } + + builder.append('<span class="ic" data-module="'+module+'"><em class="img-size">'+imgSize+'</em></span></li>'); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function() { + var src = $(this).prev().data("src"); + var module = $(this).data("module"); + if ( $(this).hasClass("selected") ) { + $(this).removeClass("selected"); + } else { + $(this).addClass("selected"); + o.selectedList.push(src); + } + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + if ( module == "online" ) { + G(".imagelist .list").append($image); + } else if ( module == "search" ) { + G(".search-imagelist-box .search-list").append($image); + } + }); + + } + + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function() { + + var buffer = new Array(); + StringBuilder.prototype.append = function(str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/multiimage/BUpload.min.js b/addons/nkeditor/assets/plugins/multiimage/BUpload.min.js new file mode 100644 index 0000000..182c6fa --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/BUpload.min.js @@ -0,0 +1,2 @@ +/* NKeditor 5.0.3 (2018-10-25), Copyright (C) r9it.com,*/ +!function(a){if(!window.applicationCache)throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!");a.fn.imageCrop=function(b,c){a(this).on("load",function(){var d,e,f,g,h=this.width/this.height,i=b/c;h>=i?(e=c,d=b*h,g=0,f=(d-b)/2):(d=b,e=c/h,f=0,g=0),a(this).css({position:"absolute",top:-g+"px",left:-f+"px",width:d+"px",height:e+"px"})})},a.fn.draggable=function(b){var c={handler:null};b=a.extend(c,b);var d=this;a(b.handler).mousedown(function(b){var c=b.pageX-a(d).position().left,e=b.pageY-a(d).position().top;a(document).mousemove(function(b){window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(),a(d).css({top:b.pageY-e+"px",left:b.pageX-c+"px"})})}).mouseup(function(){a(document).unbind("mousemove")})},void 0==Array.prototype.remove&&(Array.prototype.remove=function(a){for(var b=0;b<this.length;b++)if(this[b]==a){this.splice(b,1);break}}),void 0==Array.prototype.uinque&&(Array.prototype.uinque=function(){for(var a,b=[],c={},d=0;null!=(a=this[d]);d++)c[a]||(b.push(a),c[a]=!0);return b}),window.BUpload=function(c){function d(){var d=new b;d.append('<div class="uedbody ke-animated"><div class="ued_title">'),d.append('<div class="uedbar"><span>'+c.lang.title+'</span></div><div class="close_btn icon" title="'+c.lang.closeText+'"></div>'),d.append('</div><div class="wrapper"><div id="wra_head" class="wra_head"><span class="tab tab-upload focus" tab="upload-panel">'+c.lang.localUpload+"</span>"),null!=c.list_url&&d.append('<span class="tab tab-online" tab="online">'+c.lang.fileServer+"</span>"),d.append('</div><div class="wra_body"><div class="tab-panel upload-panel"><div class="wra_pla"><div class="upload-image-placeholder">'),d.append('<div class="btn btn-primary image-select">'+c.lang.selectFile+'</div><input type="file" name="'+c.src+'" class="webuploader-element-invisible" multiple="multiple" accept="'+n()+'">'),d.append('</div></div><div class="image-list-box" style="display: none;"><div class="wra_bar"><div class="info fl"></div>'),d.append('<div class="fr"><span class="btn btn-default btn-continue-add">'+c.lang.continueAdd+'</span><span class="btn btn-primary btn-start-upload">'+c.lang.startUpload+"</span></div></div>"),d.append('<ul class="filelist"></ul></div></div><div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'),d.append('<div class="tab-panel searchbox"><div class="search-bar"><input class="searTxt" type="text" placeholder="'+c.lang.searchPlaceholder+'" />'),d.append('<input value="'+c.lang.searchBtn+'" class="btn btn-primary btn-search" type="button" /><input value="'+c.lang.searchClear+'" class="btn btn-default btn-reset" type="button" />'),d.append('</div><div class="search-imagelist-box"><ul class="search-list"></ul><div class="no-data"></div></div>'),d.append('</div><div class="loading-icon"></div></div><!-- end of wrapper --></div><div class="wra-btn-group"><span class="btn btn-primary btn-confirm">'+c.lang.confirmBtnText+"</span>"),d.append('<span class="btn btn-default btn-cancel">'+c.lang.cancelBtnText+"</span></div></div>"),u.dialog=a(d.toString()),a("body").append(u.dialog),0==c.top&&(c.top=(a(window).height()-u.dialog.height())/2),u.dialog.css({left:(a(window).width()-u.dialog.width())/2+"px",top:c.top+"px"}),u.dialog.draggable({handler:u.dialog.find(".ued_title")})}function e(){p(".tab").on("click",function(){var b=a(this).attr("tab");p(".tab-panel").hide(),p("."+b).show(),p(".tab").removeClass("focus"),a(this).addClass("focus")}),p(".close_btn").on("click",function(){u.close()}),p(".webuploader-element-invisible").on("change",function(){f(this)}),p(".image-select").on("click",function(){p(".webuploader-element-invisible").trigger("click")}),p(".btn-continue-add").on("click",function(){p(".webuploader-element-invisible").trigger("click")}),p(".btn-start-upload").on("click",function(){if(!u.uploadLock){if(0==u.todoList.length)return c.errorHandler(c.lang.noFileAdded,"error"),!1;a(this).addClass("disabled").text(c.lang.uploading),g(u.todoList.shift())}}),p(".btn-confirm").on("click",function(){return u.todoList.length>0?(c.errorHandler(c.lang.fileNotUpload,"error"),!1):0==u.selectedList.length?(c.errorHandler(c.lang.noFileSelected,"error"),!1):(c.callback(u.selectedList),void u.close())}),p(".btn-cancel").on("click",function(){u.close()}),p(".tab-online").on("click",function(){0==p(".imagelist .list").children().length&&q()}),p(".imagelist").on("scroll",function(){this.scrollTop+this.clientHeight>=this.scrollHeight&&q()})}function f(d){for(var e=d.files,f=u.todoList.length+u.uploadSuccessNum+e.length,g=u.addedFileNumber;g<u.addedFileNumber+e.length;g++){if(f>c.max_filenum)return void c.errorHandler(KindEditor.tmpl(c.lang.uploadLimit,{uploadLimit:c.max_filenum}),"error");var h=new b,i=e[g-u.addedFileNumber];h.append('<li id="img-comtainer-'+v+g+'"><div class="imgWrap">');var k=m(i.name);""==k&&(k="default"),k=k.toLowerCase(),-1=="jpg|jpeg|gif|png|bmp".indexOf(k)?h.append('<span class="icon-placeholder icon-default icon-'+k+'"></span>'):h.append('<img src="'+window.URL.createObjectURL(i)+'" border="0" />'),h.append('</div><div class="file-opt-box clearfix"><span class="remove" index="'+g+'">'+c.lang.remove+'</span><span class="rotateRight">'+c.lang.rotateRight+"</span>"),h.append('<span class="rotateLeft">'+c.lang.rotateLeft+'</span></div><div class="success"></div><div class="error"></div>'),h.append('<div class="progress"><span style="display: none; width: 0px;"></span></div></li>');var l=a(h.toString());l.find(".remove").on("click",function(){a(this).parents("li").remove();for(var b=a(this).attr("index"),c=0;c<u.todoList.length;c++)if(u.todoList[c].index==b){u.totalFilesize-=u.todoList[c].file.size,j(u.uploadSuccessNum+u.todoList.length-1,u.totalFilesize),u.todoList.splice(c,1);break}0==p(".filelist li").length&&(p(".image-list-box").hide(),p(".wra_pla").show())}),l.on("mouseover",function(){a(this).find(".file-opt-box").show()}).on("mouseout",function(){a(this).find(".file-opt-box").hide()}),p(".wra_pla").hide(),p(".image-list-box").show(),p(".filelist").append(l),u.todoList.push({index:g,file:i}),u.totalFilesize+=i.size}u.addedFileNumber+=e.length,j(u.uploadSuccessNum+u.todoList.length,u.totalFilesize),a(".imgWrap img").imageCrop(113,113)}function g(b){if(!l(b))return void h();var d=new XMLHttpRequest;d.open("POST",c.upload_url),d.addEventListener("load",function(d){if("json"==c.data_type){var e=a.parseJSON(d.target.responseText);"000"==e.code?(u.selectedList.push(e.data.url),u.uploadSuccessNum++,a("#img-comtainer-"+v+b.index).find(".file-opt-box").remove(),a("#img-comtainer-"+v+b.index).find(".progress").remove(),a("#img-comtainer-"+v+b.index).find(".success").show()):o(s[e.code],b)}},!1),d.addEventListener("loadend",function(){h()},!1),d.addEventListener("error",function(){o(c.lang.uploadFail,b)},!1),d.upload.addEventListener("progress",function(a){i(a,b)},!1);var e=new FormData;e.append(c.src,b.file),d.send(e)}function h(){if(u.todoList.length){var a=u.todoList.shift();g(a)}else u.uploadLock=!1,p(".btn-start-upload").removeClass("disabled").text(c.lang.startUpload)}function i(b,c){b.lengthComputable&&a("#img-comtainer-"+v+c.index).find(".progress span").css({width:b.loaded/b.total*100+"%",display:"block"})}function j(a,b){var d=KindEditor.tmpl(c.lang.uploadDesc,{numSelect:a,totalSize:k(b),numLeft:c.max_filenum-a});p(".info").text(d)}function k(a){return a/1048576>1?(a/1048576).toFixed(2)+"MB":(a/1024).toFixed(2)+"KB"}function l(a){var b=1024*c.max_filesize;if(b>0&&a.file.size>b)return o(KindEditor.tmpl(c.lang.sizeLimit,{sizeLimit:c.max_filesize}),a),!1;var d=m(a.file.name);return d&&-1!=c.ext_allow.indexOf(d)&&-1==c.ext_refuse.indexOf(d)?!0:(o(KindEditor.tmpl(c.lang.invalidExt,{invalidExt:d}),a),!1)}function m(a){if(!a)return!1;var b=a.lastIndexOf(".");return-1!=b?a.substr(b+1).toLowerCase():!1}function n(){var b=c.ext_allow.split("|"),d=[];return a.each(b,function(a,b){d.push(t[b])}),d.length>1?d.uinque().join(","):"*"}function o(a,b){p("#img-comtainer-"+v+b.index).find(".error").show().text(a)}function p(a){return u.dialog.find(a)}function q(){return c.list_url?u.noRecord?!1:(p(".loading-icon").show(),void a.get(c.list_url,{page:u.page,marker:u.marker,fileType:c.fileType},function(a){if(p(".loading-icon").hide(),"000"==a.code){if(!a.data[0])return void p(".online .no-data").text(c.lang.noDataText).show();u.marker=a.extra,u.page++,r(a.data,"online")}else p(".online .no-data").text(c.lang.noDataText).show(),u.noRecord=!0},"json")):(p(".online .no-data").html('<span class="error">'+c.lang.noListUrl+"</span>").show(),!1)}function r(c,d){a.each(c,function(c,e){var f=new b;f.append("<li>");var g=m(e.thumbURL);""==g&&(g="default"),g=g.toLowerCase();var h=e.width+"x"+e.height;-1=="jpg|jpeg|gif|png|bmp".indexOf(g)?(h=k(e.filesize),f.append('<span class="icon-placeholder icon-'+g+'" data-src="'+e.oriURL+'"></span>')):f.append('<img src="'+e.thumbURL+'" data-src="'+e.oriURL+'" border="0">'),f.append('<span class="ic" data-module="'+d+'"><em class="img-size">'+h+"</em></span></li>");var i=a(f.toString());i.find(".ic").on("click",function(){var b=a(this).prev().data("src");a(this).data("module");a(this).hasClass("selected")?a(this).removeClass("selected"):(a(this).addClass("selected"),u.selectedList.push(b))}),i.find("img").imageCrop(113,113),"online"==d?p(".imagelist .list").append(i):"search"==d&&p(".search-imagelist-box .search-list").append(i)})}c=a.extend({src:"src",upload_url:null,list_url:null,data_type:"json",top:20,fileType:"image",max_filesize:2048,max_filenum:20,no_data_text:"(⊙o⊙)亲,没有多数据了。",ext_allow:"jpg|png|gif|jpeg",ext_refuse:"exe|txt",errorHandler:function(a,b){alert(a)},callback:function(a){console.log(a)}},c);var s={"000":"文件上传成功","001":"文件上传失败","003":"文件大小超出限制","004":"非法文件名后缀"},t={"3gpp":"audio/3gpp, video/3gpp",ac3:"audio/ac3",asf:"allpication/vnd.ms-asf",au:"audio/basic",css:"text/css",csv:"text/csv",doc:"application/msword",dot:"application/msword",dtd:"application/xml-dtd",dwg:"image/vnd.dwg",dxf:"image/vnd.dxf",gif:"image/gif",htm:"text/html",html:"text/html",jp2:"image/jp2",jpe:"image/jpeg",jpeg:"image/jpeg",jpg:"image/jpeg",js:"text/javascript, application/javascript",json:"application/json",mp2:"audio/mpeg, video/mpeg",mp3:"audio/mpeg",mp4:"audio/mp4, video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",mpp:"application/vnd.ms-project",ogg:"application/ogg, audio/ogg",pdf:"application/pdf",png:"image/png",pot:"application/vnd.ms-powerpoint",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",rtf:"application/rtf, text/rtf",svf:"image/vnd.svf",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wdb:"application/vnd.ms-works",wps:"application/vnd.ms-works",xhtml:"application/xhtml+xml",xlc:"application/vnd.ms-excel",xlm:"application/vnd.ms-excel",xls:"application/vnd.ms-excel",xlt:"application/vnd.ms-excel",xlw:"application/vnd.ms-excel",xml:"text/xml, application/xml",zip:"aplication/zip",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},u={};u.dialog=null,u.todoList=new Array,u.uploadSuccessNum=0,u.selectedList=new Array,u.addedFileNumber=0,u.totalFilesize=0,u.uploadLock=!1,u.page=1,u.marker=null,u.noRecord=!1;var v=Math.ceil(1e12*Math.random());return u.close=function(){u.dialog.remove(),"function"==typeof c.close&&c.close()},d(),e(),u};var b=function(){var a=new Array;b.prototype.append=function(b){a.push(b)},b.prototype.toString=function(){return a.join("")}}}(jQuery); \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/aep.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/aep.png new file mode 100644 index 0000000..1ae4e95 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/aep.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/asp.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/asp.png new file mode 100644 index 0000000..a4fb174 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/asp.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/avi.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/avi.png new file mode 100644 index 0000000..f358993 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/avi.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/c.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/c.png new file mode 100644 index 0000000..bdc1f78 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/c.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/conf.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/conf.png new file mode 100644 index 0000000..ac9cf49 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/conf.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/css.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/css.png new file mode 100644 index 0000000..5475124 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/css.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/default.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/default.png new file mode 100644 index 0000000..946d095 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/default.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/doc.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/doc.png new file mode 100644 index 0000000..6b827c6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/doc.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/eml.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/eml.png new file mode 100644 index 0000000..8edc065 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/eml.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/eps.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/eps.png new file mode 100644 index 0000000..0e6fb79 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/eps.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/fla.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/fla.png new file mode 100644 index 0000000..767c56c Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/fla.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/htm.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/htm.png new file mode 100644 index 0000000..9cc5171 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/htm.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/idn.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/idn.png new file mode 100644 index 0000000..3c83e99 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/idn.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/ini.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/ini.png new file mode 100644 index 0000000..0449595 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/ini.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/java.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/java.png new file mode 100644 index 0000000..cbd350a Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/java.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/js.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/js.png new file mode 100644 index 0000000..f65b15d Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/js.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/jsf.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/jsf.png new file mode 100644 index 0000000..e551416 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/jsf.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/markdown.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/markdown.png new file mode 100644 index 0000000..57e0870 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/markdown.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/mdb.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/mdb.png new file mode 100644 index 0000000..56f037c Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/mdb.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/midi.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/midi.png new file mode 100644 index 0000000..7ff836a Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/midi.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/mov.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/mov.png new file mode 100644 index 0000000..8b5b776 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/mov.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/mp3.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/mp3.png new file mode 100644 index 0000000..11f13ad Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/mp3.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/mpeg.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/mpeg.png new file mode 100644 index 0000000..eccb9fc Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/mpeg.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/pdf.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/pdf.png new file mode 100644 index 0000000..ca81a58 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/pdf.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/php.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/php.png new file mode 100644 index 0000000..8c4a2c2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/php.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/ppt.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/ppt.png new file mode 100644 index 0000000..4b15ad6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/ppt.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/psd.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/psd.png new file mode 100644 index 0000000..a5f49e2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/psd.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/pst.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/pst.png new file mode 100644 index 0000000..fbe7fe5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/pst.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/pub.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/pub.png new file mode 100644 index 0000000..71a92c1 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/pub.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/py.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/py.png new file mode 100644 index 0000000..8e2f6e2 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/py.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/rb.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/rb.png new file mode 100644 index 0000000..5956ee7 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/rb.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/rmvb.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/rmvb.png new file mode 100644 index 0000000..eccb9fc Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/rmvb.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/scss.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/scss.png new file mode 100644 index 0000000..e043f36 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/scss.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/sql.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/sql.png new file mode 100644 index 0000000..0023d84 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/sql.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/tif.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/tif.png new file mode 100644 index 0000000..04e77a4 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/tif.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/txt.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/txt.png new file mode 100644 index 0000000..876352b Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/txt.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/vsd.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/vsd.png new file mode 100644 index 0000000..c248eb3 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/vsd.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/wav.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/wav.png new file mode 100644 index 0000000..c6ec2f6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/wav.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/wma.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/wma.png new file mode 100644 index 0000000..68316b5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/wma.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/wmv.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/wmv.png new file mode 100644 index 0000000..194ac20 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/wmv.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/xls.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/xls.png new file mode 100644 index 0000000..b9eada4 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/xls.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/xml.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/xml.png new file mode 100644 index 0000000..805f307 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/xml.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/icons/zip.png b/addons/nkeditor/assets/plugins/multiimage/css/icons/zip.png new file mode 100644 index 0000000..6f0a434 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/icons/zip.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/dialog-title-bg.png b/addons/nkeditor/assets/plugins/multiimage/css/images/dialog-title-bg.png new file mode 100644 index 0000000..f744f26 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/dialog-title-bg.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/icons-all.gif b/addons/nkeditor/assets/plugins/multiimage/css/images/icons-all.gif new file mode 100644 index 0000000..21915e5 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/icons-all.gif differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/icons.png b/addons/nkeditor/assets/plugins/multiimage/css/images/icons.png new file mode 100644 index 0000000..12e4700 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/icons.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/image.png b/addons/nkeditor/assets/plugins/multiimage/css/images/image.png new file mode 100644 index 0000000..19699f6 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/image.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/loader.gif b/addons/nkeditor/assets/plugins/multiimage/css/images/loader.gif new file mode 100644 index 0000000..5bb90fd Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/loader.gif differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/progress.png b/addons/nkeditor/assets/plugins/multiimage/css/images/progress.png new file mode 100644 index 0000000..717c486 Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/progress.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/images/success.png b/addons/nkeditor/assets/plugins/multiimage/css/images/success.png new file mode 100644 index 0000000..94f968d Binary files /dev/null and b/addons/nkeditor/assets/plugins/multiimage/css/images/success.png differ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/upload.css b/addons/nkeditor/assets/plugins/multiimage/css/upload.css new file mode 100644 index 0000000..cff67e2 --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/css/upload.css @@ -0,0 +1,552 @@ +@charset "UTF-8"; +.uedbody { + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + width: 652px; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: 811213; + font-family: "微软雅黑"; + font-size: 12px; + margin: 0px auto; } + .uedbody div, .uedbody dl, .uedbody dt, .uedbody dd, .uedbody ul, .uedbody li, .uedbody ol, .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6, .uedbody pre, .uedbody code, .uedbody form, .uedbody fieldset, .uedbody legend, .uedbody button, .uedbody textarea, .uedbody blockquote, .uedbody p { + margin: 0; + padding: 0; } + .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6 { + font-weight: normal; } + .uedbody li { + list-style-type: none; } + .uedbody ol, .uedbody ul, .uedbody dl { + list-style: none; } + .uedbody em { + font-style: normal; } + .uedbody img { + border: none; + vertical-align: middle; } + .uedbody select, .uedbody label, .uedbody input { + vertical-align: middle; + padding: 0; + margin: 0; + outline: medium; + font-size: 12px; } + .uedbody textarea { + resize: none; + line-height: 18px; } + .uedbody table { + border-collapse: collapse; + border-spacing: 0; + empty-cell: show; } + .uedbody a { + text-decoration: none; + color: #333; + outline: none; + cursor: pointer; } + .uedbody a:hover { + cursor: pointer; + blr: expression(this.onFocus=this.blur()); } + .uedbody * { + padding: 0; + margin: 0; + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; } + .uedbody .clearfix:before, .uedbody .clearfix:after { + content: ""; + display: table; } + .uedbody .clearfix:after { + clear: both; } + .uedbody .clearfix { + *zoom: 1; } + .uedbody .fr { + float: right; } + .uedbody .fl { + float: left; } + .uedbody .ued_title { + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; } + .uedbody .ued_title .icon { + background: url("images/icons-all.gif") no-repeat center; } + .uedbody .ued_title .uedbar span { + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; } + .uedbody .ued_title .close_btn { + height: 20px; + width: 20px; + cursor: pointer; + background-position: 0px -59px; + position: absolute; + right: 5px; + top: 3px; } + .uedbody .ued_title .close_btn:hover { + background-position: 0px -89px; } + .uedbody .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; } + .uedbody .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; } + .uedbody .btn-default:hover { + background: #f0f0f0; } + .uedbody .btn-primary { + background: #00b7ee; + color: #ffffff; } + .uedbody .btn-primary:hover { + background: #00a2d4; } + .uedbody .btn.disabled { + cursor: not-allowed; + opacity: .65; } + .uedbody .btn.disabled:hover { + background: #00b7ee; } + .uedbody .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; } + .uedbody .wrapper .wra_head span { + float: left; + padding: 0px 5px; + margin-right: 3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_head span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; } + .uedbody .wrapper .wra_body { + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla { + zoom: 1; + overflow: hidden; + text-align: center; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible { + opacity: 0; + width: 0; + height: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select { + padding: 10px 30px; + cursor: pointer; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info { + font-size: 14px; + color: #666; + margin-top: 6px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn { + padding: 6px 15px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist { + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap { + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box { + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + 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; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove { + background-position: -48px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover { + background-position: -48px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight { + display: none; + background-position: -24px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover { + background-position: -24px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft { + display: none; + background-position: 0px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover { + background-position: 0px 0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success { + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding: 5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span { + 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); } + .uedbody .wrapper .wra_body .online { + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; } + .uedbody .wrapper .wra_body .online .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; + overflow: hidden; + display: none; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searTxt { + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchRese { + color: #333; + border-color: #CCC; + background-color: #FFF; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list { + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .no-data { + line-height: 40px; + height: 40px; + font-size: 14px; + color: #999999; + text-align: center; + display: none; } + .uedbody .wrapper .wra_body .no-data .error { + color: #cc0000; } + .uedbody .wrapper .wra_body .loading-icon { + background: rgba(0, 0, 0, 0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top: 0; + left: 0; + display: none; + text-align: center; } + .uedbody .wrapper .wra_body .loading-icon .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left: 253px; } + .uedbody .wrapper .wra_body .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .icon-aep, .uedbody .wrapper .wra_body .icon-aepx { + background-image: url("icons/aep.png"); } + .uedbody .wrapper .wra_body .icon-asp { + background-image: url("icons/asp.png"); } + .uedbody .wrapper .wra_body .icon-avi { + background-image: url("icons/avi.png"); } + .uedbody .wrapper .wra_body .icon-c, .uedbody .wrapper .wra_body .icon-cpp { + background-image: url("icons/c.png"); } + .uedbody .wrapper .wra_body .icon-conf { + background-image: url("icons/conf.png"); } + .uedbody .wrapper .wra_body .icon-css { + background-image: url("icons/css.png"); } + .uedbody .wrapper .wra_body .icon-htm, .uedbody .wrapper .wra_body .icon-html { + background-image: url("icons/htm.png"); } + .uedbody .wrapper .wra_body .icon-default { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-doc, .uedbody .wrapper .wra_body .icon-docx { + background-image: url("icons/doc.png"); } + .uedbody .wrapper .wra_body .icon-eps { + background-image: url("icons/eps.png"); } + .uedbody .wrapper .wra_body .icon-fla, .uedbody .wrapper .wra_body .icon-swf { + background-image: url("icons/fla.png"); } + .uedbody .wrapper .wra_body .icon-idn { + background-image: url("icons/idn.png"); } + .uedbody .wrapper .wra_body .icon-ini { + background-image: url("icons/ini.png"); } + .uedbody .wrapper .wra_body .icon-java, .uedbody .wrapper .wra_body .icon-jar, .uedbody .wrapper .wra_body .icon-war { + background-image: url("icons/java.png"); } + .uedbody .wrapper .wra_body .icon-js { + background-image: url("icons/js.png"); } + .uedbody .wrapper .wra_body .icon-jsf { + background-image: url("icons/jsf.png"); } + .uedbody .wrapper .wra_body .icon-md, .uedbody .wrapper .wra_body .icon-markdown { + background-image: url("icons/markdown.png"); } + .uedbody .wrapper .wra_body .icon-mdb { + background-image: url("icons/mdb.png"); } + .uedbody .wrapper .wra_body .icon-midi { + background-image: url("icons/midi.png"); } + .uedbody .wrapper .wra_body .icon-mov { + background-image: url("icons/mov.png"); } + .uedbody .wrapper .wra_body .icon-mp3 { + background-image: url("icons/mp3.png"); } + .uedbody .wrapper .wra_body .icon-mpeg { + background-image: url("icons/mpeg.png"); } + .uedbody .wrapper .wra_body .icon-pdf { + background-image: url("icons/pdf.png"); } + .uedbody .wrapper .wra_body .icon-php { + background-image: url("icons/php.png"); } + .uedbody .wrapper .wra_body .icon-ppt, .uedbody .wrapper .wra_body .icon-pptx { + background-image: url("icons/ppt.png"); } + .uedbody .wrapper .wra_body .icon-psd { + background-image: url("icons/psd.png"); } + .uedbody .wrapper .wra_body .icon-pst { + background-image: url("icons/pst.png"); } + .uedbody .wrapper .wra_body .icon-pub { + background-image: url("icons/pub.png"); } + .uedbody .wrapper .wra_body .icon-py { + background-image: url("icons/py.png"); } + .uedbody .wrapper .wra_body .icon-rb { + background-image: url("icons/rb.png"); } + .uedbody .wrapper .wra_body .icon-rm, .uedbody .wrapper .wra_body .icon-rmvb { + background-image: url("icons/rmvb.png"); } + .uedbody .wrapper .wra_body .icon-scss { + background-image: url("icons/scss.png"); } + .uedbody .wrapper .wra_body .icon-tif { + background-image: url("icons/tif.png"); } + .uedbody .wrapper .wra_body .icon-txt { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-vsd { + background-image: url("icons/vsd.png"); } + .uedbody .wrapper .wra_body .icon-wav { + background-image: url("icons/wav.png"); } + .uedbody .wrapper .wra_body .icon-wma { + background-image: url("icons/wma.png"); } + .uedbody .wrapper .wra_body .icon-wmv { + background-image: url("icons/wmv.png"); } + .uedbody .wrapper .wra_body .icon-xls, .uedbody .wrapper .wra_body .icon-xlsx { + background-image: url("icons/xls.png"); } + .uedbody .wrapper .wra_body .icon-xml { + background-image: url("icons/xml.png"); } + .uedbody .wrapper .wra_body .icon-zip, .uedbody .wrapper .wra_body .icon-rar, .uedbody .wrapper .wra_body .icon-tgz, .uedbody .wrapper .wra_body .icon-gz, .uedbody .wrapper .wra_body .icon-tar, .uedbody .wrapper .wra_body .icon-7z { + background-image: url("icons/zip.png"); } + .uedbody .wrapper .wra_body_server { + height: 380px; } + .uedbody .wrapper .wra_body_server .online { + display: block !important; + height: 365px; } + .uedbody .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; } + .uedbody .wra-btn-group .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; } + +/*# sourceMappingURL=upload.css.map */ diff --git a/addons/nkeditor/assets/plugins/multiimage/css/upload.css.map b/addons/nkeditor/assets/plugins/multiimage/css/upload.css.map new file mode 100644 index 0000000..b7e49d4 --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/css/upload.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["upload.scss"], +"names": [], +"file": "upload.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/multiimage/css/upload.min.css b/addons/nkeditor/assets/plugins/multiimage/css/upload.min.css new file mode 100644 index 0000000..3f463d7 --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/css/upload.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.uedbody{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;width:652px;position:fixed;padding:2px 0 0 2px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);z-index:811213;font-family:"微软雅黑";font-size:12px;margin:0 auto}.uedbody blockquote,.uedbody button,.uedbody code,.uedbody dd,.uedbody div,.uedbody dl,.uedbody dt,.uedbody fieldset,.uedbody form,.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6,.uedbody legend,.uedbody li,.uedbody ol,.uedbody p,.uedbody pre,.uedbody textarea,.uedbody ul{margin:0;padding:0}.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6{font-weight:400}.uedbody li{list-style-type:none}.uedbody dl,.uedbody ol,.uedbody ul{list-style:none}.uedbody em{font-style:normal}.uedbody img{border:none;vertical-align:middle}.uedbody input,.uedbody label,.uedbody select{vertical-align:middle;padding:0;margin:0;outline:medium;font-size:12px}.uedbody textarea{resize:none;line-height:18px}.uedbody table{border-collapse:collapse;border-spacing:0;empty-cell:show}.uedbody a{text-decoration:none;color:#333;outline:0;cursor:pointer}.uedbody a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur())}.uedbody *{padding:0;margin:0;box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}.uedbody .clearfix:after,.uedbody .clearfix:before{content:"";display:table}.uedbody .clearfix:after{clear:both}.uedbody .fr{float:right}.uedbody .fl{float:left}.uedbody .ued_title{height:26px;border-bottom:1px solid #c6c6c6;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.uedbody .ued_title .icon{background:url(images/icons-all.gif) no-repeat center}.uedbody .ued_title .uedbar span{font-weight:700;font-size:14px;color:#444;line-height:26px;padding-left:5px}.uedbody .ued_title .close_btn{height:20px;width:20px;cursor:pointer;background-position:0 -59px;position:absolute;right:5px;top:3px}.uedbody .ued_title .close_btn:hover{background-position:0 -89px}.uedbody .btn{display:inline-block;margin-bottom:0;margin-right:5px;padding:4px 10px;font-weight:400;text-align:center;cursor:pointer;border:1px solid transparent;white-space:nowrap;font-size:14px;border-radius:3px;-moz-user-select:none;box-shadow:0 1px 1px rgba(0,0,0,.1);padding:5px 14px}.uedbody .btn-default{border:1px solid #cfcfcf;color:#565656;background:#fff}.uedbody .btn-default:hover{background:#f0f0f0}.uedbody .btn-primary{background:#00b7ee;color:#fff}.uedbody .btn-primary:hover{background:#00a2d4}.uedbody .btn.disabled{cursor:not-allowed;opacity:.65}.uedbody .btn.disabled:hover{background:#00b7ee}.uedbody .wrapper{width:630px;height:380px;margin:0 auto;padding:10px;position:relative;font-family:sans-serif}.uedbody .wrapper .wra_head span{float:left;padding:0 5px;margin-right:3px;height:30px;border:1px solid #ccc;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;text-align:center;line-height:30px;cursor:pointer;position:relative}.uedbody .wrapper .wra_head span.focus{height:31px;border-bottom:medium none;background:#fff none repeat scroll 0 0;position:relative;z-index:2}.uedbody .wrapper .wra_body{width:100%;height:346px;clear:both;margin:0 auto;border:1px solid #ccc;display:block;clip:auto;overflow:hidden;top:-1px;position:relative}.uedbody .wrapper .wra_body .upload-panel .wra_pla{zoom:1;overflow:hidden;text-align:center}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder{margin:10px;border:2px dashed #e6e6e6;height:172px;padding-top:150px;text-align:center;background:url(images/image.png) center 70px no-repeat;position:relative;top:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible{opacity:0;width:0;height:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select{padding:10px 30px;cursor:pointer}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar{border-bottom:1px solid #dadada;padding:8px;vertical-align:middle;position:relative;zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info{font-size:14px;color:#666;margin-top:6px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn{padding:6px 15px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist{list-style:outside none none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;position:relative;height:300px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li{width:113px;height:113px;margin:9px 0 0 9px;position:relative;display:block;float:left;overflow:hidden;font-size:12px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap{position:relative;vertical-align:middle;text-align:center;overflow:hidden;width:113px;height:113px;transform-origin:50% 50% 0;transition:all .2s ease-out 0s}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box{position:absolute;display:none;background:rgba(0,0,0,.5) none repeat scroll 0 0;width:100%;top:0;left:0;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span{width:24px;height:24px;display:inline;float:right;text-indent:-9999px;overflow:hidden;background:url(images/icons.png) no-repeat;margin:5px 1px 1px;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove{background-position:-48px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover{background-position:-48px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight{display:none;background-position:-24px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover{background-position:-24px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft{display:none;background-position:0 -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover{background-position:0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success{background:url(images/success.png) no-repeat right;position:absolute;display:none;left:0;bottom:0;height:40px;width:100%}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error{position:absolute;width:100%;display:none;background:rgba(255,255,255,.7) none repeat scroll 0 0;left:0;padding:5px 3px;color:#c00;border:1px solid #ccc;bottom:0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress{position:absolute;width:100%;bottom:0;left:0;bottom:0;height:8px;overflow:hidden;z-index:50;margin:0;border-radius:0;background:0 0;-webkit-box-shadow:0 0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span{width:0;height:100%;background:#1483d8 url(images/progress.png) repeat-x;-webit-transition:width .2s linear;-moz-transition:width .2s linear;-o-transition:width .2s linear;-ms-transition:width .2s linear;transition:width .2s 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)}.uedbody .wrapper .wra_body .online{width:100%;height:336px;padding:10px 0 0;display:none}.uedbody .wrapper .wra_body .online .imagelist{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li img{cursor:pointer}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .online .imagelist .list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .searchbox{width:100%;padding:10px 0 0;zoom:1;overflow:hidden;display:none}.uedbody .wrapper .wra_body .searchbox .search-bar .searTxt{margin-left:5px;background:#fff none repeat scroll 0 0;width:300px;height:21px;line-height:21px;padding:3px 6px;font-size:14px;line-height:1.42857;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;margin-right:10px}.uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn{color:#fff;border-color:#285e8e;background-color:#3b97d7}.uedbody .wrapper .wra_body .searchbox .search-bar .searchRese{color:#333;border-color:#ccc;background-color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box{width:100%;height:292px;overflow-x:hidden;overflow-y:auto;position:relative;margin-top:10px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list{zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img{cursor:pointer}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .no-data{line-height:40px;height:40px;font-size:14px;color:#999;text-align:center;display:none}.uedbody .wrapper .wra_body .no-data .error{color:#c00}.uedbody .wrapper .wra_body .loading-icon{background:rgba(0,0,0,.4) url(images/loader.gif) no-repeat center center;position:absolute;width:100%;height:346px;top:0;left:0;display:none;text-align:center}.uedbody .wrapper .wra_body .loading-icon .loading-message{position:absolute;font-size:14px;color:#f0f0f0;top:210px;left:253px}.uedbody .wrapper .wra_body .icon-placeholder{background-size:113px 113px;display:block;width:113px;height:113px}.uedbody .wrapper .wra_body .icon-aep,.uedbody .wrapper .wra_body .icon-aepx{background-image:url(icons/aep.png)}.uedbody .wrapper .wra_body .icon-asp{background-image:url(icons/asp.png)}.uedbody .wrapper .wra_body .icon-avi{background-image:url(icons/avi.png)}.uedbody .wrapper .wra_body .icon-c,.uedbody .wrapper .wra_body .icon-cpp{background-image:url(icons/c.png)}.uedbody .wrapper .wra_body .icon-conf{background-image:url(icons/conf.png)}.uedbody .wrapper .wra_body .icon-css{background-image:url(icons/css.png)}.uedbody .wrapper .wra_body .icon-htm,.uedbody .wrapper .wra_body .icon-html{background-image:url(icons/htm.png)}.uedbody .wrapper .wra_body .icon-default{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-doc,.uedbody .wrapper .wra_body .icon-docx{background-image:url(icons/doc.png)}.uedbody .wrapper .wra_body .icon-eps{background-image:url(icons/eps.png)}.uedbody .wrapper .wra_body .icon-fla,.uedbody .wrapper .wra_body .icon-swf{background-image:url(icons/fla.png)}.uedbody .wrapper .wra_body .icon-idn{background-image:url(icons/idn.png)}.uedbody .wrapper .wra_body .icon-ini{background-image:url(icons/ini.png)}.uedbody .wrapper .wra_body .icon-jar,.uedbody .wrapper .wra_body .icon-java,.uedbody .wrapper .wra_body .icon-war{background-image:url(icons/java.png)}.uedbody .wrapper .wra_body .icon-js{background-image:url(icons/js.png)}.uedbody .wrapper .wra_body .icon-jsf{background-image:url(icons/jsf.png)}.uedbody .wrapper .wra_body .icon-markdown,.uedbody .wrapper .wra_body .icon-md{background-image:url(icons/markdown.png)}.uedbody .wrapper .wra_body .icon-mdb{background-image:url(icons/mdb.png)}.uedbody .wrapper .wra_body .icon-midi{background-image:url(icons/midi.png)}.uedbody .wrapper .wra_body .icon-mov{background-image:url(icons/mov.png)}.uedbody .wrapper .wra_body .icon-mp3{background-image:url(icons/mp3.png)}.uedbody .wrapper .wra_body .icon-mpeg{background-image:url(icons/mpeg.png)}.uedbody .wrapper .wra_body .icon-pdf{background-image:url(icons/pdf.png)}.uedbody .wrapper .wra_body .icon-php{background-image:url(icons/php.png)}.uedbody .wrapper .wra_body .icon-ppt,.uedbody .wrapper .wra_body .icon-pptx{background-image:url(icons/ppt.png)}.uedbody .wrapper .wra_body .icon-psd{background-image:url(icons/psd.png)}.uedbody .wrapper .wra_body .icon-pst{background-image:url(icons/pst.png)}.uedbody .wrapper .wra_body .icon-pub{background-image:url(icons/pub.png)}.uedbody .wrapper .wra_body .icon-py{background-image:url(icons/py.png)}.uedbody .wrapper .wra_body .icon-rb{background-image:url(icons/rb.png)}.uedbody .wrapper .wra_body .icon-rm,.uedbody .wrapper .wra_body .icon-rmvb{background-image:url(icons/rmvb.png)}.uedbody .wrapper .wra_body .icon-scss{background-image:url(icons/scss.png)}.uedbody .wrapper .wra_body .icon-tif{background-image:url(icons/tif.png)}.uedbody .wrapper .wra_body .icon-txt{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-vsd{background-image:url(icons/vsd.png)}.uedbody .wrapper .wra_body .icon-wav{background-image:url(icons/wav.png)}.uedbody .wrapper .wra_body .icon-wma{background-image:url(icons/wma.png)}.uedbody .wrapper .wra_body .icon-wmv{background-image:url(icons/wmv.png)}.uedbody .wrapper .wra_body .icon-xls,.uedbody .wrapper .wra_body .icon-xlsx{background-image:url(icons/xls.png)}.uedbody .wrapper .wra_body .icon-xml{background-image:url(icons/xml.png)}.uedbody .wrapper .wra_body .icon-7z,.uedbody .wrapper .wra_body .icon-gz,.uedbody .wrapper .wra_body .icon-rar,.uedbody .wrapper .wra_body .icon-tar,.uedbody .wrapper .wra_body .icon-tgz,.uedbody .wrapper .wra_body .icon-zip{background-image:url(icons/zip.png)}.uedbody .wrapper .wra_body_server{height:380px}.uedbody .wrapper .wra_body_server .online{display:block!important;height:365px}.uedbody .wra-btn-group{clear:both;zoom:1;text-align:right;padding:10px 20px 20px 0}.uedbody .wra-btn-group .tip-text{float:left;padding:5px 10px;color:#999;font-size:14px} \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/multiimage/css/upload.scss b/addons/nkeditor/assets/plugins/multiimage/css/upload.scss new file mode 100644 index 0000000..10ff832 --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/css/upload.scss @@ -0,0 +1,642 @@ +$dialogWidth:652px; +$dialogZindex:811213; +$fontsize:14px; +.uedbody{ + div, dl, dt, dd, ul, li,ol, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, button, textarea, blockquote,p{margin:0; padding:0;} + h1,h2,h3,h4,h5,h6 {font-weight:normal;} + li{list-style-type:none;} + ol,ul,dl{list-style:none;} + em{font-style:normal;} + img{border:none;vertical-align:middle;} + select,label,input{vertical-align:middle; padding:0; margin:0;outline:medium;font-size:12px;} + textarea{resize: none; line-height:18px;} + table { border-collapse: collapse; border-spacing: 0; empty-cell:show;} + a{text-decoration:none;color:#333;outline:none; cursor:pointer;} + a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur());} + + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + + * { + padding: 0; margin: 0; + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + } + + .clearfix:before, .clearfix:after { + content: ""; + display: table; + } + .clearfix:after{ + clear: both; + } + .clearfix{ + *zoom: 1; + } + .fr{float: right;} + .fl{float: left;} + + width: $dialogWidth; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: $dialogZindex; + font-family:"微软雅黑"; + font-size: 12px; + margin: 0px auto; + + //start of ued_title + .ued_title{ + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; + + .icon{background: url("images/icons-all.gif") no-repeat center;} + + .uedbar { + span{ + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; + } + } + + .close_btn{ + height: 20px; + width: 20px; + cursor: pointer; + background-position :0px -59px; + position: absolute; + right: 5px; + top: 3px; + + &:hover{background-position: 0px -89px;} + } + } + //end of ued_title + + //button styles + .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: $fontsize; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; + } + .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; + &:hover { + background: #f0f0f0; + } + } + .btn-primary { + background:#00b7ee; + color: #ffffff; + &:hover { + background: #00a2d4; + } + }//button style end + .btn.disabled { + cursor: not-allowed; + opacity: .65; + &:hover { + background: #00b7ee; + } + } + + //start of wrapper + .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; + + //start of wra_head + .wra_head { + span { + float: left; + padding: 0px 5px; + margin-right:3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; + } + span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; + } + }//end of wra_head + + //start of wra_body + .wra_body{ + + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; + + //upload panel start + .upload-panel { + .wra_pla { + zoom: 1; overflow: hidden; + text-align: center; + + .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; + + .webuploader-element-invisible { + //width: 145px; + //height: 40px; + //position: absolute; + //left: 225px; + opacity: 0; + width: 0; height: 0; + } + + .image-select { + padding: 10px 30px; + cursor: pointer; + } + } + } + + //image list box start + .image-list-box { + .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; overflow: hidden; + + .info{ + font-size: $fontsize; + color: #666; + margin-top: 6px; + } + + .fr { + .btn {padding: 6px 15px;} + } + + } + + //filelist start + .filelist{ + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; + + li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; + + .imgWrap{ + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; + + } + + //file opt box start + .file-opt-box{ + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; + + span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + 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; + } + + .remove{ + background-position: -48px -24px; + &:hover{ + background-position: -48px -0px; + } + } + .rotateRight{ + display: none; + background-position: -24px -24px; + &:hover{ + background-position: -24px -0px; + } + } + .rotateLeft{ + display: none; + background-position: 0px -24px; + &:hover{ + background-position: 0px 0px; + } + } + }//file opt box end + + .success{ + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; + } + + .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding:5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; + } + + .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; + + span { + 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); + } + } + }//end li + + }//filelist end + + }//image list box end + }//upload panel end + + //image online start + .online{ + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; + + .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; + + .list { + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img{cursor: pointer;} + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover{ + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + .img-size { + display: inline-block; + width: 97px; + } + + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + + } + + } //image online end + + //image search start + .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; overflow: hidden; + display: none; + + //搜索条 + .search-bar { + + .searTxt{ + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: $fontsize; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right:10px; + } + + .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; + } + .searchRese{ + color: #333; + border-color: #CCC; + background-color: #FFF; + } + } + + .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top:10px; + + .search-list { + zoom:1; overflow: hidden; + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img { + cursor: pointer; + } + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; + .img-size { + display: inline-block; + width: 97px; + } + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + } + + }//image search start end + + .no-data { + line-height: 40px; + height: 40px; + font-size:$fontsize; + color: #999999; + text-align: center; + display: none; + .error { + color: #cc0000; + } + } + + .loading-icon { + background:rgba(0,0,0,0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top:0; left: 0; + display: none; + text-align: center; + + .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left:253px; + } + } + + //图片占位符 + .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; + } + .icon-aep, .icon-aepx {background-image: url("icons/aep.png");} + .icon-asp {background-image: url("icons/asp.png");} + .icon-avi {background-image: url("icons/avi.png");} + .icon-c, .icon-cpp {background-image: url("icons/c.png");} + .icon-conf {background-image: url("icons/conf.png");} + .icon-css {background-image: url("icons/css.png");} + .icon-htm,.icon-html {background-image: url("icons/htm.png");} + .icon-default {background-image: url("icons/txt.png");} + .icon-doc,.icon-docx {background-image: url("icons/doc.png");} + .icon-eps {background-image: url("icons/eps.png");} + .icon-fla,.icon-swf {background-image: url("icons/fla.png");} + .icon-idn {background-image: url("icons/idn.png");} + .icon-ini {background-image: url("icons/ini.png");} + .icon-java, .icon-jar, .icon-war {background-image: url("icons/java.png");} + .icon-js {background-image: url("icons/js.png");} + .icon-jsf {background-image: url("icons/jsf.png");} + .icon-md, .icon-markdown {background-image: url("icons/markdown.png");} + .icon-mdb {background-image: url("icons/mdb.png");} + .icon-midi {background-image: url("icons/midi.png");} + .icon-mov {background-image: url("icons/mov.png");} + .icon-mp3 {background-image: url("icons/mp3.png");} + .icon-mpeg {background-image: url("icons/mpeg.png");} + .icon-pdf {background-image: url("icons/pdf.png");} + .icon-php {background-image: url("icons/php.png");} + .icon-ppt, .icon-pptx {background-image: url("icons/ppt.png");} + .icon-psd {background-image: url("icons/psd.png");} + .icon-pst {background-image: url("icons/pst.png");} + .icon-pub {background-image: url("icons/pub.png");} + .icon-py {background-image: url("icons/py.png");} + .icon-rb {background-image: url("icons/rb.png");} + .icon-rm, .icon-rmvb {background-image: url("icons/rmvb.png");} + .icon-scss {background-image: url("icons/scss.png");} + .icon-tif {background-image: url("icons/tif.png");} + .icon-txt {background-image: url("icons/txt.png");} + .icon-vsd {background-image: url("icons/vsd.png");} + .icon-wav {background-image: url("icons/wav.png");} + .icon-wma {background-image: url("icons/wma.png");} + .icon-wmv {background-image: url("icons/wmv.png");} + .icon-xls, .icon-xlsx {background-image: url("icons/xls.png");} + .icon-xml {background-image: url("icons/xml.png");} + .icon-zip, .icon-rar, .icon-tgz, .icon-gz, .icon-tar, .icon-7z {background-image: url("icons/zip.png");} + + }//end of wra_body + + .wra_body_server { + height: 380px; + + .online { + display: block !important; + height: 365px; + } + } + + }//start of wrapper + + .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; + + .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; + } + } +} \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/multiimage/multiimage.js b/addons/nkeditor/assets/plugins/multiimage/multiimage.js new file mode 100644 index 0000000..fbc89b3 --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/multiimage.js @@ -0,0 +1,90 @@ +/** + * HTML5 批量文件上传 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ + +KindEditor.plugin('multiimage', function(K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), //单位KB + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+name+"/BUpload.js"); + K.loadStyle(K.options.pluginsPath+name+"/css/upload.css"); + } + + //锁屏插件 + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x : 0, + y : 0, + cls : 'ke-dialog-lock', + width : docWidth, + height : docHeight + }); + } + self.plugin.multiImageDialog = function(options) { + + if ( !window.applicationCache ) { + K.options.errorMsgHandler("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!", "error"); + return; + } + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + + var dialog = new BUpload({ + src : filePostName, + upload_url : uploadJson, + list_url : fileManagerJson, //图片列表数据获取url + max_filesize : imageSizeLimit, + max_filenum : imageUploadLimit, + ext_allow : imageFileTypes, + lang : lang, + top : self.dialogOffset, + fileType : "image", + errorHandler : K.options.errorMsgHandler, + callback : function(data) { + //console.log(data); + clickFn.call(this, data); + }, + close : function () { + locker.remove(); + } + }); + + return dialog; + }; + self.clickToolbar(name, function() { + self.plugin.multiImageDialog({ + clickFn : function (urlList) { + + if (urlList.length === 0) { + return; + } + K.each(urlList, function(i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/multiimage/template/template.html b/addons/nkeditor/assets/plugins/multiimage/template/template.html new file mode 100644 index 0000000..6625f0a --- /dev/null +++ b/addons/nkeditor/assets/plugins/multiimage/template/template.html @@ -0,0 +1,95 @@ +<div class="uedbody"> + <div class="ued_title"> + <div class="uedbar"> + <span>多图上传</span> + </div> + <div class="close_but icon" title="关闭对话框"></div> + </div> + + <div class="wrapper"> + <div id="wra_head" class="wra_head"> + <span class="tab tab-upload focus" tab="upload-panel">本地上传</span> + <span class="tab tab-online" tab="online">文件服务器</span> + <span class="tab tab-search" tab="searchbox">图片搜索</span> + </div> + + <div class="wra_body"> + <div class="tab-panel upload-panel"> + <div class="wra_pla"> + <div class="upload-image-placeholder"> + <div class="btn btn-primary image-select">点击选择图片</div> + <input type="file" name="src" class="webuploader-element-invisible" multiple="multiple"> + </div> + </div> + + <div class="image-list-box" style="display: none;"> + <div class="wra_bar"> + <div class="info fl">选中 {img.num} 张图片,共 {img.size} K</div> + <div class="fr"> + <span class="btn btn-default btn-continue-add">继续添加</span> + <span class="btn btn-primary btn-start-upload">开始上传</span> + </div> + </div> + + <ul class="filelist"> + <?php for ( $i = 0; $i < 20; $i++ ) {?> + <li> + <div class="imgWrap"> + <img src="http://ueditor.baidu.com/server/ueditor/upload/image/3.jpg?noCache=iokrzz5b" width="113" height="113" border="0" /> + </div> + <div class="file-opt-box clearfix"> + <span class="remove">删除</span> + <span class="rotateRight">向右旋转</span> + <span class="rotateLeft">向左旋转</span> + </div> + <div class="success"></div> + <div class="error">这是错误信息</div> + <div class="progress"><span style="display: none; width: 0px;"></span></div> + </li> + <?php }?> + + </ul> + + </div> + </div> + + <div class="tab-panel online"> + <div class="imagelist"> + <ul class="list"> + <li> + <img style="margin-left: -33px;" src="http://ueditor.baidu.com/server/ueditor/upload/image/10.jpg?noCache=iokuzbsf" height="113" width="179"> + <span class="ic <?php if ($i%2==0) {echo "selected";}?>"></span> + </li> + </ul> + <div class="no-data">(⊙o⊙)亲,没有多数据了。</div> + </div> + </div> + + <div class="tab-panel searchbox"> + <div class="search-bar"> + <input class="searTxt" type="text" placeholder="请输入搜索关键词" /> + <input value="百度一下" class="btn btn-primary btn-search" type="button" /> + <input value="清空搜索" class="btn btn-default btn-cancel" type="button" /> + </div> + + <div class="search-imagelist-box"> + <ul class="search-list"> + <li> + <img style="margin-left: -33px;" src="http://ueditor.baidu.com/server/ueditor/upload/image/10.jpg?noCache=iokuzbsf" height="113" width="179"> + <span class="ic <?php if ($i%2==0) {echo "selected";}?>"></span> + </li> + </ul> + <div class="no-data">(⊙o⊙)亲,没有多数据了。</div> + </div> + </div> + + <div class="loading-icon"></div> + </div><!-- end of wrapper --> + + </div> + + <div class="wra-btn-group"> + <span class="btn btn-primary btn-confirm">确认</span> + <span class="btn btn-default btn-cancel">取消</span> + </div> +</div> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/pagebreak/pagebreak.js b/addons/nkeditor/assets/plugins/pagebreak/pagebreak.js new file mode 100644 index 0000000..dfa883a --- /dev/null +++ b/addons/nkeditor/assets/plugins/pagebreak/pagebreak.js @@ -0,0 +1,27 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('pagebreak', function(K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />'); + + self.clickToolbar(name, function() { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<span id="__kindeditor_tail_tag__"></span>'; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); diff --git a/addons/nkeditor/assets/plugins/plainpaste/plainpaste.js b/addons/nkeditor/assets/plugins/plainpaste/plainpaste.js new file mode 100644 index 0000000..8f7bed8 --- /dev/null +++ b/addons/nkeditor/assets/plugins/plainpaste/plainpaste.js @@ -0,0 +1,41 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('plainpaste', function(K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' + + '</div>', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>'); + } else { + html = html.replace(/\n/g, '<br />$&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/addons/nkeditor/assets/plugins/preview/preview.js b/addons/nkeditor/assets/plugins/preview/preview.js new file mode 100644 index 0000000..029c227 --- /dev/null +++ b/addons/nkeditor/assets/plugins/preview/preview.js @@ -0,0 +1,134 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('preview', function(K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '<div style="padding:10px 20px;">' + + '<iframe class="ke-textarea" frameborder="0" style="width:'+(width-42)+'px;height:'+height+'px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name : name, + width : width, + title : self.lang(name), + body : html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '<html lang="en">', + '<head><meta charset="utf-8" /><title></title>', + //'<link href="http://localhost/editor/nkeditor/plugins/code/prettify.css" rel="stylesheet">', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/flash.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/play.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}' + ]; + + if (self.options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + // 加载 css + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath+'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath+'code/prism.css'); + } + K.each(cssPath, function(i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (self.options.cssData) { + arr.push('<style>' + self.options.cssData + '</style>'); + } + arr.push('</head><body ' + (self.options.bodyClass ? 'class="' + self.options.bodyClass + '"' : '') + '>'); + // 获取编辑器内容 + arr.push(self.fullHtml()); + // 加载脚本 + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + // 加载代码高亮的脚本 + if (K.inArray(self.options.pluginsPath+'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath+'code/prism.js'); + } + K.each(jsPath, function(i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); diff --git a/addons/nkeditor/assets/plugins/quickformat/quickformat.js b/addons/nkeditor/assets/plugins/quickformat/quickformat.js new file mode 100644 index 0000000..5b98c72 --- /dev/null +++ b/addons/nkeditor/assets/plugins/quickformat/quickformat.js @@ -0,0 +1,81 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('quickformat', function(K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + self.clickToolbar(name, function() { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while(child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function(i, subList) { + var wrapper = K('<p style="text-indent:2em;"></p>', doc); + subList[0].before(wrapper); + K.each(subList, function(i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/** +-------------------------- +abcd<br /> +1234<br /> + +to + +<p style="text-indent:2em;"> + abcd<br /> + 1234<br /> +</p> + +-------------------------- + + abcd<img>1233 +<p>1234</p> + +to + +<p style="text-indent:2em;">abcd<img>1233</p> +<p style="text-indent:2em;">1234</p> + +-------------------------- +*/ \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/quote/quote.js b/addons/nkeditor/assets/plugins/quote/quote.js new file mode 100644 index 0000000..b4daca4 --- /dev/null +++ b/addons/nkeditor/assets/plugins/quote/quote.js @@ -0,0 +1,12 @@ +/** + * 引用插件 + * @author yangjian + */ +KindEditor.plugin('quote', function(K) { + var self = this; + var name = 'quote'; + self.clickToolbar(name, function() { + self.insertHtml('<blockquote class="ke-quote"><p>这里输入引用内容...</p></blockquote><br/>'); + self.focus(); + }); +}); diff --git a/addons/nkeditor/assets/plugins/table/table.js b/addons/nkeditor/assets/plugins/table/table.js new file mode 100644 index 0000000..1068edc --- /dev/null +++ b/addons/nkeditor/assets/plugins/table/table.js @@ -0,0 +1,746 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('table', function(K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + // 设置颜色 + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + // 初始化取色器 + var pickerList = []; + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + function removePicker() { + K.each(pickerList, function() { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + colorBox.click(function(e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x : pos.x, + y : pos.y + box.height(), + z : 811214, + selectedColor : K(this).html(), + colors : self.colorTable, + noColor : self.lang('noColor'), + shadowMode : self.shadowMode, + click : function(color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + // 取得下一行cell的index + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + self.plugin.table = { + //insert or modify table + prop : function(isInsert) { + var html = [ + '<div class="ke-dialog-content-inner">', + //rows, cols + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keRows" class="row-left">' + lang.cells + ':</label>', + '<div class="row-right">', + lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ', + lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />', + '</div>', + '</div>', + //width, height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '</div>', + //space, padding + '<div class="ke-dialog-row ke-clearfix">', + '<label for="kePadding" class="row-left">' + lang.space + ':</label>', + '<div class="row-right">', + lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ', + lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />', + '</div>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<select id="keAlign" class="ke-select" name="align">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select>', + '</div>', + '</div>', + //border + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" class="row-left">' + lang.border + ':</label>', + '<div class="row-right">', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + //background color + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" class="row-left">' + lang.backgroundColor + ':</label>', + '<div class="row-right">', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + //modify table + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + //insert new table + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '<table class="table"'; + if (style !== '') { + html += ' style="' + style + '"'; + } + if (padding !== '') { + html += ' cellpadding="' + padding + '"'; + } + if (spacing !== '') { + html += ' cellspacing="' + spacing + '"'; + } + if (align !== '') { + html += ' align="' + align + '"'; + } + if (border !== '') { + html += ' border="' + border + '"'; + } + if (border === '' || border === '0') { + html += ' class="table ' + zeroborder + '"'; + } + if (borderColor !== '') { + html += ' bordercolor="' + borderColor + '"'; + } + html += '>'; + for (var i = 0; i < rows; i++) { + html += '<tr>'; + for (var j = 0; j < cols; j++) { + html += '<td>' + (K.IE ? ' ' : '<br />') + '</td>'; + } + html += '</tr>'; + } + html += '</table>'; + if (!K.IE) { + html += '<br />'; + } + // 取得range的block标签 + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + // 如果是在 p 标签中插入表格,则自动删除当前 p 标签 + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('<br />'); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), borderColor); + _setColor(colorBox.eq(1), ''); + // foucs and select + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + //get selected table node + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + //modify cell + cellprop : function() { + var html = [ + '<div style="padding:20px;">', + //width, height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" style="width:90px;">' + lang.size + '</label>', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" style="width:90px;">' + lang.align + '</label>', + lang.textAlign + ' <select id="keAlign" name="textAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select> ', + lang.verticalAlign + ' <select name="verticalAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="top">' + lang.alignTop + '</option>', + '<option value="middle">' + lang.alignMiddle + '</option>', + '<option value="bottom">' + lang.alignBottom + '</option>', + '<option value="baseline">' + lang.alignBaseline + '</option>', + '</select>', + '</div>', + //border + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" style="width:90px;">' + lang.border + '</label>', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + //background color + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang('tablecell'), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width : width !== '' ? (width + widthType) : '', + height : height !== '' ? (height + heightType) : '', + 'background-color' : bgColor, + 'text-align' : textAlign, + 'vertical-align' : verticalAlign, + 'border-width' : border, + 'border-style' : border !== '' ? 'solid' : '', + 'border-color' : borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), '#000000'); + _setColor(colorBox.eq(1), ''); + // foucs and select + widthBox[0].focus(); + widthBox[0].select(); + // get selected cell + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert : function() { + this.prop(true); + }, + 'delete' : function() { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + // 取得第一行的index + index += table.rows[0].cells.length - row.cells.length; + + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '<br />'; + // 调整下一行的单元格index + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft : function() { + this.colinsert(0); + }, + colinsertright : function() { + this.colinsert(1); + }, + rowinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + + for (var i = 0, len = row.cells.length; i < len; i++) { + // 调整cell个数 + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + // copy colspan + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + // 调整rowspan + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove : function() { + this.rowinsert(0); + }, + rowinsertbelow : function() { + this.rowinsert(1); + }, + rowmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + nextRowIndex = rowIndex + cell.rowSpan, // 下一行的index + nextRow = table.rows[nextRowIndex]; // 下一行 + // 最后一行不能合并 + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; // 下一行单元格的index + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; // 下一行单元格 + // 上下行的colspan不一致时不能合并 + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + // 最后一列不能合并 + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + // 左右列的rowspan不一致时不能合并 + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 不是可分割单元格 + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + // 调整下一行的单元格index + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + // 不是可分割单元格 + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + // 跳过不需要删除的行 + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 从下到上删除 + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); diff --git a/addons/nkeditor/assets/plugins/template/html/1.html b/addons/nkeditor/assets/plugins/template/html/1.html new file mode 100644 index 0000000..034126b --- /dev/null +++ b/addons/nkeditor/assets/plugins/template/html/1.html @@ -0,0 +1,14 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <h3> + <img align="left" height="100" style="margin-right: 10px" width="100" />在此处输入标题 + </h3> + <p> + 在此处输入内容 + </p> +</body> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/template/html/2.html b/addons/nkeditor/assets/plugins/template/html/2.html new file mode 100644 index 0000000..dc2584a --- /dev/null +++ b/addons/nkeditor/assets/plugins/template/html/2.html @@ -0,0 +1,42 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <h3> + 标题 + </h3> + <table style="width:100%;" cellpadding="2" cellspacing="0" border="1"> + <tbody> + <tr> + <td> + <h3>标题1</h3> + </td> + <td> + <h3>标题1</h3> + </td> + </tr> + <tr> + <td> + 内容1 + </td> + <td> + 内容2 + </td> + </tr> + <tr> + <td> + 内容3 + </td> + <td> + 内容4 + </td> + </tr> + </tbody> + </table> + <p> + 表格说明 + </p> +</body> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/template/html/3.html b/addons/nkeditor/assets/plugins/template/html/3.html new file mode 100644 index 0000000..873f0c6 --- /dev/null +++ b/addons/nkeditor/assets/plugins/template/html/3.html @@ -0,0 +1,36 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <p> + 在此处输入内容 + </p> + <ol> + <li> + 描述1 + </li> + <li> + 描述2 + </li> + <li> + 描述3 + </li> + </ol> + <p> + 在此处输入内容 + </p> + <ul> + <li> + 描述1 + </li> + <li> + 描述2 + </li> + <li> + 描述3 + </li> + </ul> +</body> +</html> \ No newline at end of file diff --git a/addons/nkeditor/assets/plugins/template/template.js b/addons/nkeditor/assets/plugins/template/template.js new file mode 100644 index 0000000..30d0dc3 --- /dev/null +++ b/addons/nkeditor/assets/plugins/template/template.js @@ -0,0 +1,58 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('template', function(K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + arr = ['<div class="ke-dialog-content-inner" style="padding-top:0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header" style="height: 32px;">', + // left start + lang. selectTemplate + ' <select class="ke-select">']; + K.each(lang.fileList, function(key, val) { + arr.push('<option value="' + key + '">' + val + '</option>'); + }); + html = [arr.join(''), + '</select>', + // right start + '<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>', + '</div>', + '</div>', + + //template iframe + '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function() { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); diff --git a/addons/nkeditor/assets/plugins/wordpaste/wordpaste.js b/addons/nkeditor/assets/plugins/wordpaste/wordpaste.js new file mode 100644 index 0000000..9f828e0 --- /dev/null +++ b/addons/nkeditor/assets/plugins/wordpaste/wordpaste.js @@ -0,0 +1,79 @@ +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + +KindEditor.plugin('wordpaste', function (K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function () { + var jsonp = function (url, callback) { + var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random()); + window[callbackName] = function (data) { + delete window[callbackName]; + document.body.removeChild(script); + callback(data); + }; + + var script = document.createElement('script'); + script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName; + document.body.appendChild(script); + }; + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + if (typeof self.wordImageServer !== 'undefined' && self.wordImageServer) { + var i = 0; + var arr = []; + var replacedStr = str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/ig, function (value) { + arr[i] = value; + var replaced = "##" + i + "##"; + i++; + return replaced; + }); + for (var j = 0; j < arr.length; j++) { + jsonp("http://" + self.wordImageServer + "/word?index=" + j + "&file=" + encodeURIComponent(arr[j]), function (data) { + K.uploadwordimage.call(self, data.index, data.info); + }); + } + str = replacedStr; + } + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('<!doctype html><html><head><title>WordPaste</title></head>'); + doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">'); + if (!K.IE) { + doc.write('<br />'); + } + doc.write('</body></html>'); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); diff --git a/addons/nkeditor/assets/themes/app.css b/addons/nkeditor/assets/themes/app.css new file mode 100644 index 0000000..baba45f --- /dev/null +++ b/addons/nkeditor/assets/themes/app.css @@ -0,0 +1,96 @@ +/* 引用样式 */ +blockquote { + padding: 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-left-color: #ce4844; + border-radius: 3px; +} + +blockquote, q { + quotes: none; +} + +/* 表格样式 */ +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +.table { + border-collapse: collapse !important; +} + +.table td, +.table th { + background-color: #fff !important; + border: 1px solid #ddd; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd !important; +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} + +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} + +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} + +.table > tbody + tbody { + border-top: 2px solid #ddd; +} + +.table .table { + background-color: #fff; +} + +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} + +.ke-content img { + max-width: 100%; +} diff --git a/addons/nkeditor/assets/themes/black/editor.css b/addons/nkeditor/assets/themes/black/editor.css new file mode 100644 index 0000000..a84525c --- /dev/null +++ b/addons/nkeditor/assets/themes/black/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-black .ke-toolbar { + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-black .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-black .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-black .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-black .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-black .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-black .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-black .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-black .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-black .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-black .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-black .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-black .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-black .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-black .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-black .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-black .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-black .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-black .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-black .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-black .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-black .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-black .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-black .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-black .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-black .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-black .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-black .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-black .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-black .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-black .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-black .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-black .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-black .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-black .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-black .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-black .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-black .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-black .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-black .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-black .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-black .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-black .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-black .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-black .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-black .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-black .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-black .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-black .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-black .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-black .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-black .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-black .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-black .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-black .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-black .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/addons/nkeditor/assets/themes/black/editor.css.map b/addons/nkeditor/assets/themes/black/editor.css.map new file mode 100644 index 0000000..6d1b06d --- /dev/null +++ b/addons/nkeditor/assets/themes/black/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/black/editor.min.css b/addons/nkeditor/assets/themes/black/editor.min.css new file mode 100644 index 0000000..f5d26e0 --- /dev/null +++ b/addons/nkeditor/assets/themes/black/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-black .ke-toolbar{border-top:5px solid #222;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-black .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-black .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-black .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-black .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-black .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-black .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-black .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-black .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-black .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-black .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-black .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-black .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-black .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-black .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-black .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-black .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-black .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-black .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-black .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-black .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-black .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-black .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-black .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-black .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-black .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-black .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-black .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-black .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-black .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-black .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-black .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-black .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-black .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-black .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-black .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-black .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-black .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-black .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-black .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-black .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-black .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-black .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-black .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-black .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-black .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-black .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-black .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-black .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-black .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-black .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-black .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-black .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-black .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-black .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-black .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/black/editor.scss b/addons/nkeditor/assets/themes/black/editor.scss new file mode 100644 index 0000000..3148e8c --- /dev/null +++ b/addons/nkeditor/assets/themes/black/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-black { + .ke-toolbar { + + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-black { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/black/images/nkeditor.png b/addons/nkeditor/assets/themes/black/images/nkeditor.png new file mode 100644 index 0000000..f3fbea2 Binary files /dev/null and b/addons/nkeditor/assets/themes/black/images/nkeditor.png differ diff --git a/addons/nkeditor/assets/themes/black/images/nkeditor.svg b/addons/nkeditor/assets/themes/black/images/nkeditor.svg new file mode 100644 index 0000000..56416dd --- /dev/null +++ b/addons/nkeditor/assets/themes/black/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#333" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#333" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#333" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#333" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#333" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#333" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#333" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#333" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#333" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#333" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#333" d="M3 10h7v1h-7v-1z"></path> +<path fill="#333" d="M3 8h7v1h-7v-1z"></path> +<path fill="#333" d="M3 12h4v1h-4v-1z"></path> +<path fill="#333" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#333" d="M3 6h7v1h-7v-1z"></path> +<path fill="#333" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#333" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#333" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#333" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#333" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#333" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#333" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#333" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#333" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#333" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#333" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#333" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#333" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#333" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#333" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#333" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#333" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#333" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#333" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#333" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#333" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#333" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#333" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#333" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#333" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#333" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#333" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#333" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#333" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#333" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#333" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#333" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#333" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#333" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#333" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#333" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#333" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#333" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#333" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#333" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#333" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#333" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#333" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#333" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#333" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#333" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#333" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#333" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#333" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#333" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#333" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#333" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#333" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#333" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#333" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#333" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#333" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#333" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#333" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#333" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#333" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#333" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#333" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#333" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#333" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#333" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#333" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#333" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#333" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#333" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#333" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#333" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#333" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#333" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#333" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#333" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#333" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#333" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#333" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#333" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#333" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#333" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#333" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#333" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#333" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#333" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#333" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#333" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#333" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#333" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/addons/nkeditor/assets/themes/blue/editor.css b/addons/nkeditor/assets/themes/blue/editor.css new file mode 100644 index 0000000..7a14292 --- /dev/null +++ b/addons/nkeditor/assets/themes/blue/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-blue .ke-toolbar { + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-blue .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-blue .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-blue .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-blue .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-blue .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-blue .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-blue .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-blue .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-blue .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-blue .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-blue .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-blue .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-blue .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-blue .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-blue .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-blue .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-blue .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-blue .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-blue .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-blue .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-blue .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-blue .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-blue .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-blue .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-blue .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-blue .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-blue .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-blue .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-blue .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-blue .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-blue .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-blue .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-blue .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-blue .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-blue .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-blue .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-blue .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-blue .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-blue .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-blue .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-blue .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-blue .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-blue .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-blue .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-blue .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-blue .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-blue .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-blue .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-blue .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-blue .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-blue .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/addons/nkeditor/assets/themes/blue/editor.css.map b/addons/nkeditor/assets/themes/blue/editor.css.map new file mode 100644 index 0000000..01a6d6f --- /dev/null +++ b/addons/nkeditor/assets/themes/blue/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAgCA;;EAEE;AAEF,YAAa;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;;AAEf,kBAAmB;EACf,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,CAAC;EACZ,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AAGtB,YAAa;EACT,SAAS,EAAE,MAAM;EACjB,kBAAkB,EAAE,IAAI;EACxB,mBAAmB,EAAE,IAAI;;AAE7B,iBAQC;EAPG,IAAK;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,sBAAsB;EAErC,GAAI;IACA,OAAO,EAAE,CAAC;AAKlB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;;AAEhB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EACN,QAAQ,EAAE,QAAQ;;AAGtB;;GAEG;AACH,aAAc;EAEV,OAAO,EAAE,KAAK;EAEd,gBAAgB,EAAE,IAAI;EACtB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,gEAA0D;EAEtE;;KAEG;EAcH;;KAEG;EA0DH;;KAEG;EAwBH;;KAEG;EArGH,wBAAW;IAvEX,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,mBAAmB;IACpC,kBAAkB,EAAE,mBAAmB;IACvC,MAAM,EAAE,oFAAoF;IAsExF,gBAAgB,EAAE,OAAO;EAG7B;;;kCAGmB;IACf,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAMzB,yBAAY;IAER,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,OAAO;IAEhB,qCAAY;MAER,OAAO,EAAE,QAAQ;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;MAEX;;SAEG;MACH,sDAAiB;QApHzB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO;IAoHX,gCAAO;MACH,UAAU,EAAE,OAAO;IAEvB,sCAAa;MACT,gBAAgB,EAAE,OAAO;IAE7B,sCAAa;MACT,MAAM,EAAE,OAAO;IAEnB,uCAAc;MACV,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,OAAO;MACf,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;MAChB,KAAK,EAAE,CAAC;MACR,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,QAAQ,EAAE,MAAM;MAChB,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;IAEf,gCAAO;MACH,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,sBAAsB;MAC7B,UAAU,EAAE,OAAO;EAQ3B,sBAAS;IACL,OAAO,EAAE,CAAC;IAEV;4CACkB;MACd,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,IAAI;IAElB,wCAAkB;MACd,IAAI,EAAE,4FAA4F;MAClG,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,IAAI;MACd,MAAM,EAAE,IAAI;MAEZ,8CAAQ;QACJ,OAAO,EAAE,IAAI;EASzB,2BAAc;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,OAAO;IACzB,UAAU,EAvMG,iBAAiB;IAwM9B,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;IAEb,qDAA0B;MACtB,mBAAmB,EAAE,WAAW;MAChC,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;IAGhB,oDAAyB;MACrB,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,SAAS;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;;AAMxB;;OAEO;AACP,QAAS;EACL,MAAM,EArOW,iBAAiB;EAsOlC,gBAAgB,EArOL,OAAO;EAsOlB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,wCAAwC;EACrD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAgEhB;;KAEG;EAhEH,sBAAc;IACV,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,OAAO;IAEf,uCAAiB;MAlPrB,OAAO,EAAE,iBAAiB;MAC1B,OAAO,EAAE,YAAY;MACrB,cAAc,EAAE,MAAM;MACtB,IAAI,EAAE,CAAC;MACP,QAAQ,EAAE,MAAM;MAiPR,wDAAiB;QArPzB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;IAsPZ,yCAAmB;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,QAAQ,EAAE,MAAM;IAKpB,2CAAqB;MACjB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;IAGpB,8CAAwB;MACpB,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;IAGnC,0CAAoB;MAChB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;IAGpB,yCAAmB;MACf,MAAM,EAAE,KAAK;MACb,MAAM,EAAE,CAAC;MACT,QAAQ,EAAE,MAAM;MAChB,UAAU,EAjSD,iBAAiB;MAkS1B,aAAa,EAAE,iBAAiB;MAChC,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;EAIvB,yBAAiB;IACb,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;EAM7B,6BAAqB;IACjB,QAAQ,EAAE,QAAQ;IAElB,yCAAY;MACR,QAAQ,EAAE,QAAQ;MAClB,UAAU,EAAE,MAAM;MAClB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,IAAI;MACb,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,iBAAiB;MACzB,gBAAgB,EAAE,OAAO;MACzB,OAAO,EAAE,IAAI;MAEb,yDAAgB;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IAIlB,uCAAU;MACN,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,eAAe,EAAE,QAAQ;MAEzB,gDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,OAAO;QAEf,wDAAQ;UACJ,OAAO,EAAE,KAAK;UACd,iBAAiB,EAAE,SAAS;UAC5B,QAAQ,EAAE,MAAM;UAChB,MAAM,EAAE,GAAG;UACX,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;MAGjB,8CAAO;QACH,MAAM,EAAE,iBAAiB;QACzB,gBAAgB,EAAE,OAAO;IAIjC,sCAAS;MACL,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MACV,MAAM,EAAE,CAAC;MACT,IAAI,EAAE,+CAA+C;MACrD,KAAK,EAAE,IAAI;MACX,eAAe,EAAE,IAAI;;AAOjC;;GAEG;AACH,eAAgB;EACZ,MAAM,EAAE,iBAAiB;EACzB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EAEZ,qCAAsB;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,QAAQ;IAEzB,0DAAqB;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MAEV,qFAA2B;QACvB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;IAGjB,8DAAyB;MACrB,WAAW,EAAE,wCAAwC;MACrD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;IAEtB,6DAAwB;MACpB,MAAM,EAAE,iBAAiB;IAE7B,mEAA8B;MAC1B,MAAM,EAAE,iBAAiB;;AAMrC;;GAEG;AACH,UAAW;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAxaW,iBAAiB;EAyalC,IAAI,EAAE,CAAC;EAnZP,UAAU,EAAE,mBAAmB;EAC/B,eAAe,EAAE,mBAAmB;EACpC,kBAAkB,EAAE,mBAAmB;EACvC,MAAM,EAAE,oFAAoF;EAkZ5F,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,GAAG;EACvB,qBAAqB,EAAE,GAAG;EAC1B,QAAQ,EAAE,MAAM;EAGhB,4BAAkB;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,kEAAkE;IAC9E,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAEZ,kDAAsB;MAClB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;MACf,UAAU,EAAE,sCAAsC;MAClD,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MAER,wDAAQ;QACJ,mBAAmB,EAAE,SAAS;EAO1C,6BAAmB;IAEf,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IAGP,6CAAgB;MACZ,IAAI,EAAE,iDAAiD;MACvD,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;MAChB,KAAK,EAAE,IAAI;MAEX,0DAAa;QACT,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,iBAA2B;QAEnC,gEAAQ;UACJ,YAAY,EAhfP,OAAO;UAifZ,OAAO,EAAE,IAAI;MAIrB,wDAAW;QACP,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,iBAA2B;QACnC,MAAM,EA5fP,IAAI;MA8fP,sDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;MAGd,8DAAiB;QACb,KAAK,EAAE,IAAI;MAGf,gEAAmB;QACf,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAC,GAAG;MAGX,sDAAS;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,IAAI;QAEZ,4DAAQ;UACJ,OAAO,EAAE,IAAI;MAIrB,4DAAe;QACX,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,KAAK;QAChB,MAAM,EA1hBP,IAAI;QA2hBH,WAAW,EA3hBZ,IAAI;QA4hBH,MAAM,EAAC,iBAA2B;QAClC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,MAAM;QAEhB,kEAAQ;UACJ,YAAY,EAriBP,OAAO;MAyiBpB,6DAAgB;QACZ,MAAM,EAxiBD,iBAAiB;QAyiBtB,gBAAgB,EAAE,OAAO;QACzB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;MAGpB,6DAAgB;QACZ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,GAAG,EAAC,IAAI;QACR,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QAEb,6EAAgB;UACZ,QAAQ,EAAE,QAAQ;UAClB,SAAS,EAAE,IAAI;UACf,GAAG,EAAE,CAAC;UACN,KAAK,EAAE,CAAC;UACR,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,MAAM;UACf,MAAM,EAAE,MAAM;UACd,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,OAAO;UACf,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,gBAAgB;QAI5B,+EAAkB;UACd,GAAG,EAAE,IAAI;QAEb,wEAAW;UACP,OAAO,EAAE,QAAQ;MAIzB,sEAAyB;QACrB,OAAO,EAAE,kBAAkB;QAkE3B;;WAEG;QAlEH,qFAAe;UACX,MAAM,EAAC,iBAAiB;UACxB,aAAa,EAAE,IAAI;UACnB,QAAQ,EAAE,MAAM;UAEhB,+FAAU;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;UAErB,gGAAW;YACP,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;YAEhB,iHAAiB;cAxmBrC,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAumBQ,mIAAkB;gBACd,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,IAAI;YAIjB,sGAAM;cACF,MAAM,EAAE,OAAO;cACf,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,UAAU,EAAE,KAAK;cACjB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAEhB,0GAAI;gBACA,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,YAAY;gBACrB,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,MAAM;QAShC,iFAAW;UACP,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UAEjB,gGAAe;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;UAErB,4FAAW;YACP,OAAO,EAAE,QAAQ;UAErB,2FAAU;YACN,WAAW,EAAC,IAAI;QAOxB,+EAAS;UACL,IAAI,EAAE,+CAA+C;UACrD,aAAa,EAlqBZ,iBAAiB;UAmqBlB,aAAa,EAAE,IAAI;UAEnB,2FAAY;YACR,UAAU,EAAE,iBAAiB;YAC7B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YAEV,uGAAY;cACR,QAAQ,EAAE,QAAQ;cAClB,MAAM,EAAE,YAAY;cACpB,OAAO,EAAE,MAAM;cACf,KAAK,EAAE,IAAI;cACX,WAAW,EAAE,IAAI;cACjB,UAAU,EAAE,MAAM;cAClB,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;YAEnB,gHAAqB;cACjB,gBAAgB,EAAE,IAAI;cACtB,MAAM,EAtrBb,iBAAiB;cAurBV,aAAa,EAAE,cAAc;cAC7B,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;cACf,sBAAsB,EAAE,GAAG;cAC3B,uBAAuB,EAAE,GAAG;YAGhC,0GAAe;cACX,gBAAgB,EAAE,IAAI;cACtB,KAAK,EAAE,IAAI;IAU/B,gDAAmB;MACf,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,GAAG;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;MAElB,2EAA2B;QACvB,UAAU,EAAE,6CAA6C;QACzD,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;EAM9B,4BAAkB;IACd,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,YAAY;IACrB,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IAEZ,2CAAe;MACX,MAAM,EAAE,GAAG;IAGf,0CAAc;MACV,MAAM,EAAE,gBAAgB;EAIhC,4BAAkB;IACd,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO;EAGnB,2BAAiB;IACb,mBAAmB,EAAE,OAAO;IAC5B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM;IACtB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAGpB,qBAAW;IACP,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,wDAAwD;IAEpE,2BAAQ;MACJ,MAAM,EA7wBG,iBAAiB;MA8wB1B,gBAAgB,EAAE,OAAO;EAIjC,yBAAe;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,OAAO;IACf,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,YAAY;IAExB,+BAAQ;MACJ,MAAM,EAAE,iBAAiB;MACzB,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,EAAE;;AClyBnB,8BAAY;EAER,UAAU,EAAE,iBAAiB;EAC7B,UAAU,EAAE,gEAAgE;EAC5E,eAAe,EAAE,WAAW;EAC5B,cAAc,EAAE,kBAAkB;EAElC,+CAAiB;IACb,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,8CAAgB;IACZ,mBAAmB,EAAE,KAAK;EAE9B,+CAAiB;IACb,mBAAmB,EAAE,OAAO;EAEhC,6CAAe;IACX,mBAAmB,EAAE,OAAO;EAEhC,4CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,4CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,qDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,yDAA2B;IACvB,mBAAmB,EAAE,QAAQ;EAGjC,2DAA6B;IACzB,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,+CAAiB;IACb,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,4CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,qDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,+CAAiB;IACb,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,0CAAY;IACR,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,8CAAgB;IACZ,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,6CAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,eAAe;EAG1B,iDAAmB;IACf,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,gDAAkB;IACd,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,2CAAa;IACT,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,mDAAqB;IACjB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;;AAKzC;;GAEG;AAKK,8CAAmB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,MAAM;EAEhB,+DAAiB;IDrRzB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,OAAO;ICiRH,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,mEAAqB;IACjB,mBAAmB,EAAE,QAAQ;IAC7B,KAAK,EAAE,eAAe;EAG1B,mEAAqB;IACjB,mBAAmB,EAAE,SAAS;EAGlC,0EAA4B;IACxB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,sEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,sEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,iEAAmB;IACf,mBAAmB,EAAE,SAAS;EAElC,sEAAwB;IACpB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,qEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,qEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAIlC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,4DAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,+DAAiB;IACb,mBAAmB,EAAE,SAAS", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/blue/editor.min.css b/addons/nkeditor/assets/themes/blue/editor.min.css new file mode 100644 index 0000000..5297fab --- /dev/null +++ b/addons/nkeditor/assets/themes/blue/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-blue .ke-toolbar{border-top:5px solid #1296db;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-blue .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-blue .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-blue .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-blue .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-blue .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-blue .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-blue .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-blue .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-blue .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-blue .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-blue .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-blue .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-blue .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-blue .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-blue .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-blue .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-blue .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-blue .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-blue .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-blue .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-blue .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-blue .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-blue .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-blue .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-blue .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-blue .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-blue .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-blue .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-blue .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-blue .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-blue .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-blue .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-blue .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-blue .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-blue .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-blue .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-blue .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-blue .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-blue .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-blue .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-blue .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-blue .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-blue .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-blue .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-blue .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-blue .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-blue .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-blue .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-blue .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-blue .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-blue .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-blue .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-blue .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-blue .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/blue/editor.scss b/addons/nkeditor/assets/themes/blue/editor.scss new file mode 100644 index 0000000..56739c1 --- /dev/null +++ b/addons/nkeditor/assets/themes/blue/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-blue { + .ke-toolbar { + + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-blue { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/blue/images/nkeditor.png b/addons/nkeditor/assets/themes/blue/images/nkeditor.png new file mode 100644 index 0000000..6cf968a Binary files /dev/null and b/addons/nkeditor/assets/themes/blue/images/nkeditor.png differ diff --git a/addons/nkeditor/assets/themes/blue/images/nkeditor.svg b/addons/nkeditor/assets/themes/blue/images/nkeditor.svg new file mode 100644 index 0000000..5f12453 --- /dev/null +++ b/addons/nkeditor/assets/themes/blue/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#1296db" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#1296db" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#1296db" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#1296db" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#1296db" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#1296db" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#1296db" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#1296db" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#1296db" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#1296db" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#1296db" d="M3 10h7v1h-7v-1z"></path> +<path fill="#1296db" d="M3 8h7v1h-7v-1z"></path> +<path fill="#1296db" d="M3 12h4v1h-4v-1z"></path> +<path fill="#1296db" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#1296db" d="M3 6h7v1h-7v-1z"></path> +<path fill="#1296db" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#1296db" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#1296db" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#1296db" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#1296db" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#1296db" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#1296db" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#1296db" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#1296db" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#1296db" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#1296db" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#1296db" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#1296db" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#1296db" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#1296db" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#1296db" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#1296db" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#1296db" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#1296db" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#1296db" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#1296db" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#1296db" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#1296db" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#1296db" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#1296db" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#1296db" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#1296db" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#1296db" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#1296db" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#1296db" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#1296db" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#1296db" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#1296db" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#1296db" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#1296db" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#1296db" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#1296db" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#1296db" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#1296db" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#1296db" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#1296db" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#1296db" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#1296db" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#1296db" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#1296db" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#1296db" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#1296db" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#1296db" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#1296db" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#1296db" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#1296db" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#1296db" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#1296db" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#1296db" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#1296db" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#1296db" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#1296db" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#1296db" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#1296db" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#1296db" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#1296db" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#1296db" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#1296db" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#1296db" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#1296db" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#1296db" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#1296db" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#1296db" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#1296db" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#1296db" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#1296db" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#1296db" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#1296db" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#1296db" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#1296db" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#1296db" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#1296db" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#1296db" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#1296db" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#1296db" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#1296db" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#1296db" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#1296db" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#1296db" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#1296db" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#1296db" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#1296db" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#1296db" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/addons/nkeditor/assets/themes/common/anchor.gif b/addons/nkeditor/assets/themes/common/anchor.gif new file mode 100644 index 0000000..61145ea Binary files /dev/null and b/addons/nkeditor/assets/themes/common/anchor.gif differ diff --git a/addons/nkeditor/assets/themes/common/blank.gif b/addons/nkeditor/assets/themes/common/blank.gif new file mode 100644 index 0000000..5bfd67a Binary files /dev/null and b/addons/nkeditor/assets/themes/common/blank.gif differ diff --git a/addons/nkeditor/assets/themes/common/common.css b/addons/nkeditor/assets/themes/common/common.css new file mode 100644 index 0000000..a92c5de --- /dev/null +++ b/addons/nkeditor/assets/themes/common/common.css @@ -0,0 +1,605 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +/*# sourceMappingURL=common.css.map */ diff --git a/addons/nkeditor/assets/themes/common/common.css.map b/addons/nkeditor/assets/themes/common/common.css.map new file mode 100644 index 0000000..0844fe0 --- /dev/null +++ b/addons/nkeditor/assets/themes/common/common.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAgCA;;EAEE;AAEF,YAAa;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;;AAEf,kBAAmB;EACf,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,CAAC;EACZ,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AAGtB,YAAa;EACT,SAAS,EAAE,MAAM;EACjB,kBAAkB,EAAE,IAAI;EACxB,mBAAmB,EAAE,IAAI;;AAE7B,iBAQC;EAPG,IAAK;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,sBAAsB;EAErC,GAAI;IACA,OAAO,EAAE,CAAC;AAKlB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;;AAEhB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EACN,QAAQ,EAAE,QAAQ;;AAGtB;;GAEG;AACH,aAAc;EAEV,OAAO,EAAE,KAAK;EAEd,gBAAgB,EAAE,IAAI;EACtB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,gEAA0D;EAEtE;;KAEG;EAcH;;KAEG;EA0DH;;KAEG;EAwBH;;KAEG;EArGH,wBAAW;IAvEX,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,mBAAmB;IACpC,kBAAkB,EAAE,mBAAmB;IACvC,MAAM,EAAE,oFAAoF;IAsExF,gBAAgB,EAAE,OAAO;EAG7B;;;kCAGmB;IACf,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAMzB,yBAAY;IAER,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,OAAO;IAEhB,qCAAY;MAER,OAAO,EAAE,QAAQ;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;MAEX;;SAEG;MACH,sDAAiB;QApHzB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO;IAoHX,gCAAO;MACH,UAAU,EAAE,OAAO;IAEvB,sCAAa;MACT,gBAAgB,EAAE,OAAO;IAE7B,sCAAa;MACT,MAAM,EAAE,OAAO;IAEnB,uCAAc;MACV,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,OAAO;MACf,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;MAChB,KAAK,EAAE,CAAC;MACR,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,QAAQ,EAAE,MAAM;MAChB,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;IAEf,gCAAO;MACH,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,sBAAsB;MAC7B,UAAU,EAAE,OAAO;EAQ3B,sBAAS;IACL,OAAO,EAAE,CAAC;IAEV;4CACkB;MACd,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,IAAI;IAElB,wCAAkB;MACd,IAAI,EAAE,4FAA4F;MAClG,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,IAAI;MACd,MAAM,EAAE,IAAI;MAEZ,8CAAQ;QACJ,OAAO,EAAE,IAAI;EASzB,2BAAc;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,OAAO;IACzB,UAAU,EAvMG,iBAAiB;IAwM9B,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;IAEb,qDAA0B;MACtB,mBAAmB,EAAE,WAAW;MAChC,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;IAGhB,oDAAyB;MACrB,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,SAAS;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;;AAMxB;;OAEO;AACP,QAAS;EACL,MAAM,EArOW,iBAAiB;EAsOlC,gBAAgB,EArOL,OAAO;EAsOlB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,wCAAwC;EACrD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAgEhB;;KAEG;EAhEH,sBAAc;IACV,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,OAAO;IAEf,uCAAiB;MAlPrB,OAAO,EAAE,iBAAiB;MAC1B,OAAO,EAAE,YAAY;MACrB,cAAc,EAAE,MAAM;MACtB,IAAI,EAAE,CAAC;MACP,QAAQ,EAAE,MAAM;MAiPR,wDAAiB;QArPzB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;IAsPZ,yCAAmB;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,QAAQ,EAAE,MAAM;IAKpB,2CAAqB;MACjB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;IAGpB,8CAAwB;MACpB,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;IAGnC,0CAAoB;MAChB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;IAGpB,yCAAmB;MACf,MAAM,EAAE,KAAK;MACb,MAAM,EAAE,CAAC;MACT,QAAQ,EAAE,MAAM;MAChB,UAAU,EAjSD,iBAAiB;MAkS1B,aAAa,EAAE,iBAAiB;MAChC,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;EAIvB,yBAAiB;IACb,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;EAM7B,6BAAqB;IACjB,QAAQ,EAAE,QAAQ;IAElB,yCAAY;MACR,QAAQ,EAAE,QAAQ;MAClB,UAAU,EAAE,MAAM;MAClB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,IAAI;MACb,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,iBAAiB;MACzB,gBAAgB,EAAE,OAAO;MACzB,OAAO,EAAE,IAAI;MAEb,yDAAgB;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IAIlB,uCAAU;MACN,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,eAAe,EAAE,QAAQ;MAEzB,gDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,OAAO;QAEf,wDAAQ;UACJ,OAAO,EAAE,KAAK;UACd,iBAAiB,EAAE,SAAS;UAC5B,QAAQ,EAAE,MAAM;UAChB,MAAM,EAAE,GAAG;UACX,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;MAGjB,8CAAO;QACH,MAAM,EAAE,iBAAiB;QACzB,gBAAgB,EAAE,OAAO;IAIjC,sCAAS;MACL,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MACV,MAAM,EAAE,CAAC;MACT,IAAI,EAAE,+CAA+C;MACrD,KAAK,EAAE,IAAI;MACX,eAAe,EAAE,IAAI;;AAOjC;;GAEG;AACH,eAAgB;EACZ,MAAM,EAAE,iBAAiB;EACzB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EAEZ,qCAAsB;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,QAAQ;IAEzB,0DAAqB;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MAEV,qFAA2B;QACvB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;IAGjB,8DAAyB;MACrB,WAAW,EAAE,wCAAwC;MACrD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;IAEtB,6DAAwB;MACpB,MAAM,EAAE,iBAAiB;IAE7B,mEAA8B;MAC1B,MAAM,EAAE,iBAAiB;;AAMrC;;GAEG;AACH,UAAW;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAxaW,iBAAiB;EAyalC,IAAI,EAAE,CAAC;EAnZP,UAAU,EAAE,mBAAmB;EAC/B,eAAe,EAAE,mBAAmB;EACpC,kBAAkB,EAAE,mBAAmB;EACvC,MAAM,EAAE,oFAAoF;EAkZ5F,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,GAAG;EACvB,qBAAqB,EAAE,GAAG;EAC1B,QAAQ,EAAE,MAAM;EAGhB,4BAAkB;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,kEAAkE;IAC9E,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAEZ,kDAAsB;MAClB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;MACf,UAAU,EAAE,sCAAsC;MAClD,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MAER,wDAAQ;QACJ,mBAAmB,EAAE,SAAS;EAO1C,6BAAmB;IAEf,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IAGP,6CAAgB;MACZ,IAAI,EAAE,iDAAiD;MACvD,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;MAChB,KAAK,EAAE,IAAI;MAEX,0DAAa;QACT,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,iBAA2B;QAEnC,gEAAQ;UACJ,YAAY,EAhfP,OAAO;UAifZ,OAAO,EAAE,IAAI;MAIrB,wDAAW;QACP,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,iBAA2B;QACnC,MAAM,EA5fP,IAAI;MA8fP,sDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;MAGd,8DAAiB;QACb,KAAK,EAAE,IAAI;MAGf,gEAAmB;QACf,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAC,GAAG;MAGX,sDAAS;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,IAAI;QAEZ,4DAAQ;UACJ,OAAO,EAAE,IAAI;MAIrB,4DAAe;QACX,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,KAAK;QAChB,MAAM,EA1hBP,IAAI;QA2hBH,WAAW,EA3hBZ,IAAI;QA4hBH,MAAM,EAAC,iBAA2B;QAClC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,MAAM;QAEhB,kEAAQ;UACJ,YAAY,EAriBP,OAAO;MAyiBpB,6DAAgB;QACZ,MAAM,EAxiBD,iBAAiB;QAyiBtB,gBAAgB,EAAE,OAAO;QACzB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;MAGpB,6DAAgB;QACZ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,GAAG,EAAC,IAAI;QACR,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QAEb,6EAAgB;UACZ,QAAQ,EAAE,QAAQ;UAClB,SAAS,EAAE,IAAI;UACf,GAAG,EAAE,CAAC;UACN,KAAK,EAAE,CAAC;UACR,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,MAAM;UACf,MAAM,EAAE,MAAM;UACd,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,OAAO;UACf,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,gBAAgB;QAI5B,+EAAkB;UACd,GAAG,EAAE,IAAI;QAEb,wEAAW;UACP,OAAO,EAAE,QAAQ;MAIzB,sEAAyB;QACrB,OAAO,EAAE,kBAAkB;QAkE3B;;WAEG;QAlEH,qFAAe;UACX,MAAM,EAAC,iBAAiB;UACxB,aAAa,EAAE,IAAI;UACnB,QAAQ,EAAE,MAAM;UAEhB,+FAAU;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;UAErB,gGAAW;YACP,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;YAEhB,iHAAiB;cAxmBrC,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAumBQ,mIAAkB;gBACd,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,IAAI;YAIjB,sGAAM;cACF,MAAM,EAAE,OAAO;cACf,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,UAAU,EAAE,KAAK;cACjB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAEhB,0GAAI;gBACA,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,YAAY;gBACrB,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,MAAM;QAShC,iFAAW;UACP,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UAEjB,gGAAe;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;UAErB,4FAAW;YACP,OAAO,EAAE,QAAQ;UAErB,2FAAU;YACN,WAAW,EAAC,IAAI;QAOxB,+EAAS;UACL,IAAI,EAAE,+CAA+C;UACrD,aAAa,EAlqBZ,iBAAiB;UAmqBlB,aAAa,EAAE,IAAI;UAEnB,2FAAY;YACR,UAAU,EAAE,iBAAiB;YAC7B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YAEV,uGAAY;cACR,QAAQ,EAAE,QAAQ;cAClB,MAAM,EAAE,YAAY;cACpB,OAAO,EAAE,MAAM;cACf,KAAK,EAAE,IAAI;cACX,WAAW,EAAE,IAAI;cACjB,UAAU,EAAE,MAAM;cAClB,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;YAEnB,gHAAqB;cACjB,gBAAgB,EAAE,IAAI;cACtB,MAAM,EAtrBb,iBAAiB;cAurBV,aAAa,EAAE,cAAc;cAC7B,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;cACf,sBAAsB,EAAE,GAAG;cAC3B,uBAAuB,EAAE,GAAG;YAGhC,0GAAe;cACX,gBAAgB,EAAE,IAAI;cACtB,KAAK,EAAE,IAAI;IAU/B,gDAAmB;MACf,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,GAAG;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;MAElB,2EAA2B;QACvB,UAAU,EAAE,6CAA6C;QACzD,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;EAM9B,4BAAkB;IACd,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,YAAY;IACrB,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IAEZ,2CAAe;MACX,MAAM,EAAE,GAAG;IAGf,0CAAc;MACV,MAAM,EAAE,gBAAgB;EAIhC,4BAAkB;IACd,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO;EAGnB,2BAAiB;IACb,mBAAmB,EAAE,OAAO;IAC5B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM;IACtB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAGpB,qBAAW;IACP,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,wDAAwD;IAEpE,2BAAQ;MACJ,MAAM,EA7wBG,iBAAiB;MA8wB1B,gBAAgB,EAAE,OAAO;EAIjC,yBAAe;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,OAAO;IACf,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,YAAY;IAExB,+BAAQ;MACJ,MAAM,EAAE,iBAAiB;MACzB,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,EAAE", +"sources": ["common.scss"], +"names": [], +"file": "common.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/common/common.scss b/addons/nkeditor/assets/themes/common/common.scss new file mode 100644 index 0000000..5e8549b --- /dev/null +++ b/addons/nkeditor/assets/themes/common/common.scss @@ -0,0 +1,830 @@ +$inputBorderColor : #cccccc; +$inputFocusBorderColor : #66afe9; +$inputHeight : 30px; +$editorBorderStyle : 1px solid #e1e1e1; +$dialogBorderStyle : 1px solid #cccccc; +$menuBgColor : #f5f5f5; + +@mixin ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} +//工具栏图标样式 +@mixin ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; +} +//阴影 +@mixin ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); +} + +/** +公共样式 +*/ +//清除浮动 +.ke-clearfix { + zoom: 1; + clear: both; +} +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} +// 过渡动画 +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; +} +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + 50% { + opacity: 1; + } +} + +//遮罩层 +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; +} + +/** +编辑器样式开始 + */ +.ke-container { + + display: block; + //border: $editorBorderStyle; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 1px 1px rgba(0,0,0,0.16); + + /** + 通用样式 + */ + .ke-shadow { + @include ke-shadow; + background-color: #F0F0EE; + } + + .ke-menu a, + .ke-menu a:hover, + .ke-dialog a, + .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; + } + + /** + toolbar 样式 + */ + .ke-toolbar { + //border-bottom: $editorBorderStyle; + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; + + .ke-outline { + //border: 1px solid #f5f5f5; + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + + /** + * 按钮通用样式 + */ + .ke-toolbar-icon { + @include ke-toolbar-icon; + } + + } + + .ke-on { + background: #ebebeb; + } + .ke-selected { + background-color: #ebebeb; + } + .ke-disabled { + cursor: default; + } + .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; + } + .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; + } + } + //end ke-toolbar + + /** + ke-edit + */ + .ke-edit { + padding: 0; + + .ke-edit-iframe, + .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; + } + .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; + + &:focus { + outline: none; + } + } + } + //end ke-edit + + /** + statusbar start + */ + .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: $editorBorderStyle; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; + + .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + } + + .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; + } + } + //end ke-statusbar +} + +/** + menu 右键菜单 + */ +.ke-menu { + border: $dialogBorderStyle; + background-color: $menuBgColor; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + + .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; + + .ke-inline-block { + @include ke-inline-block; + + .ke-inline-block { + @include ke-inline-block; + } + } + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + + } + + .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + } + + .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; + } + + .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; + } + + .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: $editorBorderStyle; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; + } + } + + .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + + /** + 表情插件 + */ + .ke-plugin-emoticons { + position: relative; + + .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; + + .ke-preview-img { + border: 0; + margin: 0; + padding: 0; + } + } //end ke-preview + + .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; + + .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; + } + } + .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + } //end ke-table + + .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; + } + } + +} +//menu end + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + + .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; + + .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; + } + } + .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; + } + .ke-colorpicker-cell-on { + border: 1px solid #5690D2; + } + .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; + } + + } +} //colorpicker end + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: $dialogBorderStyle; + zoom: 1; + @include ke-shadow; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; + + // start ke-dialog-header + .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; + + .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; + + &:hover { + background-position: 0px -89px; + } + } + + } //end ke-dialog-header + + //start ke-content + .ke-dialog-content { + + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; + + // ke-dialog-body start + .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; + + .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid $inputBorderColor; + + &:focus { + border-color: $inputFocusBorderColor; + outline: none; + } + } + + .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid $inputBorderColor; + height: $inputHeight; + } + .ke-form { + margin: 0; + padding: 0; + } + + .ke-input-number { + width: 50px; + } + + .ke-input-checkbox { + position: relative; + top:6px; + } + + textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; + + &:focus { + outline: none; + } + } + + .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: $inputHeight; + line-height: $inputHeight; + border:1px solid $inputBorderColor; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; + + &:focus { + border-color: $inputFocusBorderColor; + } + } + + .ke-input-color { + border: $editorBorderStyle; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top:-1px; + position: relative; + *height: 25px; + + .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); + + } + + .ke-button-common { + top: -1px; + } + .ke-button { + padding: 8px 15px; + } + } + + .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + + .ke-dialog-row { + border:1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; + + .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; + } + .row-right { + float: left; + text-align: left; + + .ke-inline-block { + @include ke-inline-block; + + .ke-upload-button { + position: relative; + top: -1px; + } + } + + label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; + + img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + } + } + + + } //end ke-dialog-row + + //百度地图样式 + .ke-header { + height: 30px; + line-height: 30px; + + .ke-input-text { + height: 22px; + line-height: 22px; + } + .ke-button { + padding: 3px 10px; + } + .checkbox { + margin-left:10px; + } + } + + /** + tabs + */ + .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: $editorBorderStyle; + margin-bottom: 20px; + + .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; + + .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; + } + .ke-tabs-li-selected { + background-color: #FFF; + border: $editorBorderStyle; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + .ke-tabs-li-on { + background-color: #FFF; + color: #000; + } + } //end ul + } //end tabs + + } //end ke-dialog-content-inner + + + } // end ke-dialog-body + + .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; + + .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; + } + } //end ke-dialog-loading + + } //end ke-content + + .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; + + .ke-dialog-yes { + margin: 5px; + } + + .ke-dialog-no { + margin: 5px 10px 5px 5px; + } + } // ke-dialog-footer + + .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; + } + + .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; + + &:hover { + border: $editorBorderStyle; + background-color: #e1e1e1; + } + } + + .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; + + &:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; + } + } + + +} //dialog end + +//.ke-dialog-preview { +// margin: 5px; +//} + + +//.ke-plugin-plainpaste-textarea, +//.ke-plugin-wordpaste-iframe { +// display: block; +// width: 408px; +// height: 260px; +// font-family: "sans serif", tahoma, verdana, helvetica; +// font-size: 12px; +// border-color: #848484 #E0E0E0 #E0E0E0 #848484; +// border-style: solid; +// border-width: 1px; +//} + + diff --git a/addons/nkeditor/assets/themes/common/dialog-title-bg.png b/addons/nkeditor/assets/themes/common/dialog-title-bg.png new file mode 100644 index 0000000..f744f26 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/dialog-title-bg.png differ diff --git a/addons/nkeditor/assets/themes/common/flash.gif b/addons/nkeditor/assets/themes/common/flash.gif new file mode 100644 index 0000000..2cb12b2 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/flash.gif differ diff --git a/addons/nkeditor/assets/themes/common/flash.png b/addons/nkeditor/assets/themes/common/flash.png new file mode 100644 index 0000000..cc3be67 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/flash.png differ diff --git a/addons/nkeditor/assets/themes/common/flash.svg b/addons/nkeditor/assets/themes/common/flash.svg new file mode 100644 index 0000000..31750f2 --- /dev/null +++ b/addons/nkeditor/assets/themes/common/flash.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1506319500431" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3560" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M512 56.888889C261.688889 56.888889 56.888889 261.688889 56.888889 512s204.8 455.111111 455.111111 455.111111 455.111111-204.8 455.111111-455.111111-204.8-455.111111-455.111111-455.111111z m227.555556 324.266667c-79.644444-5.688889-125.155556 79.644444-125.155556 79.644444l91.022222 5.688889V568.888889h-130.844444C506.311111 819.2 341.333333 773.688889 341.333333 773.688889v-85.333333s96.711111 0 147.911111-176.355556C563.2 233.244444 739.555556 290.133333 739.555556 290.133333v91.022223z" p-id="3561"></path></svg> \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/common/icons-all.gif b/addons/nkeditor/assets/themes/common/icons-all.gif new file mode 100644 index 0000000..21915e5 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/icons-all.gif differ diff --git a/addons/nkeditor/assets/themes/common/loading.gif b/addons/nkeditor/assets/themes/common/loading.gif new file mode 100644 index 0000000..c69e937 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/loading.gif differ diff --git a/addons/nkeditor/assets/themes/common/media.gif b/addons/nkeditor/assets/themes/common/media.gif new file mode 100644 index 0000000..e1c0e30 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/media.gif differ diff --git a/addons/nkeditor/assets/themes/common/play.png b/addons/nkeditor/assets/themes/common/play.png new file mode 100644 index 0000000..7899c5a Binary files /dev/null and b/addons/nkeditor/assets/themes/common/play.png differ diff --git a/addons/nkeditor/assets/themes/common/play.svg b/addons/nkeditor/assets/themes/common/play.svg new file mode 100644 index 0000000..8d5cd9a --- /dev/null +++ b/addons/nkeditor/assets/themes/common/play.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1506318981937" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1622" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M512 1024C229.2352 1024 0 794.7648 0 512S229.2352 0 512 0s512 229.2352 512 512-229.2352 512-512 512z m-85.248-257.4976l307.0336-230.2848c17.024-12.7616 17.024-33.4336 0-46.1952L426.752 259.7376c-17.024-12.7616-30.7968-5.888-30.7968 15.3472v476.0704c0 21.2864 13.7984 28.1088 30.7968 15.36z" p-id="1623"></path></svg> \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/common/rm.gif b/addons/nkeditor/assets/themes/common/rm.gif new file mode 100644 index 0000000..d013d55 Binary files /dev/null and b/addons/nkeditor/assets/themes/common/rm.gif differ diff --git a/addons/nkeditor/assets/themes/default/editor.css b/addons/nkeditor/assets/themes/default/editor.css new file mode 100644 index 0000000..8518512 --- /dev/null +++ b/addons/nkeditor/assets/themes/default/editor.css @@ -0,0 +1,1398 @@ +/* common */ +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } + +.ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-clearfix { + zoom: 1; +} + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} + +.ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; +} + +.ke-menu a, +.ke-menu a:hover, +.ke-dialog a, +.ke-dialog a:hover { + color: #337FE5; + text-decoration: none; +} + +/* icons */ +.ke-icon-source { + background-position: 0px 0px; + width: 16px; + height: 16px; +} + +.ke-icon-preview { + background-position: 0px -16px; + width: 16px; + height: 16px; +} + +.ke-icon-print { + background-position: 0px -32px; + width: 16px; + height: 16px; +} + +.ke-icon-undo { + background-position: 0px -48px; + width: 16px; + height: 16px; +} + +.ke-icon-redo { + background-position: 0px -64px; + width: 16px; + height: 16px; +} + +.ke-icon-cut { + background-position: 0px -80px; + width: 16px; + height: 16px; +} + +.ke-icon-copy { + background-position: 0px -96px; + width: 16px; + height: 16px; +} + +.ke-icon-paste { + background-position: 0px -112px; + width: 16px; + height: 16px; +} + +.ke-icon-selectall { + background-position: 0px -128px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyleft { + background-position: 0px -144px; + width: 16px; + height: 16px; +} + +.ke-icon-justifycenter { + background-position: 0px -160px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyright { + background-position: 0px -176px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyfull { + background-position: 0px -192px; + width: 16px; + height: 16px; +} + +.ke-icon-insertorderedlist { + background-position: 0px -208px; + width: 16px; + height: 16px; +} + +.ke-icon-insertunorderedlist { + background-position: 0px -224px; + width: 16px; + height: 16px; +} + +.ke-icon-indent { + background-position: 0px -240px; + width: 16px; + height: 16px; +} + +.ke-icon-outdent { + background-position: 0px -256px; + width: 16px; + height: 16px; +} + +.ke-icon-subscript { + background-position: 0px -272px; + width: 16px; + height: 16px; +} + +.ke-icon-superscript { + background-position: 0px -288px; + width: 16px; + height: 16px; +} + +.ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; +} + +.ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; +} + +.ke-icon-formatblock { + background-position: 0px -336px; + width: 25px; + height: 16px; +} + +.ke-icon-fontname { + background-position: 0px -352px; + width: 21px; + height: 16px; +} + +.ke-icon-fontsize { + background-position: 0px -368px; + width: 23px; + height: 16px; +} + +.ke-icon-forecolor { + background-position: 0px -384px; + width: 20px; + height: 16px; +} + +.ke-icon-hilitecolor { + background-position: 0px -400px; + width: 23px; + height: 16px; +} + +.ke-icon-bold { + background-position: 0px -416px; + width: 16px; + height: 16px; +} + +.ke-icon-italic { + background-position: 0px -432px; + width: 16px; + height: 16px; +} + +.ke-icon-underline { + background-position: 0px -448px; + width: 16px; + height: 16px; +} + +.ke-icon-strikethrough { + background-position: 0px -464px; + width: 16px; + height: 16px; +} + +.ke-icon-removeformat { + background-position: 0px -480px; + width: 16px; + height: 16px; +} + +.ke-icon-image { + background-position: 0px -496px; + width: 16px; + height: 16px; +} + +.ke-icon-flash { + background-position: 0px -512px; + width: 16px; + height: 16px; +} + +.ke-icon-media { + background-position: 0px -528px; + width: 16px; + height: 16px; +} + +.ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; +} + +.ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; +} + +.ke-icon-hr { + background-position: 0px -592px; + width: 16px; + height: 16px; +} + +.ke-icon-emoticons { + background-position: 0px -608px; + width: 16px; + height: 16px; +} + +.ke-icon-link { + background-position: 0px -624px; + width: 16px; + height: 16px; +} + +.ke-icon-unlink { + background-position: 0px -640px; + width: 16px; + height: 16px; +} + +.ke-icon-fullscreen { + background-position: 0px -656px; + width: 16px; + height: 16px; +} + +.ke-icon-about { + background-position: 0px -672px; + width: 16px; + height: 16px; +} + +.ke-icon-plainpaste { + background-position: 0px -704px; + width: 16px; + height: 16px; +} + +.ke-icon-wordpaste { + background-position: 0px -720px; + width: 16px; + height: 16px; +} + +.ke-icon-table { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; +} + +.ke-icon-tableinsert { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tabledelete { + background-position: 0px -800px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertleft { + background-position: 0px -816px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertright { + background-position: 0px -832px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertabove { + background-position: 0px -848px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertbelow { + background-position: 0px -864px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecoldelete { + background-position: 0px -880px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowdelete { + background-position: 0px -896px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellprop { + background-position: 0px -912px; + width: 16px; + height: 16px; +} + +.ke-icon-tableprop { + background-position: 0px -928px; + width: 16px; + height: 16px; +} + +.ke-icon-checked { + background-position: 0px -944px; + width: 16px; + height: 16px; +} + +.ke-icon-code { + background-position: 0px -960px; + width: 16px; + height: 16px; +} + +.ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-baidumap { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-lineheight { + background-position: 0px -992px; + width: 16px; + height: 16px; +} + +.ke-icon-clearhtml { + background-position: 0px -1008px; + width: 16px; + height: 16px; +} + +.ke-icon-pagebreak { + background-position: 0px -1024px; + width: 16px; + height: 16px; +} + +.ke-icon-insertfile { + background-position: 0px -1040px; + width: 16px; + height: 16px; +} + +.ke-icon-quickformat { + background-position: 0px -1056px; + width: 16px; + height: 16px; +} + +.ke-icon-template { + background-position: 0px -1072px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowmerge { + background-position: 0px -1104px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowsplit { + background-position: 0px -1120px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolmerge { + background-position: 0px -1136px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolsplit { + background-position: 0px -1152px; + width: 16px; + height: 16px; +} + +.ke-icon-anchor { + background-position: 0px -1168px; + width: 16px; + height: 16px; +} + +.ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; +} + +.ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; +} + +.ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; +} + +.ke-icon-multiimage { + background-position: 0px -1232px; + width: 16px; + height: 16px; +} + +.ke-icon-graft { + background: url("images/scrawl.png") !important; + width: 16px; + height: 16px; +} + +/* container */ +.ke-container { + display: block; + border: 1px solid #CCCCCC; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; +} + +/* toolbar */ +.ke-toolbar { + border-bottom: 1px solid #CCC; + background-color: #FFFFFF; + padding: 2px 5px; + text-align: left; + overflow: hidden; + zoom: 1; +} + +.ke-toolbar-icon { + background-repeat: no-repeat; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; +} + +.ke-toolbar-icon-url { + background-image: url(images/default.png); +} + +.ke-toolbar .ke-outline { + border: 1px solid #F0F0EE; + margin: 1px; + padding: 1px 2px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; +} + +.ke-toolbar .ke-on { + border: 1px solid #5690D2; +} + +.ke-toolbar .ke-selected { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-toolbar .ke-disabled { + cursor: default; +} + +.ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; +} + +.ke-toolbar .ke-hr { + overflow: hidden; + height: 1px; + clear: both; +} + +/* edit */ +.ke-edit { + padding: 0; +} + +.ke-edit-iframe, +.ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; +} + +.ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; +} + +.ke-edit-textarea:focus { + outline: none; +} + +/* statusbar */ +.ke-statusbar { + position: relative; + background-color: #F0F0EE; + border-top: 1px solid #CCCCCC; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; +} + +.ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + background-image: url(images/default.png); +} + +.ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + background-position: -5px -741px; + width: 11px; + height: 11px; + background-image: url(images/default.png); +} + +/* menu */ +.ke-menu { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; +} + +.ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; +} + +.ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; +} + +.ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; +} + +.ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; +} + +.ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; +} + +.ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #CCCCCC; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; +} + +/* colorpicker */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; +} + +.ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; +} + +.ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; +} + +.ke-colorpicker-cell-on { + border: 1px solid #5690D2; +} + +.ke-colorpicker-cell-selected { + border: 1px solid #2446AB; +} + +.ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; +} + +/* dialog */ +.ke-dialog { + position: absolute; + margin: 0; + padding: 0; +} + +.ke-dialog .ke-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-dialog .ke-header .ke-left { + float: left; +} + +.ke-dialog .ke-header .ke-right { + float: right; +} + +.ke-dialog .ke-header label { + margin-right: 0; + cursor: pointer; + font-weight: normal; + display: inline; + vertical-align: top; +} + +.ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; +} + +.ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + background: #F8F8F8; + border-bottom: 1px solid #eeeeee; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + +} + +.ke-dialog-icon-close { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 6px; + top: 8px; + cursor: pointer; +} + +.ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; +} + +.ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; +} + +.ke-dialog-body textarea:focus, +.ke-dialog-body input:focus, +.ke-dialog-body select:focus { + outline: none; +} + +.ke-dialog-body label { + margin-right: 10px; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; +} + +.ke-dialog-body img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-dialog-body select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; +} + +.ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +.ke-dialog-body .ke-form { + margin: 0; + padding: 0; +} + +.ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; +} + +.ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; +} + +.ke-dialog-row { + margin-bottom: 10px; +} + +.ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + border-radius: 6px; + height: 45px; +} + +.ke-dialog-preview, +.ke-dialog-yes { + margin: 5px; +} + +.ke-dialog-no { + margin: 5px 10px 5px 5px; +} + +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; +} + +.ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 5px 10px; + margin-top: -2px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; +} + +.ke-button:hover { + border: 1px solid #d1d1d1; + background-color: #d1d1d1; +} + +.ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; +} + +.ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; +} + +/* inputbox */ +.ke-input-text { + display: inline-block !important; + width: 400px; + border: 1px solid #cccccc; + height: 20px; + line-height: 18px; + font-size: 14px; + padding: 3px; + margin: 0; + outline: 0; + *display: inline; +} + +.ke-input-text:focus { + border-color: #66afe9; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} + +.ke-input-number { + width: 50px; +} + +.ke-input-color { + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 20px; + line-height: 20px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-upload-button { + position: relative; + top: -1px; +} + +.ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + *height: 25px; +} + +.ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 50px; + height: 30px; + filter: alpha(opacity=0); +} + +.ke-upload-area .ke-button { + padding: 6px 15px; +} + +/* tabs */ +.ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #cccccc; + padding-left: 5px; + margin-bottom: 20px; +} + +.ke-tabs-ul { + list-style-image: none; + list-style-position: outside; + list-style-type: none; + margin: 0; + padding: 0; +} + +.ke-tabs-li { + position: relative; + + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; +} + +.ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #cccccc; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.ke-tabs-li-on { + background-color: #FFF; + color: #000; +} + +/* progressbar */ +.ke-progressbar { + position: relative; + margin: 0; + padding: 0; +} + +.ke-progressbar-bar { + border: 1px solid #6FA5DB; + width: 80px; + height: 5px; + margin: 10px 10px 0 10px; + padding: 0; +} + +.ke-progressbar-bar-inner { + width: 0; + height: 5px; + background-color: #6FA5DB; + overflow: hidden; + margin: 0; + padding: 0; +} + +.ke-progressbar-percent { + position: absolute; + top: 0; + left: 40%; + display: none; +} + +/* swfupload */ +.ke-swfupload-top { + position: relative; + margin-bottom: 10px; + _width: 608px; +} + +.ke-swfupload-button { + height: 23px; + line-height: 23px; +} + +.ke-swfupload-desc { + padding: 0 10px; + height: 23px; + line-height: 23px; +} + +.ke-swfupload-startupload { + position: absolute; + top: 0; + right: 0; +} + +.ke-swfupload-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-swfupload-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-swfupload-body .ke-photo { + position: relative; + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-swfupload-body .ke-delete { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 0; + top: 0; + cursor: pointer; +} + +.ke-swfupload-body .ke-status { + position: absolute; + left: 0; + bottom: 5px; + width: 100px; + height: 17px; +} + +.ke-swfupload-body .ke-message { + width: 100px; + text-align: center; + overflow: hidden; + height: 17px; +} + +.ke-swfupload-body .ke-error { + color: red; +} + +.ke-swfupload-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-swfupload-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +/* emoticons */ +.ke-plugin-emoticons { + position: relative; +} + +.ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; +} + +.ke-plugin-emoticons .ke-preview-img { + border: 0; + margin: 0; + padding: 0; +} + +.ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-emoticons .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #F0F0EE; + cursor: pointer; +} + +.ke-plugin-emoticons .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-emoticons .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; +} + +.ke-plugin-plainpaste-textarea, +.ke-plugin-wordpaste-iframe { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +/* filemanager */ +.ke-plugin-filemanager-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-plugin-filemanager-header .ke-left { + float: left; +} + +.ke-plugin-filemanager-header .ke-right { + float: right; +} + +.ke-plugin-filemanager-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-plugin-filemanager-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-plugin-filemanager-body .ke-photo { + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-plugin-filemanager-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-plugin-filemanager-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-filemanager-body .ke-table { + width: 95%; + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-filemanager-body .ke-table .ke-cell { + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-filemanager-body .ke-table .ke-name { + width: 55%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-size { + width: 15%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-datetime { + width: 30%; + text-align: center; +} + +.ke-dialog-content-inner { + padding: 10px 20px; +} +.ke-dialog-content-inner .row-left { + float: left; +} +.ke-dialog-content-inner .row-right { + float: left; +} +.ke-dialog-default { + box-shadow: 0 5px 15px rgba(0, 0, 0, .2) !important; + border: 1px solid #999 !important; + border: 1px solid rgba(0, 0, 0, .2) !important; + border-radius: 6px; + outline: 0; + zoom: 1; + overflow: hidden; +} diff --git a/addons/nkeditor/assets/themes/default/editor.min.css b/addons/nkeditor/assets/themes/default/editor.min.css new file mode 100644 index 0000000..cb8de2d --- /dev/null +++ b/addons/nkeditor/assets/themes/default/editor.min.css @@ -0,0 +1 @@ +.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-clearfix{zoom:1}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-dialog a,.ke-dialog a:hover,.ke-menu a,.ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-icon-source{background-position:0 0;width:16px;height:16px}.ke-icon-preview{background-position:0 -16px;width:16px;height:16px}.ke-icon-print{background-position:0 -32px;width:16px;height:16px}.ke-icon-undo{background-position:0 -48px;width:16px;height:16px}.ke-icon-redo{background-position:0 -64px;width:16px;height:16px}.ke-icon-cut{background-position:0 -80px;width:16px;height:16px}.ke-icon-copy{background-position:0 -96px;width:16px;height:16px}.ke-icon-paste{background-position:0 -112px;width:16px;height:16px}.ke-icon-selectall{background-position:0 -128px;width:16px;height:16px}.ke-icon-justifyleft{background-position:0 -144px;width:16px;height:16px}.ke-icon-justifycenter{background-position:0 -160px;width:16px;height:16px}.ke-icon-justifyright{background-position:0 -176px;width:16px;height:16px}.ke-icon-justifyfull{background-position:0 -192px;width:16px;height:16px}.ke-icon-insertorderedlist{background-position:0 -208px;width:16px;height:16px}.ke-icon-insertunorderedlist{background-position:0 -224px;width:16px;height:16px}.ke-icon-indent{background-position:0 -240px;width:16px;height:16px}.ke-icon-outdent{background-position:0 -256px;width:16px;height:16px}.ke-icon-subscript{background-position:0 -272px;width:16px;height:16px}.ke-icon-superscript{background-position:0 -288px;width:16px;height:16px}.ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-icon-formatblock{background-position:0 -336px;width:25px;height:16px}.ke-icon-fontname{background-position:0 -352px;width:21px;height:16px}.ke-icon-fontsize{background-position:0 -368px;width:23px;height:16px}.ke-icon-forecolor{background-position:0 -384px;width:20px;height:16px}.ke-icon-hilitecolor{background-position:0 -400px;width:23px;height:16px}.ke-icon-bold{background-position:0 -416px;width:16px;height:16px}.ke-icon-italic{background-position:0 -432px;width:16px;height:16px}.ke-icon-underline{background-position:0 -448px;width:16px;height:16px}.ke-icon-strikethrough{background-position:0 -464px;width:16px;height:16px}.ke-icon-removeformat{background-position:0 -480px;width:16px;height:16px}.ke-icon-image{background-position:0 -496px;width:16px;height:16px}.ke-icon-flash{background-position:0 -512px;width:16px;height:16px}.ke-icon-media{background-position:0 -528px;width:16px;height:16px}.ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-icon-hr{background-position:0 -592px;width:16px;height:16px}.ke-icon-emoticons{background-position:0 -608px;width:16px;height:16px}.ke-icon-link{background-position:0 -624px;width:16px;height:16px}.ke-icon-unlink{background-position:0 -640px;width:16px;height:16px}.ke-icon-fullscreen{background-position:0 -656px;width:16px;height:16px}.ke-icon-about{background-position:0 -672px;width:16px;height:16px}.ke-icon-plainpaste{background-position:0 -704px;width:16px;height:16px}.ke-icon-wordpaste{background-position:0 -720px;width:16px;height:16px}.ke-icon-table{background-position:0 -784px;width:16px;height:16px}.ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-icon-tableinsert{background-position:0 -784px;width:16px;height:16px}.ke-icon-tabledelete{background-position:0 -800px;width:16px;height:16px}.ke-icon-tablecolinsertleft{background-position:0 -816px;width:16px;height:16px}.ke-icon-tablecolinsertright{background-position:0 -832px;width:16px;height:16px}.ke-icon-tablerowinsertabove{background-position:0 -848px;width:16px;height:16px}.ke-icon-tablerowinsertbelow{background-position:0 -864px;width:16px;height:16px}.ke-icon-tablecoldelete{background-position:0 -880px;width:16px;height:16px}.ke-icon-tablerowdelete{background-position:0 -896px;width:16px;height:16px}.ke-icon-tablecellprop{background-position:0 -912px;width:16px;height:16px}.ke-icon-tableprop{background-position:0 -928px;width:16px;height:16px}.ke-icon-checked{background-position:0 -944px;width:16px;height:16px}.ke-icon-code{background-position:0 -960px;width:16px;height:16px}.ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-icon-baidumap{background-position:0 -976px;width:16px;height:16px}.ke-icon-lineheight{background-position:0 -992px;width:16px;height:16px}.ke-icon-clearhtml{background-position:0 -1008px;width:16px;height:16px}.ke-icon-pagebreak{background-position:0 -1024px;width:16px;height:16px}.ke-icon-insertfile{background-position:0 -1040px;width:16px;height:16px}.ke-icon-quickformat{background-position:0 -1056px;width:16px;height:16px}.ke-icon-template{background-position:0 -1072px;width:16px;height:16px}.ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-icon-tablerowmerge{background-position:0 -1104px;width:16px;height:16px}.ke-icon-tablerowsplit{background-position:0 -1120px;width:16px;height:16px}.ke-icon-tablecolmerge{background-position:0 -1136px;width:16px;height:16px}.ke-icon-tablecolsplit{background-position:0 -1152px;width:16px;height:16px}.ke-icon-anchor{background-position:0 -1168px;width:16px;height:16px}.ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-icon-multiimage{background-position:0 -1232px;width:16px;height:16px}.ke-icon-graft{background:url(images/scrawl.png)!important;width:16px;height:16px}.ke-container{display:block;border:1px solid #ccc;background-color:#fff;overflow:hidden;margin:0;padding:0}.ke-toolbar{border-bottom:1px solid #ccc;background-color:#fff;padding:2px 5px;text-align:left;overflow:hidden;zoom:1}.ke-toolbar-icon{background-repeat:no-repeat;font-size:0;line-height:0;overflow:hidden;display:block}.ke-toolbar-icon-url{background-image:url(images/default.png)}.ke-toolbar .ke-outline{border:1px solid #f0f0ee;margin:1px;padding:1px 2px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-toolbar .ke-on{border:1px solid #5690d2}.ke-toolbar .ke-selected{border:1px solid #5690d2;background-color:#e9eff6}.ke-toolbar .ke-disabled{cursor:default}.ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-toolbar .ke-hr{overflow:hidden;height:1px;clear:both}.ke-edit{padding:0}.ke-edit-iframe,.ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-edit-textarea:focus{outline:0}.ke-statusbar{position:relative;background-color:#f0f0ee;border-top:1px solid #ccc;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize}.ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px;background-image:url(images/default.png)}.ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;background-position:-5px -741px;width:11px;height:11px;background-image:url(images/default.png)}.ke-menu{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #ccc;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f0f0ee;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-dialog{position:absolute;margin:0;padding:0}.ke-dialog .ke-header{width:100%;margin-bottom:10px}.ke-dialog .ke-header .ke-left{float:left}.ke-dialog .ke-header .ke-right{float:right}.ke-dialog .ke-header label{margin-right:0;cursor:pointer;font-weight:400;display:inline;vertical-align:top}.ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0}.ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;background:#f8f8f8;border-bottom:1px solid #eee;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px}.ke-dialog-icon-close{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:6px;top:8px;cursor:pointer}.ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog-body input:focus,.ke-dialog-body select:focus,.ke-dialog-body textarea:focus{outline:0}.ke-dialog-body label{margin-right:10px;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog-body img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog-body select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto}.ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog-row{margin-bottom:10px}.ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;border-radius:6px;height:45px}.ke-dialog-preview,.ke-dialog-yes{margin:5px}.ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:5px 10px;margin-top:-2px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-button:hover{border:1px solid #d1d1d1;background-color:#d1d1d1}.ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-input-text{display:inline-block!important;width:400px;border:1px solid #ccc;height:20px;line-height:18px;font-size:14px;padding:3px;margin:0;outline:0}.ke-input-text:focus{border-color:#66afe9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ke-input-number{width:50px}.ke-input-color{border:1px solid #a0a0a0;background-color:#fff;font-size:12px;width:60px;height:20px;line-height:20px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-upload-button{position:relative;top:-1px}.ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0}.ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:50px;height:30px}.ke-upload-area .ke-button{padding:6px 15px}.ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #ccc;padding-left:5px;margin-bottom:20px}.ke-tabs-ul{list-style-image:none;list-style-position:outside;list-style-type:none;margin:0;padding:0}.ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-tabs-li-selected{background-color:#fff;border:1px solid #ccc;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-tabs-li-on{background-color:#fff;color:#000}.ke-progressbar{position:relative;margin:0;padding:0}.ke-progressbar-bar{border:1px solid #6fa5db;width:80px;height:5px;margin:10px 10px 0 10px;padding:0}.ke-progressbar-bar-inner{width:0;height:5px;background-color:#6fa5db;overflow:hidden;margin:0;padding:0}.ke-progressbar-percent{position:absolute;top:0;left:40%;display:none}.ke-swfupload-top{position:relative;margin-bottom:10px}.ke-swfupload-button{height:23px;line-height:23px}.ke-swfupload-desc{padding:0 10px;height:23px;line-height:23px}.ke-swfupload-startupload{position:absolute;top:0;right:0}.ke-swfupload-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-swfupload-body .ke-item{width:100px;margin:5px}.ke-swfupload-body .ke-photo{position:relative;border:1px solid #ddd;background-color:#fff;padding:10px}.ke-swfupload-body .ke-delete{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:0;top:0;cursor:pointer}.ke-swfupload-body .ke-status{position:absolute;left:0;bottom:5px;width:100px;height:17px}.ke-swfupload-body .ke-message{width:100px;text-align:center;overflow:hidden;height:17px}.ke-swfupload-body .ke-error{color:red}.ke-swfupload-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-swfupload-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons{position:relative}.ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-plugin-emoticons .ke-preview-img{border:0;margin:0;padding:0}.ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-emoticons .ke-cell{margin:0;padding:1px;border:1px solid #f0f0ee;cursor:pointer}.ke-plugin-emoticons .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-plugin-plainpaste-textarea,.ke-plugin-wordpaste-iframe{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-plugin-filemanager-header{width:100%;margin-bottom:10px}.ke-plugin-filemanager-header .ke-left{float:left}.ke-plugin-filemanager-header .ke-right{float:right}.ke-plugin-filemanager-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-plugin-filemanager-body .ke-item{width:100px;margin:5px}.ke-plugin-filemanager-body .ke-photo{border:1px solid #ddd;background-color:#fff;padding:10px}.ke-plugin-filemanager-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-plugin-filemanager-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-filemanager-body .ke-table{width:95%;border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-filemanager-body .ke-table .ke-cell{margin:0;padding:0;border:0}.ke-plugin-filemanager-body .ke-table .ke-name{width:55%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-size{width:15%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-datetime{width:30%;text-align:center}.ke-dialog-content-inner{padding:10px 20px}.ke-dialog-content-inner .row-left{float:left}.ke-dialog-content-inner .row-right{float:left}.ke-dialog-default{box-shadow:0 5px 15px rgba(0,0,0,.2)!important;border:1px solid #999!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:6px;outline:0;zoom:1;overflow:hidden} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/default/images/background.png b/addons/nkeditor/assets/themes/default/images/background.png new file mode 100644 index 0000000..e59bd68 Binary files /dev/null and b/addons/nkeditor/assets/themes/default/images/background.png differ diff --git a/addons/nkeditor/assets/themes/default/images/default.png b/addons/nkeditor/assets/themes/default/images/default.png new file mode 100644 index 0000000..cc9e72d Binary files /dev/null and b/addons/nkeditor/assets/themes/default/images/default.png differ diff --git a/addons/nkeditor/assets/themes/default/images/scrawl.png b/addons/nkeditor/assets/themes/default/images/scrawl.png new file mode 100644 index 0000000..58e04ec Binary files /dev/null and b/addons/nkeditor/assets/themes/default/images/scrawl.png differ diff --git a/addons/nkeditor/assets/themes/grey/editor.css b/addons/nkeditor/assets/themes/grey/editor.css new file mode 100644 index 0000000..beb0eae --- /dev/null +++ b/addons/nkeditor/assets/themes/grey/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-grey .ke-toolbar { + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-grey .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-grey .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-grey .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-grey .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-grey .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-grey .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-grey .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-grey .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-grey .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-grey .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-grey .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-grey .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-grey .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-grey .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-grey .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-grey .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-grey .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-grey .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-grey .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-grey .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-grey .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-grey .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-grey .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-grey .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-grey .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-grey .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-grey .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-grey .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-grey .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-grey .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-grey .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-grey .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-grey .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-grey .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-grey .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-grey .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-grey .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-grey .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-grey .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-grey .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-grey .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-grey .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-grey .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-grey .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-grey .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-grey .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-grey .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-grey .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-grey .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-grey .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-grey .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/addons/nkeditor/assets/themes/grey/editor.css.map b/addons/nkeditor/assets/themes/grey/editor.css.map new file mode 100644 index 0000000..01a6d6f --- /dev/null +++ b/addons/nkeditor/assets/themes/grey/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/grey/editor.min.css b/addons/nkeditor/assets/themes/grey/editor.min.css new file mode 100644 index 0000000..34fe061 --- /dev/null +++ b/addons/nkeditor/assets/themes/grey/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-grey .ke-toolbar{border-top:5px solid #8a8a8a;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-grey .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-grey .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-grey .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-grey .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-grey .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-grey .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-grey .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-grey .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-grey .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-grey .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-grey .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-grey .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-grey .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-grey .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-grey .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-grey .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-grey .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-grey .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-grey .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-grey .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-grey .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-grey .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-grey .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-grey .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-grey .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-grey .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-grey .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-grey .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-grey .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-grey .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-grey .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-grey .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-grey .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-grey .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-grey .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-grey .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-grey .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-grey .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-grey .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-grey .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-grey .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-grey .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-grey .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-grey .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-grey .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-grey .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-grey .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-grey .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-grey .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-grey .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-grey .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-grey .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-grey .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-grey .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/grey/editor.scss b/addons/nkeditor/assets/themes/grey/editor.scss new file mode 100644 index 0000000..9549839 --- /dev/null +++ b/addons/nkeditor/assets/themes/grey/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-grey { + .ke-toolbar { + + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-grey { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/grey/images/nkeditor.png b/addons/nkeditor/assets/themes/grey/images/nkeditor.png new file mode 100644 index 0000000..3e12962 Binary files /dev/null and b/addons/nkeditor/assets/themes/grey/images/nkeditor.png differ diff --git a/addons/nkeditor/assets/themes/grey/images/nkeditor.svg b/addons/nkeditor/assets/themes/grey/images/nkeditor.svg new file mode 100644 index 0000000..7a5b61d --- /dev/null +++ b/addons/nkeditor/assets/themes/grey/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#8a8a8a" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#8a8a8a" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#8a8a8a" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#8a8a8a" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#8a8a8a" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#8a8a8a" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#8a8a8a" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#8a8a8a" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#8a8a8a" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#8a8a8a" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#8a8a8a" d="M3 10h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M3 8h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M3 12h4v1h-4v-1z"></path> +<path fill="#8a8a8a" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#8a8a8a" d="M3 6h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#8a8a8a" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#8a8a8a" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#8a8a8a" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#8a8a8a" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#8a8a8a" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#8a8a8a" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#8a8a8a" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#8a8a8a" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#8a8a8a" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#8a8a8a" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#8a8a8a" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#8a8a8a" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#8a8a8a" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#8a8a8a" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#8a8a8a" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#8a8a8a" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#8a8a8a" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#8a8a8a" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#8a8a8a" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#8a8a8a" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#8a8a8a" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#8a8a8a" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#8a8a8a" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#8a8a8a" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#8a8a8a" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#8a8a8a" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#8a8a8a" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#8a8a8a" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#8a8a8a" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#8a8a8a" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#8a8a8a" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#8a8a8a" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#8a8a8a" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#8a8a8a" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#8a8a8a" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#8a8a8a" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#8a8a8a" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#8a8a8a" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#8a8a8a" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#8a8a8a" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#8a8a8a" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#8a8a8a" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#8a8a8a" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#8a8a8a" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#8a8a8a" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#8a8a8a" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#8a8a8a" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#8a8a8a" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#8a8a8a" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#8a8a8a" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#8a8a8a" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#8a8a8a" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#8a8a8a" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#8a8a8a" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#8a8a8a" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#8a8a8a" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#8a8a8a" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#8a8a8a" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#8a8a8a" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#8a8a8a" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#8a8a8a" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#8a8a8a" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#8a8a8a" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#8a8a8a" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#8a8a8a" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#8a8a8a" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#8a8a8a" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#8a8a8a" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#8a8a8a" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#8a8a8a" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#8a8a8a" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#8a8a8a" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#8a8a8a" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#8a8a8a" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#8a8a8a" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#8a8a8a" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#8a8a8a" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#8a8a8a" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#8a8a8a" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#8a8a8a" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#8a8a8a" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#8a8a8a" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#8a8a8a" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#8a8a8a" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#8a8a8a" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#8a8a8a" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#8a8a8a" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/addons/nkeditor/assets/themes/primary/editor.css b/addons/nkeditor/assets/themes/primary/editor.css new file mode 100644 index 0000000..33f3788 --- /dev/null +++ b/addons/nkeditor/assets/themes/primary/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-primary .ke-toolbar { + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-primary .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-primary .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-primary .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-primary .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-primary .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-primary .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-primary .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-primary .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-primary .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-primary .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-primary .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-primary .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-primary .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-primary .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-primary .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-primary .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-primary .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-primary .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-primary .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-primary .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-primary .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-primary .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-primary .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-primary .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-primary .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-primary .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-primary .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-primary .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-primary .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-primary .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-primary .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-primary .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-primary .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-primary .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-primary .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-primary .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-primary .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-primary .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-primary .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-primary .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-primary .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-primary .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-primary .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-primary .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-primary .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-primary .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-primary .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-primary .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-primary .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-primary .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-primary .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/addons/nkeditor/assets/themes/primary/editor.css.map b/addons/nkeditor/assets/themes/primary/editor.css.map new file mode 100644 index 0000000..268b7c7 --- /dev/null +++ b/addons/nkeditor/assets/themes/primary/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/primary/editor.min.css b/addons/nkeditor/assets/themes/primary/editor.min.css new file mode 100644 index 0000000..62d5203 --- /dev/null +++ b/addons/nkeditor/assets/themes/primary/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-primary .ke-toolbar{border-top:5px solid #009688;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-primary .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-primary .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-primary .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-primary .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-primary .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-primary .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-primary .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-primary .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-primary .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-primary .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-primary .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-primary .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-primary .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-primary .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-primary .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-primary .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-primary .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-primary .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-primary .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-primary .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-primary .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-primary .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-primary .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-primary .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-primary .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-primary .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-primary .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-primary .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-primary .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-primary .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-primary .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-primary .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-primary .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-primary .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-primary .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-primary .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-primary .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-primary .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-primary .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-primary .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-primary .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-primary .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-primary .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-primary .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-primary .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-primary .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-primary .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-primary .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-primary .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-primary .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-primary .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-primary .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-primary .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-primary .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/primary/editor.scss b/addons/nkeditor/assets/themes/primary/editor.scss new file mode 100644 index 0000000..c20d945 --- /dev/null +++ b/addons/nkeditor/assets/themes/primary/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-primary { + .ke-toolbar { + + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-primary { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/addons/nkeditor/assets/themes/primary/images/nkeditor.png b/addons/nkeditor/assets/themes/primary/images/nkeditor.png new file mode 100644 index 0000000..2bd53f2 Binary files /dev/null and b/addons/nkeditor/assets/themes/primary/images/nkeditor.png differ diff --git a/addons/nkeditor/assets/themes/primary/images/nkeditor.svg b/addons/nkeditor/assets/themes/primary/images/nkeditor.svg new file mode 100644 index 0000000..3c83f02 --- /dev/null +++ b/addons/nkeditor/assets/themes/primary/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#009688" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#009688" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#009688" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#009688" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#009688" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#009688" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#009688" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#009688" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#009688" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#009688" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#009688" d="M3 10h7v1h-7v-1z"></path> +<path fill="#009688" d="M3 8h7v1h-7v-1z"></path> +<path fill="#009688" d="M3 12h4v1h-4v-1z"></path> +<path fill="#009688" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#009688" d="M3 6h7v1h-7v-1z"></path> +<path fill="#009688" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#009688" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#009688" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#009688" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#009688" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#009688" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#009688" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#009688" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#009688" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#009688" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#009688" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#009688" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#009688" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#009688" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#009688" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#009688" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#009688" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#009688" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#009688" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#009688" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#009688" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#009688" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#009688" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#009688" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#009688" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#009688" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#009688" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#009688" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#009688" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#009688" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#009688" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#009688" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#009688" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#009688" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#009688" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#009688" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#009688" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#009688" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#009688" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#009688" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#009688" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#009688" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#009688" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#009688" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#009688" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#009688" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#009688" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#009688" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#009688" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#009688" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#009688" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#009688" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#009688" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#009688" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#009688" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#009688" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#009688" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#009688" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#009688" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#009688" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#009688" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#009688" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#009688" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#009688" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#009688" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#009688" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#009688" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#009688" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#009688" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#009688" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#009688" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#009688" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#009688" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#009688" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#009688" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#009688" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#009688" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#009688" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#009688" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#009688" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#009688" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#009688" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#009688" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#009688" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#009688" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#009688" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#009688" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#009688" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/addons/nkeditor/bootstrap.js b/addons/nkeditor/bootstrap.js new file mode 100644 index 0000000..213550a --- /dev/null +++ b/addons/nkeditor/bootstrap.js @@ -0,0 +1,285 @@ +require.config({ + paths: { + 'nkeditor': '../addons/nkeditor/js/customplugin', + 'nkeditor-core': '../addons/nkeditor/nkeditor.min', + 'nkeditor-lang': '../addons/nkeditor/lang/zh-CN', + }, + shim: { + 'nkeditor': { + deps: [ + 'nkeditor-core', + 'nkeditor-lang' + ] + }, + 'nkeditor-core': { + deps: [ + 'css!../addons/nkeditor/themes/black/editor.min.css', + 'css!../addons/nkeditor/css/common.css' + ], + exports: 'window.KindEditor' + }, + 'nkeditor-lang': { + deps: [ + 'nkeditor-core' + ] + } + } +}); +require(['form'], function (Form) { + var _bindevent = Form.events.bindevent; + Form.events.bindevent = function (form) { + _bindevent.apply(this, [form]); + if ($(".editor", form).size() > 0) { + require(['nkeditor', 'upload'], function (Nkeditor, Upload) { + var getImageFromClipboard, getImageFromDrop, getFileFromBase64; + getImageFromClipboard = function (data) { + var i, item; + i = 0; + while (i < data.clipboardData.items.length) { + item = data.clipboardData.items[i]; + if (item.type.indexOf("image") !== -1) { + return item.getAsFile() || false; + } + i++; + } + return false; + }; + getImageFromDrop = function (data) { + var i, item, images; + i = 0; + images = []; + while (i < data.dataTransfer.files.length) { + item = data.dataTransfer.files[i]; + if (item.type.indexOf("image") !== -1) { + images.push(item); + } + i++; + } + return images; + }; + getFileFromBase64 = function (data, url) { + var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + var filename, suffix; + if (typeof url != 'undefined') { + var urlArr = url.split('.'); + filename = url.substr(url.lastIndexOf('/') + 1); + suffix = urlArr.pop(); + } else { + filename = Math.random().toString(36).substring(5, 15); + } + console.log(filename); + if (!suffix) { + suffix = data.substring("data:image/".length, data.indexOf(";base64")); + } + + var exp = new RegExp("\\." + suffix + "$", "i"); + filename = exp.test(filename) ? filename : filename + "." + suffix; + var file = new File([u8arr], filename, {type: mime}); + return file; + }; + + var getImageFromUrl = function (url, callback, outputFormat) { + var canvas = document.createElement('CANVAS'), + ctx = canvas.getContext('2d'), + img = new Image; + img.crossOrigin = 'Anonymous'; + img.onload = function () { + var urlArr = url.split('.'); + var suffix = urlArr.pop(); + suffix = suffix.match(/^(jpg|png|gif|bmp|jpeg)$/i) ? suffix : 'png'; + + try { + canvas.height = img.height; + canvas.width = img.width; + ctx.drawImage(img, 0, 0); + var dataURL = canvas.toDataURL(outputFormat || 'image/' + suffix); + var file = getFileFromBase64(dataURL, url); + } catch (e) { + callback.call(this, null); + } + + callback.call(this, file); + canvas = null; + }; + img.onerror = function (e) { + callback.call(this, null); + }; + img.src = url; + }; + //上传Word图片 + Nkeditor.uploadwordimage = function (index, image) { + var that = this; + (function () { + var file = getFileFromBase64(image); + var placeholder = new RegExp("##" + index + "##", "g"); + Upload.api.send(file, function (data) { + that.html(that.html().replace(placeholder, Fast.api.cdnurl(data.url))); + }, function (data) { + that.html(that.html().replace(placeholder, "")); + }); + }(index, image)); + }; + + Nkeditor.lang({ + remoteimage: '下载远程图片' + }); + //远程下载图片 + Nkeditor.plugin('remoteimage', function (K) { + var editor = this, name = 'remoteimage'; + editor.plugin.remoteimage = { + download: function (e) { + var that = this; + var html = that.html(); + var staging = {}, orgined = {}, index = 0, images = 0, completed = 0, failured = 0; + var checkrestore = function () { + if (completed + failured >= images) { + $.each(staging, function (i, j) { + that.html(that.html().replace("<code>" + i + "</code>", j)); + }); + } + }; + html.replace(/<code>([\s\S]*?)<\/code>/g, function (code) { + staging[index] = code; + return "<code>" + index + "</code>"; + } + ); + html = html.replace(/<img([\s\S]*?)\ssrc\s*=\s*('|")((http(s?):)([\s\S]*?))('|")([\s\S]*?)[\/]?>/g, function () { + images++; + var url = arguments[3]; + var placeholder = '<img src="' + Fast.api.cdnurl("/assets/addons/nkeditor/img/downloading.png") + '" data-index="' + index + '" />'; + //如果是云存储的链接,则忽略 + if (Config.upload.cdnurl && url.indexOf(Config.upload.cdnurl) > -1) { + completed++; + return arguments[0]; + } else { + orgined[index] = arguments[0]; + } + //下载远程图片 + (function (index, url, placeholder) { + getImageFromUrl(url, function (file) { + if (!file) { + failured++; + that.html(that.html().replace(placeholder, orgined[index])); + checkrestore(); + } else { + Upload.api.send(file, function (data) { + completed++; + that.html(that.html().replace(placeholder, '<img src="' + Fast.api.cdnurl(data.url) + '" />')); + checkrestore(); + }, function (data) { + failured++; + that.html(that.html().replace(placeholder, orgined[index])); + checkrestore(); + }); + } + }); + })(index, url, placeholder); + index++; + return placeholder; + }); + if (index > 0) { + that.html(html); + } else { + Toastr.info("没有需要下载的远程图片"); + } + } + }; + // 点击图标时执行 + editor.clickToolbar(name, editor.plugin.remoteimage.download); + }); + + $(".editor", form).each(function () { + var that = this; + Nkeditor.create(that, { + width: '100%', + filterMode: false, + wellFormatMode: false, + allowMediaUpload: true, //是否允许媒体上传 + allowFileManager: true, + allowImageUpload: true, + wordImageServer: typeof Config.nkeditor != 'undefined' && Config.nkeditor.wordimageserver ? "127.0.0.1:10101" : "", //word图片替换服务器的IP和端口 + urlType: Config.upload.cdnurl ? 'domain' : '',//给图片加前缀 + cssPath: Fast.api.cdnurl('/assets/addons/nkeditor/plugins/code/prism.css'), + cssData: "body {font-size: 13px}", + fillDescAfterUploadImage: false, //是否在上传后继续添加描述信息 + themeType: typeof Config.nkeditor != 'undefined' ? Config.nkeditor.theme : 'black', //编辑器皮肤,这个值从后台获取 + fileManagerJson: Fast.api.fixurl("/addons/nkeditor/index/attachment/module/" + Config.modulename), + items: [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage', 'graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'remoteimage', 'about', 'fullscreen' + ], + afterCreate: function () { + var self = this; + //Ctrl+回车提交 + Nkeditor.ctrl(document, 13, function () { + self.sync(); + $(that).closest("form").submit(); + }); + Nkeditor.ctrl(self.edit.doc, 13, function () { + self.sync(); + $(that).closest("form").submit(); + }); + //粘贴上传 + $("body", self.edit.doc).bind('paste', function (event) { + var image, pasteEvent; + pasteEvent = event.originalEvent; + if (pasteEvent.clipboardData && pasteEvent.clipboardData.items) { + image = getImageFromClipboard(pasteEvent); + if (image) { + event.preventDefault(); + Upload.api.send(image, function (data) { + self.exec("insertimage", Fast.api.cdnurl(data.url)); + }); + } + } + }); + //挺拽上传 + $("body", self.edit.doc).bind('drop', function (event) { + var image, pasteEvent; + pasteEvent = event.originalEvent; + if (pasteEvent.dataTransfer && pasteEvent.dataTransfer.files) { + images = getImageFromDrop(pasteEvent); + if (images.length > 0) { + event.preventDefault(); + $.each(images, function (i, image) { + Upload.api.send(image, function (data) { + self.exec("insertimage", Fast.api.cdnurl(data.url)); + }); + }); + } + } + }); + }, + //FastAdmin自定义处理 + beforeUpload: function (callback, file) { + var file = file ? file : $("input.ke-upload-file", this.form).prop('files')[0]; + Upload.api.send(file, function (data) { + var data = {code: '000', data: {url: Fast.api.cdnurl(data.url)}, title: '', width: '', height: '', border: '', align: ''}; + callback(data); + }); + + }, + //错误处理 handler + errorMsgHandler: function (message, type) { + try { + console.log(message, type); + } catch (Error) { + alert(message); + } + } + }); + }); + }); + } + } +}); diff --git a/addons/nkeditor/config.php b/addons/nkeditor/config.php new file mode 100644 index 0000000..6c44fa4 --- /dev/null +++ b/addons/nkeditor/config.php @@ -0,0 +1,78 @@ +<?php + +return [ + [ + //配置唯一标识 + 'name' => 'theme', + //显示的标题 + 'title' => '编辑器主题', + //类型 + 'type' => 'select', + //数据字典 + 'content' => [ + 'default' => '经典主题', + 'black' => '雅黑主题', + 'blue' => '淡蓝主题', + 'grey' => '深灰主题', + 'primary' => '深绿主题', + ], + //值 + 'value' => 'black', + //验证规则 + 'rule' => 'required', + //错误消息 + 'msg' => '', + //提示消息 + 'tip' => '', + //成功消息 + 'ok' => '', + //扩展信息 + 'extend' => '' + ], + [ + 'name' => 'wordimageserver', + 'title' => '启用word图片替换服务器', + 'type' => 'radio', + 'content' => [ + '1' => '是', + '0' => '否', + ], + 'value' => '0', + 'rule' => 'required', + 'msg' => '', + 'tip' => '如果启用,请务必先运行word.exe', + 'ok' => '', + 'extend' => '' + ], + [ + 'name' => 'attachmentmode_admin', + 'title' => '管理员附件选择模式', + 'type' => 'select', + 'content' => [ + 'all' => '任何管理员均可以查看全部上传的文件', + 'auth' => '仅可以查看自己及所有子管理员上传的文件', + 'personal' => '仅可以查看选择自己上传的文件', + ], + 'value' => 'all', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '' + ], + [ + 'name' => 'attachmentmode_index', + 'title' => '后台附件选择模式', + 'type' => 'select', + 'content' => [ + 'all' => '任何会员均可以查看全部上传的文件', + 'personal' => '仅可以查看选择自己上传的文件', + ], + 'value' => 'all', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '' + ], +]; diff --git a/addons/nkeditor/controller/Index.php b/addons/nkeditor/controller/Index.php new file mode 100644 index 0000000..82c7edc --- /dev/null +++ b/addons/nkeditor/controller/Index.php @@ -0,0 +1,99 @@ +<?php + +namespace addons\nkeditor\controller; + +use app\common\model\Attachment; +use think\addons\Controller; + +class Index extends Controller +{ + + public function index() + { + $this->error('该插件暂无前台页面'); + } + + /** + * 文件列表 + */ + public function attachment() + { + $model = new Attachment; + $page = $this->request->request('page'); + $fileType = $this->request->request('fileType'); + $module = $this->request->param('module'); + $pagesize = 15; + $config = get_addon_config('nkeditor'); + $type = []; + $imageSuffix = ['png', 'jpg', 'jpeg', 'gif', 'bmp']; + if ($fileType == 'image') { + $type = $imageSuffix; + } else if ($fileType == 'flash') { + $type = ['swf', 'flv']; + } else if ($fileType == 'media') { + $type = ['swf', 'flv']; + } else if ($fileType == 'file') { + + } + if ($module == 'admin') { + $auth = \app\admin\library\Auth::instance(); + if (!$auth->id) { + $this->error('请登录后再操作!'); + } else { + $mode = $config['attachmentmode_admin']; + } + if ($mode == 'all') { + + } else { + if (!$auth->isSuperAdmin()) { + $adminIds = $mode == 'auth' ? $auth->getChildrenAdminIds(true) : [$auth->id]; + $model->where('admin_id', 'in', $adminIds); + } + } + } else { + if (!$this->auth->id) { + $this->error('请登录后再操作!'); + } else { + $mode = $config['attachmentmode_index']; + } + if ($mode == 'all') { + + } else { + $model->where('user_id', 'in', [$this->auth->id]); + } + } + + if ($type) { + $model->where('imagetype', 'in', $type); + } + + $list = $model + ->order('id', 'desc') + ->paginate($pagesize); + + $items = $list->items(); + $data = []; + $cdnurl = preg_replace("/\/(\w+)\.php$/i", '', $this->request->root()); + foreach ($items as $k => &$v) { + $v['fullurl'] = $v['storage'] == 'local' ? $cdnurl . $v['url'] : cdnurl($v['url']); + $v['imagetype'] = strtolower($v['imagetype']); + $data[] = [ + 'width' => $v['imagewidth'], + 'height' => $v['imageheight'], + 'filesize' => $v['filesize'], + 'oriURL' => $v['fullurl'], + 'thumbURL' => !in_array($v['imagetype'], $imageSuffix) ? "https://tool.fastadmin.net/icon/{$v['imagetype']}.png" : $v['fullurl'], + ]; + } + $result = [ + 'code' => '000', + 'count' => $list->total(), + 'page' => $page, + 'pagesize' => $pagesize, + 'extra' => '', + 'data' => $data + ]; + return json($result); + } + +} diff --git a/addons/nkeditor/info.ini b/addons/nkeditor/info.ini new file mode 100644 index 0000000..54d2797 --- /dev/null +++ b/addons/nkeditor/info.ini @@ -0,0 +1,8 @@ +name = nkeditor +title = 简洁强大的富文本编辑器 +intro = 一款基于Kindeditor二次开发的编辑器 +author = Karson +website = https://www.fastadmin.net +version = 1.0.8 +state = 1 +url = /addons/nkeditor.html diff --git a/addons/nkeditor/license.txt b/addons/nkeditor/license.txt new file mode 100644 index 0000000..f166cc5 --- /dev/null +++ b/addons/nkeditor/license.txt @@ -0,0 +1,502 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + <one line to give the library's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + <signature of Ty Coon>, 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! \ No newline at end of file diff --git a/addons/nkeditor/nodejs/word.js b/addons/nkeditor/nodejs/word.js new file mode 100644 index 0000000..5d11ede --- /dev/null +++ b/addons/nkeditor/nodejs/word.js @@ -0,0 +1,91 @@ +/** + * 代码来源:http://www.thinkphp.cn/topic/27567.html + * 如需编译请使用 pkg -t node12-win word.js 命令编译成word.exe文件 + */ +var service = { + http: require('http'), + url: require('url'), + querystring: require('querystring'), + fs: require('fs'), + config: { + timeout: 60000, + charset: 'utf8', + port: 10101, + host: '127.0.0.1' + }, + router: { + index: function (res, query) { + res.end('Server is running!'); + }, + check: function (res, query) { + var result = {status: 1, info: 'success'}; + result = JSON.stringify(result); + if (typeof query.callback == 'string') { + result = query.callback + '(' + result + ')'; + } + res.end(result); + }, + word: function (res, query) { + var _this = service; + var result = {status: 0, info: 'error'}; + if (typeof query.file == 'string') { + var img = query.file.match(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/i); + console.log(img); + if (img) { + var base64 = _this.base64_encode(img[2]); + result.status = 1; + result.index = query.index; + result.info = 'data:image/' + img[3] + ';base64,' + base64; + } + } + result = JSON.stringify(result); + if (typeof query.callback == 'string') { + result = query.callback + '(' + result + ')'; + } + res.end(result); + } + }, + start: function () { + var _this = this; + var Server = _this.http.createServer(function (req, res) { + var URL = _this.url.parse(req.url); + var receive = []; + var router = null; + switch (URL.pathname) { + case '/word': + router = _this.router.word; + break; + case '/check': + router = _this.router.check; + break; + default: + router = _this.router.index; + } + req.setEncoding(_this.config.charset); + req.addListener('data', function (data) { + receive.push(data); + }); + res.writeHead(200, {'Content-Type': 'text/plain'}); + res.on("close", function () { + console.log("res closed"); + }); + req.on("close", function () { + console.log("req closed"); + }); + req.addListener('end', function () { + router(res, _this.querystring.parse(URL.query)); + }); + }); + Server.listen(_this.config.port, _this.config.host, 1024); + Server.setTimeout(_this.config.timeout, function (cli) { + cli.end('timeout\n'); + }); + console.log('Server running at http://' + _this.config.host + ':' + _this.config.port); + }, + //base64 + base64_encode: function (file) { + var bitmap = this.fs.readFileSync(file); + return new Buffer(bitmap).toString('base64'); + } +}; +service.start(); \ No newline at end of file diff --git a/addons/qiniu/Qiniu.php b/addons/qiniu/Qiniu.php new file mode 100644 index 0000000..d304a56 --- /dev/null +++ b/addons/qiniu/Qiniu.php @@ -0,0 +1,101 @@ +<?php + +namespace addons\qiniu; + +use addons\qiniu\library\Auth; +use fast\Http; +use think\Addons; + +/** + * 七牛上传插件 + */ +class Qiniu extends Addons +{ + + /** + * 插件安装方法 + * @return bool + */ + public function install() + { + return true; + } + + /** + * 插件卸载方法 + * @return bool + */ + public function uninstall() + { + return true; + } + + /** + * 上传初始化时 + */ + public function uploadConfigInit(&$upload) + { + $config = $this->getConfig(); + + $policy = array( + 'saveKey' => ltrim($config['savekey'], '/'), + ); + //如果启用服务端回调 + if ($config['notifyenabled']) { + $policy = array_merge($policy, [ + 'callbackUrl' => $config['notifyurl'], + 'callbackBody' => 'filename=$(fname)&key=$(key)&imageInfo=$(imageInfo)&filesize=$(fsize)&admin=$(x:admin)&user=$(x:user)' + ]); + } + + if ($config['uploadmode'] == 'client') { + $auth = new Auth($config['app_key'], $config['secret_key']); + $multipart['token'] = $auth->uploadToken($config['bucket'], null, $config['expire'], $policy); + $multipart['x:admin'] = (int)session('admin.id'); + $multipart['x:user'] = (int)cookie('uid'); + $upload = [ + 'cdnurl' => $config['cdnurl'], + 'uploadurl' => $config['uploadurl'], + 'bucket' => $config['bucket'], + 'maxsize' => $config['maxsize'], + 'mimetype' => $config['mimetype'], + 'multipart' => $multipart, + 'multiple' => $config['multiple'] ? true : false, + ]; + } else { + $upload = array_merge($upload, [ + 'cdnurl' => $config['cdnurl'], + 'uploadurl' => addon_url('qiniu/index/upload'), + 'maxsize' => $config['maxsize'], + 'mimetype' => $config['mimetype'], + 'multiple' => $config['multiple'] ? true : false, + ]); + } + } + + /** + * 附件删除后 + */ + public function uploadDelete($attachment) + { + $config = $this->getConfig(); + if ($attachment['storage'] == 'qiniu' && isset($config['syncdelete']) && $config['syncdelete']) { + $auth = new Auth($config['app_key'], $config['secret_key']); + $entry = $config['bucket'] . ':' . ltrim($attachment->url, '/'); + $encodedEntryURI = $auth->base64_urlSafeEncode($entry); + $url = 'http://rs.qiniu.com/delete/' . $encodedEntryURI; + $headers = $auth->authorization($url); + //删除云储存文件 + $ret = Http::sendRequest($url, [], 'POST', [CURLOPT_HTTPHEADER => ['Authorization: ' . $headers['Authorization']]]); + //如果是服务端中转,还需要删除本地文件 + if ($config['uploadmode'] == 'server') { + $filePath = ROOT_PATH . 'public' . str_replace('/', DS, $attachment->url); + if ($filePath) { + @unlink($filePath); + } + } + } + return true; + } + +} diff --git a/addons/qiniu/bootstrap.js b/addons/qiniu/bootstrap.js new file mode 100644 index 0000000..8f88115 --- /dev/null +++ b/addons/qiniu/bootstrap.js @@ -0,0 +1,21 @@ +//修改上传的接口调用 +require(['upload'], function (Upload) { + var _onUploadResponse = Upload.events.onUploadResponse; + Upload.events.onUploadResponse = function (response) { + try { + var ret = typeof response === 'object' ? response : JSON.parse(response); + if (ret.hasOwnProperty("code") && ret.hasOwnProperty("data")) { + return _onUploadResponse.call(this, response); + } else if (ret.hasOwnProperty("key") && !ret.hasOwnProperty("err_code")) { + ret.code = 1; + ret.data = { + url: '/' + ret.key + }; + return _onUploadResponse.call(this, JSON.stringify(ret)); + } + } catch (e) { + } + return _onUploadResponse.call(this, response); + + }; +}); \ No newline at end of file diff --git a/addons/qiniu/config.php b/addons/qiniu/config.php new file mode 100644 index 0000000..bd45ec1 --- /dev/null +++ b/addons/qiniu/config.php @@ -0,0 +1,236 @@ +<?php + +return array ( + 0 => + array ( + 'name' => 'app_key', + 'title' => 'app_key', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'm92odJHsEMRW6ZZzpwwCHRejn2kgK8Y4jEiMSlXk', + 'rule' => 'required', + 'msg' => '', + 'tip' => '请在个人中心 > 密钥管理中获取 > AK', + 'ok' => '', + 'extend' => '', + ), + 1 => + array ( + 'name' => 'secret_key', + 'title' => 'secret_key', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'YxYBAjxBLZTC1N9crjzwLkWTBxKi_MIv9pUHK0IS', + 'rule' => 'required', + 'msg' => '', + 'tip' => '请在个人中心 > 密钥管理中获取 > SK', + 'ok' => '', + 'extend' => '', + ), + 2 => + array ( + 'name' => 'bucket', + 'title' => 'bucket', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'jinglong', + 'rule' => 'required', + 'msg' => '', + 'tip' => '存储空间名称', + 'ok' => '', + 'extend' => '', + ), + 3 => + array ( + 'name' => 'uploadurl', + 'title' => '上传接口地址', + 'type' => 'select', + 'content' => + array ( + 'https://upload-z0.qiniup.com' => '华东 https://upload-z0.qiniup.com', + 'https://upload-z1.qiniup.com' => '华北 https://upload-z1.qiniup.com', + 'https://upload-z2.qiniup.com' => '华南 https://upload-z2.qiniup.com', + 'https://upload-na0.qiniup.com' => '北美 https://upload-na0.qiniup.com', + 'https://upload-as0.qiniup.com' => '东南亚 https://upload-as0.qiniup.com', + ), + 'value' => 'https://upload-z1.qiniup.com', + 'rule' => 'required', + 'msg' => '', + 'tip' => '推荐选择最近的地址', + 'ok' => '', + 'extend' => '', + ), + 4 => + array ( + 'name' => 'cdnurl', + 'title' => 'CDN地址', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'http://jinglong.springchunjia.cn', + 'rule' => 'required', + 'msg' => '', + 'tip' => '未绑定CDN的话可使用七牛分配的测试域名', + 'ok' => '', + 'extend' => '', + ), + 5 => + array ( + 'name' => 'notifyenabled', + 'title' => '启用服务端回调', + 'type' => 'bool', + 'content' => + array ( + ), + 'value' => '0', + 'rule' => '', + 'msg' => '', + 'tip' => '本地开发请禁用服务端回调', + 'ok' => '', + 'extend' => '', + ), + 6 => + array ( + 'name' => 'notifyurl', + 'title' => '回调通知地址', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'http://www.yoursite.com/addons/qiniu/index/notify', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 7 => + array ( + 'name' => 'uploadmode', + 'title' => '上传模式', + 'type' => 'select', + 'content' => + array ( + 'client' => '客户端直传(速度快,无备份)', + 'server' => '服务器中转(占用服务器带宽,有备份)', + ), + 'value' => 'server', + 'rule' => '', + 'msg' => '', + 'tip' => '启用服务器中转时务必配置操作员和密码', + 'ok' => '', + 'extend' => '', + ), + 8 => + array ( + 'name' => 'savekey', + 'title' => '保存文件名', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => '/uploads/$(year)$(mon)$(day)/$(etag)$(ext)', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 9 => + array ( + 'name' => 'expire', + 'title' => '上传有效时长', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => '600', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 10 => + array ( + 'name' => 'maxsize', + 'title' => '最大可上传', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => '100M', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 11 => + array ( + 'name' => 'mimetype', + 'title' => '可上传后缀格式', + 'type' => 'string', + 'content' => + array ( + ), + 'value' => 'jpg,png,bmp,jpeg,gif,zip,rar,xls,xlsx', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 12 => + array ( + 'name' => 'multiple', + 'title' => '多文件上传', + 'type' => 'bool', + 'content' => + array ( + ), + 'value' => '1', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 13 => + array ( + 'name' => 'syncdelete', + 'title' => '附件删除时是否同步删除文件', + 'type' => 'bool', + 'content' => + array ( + ), + 'value' => '0', + 'rule' => 'required', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), + 14 => + array ( + 'name' => '__tips__', + 'title' => '温馨提示', + 'type' => '', + 'content' => + array ( + ), + 'value' => '在使用之前请注册七牛账号并进行认证,注册链接:<a href="https://portal.qiniu.com/signup?code=3l79xtos9w9qq" target="_blank">https://portal.qiniu.com/signup?code=3l79xtos9w9qq</a>', + 'rule' => '', + 'msg' => '', + 'tip' => '', + 'ok' => '', + 'extend' => '', + ), +); diff --git a/addons/qiniu/controller/Index.php b/addons/qiniu/controller/Index.php new file mode 100644 index 0000000..9417d53 --- /dev/null +++ b/addons/qiniu/controller/Index.php @@ -0,0 +1,202 @@ +<?php + +namespace addons\qiniu\controller; + +use addons\qiniu\library\Auth; +use app\common\model\Attachment; +use think\addons\Controller; +use think\Config; + +/** + * 七牛管理 + * + */ +class Index extends Controller +{ + public function index() + { + $this->error("当前插件暂无前台页面"); + } + + /** + * 上传接口 + */ + public function upload() + { + Config::set('default_return_type', 'json'); + if (!session('admin') && !$this->auth->id) { + $this->error("请登录后再进行操作"); + } + $config = get_addon_config('qiniu'); + + $file = $this->request->file('file'); + if (!$file || !$file->isValid()) { + $this->error("请上传有效的文件"); + } + $fileInfo = $file->getInfo(); + + $filePath = $file->getRealPath() ?: $file->getPathname(); + + preg_match('/(\d+)(\w+)/', $config['maxsize'], $matches); + $type = strtolower($matches[2]); + $typeDict = ['b' => 0, 'k' => 1, 'kb' => 1, 'm' => 2, 'mb' => 2, 'gb' => 3, 'g' => 3]; + $size = (int)$config['maxsize'] * pow(1024, isset($typeDict[$type]) ? $typeDict[$type] : 0); + + $suffix = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); + $suffix = $suffix ? $suffix : 'file'; + + $md5 = md5_file($filePath); + $search = ['$(year)', '$(mon)', '$(day)', '$(etag)', '$(ext)']; + $replace = [date("Y"), date("m"), date("d"), $md5, '.' . $suffix]; + $object = ltrim(str_replace($search, $replace, $config['savekey']), '/'); + + $mimetypeArr = explode(',', strtolower($config['mimetype'])); + $typeArr = explode('/', $fileInfo['type']); + + //检查文件大小 + if (!$file->checkSize($size)) { + $this->error("起过最大可上传文件限制"); + } + + //验证文件后缀 + if ($config['mimetype'] !== '*' && + ( + !in_array($suffix, $mimetypeArr) + || (stripos($typeArr[0] . '/', $config['mimetype']) !== false && (!in_array($fileInfo['type'], $mimetypeArr) && !in_array($typeArr[0] . '/*', $mimetypeArr))) + ) + ) { + $this->error(__('上传格式限制')); + } + + $savekey = '/' . $object; + + $uploadDir = substr($savekey, 0, strripos($savekey, '/') + 1); + $fileName = substr($savekey, strripos($savekey, '/') + 1); + //先上传到本地 + $splInfo = $file->move(ROOT_PATH . '/public' . $uploadDir, $fileName); + if ($splInfo) { + $extparam = $this->request->post(); + $filePath = $splInfo->getRealPath() ?: $splInfo->getPathname(); + + $sha1 = sha1_file($filePath); + $imagewidth = $imageheight = 0; + if (in_array($suffix, ['gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'])) { + $imgInfo = getimagesize($splInfo->getPathname()); + $imagewidth = isset($imgInfo[0]) ? $imgInfo[0] : $imagewidth; + $imageheight = isset($imgInfo[1]) ? $imgInfo[1] : $imageheight; + } + $params = array( + 'admin_id' => session('admin.id'), + 'user_id' => $this->auth->id, + 'filesize' => $fileInfo['size'], + 'imagewidth' => $imagewidth, + 'imageheight' => $imageheight, + 'imagetype' => $suffix, + 'imageframes' => 0, + 'mimetype' => $fileInfo['type'], + 'url' => $uploadDir . $splInfo->getSaveName(), + 'uploadtime' => time(), + 'storage' => 'local', + 'sha1' => $sha1, + 'extparam' => json_encode($extparam), + ); + $attachment = Attachment::create(array_filter($params), true); + $policy = array( + 'saveKey' => ltrim($savekey, '/'), + ); + $auth = new Auth($config['app_key'], $config['secret_key']); + $token = $auth->uploadToken($config['bucket'], null, $config['expire'], $policy); + $multipart = [ + ['name' => 'token', 'contents' => $token], + [ + 'name' => 'file', + 'contents' => fopen($filePath, 'r'), + 'filename' => $fileName, + ] + ]; + try { + $client = new \GuzzleHttp\Client(); + $res = $client->request('POST', $config['uploadurl'], [ + 'multipart' => $multipart + ]); + $code = $res->getStatusCode(); + $operation = $this->getOperateSys(); + if($operation == 'Linux'){ + unlink($filePath); + } + //成功不做任何操作 + } catch (\GuzzleHttp\Exception\ClientException $e) { + $attachment->delete(); + unlink($filePath); + $this->error("上传失败"); + } + + $url = '/' . $object; + + //上传成功后将存储变更为qiniu + $attachment->storage = 'qiniu'; + $attachment->save(); + + $this->success("上传成功", null, ['url' => $url]); + } else { + $this->error('上传失败'); + } + return; + } + + //判断当前操作系统 + public function getOperateSys(){ + $os_name = php_uname('s'); + //判断 + if(strpos($os_name,"Linux")!==false){ + $os_str="Linux"; + }else if(strpos($os_name,"Windows")!==false){ + $os_str="Windows"; + }else{ + $os_str=''; + } + return $os_str; + } + + /** + * 通知回调 + */ + public function notify() + { + $config = get_addon_config('qiniu'); + $auth = new Auth($config['app_key'], $config['secret_key']); + $contentType = 'application/x-www-form-urlencoded'; + $authorization = isset($_SERVER['HTTP_AUTHORIZATION']) ? $_SERVER['HTTP_AUTHORIZATION'] : ''; + if (!$authorization && function_exists('apache_request_headers')) { + $headers = apache_request_headers(); + $authorization = isset($headers['Authorization']) ? $headers['Authorization'] : ''; + } + + $url = $config['notifyurl']; + $body = file_get_contents('php://input'); + $ret = $auth->verifyCallback($contentType, $authorization, $url, $body); + if ($ret) { + parse_str($body, $arr); + $admin_id = isset($arr['admin']) ? $arr['admin'] : 0; + $user_id = isset($arr['user']) ? $arr['user'] : 0; + $imageInfo = json_decode($arr['imageInfo'], true); + $params = array( + 'admin_id' => (int)$admin_id, + 'user_id' => (int)$user_id, + 'filesize' => $arr['filesize'], + 'imagewidth' => isset($imageInfo['width']) ? $imageInfo['width'] : 0, + 'imageheight' => isset($imageInfo['height']) ? $imageInfo['height'] : 0, + 'imagetype' => isset($imageInfo['format']) ? $imageInfo['format'] : '', + 'imageframes' => 1, + 'mimetype' => "image/" . (isset($imageInfo['format']) ? $imageInfo['format'] : ''), + 'extparam' => '', + 'url' => '/' . $arr['key'], + 'uploadtime' => time(), + 'storage' => 'qiniu' + ); + Attachment::create($params); + return json(['ret' => 'success', 'code' => 1, 'data' => ['url' => $params['url']]]); + } + return json(['ret' => 'failed']); + } +} diff --git a/addons/qiniu/info.ini b/addons/qiniu/info.ini new file mode 100644 index 0000000..517fe29 --- /dev/null +++ b/addons/qiniu/info.ini @@ -0,0 +1,8 @@ +name = qiniu +title = 七牛上传 +intro = 使用七牛云存储,上传时直传七牛 +author = Karson +website = https://www.fastadmin.net +version = 1.0.5 +state = 1 +url = /addons/qiniu.html diff --git a/addons/qiniu/library/Auth.php b/addons/qiniu/library/Auth.php new file mode 100644 index 0000000..b5bbe39 --- /dev/null +++ b/addons/qiniu/library/Auth.php @@ -0,0 +1,160 @@ +<?php + +namespace addons\qiniu\library; + +final class Auth +{ + + private $accessKey; + private $secretKey; + + public function __construct($accessKey, $secretKey) + { + $this->accessKey = $accessKey; + $this->secretKey = $secretKey; + } + + public function getAccessKey() + { + return $this->accessKey; + } + + public function sign($data) + { + $hmac = hash_hmac('sha1', $data, $this->secretKey, true); + return $this->accessKey . ':' . $this->base64_urlSafeEncode($hmac); + } + + public function signWithData($data) + { + $encodedData = $this->base64_urlSafeEncode($data); + return $this->sign($encodedData) . ':' . $encodedData; + } + + public function signRequest($urlString, $body, $contentType = null) + { + $url = parse_url($urlString); + $data = ''; + if (array_key_exists('path', $url)) { + $data = $url['path']; + } + if (array_key_exists('query', $url)) { + $data .= '?' . $url['query']; + } + $data .= "\n"; + if ($body !== null && $contentType === 'application/x-www-form-urlencoded') { + $data .= $body; + } + return $this->sign($data); + } + + public function verifyCallback($contentType, $originAuthorization, $url, $body) + { + $authorization = 'QBox ' . $this->signRequest($url, $body, $contentType); + return $originAuthorization === $authorization; + } + + public function privateDownloadUrl($baseUrl, $expires = 3600) + { + $deadline = time() + $expires; + $pos = strpos($baseUrl, '?'); + if ($pos !== false) { + $baseUrl .= '&e='; + } else { + $baseUrl .= '?e='; + } + $baseUrl .= $deadline; + $token = $this->sign($baseUrl); + return "$baseUrl&token=$token"; + } + + public function uploadToken($bucket, $key = null, $expires = 3600, $policy = null, $strictPolicy = true) + { + $deadline = time() + $expires; + $scope = $bucket; + if ($key !== null) { + $scope .= ':' . $key; + } + $args = self::copyPolicy($args, $policy, $strictPolicy); + $args['scope'] = $scope; + $args['deadline'] = $deadline; + $b = json_encode($args); + return $this->signWithData($b); + } + + /** + * 上传策略,参数规格详见 + * http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html + */ + private static $policyFields = array( + 'callbackUrl', + 'callbackBody', + 'callbackHost', + 'callbackBodyType', + 'callbackFetchKey', + 'returnUrl', + 'returnBody', + 'endUser', + 'saveKey', + 'insertOnly', + 'detectMime', + 'mimeLimit', + 'fsizeMin', + 'fsizeLimit', + 'persistentOps', + 'persistentNotifyUrl', + 'persistentPipeline', + 'deleteAfterDays', + 'fileType', + 'upHosts', + ); + + private static function copyPolicy(&$policy, $originPolicy, $strictPolicy) + { + if ($originPolicy === null) { + return array(); + } + foreach ($originPolicy as $key => $value) { + if (!$strictPolicy || in_array((string)$key, self::$policyFields, true)) { + $policy[$key] = $value; + } + } + return $policy; + } + + public function authorization($url, $body = null, $contentType = null) + { + $authorization = 'QBox ' . $this->signRequest($url, $body, $contentType); + return array('Authorization' => $authorization); + } + + /** + * 对提供的数据进行urlsafe的base64编码。 + * + * @param string $data 待编码的数据,一般为字符串 + * + * @return string 编码后的字符串 + * @link http://developer.qiniu.com/docs/v6/api/overview/appendix.html#urlsafe-base64 + */ + function base64_urlSafeEncode($data) + { + $find = array('+', '/'); + $replace = array('-', '_'); + return str_replace($find, $replace, base64_encode($data)); + } + + /** + * 对提供的urlsafe的base64编码的数据进行解码 + * + * @param string $str 待解码的数据,一般为字符串 + * + * @return string 解码后的字符串 + */ + function base64_urlSafeDecode($str) + { + $find = array('-', '_'); + $replace = array('+', '/'); + return base64_decode(str_replace($find, $replace, $str)); + } + +} diff --git a/application/admin/command/Install/install.lock b/application/admin/command/Install/install.lock new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/application/admin/command/Install/install.lock @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/application/admin/controller/Banner.php b/application/admin/controller/Banner.php new file mode 100644 index 0000000..9838a83 --- /dev/null +++ b/application/admin/controller/Banner.php @@ -0,0 +1,76 @@ +<?php + +namespace app\admin\controller; + +use app\common\controller\Backend; + +/** + * 首页轮播图 + * + * @icon fa fa-circle-o + */ +class Banner extends Backend +{ + + /** + * Banner模型对象 + * @var \app\admin\model\Banner + */ + protected $model = null; + + public function _initialize() + { + parent::_initialize(); + $this->model = new \app\admin\model\Banner; + + } + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + + + /** + * 查看 + */ + public function index() + { + //当前是否为关联查询 + $this->relationSearch = false; + //设置过滤方法 + $this->request->filter(['strip_tags', 'trim']); + if ($this->request->isAjax()) + { + //如果发送的来源是Selectpage,则转发到Selectpage + if ($this->request->request('keyField')) + { + return $this->selectpage(); + } + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + $total = $this->model + + ->where($where) + ->order($sort, $order) + ->count(); + + $list = $this->model + + ->where($where) + ->order($sort, $order) + ->limit($offset, $limit) + ->select(); + + foreach ($list as $row) { + $row->visible(['id','image','createtime']); + + } + $list = collection($list)->toArray(); + $result = array("total" => $total, "rows" => $list); + + return json($result); + } + return $this->view->fetch(); + } +} diff --git a/application/admin/controller/Command.php b/application/admin/controller/Command.php new file mode 100644 index 0000000..64669b6 --- /dev/null +++ b/application/admin/controller/Command.php @@ -0,0 +1,219 @@ +<?php + +namespace app\admin\controller; + +use app\common\controller\Backend; +use think\Config; +use think\console\Input; +use think\Db; +use think\Exception; + +/** + * 在线命令管理 + * + * @icon fa fa-circle-o + */ +class Command extends Backend +{ + + /** + * Command模型对象 + */ + protected $model = null; + protected $noNeedRight = ['get_controller_list', 'get_field_list']; + + public function _initialize() + { + parent::_initialize(); + $this->model = model('Command'); + $this->view->assign("statusList", $this->model->getStatusList()); + } + + /** + * 添加 + */ + public function add() + { + + $tableList = []; + $list = \think\Db::query("SHOW TABLES"); + foreach ($list as $key => $row) { + $tableList[reset($row)] = reset($row); + } + + $this->view->assign("tableList", $tableList); + return $this->view->fetch(); + } + + /** + * 获取字段列表 + * @internal + */ + public function get_field_list() + { + $dbname = Config::get('database.database'); + $prefix = Config::get('database.prefix'); + $table = $this->request->request('table'); + //从数据库中获取表字段信息 + $sql = "SELECT * FROM `information_schema`.`columns` " + . "WHERE TABLE_SCHEMA = ? AND table_name = ? " + . "ORDER BY ORDINAL_POSITION"; + //加载主表的列 + $columnList = Db::query($sql, [$dbname, $table]); + $fieldlist = []; + foreach ($columnList as $index => $item) { + $fieldlist[] = $item['COLUMN_NAME']; + } + $this->success("", null, ['fieldlist' => $fieldlist]); + } + + /** + * 获取控制器列表 + * @internal + */ + public function get_controller_list() + { + $adminPath = dirname(__DIR__) . DS; + $controllerDir = $adminPath . 'controller' . DS; + $files = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($controllerDir), \RecursiveIteratorIterator::LEAVES_ONLY + ); + $list = []; + foreach ($files as $name => $file) { + if (!$file->isDir()) { + $filePath = $file->getRealPath(); + $name = str_replace($controllerDir, '', $filePath); + $name = str_replace(DS, "/", $name); + $list[] = ['id' => $name, 'name' => $name]; + } + } + $pageNumber = $this->request->request("pageNumber"); + $pageSize = $this->request->request("pageSize"); + return json(['list' => array_slice($list, ($pageNumber - 1) * $pageSize, $pageSize), 'total' => count($list)]); + } + + /** + * 详情 + */ + public function detail($ids) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $this->view->assign("row", $row); + return $this->view->fetch(); + } + + /** + * 执行 + */ + public function execute($ids) + { + $row = $this->model->get($ids); + if (!$row) + $this->error(__('No Results were found')); + $result = $this->doexecute($row['type'], json_decode($row['params'], true)); + $this->success("", null, ['result' => $result]); + } + + /** + * 执行命令 + */ + public function command($action = '') + { + $commandtype = $this->request->request("commandtype"); + $params = $this->request->request(); + $allowfields = [ + 'crud' => 'table,controller,model,fields,force,local,delete,menu', + 'menu' => 'controller,delete', + 'min' => 'module,resource,optimize', + 'api' => 'url,module,output,template,force,title,author,class,language', + ]; + $argv = []; + $allowfields = isset($allowfields[$commandtype]) ? explode(',', $allowfields[$commandtype]) : []; + $allowfields = array_filter(array_intersect_key($params, array_flip($allowfields))); + if (isset($params['local']) && !$params['local']) { + $allowfields['local'] = $params['local']; + } else { + unset($allowfields['local']); + } + foreach ($allowfields as $key => $param) { + $argv[] = "--{$key}=" . (is_array($param) ? implode(',', $param) : $param); + } + if ($commandtype == 'crud') { + $extend = 'setcheckboxsuffix,enumradiosuffix,imagefield,filefield,intdatesuffix,switchsuffix,citysuffix,selectpagesuffix,selectpagessuffix,ignorefields,sortfield,editorsuffix,headingfilterfield'; + $extendArr = explode(',', $extend); + foreach ($params as $index => $item) { + if (in_array($index, $extendArr)) { + foreach (explode(',', $item) as $key => $value) { + if ($value) { + $argv[] = "--{$index}={$value}"; + } + } + } + } + $isrelation = (int)$this->request->request('isrelation'); + if ($isrelation && isset($params['relation'])) { + foreach ($params['relation'] as $index => $relation) { + foreach ($relation as $key => $value) { + $argv[] = "--{$key}=" . (is_array($value) ? implode(',', $value) : $value); + } + } + } + } else if ($commandtype == 'menu') { + if (isset($params['allcontroller']) && $params['allcontroller']) { + $argv[] = "--controller=all-controller"; + } else { + foreach (explode(',', $params['controllerfile']) as $index => $param) { + if ($param) { + $argv[] = "--controller=" . substr($param, 0, -4); + } + } + } + } else if ($commandtype == 'min') { + + } else if ($commandtype == 'api') { + + } else { + + } + if ($action == 'execute') { + $result = $this->doexecute($commandtype, $argv); + $this->success("", null, ['result' => $result]); + } else { + $this->success("", null, ['command' => "php think {$commandtype} " . implode(' ', $argv)]); + } + + return; + } + + protected function doexecute($commandtype, $argv) + { + $commandName = "\\app\\admin\\command\\" . ucfirst($commandtype); + $input = new Input($argv); + $output = new \addons\command\library\Output(); + $command = new $commandName($commandtype); + $data = [ + 'type' => $commandtype, + 'params' => json_encode($argv), + 'command' => "php think {$commandtype} " . implode(' ', $argv), + 'executetime' => time(), + ]; + $this->model->save($data); + try { + $command->run($input, $output); + $result = implode("\n", $output->getMessage()); + $this->model->status = 'successed'; + } catch (Exception $e) { + $result = implode("\n", $output->getMessage()) . "\n"; + $result .= $e->getMessage(); + $this->model->status = 'failured'; + } + $result = trim($result); + $this->model->content = $result; + $this->model->save(); + return $result; + } + + +} diff --git a/application/admin/controller/Index.php b/application/admin/controller/Index.php index 185200e..eabdf96 100644 --- a/application/admin/controller/Index.php +++ b/application/admin/controller/Index.php @@ -33,10 +33,10 @@ class Index extends Backend { //左侧菜单 list($menulist, $navlist, $fixedmenu, $referermenu) = $this->auth->getSidebar([ - 'dashboard' => 'hot', - 'addon' => ['new', 'red', 'badge'], - 'auth/rule' => __('Menu'), - 'general' => ['new', 'purple'], + 'dashboard' => '', + 'addon' => ['', 'red', 'badge'], + 'auth/rule' => __(''), + 'general' => ['', 'purple'], ], $this->view->site['fixedpage']); $action = $this->request->request('action'); if ($this->request->isPost()) { diff --git a/application/admin/lang/zh-cn/banner.php b/application/admin/lang/zh-cn/banner.php new file mode 100644 index 0000000..fa72ab4 --- /dev/null +++ b/application/admin/lang/zh-cn/banner.php @@ -0,0 +1,8 @@ +<?php + +return [ + 'Id' => 'ID', + 'Image' => '轮播图', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间' +]; diff --git a/application/admin/lang/zh-cn/command.php b/application/admin/lang/zh-cn/command.php new file mode 100644 index 0000000..b010250 --- /dev/null +++ b/application/admin/lang/zh-cn/command.php @@ -0,0 +1,16 @@ +<?php + +return [ + 'Id' => 'ID', + 'Type' => '类型', + 'Params' => '参数', + 'Command' => '命令', + 'Content' => '返回结果', + 'Executetime' => '执行时间', + 'Createtime' => '创建时间', + 'Updatetime' => '更新时间', + 'Execute again' => '再次执行', + 'Successed' => '成功', + 'Failured' => '失败', + 'Status' => '状态' +]; diff --git a/application/admin/model/Banner.php b/application/admin/model/Banner.php new file mode 100644 index 0000000..0c58b2a --- /dev/null +++ b/application/admin/model/Banner.php @@ -0,0 +1,40 @@ +<?php + +namespace app\admin\model; + +use think\Model; + + +class Banner extends Model +{ + + + + + + // 表名 + protected $name = 'banner'; + + // 自动写入时间戳字段 + protected $autoWriteTimestamp = 'int'; + + // 定义时间戳字段名 + protected $createTime = 'createtime'; + protected $updateTime = 'updatetime'; + protected $deleteTime = false; + + // 追加属性 + protected $append = [ + + ]; + + + + + + + + + + +} diff --git a/application/admin/model/Command.php b/application/admin/model/Command.php new file mode 100644 index 0000000..131e0bd --- /dev/null +++ b/application/admin/model/Command.php @@ -0,0 +1,59 @@ +<?php + +namespace app\admin\model; + +use think\Model; + +class Command extends Model +{ + // 表名 + protected $name = 'command'; + + // 自动写入时间戳字段 + protected $autoWriteTimestamp = 'int'; + + // 定义时间戳字段名 + protected $createTime = 'createtime'; + protected $updateTime = 'updatetime'; + + // 追加属性 + protected $append = [ + 'executetime_text', + 'type_text', + 'status_text' + ]; + + + public function getStatusList() + { + return ['successed' => __('Successed'), 'failured' => __('Failured')]; + } + + + public function getExecutetimeTextAttr($value, $data) + { + $value = $value ? $value : $data['executetime']; + return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; + } + + public function getTypeTextAttr($value, $data) + { + $value = $value ? $value : $data['type']; + $list = ['crud' => '一键生成CRUD', 'menu' => '一键生成菜单', 'min' => '一键压缩打包', 'api' => '一键生成文档']; + return isset($list[$value]) ? $list[$value] : ''; + } + + public function getStatusTextAttr($value, $data) + { + $value = $value ? $value : $data['status']; + $list = $this->getStatusList(); + return isset($list[$value]) ? $list[$value] : ''; + } + + protected function setExecutetimeAttr($value) + { + return $value && !is_numeric($value) ? strtotime($value) : $value; + } + + +} diff --git a/application/admin/validate/Banner.php b/application/admin/validate/Banner.php new file mode 100644 index 0000000..f817f5d --- /dev/null +++ b/application/admin/validate/Banner.php @@ -0,0 +1,27 @@ +<?php + +namespace app\admin\validate; + +use think\Validate; + +class Banner extends Validate +{ + /** + * 验证规则 + */ + protected $rule = [ + ]; + /** + * 提示消息 + */ + protected $message = [ + ]; + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [], + 'edit' => [], + ]; + +} diff --git a/application/admin/validate/Command.php b/application/admin/validate/Command.php new file mode 100644 index 0000000..9da8fa6 --- /dev/null +++ b/application/admin/validate/Command.php @@ -0,0 +1,27 @@ +<?php + +namespace app\admin\validate; + +use think\Validate; + +class Command extends Validate +{ + /** + * 验证规则 + */ + protected $rule = [ + ]; + /** + * 提示消息 + */ + protected $message = [ + ]; + /** + * 验证场景 + */ + protected $scene = [ + 'add' => [], + 'edit' => [], + ]; + +} diff --git a/application/admin/view/banner/add.html b/application/admin/view/banner/add.html new file mode 100644 index 0000000..378894b --- /dev/null +++ b/application/admin/view/banner/add.html @@ -0,0 +1,24 @@ +<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> + + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label> + <div class="col-xs-12 col-sm-8"> + <div class="input-group"> + <input id="c-image" data-rule="required" class="form-control" size="50" name="row[image]" type="text"> + <div class="input-group-addon no-border no-padding"> + <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> + <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span> + </div> + <span class="msg-box n-right" for="c-image"></span> + </div> + <ul class="row list-inline plupload-preview" id="p-image"></ul> + </div> + </div> + <div class="form-group layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> + </div> + </div> +</form> diff --git a/application/admin/view/banner/edit.html b/application/admin/view/banner/edit.html new file mode 100644 index 0000000..41b1126 --- /dev/null +++ b/application/admin/view/banner/edit.html @@ -0,0 +1,24 @@ +<form id="edit-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> + + <div class="form-group"> + <label class="control-label col-xs-12 col-sm-2">{:__('Image')}:</label> + <div class="col-xs-12 col-sm-8"> + <div class="input-group"> + <input id="c-image" data-rule="required" class="form-control" size="50" name="row[image]" type="text" value="{$row.image|htmlentities}"> + <div class="input-group-addon no-border no-padding"> + <span><button type="button" id="plupload-image" class="btn btn-danger plupload" data-input-id="c-image" data-mimetype="image/gif,image/jpeg,image/png,image/jpg,image/bmp" data-multiple="false" data-preview-id="p-image"><i class="fa fa-upload"></i> {:__('Upload')}</button></span> + <span><button type="button" id="fachoose-image" class="btn btn-primary fachoose" data-input-id="c-image" data-mimetype="image/*" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span> + </div> + <span class="msg-box n-right" for="c-image"></span> + </div> + <ul class="row list-inline plupload-preview" id="p-image"></ul> + </div> + </div> + <div class="form-group layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button> + <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> + </div> + </div> +</form> diff --git a/application/admin/view/banner/index.html b/application/admin/view/banner/index.html new file mode 100644 index 0000000..8365745 --- /dev/null +++ b/application/admin/view/banner/index.html @@ -0,0 +1,35 @@ +<div class="panel panel-default panel-intro"> + {:build_heading()} + + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="one"> + <div class="widget-body no-padding"> + <div id="toolbar" class="toolbar"> + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('banner/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> + <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('banner/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a> + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('banner/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> + <!--<a href="javascript:;" class="btn btn-danger btn-import {:$auth->check('banner/import')?'':'hide'}" title="{:__('Import')}" id="btn-import-file" data-url="ajax/upload" data-mimetype="csv,xls,xlsx" data-multiple="false"><i class="fa fa-upload"></i> {:__('Import')}</a>--> + + <!--<div class="dropdown btn-group {:$auth->check('banner/multi')?'':'hide'}">--> + <!--<a class="btn btn-primary btn-more dropdown-toggle btn-disabled disabled" data-toggle="dropdown"><i class="fa fa-cog"></i> {:__('More')}</a>--> + <!--<ul class="dropdown-menu text-left" role="menu">--> + <!--<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=normal"><i class="fa fa-eye"></i> {:__('Set to normal')}</a></li>--> + <!--<li><a class="btn btn-link btn-multi btn-disabled disabled" href="javascript:;" data-params="status=hidden"><i class="fa fa-eye-slash"></i> {:__('Set to hidden')}</a></li>--> + <!--</ul>--> + <!--</div>--> + + + </div> + <table id="table" class="table table-striped table-bordered table-hover table-nowrap" + data-operate-edit="{:$auth->check('banner/edit')}" + data-operate-del="{:$auth->check('banner/del')}" + width="100%"> + </table> + </div> + </div> + + </div> + </div> +</div> diff --git a/application/admin/view/command/add.html b/application/admin/view/command/add.html new file mode 100644 index 0000000..bb69b43 --- /dev/null +++ b/application/admin/view/command/add.html @@ -0,0 +1,400 @@ +<style> + .relation-item {margin-top:10px;} + legend {padding-bottom:5px;font-size:14px;font-weight:600;} + label {font-weight:normal;} + .form-control{padding:6px 8px;} + #extend-zone .col-xs-2 {margin-top:10px;padding-right:0;} + #extend-zone .col-xs-2:nth-child(6n+0) {padding-right:15px;} +</style> +<div class="panel panel-default panel-intro"> + <div class="panel-heading"> + <ul class="nav nav-tabs"> + <li class="active"><a href="#crud" data-toggle="tab">{:__('一键生成CRUD')}</a></li> + <li><a href="#menu" data-toggle="tab">{:__('一键生成菜单')}</a></li> + <li><a href="#min" data-toggle="tab">{:__('一键压缩打包')}</a></li> + <li><a href="#api" data-toggle="tab">{:__('一键生成API文档')}</a></li> + </ul> + </div> + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="crud"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="crud" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="isrelation" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="当前只支持生成1对1关联模型,选中后请配置关联表和字段"> + <input name="isrelation" type="checkbox" value="1"> + 关联模型 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="local" type="hidden" value="1"> + <label class="control-label" data-toggle="tooltip" title="默认模型生成在application/admin/model目录下,选中后将生成在application/common/model目录下"> + <input name="local" type="checkbox" value="0"> 全局模型类 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="delete" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="删除CRUD生成的相关文件"> + <input name="delete" type="checkbox" value="1"> 删除模式 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="选中后,如果已经存在同名文件将被覆盖。如果是删除将不再提醒"> + <input name="force" type="checkbox" value="1"> + 强制覆盖模式 + </label> + </div> + <!-- + <div class="col-xs-3"> + <input checked="" name="menu" type="hidden" value="0"> + <label class="control-label" data-toggle="tooltip" title="选中后,将同时生成后台菜单规则"> + <input name="menu" type="checkbox" value="1"> + 生成菜单 + </label> + </div> + --> + </div> + </div> + <div class="form-group"> + <legend>主表设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请选择主表</label> + {:build_select('table',$tableList,null,['class'=>'form-control selectpicker']);} + </div> + <div class="col-xs-3"> + <label>自定义控制器名</label> + <input type="text" class="form-control" name="controller" data-toggle="tooltip" title="默认根据表名自动生成,如果需要放在二级目录请手动填写" placeholder="支持目录层级,以/分隔"> + </div> + <div class="col-xs-3"> + <label>自定义模型名</label> + <input type="text" class="form-control" name="model" data-toggle="tooltip" title="默认根据表名自动生成" placeholder="不支持目录层级"> + </div> + <div class="col-xs-3"> + <label>请选择显示字段(默认全部)</label> + <select name="fields[]" id="fields" multiple style="height:30px;" class="form-control selectpicker"></select> + </div> + + </div> + + </div> + + <div class="form-group hide" id="relation-zone"> + <legend>关联表设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + <a href="javascript:;" class="btn btn-primary btn-sm btn-newrelation" data-index="1">追加关联模型</a> + </div> + </div> + </div> + + <hr> + <div class="form-group" id="extend-zone"> + <legend>字段识别设置 <span style="font-size:12px;font-weight: normal;">(与之匹配的字段都将生成相应组件)</span></legend> + <div class="row"> + <div class="col-xs-2"> + <label>复选框后缀</label> + <input type="text" class="form-control" name="setcheckboxsuffix" placeholder="默认为set类型" /> + </div> + <div class="col-xs-2"> + <label>单选框后缀</label> + <input type="text" class="form-control" name="enumradiosuffix" placeholder="默认为enum类型" /> + </div> + <div class="col-xs-2"> + <label>图片类型后缀</label> + <input type="text" class="form-control" name="imagefield" placeholder="默认为image,images,avatar,avatars" /> + </div> + <div class="col-xs-2"> + <label>文件类型后缀</label> + <input type="text" class="form-control" name="filefield" placeholder="默认为file,files" /> + </div> + <div class="col-xs-2"> + <label>日期时间后缀</label> + <input type="text" class="form-control" name="intdatesuffix" placeholder="默认为time" /> + </div> + <div class="col-xs-2"> + <label>开关后缀</label> + <input type="text" class="form-control" name="switchsuffix" placeholder="默认为switch" /> + </div> + <div class="col-xs-2"> + <label>城市选择后缀</label> + <input type="text" class="form-control" name="citysuffix" placeholder="默认为city" /> + </div> + <div class="col-xs-2"> + <label>动态下拉后缀(单)</label> + <input type="text" class="form-control" name="selectpagesuffix" placeholder="默认为_id" /> + </div> + <div class="col-xs-2"> + <label>动态下拉后缀(多)</label> + <input type="text" class="form-control" name="selectpagessuffix" placeholder="默认为_ids" /> + </div> + <div class="col-xs-2"> + <label>忽略的字段</label> + <input type="text" class="form-control" name="ignorefields" placeholder="默认无" /> + </div> + <div class="col-xs-2"> + <label>排序字段</label> + <input type="text" class="form-control" name="sortfield" placeholder="默认为weigh" /> + </div> + <div class="col-xs-2"> + <label>富文本编辑器</label> + <input type="text" class="form-control" name="editorsuffix" placeholder="默认为content" /> + </div> + <div class="col-xs-2"> + <label>选项卡过滤字段</label> + <input type="text" class="form-control" name="headingfilterfield" placeholder="默认为status" /> + </div> + + </div> + + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" data-toggle="tooltip" title="如果在线执行命令失败,可以将命令复制到命令行进行执行" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="menu"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="menu" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="allcontroller" type="hidden" value="0"> + <label class="control-label"> + <input name="allcontroller" data-toggle="collapse" data-target="#controller" type="checkbox" value="1"> 一键生成全部控制器 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="delete" type="hidden" value="0"> + <label class="control-label"> + <input name="delete" type="checkbox" value="1"> 删除模式 + </label> + </div> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label"> + <input name="force" type="checkbox" value="1"> 强制覆盖模式 + </label> + </div> + </div> + </div> + + <div class="form-group in" id="controller"> + <legend>控制器设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + <input type="text" name="controllerfile" class="form-control selectpage" style="width:720px;" data-source="command/get_controller_list" data-multiple="true" name="controller" placeholder="请选择控制器" /> + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="min"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="min" /> + <div class="form-group"> + <legend>基础设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请选择压缩模块</label> + <select name="module" class="form-control selectpicker"> + <option value="all" selected>全部</option> + <option value="backend">后台Backend</option> + <option value="frontend">前台Frontend</option> + </select> + </div> + <div class="col-xs-3"> + <label>请选择压缩资源</label> + <select name="resource" class="form-control selectpicker"> + <option value="all" selected>全部</option> + <option value="js">JS</option> + <option value="css">CSS</option> + </select> + </div> + <div class="col-xs-3"> + <label>请选择压缩模式</label> + <select name="optimize" class="form-control selectpicker"> + <option value="">无</option> + <option value="uglify">uglify</option> + <option value="closure">closure</option> + </select> + </div> + </div> + </div> + + <div class="form-group in"> + <legend>控制器设置</legend> + + <div class="row" style="margin-top:15px;"> + <div class="col-xs-12"> + + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + <div class="tab-pane fade" id="api"> + <div class="row"> + <div class="col-xs-12"> + <form role="form"> + <input type="hidden" name="commandtype" value="api" /> + <div class="form-group"> + <div class="row"> + <div class="col-xs-3"> + <input checked="" name="force" type="hidden" value="0"> + <label class="control-label"> + <input name="force" type="checkbox" value="1"> + 覆盖模式 + </label> + </div> + </div> + </div> + <div class="form-group"> + <legend>文档设置</legend> + <div class="row"> + <div class="col-xs-3"> + <label>请输入接口URL</label> + <input type="text" name="url" class="form-control" placeholder="API URL,可留空" /> + </div> + <div class="col-xs-3"> + <label>接口生成文件</label> + <input type="text" name="output" class="form-control" placeholder="留空则使用api.html" /> + </div> + <div class="col-xs-3"> + <label>模板文件</label> + <input type="text" name="template" class="form-control" placeholder="如果不清楚请留空" /> + </div> + </div> + <div class="row" style="margin-top:10px;"> + <div class="col-xs-3"> + <label>文档标题</label> + <input type="text" name="title" class="form-control" placeholder="默认为FastAdmin" /> + </div> + <div class="col-xs-3"> + <label>文档作者</label> + <input type="text" name="author" class="form-control" placeholder="默认为FastAdmin" /> + </div> + <div class="col-xs-3"> + <label>文档语言</label> + <select name="language" class="form-control"> + <option value="" selected>请选择语言</option> + <option value="zh-cn">中文</option> + <option value="en">英文</option> + </select> + </div> + </div> + </div> + + <div class="form-group"> + <legend>生成命令行</legend> + <textarea class="form-control" rel="command" rows="1" placeholder="请点击生成命令行"></textarea> + </div> + + <div class="form-group"> + <legend>返回结果</legend> + <textarea class="form-control" rel="result" rows="5" placeholder="请点击立即执行"></textarea> + </div> + + <div class="form-group"> + <button type="button" class="btn btn-info btn-embossed btn-command">{:__('生成命令行')}</button> + <button type="button" class="btn btn-success btn-embossed btn-execute">{:__('立即执行')}</button> + </div> + + </form> + </div> + </div> + </div> + </div> + </div> +</div> +<script id="relationtpl" type="text/html"> + <div class="row relation-item"> + <div class="col-xs-2"> + <label>请选择关联表</label> + <select name="relation[<%=index%>][relation]" class="form-control relationtable"></select> + </div> + <div class="col-xs-2"> + <label>请选择关联类型</label> + <select name="relation[<%=index%>][relationmode]" class="form-control relationmode"></select> + </div> + <div class="col-xs-2"> + <label>关联外键</label> + <select name="relation[<%=index%>][relationforeignkey]" class="form-control relationforeignkey"></select> + </div> + <div class="col-xs-2"> + <label>关联主键</label> + <select name="relation[<%=index%>][relationprimarykey]" class="form-control relationprimarykey"></select> + </div> + <div class="col-xs-2"> + <label>请选择显示字段</label> + <select name="relation[<%=index%>][relationfields][]" multiple class="form-control relationfields"></select> + </div> + <div class="col-xs-2"> + <label> </label> + <a href="javascript:;" class="btn btn-danger btn-block btn-removerelation">移除</a> + </div> + </div> +</script> \ No newline at end of file diff --git a/application/admin/view/command/detail.html b/application/admin/view/command/detail.html new file mode 100644 index 0000000..24bf12d --- /dev/null +++ b/application/admin/view/command/detail.html @@ -0,0 +1,42 @@ +<table class="table table-striped"> + <thead> + <tr> + <th>{:__('Title')}</th> + <th>{:__('Content')}</th> + </tr> + </thead> + <tbody> + <tr> + <td>{:__('Type')}</td> + <td>{$row.type}({$row.type_text})</td> + </tr> + <tr> + <td>{:__('Params')}</td> + <td>{$row.params}</td> + </tr> + <tr> + <td>{:__('Command')}</td> + <td>{$row.command}</td> + </tr> + <tr> + <td>{:__('Content')}</td> + <td> + <textarea class="form-control" name="" id="" cols="60" rows="10">{$row.content}</textarea> + </td> + </tr> + <tr> + <td>{:__('Executetime')}</td> + <td>{$row.executetime|datetime}</td> + </tr> + <tr> + <td>{:__('Status')}</td> + <td>{$row.status_text}</td> + </tr> + </tbody> +</table> +<div class="hide layer-footer"> + <label class="control-label col-xs-12 col-sm-2"></label> + <div class="col-xs-12 col-sm-8"> + <button type="reset" class="btn btn-primary btn-embossed btn-close" onclick="Layer.closeAll();">{:__('Close')}</button> + </div> +</div> \ No newline at end of file diff --git a/application/admin/view/command/index.html b/application/admin/view/command/index.html new file mode 100644 index 0000000..3b4f823 --- /dev/null +++ b/application/admin/view/command/index.html @@ -0,0 +1,25 @@ +<div class="panel panel-default panel-intro"> + {:build_heading()} + + <div class="panel-body"> + <div id="myTabContent" class="tab-content"> + <div class="tab-pane fade active in" id="one"> + <div class="widget-body no-padding"> + <div id="toolbar" class="toolbar"> + <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a> + <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('command/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a> + <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('command/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a> + + </div> + <table id="table" class="table table-striped table-bordered table-hover" + data-operate-detail="{:$auth->check('command/detail')}" + data-operate-execute="{:$auth->check('command/execute')}" + data-operate-del="{:$auth->check('command/del')}" + width="100%"> + </table> + </div> + </div> + + </div> + </div> +</div> diff --git a/application/admin/view/common/menu.html b/application/admin/view/common/menu.html index da037c0..146e1e4 100644 --- a/application/admin/view/common/menu.html +++ b/application/admin/view/common/menu.html @@ -36,9 +36,9 @@ {$menulist} <!--以下4行可以删除或改成自己的链接,但建议你在你的网站上添加一个FastAdmin的链接--> - <li class="header" data-rel="external">{:__('Links')}</li> - <li data-rel="external"><a href="https://doc.fastadmin.net" target="_blank"><i class="fa fa-list text-red"></i> <span>{:__('Docs')}</span></a></li> - <li data-rel="external"><a href="https://forum.fastadmin.net" target="_blank"><i class="fa fa-comment text-yellow"></i> <span>{:__('Forum')}</span></a></li> - <li data-rel="external"><a href="https://jq.qq.com/?_wv=1027&k=487PNBb" target="_blank"><i class="fa fa-qq text-aqua"></i> <span>{:__('QQ qun')}</span></a></li> + <!--<li class="header" data-rel="external">{:__('Links')}</li>--> + <!--<li data-rel="external"><a href="https://doc.fastadmin.net" target="_blank"><i class="fa fa-list text-red"></i> <span>{:__('Docs')}</span></a></li>--> + <!--<li data-rel="external"><a href="https://forum.fastadmin.net" target="_blank"><i class="fa fa-comment text-yellow"></i> <span>{:__('Forum')}</span></a></li>--> + <!--<li data-rel="external"><a href="https://jq.qq.com/?_wv=1027&k=487PNBb" target="_blank"><i class="fa fa-qq text-aqua"></i> <span>{:__('QQ qun')}</span></a></li>--> </ul> </section> \ No newline at end of file diff --git a/application/config.php b/application/config.php index 64fda49..987a814 100644 --- a/application/config.php +++ b/application/config.php @@ -18,7 +18,7 @@ return [ // 应用命名空间 'app_namespace' => 'app', // 应用调试模式 - 'app_debug' => Env::get('app.debug', false), + 'app_debug' => Env::get('app.debug', true), // 应用Trace 'app_trace' => Env::get('app.trace', false), // 应用模式状态 diff --git a/application/database.php b/application/database.php index 607dee7..3460c46 100644 --- a/application/database.php +++ b/application/database.php @@ -16,13 +16,13 @@ return [ // 数据库类型 'type' => Env::get('database.type', 'mysql'), // 服务器地址 - 'hostname' => Env::get('database.hostname', '127.0.0.1'), + 'hostname' => Env::get('database.hostname', '39.107.114.243'), // 数据库名 - 'database' => Env::get('database.database', 'fastadmin'), + 'database' => Env::get('database.database', 'feifangu'), // 用户名 'username' => Env::get('database.username', 'root'), // 密码 - 'password' => Env::get('database.password', ''), + 'password' => Env::get('database.password', 'jinglong743558'), // 端口 'hostport' => Env::get('database.hostport', ''), // 连接dsn @@ -32,7 +32,7 @@ return [ // 数据库编码默认采用utf8 'charset' => Env::get('database.charset', 'utf8'), // 数据库表前缀 - 'prefix' => Env::get('database.prefix', 'fa_'), + 'prefix' => Env::get('database.prefix', 'ffg_'), // 数据库调试模式 'debug' => Env::get('database.debug', true), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) diff --git a/application/extra/addons.php b/application/extra/addons.php index e74b2f9..4db2c84 100644 --- a/application/extra/addons.php +++ b/application/extra/addons.php @@ -4,6 +4,18 @@ return array ( 'autoload' => false, 'hooks' => array ( + 'config_init' => + array ( + 0 => 'nkeditor', + ), + 'upload_config_init' => + array ( + 0 => 'qiniu', + ), + 'upload_delete' => + array ( + 0 => 'qiniu', + ), ), 'route' => array ( diff --git a/public/XzuemHTJfG.php b/public/XzuemHTJfG.php new file mode 100644 index 0000000..a1c1350 --- /dev/null +++ b/public/XzuemHTJfG.php @@ -0,0 +1,38 @@ +<?php + +// +---------------------------------------------------------------------- +// | ThinkPHP [ WE CAN DO IT JUST THINK ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) +// +---------------------------------------------------------------------- +// | Author: liu21st <liu21st@gmail.com> +// +---------------------------------------------------------------------- +// [ 后台入口文件 ] +// 使用此文件可以达到隐藏admin模块的效果 +// 建议将admin.php改成其它任意的文件名,同时修改config.php中的'deny_module_list',把admin模块也添加进去 +// 定义应用目录 +define('APP_PATH', __DIR__ . '/../application/'); + +// 判断是否安装FastAdmin +if (!is_file(APP_PATH . 'admin/command/Install/install.lock')) +{ + header("location:./install.php"); + exit; +} + +// 加载框架引导文件 +require __DIR__ . '/../thinkphp/base.php'; + +// 绑定到admin模块 +\think\Route::bind('admin'); + +// 关闭路由 +\think\App::route(false); + +// 设置根url +\think\Url::root(''); + +// 执行应用 +\think\App::run()->send(); diff --git a/public/admin.php b/public/admin.php deleted file mode 100644 index a1c1350..0000000 --- a/public/admin.php +++ /dev/null @@ -1,38 +0,0 @@ -<?php - -// +---------------------------------------------------------------------- -// | ThinkPHP [ WE CAN DO IT JUST THINK ] -// +---------------------------------------------------------------------- -// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved. -// +---------------------------------------------------------------------- -// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) -// +---------------------------------------------------------------------- -// | Author: liu21st <liu21st@gmail.com> -// +---------------------------------------------------------------------- -// [ 后台入口文件 ] -// 使用此文件可以达到隐藏admin模块的效果 -// 建议将admin.php改成其它任意的文件名,同时修改config.php中的'deny_module_list',把admin模块也添加进去 -// 定义应用目录 -define('APP_PATH', __DIR__ . '/../application/'); - -// 判断是否安装FastAdmin -if (!is_file(APP_PATH . 'admin/command/Install/install.lock')) -{ - header("location:./install.php"); - exit; -} - -// 加载框架引导文件 -require __DIR__ . '/../thinkphp/base.php'; - -// 绑定到admin模块 -\think\Route::bind('admin'); - -// 关闭路由 -\think\App::route(false); - -// 设置根url -\think\Url::root(''); - -// 执行应用 -\think\App::run()->send(); diff --git a/public/assets/addons/nkeditor/css/common.css b/public/assets/addons/nkeditor/css/common.css new file mode 100644 index 0000000..12fa84e --- /dev/null +++ b/public/assets/addons/nkeditor/css/common.css @@ -0,0 +1,5 @@ + +.ke-container-black .ke-toolbar .ke-icon-remoteimage { + background-image: url(../img/download.png); + background-size: 16px 16px; +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/img/download.png b/public/assets/addons/nkeditor/img/download.png new file mode 100644 index 0000000..1945ae7 Binary files /dev/null and b/public/assets/addons/nkeditor/img/download.png differ diff --git a/public/assets/addons/nkeditor/img/downloading.png b/public/assets/addons/nkeditor/img/downloading.png new file mode 100644 index 0000000..1d6cbd1 Binary files /dev/null and b/public/assets/addons/nkeditor/img/downloading.png differ diff --git a/public/assets/addons/nkeditor/js/customplugin.js b/public/assets/addons/nkeditor/js/customplugin.js new file mode 100644 index 0000000..79075e9 --- /dev/null +++ b/public/assets/addons/nkeditor/js/customplugin.js @@ -0,0 +1,74 @@ +define(['nkeditor-core'], function (Nkeditor) { + Nkeditor.plugin('multiimage', function (K) { + var self = this, name = 'multiimage', lang = self.lang(name + '.'), + allowImages = K.undef(self.allowImages, false); + + var click = function () { + + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class=""><div class="ke-inline-block ke-upload-button">' + + '<form class="ke-upload-area ke-form nice-validator n-default" method="post" enctype="multipart/form-data" style="width: 266px;margin:50px auto;">' + + '<span class="ke-button-common"><input type="button" class="ke-button-common ke-button" value="批量上传图片" style="width:128px;"></span><input type="file" class="ke-upload-file" name="imgFiles" multiple style="width:128px;left:0;right:inherit" tabindex="-1">' + + '<span class="ke-button-common" style="margin-left:10px;"><input type="button" class="ke-button-common ke-button ke-select-image" style="width:128px;" value="从图片空间选择"></span>' + + '</form>' + + '</div></span></div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + height: 260, + title: self.lang(name), + body: html, + noBtn: { + name: self.lang('no'), + click: function (e) { + self.hideDialog().focus(); + } + } + }), + div = dialog.div; + $("input[name=imgFiles]", div).change(function () { + dialog.showLoading(); + var files = $(this).prop('files'); + $.each(files, function (i, file) { + self.beforeUpload.call(self, function (data) { + self.exec('insertimage', Fast.api.cdnurl(data.data.url)); + }, file); + }); + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + }); + $(".ke-select-image", div).click(function () { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'image', + multiple: true, + clickFn: function (urls) { + $.each(urls, function(i, url){ + self.exec('insertimage', url); + }); + } + }); + }); + self.hideDialog().focus(); + // parent.Fast.api.open("general/attachment/select?element_id=&multiple=true&mimetype=*", __('Choose'), { + // callback: function (data) { + // var urlArr = data.url.split(/\,/); + // $.each(urlArr, function () { + // var url = Fast.api.cdnurl(this); + // self.exec('insertimage', url); + // }); + // } + // }); + }); + }; + self.clickToolbar(name, click); + }); + + return Nkeditor; +}); diff --git a/public/assets/addons/nkeditor/lang/ar.js b/public/assets/addons/nkeditor/lang/ar.js new file mode 100644 index 0000000..6eb4b7e --- /dev/null +++ b/public/assets/addons/nkeditor/lang/ar.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Arabic Translation By daif alotaibi (http://daif.net/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'عرض المصدر', + preview : 'معاينة الصفحة', + undo : 'تراجع(Ctrl+Z)', + redo : 'إعادة التراجع(Ctrl+Y)', + cut : 'قص(Ctrl+X)', + copy : 'نسخ(Ctrl+C)', + paste : 'لصق(Ctrl+V)', + plainpaste : 'لصق كنص عادي', + wordpaste : 'لصق من مايكروسفت ورد', + selectall : 'تحديد الكل', + justifyleft : 'محاذاه لليسار', + justifycenter : 'محاذاه للوسط', + justifyright : 'محاذاه لليمين', + justifyfull : 'محاذاه تلقائية', + insertorderedlist : 'قائمة مرقمه', + insertunorderedlist : 'قائمة نقطية', + indent : 'إزاحه النص', + outdent : 'إلغاء الازاحة', + subscript : 'أسفل النص', + superscript : 'أعلى النص', + formatblock : 'Paragraph format', + fontname : 'نوع الخط', + fontsize : 'حجم الخط', + forecolor : 'لون النص', + hilitecolor : 'لون خلفية النص', + bold : 'عريض(Ctrl+B)', + italic : 'مائل(Ctrl+I)', + underline : 'خط تحت النص(Ctrl+U)', + strikethrough : 'خط على النص', + removeformat : 'إزالة التنسيق', + image : 'إدراج صورة', + multiimage : 'Multi image', + flash : 'إدراج فلاش', + media : 'إدراج وسائط متعددة', + table : 'إدراج جدول', + tablecell : 'خلية', + hr : 'إدراج خط أفقي', + emoticons : 'إدراج وجه ضاحك', + link : 'رابط', + unlink : 'إزالة الرابط', + fullscreen : 'محرر ملئ الشاشة', + about : 'حول', + print : 'طباعة', + filemanager : 'مدير الملفات', + code : 'إدراج نص برمجي', + map : 'خرائط قووقل', + baidumap : 'خرائط قووقل', + lineheight : 'إرتفاع السطر', + clearhtml : 'مسح كود HTML', + pagebreak : 'إدراج فاصل صفحات', + quickformat : 'تنسيق سريع', + insertfile : 'إدراج ملف', + template : 'إدراج قالب', + anchor : 'رابط', + yes : 'موافق', + no : 'إلغاء', + close : 'إغلاق', + editImage : 'خصائص الصورة', + deleteImage : 'حذفالصورة', + editFlash : 'خصائص الفلاش', + deleteFlash : 'حذف الفلاش', + editMedia : 'خصائص الوسائط', + deleteMedia : 'حذف الوسائط', + editLink : 'خصائص الرابط', + deleteLink : 'إزالة الرابط', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'خصائص الجدول', + tablecellprop : 'خصائص الخلية', + tableinsert : 'إدراج جدول', + tabledelete : 'حذف جدول', + tablecolinsertleft : 'إدراج عمود لليسار', + tablecolinsertright : 'إدراج عمود لليسار', + tablerowinsertabove : 'إدراج صف للأعلى', + tablerowinsertbelow : 'إدراج صف للأسفل', + tablerowmerge : 'دمج للأسفل', + tablecolmerge : 'دمج لليمين', + tablerowsplit : 'تقسم الصف', + tablecolsplit : 'تقسيم العمود', + tablecoldelete : 'حذف العمود', + tablerowdelete : 'حذف الصف', + noColor : 'إفتراضي', + pleaseSelectFile : 'Please select file.', + invalidImg : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: jpg,gif,bmp,png", + invalidMedia : "الرجاء إدخال رابط صحيح.\nالملفات المسموح بها: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "العرض يجب أن يكون رقم.", + invalidHeight : "الإرتفاع يجب أن يكون رقم.", + invalidBorder : "عرض الحد يجب أن يكون رقم.", + invalidUrl : "الرجاء إدخال رابط حيح.", + invalidRows : 'صفوف غير صحيح.', + invalidCols : 'أعمدة غير صحيحة.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'تم رفع الملف بنجاح.', + cutError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+X).', + copyError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+C).', + pasteError : 'حاليا غير مدعومة من المتصفح, إستخدم إختصار لوحة المفاتيح (Ctrl+V).', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'wordpaste.comment' : 'إستخدم إختصار لوحة المفاتيح (Ctrl+V) للصق داخل النافذة.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'الرابط', + 'link.linkType' : 'الهدف', + 'link.newWindow' : 'نافذة جديدة', + 'link.selfWindow' : 'نفس النافذة', + 'flash.url' : 'الرابط', + 'flash.width' : 'العرض', + 'flash.height' : 'الإرتفاع', + 'flash.upload' : 'رفع', + 'flash.viewServer' : 'أستعراض', + 'media.url' : 'الرابط', + 'media.width' : 'العرض', + 'media.height' : 'الإرتفاع', + 'media.autostart' : 'تشغيل تلقائي', + 'media.upload' : 'رفع', + 'media.viewServer' : 'أستعراض', + 'image.remoteImage' : 'إدراج الرابط', + 'image.localImage' : 'رفع', + 'image.remoteUrl' : 'الرابط', + 'image.localUrl' : 'الملف', + 'image.size' : 'الحجم', + 'image.width' : 'العرض', + 'image.height' : 'الإرتفاع', + 'image.resetSize' : 'إستعادة الأبعاد', + 'image.align' : 'محاذاة', + 'image.defaultAlign' : 'الإفتراضي', + 'image.leftAlign' : 'اليسار', + 'image.rightAlign' : 'اليمين', + 'image.imgTitle' : 'العنوان', + 'image.upload' : 'أستعراض', + 'image.viewServer' : 'أستعراض', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'فارغ', + 'filemanager.moveup' : 'المجلد الأب', + 'filemanager.viewType' : 'العرض: ', + 'filemanager.viewImage' : 'مصغرات', + 'filemanager.listImage' : 'قائمة', + 'filemanager.orderType' : 'الترتيب: ', + 'filemanager.fileName' : 'بالإسم', + 'filemanager.fileSize' : 'بالحجم', + 'filemanager.fileType' : 'بالنوع', + 'insertfile.url' : 'الرابط', + 'insertfile.title' : 'العنوان', + 'insertfile.upload' : 'رفع', + 'insertfile.viewServer' : 'أستعراض', + 'table.cells' : 'خلايا', + 'table.rows' : 'صفوف', + 'table.cols' : 'أعمدة', + 'table.size' : 'الأبعاد', + 'table.width' : 'العرض', + 'table.height' : 'الإرتفاع', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'الخارج', + 'table.padding' : 'الداخل', + 'table.spacing' : 'الفراغات', + 'table.align' : 'محاذاه', + 'table.textAlign' : 'افقى', + 'table.verticalAlign' : 'رأسي', + 'table.alignDefault' : 'إفتراضي', + 'table.alignLeft' : 'يسار', + 'table.alignCenter' : 'وسط', + 'table.alignRight' : 'يمين', + 'table.alignTop' : 'أعلى', + 'table.alignMiddle' : 'منتصف', + 'table.alignBottom' : 'أسفل', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'الحدود', + 'table.borderWidth' : 'العرض', + 'table.borderColor' : 'اللون', + 'table.backgroundColor' : 'الخلفية', + 'map.address' : 'العنوان: ', + 'map.search' : 'بحث', + 'baidumap.address' : 'العنوان: ', + 'baidumap.search' : 'بحث', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'إسم الرابط', + 'formatblock.formatBlock' : { + h1 : 'عنوان 1', + h2 : 'عنوان 2', + h3 : 'عنوان 3', + h4 : 'عنوان 4', + p : 'عادي' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'إرتفاع السطر 1'}, + {'1.5' : 'إرتفاع السطر 1.5'}, + {'2' : 'إرتفاع السطر 2'}, + {'2.5' : 'إرتفاع السطر 2.5'}, + {'3' : 'إرتفاع السطر 3'} + ], + 'template.selectTemplate' : 'قالب', + 'template.replaceContent' : 'إستبدال المحتوى الحالي', + 'template.fileList' : { + '1.html' : 'صورة ونص', + '2.html' : 'جدول', + '3.html' : 'قائمة' + } +}, 'ar'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ar'; \ No newline at end of file diff --git a/public/assets/addons/nkeditor/lang/en.js b/public/assets/addons/nkeditor/lang/en.js new file mode 100644 index 0000000..dbaa616 --- /dev/null +++ b/public/assets/addons/nkeditor/lang/en.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Undo(Ctrl+Z)', + redo : 'Redo(Ctrl+Y)', + cut : 'Cut(Ctrl+X)', + copy : 'Copy(Ctrl+C)', + paste : 'Paste(Ctrl+V)', + plainpaste : 'Paste as plain text', + wordpaste : 'Paste from Word', + selectall : 'Select all', + justifyleft : 'Align left', + justifycenter : 'Align center', + justifyright : 'Align right', + justifyfull : 'Align full', + insertorderedlist : 'Ordered list', + insertunorderedlist : 'Unordered list', + indent : 'Increase indent', + outdent : 'Decrease indent', + subscript : 'Subscript', + superscript : 'Superscript', + formatblock : 'Paragraph format', + fontname : 'Font family', + fontsize : 'Font size', + forecolor : 'Text color', + hilitecolor : 'Highlight color', + bold : 'Bold(Ctrl+B)', + italic : 'Italic(Ctrl+I)', + underline : 'Underline(Ctrl+U)', + strikethrough : 'Strikethrough', + removeformat : 'Remove format', + image : 'Image', + multiimage : 'Multi image', + flash : 'Flash', + media : 'Embeded media', + table : 'Table', + tablecell : 'Cell', + hr : 'Insert horizontal line', + emoticons : 'Insert emoticon', + link : 'Link', + unlink : 'Unlink', + fullscreen : 'Toggle fullscreen mode', + about : 'About', + print : 'Print', + filemanager : 'File Manager', + code : 'Insert code', + map : 'Google Maps', + baidumap : 'Baidu Maps', + lineheight : 'Line height', + clearhtml : 'Clear HTML code', + pagebreak : 'Insert Page Break', + quickformat : 'Quick Format', + insertfile : 'Insert file', + template : 'Insert Template', + anchor : 'Anchor', + yes : 'OK', + no : 'Cancel', + close : 'Close', + editImage : 'Image properties', + deleteImage : 'Delete image', + editFlash : 'Flash properties', + deleteFlash : 'Delete flash', + editMedia : 'Media properties', + deleteMedia : 'Delete media', + editLink : 'Link properties', + deleteLink : 'Unlink', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Table properties', + tablecellprop : 'Cell properties', + tableinsert : 'Insert table', + tabledelete : 'Delete table', + tablecolinsertleft : 'Insert column left', + tablecolinsertright : 'Insert column right', + tablerowinsertabove : 'Insert row above', + tablerowinsertbelow : 'Insert row below', + tablerowmerge : 'Merge down', + tablecolmerge : 'Merge right', + tablerowsplit : 'Split row', + tablecolsplit : 'Split column', + tablecoldelete : 'Delete column', + tablerowdelete : 'Delete row', + noColor : 'Default', + pleaseSelectFile : 'Please select file.', + invalidImg : "Please type valid URL.\nAllowed file extension: jpg,gif,bmp,png", + invalidMedia : "Please type valid URL.\nAllowed file extension: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "The width must be number.", + invalidHeight : "The height must be number.", + invalidBorder : "The border must be number.", + invalidUrl : "Please type valid URL.", + invalidRows : 'Invalid rows.', + invalidCols : 'Invalid columns.', + invalidPadding : 'The padding must be number.', + invalidSpacing : 'The spacing must be number.', + invalidJson : 'Invalid JSON string.', + uploadSuccess : 'Upload success.', + cutError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+X) instead.', + copyError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+C) instead.', + pasteError : 'Currently not supported by your browser, use keyboard shortcut(Ctrl+V) instead.', + ajaxLoading : 'Loading ...', + uploadLoading : 'Uploading ...', + uploadError : 'Upload Error', + 'plainpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'wordpaste.comment' : 'Use keyboard shortcut(Ctrl+V) to paste the text into the window.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : 'Target', + 'link.newWindow' : 'New window', + 'link.selfWindow' : 'Same window', + 'flash.url' : 'URL', + 'flash.width' : 'Width', + 'flash.height' : 'Height', + 'flash.upload' : 'Upload', + 'flash.viewServer' : 'Browse', + 'media.url' : 'URL', + 'media.width' : 'Width', + 'media.height' : 'Height', + 'media.autostart' : 'Auto start', + 'media.upload' : 'Upload', + 'media.viewServer' : 'Browse', + 'image.remoteImage' : 'Insert URL', + 'image.localImage' : 'Upload', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'File', + 'image.size' : 'Size', + 'image.width' : 'Width', + 'image.height' : 'Height', + 'image.resetSize' : 'Reset dimensions', + 'image.align' : 'Align', + 'image.defaultAlign' : 'Default', + 'image.leftAlign' : 'Left', + 'image.rightAlign' : 'Right', + 'image.imgTitle' : 'Title', + 'image.upload' : 'Browse', + 'image.viewServer' : 'Browse', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : 'Blank', + 'filemanager.moveup' : 'Parent folder', + 'filemanager.viewType' : 'Display: ', + 'filemanager.viewImage' : 'Thumbnails', + 'filemanager.listImage' : 'List', + 'filemanager.orderType' : 'Sorting: ', + 'filemanager.fileName' : 'By name', + 'filemanager.fileSize' : 'By size', + 'filemanager.fileType' : 'By type', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Title', + 'insertfile.upload' : 'Upload', + 'insertfile.viewServer' : 'Browse', + 'table.cells' : 'Cells', + 'table.rows' : 'Rows', + 'table.cols' : 'Columns', + 'table.size' : 'Dimensions', + 'table.width' : 'Width', + 'table.height' : 'Height', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Align', + 'table.textAlign' : 'Horizontal', + 'table.verticalAlign' : 'Vertical', + 'table.alignDefault' : 'Default', + 'table.alignLeft' : 'Left', + 'table.alignCenter' : 'Center', + 'table.alignRight' : 'Right', + 'table.alignTop' : 'Top', + 'table.alignMiddle' : 'Middle', + 'table.alignBottom' : 'Bottom', + 'table.alignBaseline' : 'Baseline', + 'table.border' : 'Border', + 'table.borderWidth' : 'Width', + 'table.borderColor' : 'Color', + 'table.backgroundColor' : 'Background', + 'map.address' : 'Address: ', + 'map.search' : 'Search', + 'baidumap.address' : 'Address: ', + 'baidumap.search' : 'Search', + 'baidumap.insertDynamicMap' : 'Dynamic Map', + 'anchor.name' : 'Anchor name', + 'formatblock.formatBlock' : { + h1 : 'Heading 1', + h2 : 'Heading 2', + h3 : 'Heading 3', + h4 : 'Heading 4', + p : 'Normal' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : 'Line height 1'}, + {'1.5' : 'Line height 1.5'}, + {'2' : 'Line height 2'}, + {'2.5' : 'Line height 2.5'}, + {'3' : 'Line height 3'} + ], + 'template.selectTemplate' : 'Template', + 'template.replaceContent' : 'Replace current content', + 'template.fileList' : { + '1.html' : 'Image and Text', + '2.html' : 'Table', + '3.html' : 'List' + } +}, 'en'); + +//自动加载代码美化的js插件 +// KindEditor.loadScript(KindEditor.options.pluginsPath+"code/prettify.js"); +// KindEditor.each(KindEditor.options.items, function(i, name) { +// if (name == 'code') { +// KindEditor.options.items[i] = 'map'; +// } +// }); +KindEditor.options.langType = 'en'; diff --git a/public/assets/addons/nkeditor/lang/ja-JP.js b/public/assets/addons/nkeditor/lang/ja-JP.js new file mode 100644 index 0000000..7806d08 --- /dev/null +++ b/public/assets/addons/nkeditor/lang/ja-JP.js @@ -0,0 +1,234 @@ +/******************************************************************************* +* @author 您的名字 お名前 +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTMLコード', + preview : 'プレビュー', + undo : '戻る(Ctrl+Z)', + redo : '進む(Ctrl+Y)', + cut : 'カット(Ctrl+X)', + copy : 'コピー(Ctrl+C)', + paste : '貼り付け(Ctrl+V)', + plainpaste : 'フォーマットされていないテキストとして貼り付ける', + wordpaste : '「word」ドからペースト', + selectall : 'すべて選択(Ctrl+A)', + justifyleft : '左揃え', + justifycenter : '中央揃え', + justifyright : '右揃え', + justifyfull : '両端揃え', + insertorderedlist : '番号', + insertunorderedlist : '箇条書き', + indent : 'インデントを増やす', + outdent : 'インデントを減らす', + subscript : '下付き', + superscript : '上付き', + formatblock : '段落', + fontname : 'フォント', + fontsize : 'フォントサイズ', + forecolor : 'フォントカラー', + hilitecolor : 'テキストの背景', + bold : '太字(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下線(Ctrl+U)', + strikethrough : '取り消し線', + removeformat : 'フォーマットを削除', + image : '画像', + multiimage : '一括画像アップロード', + flash : 'Flash', + media : 'ビデオとオーディオ', + table : 'テーブル', + tablecell : 'セル', + hr : '水平線を挿入する', + emoticons : '絵文字を挿入する', + link : 'ハイパーリンク', + unlink : 'ハイパーリンクをキャンセル', + fullscreen : 'フルスクリーン表示', + about : 'について', + print : 'プリント(Ctrl+P)', + filemanager : 'ファイルスペース', + code : 'プログラムコードを挿入', + map : 'Googleマップ', + baidumap : 'Baiduマップ', + lineheight : '行間隔', + clearhtml : 'HTMLコードをクリア', + pagebreak : 'ページ区切りの挿入', + quickformat : 'ワンクリックレイアウト', + insertfile : 'ファイルの挿入', + template : 'テンプレートの挿入', + anchor : 'アンカー', + yes : 'はい', + no : 'いいえ', + close : '閉じる', + editImage : 'イメージプロパティ', + deleteImage : 'イメージを削除', + editFlash : 'Flashプロパティ', + deleteFlash : 'Flashを削除', + editMedia : 'ビデオとオーディオのプロパティ', + deleteMedia : 'ビデオとオーディオを削除', + editLink : 'ハイパーリンク属性', + deleteLink : 'ハイパーリンクを削除', + editAnchor : 'アンカー属性', + deleteAnchor : 'アンカーを削除', + tableprop : 'テーブル属性', + tablecellprop : 'セル属性', + tableinsert : 'テーブルを挿入', + tabledelete : 'テーブルを削除', + tablecolinsertleft : '左に列を挿入する', + tablecolinsertright : '右に列を挿入する', + tablerowinsertabove : '上に行を挿入する', + tablerowinsertbelow : '下に行を挿入する', + tablerowmerge : '下にセルをマージする', + tablecolmerge : '右にセルをマージする', + tablerowsplit : '行を分割', + tablecolsplit : '列を分割', + tablecoldelete : '列を削除', + tablerowdelete : '行を削除', + noColor : '色なし', + pleaseSelectFile : 'ファイルを選択してください。', + invalidImg : "有効なURLアドレスを入力してください。\ n jpg、gif、bmp、png形式のみが許可されています。", + invalidMedia : "有効なURLアドレスを入力してください。swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb形式のみが許可されています。", + invalidWidth : "幅は数字でなければなりません。", + invalidHeight : "高さは数字でなければなりません。", + invalidBorder : "ボーダーは数字でなければなりません。", + invalidUrl : "有効なURLアドレスを入力してください。", + invalidRows : '行数は必須項目で、0以上の数字を入力してください。', + invalidCols : '列数は必須項目で、0以上の数字を入力してください。', + invalidPadding : 'マージンは数字でなければなりません。', + invalidSpacing : 'スペースは数字でなければなりません。', + invalidJson : 'サーバーエラー。', + uploadSuccess : 'アップロード成功。', + cutError : 'ブラウザのセキュリティ設定によってカット操作を使用できないので、ショートカットキー(Ctrl + X)を使用してください。', + copyError : 'ブラウザのセキュリティ設定によってコピー操作をできないので、ショートカットキー(Ctrl + C)を使用してください。', + pasteError : 'ブラウザのセキュリティ設定によって貼り付け操作をできないので、ショートカットキー(Ctrl + V)を使用してください。', + ajaxLoading : '読み込み中、お待ちください...', + uploadLoading : 'アップロード、しばらくお待ちください...', + uploadError : 'アップロードエラー', + 'plainpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'wordpaste.comment' : 'ショートカットキー(Ctrl + V)でコンテンツを下のボックスに貼り付けてください。', + 'code.pleaseInput' : 'プログラムコードを入力してください。 ', + 'link.url' : 'URL', + 'link.linkType' : 'タイプを開く', + 'link.newWindow' : '新しいウィンドウ', + 'link.selfWindow' : '現在のウィンドウ', + 'flash.url' : 'URL', + 'flash.width' : '幅', + 'flash.height' : '高さ', + 'flash.upload' : 'アップロード', + 'flash.viewServer' : 'ファイルスペース', + 'media.url' : 'URL', + 'media.width' : '幅', + 'media.height' : '高さ', + 'media.autostart' : '自動再生', + 'media.upload' : 'アップロード', + 'media.viewServer' : 'ファイルスペース', + 'image.remoteImage' : 'ネットワークイメージ', + 'image.localImage' : 'ローカルアップロード', + 'image.remoteUrl' : 'イメージアドレス ', + 'image.localUrl' : 'アップロードファイル', + 'image.size' : 'イメージサイズ', + 'image.width' : '幅', + 'image.height' : '高さ', + 'image.resetSize' : 'リセットサイズ', + 'image.align' : '配置', + 'image.defaultAlign' : 'デフォルト', + 'image.leftAlign' : '左揃え', + 'image.rightAlign' : '右揃え', + 'image.imgTitle' : '画像の説明', + 'image.upload' : 'ブラウズ...', + 'image.viewServer' : 'イメージスペース', + 'multiimage.uploadDesc' : 'ユーザーが<%= uploadLimit%>画像を同時にアップロードできますが、画像の容量は<%= sizeLimit%>を超えることができません', + 'multiimage.startUpload' : 'アップロード', + 'multiimage.clearAll' : 'すべてクリア', + 'multiimage.insertAll' : 'すべて挿入', + 'multiimage.queueLimitExceeded' : 'ファイルの数が上限を超えています。', + 'multiimage.fileExceedsSizeLimit' : 'ファイルサイズが制限を超えています。', + 'multiimage.zeroByteFile' : '空のファイルをアップロードできません。 ', + 'multiimage.invalidFiletype' : 'ファイル形式は正しくありません。', + 'multiimage.unknownError' : 'エラー、アップロードできません。', + 'multiimage.pending' : 'アップロード待ち', + 'multiimage.uploadError' : 'アップロード失敗', + 'filemanager.emptyFolder' : '空のフォルダ', + 'filemanager.moveup' : '前のフォルダに移動', + 'filemanager.viewType' : '表示モード:', + 'filemanager.viewImage' : 'サムネイル', + 'filemanager.listImage' : '詳細', + 'filemanager.orderType' : '並べ替え:', + 'filemanager.fileName' : 'ネーム', + 'filemanager.fileSize' : 'サイズ', + 'filemanager.fileType' : 'タイプ', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'ファイルの説明', + 'insertfile.upload' : 'アップロード', + 'insertfile.viewServer' : 'ファイルスペース', + 'table.cells' : 'セル番号', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : 'サイズ', + 'table.width' : '幅', + 'table.height' : '高さ', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'テーブルスペース', + 'table.padding' : 'パッディング', + 'table.spacing' : 'スペース', + 'table.align' : '配置', + 'table.textAlign' : '水平配置', + 'table.verticalAlign' : '垂直配置', + 'table.alignDefault' : 'デフォルト', + 'table.alignLeft' : '左揃え', + 'table.alignCenter' : '中央揃え', + 'table.alignRight' : '右揃え', + 'table.alignTop' : 'トップ', + 'table.alignMiddle' : 'ミドル', + 'table.alignBottom' : 'ボトム', + 'table.alignBaseline' : 'ベースライン', + 'table.border' : 'ボーダー', + 'table.borderWidth' : 'ボーダー', + 'table.borderColor' : 'カラー', + 'table.backgroundColor' : '背景色', + 'map.address' : 'アドレス: ', + 'map.search' : '検索', + 'baidumap.address' : 'アドレス: ', + 'baidumap.search' : '検索', + 'baidumap.insertDynamicMap' : 'ダイナミックマップの挿入', + 'anchor.name' : 'アンカー名', + + 'formatblock.formatBlock' : { + h1 : '見出し1', + h2 : '見出し2', + h3 : '見出し3', + h4 : '見出し4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '明朝体', + 'NSimSun' : '新宋体', + 'FangSong_GB2312' : '仿宋_GB2312', + 'KaiTi_GB2312' : '楷書体_GB2312', + 'SimHei' : 'ゴチック体', + 'Microsoft YaHei' : 'Msyh', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '行間1倍'}, + {'1.5' : '行間1.5倍'}, + {'2' : '行間2倍'}, + {'2.5' : '行間2.5倍'}, + {'3' : '行間3倍'} + ], + 'template.selectTemplate' : 'オプションテンプレート', + 'template.replaceContent' : '現在のコンテンツを置き換える', + 'template.fileList' : { + '1.html' : 'イメージとテキスト', + '2.html' : '表', + '3.html' : '段落番号' + } +}, 'ja-JP'); + +KindEditor.options.langType = 'ja-JP'; \ No newline at end of file diff --git a/public/assets/addons/nkeditor/lang/ko.js b/public/assets/addons/nkeditor/lang/ko.js new file mode 100644 index 0000000..bf5eb22 --- /dev/null +++ b/public/assets/addons/nkeditor/lang/ko.js @@ -0,0 +1,246 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Composite <ukjinplant@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '소스', + preview : '미리보기', + undo : '작업취소(Ctrl+Z)', + redo : '작업재개(Ctrl+Y)', + cut : '잘라내기(Ctrl+X)', + copy : '복사(Ctrl+C)', + paste : '붙여넣기(Ctrl+V)', + plainpaste : '일반 텍스트로 붙여넣기', + wordpaste : '워드 문서로 붙여넣기', + selectall : '전체 선택', + justifyleft : '왼쪽 정렬', + justifycenter : '가운데 정렬', + justifyright : '오른쪽 정렬', + justifyfull : '양쪽 정렬', + insertorderedlist : '순서 목록', + insertunorderedlist : '비순서 목록', + indent : '들여쓰기', + outdent : '내어쓰기', + subscript : '아랫첨자', + superscript : '윗첨자', + formatblock : '문단 형식', + fontname : '글꼴', + fontsize : '글자 크기', + forecolor : '글자색', + hilitecolor : '강조색', + bold : '굵게(Ctrl+B)', + italic : '이텔릭(Ctrl+I)', + underline : '빝줄(Ctrl+U)', + strikethrough : '취소선', + removeformat : '형식 제거', + image : '이미지 추가', + multiimage : '여러 이미지 추가', + flash : '플래시 추가', + media : '미디어 추가', + table : '표', + tablecell : '열', + hr : '구분선 추가', + emoticons : '이모티콘 추가', + link : '링크', + unlink : '링크 제거', + fullscreen : '전체 화면 모드', + about : '이 에디터는...', + print : '인쇄', + filemanager : '파일 관리자', + code : '코드 추가', + map : '구글 맵 추가', + baidumap : '바이두 맵 추가', + lineheight : '행 간격', + clearhtml : 'HTML 코드 정리', + pagebreak : '페이지 구분 추가', + quickformat : '빠른 형식', + insertfile : '파일 추가', + template : '템플릿 추가', + anchor : '책갈피', + yes : '확인', + no : '취소', + close : '닫기', + editImage : '이미지 속성', + deleteImage : '이미지 삭제', + editFlash : '플래시 속성', + deleteFlash : '플래시 삭제', + editMedia : '미디어 속성', + deleteMedia : '미디어 삭제', + editLink : '링크 속성', + deleteLink : '링크 삭제', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : '표 속성', + tablecellprop : '열 속성', + tableinsert : '표 추가', + tabledelete : '표 삭제', + tablecolinsertleft : '왼쪽으로 열 추가', + tablecolinsertright : '오른쪽으로 열 추가', + tablerowinsertabove : '위쪽으로 열 추가', + tablerowinsertbelow : '아래쪽으로 열 추가', + tablerowmerge : '아래로 병합', + tablecolmerge : '오른쪽으로 병합', + tablerowsplit : '행 나누기', + tablecolsplit : '열 나누기', + tablecoldelete : '열 삭제', + tablerowdelete : '행 삭제', + noColor : '기본색', + pleaseSelectFile : '파일 선택', + invalidImg : "올바른 주소를 입력하세요.\njpg,gif,bmp,png 형식이 가능합니다.", + invalidMedia : "올바른 주소를 입력하세요.\nswf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb 형식이 가능합니다.", + invalidWidth : "넓이 값은 숫자여야 합니다.", + invalidHeight : "높이 값은 숫자여야 합니다.", + invalidBorder : "굵기 값은 숫자여야 합니다.", + invalidUrl : "올바른 주소를 입력하세요.", + invalidRows : '올바른 행이 아닙니다.', + invalidCols : '올바른 열이 아닙니다.', + invalidPadding : '안쪽 여백 값은 숫자여야 합니다.', + invalidSpacing : '간격 길이 값은 숫자여야 합니다.', + invalidJson : '올바른 JSON 형식이 아닙니다.', + uploadSuccess : '업로드가 완료되었습니다.', + cutError : '브라우저가 잘라내기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + copyError : '브라우저가 복사 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + pasteError : '브라우저가 붙여넣기 기능을 지원하지 않습니다, 단축키로 대신 사용하세요. (Ctrl+X)', + ajaxLoading : '불러오는 중 ...', + uploadLoading : '업로드 중 ...', + uploadError : '업로드 오류', + 'plainpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 텍스트를 붙여넣으세요.', + 'wordpaste.comment' : '단축키(Ctrl+V)를 통하여 여기에 워드 텍스트를 붙여넣으세요.', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : '주소', + 'link.linkType' : '창', + 'link.newWindow' : '새 창', + 'link.selfWindow' : '현재 창', + 'flash.url' : '주소', + 'flash.width' : '넓이', + 'flash.height' : '높이', + 'flash.upload' : '업로드', + 'flash.viewServer' : '찾아보기', + 'media.url' : '주소', + 'media.width' : '넓이', + 'media.height' : '높이', + 'media.autostart' : '자동 시작', + 'media.upload' : '업로드', + 'media.viewServer' : '찾아보기', + 'image.remoteImage' : '외부 이미지', + 'image.localImage' : '내부 이미지', + 'image.remoteUrl' : '주소', + 'image.localUrl' : '파일', + 'image.size' : '크기', + 'image.width' : '넓이', + 'image.height' : '높이', + 'image.resetSize' : '기본 크기로', + 'image.align' : '정렬', + 'image.defaultAlign' : '기본', + 'image.leftAlign' : '왼쪽', + 'image.rightAlign' : '오른쪽', + 'image.imgTitle' : '제목', + 'image.upload' : '찾아보기', + 'image.viewServer' : '찾아보기', + 'multiimage.uploadDesc' : '최대 이미지 개수: <%=uploadLimit%>개, 개당 이미지 크기: <%=sizeLimit%>', + 'multiimage.startUpload' : '업로드 시작', + 'multiimage.clearAll' : '모두 삭제', + 'multiimage.insertAll' : '모두 삽입', + 'multiimage.queueLimitExceeded' : '업로드 개수가 초과되었습니다.', + 'multiimage.fileExceedsSizeLimit' : '업로드 크기가 초과되었습니다.', + 'multiimage.zeroByteFile' : '파일 크기가 없습니다.', + 'multiimage.invalidFiletype' : '올바른 이미지가 아닙니다.', + 'multiimage.unknownError' : '알 수 없는 업로드 오류가 발생하였습니다.', + 'multiimage.pending' : '처리 중 ...', + 'multiimage.uploadError' : '업로드 오류', + 'filemanager.emptyFolder' : '빈 폴더', + 'filemanager.moveup' : '위로', + 'filemanager.viewType' : '보기 방식: ', + 'filemanager.viewImage' : '미리 보기', + 'filemanager.listImage' : '목록', + 'filemanager.orderType' : '정렬 방식: ', + 'filemanager.fileName' : '이름별', + 'filemanager.fileSize' : '크기별', + 'filemanager.fileType' : '종류별', + 'insertfile.url' : '주소', + 'insertfile.title' : '제목', + 'insertfile.upload' : '업로드', + 'insertfile.viewServer' : '찾아보기', + 'table.cells' : '열', + 'table.rows' : '행', + 'table.cols' : '열', + 'table.size' : '표 크기', + 'table.width' : '넓이', + 'table.height' : '높이', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '간격', + 'table.padding' : '안쪽여백', + 'table.spacing' : '간격', + 'table.align' : '정렬', + 'table.textAlign' : '수직', + 'table.verticalAlign' : '수평', + 'table.alignDefault' : '기본', + 'table.alignLeft' : '왼쪽', + 'table.alignCenter' : '가운데', + 'table.alignRight' : '오른쪽', + 'table.alignTop' : '위쪽', + 'table.alignMiddle' : '중간', + 'table.alignBottom' : '아래쪽', + 'table.alignBaseline' : '글자기준', + 'table.border' : '테두리', + 'table.borderWidth' : '크기', + 'table.borderColor' : '색상', + 'table.backgroundColor' : '배경', + 'map.address' : '주소: ', + 'map.search' : '검색', + 'baidumap.address' : '주소: ', + 'baidumap.search' : '검색', + 'baidumap.insertDynamicMap' : '동적 지도', + 'anchor.name' : '책갈피명', + 'formatblock.formatBlock' : { + h1 : '제목 1', + h2 : '제목 2', + h3 : '제목 3', + h4 : '제목 4', + p : '본문' + }, + 'fontname.fontName' : { + 'Gulim' : '굴림', + 'Dotum' : '돋움', + 'Batang' : '바탕', + 'Gungsuh' : '궁서', + 'Malgun Gothic' : '맑은 고딕', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '행간 1'}, + {'1.5' : '행간 1.5'}, + {'2' : '행간 2'}, + {'2.5' : '행간 2.5'}, + {'3' : '행간 3'} + ], + 'template.selectTemplate' : '템플릿', + 'template.replaceContent' : '내용 바꾸기', + 'template.fileList' : { + '1.html' : '이미지와 텍스트', + '2.html' : '표', + '3.html' : '목록' + } +}, 'ko'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ko'; diff --git a/public/assets/addons/nkeditor/lang/ru.js b/public/assets/addons/nkeditor/lang/ru.js new file mode 100644 index 0000000..dda10bf --- /dev/null +++ b/public/assets/addons/nkeditor/lang/ru.js @@ -0,0 +1,242 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +* Translated to Russian by Valery Votintsev (http://codersclub.org/) +*******************************************************************************/ + +KindEditor.lang({ + source : 'Source', + preview : 'Preview', + undo : 'Отмена(Ctrl+Z)', + redo : 'Повтор(Ctrl+Y)', + cut : 'Вырезать(Ctrl+X)', + copy : 'Копировать(Ctrl+C)', + paste : 'Вставить(Ctrl+V)', + plainpaste : 'Вставить как простой текст', + wordpaste : 'Вставить из Word', + selectall : 'Выбрать все', + justifyleft : 'Выравнивание влево', + justifycenter : 'Выравнивание по центру', + justifyright : 'Выравнивание вправо', + justifyfull : 'Выравнивание по обеим сторонам', + insertorderedlist : 'Нумерованый список', + insertunorderedlist : 'Ненумерованый список', + indent : 'Добавить отступ', + outdent : 'Убрать отступ', + subscript : 'Надстрочный', + superscript : 'Подстрочный', + formatblock : 'Формат параграфа', + fontname : 'Шрифт', + fontsize : 'Размер', + forecolor : 'Цвет текста', + hilitecolor : 'Цвет фона', + bold : 'Жирный(Ctrl+B)', + italic : 'Наклонный(Ctrl+I)', + underline : 'Подчёркнутый(Ctrl+U)', + strikethrough : 'Перечёркнутый', + removeformat : 'Удалить формат', + image : 'Изображение', + multiimage : 'Мульти-загрузка', + flash : 'Flash', + media : 'Встроенные данные', + table : 'Таблица', + tablecell : 'Ячейка', + hr : 'Горизонтальный разделитель', + emoticons : 'Смайл', + link : 'Ссылка', + unlink : 'Убрать ссылку', + fullscreen : 'На весь экран', + about : 'О программе', + print : 'Печать', + filemanager : 'Файлы', + code : 'Код', + map : 'Карта Google', + baidumap : 'Карта Baidu', + lineheight : 'Межстрочный интервал', + clearhtml : 'Очистить HTML код', + pagebreak : 'Разрыв страницы', + quickformat : 'Быстрый формат', + insertfile : 'Вставить файл', + template : 'Вставить шаблон', + anchor : 'Якорь', + yes : 'OK', + no : 'Отмена', + close : 'Закрыть', + editImage : 'Свойства изображения', + deleteImage : 'Удалить изображение', + editFlash : 'Свойства Flash', + deleteFlash : 'Удалить Flash', + editMedia : 'Свойства Media', + deleteMedia : 'Удалить Media', + editLink : 'Свойства ссылки', + deleteLink : 'Удалить ссылку', + editAnchor : 'Anchor properties', + deleteAnchor : 'Delete Anchor', + tableprop : 'Свойства таблицы', + tablecellprop : 'Свойства ячейки', + tableinsert : 'Вставить таблицу', + tabledelete : 'Удалить таблицу', + tablecolinsertleft : 'Добавить столбец слева', + tablecolinsertright : 'Добавить столбец справа', + tablerowinsertabove : 'Добавить строку выше', + tablerowinsertbelow : 'Добавить строку ниже', + tablerowmerge : 'Объединить вниз', + tablecolmerge : 'Объединить вправо', + tablerowsplit : 'Разделить строку', + tablecolsplit : 'Разделить столбец', + tablecoldelete : 'Удалить столбец', + tablerowdelete : 'Удалить строку', + noColor : 'По умолчанию', + pleaseSelectFile : 'Выберите файл.', + invalidImg : "Укажите корректный URL изображения.\nРазрешённые форматы: jpg,gif,bmp,png", + invalidMedia : "Укажите корректный тип медиа-объекта.\nРазрешённые типы: swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb", + invalidWidth : "Ширина должна быть числом.", + invalidHeight : "Высота должна быть числом.", + invalidBorder : "Ширина рамки должна быть числом.", + invalidUrl : "Укажите корректный URL.", + invalidRows : 'Неверные строки.', + invalidCols : 'Неверные столбцы.', + invalidPadding : 'padding должен быть числом.', + invalidSpacing : 'spacing должен быть числом.', + invalidJson : 'Неверная JSON строка.', + uploadSuccess : 'Загрузка завершена.', + cutError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+X).', + copyError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+C).', + pasteError : 'Данная опция не поддерживается вашим браузером, воспользуйтесь комбинацией клавиш (Ctrl+V).', + ajaxLoading : 'Загрузка ...', + uploadLoading : 'Загрузка ...', + uploadError : 'Сбой загрузки', + 'plainpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'wordpaste.comment' : 'Для вставки скопированного текста воспользуйтесь комбинацией клавиш (Ctrl+V).', + 'code.pleaseInput' : 'Введите код.', + 'link.url' : 'URL', + 'link.linkType' : 'Открывать ссылку', + 'link.newWindow' : 'в новом окне', + 'link.selfWindow' : 'в том же окне', + 'flash.url' : 'URL', + 'flash.width' : 'Ширина', + 'flash.height' : 'Высота', + 'flash.upload' : 'Загрузить', + 'flash.viewServer' : 'Выбрать', + 'media.url' : 'URL', + 'media.width' : 'Ширина', + 'media.height' : 'Высота', + 'media.autostart' : 'Автостарт', + 'media.upload' : 'Загрузить', + 'media.viewServer' : 'Выбрать', + 'image.remoteImage' : 'Вставить URL изображения', + 'image.localImage' : 'Загрузить', + 'image.remoteUrl' : 'URL', + 'image.localUrl' : 'Файл', + 'image.size' : 'Размер', + 'image.width' : 'Ширина', + 'image.height' : 'Высота', + 'image.resetSize' : 'Сбросить размеры', + 'image.align' : 'Выравнивание', + 'image.defaultAlign' : 'По умолчанию', + 'image.leftAlign' : 'Влево', + 'image.rightAlign' : 'Вправо', + 'image.imgTitle' : 'Название', + 'image.upload' : 'Загрузить', + 'image.viewServer' : 'Выбрать', + 'multiimage.uploadDesc' : 'Максимальное кол-во изображений: <%=uploadLimit%>, Максимальный размер одного изображения: <%=sizeLimit%>', + 'multiimage.startUpload' : 'Начать загрузку', + 'multiimage.clearAll' : 'Очистить все', + 'multiimage.insertAll' : 'Вставить все', + 'multiimage.queueLimitExceeded' : 'Превышен лимит очереди.', + 'multiimage.fileExceedsSizeLimit' : 'Превышен максимальный размер файла.', + 'multiimage.zeroByteFile' : 'Файл нулевой длины.', + 'multiimage.invalidFiletype' : 'Недопустимый тип файла.', + 'multiimage.unknownError' : 'Непредвиденная ошибка загрузки.', + 'multiimage.pending' : 'Ожидает ...', + 'multiimage.uploadError' : 'Ошибка загрузки', + 'filemanager.emptyFolder' : 'Папка пуста', + 'filemanager.moveup' : 'Наверх', + 'filemanager.viewType' : 'Тип показа: ', + 'filemanager.viewImage' : 'Превьюшки', + 'filemanager.listImage' : 'Список', + 'filemanager.orderType' : 'Сортировка: ', + 'filemanager.fileName' : 'По имени', + 'filemanager.fileSize' : 'По размеру', + 'filemanager.fileType' : 'По типу', + 'insertfile.url' : 'URL', + 'insertfile.title' : 'Название', + 'insertfile.upload' : 'Загрузить', + 'insertfile.viewServer' : 'Выбрать', + 'table.cells' : 'Ячейки', + 'table.rows' : 'Строки', + 'table.cols' : 'Столбцы', + 'table.size' : 'Размеры', + 'table.width' : 'Ширина', + 'table.height' : 'Высота', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : 'Space', + 'table.padding' : 'Padding', + 'table.spacing' : 'Spacing', + 'table.align' : 'Выравнивание', + 'table.textAlign' : 'По горизонтали', + 'table.verticalAlign' : 'По вертикали', + 'table.alignDefault' : 'По умолчанию', + 'table.alignLeft' : 'Влево', + 'table.alignCenter' : 'По центру', + 'table.alignRight' : 'Вправо', + 'table.alignTop' : 'Вверх', + 'table.alignMiddle' : 'Посередине', + 'table.alignBottom' : 'Вниз', + 'table.alignBaseline' : 'По базовой линии', + 'table.border' : 'Рамка', + 'table.borderWidth' : 'Ширина', + 'table.borderColor' : 'Цвет', + 'table.backgroundColor' : 'Цвет фона', + 'map.address' : 'Адрес: ', + 'map.search' : 'Поиск', + 'baidumap.address' : 'Адрес: ', + 'baidumap.search' : 'Поиск', + 'baidumap.insertDynamicMap' : 'Динамическая карта', + 'anchor.name' : 'Имя якоря', + 'formatblock.formatBlock' : { + h1 : 'Заголовок 1', + h2 : 'Заголовок 2', + h3 : 'Заголовок 3', + h4 : 'Заголовок 4', + p : 'Обычный текст' + }, + 'fontname.fontName' : { + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Comic Sans MS' : 'Comic Sans MS', + 'Courier New' : 'Courier New', + 'Garamond' : 'Garamond', + 'Georgia' : 'Georgia', + 'Tahoma' : 'Tahoma', + 'Times New Roman' : 'Times New Roman', + 'Trebuchet MS' : 'Trebuchet MS', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '1'}, + {'1.5' : '1.5'}, + {'2' : '2'}, + {'2.5' : '2.5'}, + {'3' : '3'} + ], + 'template.selectTemplate' : 'Шаблон', + 'template.replaceContent' : 'Заменить текущий шаблон', + 'template.fileList' : { + '1.html' : 'Текст и изображения', + '2.html' : 'Таблица', + '3.html' : 'Список' + } +}, 'en'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'ru'; diff --git a/public/assets/addons/nkeditor/lang/zh-CN.js b/public/assets/addons/nkeditor/lang/zh-CN.js new file mode 100644 index 0000000..405e2f4 --- /dev/null +++ b/public/assets/addons/nkeditor/lang/zh-CN.js @@ -0,0 +1,267 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : 'HTML代码', + preview : '预览', + undo : '后退(Ctrl+Z)', + redo : '前进(Ctrl+Y)', + cut : '剪切(Ctrl+X)', + copy : '复制(Ctrl+C)', + paste : '粘贴(Ctrl+V)', + plainpaste : '粘贴为无格式文本', + wordpaste : '从Word粘贴', + selectall : '全选(Ctrl+A)', + justifyleft : '左对齐', + justifycenter : '居中', + justifyright : '右对齐', + justifyfull : '两端对齐', + insertorderedlist : '编号', + insertunorderedlist : '项目符号', + indent : '增加缩进', + outdent : '减少缩进', + subscript : '下标', + superscript : '上标', + formatblock : '段落', + fontname : '字体', + fontsize : '文字大小', + forecolor : '文字颜色', + hilitecolor : '文字背景', + bold : '粗体(Ctrl+B)', + italic : '斜体(Ctrl+I)', + underline : '下划线(Ctrl+U)', + strikethrough : '删除线', + removeformat : '删除格式', + image : '图片', + multiimage : '批量图片上传', + graft : '涂鸦', + flash : 'Flash', + media : '视音频', + table : '表格', + tablecell : '单元格', + hr : '插入横线', + emoticons : '插入表情', + link : '超级链接', + unlink : '取消超级链接', + fullscreen : '全屏显示', + about : '关于', + print : '打印(Ctrl+P)', + filemanager : '文件空间', + code : '插入程序代码', + quote : '插入引用', + map : 'Google地图', + baidumap : '百度地图', + lineheight : '行距', + clearhtml : '清理HTML代码', + pagebreak : '插入分页符', + quickformat : '一键排版', + insertfile : '插入文件', + template : '插入模板', + anchor : '锚点', + yes : '确定', + no : '取消', + close : '关闭', + editImage : '图片属性', + deleteImage : '删除图片', + editFlash : 'Flash属性', + deleteFlash : '删除Flash', + editMedia : '视音频属性', + deleteMedia : '删除视音频', + editLink : '超级链接属性', + deleteLink : '取消超级链接', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格属性', + tablecellprop : '单元格属性', + tableinsert : '插入表格', + tabledelete : '删除表格', + tablecolinsertleft : '左侧插入列', + tablecolinsertright : '右侧插入列', + tablerowinsertabove : '上方插入行', + tablerowinsertbelow : '下方插入行', + tablerowmerge : '向下合并单元格', + tablecolmerge : '向右合并单元格', + tablerowsplit : '拆分行', + tablecolsplit : '拆分列', + tablecoldelete : '删除列', + tablerowdelete : '删除行', + noColor : '无颜色', + pleaseSelectFile : '请选择文件。', + invalidImg : "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。", + invalidMedia : "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "宽度必须为数字。", + invalidHeight : "高度必须为数字。", + invalidBorder : "边框必须为数字。", + invalidUrl : "请输入有效的URL地址。", + invalidRows : '行数为必选项,只允许输入大于0的数字。', + invalidCols : '列数为必选项,只允许输入大于0的数字。', + invalidPadding : '边距必须为数字。', + invalidSpacing : '间距必须为数字。', + invalidJson : '服务器发生故障。', + uploadSuccess : '上传成功。', + cutError : '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。', + copyError : '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。', + pasteError : '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。', + ajaxLoading : '加载中,请稍候 ...', + uploadLoading : '上传中,请稍候 ...', + uploadError : '上传错误', + + 'plainpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'wordpaste.comment' : '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'code.pleaseInput' : '请输入程序代码。', + 'link.url' : 'URL', + 'link.linkType' : '打开类型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '当前窗口', + 'flash.url' : 'URL', + 'flash.width' : '宽度', + 'flash.height' : '高度', + 'flash.upload' : '上传', + 'flash.viewServer' : '文件空间', + 'media.url' : 'URL', + 'media.width' : '宽度', + 'media.height' : '高度', + 'media.autostart' : '自动播放', + 'media.upload' : '上传', + 'media.viewServer' : '文件空间', + 'image.remoteImage' : '网络图片', + 'image.localImage' : '本地上传', + 'image.remoteUrl' : '图片地址', + 'image.localUrl' : '上传文件', + 'image.size' : '图片大小', + 'image.width' : '宽', + 'image.height' : '高', + 'image.resetSize' : '重置大小', + 'image.align' : '对齐方式', + 'image.defaultAlign' : '默认方式', + 'image.leftAlign' : '左对齐', + 'image.rightAlign' : '右对齐', + 'image.imgTitle' : '图片说明', + 'image.upload' : '浏览...', + 'image.viewServer' : '图片空间', + + 'multiimage.title' : '多图上传', + 'multiimage.uploadDesc' : '共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.', + 'multiimage.startUpload' : '开始上传', + 'multiimage.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'multiimage.noSearchUrl' : '无法进行图片搜索,请先配置 imageSearchJson.', + 'multiimage.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'multiimage.closeText' : '关闭对话框', + 'multiimage.confirmBtnText' : '确定', + 'multiimage.cancelBtnText' : '取消', + 'multiimage.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'multiimage.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'multiimage.localUpload' : '本地上传', + 'multiimage.fileServer' : '文件服务器', + 'multiimage.imgSearch' : '图片搜索', + 'multiimage.selectFile' : '点击选择图片', + 'multiimage.continueAdd' : '继续添加', + 'multiimage.searchBtn' : '搜索一下', + 'multiimage.searchPlaceholder' : '请输入搜索关键词', + 'multiimage.searchClear' : '清空搜索', + 'multiimage.noFileAdded' : '请至少添加一个文件!', + 'multiimage.uploading' : '正在上传', + 'multiimage.fileNotUpload' : '您还有文件没有上传!', + 'multiimage.uploadLimit' : '您本次最多上传 <%=uploadLimit%> 个文件.', + 'multiimage.sizeLimit' : '文件大小不能超过 <%=sizeLimit%> KB.', + 'multiimage.invalidExt' : '非法的文件后缀 <%=invalidExt%>.', + 'multiimage.remove' : '删除', + 'multiimage.rotateRight' : '向右旋转', + 'multiimage.rotateLeft' : '向左旋转', + 'multiimage.uploadFail' : '发生异常,上传失败!', + 'multiimage.noFileSelected' : '请至少选择一个文件或一张图片.', + + 'filemanager.noDataText' : '(⊙o⊙)亲,没有多数据了。', + 'filemanager.title' : '文件服务器', + 'filemanager.noListUrl' : '无法获取图片,请先配置 fileManagerJson.', + 'filemanager.closeText' : '关闭对话框', + 'filemanager.confirmBtnText' : '确定', + 'filemanager.cancelBtnText' : '取消', + 'filemanager.loadMoreData' : '往下拉动滚动条可以加载更多数据.', + 'filemanager.depJQueryError' : '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'filemanager.fileType' : '类型', + + 'graft.btnText' : '保存并插入涂鸦', + 'graft.uploadSuccess' : '涂鸦上传成功', + 'graft.uploadFaild' : '涂鸦上传失败', + 'graft.empty' : '您没有在画布上绘制任何图像', + + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件说明', + 'insertfile.upload' : '上传', + 'insertfile.viewServer' : '文件空间', + 'table.cells' : '单元格数', + 'table.rows' : '行数', + 'table.cols' : '列数', + 'table.size' : '大小', + 'table.width' : '宽度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '边距间距', + 'table.padding' : '边距', + 'table.spacing' : '间距', + 'table.align' : '对齐方式', + 'table.textAlign' : '水平对齐', + 'table.verticalAlign' : '垂直对齐', + 'table.alignDefault' : '默认', + 'table.alignLeft' : '左对齐', + 'table.alignCenter' : '居中', + 'table.alignRight' : '右对齐', + 'table.alignTop' : '顶部', + 'table.alignMiddle' : '中部', + 'table.alignBottom' : '底部', + 'table.alignBaseline' : '基线', + 'table.border' : '边框', + 'table.borderWidth' : '宽度', + 'table.borderColor' : '颜色', + 'table.backgroundColor' : '背景颜色', + 'map.address' : '地址: ', + 'map.search' : '搜索', + 'baidumap.address' : '地址: ', + 'baidumap.search' : '搜索', + 'baidumap.insertDynamicMap' : '插入动态地图', + 'anchor.name' : '锚点名称', + 'formatblock.formatBlock' : { + h1 : '标题 1', + h2 : '标题 2', + h3 : '标题 3', + h4 : '标题 4', + p : '正 文' + }, + 'fontname.fontName' : { + 'SimSun' : '宋体', + 'NSimSun' : '新宋体', + 'FangSong' : '仿宋', + 'KaiTi' : '楷体', + 'SimHei' : '黑体', + 'Microsoft YaHei' : '微软雅黑', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可选模板', + 'template.replaceContent' : '替换当前内容', + 'template.fileList' : { + '1.html' : '图片和文字', + '2.html' : '表格', + '3.html' : '项目编号' + } +}, 'zh-CN'); +KindEditor.options.langType = 'zh-CN'; diff --git a/public/assets/addons/nkeditor/lang/zh-TW.js b/public/assets/addons/nkeditor/lang/zh-TW.js new file mode 100644 index 0000000..4946898 --- /dev/null +++ b/public/assets/addons/nkeditor/lang/zh-TW.js @@ -0,0 +1,243 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.lang({ + source : '原始碼', + preview : '預覽', + undo : '復原(Ctrl+Z)', + redo : '重複(Ctrl+Y)', + cut : '剪下(Ctrl+X)', + copy : '複製(Ctrl+C)', + paste : '貼上(Ctrl+V)', + plainpaste : '貼為純文字格式', + wordpaste : '自Word貼上', + selectall : '全選(Ctrl+A)', + justifyleft : '靠左對齊', + justifycenter : '置中', + justifyright : '靠右對齊', + justifyfull : '左右對齊', + insertorderedlist : '編號清單', + insertunorderedlist : '項目清單', + indent : '增加縮排', + outdent : '減少縮排', + subscript : '下標', + superscript : '上標', + formatblock : '標題', + fontname : '字體', + fontsize : '文字大小', + forecolor : '文字顏色', + hilitecolor : '背景顏色', + bold : '粗體(Ctrl+B)', + italic : '斜體(Ctrl+I)', + underline : '底線(Ctrl+U)', + strikethrough : '刪除線', + removeformat : '清除格式', + image : '影像', + multiimage : '批量影像上傳', + flash : 'Flash', + media : '多媒體', + table : '表格', + tablecell : '儲存格', + hr : '插入水平線', + emoticons : '插入表情', + link : '超連結', + unlink : '移除超連結', + fullscreen : '最大化', + about : '關於', + print : '列印(Ctrl+P)', + filemanager : '瀏覽伺服器', + code : '插入程式代碼', + map : 'Google地圖', + baidumap : 'Baidu地圖', + lineheight : '行距', + clearhtml : '清理HTML代碼', + pagebreak : '插入分頁符號', + quickformat : '快速排版', + insertfile : '插入文件', + template : '插入樣板', + anchor : '錨點', + yes : '確定', + no : '取消', + close : '關閉', + editImage : '影像屬性', + deleteImage : '刪除影像', + editFlash : 'Flash屬性', + deleteFlash : '删除Flash', + editMedia : '多媒體屬性', + deleteMedia : '删除多媒體', + editLink : '超連結屬性', + deleteLink : '移除超連結', + editAnchor : '锚点属性', + deleteAnchor : '删除锚点', + tableprop : '表格屬性', + tablecellprop : '儲存格屬性', + tableinsert : '插入表格', + tabledelete : '刪除表格', + tablecolinsertleft : '向左插入列', + tablecolinsertright : '向右插入列', + tablerowinsertabove : '向上插入欄', + tablerowinsertbelow : '下方插入欄', + tablerowmerge : '向下合併單元格', + tablecolmerge : '向右合併單元格', + tablerowsplit : '分割欄', + tablecolsplit : '分割列', + tablecoldelete : '删除列', + tablerowdelete : '删除欄', + noColor : '自動', + pleaseSelectFile : '請選擇文件。', + invalidImg : "請輸入有效的URL。\n只允許jpg,gif,bmp,png格式。", + invalidMedia : "請輸入有效的URL。\n只允許swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth : "寬度必須是數字。", + invalidHeight : "高度必須是數字。", + invalidBorder : "邊框必須是數字。", + invalidUrl : "請輸入有效的URL。", + invalidRows : '欄數是必須輸入項目,只允許輸入大於0的數字。', + invalidCols : '列數是必須輸入項目,只允許輸入大於0的數字。', + invalidPadding : '內距必須是數字。', + invalidSpacing : '間距必須是數字。', + invalidJson : '伺服器發生故障。', + uploadSuccess : '上傳成功。', + cutError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+X)完成。', + copyError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+C)完成。', + pasteError : '您的瀏覽器安全設置不允許使用剪下操作,請使用快捷鍵(Ctrl+V)完成。', + ajaxLoading : '加載中,請稍候 ...', + uploadLoading : '上傳中,請稍候 ...', + uploadError : '上傳錯誤', + 'plainpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'wordpaste.comment' : '請使用快捷鍵(Ctrl+V)把內容貼到下方區域裡。', + 'code.pleaseInput' : 'Please input code.', + 'link.url' : 'URL', + 'link.linkType' : '打開類型', + 'link.newWindow' : '新窗口', + 'link.selfWindow' : '本頁窗口', + 'flash.url' : 'URL', + 'flash.width' : '寬度', + 'flash.height' : '高度', + 'flash.upload' : '上傳', + 'flash.viewServer' : '瀏覽', + 'media.url' : 'URL', + 'media.width' : '寬度', + 'media.height' : '高度', + 'media.autostart' : '自動播放', + 'media.upload' : '上傳', + 'media.viewServer' : '瀏覽', + 'image.remoteImage' : '網絡影像', + 'image.localImage' : '上傳影像', + 'image.remoteUrl' : '影像URL', + 'image.localUrl' : '影像URL', + 'image.size' : '影像大小', + 'image.width' : '寬度', + 'image.height' : '高度', + 'image.resetSize' : '原始大小', + 'image.align' : '對齊方式', + 'image.defaultAlign' : '未設定', + 'image.leftAlign' : '向左對齊', + 'image.rightAlign' : '向右對齊', + 'image.imgTitle' : '影像說明', + 'image.upload' : '瀏覽...', + 'image.viewServer' : '瀏覽...', + 'multiimage.uploadDesc' : 'Allows users to upload <%=uploadLimit%> images, single image size not exceeding <%=sizeLimit%>', + 'multiimage.startUpload' : 'Start upload', + 'multiimage.clearAll' : 'Clear all', + 'multiimage.insertAll' : 'Insert all', + 'multiimage.queueLimitExceeded' : 'Queue limit exceeded.', + 'multiimage.fileExceedsSizeLimit' : 'File exceeds size limit.', + 'multiimage.zeroByteFile' : 'Zero byte file.', + 'multiimage.invalidFiletype' : 'Invalid file type.', + 'multiimage.unknownError' : 'Unknown upload error.', + 'multiimage.pending' : 'Pending ...', + 'multiimage.uploadError' : 'Upload error', + 'filemanager.emptyFolder' : '空文件夾', + 'filemanager.moveup' : '至上一級文件夾', + 'filemanager.viewType' : '顯示方式:', + 'filemanager.viewImage' : '縮略圖', + 'filemanager.listImage' : '詳細信息', + 'filemanager.orderType' : '排序方式:', + 'filemanager.fileName' : '名稱', + 'filemanager.fileSize' : '大小', + 'filemanager.fileType' : '類型', + 'insertfile.url' : 'URL', + 'insertfile.title' : '文件說明', + 'insertfile.upload' : '上傳', + 'insertfile.viewServer' : '瀏覽', + 'table.cells' : '儲存格數', + 'table.rows' : '欄數', + 'table.cols' : '列數', + 'table.size' : '表格大小', + 'table.width' : '寬度', + 'table.height' : '高度', + 'table.percent' : '%', + 'table.px' : 'px', + 'table.space' : '內距間距', + 'table.padding' : '內距', + 'table.spacing' : '間距', + 'table.align' : '對齊方式', + 'table.textAlign' : '水平對齊', + 'table.verticalAlign' : '垂直對齊', + 'table.alignDefault' : '未設定', + 'table.alignLeft' : '向左對齊', + 'table.alignCenter' : '置中', + 'table.alignRight' : '向右對齊', + 'table.alignTop' : '靠上', + 'table.alignMiddle' : '置中', + 'table.alignBottom' : '靠下', + 'table.alignBaseline' : '基線', + 'table.border' : '表格邊框', + 'table.borderWidth' : '邊框', + 'table.borderColor' : '顏色', + 'table.backgroundColor' : '背景顏色', + 'map.address' : '住所: ', + 'map.search' : '尋找', + 'baidumap.address' : '住所: ', + 'baidumap.search' : '尋找', + 'baidumap.insertDynamicMap' : '插入動態地圖', + 'anchor.name' : '錨點名稱', + 'formatblock.formatBlock' : { + h1 : '標題 1', + h2 : '標題 2', + h3 : '標題 3', + h4 : '標題 4', + p : '一般' + }, + 'fontname.fontName' : { + 'MingLiU' : '細明體', + 'PMingLiU' : '新細明體', + 'DFKai-SB' : '標楷體', + 'SimSun' : '宋體', + 'NSimSun' : '新宋體', + 'FangSong' : '仿宋體', + 'Arial' : 'Arial', + 'Arial Black' : 'Arial Black', + 'Times New Roman' : 'Times New Roman', + 'Courier New' : 'Courier New', + 'Tahoma' : 'Tahoma', + 'Verdana' : 'Verdana' + }, + 'lineheight.lineHeight' : [ + {'1' : '单倍行距'}, + {'1.5' : '1.5倍行距'}, + {'2' : '2倍行距'}, + {'2.5' : '2.5倍行距'}, + {'3' : '3倍行距'} + ], + 'template.selectTemplate' : '可選樣板', + 'template.replaceContent' : '取代當前內容', + 'template.fileList' : { + '1.html' : '影像和文字', + '2.html' : '表格', + '3.html' : '项目清單' + } +}, 'zh-TW'); + +KindEditor.each(KindEditor.options.items, function(i, name) { + if (name == 'baidumap') { + KindEditor.options.items[i] = 'map'; + } +}); +KindEditor.options.langType = 'zh-TW'; \ No newline at end of file diff --git a/public/assets/addons/nkeditor/nkeditor.js b/public/assets/addons/nkeditor/nkeditor.js new file mode 100644 index 0000000..911fc6f --- /dev/null +++ b/public/assets/addons/nkeditor/nkeditor.js @@ -0,0 +1,9532 @@ +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2018 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @website http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + * @version 5.0.3 (2018-10-25) + *******************************************************************************/ +(function (window, undefined) { + if (window.KindEditor) { + return; + } + + + if (!window.console) { + window.console = {}; + } + if (!console.log) { + console.log = function () { + }; + } + var _VERSION = '5.0.3 (2018-10-25)', + _ua = navigator.userAgent.toLowerCase(), + _IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1, + _NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1, + _GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1, + _WEBKIT = _ua.indexOf('applewebkit') > -1, + _OPERA = _ua.indexOf('opera') > -1, + _MOBILE = _ua.indexOf('mobile') > -1, + _IOS = /ipad|iphone|ipod/.test(_ua), + _QUIRKS = document.compatMode != 'CSS1Compat', + _IERANGE = !window.getSelection, + _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua), + _V = _matches ? _matches[1] : '0', + _TIME = new Date().getTime(); + + function _isArray(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Array]'; + } + + function _isFunction(val) { + if (!val) { + return false; + } + return Object.prototype.toString.call(val) === '[object Function]'; + } + + function _inArray(val, arr) { + for (var i = 0, len = arr.length; i < len; i++) { + if (val === arr[i]) { + return i; + } + } + return -1; + } + + function _each(obj, fn) { + if (_isArray(obj)) { + for (var i = 0, len = obj.length; i < len; i++) { + if (fn.call(obj[i], i, obj[i]) === false) { + break; + } + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (fn.call(obj[key], key, obj[key]) === false) { + break; + } + } + } + } + } + + function _trim(str) { + return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, ''); + } + + function _inString(val, str, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + return (delimiter + str + delimiter).indexOf(delimiter + val + delimiter) >= 0; + } + + function _addUnit(val, unit) { + unit = unit || 'px'; + return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val; + } + + function _removeUnit(val) { + var match; + return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0; + } + + function _escape(val) { + return val.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); + } + + function _unescape(val) { + return val.replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/&/g, '&'); + } + + function _toCamel(str) { + var arr = str.split('-'); + str = ''; + _each(arr, function (key, val) { + str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val; + }); + return str; + } + + function _toHex(val) { + function hex(d) { + var s = parseInt(d, 10).toString(16).toUpperCase(); + return s.length > 1 ? s : '0' + s; + } + + return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig, + function ($0, $1, $2, $3) { + return '#' + hex($1) + hex($2) + hex($3); + } + ); + } + + function _toMap(val, delimiter) { + delimiter = delimiter === undefined ? ',' : delimiter; + var map = {}, arr = _isArray(val) ? val : val.split(delimiter), match; + _each(arr, function (key, val) { + if ((match = /^(\d+)\.\.(\d+)$/.exec(val))) { + for (var i = parseInt(match[1], 10); i <= parseInt(match[2], 10); i++) { + map[i.toString()] = true; + } + } else { + map[val] = true; + } + }); + return map; + } + + function _toArray(obj, offset) { + return Array.prototype.slice.call(obj, offset || 0); + } + + function _undef(val, defaultVal) { + return val === undefined ? defaultVal : val; + } + + function _invalidUrl(url) { + return !url || /[<>"]/.test(url); + } + + function _addParam(url, param) { + return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param; + } + + function _extend(child, parent, proto) { + if (!proto) { + proto = parent; + parent = null; + } + var childProto; + if (parent) { + var fn = function () { + }; + fn.prototype = parent.prototype; + childProto = new fn(); + _each(proto, function (key, val) { + childProto[key] = val; + }); + } else { + childProto = proto; + } + childProto.constructor = child; + child.prototype = childProto; + child.parent = parent ? parent.prototype : null; + } + + + function _json(text) { + var match; + if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) { + text = match[0]; + } + var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; + cx.lastIndex = 0; + if (cx.test(text)) { + text = text.replace(cx, function (a) { + return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + }); + } + if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { + return eval('(' + text + ')'); + } + throw 'JSON parse error'; + } + + + function _merge(distObj, obj) { + for (var name in distObj) { + obj[name] = distObj[name]; + } + return obj; + } + + var _round = Math.round; + var K = { + DEBUG: false, + VERSION: _VERSION, + IE: _IE, + GECKO: _GECKO, + WEBKIT: _WEBKIT, + OPERA: _OPERA, + V: _V, + TIME: _TIME, + each: _each, + isArray: _isArray, + isFunction: _isFunction, + inArray: _inArray, + inString: _inString, + trim: _trim, + addUnit: _addUnit, + removeUnit: _removeUnit, + escape: _escape, + unescape: _unescape, + toCamel: _toCamel, + toHex: _toHex, + toMap: _toMap, + toArray: _toArray, + undef: _undef, + invalidUrl: _invalidUrl, + addParam: _addParam, + extend: _extend, + merge: _merge, + json: _json + }; + var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'), + _BLOCK_TAG_MAP = _toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'), + _SINGLE_TAG_MAP = _toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'), + _STYLE_TAG_MAP = _toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'), + _CONTROL_TAG_MAP = _toMap('img,table,input,textarea,button'), + _PRE_TAG_MAP = _toMap('pre,style,script'), + _NOSPLIT_TAG_MAP = _toMap('html,head,body,td,tr,table,ol,ul,li'), + _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'), + _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'), + _VALUE_TAG_MAP = _toMap('input,button,textarea,select'); + + + function _getBasePath() { + var els = document.getElementsByTagName('script'), src; + for (var i = 0, len = els.length; i < len; i++) { + src = els[i].src || ''; + if (/NKeditor[\w\-\.]*\.js/i.test(src)) { + return src.substring(0, src.lastIndexOf('/') + 1); + } + } + return ''; + } + + K.basePath = _getBasePath(); + K.options = { + designMode: true, + fullscreenMode: false, + filterMode: true, + wellFormatMode: true, + loadStyleMode: true, + basePath: K.basePath, + themesPath: K.basePath + 'themes/', + langPath: K.basePath + 'lang/', + pluginsPath: K.basePath + 'plugins/', + themeType: 'primary', + langType: 'zh-CN', + urlType: '', + newlineTag: 'p', + resizeType: 2, + syncType: 'form', + pasteType: 2, + dialogAlignType: 'page', + useContextmenu: true, + fullscreenShortcut: false, + bodyClass: 'ke-content', + indentChar: '\t', + cssPath: [], + jsPath: [], + showHelpGrid: false, + cssData: '', + minWidth: 650, + minHeight: 300, + minChangeSize: 50, + zIndex: 811213, + items: [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage', 'graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'about', 'fullscreen' + ], + noDisableItems: ['source', 'fullscreen'], + colorTable: [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#DDDDDD', '#999999', '#666666', '#333333', '#000000'] + ], + fontSizeTable: ['9px', '10px', '12px', '14px', '16px', '18px', '24px', '32px'], + htmlTags: { + font: ['id', 'class', 'color', 'size', 'face', '.background-color'], + span: [ + 'id', 'class', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.line-height' + ], + div: [ + 'id', 'class', 'align', '.border', '.margin', '.padding', '.text-align', '.color', + '.background-color', '.font-size', '.font-family', '.font-weight', '.background', + '.font-style', '.text-decoration', '.vertical-align', '.margin-left' + ], + table: [ + 'id', 'class', 'border', 'cellspacing', 'cellpadding', 'width', 'height', 'align', 'bordercolor', + '.padding', '.margin', '.border', 'bgcolor', '.text-align', '.color', '.background-color', + '.font-size', '.font-family', '.font-weight', '.font-style', '.text-decoration', '.background', + '.width', '.height', '.border-collapse' + ], + 'td,th': [ + 'id', 'class', 'align', 'valign', 'width', 'height', 'colspan', 'rowspan', 'bgcolor', + '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.font-weight', + '.font-style', '.text-decoration', '.vertical-align', '.background', '.border' + ], + a: ['id', 'class', 'href', 'target', 'name'], + embed: ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'wmode', 'controls'], + img: ['id', 'class', 'src', 'width', 'height', 'border', 'alt', 'title', 'align', '.width', '.height', '.border'], + 'p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6': [ + 'id', 'class', 'align', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.background', + '.font-weight', '.font-style', '.text-decoration', '.vertical-align', '.text-indent', '.margin-left' + ], + pre: ['id', 'class'], + hr: ['id', 'class', '.page-break-after'], + 'br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del': ['id', 'class'], + iframe: ['id', 'class', 'src', 'frameborder', 'width', 'height', '.width', '.height'] + }, + layout: '<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>', + afterBlur: function () { + this.sync(); + }, + errorMsgHandler: function (message, type) { + console.log(message); + console.log(type); + alert(message); + }, + dialogOffset: 0, + allowUploadGraft: true, + resLoadCache: {}, + tableBorderColor: '#cccccc', + }; + + + var _useCapture = false; + + + var _INPUT_KEY_MAP = _toMap('8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222'); + + var _CURSORMOVE_KEY_MAP = _toMap('33..40'); + + var _CHANGE_KEY_MAP = {}; + _each(_INPUT_KEY_MAP, function (key, val) { + _CHANGE_KEY_MAP[key] = val; + }); + _each(_CURSORMOVE_KEY_MAP, function (key, val) { + _CHANGE_KEY_MAP[key] = val; + }); + + + function _bindEvent(el, type, fn) { + if (el.addEventListener) { + el.addEventListener(type, fn, _useCapture); + } else if (el.attachEvent) { + el.attachEvent('on' + type, fn); + } + } + + function _unbindEvent(el, type, fn) { + if (el.removeEventListener) { + el.removeEventListener(type, fn, _useCapture); + } else if (el.detachEvent) { + el.detachEvent('on' + type, fn); + } + } + + var _EVENT_PROPS = ('altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,' + + 'data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,' + + 'pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which').split(','); + + + function KEvent(el, event) { + this.init(el, event); + } + + _extend(KEvent, { + init: function (el, event) { + var self = this, doc = el.ownerDocument || el.document || el; + self.event = event; + _each(_EVENT_PROPS, function (key, val) { + self[val] = event[val]; + }); + if (!self.target) { + self.target = self.srcElement || doc; + } + if (self.target.nodeType === 3) { + self.target = self.target.parentNode; + } + if (!self.relatedTarget && self.fromElement) { + self.relatedTarget = self.fromElement === self.target ? self.toElement : self.fromElement; + } + if (self.pageX == null && self.clientX != null) { + var d = doc.documentElement, body = doc.body; + self.pageX = self.clientX + (d && d.scrollLeft || body && body.scrollLeft || 0) - (d && d.clientLeft || body && body.clientLeft || 0); + self.pageY = self.clientY + (d && d.scrollTop || body && body.scrollTop || 0) - (d && d.clientTop || body && body.clientTop || 0); + } + if (!self.which && ((self.charCode || self.charCode === 0) ? self.charCode : self.keyCode)) { + self.which = self.charCode || self.keyCode; + } + if (!self.metaKey && self.ctrlKey) { + self.metaKey = self.ctrlKey; + } + if (!self.which && self.button !== undefined) { + self.which = (self.button & 1 ? 1 : (self.button & 2 ? 3 : (self.button & 4 ? 2 : 0))); + } + switch (self.which) { + case 186 : + self.which = 59; + break; + case 187 : + case 107 : + case 43 : + self.which = 61; + break; + case 189 : + case 45 : + self.which = 109; + break; + case 42 : + self.which = 106; + break; + case 47 : + self.which = 111; + break; + case 78 : + self.which = 110; + break; + } + if (self.which >= 96 && self.which <= 105) { + self.which -= 48; + } + }, + preventDefault: function () { + var ev = this.event; + if (ev.preventDefault) { + ev.preventDefault(); + } else { + ev.returnValue = false; + } + }, + stopPropagation: function () { + var ev = this.event; + if (ev.stopPropagation) { + ev.stopPropagation(); + } else { + ev.cancelBubble = true; + } + }, + stop: function () { + this.preventDefault(); + this.stopPropagation(); + } + }); + var _eventExpendo = 'kindeditor_' + _TIME, _eventId = 0, _eventData = {}; + + function _getId(el) { + return el[_eventExpendo] || null; + } + + function _setId(el) { + el[_eventExpendo] = ++_eventId; + return _eventId; + } + + function _removeId(el) { + try { + delete el[_eventExpendo]; + } catch (e) { + if (el.removeAttribute) { + el.removeAttribute(_eventExpendo); + } + } + } + + function _bind(el, type, fn) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _bind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + id = _setId(el); + } + if (_eventData[id] === undefined) { + _eventData[id] = {}; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + _unbindEvent(el, type, events[0]); + } else { + _eventData[id][type] = []; + _eventData[id].el = el; + } + events = _eventData[id][type]; + if (events.length === 0) { + events[0] = function (e) { + var kevent = e ? new KEvent(el, e) : undefined; + _each(events, function (i, event) { + if (i > 0 && event) { + event.call(el, kevent); + } + }); + }; + } + if (_inArray(fn, events) < 0) { + events.push(fn); + } + _bindEvent(el, type, events[0]); + } + + function _unbind(el, type, fn) { + if (type && type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _unbind(el, this, fn); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + if (type === undefined) { + if (id in _eventData) { + _each(_eventData[id], function (key, events) { + if (key != 'el' && events.length > 0) { + _unbindEvent(el, key, events[0]); + } + }); + delete _eventData[id]; + _removeId(el); + } + return; + } + if (!_eventData[id]) { + return; + } + var events = _eventData[id][type]; + if (events && events.length > 0) { + if (fn === undefined) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } else { + _each(events, function (i, event) { + if (i > 0 && event === fn) { + events.splice(i, 1); + } + }); + if (events.length == 1) { + _unbindEvent(el, type, events[0]); + delete _eventData[id][type]; + } + } + var count = 0; + _each(_eventData[id], function () { + count++; + }); + if (count < 2) { + delete _eventData[id]; + _removeId(el); + } + } + } + + function _fire(el, type) { + if (type.indexOf(',') >= 0) { + _each(type.split(','), function () { + _fire(el, this); + }); + return; + } + var id = _getId(el); + if (!id) { + return; + } + var events = _eventData[id][type]; + if (_eventData[id] && events && events.length > 0) { + events[0](); + } + } + + function _ctrl(el, key, fn) { + var self = this; + key = /^\d{2,}$/.test(key) ? key : key.toUpperCase().charCodeAt(0); + _bind(el, 'keydown', function (e) { + if (e.ctrlKey && e.which == key && !e.shiftKey && !e.altKey) { + fn.call(el); + e.stop(); + } + }); + } + + var _readyFinished = false; + + function _ready(fn) { + if (_readyFinished) { + fn(KindEditor); + return; + } + var loaded = false; + + function readyFunc() { + if (!loaded) { + loaded = true; + fn(KindEditor); + _readyFinished = true; + } + } + + function ieReadyFunc() { + if (!loaded) { + try { + document.documentElement.doScroll('left'); + } catch (e) { + setTimeout(ieReadyFunc, 100); + return; + } + readyFunc(); + } + } + + function ieReadyStateFunc() { + if (document.readyState === 'complete') { + readyFunc(); + } + } + + if (document.addEventListener) { + _bind(document, 'DOMContentLoaded', readyFunc); + } else if (document.attachEvent) { + _bind(document, 'readystatechange', ieReadyStateFunc); + var toplevel = false; + try { + toplevel = window.frameElement == null; + } catch (e) { + } + if (document.documentElement.doScroll && toplevel) { + ieReadyFunc(); + } + } + _bind(window, 'load', readyFunc); + } + + if (window.attachEvent) { + window.attachEvent('onunload', function () { + _each(_eventData, function (key, events) { + if (events.el) { + _unbind(events.el); + } + }); + }); + } + K.ctrl = _ctrl; + K.ready = _ready; + + function _getCssList(css) { + css = css.replace(/"/g, '"'); + var list = {}, + reg = /\s*([\w\-]+)\s*:([^;]*)(;|$)/g, + match; + while ((match = reg.exec(css))) { + var key = _trim(match[1].toLowerCase()), + val = _trim(_toHex(match[2])); + list[key] = val; + } + return list; + } + + function _getAttrList(tag) { + var list = {}, + reg = /\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g, + match; + while ((match = reg.exec(tag))) { + var key = (match[1] || match[2] || match[4] || match[6]).toLowerCase(), + val = (match[2] ? match[3] : (match[4] ? match[5] : match[7])) || ''; + list[key] = val; + } + return list; + } + + function _addClassToTag(tag, className) { + if (/\s+class\s*=/.test(tag)) { + tag = tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/, function ($0, $1, $2, $3) { + if ((' ' + $2 + ' ').indexOf(' ' + className + ' ') < 0) { + return $2 === '' ? $1 + className + $3 : $1 + $2 + ' ' + className + $3; + } else { + return $0; + } + }); + } else { + tag = tag.substr(0, tag.length - 1) + ' class="' + className + '">'; + } + return tag; + } + + function _formatCss(css) { + var str = ''; + _each(_getCssList(css), function (key, val) { + str += key + ':' + val + ';'; + }); + return str; + } + + function _formatUrl(url, mode, host, pathname) { + mode = _undef(mode, '').toLowerCase(); + if (url.substr(0, 5) != 'data:') { + url = url.replace(/([^:])\/\//g, '$1/'); + } + if (_inArray(mode, ['absolute', 'relative', 'domain']) < 0) { + return url; + } + host = host || location.protocol + '//' + location.host; + if (pathname === undefined) { + var m = location.pathname.match(/^(\/.*)\//); + pathname = m ? m[1] : ''; + } + if (/^\w+:/.test(url)) { + return url; + } + var match; + if ((match = /^(\w+:\/\/[^\/]*)/.exec(url))) { + if (match[1] !== host) { + return url; + } + } + + function getRealPath(path) { + var parts = path.split('/'), paths = []; + for (var i = 0, len = parts.length; i < len; i++) { + var part = parts[i]; + if (part == '..') { + if (paths.length > 0) { + paths.pop(); + } + } else if (part !== '' && part != '.') { + paths.push(part); + } + } + return '/' + paths.join('/'); + } + + if (/^\//.test(url)) { + url = host + getRealPath(url.substr(1)); + } else if (!/^\w+:\/\//.test(url)) { + url = host + getRealPath(pathname + '/' + url); + } + + function getRelativePath(path, depth) { + if (url.substr(0, path.length) === path) { + var arr = []; + for (var i = 0; i < depth; i++) { + arr.push('..'); + } + var prefix = '.'; + if (arr.length > 0) { + prefix += '/' + arr.join('/'); + } + if (pathname == '/') { + prefix += '/'; + } + return prefix + url.substr(path.length); + } else { + if ((match = /^(.*)\//.exec(path))) { + return getRelativePath(match[1], ++depth); + } + } + } + + if (mode === 'relative') { + url = getRelativePath(host + pathname, 0).substr(2); + } else if (mode === 'absolute') { + if (url.substr(0, host.length) === host) { + url = url.substr(host.length); + } + } + return url; + } + + function _formatHtml(html, htmlTags, urlType, wellFormatted, indentChar) { + if (html == null) { + html = ''; + } + urlType = urlType || ''; + wellFormatted = _undef(wellFormatted, false); + indentChar = _undef(indentChar, '\t'); + var fontSizeList = 'xx-small,x-small,small,medium,large,x-large,xx-large'.split(','); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function ($0, $1, $2, $3) { + return $1 + $2.replace(/<(?:br|br\s[^>]*)>/ig, '\n') + $3; + }); + html = html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/ig, '</p>'); + html = html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/ig, '$1<br />$2'); + html = html.replace(/\u200B/g, ''); + html = html.replace(/\u00A9/g, '©'); + html = html.replace(/\u00AE/g, '®'); + html = html.replace(/\u2003/g, ' '); + html = html.replace(/\u3000/g, ' '); + html = html.replace(/<[^>]+/g, function ($0) { + return $0.replace(/\s+/g, ' '); + }); + var htmlTagMap = {}; + if (htmlTags) { + _each(htmlTags, function (key, val) { + var arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + htmlTagMap[arr[i]] = _toMap(val); + } + }); + if (!htmlTagMap.script) { + html = html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/ig, ''); + } + if (!htmlTagMap.style) { + html = html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/ig, ''); + } + } + var re = /(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g; + var tagStack = []; + html = html.replace(re, function ($0, $1, $2, $3, $4, $5, $6) { + var full = $0, + startNewline = $1 || '', + startSlash = $2 || '', + tagName = $3.toLowerCase(), + attr = $4 || '', + endSlash = $5 ? ' ' + $5 : '', + endNewline = $6 || ''; + if (tagName == 'code') { + return full; + } + if (htmlTags && !htmlTagMap[tagName]) { + return ''; + } + if (endSlash === '' && _SINGLE_TAG_MAP[tagName]) { + endSlash = ' /'; + } + if (_INLINE_TAG_MAP[tagName]) { + if (startNewline) { + startNewline = ' '; + } + if (endNewline) { + endNewline = ' '; + } + } + if (_PRE_TAG_MAP[tagName]) { + if (startSlash) { + endNewline = '\n'; + } else { + startNewline = '\n'; + } + } + if (wellFormatted && tagName == 'br') { + endNewline = '\n'; + } + if (_BLOCK_TAG_MAP[tagName] && !_PRE_TAG_MAP[tagName]) { + if (wellFormatted) { + if (startSlash && tagStack.length > 0 && tagStack[tagStack.length - 1] === tagName) { + tagStack.pop(); + } else { + tagStack.push(tagName); + } + startNewline = '\n'; + endNewline = '\n'; + for (var i = 0, len = startSlash ? tagStack.length : tagStack.length - 1; i < len; i++) { + startNewline += indentChar; + if (!startSlash) { + endNewline += indentChar; + } + } + if (endSlash) { + tagStack.pop(); + } else if (!startSlash) { + endNewline += indentChar; + } + } else { + startNewline = endNewline = ''; + } + } + if (attr !== '') { + var attrMap = _getAttrList(full); + if (tagName === 'font') { + var fontStyleMap = {}, fontStyle = ''; + _each(attrMap, function (key, val) { + if (key === 'color') { + fontStyleMap.color = val; + delete attrMap[key]; + } + if (key === 'size') { + fontStyleMap['font-size'] = fontSizeList[parseInt(val, 10) - 1] || ''; + delete attrMap[key]; + } + if (key === 'face') { + fontStyleMap['font-family'] = val; + delete attrMap[key]; + } + if (key === 'style') { + fontStyle = val; + } + }); + if (fontStyle && !/;$/.test(fontStyle)) { + fontStyle += ';'; + } + _each(fontStyleMap, function (key, val) { + if (val === '') { + return; + } + if (/\s/.test(val)) { + val = "'" + val + "'"; + } + fontStyle += key + ':' + val + ';'; + }); + attrMap.style = fontStyle; + } + _each(attrMap, function (key, val) { + if (_FILL_ATTR_MAP[key]) { + attrMap[key] = key; + } + if (_inArray(key, ['src', 'href']) >= 0) { + attrMap[key] = _formatUrl(val, urlType); + } + if (htmlTags && key !== 'style' && !htmlTagMap[tagName]['*'] && !htmlTagMap[tagName][key] || + tagName === 'body' && key === 'contenteditable' || + /^kindeditor_\d+$/.test(key)) { + delete attrMap[key]; + } + if (key === 'style' && val !== '') { + var styleMap = _getCssList(val); + _each(styleMap, function (k, v) { + if (htmlTags && !htmlTagMap[tagName].style && !htmlTagMap[tagName]['.' + k]) { + delete styleMap[k]; + } + }); + var style = ''; + _each(styleMap, function (k, v) { + style += k + ':' + v + ';'; + }); + attrMap.style = style; + } + }); + attr = ''; + _each(attrMap, function (key, val) { + if (key === 'style' && val === '') { + return; + } + val = val.replace(/"/g, '"'); + attr += ' ' + key + '="' + val + '"'; + }); + } + if (tagName === 'font') { + tagName = 'span'; + } + return startNewline + '<' + startSlash + tagName + attr + endSlash + '>' + endNewline; + }); + html = html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/ig, function ($0, $1, $2, $3) { + return $1 + $2.replace(/\n/g, '<span id="__kindeditor_pre_newline__">\n') + $3; + }); + html = html.replace(/\n\s*\n/g, '\n'); + html = html.replace(/<span id="__kindeditor_pre_newline__">\n/g, '\n'); + return _trim(html); + } + + function _clearMsWord(html, htmlTags) { + html = html.replace(/<meta[\s\S]*?>/ig, '') + .replace(/<![\s\S]*?>/ig, '') + .replace(/<style[^>]*>[\s\S]*?<\/style>/ig, '') + .replace(/<script[^>]*>[\s\S]*?<\/script>/ig, '') + .replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/ig, '') + .replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/ig, '') + .replace(/<xml>[\s\S]*?<\/xml>/ig, '') + .replace(/<(?:table|td)[^>]*>/ig, function (full) { + return full.replace(/border-bottom:([#\w\s]+)/ig, 'border:$1'); + }); + return _formatHtml(html, htmlTags); + } + + function _mediaType(src) { + if (/\.(rm|rmvb)(\?|$)/i.test(src)) { + return 'audio/x-pn-realaudio-plugin'; + } + if (/\.(mp4)(\?|$)/i.test(src)) { + return 'video/mpeg4'; + } + if (/\.(swf|flv)(\?|$)/i.test(src)) { + return 'application/x-shockwave-flash'; + } + return 'video/x-ms-asf-plugin'; + } + + function _mediaClass(type) { + if (/realaudio/i.test(type)) { + return 'ke-rm'; + } + if (/flash/i.test(type)) { + return 'ke-flash'; + } + return 'ke-media'; + } + + function _mediaAttrs(srcTag) { + return _getAttrList(unescape(srcTag)); + } + + function _mediaEmbed(attrs) { + var type = attrs.type == 'video/mpeg4' ? 'video' : 'embed'; + if (type == 'video') { + attrs.controls = "controls"; + } + var html = '<' + type + ' '; + _each(attrs, function (key, val) { + html += key + '="' + val + '" '; + }); + html += '/>'; + return html; + } + + function _mediaImg(blankPath, attrs) { + var width = attrs.width, + height = attrs.height, + type = attrs.type || _mediaType(attrs.src), + srcTag = _mediaEmbed(attrs), + style = ''; + if (/\D/.test(width)) { + style += 'width:' + width + ';'; + } else if (width > 0) { + style += 'width:' + width + 'px;'; + } + if (/\D/.test(height)) { + style += 'height:' + height + ';'; + } else if (height > 0) { + style += 'height:' + height + 'px;'; + } + var html = '<img class="' + _mediaClass(type) + '" src="' + blankPath + '" '; + if (style !== '') { + html += 'style="' + style + '" '; + } + html += 'data-ke-tag="' + escape(srcTag) + '" alt="" />'; + return html; + } + + + function _tmpl(str, data) { + var fn = new Function("obj", + "var p=[],print=function(){p.push.apply(p,arguments);};" + + "with(obj){p.push('" + + str.replace(/[\r\t\n]/g, " ") + .split("<%").join("\t") + .replace(/((^|%>)[^\t]*)'/g, "$1\r") + .replace(/\t=(.*?)%>/g, "',$1,'") + .split("\t").join("');") + .split("%>").join("p.push('") + .split("\r").join("\\'") + "');}return p.join('');"); + return data ? fn(data) : fn; + } + + K.formatUrl = _formatUrl; + K.formatHtml = _formatHtml; + K.getCssList = _getCssList; + K.getAttrList = _getAttrList; + K.mediaType = _mediaType; + K.mediaAttrs = _mediaAttrs; + K.mediaEmbed = _mediaEmbed; + K.mediaImg = _mediaImg; + K.clearMsWord = _clearMsWord; + K.tmpl = _tmpl; + + + function _contains(nodeA, nodeB) { + if (nodeA.nodeType == 9 && nodeB.nodeType != 9) { + return true; + } + while ((nodeB = nodeB.parentNode)) { + if (nodeB == nodeA) { + return true; + } + } + return false; + } + + var _getSetAttrDiv = document.createElement('div'); + _getSetAttrDiv.setAttribute('className', 't'); + var _GET_SET_ATTRIBUTE = _getSetAttrDiv.className !== 't'; + + function _getAttr(el, key) { + key = key.toLowerCase(); + var val = null; + if (!_GET_SET_ATTRIBUTE && el.nodeName.toLowerCase() != 'script') { + var div = el.ownerDocument.createElement('div'); + div.appendChild(el.cloneNode(false)); + var list = _getAttrList(_unescape(div.innerHTML)); + if (key in list) { + val = list[key]; + } + } else { + try { + val = el.getAttribute(key, 2); + } catch (e) { + val = el.getAttribute(key, 1); + } + } + if (key === 'style' && val !== null) { + val = _formatCss(val); + } + return val; + } + + function _queryAll(expr, root) { + var exprList = expr.split(','); + if (exprList.length > 1) { + var mergedResults = []; + _each(exprList, function () { + _each(_queryAll(this, root), function () { + if (_inArray(this, mergedResults) < 0) { + mergedResults.push(this); + } + }); + }); + return mergedResults; + } + root = root || document; + + function escape(str) { + if (typeof str != 'string') { + return str; + } + return str.replace(/([^\w\-])/g, '\\$1'); + } + + function stripslashes(str) { + return str.replace(/\\/g, ''); + } + + function cmpTag(tagA, tagB) { + return tagA === '*' || tagA.toLowerCase() === escape(tagB.toLowerCase()); + } + + function byId(id, tag, root) { + var arr = [], + doc = root.ownerDocument || root, + el = doc.getElementById(stripslashes(id)); + if (el) { + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + arr.push(el); + } + } + return arr; + } + + function byClass(className, tag, root) { + var doc = root.ownerDocument || root, arr = [], els, i, len, el; + if (root.getElementsByClassName) { + els = root.getElementsByClassName(stripslashes(className)); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName)) { + arr.push(el); + } + } + } else if (doc.querySelectorAll) { + els = doc.querySelectorAll((root.nodeName !== '#document' ? root.nodeName + ' ' : '') + tag + '.' + className); + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (_contains(root, el)) { + arr.push(el); + } + } + } else { + els = root.getElementsByTagName(tag); + className = ' ' + className + ' '; + for (i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + var cls = el.className; + if (cls && (' ' + cls + ' ').indexOf(className) > -1) { + arr.push(el); + } + } + } + } + return arr; + } + + function byName(name, tag, root) { + var arr = [], doc = root.ownerDocument || root, + els = doc.getElementsByName(stripslashes(name)), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (cmpTag(tag, el.nodeName) && _contains(root, el)) { + if (el.getAttribute('name') !== null) { + arr.push(el); + } + } + } + return arr; + } + + function byAttr(key, val, tag, root) { + var arr = [], els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + if (val === null) { + if (_getAttr(el, key) !== null) { + arr.push(el); + } + } else { + if (val === escape(_getAttr(el, key))) { + arr.push(el); + } + } + } + } + return arr; + } + + function select(expr, root) { + var arr = [], matches; + matches = /^((?:\\.|[^.#\s\[<>])+)/.exec(expr); + var tag = matches ? matches[1] : '*'; + if ((matches = /#((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byId(matches[1], tag, root); + } else if ((matches = /\.((?:[\w\-]|\\.)+)$/.exec(expr))) { + arr = byClass(matches[1], tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\]/.exec(expr))) { + arr = byAttr(matches[1].toLowerCase(), null, tag, root); + } else if ((matches = /\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr))) { + var key = matches[1].toLowerCase(), val = matches[2]; + if (key === 'id') { + arr = byId(val, tag, root); + } else if (key === 'class') { + arr = byClass(val, tag, root); + } else if (key === 'name') { + arr = byName(val, tag, root); + } else { + arr = byAttr(key, val, tag, root); + } + } else { + var els = root.getElementsByTagName(tag), el; + for (var i = 0, len = els.length; i < len; i++) { + el = els[i]; + if (el.nodeType == 1) { + arr.push(el); + } + } + } + return arr; + } + + var parts = [], arr, re = /((?:\\.|[^\s>])+|[\s>])/g; + while ((arr = re.exec(expr))) { + if (arr[1] !== ' ') { + parts.push(arr[1]); + } + } + var results = []; + if (parts.length == 1) { + return select(parts[0], root); + } + var isChild = false, part, els, subResults, val, v, i, j, k, length, len, l; + for (i = 0, lenth = parts.length; i < lenth; i++) { + part = parts[i]; + if (part === '>') { + isChild = true; + continue; + } + if (i > 0) { + els = []; + for (j = 0, len = results.length; j < len; j++) { + val = results[j]; + subResults = select(part, val); + for (k = 0, l = subResults.length; k < l; k++) { + v = subResults[k]; + if (isChild) { + if (val === v.parentNode) { + els.push(v); + } + } else { + els.push(v); + } + } + } + results = els; + } else { + results = select(part, root); + } + if (results.length === 0) { + return []; + } + } + return results; + } + + function _query(expr, root) { + var arr = _queryAll(expr, root); + return arr.length > 0 ? arr[0] : null; + } + + K.query = _query; + K.queryAll = _queryAll; + + + function _get(val) { + return K(val)[0]; + } + + function _getDoc(node) { + if (!node) { + return document; + } + return node.ownerDocument || node.document || node; + } + + function _getWin(node) { + if (!node) { + return window; + } + var doc = _getDoc(node); + return doc.parentWindow || doc.defaultView; + } + + function _setHtml(el, html) { + if (el.nodeType != 1) { + return; + } + var doc = _getDoc(el); + try { + el.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + html; + var temp = doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + } catch (e) { + K(el).empty(); + K('@' + html, doc).each(function () { + el.appendChild(this); + }); + } + } + + function _hasClass(el, cls) { + return _inString(cls, el.className, ' '); + } + + function _setAttr(el, key, val) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + el.setAttribute(key, '' + val); + } + + function _removeAttr(el, key) { + if (_IE && _V < 8 && key.toLowerCase() == 'class') { + key = 'className'; + } + _setAttr(el, key, ''); + el.removeAttribute(key); + } + + function _getNodeName(node) { + if (!node || !node.nodeName) { + return ''; + } + return node.nodeName.toLowerCase(); + } + + function _computedCss(el, key) { + var self = this, win = _getWin(el), camelKey = _toCamel(key), val = ''; + if (win.getComputedStyle) { + var style = win.getComputedStyle(el, null); + val = style[camelKey] || style.getPropertyValue(key) || el.style[camelKey]; + } else if (el.currentStyle) { + val = el.currentStyle[camelKey] || el.style[camelKey]; + } + return val; + } + + function _hasVal(node) { + return !!_VALUE_TAG_MAP[_getNodeName(node)]; + } + + function _docElement(doc) { + doc = doc || document; + return _QUIRKS ? doc.body : doc.documentElement; + } + + function _docHeight(doc) { + var el = _docElement(doc); + return Math.max(el.scrollHeight, el.clientHeight); + } + + function _docWidth(doc) { + var el = _docElement(doc); + return Math.max(el.scrollWidth, el.clientWidth); + } + + function _getScrollPos(doc) { + doc = doc || document; + var x, y; + if (_IE || _NEWIE || _OPERA) { + x = _docElement(doc).scrollLeft; + y = _docElement(doc).scrollTop; + } else { + x = _getWin(doc).scrollX; + y = _getWin(doc).scrollY; + } + return {x: x, y: y}; + } + + + function KNode(node) { + this.init(node); + } + + _extend(KNode, { + init: function (node) { + var self = this; + node = _isArray(node) ? node : [node]; + var length = 0; + for (var i = 0, len = node.length; i < len; i++) { + if (node[i]) { + self[i] = node[i].constructor === KNode ? node[i][0] : node[i]; + length++; + } + } + self.length = length; + self.doc = _getDoc(self[0]); + self.name = _getNodeName(self[0]); + self.type = self.length > 0 ? self[0].nodeType : null; + self.win = _getWin(self[0]); + }, + each: function (fn) { + var self = this; + for (var i = 0; i < self.length; i++) { + if (fn.call(self[i], i, self[i]) === false) { + return self; + } + } + return self; + }, + bind: function (type, fn) { + this.each(function () { + _bind(this, type, fn); + }); + return this; + }, + unbind: function (type, fn) { + this.each(function () { + _unbind(this, type, fn); + }); + return this; + }, + fire: function (type) { + if (this.length < 1) { + return this; + } + _fire(this[0], type); + return this; + }, + hasAttr: function (key) { + if (this.length < 1) { + return false; + } + return !!_getAttr(this[0], key); + }, + attr: function (key, val) { + var self = this; + if (key === undefined) { + return _getAttrList(self.outer()); + } + if (typeof key === 'object') { + _each(key, function (k, v) { + self.attr(k, v); + }); + return self; + } + if (val === undefined) { + val = self.length < 1 ? null : _getAttr(self[0], key); + return val === null ? '' : val; + } + self.each(function () { + _setAttr(this, key, val); + }); + return self; + }, + removeAttr: function (key) { + this.each(function () { + _removeAttr(this, key); + }); + return this; + }, + get: function (i) { + if (this.length < 1) { + return null; + } + return this[i || 0]; + }, + eq: function (i) { + if (this.length < 1) { + return null; + } + return this[i] ? new KNode(this[i]) : null; + }, + hasClass: function (cls) { + if (this.length < 1) { + return false; + } + return _hasClass(this[0], cls); + }, + addClass: function (cls) { + this.each(function () { + if (!_hasClass(this, cls)) { + this.className = _trim(this.className + ' ' + cls); + } + }); + return this; + }, + removeClass: function (cls) { + this.each(function () { + if (_hasClass(this, cls)) { + this.className = _trim(this.className.replace(new RegExp('(^|\\s)' + cls + '(\\s|$)'), ' ')); + } + }); + return this; + }, + html: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1 || self.type != 1) { + return ''; + } + return _formatHtml(self[0].innerHTML); + } + self.each(function () { + _setHtml(this, val); + }); + return self; + }, + text: function () { + var self = this; + if (self.length < 1) { + return ''; + } + return _IE ? self[0].innerText : self[0].textContent; + }, + hasVal: function () { + if (this.length < 1) { + return false; + } + return _hasVal(this[0]); + }, + val: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self.hasVal() ? self[0].value : self.attr('value'); + } else { + self.each(function () { + if (_hasVal(this)) { + this.value = val; + } else { + _setAttr(this, 'value', val); + } + }); + return self; + } + }, + css: function (key, val) { + var self = this; + if (key === undefined) { + return _getCssList(self.attr('style')); + } + if (typeof key === 'object') { + _each(key, function (k, v) { + self.css(k, v); + }); + return self; + } + if (val === undefined) { + if (self.length < 1) { + return ''; + } + return self[0].style[_toCamel(key)] || _computedCss(self[0], key) || ''; + } + self.each(function () { + this.style[_toCamel(key)] = val; + }); + return self; + }, + width: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetWidth; + } + return self.css('width', _addUnit(val)); + }, + height: function (val) { + var self = this; + if (val === undefined) { + if (self.length < 1) { + return 0; + } + return self[0].offsetHeight; + } + return self.css('height', _addUnit(val)); + }, + opacity: function (val) { + this.each(function () { + if (this.style.opacity === undefined) { + this.style.filter = val == 1 ? '' : 'alpha(opacity=' + (val * 100) + ')'; + } else { + this.style.opacity = val == 1 ? '' : val; + } + }); + return this; + }, + data: function (key, val) { + var self = this; + key = 'kindeditor_data_' + key; + if (val === undefined) { + if (self.length < 1) { + return null; + } + return self[0][key]; + } + this.each(function () { + this[key] = val; + }); + return self; + }, + pos: function () { + var self = this, node = self[0], x = 0, y = 0; + if (node) { + if (node.getBoundingClientRect) { + var box = node.getBoundingClientRect(), + pos = _getScrollPos(self.doc); + x = box.left + pos.x; + y = box.top + pos.y; + } else { + while (node) { + x += node.offsetLeft; + y += node.offsetTop; + node = node.offsetParent; + } + } + } + return {x: _round(x), y: _round(y)}; + }, + clone: function (bool) { + if (this.length < 1) { + return new KNode([]); + } + return new KNode(this[0].cloneNode(bool)); + }, + append: function (expr) { + this.each(function () { + if (this.appendChild) { + this.appendChild(_get(expr)); + } + }); + return this; + }, + appendTo: function (expr) { + this.each(function () { + _get(expr).appendChild(this); + }); + return this; + }, + before: function (expr) { + this.each(function () { + try { + this.parentNode.insertBefore(_get(expr), this); + } catch (e) { + } + }); + return this; + }, + after: function (expr) { + this.each(function () { + if (this.nextSibling) { + this.parentNode.insertBefore(_get(expr), this.nextSibling); + } else { + this.parentNode.appendChild(_get(expr)); + } + }); + return this; + }, + replaceWith: function (expr) { + var nodes = []; + this.each(function (i, node) { + _unbind(node); + var newNode = _get(expr); + node.parentNode.replaceChild(newNode, node); + nodes.push(newNode); + }); + return K(nodes); + }, + empty: function () { + var self = this; + self.each(function (i, node) { + var child = node.firstChild; + while (child) { + if (!node.parentNode) { + return; + } + var next = child.nextSibling; + child.parentNode.removeChild(child); + child = next; + } + }); + return self; + }, + remove: function (keepChilds) { + var self = this; + self.each(function (i, node) { + if (!node.parentNode) { + return; + } + _unbind(node); + if (keepChilds) { + var child = node.firstChild; + while (child) { + var next = child.nextSibling; + node.parentNode.insertBefore(child, node); + child = next; + } + } + node.parentNode.removeChild(node); + delete self[i]; + }); + self.length = 0; + return self; + }, + show: function (val) { + var self = this; + if (val === undefined) { + val = self._originDisplay || ''; + } + if (self.css('display') != 'none') { + return self; + } + return self.css('display', val); + }, + hide: function () { + var self = this; + if (self.length < 1) { + return self; + } + self._originDisplay = self[0].style.display; + return self.css('display', 'none'); + }, + outer: function () { + var self = this; + if (self.length < 1) { + return ''; + } + var div = self.doc.createElement('div'), html; + div.appendChild(self[0].cloneNode(true)); + html = _formatHtml(div.innerHTML); + div = null; + return html; + }, + isSingle: function () { + return !!_SINGLE_TAG_MAP[this.name]; + }, + isInline: function () { + return !!_INLINE_TAG_MAP[this.name]; + }, + isBlock: function () { + return !!_BLOCK_TAG_MAP[this.name]; + }, + isStyle: function () { + return !!_STYLE_TAG_MAP[this.name]; + }, + isControl: function () { + return !!_CONTROL_TAG_MAP[this.name]; + }, + contains: function (otherNode) { + if (this.length < 1) { + return false; + } + return _contains(this[0], _get(otherNode)); + }, + parent: function () { + if (this.length < 1) { + return null; + } + var node = this[0].parentNode; + return node ? new KNode(node) : null; + }, + children: function () { + if (this.length < 1) { + return new KNode([]); + } + var list = [], child = this[0].firstChild; + while (child) { + if (child.nodeType != 3 || _trim(child.nodeValue) !== '') { + list.push(child); + } + child = child.nextSibling; + } + return new KNode(list); + }, + first: function () { + var list = this.children(); + return list.length > 0 ? list.eq(0) : null; + }, + last: function () { + var list = this.children(); + return list.length > 0 ? list.eq(list.length - 1) : null; + }, + index: function () { + if (this.length < 1) { + return -1; + } + var i = -1, sibling = this[0]; + while (sibling) { + i++; + sibling = sibling.previousSibling; + } + return i; + }, + prev: function () { + if (this.length < 1) { + return null; + } + var node = this[0].previousSibling; + return node ? new KNode(node) : null; + }, + next: function () { + if (this.length < 1) { + return null; + } + var node = this[0].nextSibling; + return node ? new KNode(node) : null; + }, + scan: function (fn, order) { + if (this.length < 1) { + return; + } + order = (order === undefined) ? true : order; + + function walk(node) { + var n = order ? node.firstChild : node.lastChild; + while (n) { + var next = order ? n.nextSibling : n.previousSibling; + if (fn(n) === false) { + return false; + } + if (walk(n) === false) { + return false; + } + n = next; + } + } + + walk(this[0]); + return this; + } + }); + _each(('blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,' + + 'mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,' + + 'change,select,submit,keydown,keypress,keyup,error,contextmenu').split(','), function (i, type) { + KNode.prototype[type] = function (fn) { + return fn ? this.bind(type, fn) : this.fire(type); + }; + }); + var _K = K; + K = function (expr, root) { + if (expr === undefined || expr === null) { + return; + } + + function newNode(node) { + if (!node[0]) { + node = []; + } + return new KNode(node); + } + + if (typeof expr === 'string') { + if (root) { + root = _get(root); + } + var length = expr.length; + if (expr.charAt(0) === '@') { + expr = expr.substr(1); + } + if (expr.length !== length || /<.+>/.test(expr)) { + var doc = root ? root.ownerDocument || root : document, + div = doc.createElement('div'), list = []; + div.innerHTML = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + expr; + for (var i = 0, len = div.childNodes.length; i < len; i++) { + var child = div.childNodes[i]; + if (child.id == '__kindeditor_temp_tag__') { + continue; + } + list.push(child); + } + return newNode(list); + } + return newNode(_queryAll(expr, root)); + } + if (expr && expr.constructor === KNode) { + return expr; + } + if (expr.toArray) { + expr = expr.toArray(); + } + if (_isArray(expr)) { + return newNode(expr); + } + return newNode(_toArray(arguments)); + }; + _each(_K, function (key, val) { + K[key] = val; + }); + K.NodeClass = KNode; + window.KindEditor = K; + + + var _START_TO_START = 0, + _START_TO_END = 1, + _END_TO_END = 2, + _END_TO_START = 3, + _BOOKMARK_ID = 0; + + function _updateCollapsed(range) { + range.collapsed = (range.startContainer === range.endContainer && range.startOffset === range.endOffset); + return range; + } + + function _copyAndDelete(range, isCopy, isDelete) { + var doc = range.doc, nodeList = []; + + function splitTextNode(node, startOffset, endOffset) { + var length = node.nodeValue.length, centerNode; + if (isCopy) { + var cloneNode = node.cloneNode(true); + if (startOffset > 0) { + centerNode = cloneNode.splitText(startOffset); + } else { + centerNode = cloneNode; + } + if (endOffset < length) { + centerNode.splitText(endOffset - startOffset); + } + } + if (isDelete) { + var center = node; + if (startOffset > 0) { + center = node.splitText(startOffset); + range.setStart(node, startOffset); + } + if (endOffset < length) { + var right = center.splitText(endOffset - startOffset); + range.setEnd(right, 0); + } + nodeList.push(center); + } + return centerNode; + } + + function removeNodes() { + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + } + + var copyRange = range.cloneRange().down(); + var start = -1, incStart = -1, incEnd = -1, end = -1, + ancestor = range.commonAncestor(), frag = doc.createDocumentFragment(); + if (ancestor.nodeType == 3) { + var textNode = splitTextNode(ancestor, range.startOffset, range.endOffset); + if (isCopy) { + frag.appendChild(textNode); + } + removeNodes(); + return isCopy ? frag : range; + } + + function extractNodes(parent, frag) { + var node = parent.firstChild, nextNode; + while (node) { + var testRange = new KRange(doc).selectNode(node); + start = testRange.compareBoundaryPoints(_START_TO_END, range); + if (start >= 0 && incStart <= 0) { + incStart = testRange.compareBoundaryPoints(_START_TO_START, range); + } + if (incStart >= 0 && incEnd <= 0) { + incEnd = testRange.compareBoundaryPoints(_END_TO_END, range); + } + if (incEnd >= 0 && end <= 0) { + end = testRange.compareBoundaryPoints(_END_TO_START, range); + } + if (end >= 0) { + return false; + } + nextNode = node.nextSibling; + if (start > 0) { + if (node.nodeType == 1) { + if (incStart >= 0 && incEnd <= 0) { + if (isCopy) { + frag.appendChild(node.cloneNode(true)); + } + if (isDelete) { + nodeList.push(node); + } + } else { + var childFlag; + if (isCopy) { + childFlag = node.cloneNode(false); + frag.appendChild(childFlag); + } + if (extractNodes(node, childFlag) === false) { + return false; + } + } + } else if (node.nodeType == 3) { + var textNode; + if (node == copyRange.startContainer) { + textNode = splitTextNode(node, copyRange.startOffset, node.nodeValue.length); + } else if (node == copyRange.endContainer) { + textNode = splitTextNode(node, 0, copyRange.endOffset); + } else { + textNode = splitTextNode(node, 0, node.nodeValue.length); + } + if (isCopy) { + try { + frag.appendChild(textNode); + } catch (e) { + } + } + } + } + node = nextNode; + } + } + + extractNodes(ancestor, frag); + if (isDelete) { + range.up().collapse(true); + } + for (var i = 0, len = nodeList.length; i < len; i++) { + var node = nodeList[i]; + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return isCopy ? frag : range; + } + + function _moveToElementText(range, el) { + var node = el; + while (node) { + var knode = K(node); + if (knode.name == 'marquee' || knode.name == 'select') { + return; + } + node = node.parentNode; + } + try { + range.moveToElementText(el); + } catch (e) { + } + } + + function _getStartEnd(rng, isStart) { + var doc = rng.parentElement().ownerDocument, + pointRange = rng.duplicate(); + pointRange.collapse(isStart); + var parent = pointRange.parentElement(), + nodes = parent.childNodes; + if (nodes.length === 0) { + return {node: parent.parentNode, offset: K(parent).index()}; + } + var startNode = doc, startPos = 0, cmp = -1; + var testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + for (var i = 0, len = nodes.length; i < len; i++) { + var node = nodes[i]; + cmp = testRange.compareEndPoints('StartToStart', pointRange); + if (cmp === 0) { + return {node: node.parentNode, offset: i}; + } + if (node.nodeType == 1) { + var nodeRange = rng.duplicate(), dummy, knode = K(node), newNode = node; + if (knode.isControl()) { + dummy = doc.createElement('span'); + knode.after(dummy); + newNode = dummy; + startPos += knode.text().replace(/\r\n|\n|\r/g, '').length; + } + _moveToElementText(nodeRange, newNode); + testRange.setEndPoint('StartToEnd', nodeRange); + if (cmp > 0) { + startPos += nodeRange.text.replace(/\r\n|\n|\r/g, '').length; + } else { + startPos = 0; + } + if (dummy) { + K(dummy).remove(); + } + } else if (node.nodeType == 3) { + testRange.moveStart('character', node.nodeValue.length); + startPos += node.nodeValue.length; + } + if (cmp < 0) { + startNode = node; + } + } + if (cmp < 0 && startNode.nodeType == 1) { + return {node: parent, offset: K(parent.lastChild).index() + 1}; + } + if (cmp > 0) { + while (startNode.nextSibling && startNode.nodeType == 1) { + startNode = startNode.nextSibling; + } + } + testRange = rng.duplicate(); + _moveToElementText(testRange, parent); + testRange.setEndPoint('StartToEnd', pointRange); + startPos -= testRange.text.replace(/\r\n|\n|\r/g, '').length; + if (cmp > 0 && startNode.nodeType == 3) { + var prevNode = startNode.previousSibling; + while (prevNode && prevNode.nodeType == 3) { + startPos -= prevNode.nodeValue.length; + prevNode = prevNode.previousSibling; + } + } + return {node: startNode, offset: startPos}; + } + + function _getEndRange(node, offset) { + var doc = node.ownerDocument || node, + range = doc.body.createTextRange(); + if (doc == node) { + range.collapse(true); + return range; + } + if (node.nodeType == 1 && node.childNodes.length > 0) { + var children = node.childNodes, isStart, child; + if (offset === 0) { + child = children[0]; + isStart = true; + } else { + child = children[offset - 1]; + isStart = false; + } + if (!child) { + return range; + } + if (K(child).name === 'head') { + if (offset === 1) { + isStart = true; + } + if (offset === 2) { + isStart = false; + } + range.collapse(isStart); + return range; + } + if (child.nodeType == 1) { + var kchild = K(child), span; + if (kchild.isControl()) { + span = doc.createElement('span'); + if (isStart) { + kchild.before(span); + } else { + kchild.after(span); + } + child = span; + } + _moveToElementText(range, child); + range.collapse(isStart); + if (span) { + K(span).remove(); + } + return range; + } + node = child; + offset = isStart ? 0 : child.nodeValue.length; + } + var dummy = doc.createElement('span'); + K(node).before(dummy); + _moveToElementText(range, dummy); + range.moveStart('character', offset); + K(dummy).remove(); + return range; + } + + function _toRange(rng) { + var doc, range; + + function tr2td(start) { + if (K(start.node).name == 'tr') { + start.node = start.node.cells[start.offset]; + start.offset = 0; + } + } + + if (_IERANGE) { + if (rng.item) { + doc = _getDoc(rng.item(0)); + range = new KRange(doc); + range.selectNode(rng.item(0)); + return range; + } + doc = rng.parentElement().ownerDocument; + var start = _getStartEnd(rng, true), + end = _getStartEnd(rng, false); + tr2td(start); + tr2td(end); + range = new KRange(doc); + range.setStart(start.node, start.offset); + range.setEnd(end.node, end.offset); + return range; + } + var startContainer = rng.startContainer; + doc = startContainer.ownerDocument || startContainer; + range = new KRange(doc); + range.setStart(startContainer, rng.startOffset); + range.setEnd(rng.endContainer, rng.endOffset); + return range; + } + + + function KRange(doc) { + this.init(doc); + } + + _extend(KRange, { + init: function (doc) { + var self = this; + self.startContainer = doc; + self.startOffset = 0; + self.endContainer = doc; + self.endOffset = 0; + self.collapsed = true; + self.doc = doc; + }, + commonAncestor: function () { + function getParents(node) { + var parents = []; + while (node) { + parents.push(node); + node = node.parentNode; + } + return parents; + } + + var parentsA = getParents(this.startContainer), + parentsB = getParents(this.endContainer), + i = 0, lenA = parentsA.length, lenB = parentsB.length, parentA, parentB; + while (++i) { + parentA = parentsA[lenA - i]; + parentB = parentsB[lenB - i]; + if (!parentA || !parentB || parentA !== parentB) { + break; + } + } + return parentsA[lenA - i + 1]; + }, + setStart: function (node, offset) { + var self = this, doc = self.doc; + self.startContainer = node; + self.startOffset = offset; + if (self.endContainer === doc) { + self.endContainer = node; + self.endOffset = offset; + } + return _updateCollapsed(this); + }, + setEnd: function (node, offset) { + var self = this, doc = self.doc; + self.endContainer = node; + self.endOffset = offset; + if (self.startContainer === doc) { + self.startContainer = node; + self.startOffset = offset; + } + return _updateCollapsed(this); + }, + setStartBefore: function (node) { + return this.setStart(node.parentNode || this.doc, K(node).index()); + }, + setStartAfter: function (node) { + return this.setStart(node.parentNode || this.doc, K(node).index() + 1); + }, + setEndBefore: function (node) { + return this.setEnd(node.parentNode || this.doc, K(node).index()); + }, + setEndAfter: function (node) { + return this.setEnd(node.parentNode || this.doc, K(node).index() + 1); + }, + selectNode: function (node) { + return this.setStartBefore(node).setEndAfter(node); + }, + selectNodeContents: function (node) { + var knode = K(node); + if (knode.type == 3 || knode.isSingle()) { + return this.selectNode(node); + } + var children = knode.children(); + if (children.length > 0) { + return this.setStartBefore(children[0]).setEndAfter(children[children.length - 1]); + } + return this.setStart(node, 0).setEnd(node, 0); + }, + collapse: function (toStart) { + if (toStart) { + return this.setEnd(this.startContainer, this.startOffset); + } + return this.setStart(this.endContainer, this.endOffset); + }, + compareBoundaryPoints: function (how, range) { + var rangeA = this.get(), rangeB = range.get(); + if (_IERANGE) { + var arr = {}; + arr[_START_TO_START] = 'StartToStart'; + arr[_START_TO_END] = 'EndToStart'; + arr[_END_TO_END] = 'EndToEnd'; + arr[_END_TO_START] = 'StartToEnd'; + var cmp = rangeA.compareEndPoints(arr[how], rangeB); + if (cmp !== 0) { + return cmp; + } + var nodeA, nodeB, nodeC, posA, posB; + if (how === _START_TO_START || how === _END_TO_START) { + nodeA = this.startContainer; + posA = this.startOffset; + } + if (how === _START_TO_END || how === _END_TO_END) { + nodeA = this.endContainer; + posA = this.endOffset; + } + if (how === _START_TO_START || how === _START_TO_END) { + nodeB = range.startContainer; + posB = range.startOffset; + } + if (how === _END_TO_END || how === _END_TO_START) { + nodeB = range.endContainer; + posB = range.endOffset; + } + if (nodeA === nodeB) { + var diff = posA - posB; + return diff > 0 ? 1 : (diff < 0 ? -1 : 0); + } + nodeC = nodeB; + while (nodeC && nodeC.parentNode !== nodeA) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posA ? -1 : 1; + } + nodeC = nodeA; + while (nodeC && nodeC.parentNode !== nodeB) { + nodeC = nodeC.parentNode; + } + if (nodeC) { + return K(nodeC).index() >= posB ? 1 : -1; + } + nodeC = K(nodeB).next(); + if (nodeC && nodeC.contains(nodeA)) { + return 1; + } + nodeC = K(nodeA).next(); + if (nodeC && nodeC.contains(nodeB)) { + return -1; + } + } else { + return rangeA.compareBoundaryPoints(how, rangeB); + } + }, + cloneRange: function () { + return new KRange(this.doc).setStart(this.startContainer, this.startOffset).setEnd(this.endContainer, this.endOffset); + }, + toString: function () { + var rng = this.get(), str = _IERANGE ? rng.text : rng.toString(); + return str.replace(/\r\n|\n|\r/g, ''); + }, + cloneContents: function () { + return _copyAndDelete(this, true, false); + }, + deleteContents: function () { + return _copyAndDelete(this, false, true); + }, + extractContents: function () { + return _copyAndDelete(this, true, true); + }, + insertNode: function (node) { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, + firstChild, lastChild, c, nodeCount = 1; + if (node.nodeName.toLowerCase() === '#document-fragment') { + firstChild = node.firstChild; + lastChild = node.lastChild; + nodeCount = node.childNodes.length; + } + if (sc.nodeType == 1) { + c = sc.childNodes[so]; + if (c) { + sc.insertBefore(node, c); + if (sc === ec) { + eo += nodeCount; + } + } else { + sc.appendChild(node); + } + } else if (sc.nodeType == 3) { + if (so === 0) { + sc.parentNode.insertBefore(node, sc); + if (sc.parentNode === ec) { + eo += nodeCount; + } + } else if (so >= sc.nodeValue.length) { + if (sc.nextSibling) { + sc.parentNode.insertBefore(node, sc.nextSibling); + } else { + sc.parentNode.appendChild(node); + } + } else { + if (so > 0) { + c = sc.splitText(so); + } else { + c = sc; + } + sc.parentNode.insertBefore(node, c); + if (sc === ec) { + ec = c; + eo -= so; + } + } + } + if (firstChild) { + self.setStartBefore(firstChild).setEndAfter(lastChild); + } else { + self.selectNode(node); + } + if (self.compareBoundaryPoints(_END_TO_END, self.cloneRange().setEnd(ec, eo)) >= 1) { + return self; + } + return self.setEnd(ec, eo); + }, + surroundContents: function (node) { + node.appendChild(this.extractContents()); + return this.insertNode(node).selectNode(node); + }, + isControl: function () { + var self = this, + sc = self.startContainer, so = self.startOffset, + ec = self.endContainer, eo = self.endOffset, rng; + return sc.nodeType == 1 && sc === ec && so + 1 === eo && K(sc.childNodes[so]).isControl(); + }, + get: function (hasControlRange) { + var self = this, doc = self.doc, node, rng; + if (!_IERANGE) { + rng = doc.createRange(); + try { + rng.setStart(self.startContainer, self.startOffset); + rng.setEnd(self.endContainer, self.endOffset); + } catch (e) { + } + return rng; + } + if (hasControlRange && self.isControl()) { + rng = doc.body.createControlRange(); + rng.addElement(self.startContainer.childNodes[self.startOffset]); + return rng; + } + var range = self.cloneRange().down(); + rng = doc.body.createTextRange(); + rng.setEndPoint('StartToStart', _getEndRange(range.startContainer, range.startOffset)); + rng.setEndPoint('EndToStart', _getEndRange(range.endContainer, range.endOffset)); + return rng; + }, + html: function () { + return K(this.cloneContents()).outer(); + }, + down: function () { + var self = this; + + function downPos(node, pos, isStart) { + if (node.nodeType != 1) { + return; + } + var children = K(node).children(); + if (children.length === 0) { + return; + } + var left, right, child, offset; + if (pos > 0) { + left = children.eq(pos - 1); + } + if (pos < children.length) { + right = children.eq(pos); + } + if (left && left.type == 3) { + child = left[0]; + offset = child.nodeValue.length; + } + if (right && right.type == 3) { + child = right[0]; + offset = 0; + } + if (!child) { + return; + } + if (isStart) { + self.setStart(child, offset); + } else { + self.setEnd(child, offset); + } + } + + downPos(self.startContainer, self.startOffset, true); + downPos(self.endContainer, self.endOffset, false); + return self; + }, + up: function () { + var self = this; + + function upPos(node, pos, isStart) { + if (node.nodeType != 3) { + return; + } + if (pos === 0) { + if (isStart) { + self.setStartBefore(node); + } else { + self.setEndBefore(node); + } + } else if (pos == node.nodeValue.length) { + if (isStart) { + self.setStartAfter(node); + } else { + self.setEndAfter(node); + } + } + } + + upPos(self.startContainer, self.startOffset, true); + upPos(self.endContainer, self.endOffset, false); + return self; + }, + enlarge: function (toBlock) { + var self = this; + self.up(); + + function enlargePos(node, pos, isStart) { + var knode = K(node), parent; + if (knode.type == 3 || _NOSPLIT_TAG_MAP[knode.name] || !toBlock && knode.isBlock()) { + return; + } + if (pos === 0) { + while (!knode.prev()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartBefore(knode[0]); + } else { + self.setEndBefore(knode[0]); + } + } else if (pos == knode.children().length) { + while (!knode.next()) { + parent = knode.parent(); + if (!parent || _NOSPLIT_TAG_MAP[parent.name] || !toBlock && parent.isBlock()) { + break; + } + knode = parent; + } + if (isStart) { + self.setStartAfter(knode[0]); + } else { + self.setEndAfter(knode[0]); + } + } + } + + enlargePos(self.startContainer, self.startOffset, true); + enlargePos(self.endContainer, self.endOffset, false); + return self; + }, + shrink: function () { + var self = this, child, collapsed = self.collapsed; + while (self.startContainer.nodeType == 1 && (child = self.startContainer.childNodes[self.startOffset]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setStart(child, 0); + } + if (collapsed) { + return self.collapse(collapsed); + } + while (self.endContainer.nodeType == 1 && self.endOffset > 0 && (child = self.endContainer.childNodes[self.endOffset - 1]) && child.nodeType == 1 && !K(child).isSingle()) { + self.setEnd(child, child.childNodes.length); + } + return self; + }, + createBookmark: function (serialize) { + var self = this, doc = self.doc, endNode, + startNode = K('<span style="display:none;"></span>', doc)[0]; + startNode.id = '__kindeditor_bookmark_start_' + (_BOOKMARK_ID++) + '__'; + if (!self.collapsed) { + endNode = startNode.cloneNode(true); + endNode.id = '__kindeditor_bookmark_end_' + (_BOOKMARK_ID++) + '__'; + } + if (endNode) { + self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode); + } + self.insertNode(startNode).setStartAfter(startNode); + return { + start: serialize ? '#' + startNode.id : startNode, + end: endNode ? (serialize ? '#' + endNode.id : endNode) : null + }; + }, + moveToBookmark: function (bookmark) { + var self = this, doc = self.doc, + start = K(bookmark.start, doc), end = bookmark.end ? K(bookmark.end, doc) : null; + if (!start || start.length < 1) { + return self; + } + self.setStartBefore(start[0]); + start.remove(); + if (end && end.length > 0) { + self.setEndBefore(end[0]); + end.remove(); + } else { + self.collapse(true); + } + return self; + }, + dump: function () { + console.log('--------------------'); + console.log(this.startContainer.nodeType == 3 ? this.startContainer.nodeValue : this.startContainer, this.startOffset); + console.log(this.endContainer.nodeType == 3 ? this.endContainer.nodeValue : this.endContainer, this.endOffset); + } + }); + + function _range(mixed) { + if (!mixed.nodeName) { + return mixed.constructor === KRange ? mixed : _toRange(mixed); + } + return new KRange(mixed); + } + + K.RangeClass = KRange; + K.range = _range; + K.START_TO_START = _START_TO_START; + K.START_TO_END = _START_TO_END; + K.END_TO_END = _END_TO_END; + K.END_TO_START = _END_TO_START; + + + function _nativeCommand(doc, key, val) { + try { + doc.execCommand(key, false, val); + } catch (e) { + } + } + + function _nativeCommandValue(doc, key) { + var val = ''; + try { + val = doc.queryCommandValue(key); + } catch (e) { + } + if (typeof val !== 'string') { + val = ''; + } + return val; + } + + function _getSel(doc) { + var win = _getWin(doc); + return _IERANGE ? doc.selection : win.getSelection(); + } + + function _getRng(doc) { + var sel = _getSel(doc), rng; + try { + if (sel.rangeCount > 0) { + rng = sel.getRangeAt(0); + } else { + rng = sel.createRange(); + } + } catch (e) { + } + if (_IERANGE && (!rng || (!rng.item && rng.parentElement().ownerDocument !== doc))) { + return null; + } + return rng; + } + + function _singleKeyMap(map) { + var newMap = {}, arr, v; + _each(map, function (key, val) { + arr = key.split(','); + for (var i = 0, len = arr.length; i < len; i++) { + v = arr[i]; + newMap[v] = val; + } + }); + return newMap; + } + + function _hasAttrOrCss(knode, map) { + return _hasAttrOrCssByKey(knode, map, '*') || _hasAttrOrCssByKey(knode, map); + } + + function _hasAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return false; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return false; + } + var arr = newMap[mapKey].split(','); + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + return true; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + var method = match[1] ? 'css' : 'attr'; + key = match[2]; + var val = match[3] || ''; + if (val === '' && knode[method](key) !== '') { + return true; + } + if (val !== '' && knode[method](key) === val) { + return true; + } + } + return false; + } + + function _removeAttrOrCss(knode, map) { + if (knode.type != 1) { + return; + } + _removeAttrOrCssByKey(knode, map, '*'); + _removeAttrOrCssByKey(knode, map); + } + + function _removeAttrOrCssByKey(knode, map, mapKey) { + mapKey = mapKey || knode.name; + if (knode.type !== 1) { + return; + } + var newMap = _singleKeyMap(map); + if (!newMap[mapKey]) { + return; + } + var arr = newMap[mapKey].split(','), allFlag = false; + for (var i = 0, len = arr.length; i < len; i++) { + var key = arr[i]; + if (key === '*') { + allFlag = true; + break; + } + var match = /^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key); + key = match[2]; + if (match[1]) { + key = _toCamel(key); + if (knode[0].style[key]) { + knode[0].style[key] = ''; + } + } else { + knode.removeAttr(key); + } + } + if (allFlag) { + knode.remove(true); + } + } + + function _getInnerNode(knode) { + var inner = knode; + while (inner.first()) { + inner = inner.first(); + } + return inner; + } + + function _isEmptyNode(knode) { + if (knode.type != 1 || knode.isSingle()) { + return false; + } + return knode.html().replace(/<[^>]+>/g, '') === ''; + } + + + function _mergeWrapper(a, b) { + a = a.clone(true); + var lastA = _getInnerNode(a), childA = a, merged = false; + while (b) { + while (childA) { + if (childA.name === b.name) { + _mergeAttrs(childA, b.attr(), b.css()); + merged = true; + } + childA = childA.first(); + } + if (!merged) { + lastA.append(b.clone(false)); + } + merged = false; + b = b.first(); + } + return a; + } + + function _wrapNode(knode, wrapper) { + wrapper = wrapper.clone(true); + if (knode.type == 3) { + _getInnerNode(wrapper).append(knode.clone(false)); + knode.replaceWith(wrapper); + return wrapper; + } + var nodeWrapper = knode, child; + while ((child = knode.first()) && child.children().length == 1) { + knode = child; + } + child = knode.first(); + var frag = knode.doc.createDocumentFragment(); + while (child) { + frag.appendChild(child[0]); + child = child.next(); + } + wrapper = _mergeWrapper(nodeWrapper, wrapper); + if (frag.firstChild) { + _getInnerNode(wrapper).append(frag); + } + nodeWrapper.replaceWith(wrapper); + return wrapper; + } + + function _mergeAttrs(knode, attrs, styles) { + _each(attrs, function (key, val) { + if (key !== 'style') { + knode.attr(key, val); + } + }); + _each(styles, function (key, val) { + knode.css(key, val); + }); + } + + function _inPreElement(knode) { + while (knode && knode.name != 'body') { + if (_PRE_TAG_MAP[knode.name] || knode.name == 'div' && knode.hasClass('ke-script')) { + return true; + } + knode = knode.parent(); + } + return false; + } + + function KCmd(range) { + this.init(range); + } + + _extend(KCmd, { + init: function (range) { + var self = this, doc = range.doc; + self.doc = doc; + self.win = _getWin(doc); + self.sel = _getSel(doc); + self.range = range; + }, + selection: function (forceReset) { + var self = this, doc = self.doc, rng = _getRng(doc); + self.sel = _getSel(doc); + if (rng) { + self.range = _range(rng); + if (K(self.range.startContainer).name == 'html') { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + } + if (forceReset) { + self.range.selectNodeContents(doc.body).collapse(false); + } + return self; + }, + select: function (hasDummy) { + hasDummy = _undef(hasDummy, true); + var self = this, sel = self.sel, range = self.range.cloneRange().shrink(), + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + doc = _getDoc(sc), win = self.win, rng, hasU200b = false; + if (hasDummy && sc.nodeType == 1 && range.collapsed) { + if (_IERANGE) { + var dummy = K('<span> </span>', doc); + range.insertNode(dummy[0]); + rng = doc.body.createTextRange(); + try { + rng.moveToElementText(dummy[0]); + } catch (ex) { + } + rng.collapse(false); + rng.select(); + dummy.remove(); + win.focus(); + return self; + } + if (_WEBKIT) { + var children = sc.childNodes; + if (K(sc).isInline() || so > 0 && K(children[so - 1]).isInline() || children[so] && K(children[so]).isInline()) { + range.insertNode(doc.createTextNode('\u200B')); + hasU200b = true; + } + } + } + if (_IERANGE) { + try { + rng = range.get(true); + rng.select(); + } catch (e) { + } + } else { + if (hasU200b) { + range.collapse(false); + } + rng = range.get(true); + sel.removeAllRanges(); + sel.addRange(rng); + if (doc !== document) { + var pos = K(rng.endContainer).pos(); + win.scrollTo(pos.x, pos.y); + } + } + win.focus(); + return self; + }, + wrap: function (val) { + var self = this, doc = self.doc, range = self.range, wrapper; + wrapper = K(val, doc); + if (range.collapsed) { + range.shrink(); + range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]); + return self; + } + if (wrapper.isBlock()) { + var copyWrapper = wrapper.clone(true), child = copyWrapper; + while (child.first()) { + child = child.first(); + } + child.append(range.extractContents()); + range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]); + return self; + } + range.enlarge(); + var bookmark = range.createBookmark(), ancestor = range.commonAncestor(), isStart = false; + K(ancestor).scan(function (node) { + if (!isStart && node == bookmark.start) { + isStart = true; + return; + } + if (isStart) { + if (node == bookmark.end) { + return false; + } + var knode = K(node); + if (_inPreElement(knode)) { + return; + } + if (knode.type == 3 && _trim(node.nodeValue).length > 0) { + var parent; + while ((parent = knode.parent()) && parent.isStyle() && parent.children().length == 1) { + knode = parent; + } + _wrapNode(knode, wrapper); + } + } + }); + range.moveToBookmark(bookmark); + return self; + }, + split: function (isStart, map) { + var range = this.range, doc = range.doc; + var tempRange = range.cloneRange().collapse(isStart); + var node = tempRange.startContainer, pos = tempRange.startOffset, + parent = node.nodeType == 3 ? node.parentNode : node, + needSplit = false, knode; + while (parent && parent.parentNode) { + knode = K(parent); + if (map) { + if (!knode.isStyle()) { + break; + } + if (!_hasAttrOrCss(knode, map)) { + break; + } + } else { + if (_NOSPLIT_TAG_MAP[knode.name]) { + break; + } + } + needSplit = true; + parent = parent.parentNode; + } + if (needSplit) { + var dummy = doc.createElement('span'); + range.cloneRange().collapse(!isStart).insertNode(dummy); + if (isStart) { + tempRange.setStartBefore(parent.firstChild).setEnd(node, pos); + } else { + tempRange.setStart(node, pos).setEndAfter(parent.lastChild); + } + var frag = tempRange.extractContents(), + first = frag.firstChild, last = frag.lastChild; + if (isStart) { + tempRange.insertNode(frag); + range.setStartAfter(last).setEndBefore(dummy); + } else { + parent.appendChild(frag); + range.setStartBefore(dummy).setEndBefore(first); + } + var dummyParent = dummy.parentNode; + if (dummyParent == range.endContainer) { + var prev = K(dummy).prev(), next = K(dummy).next(); + if (prev && next && prev.type == 3 && next.type == 3) { + range.setEnd(prev[0], prev[0].nodeValue.length); + } else if (!isStart) { + range.setEnd(range.endContainer, range.endOffset - 1); + } + } + dummyParent.removeChild(dummy); + } + return this; + }, + remove: function (map) { + var self = this, doc = self.doc, range = self.range; + range.enlarge(); + if (range.startOffset === 0) { + var ksc = K(range.startContainer), parent; + while ((parent = ksc.parent()) && parent.isStyle() && parent.children().length == 1) { + ksc = parent; + } + range.setStart(ksc[0], 0); + ksc = K(range.startContainer); + if (ksc.isBlock()) { + _removeAttrOrCss(ksc, map); + } + var kscp = ksc.parent(); + if (kscp && kscp.isBlock()) { + _removeAttrOrCss(kscp, map); + } + } + var sc, so; + if (range.collapsed) { + self.split(true, map); + sc = range.startContainer; + so = range.startOffset; + if (so > 0) { + var sb = K(sc.childNodes[so - 1]); + if (sb && _isEmptyNode(sb)) { + sb.remove(); + range.setStart(sc, so - 1); + } + } + var sa = K(sc.childNodes[so]); + if (sa && _isEmptyNode(sa)) { + sa.remove(); + } + if (_isEmptyNode(sc)) { + range.startBefore(sc); + sc.remove(); + } + range.collapse(true); + return self; + } + self.split(true, map); + self.split(false, map); + var startDummy = doc.createElement('span'), endDummy = doc.createElement('span'); + range.cloneRange().collapse(false).insertNode(endDummy); + range.cloneRange().collapse(true).insertNode(startDummy); + var nodeList = [], cmpStart = false; + K(range.commonAncestor()).scan(function (node) { + if (!cmpStart && node == startDummy) { + cmpStart = true; + return; + } + if (node == endDummy) { + return false; + } + if (cmpStart) { + nodeList.push(node); + } + }); + K(startDummy).remove(); + K(endDummy).remove(); + sc = range.startContainer; + so = range.startOffset; + var ec = range.endContainer, eo = range.endOffset; + if (so > 0) { + var startBefore = K(sc.childNodes[so - 1]); + if (startBefore && _isEmptyNode(startBefore)) { + startBefore.remove(); + range.setStart(sc, so - 1); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + var startAfter = K(sc.childNodes[so]); + if (startAfter && _isEmptyNode(startAfter)) { + startAfter.remove(); + if (sc == ec) { + range.setEnd(ec, eo - 1); + } + } + } + var endAfter = K(ec.childNodes[range.endOffset]); + if (endAfter && _isEmptyNode(endAfter)) { + endAfter.remove(); + } + var bookmark = range.createBookmark(true); + _each(nodeList, function (i, node) { + _removeAttrOrCss(K(node), map); + }); + range.moveToBookmark(bookmark); + return self; + }, + commonNode: function (map) { + var range = this.range; + var ec = range.endContainer, eo = range.endOffset, + node = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + + function find(node) { + var child = node, parent = node; + while (parent) { + if (_hasAttrOrCss(K(parent), map)) { + return K(parent); + } + parent = parent.parentNode; + } + while (child && (child = child.lastChild)) { + if (_hasAttrOrCss(K(child), map)) { + return K(child); + } + } + return null; + } + + var cNode = find(node); + if (cNode) { + return cNode; + } + if (node.nodeType == 1 || (ec.nodeType == 3 && eo === 0)) { + var prev = K(node).prev(); + if (prev) { + return find(prev); + } + } + return null; + }, + commonAncestor: function (tagName) { + var range = this.range, + sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset, + startNode = (sc.nodeType == 3 || so === 0) ? sc : sc.childNodes[so - 1], + endNode = (ec.nodeType == 3 || eo === 0) ? ec : ec.childNodes[eo - 1]; + + function find(node) { + while (node) { + if (node.nodeType == 1) { + if (node.tagName.toLowerCase() === tagName) { + return node; + } + } + node = node.parentNode; + } + return null; + } + + var start = find(startNode), end = find(endNode); + if (start && end && start === end) { + return K(start); + } + return null; + }, + state: function (key) { + var self = this, doc = self.doc, bool = false; + try { + bool = doc.queryCommandState(key); + } catch (e) { + } + return bool; + }, + val: function (key) { + var self = this, doc = self.doc, range = self.range; + + function lc(val) { + return val.toLowerCase(); + } + + key = lc(key); + var val = '', knode; + if (key === 'fontfamily' || key === 'fontname') { + val = _nativeCommandValue(doc, 'fontname'); + val = val.replace(/['"]/g, ''); + return lc(val); + } + if (key === 'formatblock') { + val = _nativeCommandValue(doc, key); + if (val === '') { + knode = self.commonNode({'h1,h2,h3,h4,h5,h6,p,div,pre,address': '*'}); + if (knode) { + val = knode.name; + } + } + if (val === 'Normal') { + val = 'p'; + } + return lc(val); + } + if (key === 'fontsize') { + knode = self.commonNode({'*': '.font-size'}); + if (knode) { + val = knode.css('font-size'); + } + return lc(val); + } + if (key === 'forecolor') { + knode = self.commonNode({'*': '.color'}); + if (knode) { + val = knode.css('color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + if (key === 'hilitecolor') { + knode = self.commonNode({'*': '.background-color'}); + if (knode) { + val = knode.css('background-color'); + } + val = _toHex(val); + if (val === '') { + val = 'default'; + } + return lc(val); + } + return val; + }, + toggle: function (wrapper, map) { + var self = this; + if (self.commonNode(map)) { + self.remove(map); + } else { + self.wrap(wrapper); + } + return self.select(); + }, + bold: function () { + return this.toggle('<strong></strong>', { + span: '.font-weight=bold', + strong: '*', + b: '*' + }); + }, + italic: function () { + return this.toggle('<em></em>', { + span: '.font-style=italic', + em: '*', + i: '*' + }); + }, + underline: function () { + return this.toggle('<u></u>', { + span: '.text-decoration=underline', + u: '*' + }); + }, + strikethrough: function () { + return this.toggle('<s></s>', { + span: '.text-decoration=line-through', + s: '*' + }); + }, + forecolor: function (val) { + return this.wrap('<span style="color:' + val + ';"></span>').select(); + }, + hilitecolor: function (val) { + return this.wrap('<span style="background-color:' + val + ';"></span>').select(); + }, + fontsize: function (val) { + return this.wrap('<span style="font-size:' + val + ';"></span>').select(); + }, + fontname: function (val) { + return this.fontfamily(val); + }, + fontfamily: function (val) { + return this.wrap('<span style="font-family:' + val + ';"></span>').select(); + }, + removeformat: function () { + var map = { + '*': '.font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent' + }, + tags = _STYLE_TAG_MAP; + _each(tags, function (key, val) { + map[key] = '*'; + }); + this.remove(map); + return this.select(); + }, + inserthtml: function (val, quickMode) { + var self = this, range = self.range; + if (val === '') { + return self; + } + + function pasteHtml(range, val) { + val = '<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />' + val; + var rng = range.get(); + if (rng.item) { + rng.item(0).outerHTML = val; + } else { + rng.pasteHTML(val); + } + var temp = range.doc.getElementById('__kindeditor_temp_tag__'); + temp.parentNode.removeChild(temp); + var newRange = _toRange(rng); + range.setEnd(newRange.endContainer, newRange.endOffset); + range.collapse(false); + self.select(false); + } + + function insertHtml(range, val) { + var doc = range.doc, + frag = doc.createDocumentFragment(); + K('@' + val, doc).each(function () { + frag.appendChild(this); + }); + range.deleteContents(); + range.insertNode(frag); + range.collapse(false); + self.select(false); + } + + if (_IERANGE && quickMode) { + try { + pasteHtml(range, val); + } catch (e) { + insertHtml(range, val); + } + return self; + } + insertHtml(range, val); + return self; + }, + hr: function () { + return this.inserthtml('<hr />'); + }, + print: function () { + this.win.print(); + return this; + }, + insertimage: function (url, title, width, height, border, align) { + title = _undef(title, ''); + border = _undef(border, 0); + var html = '<img src="' + _escape(url) + '" data-ke-src="' + _escape(url) + '" '; + if (width) { + html += 'width="' + _escape(width) + '" '; + } + if (height) { + html += 'height="' + _escape(height) + '" '; + } + if (title) { + html += 'title="' + _escape(title) + '" '; + } + if (align) { + html += 'align="' + _escape(align) + '" '; + } + html += 'alt="' + _escape(title) + '" '; + html += '/>'; + return this.inserthtml(html); + }, + createlink: function (url, type) { + var self = this, doc = self.doc, range = self.range; + self.select(); + var a = self.commonNode({a: '*'}); + if (a && !range.isControl()) { + range.selectNode(a.get()); + self.select(); + } + var html = '<a href="' + _escape(url) + '" data-ke-src="' + _escape(url) + '" '; + if (type) { + html += ' target="' + _escape(type) + '"'; + } + if (range.collapsed) { + html += '>' + _escape(url) + '</a>'; + return self.inserthtml(html); + } + if (range.isControl()) { + var node = K(range.startContainer.childNodes[range.startOffset]); + html += '></a>'; + node.after(K(html, doc)); + node.next().append(node); + range.selectNode(node[0]); + return self.select(); + } + + function setAttr(node, url, type) { + K(node).attr('href', url).attr('data-ke-src', url); + if (type) { + K(node).attr('target', type); + } else { + K(node).removeAttr('target'); + } + } + + var sc = range.startContainer, so = range.startOffset, + ec = range.endContainer, eo = range.endOffset; + if (sc.nodeType == 1 && sc === ec && so + 1 === eo) { + var child = sc.childNodes[so]; + if (child.nodeName.toLowerCase() == 'a') { + setAttr(child, url, type); + return self; + } + } + _nativeCommand(doc, 'createlink', '__kindeditor_temp_url__'); + K('a[href="__kindeditor_temp_url__"]', doc).each(function () { + setAttr(this, url, type); + }); + return self; + }, + unlink: function () { + var self = this, doc = self.doc, range = self.range; + self.select(); + if (range.collapsed) { + var a = self.commonNode({a: '*'}); + if (a) { + range.selectNode(a.get()); + self.select(); + } + _nativeCommand(doc, 'unlink', null); + if (_WEBKIT && K(range.startContainer).name === 'img') { + var parent = K(range.startContainer).parent(); + if (parent.name === 'a') { + parent.remove(true); + } + } + } else { + _nativeCommand(doc, 'unlink', null); + } + return self; + } + }); + _each(('formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript').split(','), function (i, name) { + KCmd.prototype[name] = function (val) { + var self = this; + self.select(); + _nativeCommand(self.doc, name, val); + if (_IERANGE && _inArray(name, 'justifyleft,justifycenter,justifyright,justifyfull'.split(',')) >= 0) { + self.selection(); + } + if (!_IERANGE || _inArray(name, 'formatblock,selectall,insertorderedlist,insertunorderedlist'.split(',')) >= 0) { + self.selection(); + } + return self; + }; + }); + _each('cut,copy,paste'.split(','), function (i, name) { + KCmd.prototype[name] = function () { + var self = this; + if (!self.doc.queryCommandSupported(name)) { + throw 'not supported'; + } + self.select(); + _nativeCommand(self.doc, name, null); + return self; + }; + }); + + function _cmd(mixed) { + if (mixed.nodeName) { + var doc = _getDoc(mixed); + mixed = _range(doc).selectNodeContents(doc.body).collapse(false); + } + return new KCmd(mixed); + } + + K.CmdClass = KCmd; + K.cmd = _cmd; + + + function _drag(options) { + var moveEl = options.moveEl, + moveFn = options.moveFn, + clickEl = options.clickEl || moveEl, + beforeDrag = options.beforeDrag, + iframeFix = options.iframeFix === undefined ? true : options.iframeFix; + var docs = [document]; + if (iframeFix) { + K('iframe').each(function () { + var src = _formatUrl(this.src || '', 'absolute'); + if (/^https?:\/\//.test(src)) { + return; + } + var doc; + try { + doc = _iframeDoc(this); + } catch (e) { + } + if (doc) { + var pos = K(this).pos(); + K(doc).data('pos-x', pos.x); + K(doc).data('pos-y', pos.y); + docs.push(doc); + } + }); + } + clickEl.mousedown(function (e) { + if (e.button !== 0 && e.button !== 1) { + return; + } + e.stopPropagation(); + var self = clickEl.get(), + x = _removeUnit(moveEl.css('left')), + y = _removeUnit(moveEl.css('top')), + width = moveEl.width(), + height = moveEl.height(), + pageX = e.pageX, + pageY = e.pageY; + if (beforeDrag) { + beforeDrag(); + } + + function moveListener(e) { + e.preventDefault(); + var kdoc = K(_getDoc(e.target)); + var diffX = _round((kdoc.data('pos-x') || 0) + e.pageX - pageX); + var diffY = _round((kdoc.data('pos-y') || 0) + e.pageY - pageY); + moveFn.call(clickEl, x, y, width, height, diffX, diffY); + } + + function selectListener(e) { + e.preventDefault(); + } + + function upListener(e) { + e.preventDefault(); + K(docs).unbind('mousemove', moveListener) + .unbind('mouseup', upListener) + .unbind('selectstart', selectListener); + if (self.releaseCapture) { + self.releaseCapture(); + } + } + + K(docs).mousemove(moveListener) + .mouseup(upListener) + .bind('selectstart', selectListener); + if (self.setCapture) { + self.setCapture(); + } + }); + } + + + function KWidget(options) { + this.init(options); + } + + _extend(KWidget, { + init: function (options) { + var self = this; + self.name = options.name || ''; + self.doc = options.doc || document; + self.win = _getWin(self.doc); + self.x = _addUnit(options.x); + self.y = _addUnit(options.y); + self.z = options.z; + self.width = _addUnit(options.width); + self.height = _addUnit(options.height); + self.div = K('<div style="display:block;"></div>'); + self.options = options; + self._alignEl = options.alignEl; + if (self.width) { + self.div.css('width', self.width); + } + if (self.height) { + self.div.css('height', self.height); + } + if (self.z) { + self.div.css({ + position: 'absolute', + left: self.x, + top: self.y, + 'z-index': self.z + }); + } + if (self.z && (self.x === undefined || self.y === undefined)) { + self.autoPos(self.width, self.height); + } + if (options.cls) { + self.div.addClass(options.cls); + } + if (options.shadowMode) { + self.div.addClass('ke-shadow'); + } + if (options.css) { + self.div.css(options.css); + } + if (options.src) { + K(options.src).replaceWith(self.div); + } else { + K(self.doc.body).append(self.div); + } + if (options.html) { + self.div.html(options.html); + } + if (options.autoScroll) { + if (_IE && _V < 7 || _QUIRKS) { + var scrollPos = _getScrollPos(); + K(self.win).bind('scroll', function (e) { + var pos = _getScrollPos(), + diffX = pos.x - scrollPos.x, + diffY = pos.y - scrollPos.y; + self.pos(_removeUnit(self.x) + diffX, _removeUnit(self.y) + diffY, false); + }); + } else { + self.div.css('position', 'fixed'); + } + } + }, + pos: function (x, y, updateProp) { + var self = this; + updateProp = _undef(updateProp, true); + if (x !== null) { + x = x < 0 ? 0 : _addUnit(x); + self.div.css('left', x); + if (updateProp) { + self.x = x; + } + } + if (y !== null) { + y = y < 0 ? 0 : _addUnit(y); + self.div.css('top', y); + if (updateProp) { + self.y = y; + } + } + return self; + }, + autoPos: function (width, height) { + var x, y, self = this, + w = _removeUnit(width) || 0, + h = _removeUnit(height) || 0, + scrollPos = _getScrollPos(); + if (self._alignEl) { + var knode = K(self._alignEl), + pos = knode.pos(), + diffX = _round(knode[0].clientWidth / 2 - w / 2), + diffY = _round(knode[0].clientHeight / 2 - h / 2); + x = diffX < 0 ? pos.x : pos.x + diffX; + } else { + var docEl = _docElement(self.doc); + x = _round(scrollPos.x + (docEl.clientWidth - w) / 2); + y = _round(scrollPos.y + (docEl.clientHeight - h) / 2); + } + if (K.options.dialogOffset > 0) { + y = scrollPos.y + 20; + } + if (!(_IE && _V < 7 || _QUIRKS)) { + x -= scrollPos.x; + y -= scrollPos.y; + } + return self.pos(x, y); + }, + remove: function () { + var self = this; + if (_IE && _V < 7 || _QUIRKS) { + K(self.win).unbind('scroll'); + } + self.div.remove(); + _each(self, function (i) { + self[i] = null; + }); + return this; + }, + show: function () { + this.div.show(); + return this; + }, + hide: function () { + this.div.hide(); + return this; + }, + draggable: function (options) { + var self = this; + options = options || {}; + options.moveEl = self.div; + options.moveFn = function (x, y, width, height, diffX, diffY) { + if ((x = x + diffX) < 0) { + x = 0; + } + if ((y = y + diffY) < 0) { + y = 0; + } + self.pos(x, y); + }; + _drag(options); + return self; + } + }); + + function _widget(options) { + return new KWidget(options); + } + + K.WidgetClass = KWidget; + K.widget = _widget; + + + function _iframeDoc(iframe) { + iframe = _get(iframe); + return iframe.contentDocument || iframe.contentWindow.document; + } + + var html, _direction = ''; + if ((html = document.getElementsByTagName('html'))) { + _direction = html[0].dir; + } + + function _getInitHtml(options) { + var themesPath = _undef(options.themesPath, ''), + bodyClass = options.bodyClass, + cssPath = options.cssPath, + jsPath = options.jsPath, + cssData = options.cssData; + var arr = [ + (_direction === '' ? '<html>' : '<html dir="' + _direction + '">'), + '<head><meta charset="utf-8" /><title></title>', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/flash.svg);', + ' *background-image:url(' + themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + themesPath + 'common/play.svg);', + ' *background-image:url(' + themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}', + ]; + if (options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + if (!_isArray(cssPath)) { + cssPath = [cssPath]; + } + if (_inArray(K.basePath + 'themes/app.css', cssPath) < 0) { + cssPath.push(K.basePath + 'themes/app.css'); + } + _each(cssPath, function (i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (cssData) { + arr.push('<style>' + cssData + '</style>'); + } + arr.push('</head><body ' + (bodyClass ? 'class="' + bodyClass + '"' : '') + '>'); + if (!_isArray(jsPath)) { + jsPath = [jsPath]; + } + _each(jsPath, function (i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + return arr.join('\n'); + } + + function _elementVal(knode, val) { + if (knode.hasVal()) { + if (val === undefined) { + var html = knode.val(); + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + return html; + } + return knode.val(val); + } + return knode.html(val); + } + + + function KEdit(options) { + this.init(options); + } + + _extend(KEdit, KWidget, { + init: function (options) { + var self = this; + KEdit.parent.init.call(self, options); + self.srcElement = K(options.srcElement); + self.div.addClass('ke-edit'); + self.designMode = _undef(options.designMode, true); + self.beforeGetHtml = options.beforeGetHtml; + self.beforeSetHtml = options.beforeSetHtml; + self.afterSetHtml = options.afterSetHtml; + var isDocumentDomain = location.protocol != 'res:' && location.host.replace(/:\d+/, '') !== document.domain, + srcScript = ('document.open();' + + (isDocumentDomain ? 'document.domain="' + document.domain + '";' : '') + + 'document.close();'), + iframeSrc = _IE ? ' src="javascript:void(function(){' + encodeURIComponent(srcScript) + '}())"' : ''; + self.iframe = K('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"' + iframeSrc + '></iframe>').css('width', '100%'); + self.textarea = K('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css('width', '100%'); + self.tabIndex = isNaN(parseInt(options.tabIndex, 10)) ? self.srcElement.attr('tabindex') : parseInt(options.tabIndex, 10); + self.iframe.attr('tabindex', self.tabIndex); + self.textarea.attr('tabindex', self.tabIndex); + if (self.width) { + self.setWidth(self.width); + } + if (self.height) { + self.setHeight(self.height); + } + if (self.designMode) { + self.textarea.hide(); + } else { + self.iframe.hide(); + } + + function ready() { + var doc = _iframeDoc(self.iframe); + doc.open(); + if (isDocumentDomain) { + doc.domain = document.domain; + } + doc.write(_getInitHtml(self.options)); + doc.close(); + self.win = self.iframe[0].contentWindow; + self.doc = doc; + var cmd = _cmd(doc); + self.afterChange(function (e) { + cmd.selection(); + }); + if (_WEBKIT) { + K(doc).click(function (e) { + if (K(e.target).name === 'img') { + cmd.selection(true); + cmd.range.selectNode(e.target); + cmd.select(); + } + }); + } + if (_IE) { + self._mousedownHandler = function () { + var newRange = cmd.range.cloneRange(); + newRange.shrink(); + if (newRange.isControl()) { + self.blur(); + } + }; + K(document).mousedown(self._mousedownHandler); + K(doc).keydown(function (e) { + if (e.which == 8) { + cmd.selection(); + var rng = cmd.range; + if (rng.isControl()) { + rng.collapse(true); + K(rng.startContainer.childNodes[rng.startOffset]).remove(); + e.preventDefault(); + } + } + }); + } + self.cmd = cmd; + self.html(_elementVal(self.srcElement)); + if (_IE) { + doc.body.disabled = true; + doc.body.contentEditable = true; + doc.body.removeAttribute('disabled'); + } else { + doc.designMode = 'on'; + } + if (options.afterCreate) { + options.afterCreate.call(self); + } + } + + if (isDocumentDomain) { + self.iframe.bind('load', function (e) { + self.iframe.unbind('load'); + if (_IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + } + self.div.append(self.iframe); + self.div.append(self.textarea); + self.srcElement.hide(); + !isDocumentDomain && ready(); + }, + setWidth: function (val) { + var self = this; + val = _addUnit(val); + self.width = val; + self.div.css('width', val); + return self; + }, + setHeight: function (val) { + var self = this; + val = _addUnit(val); + self.height = val; + self.div.css('height', val); + self.iframe.css('height', val); + if ((_IE && _V < 8) || _QUIRKS) { + val = _addUnit(_removeUnit(val) - 2); + } + self.textarea.css('height', val); + return self; + }, + remove: function () { + var self = this, doc = self.doc; + K(doc.body).unbind(); + K(doc).unbind(); + K(self.win).unbind(); + if (self._mousedownHandler) { + K(document).unbind('mousedown', self._mousedownHandler); + } + _elementVal(self.srcElement, self.html()); + self.srcElement.show(); + self.iframe.unbind(); + self.textarea.unbind(); + KEdit.parent.remove.call(self); + }, + html: function (val, isFull) { + var self = this, doc = self.doc; + if (self.designMode) { + var body = doc.body; + if (val === undefined) { + if (isFull) { + val = '<!doctype html><html>' + body.parentNode.innerHTML + '</html>'; + } else { + val = body.innerHTML; + } + if (self.beforeGetHtml) { + val = self.beforeGetHtml(val); + } + if (_GECKO && val == '<br />') { + val = ''; + } + return val; + } + if (self.beforeSetHtml) { + val = self.beforeSetHtml(val); + } + if (_IE && _V >= 9) { + val = val.replace(/(<.*?checked=")checked(".*>)/ig, '$1$2'); + } + K(body).html(val); + if (self.afterSetHtml) { + self.afterSetHtml(); + } + return self; + } + if (val === undefined) { + return self.textarea.val(); + } + self.textarea.val(val); + return self; + }, + design: function (bool) { + var self = this, val; + if (bool === undefined ? !self.designMode : bool) { + if (!self.designMode) { + val = self.html(); + self.designMode = true; + self.textarea.hide(); + self.html(val); + var iframe = self.iframe; + var height = _removeUnit(self.height); + iframe.height(height - 2); + iframe.show(); + setTimeout(function () { + iframe.height(height); + }, 0); + } + } else { + if (self.designMode) { + val = self.html(); + self.designMode = false; + self.html(val); + self.iframe.hide(); + self.textarea.show(); + } + } + return self.focus(); + }, + focus: function () { + var self = this; + self.designMode ? self.win.focus() : self.textarea[0].focus(); + return self; + }, + blur: function () { + var self = this; + if (_IE) { + var input = K('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />', self.div); + self.div.append(input); + input[0].focus(); + input.remove(); + } else { + self.designMode ? self.win.blur() : self.textarea[0].blur(); + } + return self; + }, + afterChange: function (fn) { + var self = this, doc = self.doc, body = doc.body; + K(doc).keyup(function (e) { + if (!e.ctrlKey && !e.altKey && _CHANGE_KEY_MAP[e.which]) { + fn(e); + } + }); + K(doc).mouseup(fn).contextmenu(fn); + K(self.win).blur(fn); + + function timeoutHandler(e) { + setTimeout(function () { + fn(e); + }, 1); + } + + K(body).bind('paste', timeoutHandler); + K(body).bind('cut', timeoutHandler); + return self; + } + }); + + function _edit(options) { + return new KEdit(options); + } + + K.EditClass = KEdit; + K.edit = _edit; + K.iframeDoc = _iframeDoc; + + + function _selectToolbar(name, fn) { + var self = this, + knode = self.get(name); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + fn(knode); + } + } + + + function KToolbar(options) { + this.init(options); + } + + _extend(KToolbar, KWidget, { + init: function (options) { + var self = this; + KToolbar.parent.init.call(self, options); + self.disableMode = _undef(options.disableMode, false); + self.noDisableItemMap = _toMap(_undef(options.noDisableItems, [])); + self._itemMap = {}; + self.div.addClass('ke-toolbar').bind('contextmenu,mousedown,mousemove', function (e) { + e.preventDefault(); + }).attr('unselectable', 'on'); + + function find(target) { + var knode = K(target); + if (knode.hasClass('ke-outline')) { + return knode; + } + if (knode.hasClass('ke-toolbar-icon')) { + return knode.parent(); + } + } + + function hover(e, method) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + if (knode.hasClass('ke-selected')) { + return; + } + knode[method]('ke-on'); + } + } + + self.div.mouseover(function (e) { + hover(e, 'addClass'); + }) + .mouseout(function (e) { + hover(e, 'removeClass'); + }) + .click(function (e) { + var knode = find(e.target); + if (knode) { + if (knode.hasClass('ke-disabled')) { + return; + } + self.options.click.call(this, e, knode.attr('data-name')); + } + }); + }, + get: function (name) { + if (this._itemMap[name]) { + return this._itemMap[name]; + } + return (this._itemMap[name] = K('span.ke-icon-' + name, this.div).parent()); + }, + select: function (name) { + _selectToolbar.call(this, name, function (knode) { + knode.addClass('ke-selected'); + }); + return self; + }, + unselect: function (name) { + _selectToolbar.call(this, name, function (knode) { + knode.removeClass('ke-selected').removeClass('ke-on'); + }); + return self; + }, + enable: function (name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-disabled'); + knode.opacity(1); + } + return self; + }, + disable: function (name) { + var self = this, + knode = name.get ? name : self.get(name); + if (knode) { + knode.removeClass('ke-selected').addClass('ke-disabled'); + knode.opacity(0.5); + } + return self; + }, + disableAll: function (bool, noDisableItems) { + var self = this, map = self.noDisableItemMap, item; + if (noDisableItems) { + map = _toMap(noDisableItems); + } + if (bool === undefined ? !self.disableMode : bool) { + K('span.ke-outline', self.div).each(function () { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.disable(knode); + } + }); + self.disableMode = true; + } else { + K('span.ke-outline', self.div).each(function () { + var knode = K(this), + name = knode[0].getAttribute('data-name', 2); + if (!map[name]) { + self.enable(knode); + } + }); + self.disableMode = false; + } + return self; + } + }); + + function _toolbar(options) { + return new KToolbar(options); + } + + K.ToolbarClass = KToolbar; + K.toolbar = _toolbar; + + + function KMenu(options) { + this.init(options); + } + + _extend(KMenu, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + KMenu.parent.init.call(self, options); + self.centerLineMode = _undef(options.centerLineMode, true); + self.div.addClass('ke-menu ke-menu-' + options.themeType).bind('click,mousedown', function (e) { + e.stopPropagation(); + }).attr('unselectable', 'on'); + }, + addItem: function (item) { + var self = this; + if (item.title === '-') { + self.div.append(K('<div class="ke-menu-separator"></div>')); + return; + } + var itemDiv = K('<div class="ke-menu-item" unselectable="on"></div>'), + leftDiv = K('<div class="ke-inline-block ke-menu-item-left"></div>'), + rightDiv = K('<div class="ke-inline-block ke-menu-item-right"></div>'), + height = _addUnit(item.height), + iconClass = _undef(item.iconClass, ''); + self.div.append(itemDiv); + if (height) { + itemDiv.css('height', height); + rightDiv.css('line-height', height); + } + var centerDiv; + if (self.centerLineMode) { + centerDiv = K('<div class="ke-inline-block ke-menu-item-center"></div>'); + if (height) { + centerDiv.css('height', height); + } + } + itemDiv.mouseover(function (e) { + K(this).addClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.addClass('ke-menu-item-center-on'); + } + }) + .mouseout(function (e) { + K(this).removeClass('ke-menu-item-on'); + if (centerDiv) { + centerDiv.removeClass('ke-menu-item-center-on'); + } + }) + .click(function (e) { + item.click.call(K(this)); + e.stopPropagation(); + }) + .append(leftDiv); + if (centerDiv) { + itemDiv.append(centerDiv); + } + itemDiv.append(rightDiv); + if (item.checked) { + iconClass = 'ke-icon-checked'; + } + if (iconClass !== '') { + leftDiv.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url ' + iconClass + '"></span>'); + } + rightDiv.html(item.title); + return self; + }, + remove: function () { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + K('.ke-menu-item', self.div[0]).unbind(); + KMenu.parent.remove.call(self); + return self; + } + }); + + function _menu(options) { + return new KMenu(options); + } + + K.MenuClass = KMenu; + K.menu = _menu; + + + function KColorPicker(options) { + this.init(options); + } + + _extend(KColorPicker, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + KColorPicker.parent.init.call(self, options); + var colors = options.colors || [ + ['#E53333', '#E56600', '#FF9900', '#64451D', '#DFC5A4', '#FFE500'], + ['#009900', '#006600', '#99BB00', '#B8D100', '#60D978', '#00D5FF'], + ['#337FE5', '#003399', '#4C33E5', '#9933E5', '#CC33E5', '#EE33EE'], + ['#FFFFFF', '#CCCCCC', '#999999', '#666666', '#333333', '#000000'] + ]; + self.selectedColor = (options.selectedColor || '').toLowerCase(); + self._cells = []; + self.div.addClass('ke-colorpicker').bind('click,mousedown', function (e) { + e.stopPropagation(); + }).attr('unselectable', 'on'); + var table = self.doc.createElement('table'); + self.div.append(table); + table.className = 'ke-colorpicker-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var row = table.insertRow(0), cell = row.insertCell(0); + cell.colSpan = colors[0].length; + self._addAttr(cell, '', 'ke-colorpicker-cell-top'); + for (var i = 0; i < colors.length; i++) { + row = table.insertRow(i + 1); + for (var j = 0; j < colors[i].length; j++) { + cell = row.insertCell(j); + self._addAttr(cell, colors[i][j], 'ke-colorpicker-cell'); + } + } + }, + _addAttr: function (cell, color, cls) { + var self = this; + cell = K(cell).addClass(cls); + if (self.selectedColor === color.toLowerCase()) { + cell.addClass('ke-colorpicker-cell-selected'); + } + cell.attr('title', color || self.options.noColor); + cell.mouseover(function (e) { + K(this).addClass('ke-colorpicker-cell-on'); + }); + cell.mouseout(function (e) { + K(this).removeClass('ke-colorpicker-cell-on'); + }); + cell.click(function (e) { + e.stop(); + self.options.click.call(K(this), color); + }); + if (color) { + cell.append(K('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css('background-color', color)); + } else { + cell.html(self.options.noColor); + } + K(cell).attr('unselectable', 'on'); + self._cells.push(cell); + }, + remove: function () { + var self = this; + _each(self._cells, function () { + this.unbind(); + }); + KColorPicker.parent.remove.call(self); + return self; + } + }); + + function _colorpicker(options) { + return new KColorPicker(options); + } + + K.ColorPickerClass = KColorPicker; + K.colorpicker = _colorpicker; + + + function KUploadButton(options) { + this.init(options); + } + + _extend(KUploadButton, { + init: function (options) { + var self = this, + button = K(options.button), + fieldName = options.fieldName || 'file', + url = options.url || '', + title = button.val(), + extraParams = options.extraParams || {}, + cls = button[0].className || '', + target = options.target || 'kindeditor_upload_iframe_' + new Date().getTime(); + options.afterError = options.afterError || function (str) { + K.options.errorMsgHandler(str, "error"); + }; + var hiddenElements = []; + for (var k in extraParams) { + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-inline-block ' + cls + '">', + (options.target ? '' : '<iframe name="' + target + '" style="display:none;"></iframe>'), + (options.form ? '<div class="ke-upload-area">' : '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + url + '">'), + '<span class="ke-button-common">', + hiddenElements.join(''), + '<input type="button" class="ke-button-common ke-button" value="' + title + '" />', + '</span>', + '<input type="file" class="ke-upload-file" name="' + fieldName + '" tabindex="-1" />', + (options.form ? '</div>' : '</form>'), + '</div>'].join(''); + var div = K(html, button.doc); + button.hide(); + button.before(div); + self.div = div; + self.button = button; + self.iframe = options.target ? K('iframe[name="' + target + '"]') : K('iframe', div); + self.form = options.form ? K(options.form) : K('form', div); + self.fileBox = K('.ke-upload-file', div); + var width = options.width || K('.ke-button-common', div).width(); + K('.ke-upload-area', div).width(width); + self.options = options; + }, + submit: function () { + var self = this, + iframe = self.iframe; + if (typeof self.options.beforeUpload == 'function') { + var result = self.options.beforeUpload.call(self); + if (!result) { + return false; + } + } + iframe.bind('load', function () { + iframe.unbind(); + var tempForm = document.createElement('form'); + self.fileBox.before(tempForm); + K(tempForm).append(self.fileBox); + tempForm.reset(); + K(tempForm).remove(true); + var doc = K.iframeDoc(iframe), + pre = doc.getElementsByTagName('pre')[0], + str = '', data; + if (pre) { + str = pre.innerHTML; + } else { + str = doc.body.innerHTML; + } + str = _unescape(str); + iframe[0].src = 'javascript:false'; + try { + data = K.json(str); + } catch (e) { + self.options.afterError.call(self, '<!doctype html><html>' + doc.body.parentNode.innerHTML + '</html>'); + } + if (data) { + self.options.afterUpload.call(self, data); + } + }); + self.form[0].submit(); + return self; + }, + remove: function () { + var self = this; + if (self.fileBox) { + self.fileBox.unbind(); + } + self.iframe.remove(); + self.div.remove(); + self.button.show(); + return self; + } + }); + + function _uploadbutton(options) { + return new KUploadButton(options); + } + + K.UploadButtonClass = KUploadButton; + K.uploadbutton = _uploadbutton; + + + function _createButton(arg) { + arg = arg || {}; + var name = arg.name || '', + btn = K('<a href="javascript:;" class="ke-dialog-btn" title="' + name + '">' + name + '</a>'); + if (arg.click) { + btn.click(arg.click); + } + return btn; + } + + + function KDialog(options) { + this.init(options); + } + + _extend(KDialog, KWidget, { + init: function (options) { + var self = this; + options.z = options.z || 811213; + options.shadowMode = false; + options.autoScroll = _undef(options.autoScroll, true); + KDialog.parent.init.call(self, options); + var title = options.title, + body = K(options.body, self.doc), + previewBtn = options.previewBtn, + yesBtn = options.yesBtn, + noBtn = options.noBtn, + closeBtn = options.closeBtn, + showMask = _undef(options.showMask, true); + self.div.addClass('ke-dialog ke-animated').bind('click,mousedown', function (e) { + e.stopPropagation(); + }); + var contentDiv = K('<div class="ke-dialog-content"></div>').appendTo(self.div); + var headerDiv = K('<div class="ke-dialog-header"></div>'); + contentDiv.append(headerDiv); + headerDiv.html(title); + self.closeIcon = K('<span class="ke-dialog-icon-close" title="' + closeBtn.name + '"></span>').click(closeBtn.click); + headerDiv.append(self.closeIcon); + self.draggable({ + clickEl: headerDiv, + beforeDrag: options.beforeDrag + }); + var bodyDiv = K('<div class="ke-dialog-body"></div>'); + contentDiv.append(bodyDiv); + bodyDiv.append(body); + var footerDiv = K('<div class="ke-dialog-footer"></div>'); + if (previewBtn || yesBtn || noBtn) { + self.div.append(footerDiv); + contentDiv.height(self.div.height() - footerDiv.height()); + } + _each([ + {btn: previewBtn, name: 'preview'}, + {btn: yesBtn, name: 'yes'}, + {btn: noBtn, name: 'no'} + ], function () { + if (this.btn) { + var button = _createButton(this.btn); + button.addClass('ke-dialog-' + this.name); + footerDiv.append(button); + } + }); + if (self.height) { + bodyDiv.height(_removeUnit(self.height) - headerDiv.height() - footerDiv.height()); + } + self.div.width(self.div.width()); + self.div.height(self.div.height()); + self.mask = null; + if (showMask) { + var docEl = _docElement(self.doc), + docWidth = Math.max(docEl.scrollWidth, docEl.clientWidth), + docHeight = Math.max(docEl.scrollHeight, docEl.clientHeight); + self.mask = _widget({ + x: 0, + y: 0, + z: self.z - 1, + cls: 'ke-dialog-mask', + width: docWidth, + height: docHeight + }); + } + self.autoPos(self.div.width(), self.div.height()); + self.footerDiv = footerDiv; + self.bodyDiv = bodyDiv; + self.headerDiv = headerDiv; + self.isLoading = false; + }, + setMaskIndex: function (z) { + var self = this; + self.mask.div.css('z-index', z); + }, + showLoading: function (msg) { + msg = _undef(msg, ''); + var self = this, body = self.bodyDiv; + self.loading = K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:' + Math.round(body.height() / 3) + 'px;">' + msg + '</div></div>') + .width(body.width()).height(body.height()) + .css('top', self.headerDiv.height() + 'px'); + body.css('visibility', 'hidden').after(self.loading); + self.isLoading = true; + return self; + }, + hideLoading: function () { + this.loading && this.loading.remove(); + this.bodyDiv.css('visibility', 'visible'); + this.isLoading = false; + return this; + }, + remove: function () { + var self = this; + if (self.options.beforeRemove) { + self.options.beforeRemove.call(self); + } + self.mask && self.mask.remove(); + self.iframeMask && self.iframeMask.remove(); + self.closeIcon.unbind(); + K('input', self.div).unbind(); + K('button', self.div).unbind(); + self.footerDiv.unbind(); + self.bodyDiv.unbind(); + self.headerDiv.unbind(); + K('iframe', self.div).each(function () { + K(this).remove(); + }); + KDialog.parent.remove.call(self); + return self; + } + }); + + function _dialog(options) { + return new KDialog(options); + } + + K.DialogClass = KDialog; + K.dialog = _dialog; + + + function _tabs(options) { + var self = _widget(options), + remove = self.remove, + afterSelect = options.afterSelect, + div = self.div, + liList = []; + div.addClass('ke-tabs') + .bind('contextmenu,mousedown,mousemove', function (e) { + e.preventDefault(); + }); + var ul = K('<ul class="ke-tabs-ul ke-clearfix"></ul>'); + div.append(ul); + self.add = function (tab) { + var li = K('<li class="ke-tabs-li">' + tab.title + '</li>'); + li.data('tab', tab); + liList.push(li); + ul.append(li); + }; + self.selectedIndex = 0; + self.select = function (index) { + self.selectedIndex = index; + _each(liList, function (i, li) { + li.unbind(); + if (i === index) { + li.addClass('ke-tabs-li-selected'); + K(li.data('tab').panel).show(''); + } else { + li.removeClass('ke-tabs-li-selected').removeClass('ke-tabs-li-on') + .mouseover(function () { + K(this).addClass('ke-tabs-li-on'); + }) + .mouseout(function () { + K(this).removeClass('ke-tabs-li-on'); + }) + .click(function () { + self.select(i); + }); + K(li.data('tab').panel).hide(); + } + }); + if (afterSelect) { + afterSelect.call(self, index); + } + }; + self.remove = function () { + _each(liList, function () { + this.remove(); + }); + ul.remove(); + remove.call(self); + }; + return self; + } + + K.tabs = _tabs; + + + function _loadScript(url, fn) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + script = document.createElement('script'); + head.appendChild(script); + K.options.resLoadCache[url] = 1; + script.src = url; + script.charset = 'utf-8'; + script.onload = script.onreadystatechange = function () { + if (!this.readyState || this.readyState === 'loaded') { + if (fn) { + fn(); + } + script.onload = script.onreadystatechange = null; + head.removeChild(script); + } + }; + } + + + function _chopQuery(url) { + var index = url.indexOf('?'); + return index > 0 ? url.substr(0, index) : url; + } + + function _loadStyle(url) { + if (K.options.resLoadCache[url]) { + return; + } + var head = document.getElementsByTagName('head')[0] || (_QUIRKS ? document.body : document.documentElement), + link = document.createElement('link'), + absoluteUrl = _chopQuery(_formatUrl(url, 'absolute')); + var links = K('link[rel="stylesheet"]', head); + for (var i = 0, len = links.length; i < len; i++) { + if (_chopQuery(_formatUrl(links[i].href, 'absolute')) === absoluteUrl) { + return; + } + } + head.appendChild(link); + K.options.resLoadCache[url] = 1; + link.href = url; + link.rel = 'stylesheet'; + } + + function _ajax(url, fn, method, param, dataType) { + method = method || 'GET'; + dataType = dataType || 'json'; + var xhr = window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + xhr.open(method, url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState == 4 && xhr.status == 200) { + if (fn) { + var data = _trim(xhr.responseText); + if (dataType == 'json') { + data = _json(data); + } + fn(data); + } + } + }; + if (method == 'POST') { + var params = []; + _each(param, function (key, val) { + params.push(encodeURIComponent(key) + '=' + encodeURIComponent(val)); + }); + try { + xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + } catch (e) { + } + xhr.send(params.join('&')); + } else { + xhr.send(null); + } + } + + K.loadScript = _loadScript; + K.loadStyle = _loadStyle; + K.ajax = _ajax; + + + var _plugins = {}; + + function _plugin(name, fn) { + if (name === undefined) { + return _plugins; + } + if (!fn) { + return _plugins[name]; + } + _plugins[name] = fn; + } + + var _language = {}; + + function _parseLangKey(key) { + var match, ns = 'core'; + if ((match = /^(\w+)\.(\w+)$/.exec(key))) { + ns = match[1]; + key = match[2]; + } + return {ns: ns, key: key}; + } + + function _lang(mixed, langType) { + langType = langType === undefined ? K.options.langType : langType; + if (typeof mixed === 'string') { + if (!_language[langType]) { + return 'no language'; + } + var pos = mixed.length - 1; + if (mixed.substr(pos) === '.') { + return _language[langType][mixed.substr(0, pos)]; + } + var obj = _parseLangKey(mixed); + return _language[langType][obj.ns][obj.key]; + } + _each(mixed, function (key, val) { + var obj = _parseLangKey(key); + if (!_language[langType]) { + _language[langType] = {}; + } + if (!_language[langType][obj.ns]) { + _language[langType][obj.ns] = {}; + } + _language[langType][obj.ns][obj.key] = val; + }); + } + + + function _getImageFromRange(range, fn) { + if (range.collapsed) { + return; + } + range = range.cloneRange().up(); + var sc = range.startContainer, so = range.startOffset; + if (!_WEBKIT && !range.isControl()) { + return; + } + var img = K(sc.childNodes[so]); + if (!img || img.name != 'img') { + return; + } + if (fn(img)) { + return img; + } + } + + function _bindContextmenuEvent() { + var self = this, doc = self.edit.doc; + K(doc).contextmenu(function (e) { + if (self.menu) { + self.hideMenu(); + } + if (!self.useContextmenu) { + e.preventDefault(); + return; + } + if (self._contextmenus.length === 0) { + return; + } + var maxWidth = 0, items = []; + _each(self._contextmenus, function () { + if (this.title == '-') { + items.push(this); + return; + } + if (this.cond && this.cond()) { + items.push(this); + if (this.width && this.width > maxWidth) { + maxWidth = this.width; + } + } + }); + while (items.length > 0 && items[0].title == '-') { + items.shift(); + } + while (items.length > 0 && items[items.length - 1].title == '-') { + items.pop(); + } + var prevItem = null; + _each(items, function (i) { + if (this.title == '-' && prevItem.title == '-') { + delete items[i]; + } + prevItem = this; + }); + if (items.length > 0) { + e.preventDefault(); + var pos = K(self.edit.iframe).pos(), + menu = _menu({ + x: pos.x + e.clientX, + themeType: self.themeType, + y: pos.y + e.clientY, + width: maxWidth, + css: {visibility: 'hidden'}, + shadowMode: self.shadowMode + }); + _each(items, function () { + if (this.title) { + menu.addItem(this); + } + }); + var docEl = _docElement(menu.doc), + menuHeight = menu.div.height(); + if (e.clientY + menuHeight >= docEl.clientHeight - 100) { + menu.pos(menu.x, _removeUnit(menu.y) - menuHeight); + } + menu.div.css('visibility', 'visible'); + self.menu = menu; + } + }); + } + + function _bindNewlineEvent() { + var self = this, doc = self.edit.doc, newlineTag = self.newlineTag; + if (_IE && newlineTag !== 'br') { + return; + } + if (_GECKO && _V < 3 && newlineTag !== 'p') { + return; + } + if (_OPERA && _V < 9) { + return; + } + var brSkipTagMap = _toMap('h1,h2,h3,h4,h5,h6,pre,li'), + pSkipTagMap = _toMap('p,h1,h2,h3,h4,h5,h6,pre,li,blockquote'); + + function getAncestorTagName(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor.name; + } + + K(doc).keydown(function (e) { + if (e.which == 39) { + if (self.__startOffset == self.cmd.range.startOffset) { + var tagName = getAncestorTagName(self.cmd.range); + if (tagName != 'body') { + self.appendHtml('<br />') + } + } else { + self.__startOffset = self.cmd.range.startOffset + } + return; + } + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (newlineTag === 'br' && !brSkipTagMap[tagName]) { + e.preventDefault(); + self.insertHtml('<br />' + (_IE && _V < 9 ? '' : '\u200B')); + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '<p>'); + } + }); + K(doc).keyup(function (e) { + if (e.which != 13 || e.shiftKey || e.ctrlKey || e.altKey) { + return; + } + if (newlineTag == 'br') { + return; + } + if (_GECKO) { + var root = self.cmd.commonAncestor('p'); + var a = self.cmd.commonAncestor('a'); + if (a && a.text() == '') { + a.remove(true); + self.cmd.range.selectNodeContents(root[0]).collapse(true); + self.cmd.select(); + } + return; + } + self.cmd.selection(); + var tagName = getAncestorTagName(self.cmd.range); + if (tagName == 'marquee' || tagName == 'select') { + return; + } + if (!pSkipTagMap[tagName]) { + _nativeCommand(doc, 'formatblock', '<p>'); + } + var div = self.cmd.commonAncestor('div'); + if (div) { + var p = K('<p></p>'), + child = div[0].firstChild; + while (child) { + var next = child.nextSibling; + p.append(child); + child = next; + } + div.before(p); + div.remove(); + self.cmd.range.selectNodeContents(p[0]); + self.cmd.select(); + } + }); + } + + function _bindTabEvent() { + var self = this, doc = self.edit.doc; + K(doc).keydown(function (e) { + if (e.which == 9) { + e.preventDefault(); + if (self.afterTab) { + self.afterTab.call(self, e); + return; + } + var cmd = self.cmd, range = cmd.range; + range.shrink(); + if (range.collapsed && range.startContainer.nodeType == 1) { + range.insertNode(K('@ ', doc)[0]); + cmd.select(); + } + self.insertHtml(' '); + } + }); + } + + function _bindFocusEvent() { + var self = this; + K(self.edit.textarea[0], self.edit.win).focus(function (e) { + if (self.afterFocus) { + self.afterFocus.call(self, e); + } + }).blur(function (e) { + if (self.afterBlur) { + self.afterBlur.call(self, e); + } + }); + } + + function _removeBookmarkTag(html) { + return _trim(html.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/ig, '')); + } + + function _removeTempTag(html) { + return html.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/ig, ''); + } + + function _addBookmarkToStack(stack, bookmark) { + if (stack.length === 0) { + stack.push(bookmark); + return; + } + var prev = stack[stack.length - 1]; + if (_removeBookmarkTag(bookmark.html) !== _removeBookmarkTag(prev.html)) { + stack.push(bookmark); + } + } + + + function _undoToRedo(fromStack, toStack) { + var self = this, edit = self.edit, + body = edit.doc.body, + range, bookmark; + if (fromStack.length === 0) { + return self; + } + if (edit.designMode) { + range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = body.innerHTML; + } else { + bookmark = { + html: body.innerHTML + }; + } + _addBookmarkToStack(toStack, bookmark); + var prev = fromStack.pop(); + if (_removeBookmarkTag(bookmark.html) === _removeBookmarkTag(prev.html) && fromStack.length > 0) { + prev = fromStack.pop(); + } + if (edit.designMode) { + edit.html(prev.html); + if (prev.start) { + range.moveToBookmark(prev); + self.select(); + } + } else { + K(body).html(_removeBookmarkTag(prev.html)); + } + return self; + } + + function KEditor(options) { + var self = this; + self.options = {}; + + function setOption(key, val) { + if (KEditor.prototype[key] === undefined) { + self[key] = val; + } + self.options[key] = val; + } + + _each(options, function (key, val) { + setOption(key, options[key]); + }); + _each(K.options, function (key, val) { + if (self[key] === undefined) { + setOption(key, val); + } + }); + var se = K(self.srcElement || '<textarea/>'); + if (!self.width) { + self.width = se[0].style.width || se.width(); + } + if (!self.height) { + self.height = se[0].style.height || se.height(); + } + setOption('width', _undef(self.width, self.minWidth)); + setOption('height', _undef(self.height, self.minHeight)); + setOption('width', _addUnit(self.width)); + setOption('height', _addUnit(self.height)); + if (_MOBILE && (!_IOS || _V < 534)) { + self.designMode = false; + } + self.srcElement = se; + self.initContent = ''; + self.plugin = {}; + self.isCreated = false; + self._handlers = {}; + self._contextmenus = []; + self._undoStack = []; + self._redoStack = []; + self._firstAddBookmark = true; + self.menu = self.contextmenu = null; + self.dialogs = []; + } + + KEditor.prototype = { + lang: function (mixed) { + return _lang(mixed, this.langType); + }, + loadPlugin: function (name, fn) { + var self = this; + var _pluginStatus = this._pluginStatus; + if (!_pluginStatus) { + _pluginStatus = this._pluginStatus = {}; + } + if (_plugins[name]) { + if (!_isFunction(_plugins[name])) { + setTimeout(function () { + self.loadPlugin(name, fn); + }, 100); + return self; + } + if (!_pluginStatus[name]) { + _plugins[name].call(self, KindEditor); + _pluginStatus[name] = 'inited'; + } + if (fn) { + fn.call(self); + } + return self; + } + _plugins[name] = 'loading'; + _loadScript(self.pluginsPath + name + '/' + name + '.js?ver=' + encodeURIComponent(K.DEBUG ? _TIME : _VERSION), function () { + setTimeout(function () { + if (_plugins[name]) { + self.loadPlugin(name, fn); + } + }, 0); + }); + return self; + }, + handler: function (key, fn) { + var self = this; + if (!self._handlers[key]) { + self._handlers[key] = []; + } + if (_isFunction(fn)) { + self._handlers[key].push(fn); + return self; + } + _each(self._handlers[key], function () { + fn = this.call(self, fn); + }); + return fn; + }, + clickToolbar: function (name, fn) { + var self = this, key = 'clickToolbar' + name; + if (fn === undefined) { + if (self._handlers[key]) { + return self.handler(key); + } + self.loadPlugin(name, function () { + self.handler(key); + }); + return self; + } + return self.handler(key, fn); + }, + updateState: function () { + var self = this; + _each(('justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,' + + 'subscript,superscript,bold,italic,underline,strikethrough').split(','), function (i, name) { + self.cmd.state(name) ? self.toolbar.select(name) : self.toolbar.unselect(name); + }); + return self; + }, + addContextmenu: function (item) { + this._contextmenus.push(item); + return this; + }, + afterCreate: function (fn) { + return this.handler('afterCreate', fn); + }, + beforeRemove: function (fn) { + return this.handler('beforeRemove', fn); + }, + beforeGetHtml: function (fn) { + return this.handler('beforeGetHtml', fn); + }, + beforeSetHtml: function (fn) { + return this.handler('beforeSetHtml', fn); + }, + afterSetHtml: function (fn) { + return this.handler('afterSetHtml', fn); + }, + create: function () { + var self = this, fullscreenMode = self.fullscreenMode; + if (self.isCreated) { + return self; + } + if (self.srcElement.data('kindeditor')) { + return self; + } + self.srcElement.data('kindeditor', 'true'); + if (fullscreenMode) { + _docElement().style.overflow = 'hidden'; + } else { + _docElement().style.overflow = ''; + } + var width = fullscreenMode ? _docElement().clientWidth + 'px' : self.width, + height = fullscreenMode ? _docElement().clientHeight + 'px' : self.height; + if ((_IE && _V < 8) || _QUIRKS) { + height = _addUnit(_removeUnit(height) + 2); + } + var container = self.container = K(self.layout); + if (fullscreenMode) { + K(document.body).append(container); + } else { + self.srcElement.before(container); + } + var toolbarDiv = K('.toolbar', container), + editDiv = K('.edit', container), + statusbar = self.statusbar = K('.statusbar', container); + container.removeClass('container') + .addClass('ke-container ke-container-' + self.themeType).css('width', width); + if (fullscreenMode) { + container.css({ + position: 'absolute', + left: 0, + top: 0, + 'z-index': 811211 + }); + if (!_GECKO) { + self._scrollPos = _getScrollPos(); + } + window.scrollTo(0, 0); + K(document.body).css({ + 'height': '1px', + 'overflow': 'hidden' + }); + K(document.body.parentNode).css('overflow', 'hidden'); + self._fullscreenExecuted = true; + } else { + if (self._fullscreenExecuted) { + K(document.body).css({ + 'height': '', + 'overflow': '' + }); + K(document.body.parentNode).css('overflow', ''); + } + if (self._scrollPos) { + window.scrollTo(self._scrollPos.x, self._scrollPos.y); + } + } + var htmlList = []; + K.each(self.items, function (i, name) { + if (name == '|') { + htmlList.push('<span class="ke-inline-block ke-separator"></span>'); + } else if (name == '/') { + htmlList.push('<div class="ke-hr"></div>'); + } else { + htmlList.push('<span class="ke-outline" data-name="' + name + '" title="' + self.lang(name) + '" unselectable="on">'); + htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-' + name + '" unselectable="on"></span></span>'); + } + }); + var toolbar = self.toolbar = _toolbar({ + src: toolbarDiv, + html: htmlList.join(''), + noDisableItems: self.noDisableItems, + click: function (e, name) { + e.stop(); + if (self.menu) { + var menuName = self.menu.name; + self.hideMenu(); + if (menuName === name) { + return; + } + } + self.clickToolbar(name); + } + }); + var editHeight = _removeUnit(height) - toolbar.div.height(); + var edit = self.edit = _edit({ + height: editHeight > 0 && _removeUnit(height) > self.minHeight ? editHeight : self.minHeight, + src: editDiv, + srcElement: self.srcElement, + designMode: self.designMode, + themesPath: self.themesPath, + bodyClass: self.bodyClass, + cssPath: self.cssPath, + jsPath: self.jsPath, + showHelpGrid: self.showHelpGrid, + cssData: self.cssData, + beforeGetHtml: function (html) { + html = self.beforeGetHtml(html); + html = _removeBookmarkTag(_removeTempTag(html)); + return _formatHtml(html, self.filterMode ? self.htmlTags : null, self.urlType, self.wellFormatMode, self.indentChar); + }, + beforeSetHtml: function (html) { + html = _formatHtml(html, self.filterMode ? self.htmlTags : null, '', false); + return self.beforeSetHtml(html); + }, + afterSetHtml: function () { + self.edit = edit = this; + self.afterSetHtml(); + }, + afterCreate: function () { + self.edit = edit = this; + self.cmd = edit.cmd; + self._docMousedownFn = function (e) { + if (self.menu) { + self.hideMenu(); + } + }; + K(edit.doc, document).mousedown(self._docMousedownFn); + _bindContextmenuEvent.call(self); + _bindNewlineEvent.call(self); + _bindTabEvent.call(self); + _bindFocusEvent.call(self); + edit.afterChange(function (e) { + if (!edit.designMode) { + return; + } + self.updateState(); + self.addBookmark(); + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + }); + edit.textarea.keyup(function (e) { + if (!e.ctrlKey && !e.altKey && _INPUT_KEY_MAP[e.which]) { + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + } + }); + if (self.readonlyMode) { + self.readonly(); + } + self.isCreated = true; + if (self.initContent === '') { + self.initContent = self.html(); + } + if (self._undoStack.length > 0) { + var prev = self._undoStack.pop(); + if (prev.start) { + self.html(prev.html); + edit.cmd.range.moveToBookmark(prev); + self.select(); + } + } + self.afterCreate(); + if (self.options.afterCreate) { + self.options.afterCreate.call(self); + } + } + }); + statusbar.removeClass('statusbar').addClass('ke-statusbar') + .append('<span class="ke-inline-block ke-statusbar-center-icon"></span>') + .append('<span class="ke-inline-block ke-statusbar-right-icon"></span>'); + if (self._fullscreenResizeHandler) { + K(window).unbind('resize', self._fullscreenResizeHandler); + self._fullscreenResizeHandler = null; + } + + function initResize() { + if (statusbar.height() === 0) { + setTimeout(initResize, 100); + return; + } + self.resize(width, height, false); + } + + initResize(); + if (fullscreenMode) { + self._fullscreenResizeHandler = function (e) { + if (self.isCreated) { + self.resize(_docElement().clientWidth, _docElement().clientHeight, false); + } + }; + K(window).bind('resize', self._fullscreenResizeHandler); + toolbar.select('fullscreen'); + statusbar.first().css('visibility', 'hidden'); + statusbar.last().css('visibility', 'hidden'); + } else { + if (_GECKO) { + K(window).bind('scroll', function (e) { + self._scrollPos = _getScrollPos(); + }); + } + if (self.resizeType > 0) { + _drag({ + moveEl: container, + clickEl: statusbar, + moveFn: function (x, y, width, height, diffX, diffY) { + height += diffY; + self.resize(null, height); + } + }); + } else { + statusbar.first().css('visibility', 'hidden'); + } + if (self.resizeType === 2) { + _drag({ + moveEl: container, + clickEl: statusbar.last(), + moveFn: function (x, y, width, height, diffX, diffY) { + width += diffX; + height += diffY; + self.resize(width, height); + } + }); + } else { + statusbar.last().css('visibility', 'hidden'); + } + } + return self; + }, + remove: function () { + var self = this; + if (!self.isCreated) { + return self; + } + self.beforeRemove(); + self.srcElement.data('kindeditor', ''); + if (self.menu) { + self.hideMenu(); + } + _each(self.dialogs, function () { + self.hideDialog(); + }); + K(document).unbind('mousedown', self._docMousedownFn); + self.toolbar.remove(); + self.edit.remove(); + self.statusbar.last().unbind(); + self.statusbar.unbind(); + self.container.remove(); + self.container = self.toolbar = self.edit = self.menu = null; + self.dialogs = []; + self.isCreated = false; + return self; + }, + resize: function (width, height, updateProp) { + var self = this; + updateProp = _undef(updateProp, true); + if (width) { + if (!/%/.test(width)) { + width = _removeUnit(width); + width = width < self.minWidth ? self.minWidth : width; + } + self.container.css('width', _addUnit(width)); + if (updateProp) { + self.width = _addUnit(width); + } + } + if (height) { + height = _removeUnit(height); + var editHeight = _removeUnit(height) - self.toolbar.div.height() - self.statusbar.height(); + editHeight = editHeight < self.minHeight ? self.minHeight : editHeight; + self.edit.setHeight(editHeight); + if (updateProp) { + self.height = _addUnit(height); + } + } + return self; + }, + select: function () { + this.isCreated && this.cmd.select(); + return this; + }, + html: function (val) { + var self = this; + if (val === undefined) { + return self.isCreated ? self.edit.html() : _elementVal(self.srcElement); + } + self.isCreated ? self.edit.html(val) : _elementVal(self.srcElement, val); + if (self.isCreated) { + self.cmd.selection(); + } + return self; + }, + fullHtml: function () { + return this.isCreated ? this.edit.html(undefined, true) : ''; + }, + text: function (val) { + var self = this; + if (val === undefined) { + return _trim(self.html().replace(/<(?!img|embed).*?>/ig, '').replace(/ /ig, ' ')); + } else { + return self.html(_escape(val)); + } + }, + isEmpty: function () { + return _trim(this.text().replace(/\r\n|\n|\r/, '')) === ''; + }, + isDirty: function () { + return _trim(this.initContent.replace(/\r\n|\n|\r|t/g, '')) !== _trim(this.html().replace(/\r\n|\n|\r|t/g, '')); + }, + selectedHtml: function () { + var val = this.isCreated ? this.cmd.range.html() : ''; + val = _removeBookmarkTag(_removeTempTag(val)); + return val; + }, + count: function (mode) { + var self = this; + mode = (mode || 'html').toLowerCase(); + if (mode === 'html') { + return self.html().length; + } + if (mode === 'text') { + return self.text().replace(/<(?:img|embed).*?>/ig, 'K').replace(/\r\n|\n|\r/g, '').length; + } + return 0; + }, + exec: function (key) { + key = key.toLowerCase(); + var self = this, cmd = self.cmd, + changeFlag = _inArray(key, 'selectall,copy,paste,print'.split(',')) < 0; + if (changeFlag) { + self.addBookmark(false); + } + cmd[key].apply(cmd, _toArray(arguments, 1)); + if (changeFlag) { + self.updateState(); + self.addBookmark(false); + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + } + return self; + }, + insertHtml: function (val, quickMode) { + if (!this.isCreated) { + return this; + } + val = this.beforeSetHtml(val); + this.exec('inserthtml', val, quickMode); + return this; + }, + appendHtml: function (val) { + this.html(this.html() + val); + if (this.isCreated) { + var cmd = this.cmd; + cmd.range.selectNodeContents(cmd.doc.body).collapse(false); + cmd.select(); + } + return this; + }, + sync: function () { + _elementVal(this.srcElement, this.html()); + return this; + }, + focus: function () { + this.isCreated ? this.edit.focus() : this.srcElement[0].focus(); + return this; + }, + blur: function () { + this.isCreated ? this.edit.blur() : this.srcElement[0].blur(); + return this; + }, + addBookmark: function (checkSize) { + checkSize = _undef(checkSize, true); + var self = this, edit = self.edit, + body = edit.doc.body, + html = _removeTempTag(body.innerHTML), bookmark; + if (checkSize && self._undoStack.length > 0) { + var prev = self._undoStack[self._undoStack.length - 1]; + if (Math.abs(html.length - _removeBookmarkTag(prev.html).length) < self.minChangeSize) { + return self; + } + } + if (edit.designMode && !self._firstAddBookmark) { + var range = self.cmd.range; + bookmark = range.createBookmark(true); + bookmark.html = _removeTempTag(body.innerHTML); + range.moveToBookmark(bookmark); + } else { + bookmark = { + html: html + }; + } + self._firstAddBookmark = false; + _addBookmarkToStack(self._undoStack, bookmark); + return self; + }, + undo: function () { + return _undoToRedo.call(this, this._undoStack, this._redoStack); + }, + redo: function () { + return _undoToRedo.call(this, this._redoStack, this._undoStack); + }, + fullscreen: function (bool) { + this.fullscreenMode = (bool === undefined ? !this.fullscreenMode : bool); + this.addBookmark(false); + return this.remove().create(); + }, + readonly: function (isReadonly) { + isReadonly = _undef(isReadonly, true); + var self = this, edit = self.edit, doc = edit.doc; + if (self.designMode) { + self.toolbar.disableAll(isReadonly, []); + } else { + _each(self.noDisableItems, function () { + self.toolbar[isReadonly ? 'disable' : 'enable'](this); + }); + } + if (_IE) { + doc.body.contentEditable = !isReadonly; + } else { + doc.designMode = isReadonly ? 'off' : 'on'; + } + edit.textarea[0].disabled = isReadonly; + }, + createMenu: function (options) { + var self = this, + name = options.name, + knode = self.toolbar.get(name), + pos = knode.pos(); + options.x = pos.x; + options.y = pos.y + knode.height(); + options.z = self.options.zIndex; + options.shadowMode = _undef(options.shadowMode, self.shadowMode); + if (options.selectedColor !== undefined) { + options.cls = 'ke-colorpicker-' + self.themeType; + options.noColor = self.lang('noColor'); + self.menu = _colorpicker(options); + } else { + options.cls = 'ke-menu-' + self.themeType; + options.centerLineMode = false; + self.menu = _menu(options); + } + return self.menu; + }, + hideMenu: function () { + this.menu.remove(); + this.menu = null; + return this; + }, + hideContextmenu: function () { + this.contextmenu.remove(); + this.contextmenu = null; + return this; + }, + createDialog: function (options) { + var self = this; + options.z = self.options.zIndex; + options.shadowMode = _undef(options.shadowMode, self.shadowMode); + options.closeBtn = _undef(options.closeBtn, { + name: self.lang('close'), + click: function (e) { + self.hideDialog(); + if (_IE && self.cmd) { + self.cmd.select(); + } + } + }); + options.noBtn = _undef(options.noBtn, { + name: self.lang(options.yesBtn ? 'no' : 'close'), + click: function (e) { + self.hideDialog(); + if (_IE && self.cmd) { + self.cmd.select(); + } + } + }); + if (self.dialogAlignType != 'page') { + options.alignEl = self.container; + } + options.cls = 'ke-dialog-' + self.themeType; + if (self.dialogs.length > 0) { + var firstDialog = self.dialogs[0], + parentDialog = self.dialogs[self.dialogs.length - 1]; + firstDialog.setMaskIndex(parentDialog.z + 2); + options.z = parentDialog.z + 3; + options.showMask = false; + } + var dialog = _dialog(options); + self.dialogs.push(dialog); + return dialog; + }, + hideDialog: function () { + var self = this; + if (self.dialogs.length > 0) { + self.dialogs.pop().remove(); + } + if (self.dialogs.length > 0) { + var firstDialog = self.dialogs[0], + parentDialog = self.dialogs[self.dialogs.length - 1]; + firstDialog.setMaskIndex(parentDialog.z - 1); + } + return self; + }, + errorDialog: function (html) { + var self = this; + var dialog = self.createDialog({ + width: 750, + title: self.lang('uploadError'), + body: '<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>' + }); + var iframe = K('iframe', dialog.div), doc = K.iframeDoc(iframe); + doc.open(); + doc.write(html); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + return self; + } + }; + + function _editor(options) { + return new KEditor(options); + } + + var _instances = []; + + function _create(expr, options) { + options = options || {}; + options.basePath = _undef(options.basePath, K.basePath); + options.themesPath = _undef(options.themesPath, options.basePath + 'themes/'); + options.langPath = _undef(options.langPath, options.basePath + 'lang/'); + options.pluginsPath = _undef(options.pluginsPath, options.basePath + 'plugins/'); + if (typeof options.errorMsgHandler == "function") { + K.options.errorMsgHandler = options.errorMsgHandler; + } + if (_undef(options.loadStyleMode, K.options.loadStyleMode)) { + var themeType = _undef(options.themeType, K.options.themeType); + _loadStyle(options.themesPath + themeType + '/editor.min.css'); + } + + function create(editor) { + _each(_plugins, function (name, fn) { + if (_isFunction(fn)) { + fn.call(editor, KindEditor); + if (!editor._pluginStatus) { + editor._pluginStatus = {}; + } + editor._pluginStatus[name] = 'inited'; + } + }); + return editor.create(); + } + + var knode = K(expr); + if (!knode || knode.length === 0) { + return; + } + if (knode.length > 1) { + knode.each(function () { + _create(this, options); + }); + return _instances[0]; + } + options.srcElement = knode[0]; + var editor = new KEditor(options); + _instances.push(editor); + if (_language[editor.langType]) { + return create(editor); + } + _loadScript(editor.langPath + editor.langType + '.js?ver=' + encodeURIComponent(K.DEBUG ? _TIME : _VERSION), function () { + create(editor); + }); + return editor; + } + + function _eachEditor(expr, fn) { + K(expr).each(function (i, el) { + K.each(_instances, function (j, editor) { + if (editor && editor.srcElement[0] == el) { + fn.call(editor, j); + return false; + } + }); + }); + } + + K.remove = function (expr) { + _eachEditor(expr, function (i) { + this.remove(); + _instances.splice(i, 1); + }); + }; + K.sync = function (expr) { + _eachEditor(expr, function () { + this.sync(); + }); + }; + K.html = function (expr, val) { + _eachEditor(expr, function () { + this.html(val); + }); + }; + K.insertHtml = function (expr, val) { + _eachEditor(expr, function () { + this.insertHtml(val); + }); + }; + K.appendHtml = function (expr, val) { + _eachEditor(expr, function () { + this.appendHtml(val); + }); + }; + + + if (_IE && _V < 7) { + _nativeCommand(document, 'BackgroundImageCache', true); + } + K.EditorClass = KEditor; + K.editor = _editor; + K.create = _create; + K.instances = _instances; + K.plugin = _plugin; + K.lang = _lang; + + + _plugin('core', function (K) { + var self = this, + shortcutKeys = { + undo: 'Z', redo: 'Y', bold: 'B', italic: 'I', underline: 'U', print: 'P', selectall: 'A' + }; + self.afterSetHtml(function () { + if (self.options.afterChange) { + self.options.afterChange.call(self); + } + }); + self.afterCreate(function () { + if (self.syncType != 'form') { + return; + } + var el = K(self.srcElement), hasForm = false; + while ((el = el.parent())) { + if (el.name == 'form') { + hasForm = true; + break; + } + } + if (hasForm) { + el.bind('submit', function (e) { + self.sync(); + K(window).bind('unload', function () { + self.edit.textarea.remove(); + }); + }); + var resetBtn = K('[type="reset"]', el); + resetBtn.click(function () { + self.html(self.initContent); + self.cmd.selection(); + }); + self.beforeRemove(function () { + el.unbind(); + resetBtn.unbind(); + }); + } + }); + self.clickToolbar('source', function () { + if (self.edit.designMode) { + self.toolbar.disableAll(true); + self.edit.design(false); + self.toolbar.select('source'); + } else { + self.toolbar.disableAll(false); + self.edit.design(true); + self.toolbar.unselect('source'); + if (_GECKO) { + setTimeout(function () { + self.cmd.selection(); + }, 0); + } else { + self.cmd.selection(); + } + } + self.designMode = self.edit.designMode; + }); + self.afterCreate(function () { + if (!self.designMode) { + self.toolbar.disableAll(true).select('source'); + } + }); + self.clickToolbar('fullscreen', function () { + self.fullscreen(); + }); + if (self.fullscreenShortcut) { + var loaded = false; + self.afterCreate(function () { + K(self.edit.doc, self.edit.textarea).keyup(function (e) { + if (e.which == 27) { + setTimeout(function () { + self.fullscreen(); + }, 0); + } + }); + if (loaded) { + if (_IE && !self.designMode) { + return; + } + self.focus(); + } + if (!loaded) { + loaded = true; + } + }); + } + _each('undo,redo'.split(','), function (i, name) { + if (shortcutKeys[name]) { + self.afterCreate(function () { + _ctrl(this.edit.doc, shortcutKeys[name], function () { + self.clickToolbar(name); + }); + }); + } + self.clickToolbar(name, function () { + self[name](); + }); + }); + self.clickToolbar('formatblock', function () { + var blocks = self.lang('formatblock.formatBlock'), + heights = { + h1: 28, + h2: 24, + h3: 18, + H4: 14, + p: 12 + }, + curVal = self.cmd.val('formatblock'), + menu = self.createMenu({ + name: 'formatblock', + width: self.langType == 'en' ? 200 : 150 + }); + _each(blocks, function (key, val) { + var style = 'font-size:' + heights[key] + 'px;'; + if (key.charAt(0) === 'h') { + style += 'font-weight:bold;'; + } + menu.addItem({ + title: '<span style="' + style + '" unselectable="on">' + val + '</span>', + height: heights[key] + 12, + checked: (curVal === key || curVal === val), + click: function () { + self.select().exec('formatblock', '<' + key + '>').hideMenu(); + } + }); + }); + }); + self.clickToolbar('fontname', function () { + var curVal = self.cmd.val('fontname'), + menu = self.createMenu({ + name: 'fontname', + width: 150 + }); + console + _each(self.lang('fontname.fontName'), function (key, val) { + menu.addItem({ + title: '<span style="font-family: ' + key + ';" unselectable="on">' + val + '</span>', + checked: (curVal === key.toLowerCase() || curVal === val.toLowerCase()), + click: function () { + self.exec('fontname', key).hideMenu(); + } + }); + }); + }); + self.clickToolbar('fontsize', function () { + var curVal = self.cmd.val('fontsize'), + menu = self.createMenu({ + name: 'fontsize', + width: 150 + }); + _each(self.fontSizeTable, function (i, val) { + menu.addItem({ + title: '<span style="font-size:' + val + ';" unselectable="on">' + val + '</span>', + height: _removeUnit(val) + 12, + checked: curVal === val, + click: function () { + self.exec('fontsize', val).hideMenu(); + } + }); + }); + }); + _each('forecolor,hilitecolor'.split(','), function (i, name) { + self.clickToolbar(name, function () { + self.createMenu({ + name: name, + selectedColor: self.cmd.val(name) || 'default', + colors: self.colorTable, + click: function (color) { + self.exec(name, color).hideMenu(); + } + }); + }); + }); + _each(('cut,copy,paste').split(','), function (i, name) { + self.clickToolbar(name, function () { + self.focus(); + try { + self.exec(name, null); + } catch (e) { + K.options.errorMsgHandler(self.lang(name + 'Error'), "error"); + } + }); + }); + self.clickToolbar('about', function () { + var html = '<div style="margin:20px;">' + + '<div>NKeditor ' + _VERSION + '</div>' + + '<div>Forked from KindEditor By BlackFox. <a href="http://git.oschina.net/blackfox/kindeditor">Git项目地址</a>.</div>' + + '</div>'; + self.createDialog({ + name: 'about', + width: 350, + title: self.lang('about'), + body: html + }); + }); + self.plugin.getSelectedLink = function () { + return self.cmd.commonAncestor('a'); + }; + self.plugin.getSelectedImage = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return !/^ke-\w+$/i.test(img[0].className); + }); + }; + self.plugin.getSelectedFlash = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-flash'; + }); + }; + self.plugin.getSelectedMedia = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-media' || img[0].className == 'ke-rm'; + }); + }; + self.plugin.getSelectedAnchor = function () { + return _getImageFromRange(self.edit.cmd.range, function (img) { + return img[0].className == 'ke-anchor'; + }); + }; + _each('link,image,flash,media,anchor'.split(','), function (i, name) { + var uName = name.charAt(0).toUpperCase() + name.substr(1); + _each('edit,delete'.split(','), function (j, val) { + self.addContextmenu({ + title: self.lang(val + uName), + click: function () { + self.loadPlugin(name, function () { + self.plugin[name][val](); + self.hideMenu(); + }); + }, + cond: self.plugin['getSelected' + uName], + width: 150, + iconClass: val == 'edit' ? 'ke-icon-' + name : undefined + }); + }); + self.addContextmenu({title: '-'}); + }); + self.plugin.getSelectedTable = function () { + return self.cmd.commonAncestor('table'); + }; + self.plugin.getSelectedRow = function () { + return self.cmd.commonAncestor('tr'); + }; + self.plugin.getSelectedCell = function () { + return self.cmd.commonAncestor('td'); + }; + _each(('prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,' + + 'rowsplit,colsplit,coldelete,rowdelete,insert,delete').split(','), function (i, val) { + var cond = _inArray(val, ['prop', 'delete']) < 0 ? self.plugin.getSelectedCell : self.plugin.getSelectedTable; + self.addContextmenu({ + title: self.lang('table' + val), + click: function () { + self.loadPlugin('table', function () { + self.plugin.table[val](); + self.hideMenu(); + }); + }, + cond: cond, + width: 170, + iconClass: 'ke-icon-table' + val + }); + }); + self.addContextmenu({title: '-'}); + _each(('selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,' + + 'insertunorderedlist,indent,outdent,subscript,superscript,hr,print,' + + 'bold,italic,underline,strikethrough,removeformat,unlink').split(','), function (i, name) { + if (shortcutKeys[name]) { + self.afterCreate(function () { + _ctrl(this.edit.doc, shortcutKeys[name], function () { + self.cmd.selection(); + self.clickToolbar(name); + }); + }); + } + self.clickToolbar(name, function () { + self.focus().exec(name, null); + }); + }); + self.afterCreate(function () { + var doc = self.edit.doc, cmd, bookmark, div, + cls = '__kindeditor_paste__', pasting = false; + + function movePastedData() { + cmd.range.moveToBookmark(bookmark); + cmd.select(); + if (_WEBKIT) { + K('div.' + cls, div).each(function () { + K(this).after('<br />').remove(true); + }); + K('span.Apple-style-span', div).remove(true); + K('span.Apple-tab-span', div).remove(true); + K('span[style]', div).each(function () { + if (K(this).css('white-space') == 'nowrap') { + K(this).remove(true); + } + }); + K('meta', div).remove(); + } + var html = div[0].innerHTML; + div.remove(); + if (html === '') { + return; + } + if (_WEBKIT) { + html = html.replace(/(<br>)\1/ig, '$1'); + } + if (self.pasteType === 2) { + html = html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/ig, ''); + if (/schemas-microsoft-com|worddocument|mso-\w+/i.test(html)) { + html = _clearMsWord(html, self.filterMode ? self.htmlTags : K.options.htmlTags); + } else { + html = _formatHtml(html, self.filterMode ? self.htmlTags : null); + html = self.beforeSetHtml(html); + } + } + if (self.pasteType === 1) { + html = html.replace(/ /ig, ' '); + html = html.replace(/\n\s*\n/g, '\n'); + html = html.replace(/<br[^>]*>/ig, '\n'); + html = html.replace(/<\/p><p[^>]*>/ig, '\n'); + html = html.replace(/<[^>]+>/g, ''); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + if (/\n/.test(html)) { + html = html.replace(/^/, '<p>').replace(/$/, '<br /></p>').replace(/\n/g, '<br /></p><p>'); + } + } else { + html = html.replace(/\n/g, '<br />$&'); + } + } + self.insertHtml(html, true); + } + + K(doc.body).bind('paste', function (e) { + if (self.pasteType === 0) { + e.stop(); + return; + } + if (pasting) { + return; + } + pasting = true; + K('div.' + cls, doc).remove(); + cmd = self.cmd.selection(); + bookmark = cmd.range.createBookmark(); + div = K('<div class="' + cls + '"></div>', doc).css({ + position: 'absolute', + width: '1px', + height: '1px', + overflow: 'hidden', + left: '-1981px', + top: K(bookmark.start).pos().y + 'px', + 'white-space': 'nowrap' + }); + K(doc.body).append(div); + if (_IE) { + var rng = cmd.range.get(true); + rng.moveToElementText(div[0]); + rng.select(); + rng.execCommand('paste'); + e.preventDefault(); + } else { + cmd.range.selectNodeContents(div[0]); + cmd.select(); + div[0].tabIndex = -1; + div[0].focus(); + } + setTimeout(function () { + movePastedData(); + pasting = false; + }, 0); + }); + }); + self.beforeGetHtml(function (html) { + if (_IE && _V <= 8) { + html = html.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, tag) { + return unescape(tag); + }); + html = html.replace(/(<input)((?:\s+[^>]*)?>)/ig, function ($0, $1, $2) { + if (!/\s+type="[^"]+"/i.test($0)) { + return $1 + ' type="text"' + $2; + } + return $0; + }); + } + return html.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/ig, function ($0, $1, $2, $3) { + return $1 + _unescape($2).replace(/\s+/g, ' ') + $3; + }) + .replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/ig, function (full) { + var imgAttrs = _getAttrList(full); + var styles = _getCssList(imgAttrs.style || ''); + var attrs = _mediaAttrs(imgAttrs['data-ke-tag']); + var width = _undef(styles.width, ''); + var height = _undef(styles.height, ''); + if (/px/i.test(width)) { + width = _removeUnit(width); + } + if (/px/i.test(height)) { + height = _removeUnit(height); + } + attrs.width = _undef(imgAttrs.width, width); + attrs.height = _undef(imgAttrs.height, height); + return _mediaEmbed(attrs); + }) + .replace(/<img[^>]*class="?ke-anchor"?[^>]*>/ig, function (full) { + var imgAttrs = _getAttrList(full); + return '<a name="' + unescape(imgAttrs['data-ke-name']) + '"></a>'; + }) + .replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, attr, code) { + return '<script' + unescape(attr) + '>' + unescape(code) + '</script>'; + }) + .replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/ig, function (full, attr, code) { + return '<noscript' + unescape(attr) + '>' + unescape(code) + '</noscript>'; + }) + .replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/ig, function (full, start, src, end) { + full = full.replace(/(\s+(?:href|src)=")[^"]*(")/i, function ($0, $1, $2) { + return $1 + _unescape(src) + $2; + }); + full = full.replace(/\s+data-ke-src="[^"]*"/i, ''); + return full; + }) + .replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/ig, function (full, start, end) { + return start + end; + }); + }); + self.beforeSetHtml(function (html) { + if (_IE && _V <= 8) { + html = html.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/ig, function (full) { + var attrs = _getAttrList(full); + var styles = _getCssList(attrs.style || ''); + if (styles.display == 'none') { + return '<div class="ke-display-none" data-ke-input-tag="' + escape(full) + '"></div>'; + } + return full; + }); + } + return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/ig, function (full) { + var attrs = _getAttrList(full); + attrs.src = _undef(attrs.src, ''); + attrs.width = _undef(attrs.width, 0); + attrs.height = _undef(attrs.height, 0); + return _mediaImg(self.themesPath + 'common/blank.gif', attrs); + }) + .replace(/<video[^>]*type="([^"]+)"[^>]*>(?:<\/video>)?/ig, function (full) { + var attrs = _getAttrList(full); + attrs.src = _undef(attrs.src, ''); + attrs.width = _undef(attrs.width, 0); + attrs.height = _undef(attrs.height, 0); + return _mediaImg(self.themesPath + 'common/blank.gif', attrs); + }) + .replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/ig, function (full) { + var attrs = _getAttrList(full); + if (attrs.href !== undefined) { + return full; + } + return '<img class="ke-anchor" src="' + self.themesPath + 'common/anchor.gif" data-ke-name="' + escape(attrs.name) + '" />'; + }) + .replace(/<script([^>]*)>([\s\S]*?)<\/script>/ig, function (full, attr, code) { + return '<div class="ke-script" data-ke-script-attr="' + escape(attr) + '">' + escape(code) + '</div>'; + }) + .replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/ig, function (full, attr, code) { + return '<div class="ke-noscript" data-ke-noscript-attr="' + escape(attr) + '">' + escape(code) + '</div>'; + }) + .replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/ig, function (full, start, key, src, end) { + if (full.match(/\sdata-ke-src="[^"]*"/i)) { + return full; + } + full = start + key + '="' + src + '"' + ' data-ke-src="' + _escape(src) + '"' + end; + return full; + }) + .replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/ig, function (full, start, end) { + return start + 'data-ke-' + end; + }) + .replace(/<table[^>]*\s+border="0"[^>]*>/ig, function (full) { + if (full.indexOf('ke-zeroborder') >= 0) { + return full; + } + return _addClassToTag(full, 'ke-zeroborder'); + }); + }); + }); + + +})(window); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.lang({ + source: 'HTML代码', + preview: '预览', + undo: '后退(Ctrl+Z)', + redo: '前进(Ctrl+Y)', + cut: '剪切(Ctrl+X)', + copy: '复制(Ctrl+C)', + paste: '粘贴(Ctrl+V)', + plainpaste: '粘贴为无格式文本', + wordpaste: '从Word粘贴', + selectall: '全选(Ctrl+A)', + justifyleft: '左对齐', + justifycenter: '居中', + justifyright: '右对齐', + justifyfull: '两端对齐', + insertorderedlist: '编号', + insertunorderedlist: '项目符号', + indent: '增加缩进', + outdent: '减少缩进', + subscript: '下标', + superscript: '上标', + formatblock: '段落', + fontname: '字体', + fontsize: '文字大小', + forecolor: '文字颜色', + hilitecolor: '文字背景', + bold: '粗体(Ctrl+B)', + italic: '斜体(Ctrl+I)', + underline: '下划线(Ctrl+U)', + strikethrough: '删除线', + removeformat: '删除格式', + image: '图片', + multiimage: '批量图片上传', + graft: '涂鸦', + flash: 'Flash', + media: '视音频', + table: '表格', + tablecell: '单元格', + hr: '插入横线', + emoticons: '插入表情', + link: '超级链接', + unlink: '取消超级链接', + fullscreen: '全屏显示', + about: '关于', + print: '打印(Ctrl+P)', + filemanager: '文件空间', + code: '插入程序代码', + quote: '插入引用', + map: 'Google地图', + baidumap: '百度地图', + lineheight: '行距', + clearhtml: '清理HTML代码', + pagebreak: '插入分页符', + quickformat: '一键排版', + insertfile: '插入文件', + template: '插入模板', + anchor: '锚点', + yes: '确定', + no: '取消', + close: '关闭', + editImage: '图片属性', + deleteImage: '删除图片', + editFlash: 'Flash属性', + deleteFlash: '删除Flash', + editMedia: '视音频属性', + deleteMedia: '删除视音频', + editLink: '超级链接属性', + deleteLink: '取消超级链接', + editAnchor: '锚点属性', + deleteAnchor: '删除锚点', + tableprop: '表格属性', + tablecellprop: '单元格属性', + tableinsert: '插入表格', + tabledelete: '删除表格', + tablecolinsertleft: '左侧插入列', + tablecolinsertright: '右侧插入列', + tablerowinsertabove: '上方插入行', + tablerowinsertbelow: '下方插入行', + tablerowmerge: '向下合并单元格', + tablecolmerge: '向右合并单元格', + tablerowsplit: '拆分行', + tablecolsplit: '拆分列', + tablecoldelete: '删除列', + tablerowdelete: '删除行', + noColor: '无颜色', + pleaseSelectFile: '请选择文件。', + invalidImg: "请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。", + invalidMedia: "请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。", + invalidWidth: "宽度必须为数字。", + invalidHeight: "高度必须为数字。", + invalidBorder: "边框必须为数字。", + invalidUrl: "请输入有效的URL地址。", + invalidRows: '行数为必选项,只允许输入大于0的数字。', + invalidCols: '列数为必选项,只允许输入大于0的数字。', + invalidPadding: '边距必须为数字。', + invalidSpacing: '间距必须为数字。', + invalidJson: '服务器发生故障。', + uploadSuccess: '上传成功。', + cutError: '您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。', + copyError: '您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。', + pasteError: '您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。', + ajaxLoading: '加载中,请稍候 ...', + uploadLoading: '上传中,请稍候 ...', + uploadError: '上传错误', + 'plainpaste.comment': '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'wordpaste.comment': '请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。', + 'code.pleaseInput': '请输入程序代码。', + 'link.url': 'URL', + 'link.linkType': '打开类型', + 'link.newWindow': '新窗口', + 'link.selfWindow': '当前窗口', + 'flash.url': 'URL', + 'flash.width': '宽度', + 'flash.height': '高度', + 'flash.upload': '上传', + 'flash.viewServer': '文件空间', + 'media.url': 'URL', + 'media.width': '宽度', + 'media.height': '高度', + 'media.autostart': '自动播放', + 'media.upload': '上传', + 'media.viewServer': '文件空间', + 'image.remoteImage': '网络图片', + 'image.localImage': '本地上传', + 'image.remoteUrl': '图片地址', + 'image.localUrl': '上传文件', + 'image.size': '图片大小', + 'image.width': '宽', + 'image.height': '高', + 'image.resetSize': '重置大小', + 'image.align': '对齐方式', + 'image.defaultAlign': '默认方式', + 'image.leftAlign': '左对齐', + 'image.rightAlign': '右对齐', + 'image.imgTitle': '图片说明', + 'image.upload': '浏览...', + 'image.viewServer': '图片空间', + 'multiimage.title': '多图上传', + 'multiimage.uploadDesc': '共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.', + 'multiimage.startUpload': '开始上传', + 'multiimage.noListUrl': '无法获取图片,请先配置 fileManagerJson.', + 'multiimage.noSearchUrl': '无法进行图片搜索,请先配置 imageSearchJson.', + 'multiimage.noDataText': '(⊙o⊙)亲,没有多数据了。', + 'multiimage.closeText': '关闭对话框', + 'multiimage.confirmBtnText': '确定', + 'multiimage.cancelBtnText': '取消', + 'multiimage.loadMoreData': '往下拉动滚动条可以加载更多数据.', + 'multiimage.depJQueryError': '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'multiimage.localUpload': '本地上传', + 'multiimage.fileServer': '文件服务器', + 'multiimage.imgSearch': '图片搜索', + 'multiimage.selectFile': '点击选择图片', + 'multiimage.continueAdd': '继续添加', + 'multiimage.searchBtn': '搜索一下', + 'multiimage.searchPlaceholder': '请输入搜索关键词', + 'multiimage.searchClear': '清空搜索', + 'multiimage.noFileAdded': '请至少添加一个文件!', + 'multiimage.uploading': '正在上传', + 'multiimage.fileNotUpload': '您还有文件没有上传!', + 'multiimage.uploadLimit': '您本次最多上传 <%=uploadLimit%> 个文件.', + 'multiimage.sizeLimit': '文件大小不能超过 <%=sizeLimit%> KB.', + 'multiimage.invalidExt': '非法的文件后缀 <%=invalidExt%>.', + 'multiimage.remove': '删除', + 'multiimage.rotateRight': '向右旋转', + 'multiimage.rotateLeft': '向左旋转', + 'multiimage.uploadFail': '发生异常,上传失败!', + 'multiimage.noFileSelected': '请至少选择一个文件或一张图片.', + 'filemanager.noDataText': '(⊙o⊙)亲,没有多数据了。', + 'filemanager.title': '文件服务器', + 'filemanager.noListUrl': '无法获取图片,请先配置 fileManagerJson.', + 'filemanager.closeText': '关闭对话框', + 'filemanager.confirmBtnText': '确定', + 'filemanager.cancelBtnText': '取消', + 'filemanager.loadMoreData': '往下拉动滚动条可以加载更多数据.', + 'filemanager.depJQueryError': '文件管理插件依赖 jQuery, 请先引入 jQuery.', + 'filemanager.fileType': '类型', + 'graft.btnText': '保存并插入涂鸦', + 'graft.uploadSuccess': '涂鸦上传成功', + 'graft.uploadFaild': '涂鸦上传失败', + 'graft.empty': '您没有在画布上绘制任何图像', + 'insertfile.url': 'URL', + 'insertfile.title': '文件说明', + 'insertfile.upload': '上传', + 'insertfile.viewServer': '文件空间', + 'table.cells': '单元格数', + 'table.rows': '行数', + 'table.cols': '列数', + 'table.size': '大小', + 'table.width': '宽度', + 'table.height': '高度', + 'table.percent': '%', + 'table.px': 'px', + 'table.space': '边距间距', + 'table.padding': '边距', + 'table.spacing': '间距', + 'table.align': '对齐方式', + 'table.textAlign': '水平对齐', + 'table.verticalAlign': '垂直对齐', + 'table.alignDefault': '默认', + 'table.alignLeft': '左对齐', + 'table.alignCenter': '居中', + 'table.alignRight': '右对齐', + 'table.alignTop': '顶部', + 'table.alignMiddle': '中部', + 'table.alignBottom': '底部', + 'table.alignBaseline': '基线', + 'table.border': '边框', + 'table.borderWidth': '宽度', + 'table.borderColor': '颜色', + 'table.backgroundColor': '背景颜色', + 'map.address': '地址: ', + 'map.search': '搜索', + 'baidumap.address': '地址: ', + 'baidumap.search': '搜索', + 'baidumap.insertDynamicMap': '插入动态地图', + 'anchor.name': '锚点名称', + 'formatblock.formatBlock': { + h1: '标题 1', + h2: '标题 2', + h3: '标题 3', + h4: '标题 4', + p: '正 文' + }, + 'fontname.fontName': { + 'SimSun': '宋体', + 'NSimSun': '新宋体', + 'FangSong': '仿宋', + 'KaiTi': '楷体', + 'SimHei': '黑体', + 'Microsoft YaHei': '微软雅黑', + 'Arial': 'Arial', + 'Arial Black': 'Arial Black', + 'Times New Roman': 'Times New Roman', + 'Courier New': 'Courier New', + 'Tahoma': 'Tahoma', + 'Verdana': 'Verdana' + }, + 'lineheight.lineHeight': [ + {'1': '单倍行距'}, + {'1.5': '1.5倍行距'}, + {'2': '2倍行距'}, + {'2.5': '2.5倍行距'}, + {'3': '3倍行距'} + ], + 'template.selectTemplate': '可选模板', + 'template.replaceContent': '替换当前内容', + 'template.fileList': { + '1.html': '图片和文字', + '2.html': '表格', + '3.html': '项目编号' + } +}, 'zh-CN'); +KindEditor.options.langType = 'zh-CN'; + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('anchor', function (K) { + var self = this, name = 'anchor', lang = self.lang(name + '.'); + self.plugin.anchor = { + edit: function () { + var html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keName">' + lang.name + ':</label>', + '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />', + '</div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 300, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus(); + } + } + }); + var div = dialog.div, + nameBox = K('input[name="name"]', div); + var img = self.plugin.getSelectedAnchor(); + if (img) { + nameBox.val(unescape(img.attr('data-ke-name'))); + } + nameBox[0].focus(); + nameBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedAnchor().remove(); + } + }; + self.clickToolbar(name, self.plugin.anchor.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('autoheight', function (K) { + var self = this; + if (!self.autoHeightMode) { + return; + } + var minHeight; + + function hideScroll() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe[0].scroll = 'no'; + body.style.overflowY = 'hidden'; + } + + function resetHeight() { + if (self.fullscreenMode) { + return; + } + var edit = self.edit; + var body = edit.doc.body; + edit.iframe.height(minHeight); + self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); + } + + function init() { + minHeight = K.removeUnit(self.height); + self.edit.afterChange(resetHeight); + if (!self.fullscreenMode) { + hideScroll(); + } + resetHeight(); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); +/* +* 如何实现真正的自动高度? +* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 +* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 +* 由此就实现了真正的自动高度 +* 测试:chrome、firefox、IE9、IE8 +* */ + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('baidumap', function (K) { + var self = this, name = 'baidumap', lang = self.lang(name + '.'); + var mapWidth = K.undef(self.mapWidth, 558); + var mapHeight = K.undef(self.mapHeight, 360); + self.clickToolbar(name, function () { + var html = ['<div class="ke-dialog-content-inner" style="padding-top: 0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header">' + lang.address, + '<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span>', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" style="line-height:22px;padding:0 10px;" />', + '</span>', + '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>', + '</div>', + '</div>', + '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: mapWidth + 42, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var map = win.map; + var centerObj = map.getCenter(); + var center = centerObj.lng + ',' + centerObj.lat; + var zoom = map.getZoom(); + var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'https://api.map.baidu.com/staticimage', + '?center=' + encodeURIComponent(center), + '&zoom=' + encodeURIComponent(zoom), + '&width=' + mapWidth, + '&height=' + mapHeight, + '&markers=' + encodeURIComponent(center), + '&markerStyles=' + encodeURIComponent('l,A')].join(''); + if (checkbox[0].checked) { + self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>'); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove: function () { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>'); + + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + + iframe.bind('load', function () { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + searchBtn.click(function () { + win.search(addressBox.val()); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + + +KindEditor.plugin('map', function (K) { + var self = this, name = 'map', lang = self.lang(name + '.'); + self.clickToolbar(name, function () { + var html = ['<div style="padding:10px 20px;">', + '<div class="ke-dialog-row">', + lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />', + '</span>', + '</div>', + '<div class="ke-map" style="width:558px;height:360px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 600, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var geocoder = win.geocoder, + map = win.map, + center = map.getCenter().lat() + ',' + map.getCenter().lng(), + zoom = map.getZoom(), + maptype = map.getMapTypeId(), + url = 'https://maps.googleapis.com/maps/api/staticmap'; + url += '?center=' + encodeURIComponent(center); + url += '&zoom=' + encodeURIComponent(zoom); + url += '&size=558x360'; + url += '&maptype=' + encodeURIComponent(maptype); + url += '&markers=' + encodeURIComponent(center); + url += '&language=' + self.langType; + url += '&sensor=false'; + self.exec('insertimage', url).hideDialog().focus(); + } + }, + beforeRemove: function () { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + win, doc; + var iframeHtml = ['<!doctype html><html><head>', + '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />', + '<style>', + ' html { height: 100% }', + ' body { height: 100%; margin: 0; padding: 0; background-color: #FFF }', + ' #map_canvas { height: 100% }', + '</style>', + '<script src="https://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>', + '<script>', + 'var map, geocoder;', + 'function initialize() {', + ' var latlng = new google.maps.LatLng(31.230393, 121.473704);', + ' var options = {', + ' zoom: 11,', + ' center: latlng,', + ' disableDefaultUI: true,', + ' panControl: true,', + ' zoomControl: true,', + ' mapTypeControl: true,', + ' scaleControl: true,', + ' streetViewControl: false,', + ' overviewMapControl: true,', + ' mapTypeId: google.maps.MapTypeId.ROADMAP', + ' };', + ' map = new google.maps.Map(document.getElementById("map_canvas"), options);', + ' geocoder = new google.maps.Geocoder();', + ' geocoder.geocode({latLng: latlng}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' if (results[3]) {', + ' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;', + ' }', + ' }', + ' });', + '}', + 'function search(address) {', + ' if (!map) return;', + ' geocoder.geocode({address : address}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' map.setZoom(11);', + ' map.setCenter(results[0].geometry.location);', + ' var marker = new google.maps.Marker({', + ' map: map,', + ' position: results[0].geometry.location', + ' });', + ' } else {', + ' alert("Invalid address: " + address);', + ' }', + ' });', + '}', + '</script>', + '</head>', + '<body onload="initialize();">', + '<div id="map_canvas" style="width:100%; height:100%"></div>', + '</body></html>'].join('\n'); + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>'); + + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + + iframe.bind('load', function () { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + searchBtn.click(function () { + win.search(addressBox.val()); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('clearhtml', function (K) { + var self = this, name = 'clearhtml'; + self.clickToolbar(name, function () { + self.focus(); + var html = self.html(); + html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, ''); + html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, ''); + html = K.formatHtml(html, { + a: ['href', 'target'], + embed: ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess', 'controls'], + img: ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], + table: ['border'], + 'td,th': ['rowspan', 'colspan'], + 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6': [] + }); + self.html(html); + self.cmd.selection(true); + self.addBookmark(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + + + +KindEditor.plugin('code', function (K) { + var self = this, name = 'code'; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + html = ['<div style="margin: 0px 20px;">', + '<div class="ke-dialog-row">', + '<select class="ke-select" style="margin-bottom: 5px;">', + '<option value="javascript">JavaScript</option>', + '<option value="html">HTML</option>', + '<option value="css">CSS</option>', + '<option value="php">PHP</option>', + '<option value="perl">Perl</option>', + '<option value="python">Python</option>', + '<option value="ruby">Ruby</option>', + '<option value="java">Java</option>', + '<option value="go">Go</option>', + '<option value="asp">ASP/VB</option>', + '<option value="csharp">C#</option>', + '<option value="cpp">C/C++</option>', + '<option value="cs">C#</option>', + '<option value="bash">Shell</option>', + '<option value="sql">SQL</option>', + '<option value="markup">Other</option>', + '</select>', + '</div>', + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>', + '</div>'].join(''), + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '<pre class="' + cls + '"><code>' + K.escape(code) + '</code></pre> <br/>'; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('emoticons', function (K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function () { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'), + elements = [], + menu = self.createMenu({ + name: name, + beforeRemove: function () { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('<div class="ke-preview"></div>').css('right', 0); + previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />'); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function () { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function () { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function () { + K(this).removeClass('ke-on'); + }); + cell.click(function (e) { + self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus(); + e.stop(); + }); + } + + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function () { + previewDiv.show('block'); + }); + K(table).mouseout(function () { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('<span class="ke-img"></span>') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + + function removeEvent() { + K.each(elements, function () { + this.unbind(); + }); + } + + var pageDiv; + + function bindPageEvent(el, pageNum) { + el.click(function (e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + + function createPageTable(currentPageNum) { + pageDiv = K('<div class="ke-page"></div>'); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('<a href="javascript:;">[' + pageNum + ']</a>'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + + createPageTable(currentPageNum); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('flash', function (K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit: function () { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType('.swf'), + width: width, + height: height, + quality: 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + if (allowFlashUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + extraParams: extraParams, + url: K.addParam(uploadJson, 'fileType=flash'), + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'flash', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedFlash().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('image', function (K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + self.plugin.imageDialog = function (options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for (var k in extraParams) { + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="tabs"></div>', + '<div class="tab1" style="display:none;">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteUrl" class="row-left">' + lang.remoteUrl + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix ">', + '<label for="remoteWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">' + lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> ' + + '<img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" /></span>', + ' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> ' + + '<img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" /></span>', + ' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> ' + + '<img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" /></span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteTitle" class="row-left">' + lang.imgTitle + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />', + '</div>', + '</div>', + '</div>', + '<div class="tab2" style="display:none;">', + '<iframe name="' + target + '" style="display:none;"></iframe>', + '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'fileType=image') + '">', + '<div class="ke-dialog-row ke-clearfix">', + hiddenElements.join(''), + '<label class="row-left">' + lang.localUrl + ':</label>', + '<div class="row-right">', + '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />', + '</div>', + '</div>', + '</form>', + '</div>', + '</div>' + ].join(''); + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name: name, + width: dialogWidth, + height: dialogHeight, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + if (dialog.isLoading) { + return; + } + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function () { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove: function () { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src: K('.tabs', div), + afterSelect: function (i) { + } + }); + tabs.add({ + title: lang.remoteImage, + panel: K('.tab1', div) + }); + tabs.add({ + title: lang.localImage, + panel: K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + var callback = function (data) { + if (data.code == "000") { + dialog.hideLoading(); + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + form: K('.ke-form', div), + target: target, + width: 60, + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'image', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + + refreshBtn.click(function (e) { + var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({ + position: 'absolute', + visibility: 'hidden', + top: 0, + left: '-1000px' + }); + tempImg.bind('load', function () { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function (e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function (e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function () { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit: function () { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl: img ? img.attr('data-ke-src') : 'http://', + imageWidth: img ? img.width() : '', + imageHeight: img ? img.height() : '', + imageTitle: img ? img.attr('title') : '', + imageAlign: img ? img.attr('align') : '', + showRemote: allowImageRemote, + showLocal: allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn: function (url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete': function () { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('insertfile', function (K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function (options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keTitle" class="row-left">' + lang.title + ':</label>', + '<div class="row-right">', + '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>', + '</div>', + '</div>', + '</form>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + if (allowFileUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + url: K.addParam(uploadJson, 'fileType=file'), + extraParams: extraParams, + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + viewType: 'LIST', + dirName: 'file', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function () { + self.plugin.fileDialog({ + clickFn: function (url, title) { + var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>'; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('lineheight', function (K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function () { + var curVal = '', commonNode = self.cmd.commonNode({'*': '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name: name, + width: 150 + }); + K.each(lang.lineHeight, function (i, row) { + K.each(row, function (key, val) { + menu.addItem({ + title: val, + checked: curVal === key, + click: function () { + self.cmd.toggle('<span style="line-height:' + key + ';"></span>', { + span: '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('link', function (K) { + var self = this, name = 'link'; + self.plugin.link = { + edit: function () { + var lang = self.lang(name + '.'), + html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix"">', + '<label for="keType" class="row-left">' + lang.linkType + ':</label>', + '<div class="row-right">', + '<select id="keType" class="ke-select" name="type"></select>', + '</div>', + '</div>', + '</div>'].join(""), + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('media', function (K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.media = { + edit: function () { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '<div style="margin-top:5px;color:#aaa;">支持优酷、爱奇艺、腾讯视频等视频网站【<span style="color:green">通用代码</span>】', + '</div>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAutostart" class="row-left">' + lang.autostart + ':</label>', + '<div class="row-right">', + '<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name: name, + width: 450, + height: 260, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + var match = url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/); + if (!match) { + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!match) { + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType(url), + width: width, + height: height, + autostart: autostartBox[0].checked ? 'true' : 'false', + loop: 'true' + }); + } else { + var html = '<iframe src="' + match[3] + '" frameborder="0" style="width:' + width + 'px;height:' + height + 'px;"></iframe>'; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + if (allowMediaUpload) { + var callback = function (data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + //K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }; + var uploadbutton = K.uploadbutton({ + button: K('.ke-upload-button', div)[0], + fieldName: filePostName, + extraParams: extraParams, + url: K.addParam(uploadJson, 'fileType=media'), + beforeUpload: function () { + if (typeof self.beforeUpload == 'function') { + self.beforeUpload.call(this, callback); + return false; + } else { + return true; + } + }, + afterUpload: function (data) { + callback(data); + }, + afterError: function (html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function (e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function (e) { + self.loadPlugin('filemanager', function () { + self.plugin.filemanagerDialog({ + dirName: 'media', + clickFn: function (url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete': function () { + self.plugin.getSelectedMedia().remove(); + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); + +KindEditor.plugin('multiimage', function (K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath + name + "/BUpload.js"); + K.loadStyle(K.options.pluginsPath + name + "/css/upload.css"); + } + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x: 0, + y: 0, + cls: 'ke-dialog-lock', + width: docWidth, + height: docHeight + }); + } + self.plugin.multiImageDialog = function (options) { + + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + var dialog = new BUpload({ + src: filePostName, + upload_url: uploadJson, + list_url: fileManagerJson, + max_filesize: imageSizeLimit, + max_filenum: imageUploadLimit, + ext_allow: imageFileTypes, + lang: lang, + top: self.dialogOffset, + fileType: "image", + errorHandler: K.options.errorMsgHandler, + callback: function (data) { + clickFn.call(this, data); + }, + close: function () { + locker.remove(); + } + }); + return dialog; + }; + self.clickToolbar(name, function () { + self.plugin.multiImageDialog({ + clickFn: function (urlList) { + if (urlList.length === 0) { + return; + } + K.each(urlList, function (i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + setTimeout(function () { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); + + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('graft', function (K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath + "graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath + "graft/scrawl.js"); + } + self.plugin.graftDialog = function (options) { + var clickFn = options.clickFn; + var html = [ + '<div class="scrawl-main" id="scrawl-main">', + '<div class="hot">', + '<div class="drawBoard border_style">', + '<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>', + '<div class="picBoard" id="picBoard" style=""></div>', + '</div>', + '<div class="operateBar">', + '<button id="J_prevStep" class="prevStep" title="上一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_nextStep" class="nextStep" title="下一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_clearBoard" class="clearBoard" title="清空">', + '<em class="icon"></em>', + '</button>', + '</div>', + '</div>', + '<div class="drawToolbar border_style">', + '<div class="colorBar">', + '<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>', + '<span data-color="#003366" style="background:#003366;"></span>', + '<span data-color="#993333" style="background:#993333;"></span>', + '<span data-color="#FF9900" style="background:#FF9900;"></span>', + '<span data-color="#0000CC" style="background:#0000CC;"></span>', + '<span data-color="#CC3333" style="background:#CC3333;"></span>', + '<span data-color="#F4D03F" style="background:#641E16;"></span>', + '<span data-color="#4A235A" style="background:#4A235A;"></span>', + '<span data-color="#009966" style="background:#009966;"></span>', + '<span data-color="#ffff00" style="background:#ffff00;"></span>', + '<span data-color="#7D6608" style="background:#7D6608;"></span>', + '<span data-color="#FF33CC" style="background:#FF33CC;"></span>', + '<span data-color="#990066" style="background:#990066;"></span>', + '<span data-color="#ffffff" style="background:#ffffff;"></span>', + '<span data-color="#9bbb59" style="background:#9bbb59;"></span>', + '<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>', + '<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>', + '<span data-color="#CC99CC" style="background:#CC99CC;"></span>', + '</div>', + '<div class="sectionBar">', + '<em class="brushIcon"></em>', + '<a href="javascript:void(0)" class="brush-size size1">1</a>', + '<a href="javascript:void(0)" class="brush-size size2">3</a>', + '<a href="javascript:void(0)" class="brush-size size3">5</a>', + '<a href="javascript:void(0)" class="brush-size size4">7</a>', + '</div>', + '<div class="sectionBar">', + '<em class="eraserIcon"></em>', + '<a href="javascript:void(0)" class="eraser-size size1">5</a>', + '<a href="javascript:void(0)" class="eraser-size size2">10</a>', + '<a href="javascript:void(0)" class="eraser-size size3">15</a>', + '<a href="javascript:void(0)" class="eraser-size size4">20</a>', + '</div>', + '<div class="sectionBar">', + '<em class="blurIcon"></em>', + '<a href="javascript:void(0)" class="blur-size size1">2</a>', + '<a href="javascript:void(0)" class="blur-size size2">4</a>', + '<a href="javascript:void(0)" class="blur-size size3">6</a>', + '<a href="javascript:void(0)" class="blur-size size4">8</a>', + '</div>', + '<div class="sectionBar">', + '<span id="clearSetting" class="clearSetting">', + '<em class="icon"></em>', + '<em class="text">初始化设置</em>', + '</span>', + '</div>', + '<div class="sectionBar">', + '<div id="J_addImg" class="addImgH">', + '<em class="icon"></em>', + '<em class="text">添加背景</em>', + '<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>', + '</div>', + '</div>', + '<div class="sectionBar">', + '<span id="J_removeImg" class="removeImg">', + '<em class="icon"></em>', + '<em class="text">删除背景</em>', + '</span>', + '</div>', + '</div>' + ].join(''); + var dataURLtoFile = function (dataurl, filename) { + var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new File([u8arr], filename, {type: mime}); + }; + var dialog = self.createDialog({ + name: name, + width: 750, + height: 440, + title: self.lang(name), + body: html, + yesBtn: { + name: lang.btnText, + click: function (e) { + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function (data) { + if (allowUploadGraft) { + var callback = function (res) { + dialog.hideLoading(); + if (res.code == "000") { + //K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + }; + dialog.showLoading(self.lang('uploadLoading')); + if (typeof self.beforeUpload == 'function') { + var file = dataURLtoFile(data, "graft.png"); + self.beforeUpload.call(this, callback, file); + } else { + $.post(uploadJson, { + img_base64_data: data, + fileType: "image", + base64: 1 + }, function (res) { + callback(res); + }, "json"); + } + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + }); + } + } + }); + var canvas = new Canvas({ + canvasId: "canvas-borad", + width: 600, + height: 320 + }); + }; + self.clickToolbar(name, function () { + self.plugin.graftDialog({ + clickFn: function (url) { + self.exec('insertimage', url); + } + }); + }); +}); +/** + * 文件服务器管理 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ +KindEditor.plugin('filemanager', function (K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if (typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath + "filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath + "multiimage/css/upload.css"); + } + + self.plugin.filemanagerDialog = function (options) { + + var clickFn = options.clickFn; + new FManager({ + list_url: fileManagerJson, //图片列表数据获取url + lang: lang, //语言包 + fileType: options.dirName, + top: self.dialogOffset, + multiple: options.multiple ? true : false, + callback: function (data) { + clickFn.call(this, options.multiple ? data : data[0]); + } + }); + //return dialog; + } + +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('pagebreak', function (K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />'); + self.clickToolbar(name, function () { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<span id="__kindeditor_tail_tag__"></span>'; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('plainpaste', function (K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>'); + } else { + html = html.replace(/\n/g, '<br />$&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('preview', function (K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '<div style="padding:10px 20px;">' + + '<iframe class="ke-textarea" frameborder="0" style="width:' + (width - 42) + 'px;height:' + height + 'px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: width, + title: self.lang(name), + body: html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '<html lang="en">', + '<head><meta charset="utf-8" /><title></title>', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/flash.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/play.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}' + ]; + if (self.options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath + 'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath + 'code/prism.css'); + } + K.each(cssPath, function (i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (self.options.cssData) { + arr.push('<style>' + self.options.cssData + '</style>'); + } + arr.push('</head><body ' + (self.options.bodyClass ? 'class="' + self.options.bodyClass + '"' : '') + '>'); + arr.push(self.fullHtml()); + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + if (K.inArray(self.options.pluginsPath + 'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath + 'code/prism.js'); + } + K.each(jsPath, function (i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('quickformat', function (K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + + self.clickToolbar(name, function () { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while (child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function (i, subList) { + var wrapper = K('<p style="text-indent:2em;"></p>', doc); + subList[0].before(wrapper); + K.each(subList, function (i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('table', function (K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + + var pickerList = []; + + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function (e) { + e.stopPropagation(); + }); + + function removePicker() { + K.each(pickerList, function () { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + + colorBox.click(function (e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x: pos.x, + y: pos.y + box.height(), + z: 811214, + selectedColor: K(this).html(), + colors: self.colorTable, + noColor: self.lang('noColor'), + shadowMode: self.shadowMode, + click: function (color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + + self.plugin.table = { + prop: function (isInsert) { + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keRows" class="row-left">' + lang.cells + ':</label>', + '<div class="row-right">', + lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ', + lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="kePadding" class="row-left">' + lang.space + ':</label>', + '<div class="row-right">', + lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ', + lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<select id="keAlign" class="ke-select" name="align">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" class="row-left">' + lang.border + ':</label>', + '<div class="row-right">', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" class="row-left">' + lang.backgroundColor + ':</label>', + '<div class="row-right">', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang(name), + body: html, + beforeRemove: function () { + colorBox.unbind(); + }, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '<table class="table"'; + if (style !== '') { + html += ' style="' + style + '"'; + } + if (padding !== '') { + html += ' cellpadding="' + padding + '"'; + } + if (spacing !== '') { + html += ' cellspacing="' + spacing + '"'; + } + if (align !== '') { + html += ' align="' + align + '"'; + } + if (border !== '') { + html += ' border="' + border + '"'; + } + if (border === '' || border === '0') { + html += ' class="table ' + zeroborder + '"'; + } + if (borderColor !== '') { + html += ' bordercolor="' + borderColor + '"'; + } + html += '>'; + for (var i = 0; i < rows; i++) { + html += '<tr>'; + for (var j = 0; j < cols; j++) { + html += '<td>' + (K.IE ? ' ' : '<br />') + '</td>'; + } + html += '</tr>'; + } + html += '</table>'; + if (!K.IE) { + html += '<br />'; + } + + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('<br />'); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + cellprop: function () { + var html = [ + '<div style="padding:20px;">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" style="width:90px;">' + lang.size + '</label>', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" style="width:90px;">' + lang.align + '</label>', + lang.textAlign + ' <select id="keAlign" name="textAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select> ', + lang.verticalAlign + ' <select name="verticalAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="top">' + lang.alignTop + '</option>', + '<option value="middle">' + lang.alignMiddle + '</option>', + '<option value="bottom">' + lang.alignBottom + '</option>', + '<option value="baseline">' + lang.alignBaseline + '</option>', + '</select>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" style="width:90px;">' + lang.border + '</label>', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang('tablecell'), + body: html, + beforeRemove: function () { + colorBox.unbind(); + }, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width: width !== '' ? (width + widthType) : '', + height: height !== '' ? (height + heightType) : '', + 'background-color': bgColor, + 'text-align': textAlign, + 'vertical-align': verticalAlign, + 'border-width': border, + 'border-style': border !== '' ? 'solid' : '', + 'border-color': borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + _setColor(colorBox.eq(1), ''); + widthBox[0].focus(); + widthBox[0].select(); + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert: function () { + this.prop(true); + }, + 'delete': function () { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert: function (offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + index += table.rows[0].cells.length - row.cells.length; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '<br />'; + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft: function () { + this.colinsert(0); + }, + colinsertright: function () { + this.colinsert(1); + }, + rowinsert: function (offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove: function () { + this.rowinsert(0); + }, + rowinsertbelow: function () { + this.rowinsert(1); + }, + rowmerge: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + nextRowIndex = rowIndex + cell.rowSpan, + nextRow = table.rows[nextRowIndex]; + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete: function () { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('template', function (K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + + self.clickToolbar(name, function () { + var lang = self.lang(name + '.'), + arr = ['<div class="ke-dialog-content-inner" style="padding-top:0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header" style="height: 32px;">', + lang.selectTemplate + ' <select class="ke-select">']; + K.each(lang.fileList, function (key, val) { + arr.push('<option value="' + key + '">' + val + '</option>'); + }); + html = [arr.join(''), + '</select>', + '<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>', + '</div>', + '</div>', + '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>', + '</div>'].join(''); + var dialog = self.createDialog({ + name: name, + width: 500, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function () { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); + +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ +KindEditor.plugin('wordpaste', function (K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function () { + var jsonp = function (url, callback) { + var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random()); + window[callbackName] = function (data) { + delete window[callbackName]; + document.body.removeChild(script); + callback(data); + }; + + var script = document.createElement('script'); + script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName; + document.body.appendChild(script); + }; + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + if (typeof self.wordImageServer !== 'undefined' && self.wordImageServer) { + var i = 0; + var arr = []; + var replacedStr = str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/ig, function (value) { + arr[i] = value; + var replaced = "##" + i + "##"; + i++; + return replaced; + }); + for (var j = 0; j < arr.length; j++) { + jsonp("http://" + self.wordImageServer + "/word?index=" + j + "&file=" + encodeURIComponent(arr[j]), function (data) { + K.uploadwordimage.call(self, data.index, data.info); + }); + } + str = replacedStr; + } + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('<!doctype html><html><head><title>WordPaste</title></head>'); + doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">'); + if (!K.IE) { + doc.write('<br />'); + } + doc.write('</body></html>'); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); + + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if (document.body.scrollTop - originY < 0) { + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); diff --git a/public/assets/addons/nkeditor/nkeditor.min.js b/public/assets/addons/nkeditor/nkeditor.min.js new file mode 100644 index 0000000..1c399aa --- /dev/null +++ b/public/assets/addons/nkeditor/nkeditor.min.js @@ -0,0 +1 @@ +(function(window,undefined){if(window.KindEditor){return}if(!window.console){window.console={}}if(!console.log){console.log=function(){}}var _VERSION="5.0.3 (2018-10-25)",_ua=navigator.userAgent.toLowerCase(),_IE=_ua.indexOf("msie")>-1&&_ua.indexOf("opera")==-1,_NEWIE=_ua.indexOf("msie")==-1&&_ua.indexOf("trident")>-1,_GECKO=_ua.indexOf("gecko")>-1&&_ua.indexOf("khtml")==-1,_WEBKIT=_ua.indexOf("applewebkit")>-1,_OPERA=_ua.indexOf("opera")>-1,_MOBILE=_ua.indexOf("mobile")>-1,_IOS=/ipad|iphone|ipod/.test(_ua),_QUIRKS=document.compatMode!="CSS1Compat",_IERANGE=!window.getSelection,_matches=/(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua),_V=_matches?_matches[1]:"0",_TIME=(new Date).getTime();function _isArray(val){if(!val){return false}return Object.prototype.toString.call(val)==="[object Array]"}function _isFunction(val){if(!val){return false}return Object.prototype.toString.call(val)==="[object Function]"}function _inArray(val,arr){for(var i=0,len=arr.length;i<len;i++){if(val===arr[i]){return i}}return-1}function _each(obj,fn){if(_isArray(obj)){for(var i=0,len=obj.length;i<len;i++){if(fn.call(obj[i],i,obj[i])===false){break}}}else{for(var key in obj){if(obj.hasOwnProperty(key)){if(fn.call(obj[key],key,obj[key])===false){break}}}}}function _trim(str){return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"")}function _inString(val,str,delimiter){delimiter=delimiter===undefined?",":delimiter;return(delimiter+str+delimiter).indexOf(delimiter+val+delimiter)>=0}function _addUnit(val,unit){unit=unit||"px";return val&&/^-?\d+(?:\.\d+)?$/.test(val)?val+unit:val}function _removeUnit(val){var match;return val&&(match=/(\d+)/.exec(val))?parseInt(match[1],10):0}function _escape(val){return val.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function _unescape(val){return val.replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/&/g,"&")}function _toCamel(str){var arr=str.split("-");str="";_each(arr,function(key,val){str+=key>0?val.charAt(0).toUpperCase()+val.substr(1):val});return str}function _toHex(val){function hex(d){var s=parseInt(d,10).toString(16).toUpperCase();return s.length>1?s:"0"+s}return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/gi,function($0,$1,$2,$3){return"#"+hex($1)+hex($2)+hex($3)})}function _toMap(val,delimiter){delimiter=delimiter===undefined?",":delimiter;var map={},arr=_isArray(val)?val:val.split(delimiter),match;_each(arr,function(key,val){if(match=/^(\d+)\.\.(\d+)$/.exec(val)){for(var i=parseInt(match[1],10);i<=parseInt(match[2],10);i++){map[i.toString()]=true}}else{map[val]=true}});return map}function _toArray(obj,offset){return Array.prototype.slice.call(obj,offset||0)}function _undef(val,defaultVal){return val===undefined?defaultVal:val}function _invalidUrl(url){return!url||/[<>"]/.test(url)}function _addParam(url,param){return url.indexOf("?")>=0?url+"&"+param:url+"?"+param}function _extend(child,parent,proto){if(!proto){proto=parent;parent=null}var childProto;if(parent){var fn=function(){};fn.prototype=parent.prototype;childProto=new fn;_each(proto,function(key,val){childProto[key]=val})}else{childProto=proto}childProto.constructor=child;child.prototype=childProto;child.parent=parent?parent.prototype:null}function _json(text){var match;if(match=/\{[\s\S]*\}|\[[\s\S]*\]/.exec(text)){text=match[0]}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){return eval("("+text+")")}throw"JSON parse error"}function _merge(distObj,obj){for(var name in distObj){obj[name]=distObj[name]}return obj}var _round=Math.round;var K={DEBUG:false,VERSION:_VERSION,IE:_IE,GECKO:_GECKO,WEBKIT:_WEBKIT,OPERA:_OPERA,V:_V,TIME:_TIME,each:_each,isArray:_isArray,isFunction:_isFunction,inArray:_inArray,inString:_inString,trim:_trim,addUnit:_addUnit,removeUnit:_removeUnit,escape:_escape,unescape:_unescape,toCamel:_toCamel,toHex:_toHex,toMap:_toMap,toArray:_toArray,undef:_undef,invalidUrl:_invalidUrl,addParam:_addParam,extend:_extend,merge:_merge,json:_json};var _INLINE_TAG_MAP=_toMap("a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),_BLOCK_TAG_MAP=_toMap("address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul"),_SINGLE_TAG_MAP=_toMap("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),_STYLE_TAG_MAP=_toMap("b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u"),_CONTROL_TAG_MAP=_toMap("img,table,input,textarea,button"),_PRE_TAG_MAP=_toMap("pre,style,script"),_NOSPLIT_TAG_MAP=_toMap("html,head,body,td,tr,table,ol,ul,li"),_AUTOCLOSE_TAG_MAP=_toMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),_FILL_ATTR_MAP=_toMap("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),_VALUE_TAG_MAP=_toMap("input,button,textarea,select");function _getBasePath(){var els=document.getElementsByTagName("script"),src;for(var i=0,len=els.length;i<len;i++){src=els[i].src||"";if(/NKeditor[\w\-\.]*\.js/i.test(src)){return src.substring(0,src.lastIndexOf("/")+1)}}return""}K.basePath=_getBasePath();K.options={designMode:true,fullscreenMode:false,filterMode:true,wellFormatMode:true,loadStyleMode:true,basePath:K.basePath,themesPath:K.basePath+"themes/",langPath:K.basePath+"lang/",pluginsPath:K.basePath+"plugins/",themeType:"primary",langType:"zh-CN",urlType:"",newlineTag:"p",resizeType:2,syncType:"form",pasteType:2,dialogAlignType:"page",useContextmenu:true,fullscreenShortcut:false,bodyClass:"ke-content",indentChar:"\t",cssPath:[],jsPath:[],showHelpGrid:false,cssData:"",minWidth:650,minHeight:300,minChangeSize:50,zIndex:811213,items:["source","undo","redo","preview","print","template","code","quote","cut","copy","paste","plainpaste","wordpaste","justifyleft","justifycenter","justifyright","justifyfull","insertorderedlist","insertunorderedlist","indent","outdent","subscript","superscript","clearhtml","quickformat","selectall","formatblock","fontname","fontsize","forecolor","hilitecolor","bold","italic","underline","strikethrough","lineheight","removeformat","image","multiimage","graft","flash","media","insertfile","table","hr","emoticons","baidumap","pagebreak","anchor","link","unlink","about","fullscreen"],noDisableItems:["source","fullscreen"],colorTable:[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#DDDDDD","#999999","#666666","#333333","#000000"]],fontSizeTable:["9px","10px","12px","14px","16px","18px","24px","32px"],htmlTags:{font:["id","class","color","size","face",".background-color"],span:["id","class",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".line-height"],div:["id","class","align",".border",".margin",".padding",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".background",".font-style",".text-decoration",".vertical-align",".margin-left"],table:["id","class","border","cellspacing","cellpadding","width","height","align","bordercolor",".padding",".margin",".border","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".background",".width",".height",".border-collapse"],"td,th":["id","class","align","valign","width","height","colspan","rowspan","bgcolor",".text-align",".color",".background-color",".font-size",".font-family",".font-weight",".font-style",".text-decoration",".vertical-align",".background",".border"],a:["id","class","href","target","name"],embed:["id","class","src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess","wmode","controls"],img:["id","class","src","width","height","border","alt","title","align",".width",".height",".border"],"p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":["id","class","align",".text-align",".color",".background-color",".font-size",".font-family",".background",".font-weight",".font-style",".text-decoration",".vertical-align",".text-indent",".margin-left"],pre:["id","class"],hr:["id","class",".page-break-after"],"br,tbody,tr,strong,b,sub,sup,em,i,u,strike,s,del":["id","class"],iframe:["id","class","src","frameborder","width","height",".width",".height"]},layout:'<div class="container"><div class="toolbar"></div><div class="edit"></div><div class="statusbar"></div></div>',afterBlur:function(){this.sync()},errorMsgHandler:function(message,type){console.log(message);console.log(type);alert(message)},dialogOffset:0,allowUploadGraft:true,resLoadCache:{},tableBorderColor:"#cccccc"};var _useCapture=false;var _INPUT_KEY_MAP=_toMap("8,9,13,32,46,48..57,59,61,65..90,106,109..111,188,190..192,219..222");var _CURSORMOVE_KEY_MAP=_toMap("33..40");var _CHANGE_KEY_MAP={};_each(_INPUT_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val});_each(_CURSORMOVE_KEY_MAP,function(key,val){_CHANGE_KEY_MAP[key]=val});function _bindEvent(el,type,fn){if(el.addEventListener){el.addEventListener(type,fn,_useCapture)}else if(el.attachEvent){el.attachEvent("on"+type,fn)}}function _unbindEvent(el,type,fn){if(el.removeEventListener){el.removeEventListener(type,fn,_useCapture)}else if(el.detachEvent){el.detachEvent("on"+type,fn)}}var _EVENT_PROPS=("altKey,attrChange,attrName,bubbles,button,cancelable,charCode,clientX,clientY,ctrlKey,currentTarget,"+"data,detail,eventPhase,fromElement,handler,keyCode,metaKey,newValue,offsetX,offsetY,originalTarget,pageX,"+"pageY,prevValue,relatedNode,relatedTarget,screenX,screenY,shiftKey,srcElement,target,toElement,view,wheelDelta,which").split(",");function KEvent(el,event){this.init(el,event)}_extend(KEvent,{init:function(el,event){var self=this,doc=el.ownerDocument||el.document||el;self.event=event;_each(_EVENT_PROPS,function(key,val){self[val]=event[val]});if(!self.target){self.target=self.srcElement||doc}if(self.target.nodeType===3){self.target=self.target.parentNode}if(!self.relatedTarget&&self.fromElement){self.relatedTarget=self.fromElement===self.target?self.toElement:self.fromElement}if(self.pageX==null&&self.clientX!=null){var d=doc.documentElement,body=doc.body;self.pageX=self.clientX+(d&&d.scrollLeft||body&&body.scrollLeft||0)-(d&&d.clientLeft||body&&body.clientLeft||0);self.pageY=self.clientY+(d&&d.scrollTop||body&&body.scrollTop||0)-(d&&d.clientTop||body&&body.clientTop||0)}if(!self.which&&(self.charCode||self.charCode===0?self.charCode:self.keyCode)){self.which=self.charCode||self.keyCode}if(!self.metaKey&&self.ctrlKey){self.metaKey=self.ctrlKey}if(!self.which&&self.button!==undefined){self.which=self.button&1?1:self.button&2?3:self.button&4?2:0}switch(self.which){case 186:self.which=59;break;case 187:case 107:case 43:self.which=61;break;case 189:case 45:self.which=109;break;case 42:self.which=106;break;case 47:self.which=111;break;case 78:self.which=110;break}if(self.which>=96&&self.which<=105){self.which-=48}},preventDefault:function(){var ev=this.event;if(ev.preventDefault){ev.preventDefault()}else{ev.returnValue=false}},stopPropagation:function(){var ev=this.event;if(ev.stopPropagation){ev.stopPropagation()}else{ev.cancelBubble=true}},stop:function(){this.preventDefault();this.stopPropagation()}});var _eventExpendo="kindeditor_"+_TIME,_eventId=0,_eventData={};function _getId(el){return el[_eventExpendo]||null}function _setId(el){el[_eventExpendo]=++_eventId;return _eventId}function _removeId(el){try{delete el[_eventExpendo]}catch(e){if(el.removeAttribute){el.removeAttribute(_eventExpendo)}}}function _bind(el,type,fn){if(type.indexOf(",")>=0){_each(type.split(","),function(){_bind(el,this,fn)});return}var id=_getId(el);if(!id){id=_setId(el)}if(_eventData[id]===undefined){_eventData[id]={}}var events=_eventData[id][type];if(events&&events.length>0){_unbindEvent(el,type,events[0])}else{_eventData[id][type]=[];_eventData[id].el=el}events=_eventData[id][type];if(events.length===0){events[0]=function(e){var kevent=e?new KEvent(el,e):undefined;_each(events,function(i,event){if(i>0&&event){event.call(el,kevent)}})}}if(_inArray(fn,events)<0){events.push(fn)}_bindEvent(el,type,events[0])}function _unbind(el,type,fn){if(type&&type.indexOf(",")>=0){_each(type.split(","),function(){_unbind(el,this,fn)});return}var id=_getId(el);if(!id){return}if(type===undefined){if(id in _eventData){_each(_eventData[id],function(key,events){if(key!="el"&&events.length>0){_unbindEvent(el,key,events[0])}});delete _eventData[id];_removeId(el)}return}if(!_eventData[id]){return}var events=_eventData[id][type];if(events&&events.length>0){if(fn===undefined){_unbindEvent(el,type,events[0]);delete _eventData[id][type]}else{_each(events,function(i,event){if(i>0&&event===fn){events.splice(i,1)}});if(events.length==1){_unbindEvent(el,type,events[0]);delete _eventData[id][type]}}var count=0;_each(_eventData[id],function(){count++});if(count<2){delete _eventData[id];_removeId(el)}}}function _fire(el,type){if(type.indexOf(",")>=0){_each(type.split(","),function(){_fire(el,this)});return}var id=_getId(el);if(!id){return}var events=_eventData[id][type];if(_eventData[id]&&events&&events.length>0){events[0]()}}function _ctrl(el,key,fn){var self=this;key=/^\d{2,}$/.test(key)?key:key.toUpperCase().charCodeAt(0);_bind(el,"keydown",function(e){if(e.ctrlKey&&e.which==key&&!e.shiftKey&&!e.altKey){fn.call(el);e.stop()}})}var _readyFinished=false;function _ready(fn){if(_readyFinished){fn(KindEditor);return}var loaded=false;function readyFunc(){if(!loaded){loaded=true;fn(KindEditor);_readyFinished=true}}function ieReadyFunc(){if(!loaded){try{document.documentElement.doScroll("left")}catch(e){setTimeout(ieReadyFunc,100);return}readyFunc()}}function ieReadyStateFunc(){if(document.readyState==="complete"){readyFunc()}}if(document.addEventListener){_bind(document,"DOMContentLoaded",readyFunc)}else if(document.attachEvent){_bind(document,"readystatechange",ieReadyStateFunc);var toplevel=false;try{toplevel=window.frameElement==null}catch(e){}if(document.documentElement.doScroll&&toplevel){ieReadyFunc()}}_bind(window,"load",readyFunc)}if(window.attachEvent){window.attachEvent("onunload",function(){_each(_eventData,function(key,events){if(events.el){_unbind(events.el)}})})}K.ctrl=_ctrl;K.ready=_ready;function _getCssList(css){css=css.replace(/"/g,'"');var list={},reg=/\s*([\w\-]+)\s*:([^;]*)(;|$)/g,match;while(match=reg.exec(css)){var key=_trim(match[1].toLowerCase()),val=_trim(_toHex(match[2]));list[key]=val}return list}function _getAttrList(tag){var list={},reg=/\s+(?:([\w\-:]+)|(?:([\w\-:]+)=([^\s"'<>]+))|(?:([\w\-:"]+)="([^"]*)")|(?:([\w\-:"]+)='([^']*)'))(?=(?:\s|\/|>)+)/g,match;while(match=reg.exec(tag)){var key=(match[1]||match[2]||match[4]||match[6]).toLowerCase(),val=(match[2]?match[3]:match[4]?match[5]:match[7])||"";list[key]=val}return list}function _addClassToTag(tag,className){if(/\s+class\s*=/.test(tag)){tag=tag.replace(/(\s+class=["']?)([^"']*)(["']?[\s>])/,function($0,$1,$2,$3){if((" "+$2+" ").indexOf(" "+className+" ")<0){return $2===""?$1+className+$3:$1+$2+" "+className+$3}else{return $0}})}else{tag=tag.substr(0,tag.length-1)+' class="'+className+'">'}return tag}function _formatCss(css){var str="";_each(_getCssList(css),function(key,val){str+=key+":"+val+";"});return str}function _formatUrl(url,mode,host,pathname){mode=_undef(mode,"").toLowerCase();if(url.substr(0,5)!="data:"){url=url.replace(/([^:])\/\//g,"$1/")}if(_inArray(mode,["absolute","relative","domain"])<0){return url}host=host||location.protocol+"//"+location.host;if(pathname===undefined){var m=location.pathname.match(/^(\/.*)\//);pathname=m?m[1]:""}if(/^\w+:/.test(url)){return url}var match;if(match=/^(\w+:\/\/[^\/]*)/.exec(url)){if(match[1]!==host){return url}}function getRealPath(path){var parts=path.split("/"),paths=[];for(var i=0,len=parts.length;i<len;i++){var part=parts[i];if(part==".."){if(paths.length>0){paths.pop()}}else if(part!==""&&part!="."){paths.push(part)}}return"/"+paths.join("/")}if(/^\//.test(url)){url=host+getRealPath(url.substr(1))}else if(!/^\w+:\/\//.test(url)){url=host+getRealPath(pathname+"/"+url)}function getRelativePath(path,depth){if(url.substr(0,path.length)===path){var arr=[];for(var i=0;i<depth;i++){arr.push("..")}var prefix=".";if(arr.length>0){prefix+="/"+arr.join("/")}if(pathname=="/"){prefix+="/"}return prefix+url.substr(path.length)}else{if(match=/^(.*)\//.exec(path)){return getRelativePath(match[1],++depth)}}}if(mode==="relative"){url=getRelativePath(host+pathname,0).substr(2)}else if(mode==="absolute"){if(url.substr(0,host.length)===host){url=url.substr(host.length)}}return url}function _formatHtml(html,htmlTags,urlType,wellFormatted,indentChar){if(html==null){html=""}urlType=urlType||"";wellFormatted=_undef(wellFormatted,false);indentChar=_undef(indentChar,"\t");var fontSizeList="xx-small,x-small,small,medium,large,x-large,xx-large".split(",");html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function($0,$1,$2,$3){return $1+$2.replace(/<(?:br|br\s[^>]*)>/gi,"\n")+$3});html=html.replace(/<(?:br|br\s[^>]*)\s*\/?>\s*<\/p>/gi,"</p>");html=html.replace(/(<(?:p|p\s[^>]*)>)\s*(<\/p>)/gi,"$1<br />$2");html=html.replace(/\u200B/g,"");html=html.replace(/\u00A9/g,"©");html=html.replace(/\u00AE/g,"®");html=html.replace(/\u2003/g," ");html=html.replace(/\u3000/g," ");html=html.replace(/<[^>]+/g,function($0){return $0.replace(/\s+/g," ")});var htmlTagMap={};if(htmlTags){_each(htmlTags,function(key,val){var arr=key.split(",");for(var i=0,len=arr.length;i<len;i++){htmlTagMap[arr[i]]=_toMap(val)}});if(!htmlTagMap.script){html=html.replace(/(<(?:script|script\s[^>]*)>)([\s\S]*?)(<\/script>)/gi,"")}if(!htmlTagMap.style){html=html.replace(/(<(?:style|style\s[^>]*)>)([\s\S]*?)(<\/style>)/gi,"")}}var re=/(\s*)<(\/)?([\w\-:]+)((?:\s+|(?:\s+[\w\-:]+)|(?:\s+[\w\-:]+=[^\s"'<>]+)|(?:\s+[\w\-:"]+="[^"]*")|(?:\s+[\w\-:"]+='[^']*'))*)(\/)?>(\s*)/g;var tagStack=[];html=html.replace(re,function($0,$1,$2,$3,$4,$5,$6){var full=$0,startNewline=$1||"",startSlash=$2||"",tagName=$3.toLowerCase(),attr=$4||"",endSlash=$5?" "+$5:"",endNewline=$6||"";if(tagName=="code"){return full}if(htmlTags&&!htmlTagMap[tagName]){return""}if(endSlash===""&&_SINGLE_TAG_MAP[tagName]){endSlash=" /"}if(_INLINE_TAG_MAP[tagName]){if(startNewline){startNewline=" "}if(endNewline){endNewline=" "}}if(_PRE_TAG_MAP[tagName]){if(startSlash){endNewline="\n"}else{startNewline="\n"}}if(wellFormatted&&tagName=="br"){endNewline="\n"}if(_BLOCK_TAG_MAP[tagName]&&!_PRE_TAG_MAP[tagName]){if(wellFormatted){if(startSlash&&tagStack.length>0&&tagStack[tagStack.length-1]===tagName){tagStack.pop()}else{tagStack.push(tagName)}startNewline="\n";endNewline="\n";for(var i=0,len=startSlash?tagStack.length:tagStack.length-1;i<len;i++){startNewline+=indentChar;if(!startSlash){endNewline+=indentChar}}if(endSlash){tagStack.pop()}else if(!startSlash){endNewline+=indentChar}}else{startNewline=endNewline=""}}if(attr!==""){var attrMap=_getAttrList(full);if(tagName==="font"){var fontStyleMap={},fontStyle="";_each(attrMap,function(key,val){if(key==="color"){fontStyleMap.color=val;delete attrMap[key]}if(key==="size"){fontStyleMap["font-size"]=fontSizeList[parseInt(val,10)-1]||"";delete attrMap[key]}if(key==="face"){fontStyleMap["font-family"]=val;delete attrMap[key]}if(key==="style"){fontStyle=val}});if(fontStyle&&!/;$/.test(fontStyle)){fontStyle+=";"}_each(fontStyleMap,function(key,val){if(val===""){return}if(/\s/.test(val)){val="'"+val+"'"}fontStyle+=key+":"+val+";"});attrMap.style=fontStyle}_each(attrMap,function(key,val){if(_FILL_ATTR_MAP[key]){attrMap[key]=key}if(_inArray(key,["src","href"])>=0){attrMap[key]=_formatUrl(val,urlType)}if(htmlTags&&key!=="style"&&!htmlTagMap[tagName]["*"]&&!htmlTagMap[tagName][key]||tagName==="body"&&key==="contenteditable"||/^kindeditor_\d+$/.test(key)){delete attrMap[key]}if(key==="style"&&val!==""){var styleMap=_getCssList(val);_each(styleMap,function(k,v){if(htmlTags&&!htmlTagMap[tagName].style&&!htmlTagMap[tagName]["."+k]){delete styleMap[k]}});var style="";_each(styleMap,function(k,v){style+=k+":"+v+";"});attrMap.style=style}});attr="";_each(attrMap,function(key,val){if(key==="style"&&val===""){return}val=val.replace(/"/g,""");attr+=" "+key+'="'+val+'"'})}if(tagName==="font"){tagName="span"}return startNewline+"<"+startSlash+tagName+attr+endSlash+">"+endNewline});html=html.replace(/(<(?:pre|pre\s[^>]*)>)([\s\S]*?)(<\/pre>)/gi,function($0,$1,$2,$3){return $1+$2.replace(/\n/g,'<span id="__kindeditor_pre_newline__">\n')+$3});html=html.replace(/\n\s*\n/g,"\n");html=html.replace(/<span id="__kindeditor_pre_newline__">\n/g,"\n");return _trim(html)}function _clearMsWord(html,htmlTags){html=html.replace(/<meta[\s\S]*?>/gi,"").replace(/<![\s\S]*?>/gi,"").replace(/<style[^>]*>[\s\S]*?<\/style>/gi,"").replace(/<script[^>]*>[\s\S]*?<\/script>/gi,"").replace(/<w:[^>]+>[\s\S]*?<\/w:[^>]+>/gi,"").replace(/<o:[^>]+>[\s\S]*?<\/o:[^>]+>/gi,"").replace(/<xml>[\s\S]*?<\/xml>/gi,"").replace(/<(?:table|td)[^>]*>/gi,function(full){return full.replace(/border-bottom:([#\w\s]+)/gi,"border:$1")});return _formatHtml(html,htmlTags)}function _mediaType(src){if(/\.(rm|rmvb)(\?|$)/i.test(src)){return"audio/x-pn-realaudio-plugin"}if(/\.(mp4)(\?|$)/i.test(src)){return"video/mpeg4"}if(/\.(swf|flv)(\?|$)/i.test(src)){return"application/x-shockwave-flash"}return"video/x-ms-asf-plugin"}function _mediaClass(type){if(/realaudio/i.test(type)){return"ke-rm"}if(/flash/i.test(type)){return"ke-flash"}return"ke-media"}function _mediaAttrs(srcTag){return _getAttrList(unescape(srcTag))}function _mediaEmbed(attrs){var type=attrs.type=="video/mpeg4"?"video":"embed";if(type=="video"){attrs.controls="controls"}var html="<"+type+" ";_each(attrs,function(key,val){html+=key+'="'+val+'" '});html+="/>";return html}function _mediaImg(blankPath,attrs){var width=attrs.width,height=attrs.height,type=attrs.type||_mediaType(attrs.src),srcTag=_mediaEmbed(attrs),style="";if(/\D/.test(width)){style+="width:"+width+";"}else if(width>0){style+="width:"+width+"px;"}if(/\D/.test(height)){style+="height:"+height+";"}else if(height>0){style+="height:"+height+"px;"}var html='<img class="'+_mediaClass(type)+'" src="'+blankPath+'" ';if(style!==""){html+='style="'+style+'" '}html+='data-ke-tag="'+escape(srcTag)+'" alt="" />';return html}function _tmpl(str,data){var fn=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};"+"with(obj){p.push('"+str.replace(/[\r\t\n]/g," ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g,"$1\r").replace(/\t=(.*?)%>/g,"',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+"');}return p.join('');");return data?fn(data):fn}K.formatUrl=_formatUrl;K.formatHtml=_formatHtml;K.getCssList=_getCssList;K.getAttrList=_getAttrList;K.mediaType=_mediaType;K.mediaAttrs=_mediaAttrs;K.mediaEmbed=_mediaEmbed;K.mediaImg=_mediaImg;K.clearMsWord=_clearMsWord;K.tmpl=_tmpl;function _contains(nodeA,nodeB){if(nodeA.nodeType==9&&nodeB.nodeType!=9){return true}while(nodeB=nodeB.parentNode){if(nodeB==nodeA){return true}}return false}var _getSetAttrDiv=document.createElement("div");_getSetAttrDiv.setAttribute("className","t");var _GET_SET_ATTRIBUTE=_getSetAttrDiv.className!=="t";function _getAttr(el,key){key=key.toLowerCase();var val=null;if(!_GET_SET_ATTRIBUTE&&el.nodeName.toLowerCase()!="script"){var div=el.ownerDocument.createElement("div");div.appendChild(el.cloneNode(false));var list=_getAttrList(_unescape(div.innerHTML));if(key in list){val=list[key]}}else{try{val=el.getAttribute(key,2)}catch(e){val=el.getAttribute(key,1)}}if(key==="style"&&val!==null){val=_formatCss(val)}return val}function _queryAll(expr,root){var exprList=expr.split(",");if(exprList.length>1){var mergedResults=[];_each(exprList,function(){_each(_queryAll(this,root),function(){if(_inArray(this,mergedResults)<0){mergedResults.push(this)}})});return mergedResults}root=root||document;function escape(str){if(typeof str!="string"){return str}return str.replace(/([^\w\-])/g,"\\$1")}function stripslashes(str){return str.replace(/\\/g,"")}function cmpTag(tagA,tagB){return tagA==="*"||tagA.toLowerCase()===escape(tagB.toLowerCase())}function byId(id,tag,root){var arr=[],doc=root.ownerDocument||root,el=doc.getElementById(stripslashes(id));if(el){if(cmpTag(tag,el.nodeName)&&_contains(root,el)){arr.push(el)}}return arr}function byClass(className,tag,root){var doc=root.ownerDocument||root,arr=[],els,i,len,el;if(root.getElementsByClassName){els=root.getElementsByClassName(stripslashes(className));for(i=0,len=els.length;i<len;i++){el=els[i];if(cmpTag(tag,el.nodeName)){arr.push(el)}}}else if(doc.querySelectorAll){els=doc.querySelectorAll((root.nodeName!=="#document"?root.nodeName+" ":"")+tag+"."+className);for(i=0,len=els.length;i<len;i++){el=els[i];if(_contains(root,el)){arr.push(el)}}}else{els=root.getElementsByTagName(tag);className=" "+className+" ";for(i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){var cls=el.className;if(cls&&(" "+cls+" ").indexOf(className)>-1){arr.push(el)}}}}return arr}function byName(name,tag,root){var arr=[],doc=root.ownerDocument||root,els=doc.getElementsByName(stripslashes(name)),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(cmpTag(tag,el.nodeName)&&_contains(root,el)){if(el.getAttribute("name")!==null){arr.push(el)}}}return arr}function byAttr(key,val,tag,root){var arr=[],els=root.getElementsByTagName(tag),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){if(val===null){if(_getAttr(el,key)!==null){arr.push(el)}}else{if(val===escape(_getAttr(el,key))){arr.push(el)}}}}return arr}function select(expr,root){var arr=[],matches;matches=/^((?:\\.|[^.#\s\[<>])+)/.exec(expr);var tag=matches?matches[1]:"*";if(matches=/#((?:[\w\-]|\\.)+)$/.exec(expr)){arr=byId(matches[1],tag,root)}else if(matches=/\.((?:[\w\-]|\\.)+)$/.exec(expr)){arr=byClass(matches[1],tag,root)}else if(matches=/\[((?:[\w\-]|\\.)+)\]/.exec(expr)){arr=byAttr(matches[1].toLowerCase(),null,tag,root)}else if(matches=/\[((?:[\w\-]|\\.)+)\s*=\s*['"]?((?:\\.|[^'"]+)+)['"]?\]/.exec(expr)){var key=matches[1].toLowerCase(),val=matches[2];if(key==="id"){arr=byId(val,tag,root)}else if(key==="class"){arr=byClass(val,tag,root)}else if(key==="name"){arr=byName(val,tag,root)}else{arr=byAttr(key,val,tag,root)}}else{var els=root.getElementsByTagName(tag),el;for(var i=0,len=els.length;i<len;i++){el=els[i];if(el.nodeType==1){arr.push(el)}}}return arr}var parts=[],arr,re=/((?:\\.|[^\s>])+|[\s>])/g;while(arr=re.exec(expr)){if(arr[1]!==" "){parts.push(arr[1])}}var results=[];if(parts.length==1){return select(parts[0],root)}var isChild=false,part,els,subResults,val,v,i,j,k,length,len,l;for(i=0,lenth=parts.length;i<lenth;i++){part=parts[i];if(part===">"){isChild=true;continue}if(i>0){els=[];for(j=0,len=results.length;j<len;j++){val=results[j];subResults=select(part,val);for(k=0,l=subResults.length;k<l;k++){v=subResults[k];if(isChild){if(val===v.parentNode){els.push(v)}}else{els.push(v)}}}results=els}else{results=select(part,root)}if(results.length===0){return[]}}return results}function _query(expr,root){var arr=_queryAll(expr,root);return arr.length>0?arr[0]:null}K.query=_query;K.queryAll=_queryAll;function _get(val){return K(val)[0]}function _getDoc(node){if(!node){return document}return node.ownerDocument||node.document||node}function _getWin(node){if(!node){return window}var doc=_getDoc(node);return doc.parentWindow||doc.defaultView}function _setHtml(el,html){if(el.nodeType!=1){return}var doc=_getDoc(el);try{el.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+html;var temp=doc.getElementById("__kindeditor_temp_tag__");temp.parentNode.removeChild(temp)}catch(e){K(el).empty();K("@"+html,doc).each(function(){el.appendChild(this)})}}function _hasClass(el,cls){return _inString(cls,el.className," ")}function _setAttr(el,key,val){if(_IE&&_V<8&&key.toLowerCase()=="class"){key="className"}el.setAttribute(key,""+val)}function _removeAttr(el,key){if(_IE&&_V<8&&key.toLowerCase()=="class"){key="className"}_setAttr(el,key,"");el.removeAttribute(key)}function _getNodeName(node){if(!node||!node.nodeName){return""}return node.nodeName.toLowerCase()}function _computedCss(el,key){var self=this,win=_getWin(el),camelKey=_toCamel(key),val="";if(win.getComputedStyle){var style=win.getComputedStyle(el,null);val=style[camelKey]||style.getPropertyValue(key)||el.style[camelKey]}else if(el.currentStyle){val=el.currentStyle[camelKey]||el.style[camelKey]}return val}function _hasVal(node){return!!_VALUE_TAG_MAP[_getNodeName(node)]}function _docElement(doc){doc=doc||document;return _QUIRKS?doc.body:doc.documentElement}function _docHeight(doc){var el=_docElement(doc);return Math.max(el.scrollHeight,el.clientHeight)}function _docWidth(doc){var el=_docElement(doc);return Math.max(el.scrollWidth,el.clientWidth)}function _getScrollPos(doc){doc=doc||document;var x,y;if(_IE||_NEWIE||_OPERA){x=_docElement(doc).scrollLeft;y=_docElement(doc).scrollTop}else{x=_getWin(doc).scrollX;y=_getWin(doc).scrollY}return{x:x,y:y}}function KNode(node){this.init(node)}_extend(KNode,{init:function(node){var self=this;node=_isArray(node)?node:[node];var length=0;for(var i=0,len=node.length;i<len;i++){if(node[i]){self[i]=node[i].constructor===KNode?node[i][0]:node[i];length++}}self.length=length;self.doc=_getDoc(self[0]);self.name=_getNodeName(self[0]);self.type=self.length>0?self[0].nodeType:null;self.win=_getWin(self[0])},each:function(fn){var self=this;for(var i=0;i<self.length;i++){if(fn.call(self[i],i,self[i])===false){return self}}return self},bind:function(type,fn){this.each(function(){_bind(this,type,fn)});return this},unbind:function(type,fn){this.each(function(){_unbind(this,type,fn)});return this},fire:function(type){if(this.length<1){return this}_fire(this[0],type);return this},hasAttr:function(key){if(this.length<1){return false}return!!_getAttr(this[0],key)},attr:function(key,val){var self=this;if(key===undefined){return _getAttrList(self.outer())}if(typeof key==="object"){_each(key,function(k,v){self.attr(k,v)});return self}if(val===undefined){val=self.length<1?null:_getAttr(self[0],key);return val===null?"":val}self.each(function(){_setAttr(this,key,val)});return self},removeAttr:function(key){this.each(function(){_removeAttr(this,key)});return this},get:function(i){if(this.length<1){return null}return this[i||0]},eq:function(i){if(this.length<1){return null}return this[i]?new KNode(this[i]):null},hasClass:function(cls){if(this.length<1){return false}return _hasClass(this[0],cls)},addClass:function(cls){this.each(function(){if(!_hasClass(this,cls)){this.className=_trim(this.className+" "+cls)}});return this},removeClass:function(cls){this.each(function(){if(_hasClass(this,cls)){this.className=_trim(this.className.replace(new RegExp("(^|\\s)"+cls+"(\\s|$)")," "))}});return this},html:function(val){var self=this;if(val===undefined){if(self.length<1||self.type!=1){return""}return _formatHtml(self[0].innerHTML)}self.each(function(){_setHtml(this,val)});return self},text:function(){var self=this;if(self.length<1){return""}return _IE?self[0].innerText:self[0].textContent},hasVal:function(){if(this.length<1){return false}return _hasVal(this[0])},val:function(val){var self=this;if(val===undefined){if(self.length<1){return""}return self.hasVal()?self[0].value:self.attr("value")}else{self.each(function(){if(_hasVal(this)){this.value=val}else{_setAttr(this,"value",val)}});return self}},css:function(key,val){var self=this;if(key===undefined){return _getCssList(self.attr("style"))}if(typeof key==="object"){_each(key,function(k,v){self.css(k,v)});return self}if(val===undefined){if(self.length<1){return""}return self[0].style[_toCamel(key)]||_computedCss(self[0],key)||""}self.each(function(){this.style[_toCamel(key)]=val});return self},width:function(val){var self=this;if(val===undefined){if(self.length<1){return 0}return self[0].offsetWidth}return self.css("width",_addUnit(val))},height:function(val){var self=this;if(val===undefined){if(self.length<1){return 0}return self[0].offsetHeight}return self.css("height",_addUnit(val))},opacity:function(val){this.each(function(){if(this.style.opacity===undefined){this.style.filter=val==1?"":"alpha(opacity="+val*100+")"}else{this.style.opacity=val==1?"":val}});return this},data:function(key,val){var self=this;key="kindeditor_data_"+key;if(val===undefined){if(self.length<1){return null}return self[0][key]}this.each(function(){this[key]=val});return self},pos:function(){var self=this,node=self[0],x=0,y=0;if(node){if(node.getBoundingClientRect){var box=node.getBoundingClientRect(),pos=_getScrollPos(self.doc);x=box.left+pos.x;y=box.top+pos.y}else{while(node){x+=node.offsetLeft;y+=node.offsetTop;node=node.offsetParent}}}return{x:_round(x),y:_round(y)}},clone:function(bool){if(this.length<1){return new KNode([])}return new KNode(this[0].cloneNode(bool))},append:function(expr){this.each(function(){if(this.appendChild){this.appendChild(_get(expr))}});return this},appendTo:function(expr){this.each(function(){_get(expr).appendChild(this)});return this},before:function(expr){this.each(function(){try{this.parentNode.insertBefore(_get(expr),this)}catch(e){}});return this},after:function(expr){this.each(function(){if(this.nextSibling){this.parentNode.insertBefore(_get(expr),this.nextSibling)}else{this.parentNode.appendChild(_get(expr))}});return this},replaceWith:function(expr){var nodes=[];this.each(function(i,node){_unbind(node);var newNode=_get(expr);node.parentNode.replaceChild(newNode,node);nodes.push(newNode)});return K(nodes)},empty:function(){var self=this;self.each(function(i,node){var child=node.firstChild;while(child){if(!node.parentNode){return}var next=child.nextSibling;child.parentNode.removeChild(child);child=next}});return self},remove:function(keepChilds){var self=this;self.each(function(i,node){if(!node.parentNode){return}_unbind(node);if(keepChilds){var child=node.firstChild;while(child){var next=child.nextSibling;node.parentNode.insertBefore(child,node);child=next}}node.parentNode.removeChild(node);delete self[i]});self.length=0;return self},show:function(val){var self=this;if(val===undefined){val=self._originDisplay||""}if(self.css("display")!="none"){return self}return self.css("display",val)},hide:function(){var self=this;if(self.length<1){return self}self._originDisplay=self[0].style.display;return self.css("display","none")},outer:function(){var self=this;if(self.length<1){return""}var div=self.doc.createElement("div"),html;div.appendChild(self[0].cloneNode(true));html=_formatHtml(div.innerHTML);div=null;return html},isSingle:function(){return!!_SINGLE_TAG_MAP[this.name]},isInline:function(){return!!_INLINE_TAG_MAP[this.name]},isBlock:function(){return!!_BLOCK_TAG_MAP[this.name]},isStyle:function(){return!!_STYLE_TAG_MAP[this.name]},isControl:function(){return!!_CONTROL_TAG_MAP[this.name]},contains:function(otherNode){if(this.length<1){return false}return _contains(this[0],_get(otherNode))},parent:function(){if(this.length<1){return null}var node=this[0].parentNode;return node?new KNode(node):null},children:function(){if(this.length<1){return new KNode([])}var list=[],child=this[0].firstChild;while(child){if(child.nodeType!=3||_trim(child.nodeValue)!==""){list.push(child)}child=child.nextSibling}return new KNode(list)},first:function(){var list=this.children();return list.length>0?list.eq(0):null},last:function(){var list=this.children();return list.length>0?list.eq(list.length-1):null},index:function(){if(this.length<1){return-1}var i=-1,sibling=this[0];while(sibling){i++;sibling=sibling.previousSibling}return i},prev:function(){if(this.length<1){return null}var node=this[0].previousSibling;return node?new KNode(node):null},next:function(){if(this.length<1){return null}var node=this[0].nextSibling;return node?new KNode(node):null},scan:function(fn,order){if(this.length<1){return}order=order===undefined?true:order;function walk(node){var n=order?node.firstChild:node.lastChild;while(n){var next=order?n.nextSibling:n.previousSibling;if(fn(n)===false){return false}if(walk(n)===false){return false}n=next}}walk(this[0]);return this}});_each(("blur,focus,focusin,focusout,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,"+"change,select,submit,keydown,keypress,keyup,error,contextmenu").split(","),function(i,type){KNode.prototype[type]=function(fn){return fn?this.bind(type,fn):this.fire(type)}});var _K=K;K=function(expr,root){if(expr===undefined||expr===null){return}function newNode(node){if(!node[0]){node=[]}return new KNode(node)}if(typeof expr==="string"){if(root){root=_get(root)}var length=expr.length;if(expr.charAt(0)==="@"){expr=expr.substr(1)}if(expr.length!==length||/<.+>/.test(expr)){var doc=root?root.ownerDocument||root:document,div=doc.createElement("div"),list=[];div.innerHTML='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+expr;for(var i=0,len=div.childNodes.length;i<len;i++){var child=div.childNodes[i];if(child.id=="__kindeditor_temp_tag__"){continue}list.push(child)}return newNode(list)}return newNode(_queryAll(expr,root))}if(expr&&expr.constructor===KNode){return expr}if(expr.toArray){expr=expr.toArray()}if(_isArray(expr)){return newNode(expr)}return newNode(_toArray(arguments))};_each(_K,function(key,val){K[key]=val});K.NodeClass=KNode;window.KindEditor=K;var _START_TO_START=0,_START_TO_END=1,_END_TO_END=2,_END_TO_START=3,_BOOKMARK_ID=0;function _updateCollapsed(range){range.collapsed=range.startContainer===range.endContainer&&range.startOffset===range.endOffset;return range}function _copyAndDelete(range,isCopy,isDelete){var doc=range.doc,nodeList=[];function splitTextNode(node,startOffset,endOffset){var length=node.nodeValue.length,centerNode;if(isCopy){var cloneNode=node.cloneNode(true);if(startOffset>0){centerNode=cloneNode.splitText(startOffset)}else{centerNode=cloneNode}if(endOffset<length){centerNode.splitText(endOffset-startOffset)}}if(isDelete){var center=node;if(startOffset>0){center=node.splitText(startOffset);range.setStart(node,startOffset)}if(endOffset<length){var right=center.splitText(endOffset-startOffset);range.setEnd(right,0)}nodeList.push(center)}return centerNode}function removeNodes(){if(isDelete){range.up().collapse(true)}for(var i=0,len=nodeList.length;i<len;i++){var node=nodeList[i];if(node.parentNode){node.parentNode.removeChild(node)}}}var copyRange=range.cloneRange().down();var start=-1,incStart=-1,incEnd=-1,end=-1,ancestor=range.commonAncestor(),frag=doc.createDocumentFragment();if(ancestor.nodeType==3){var textNode=splitTextNode(ancestor,range.startOffset,range.endOffset);if(isCopy){frag.appendChild(textNode)}removeNodes();return isCopy?frag:range}function extractNodes(parent,frag){var node=parent.firstChild,nextNode;while(node){var testRange=new KRange(doc).selectNode(node);start=testRange.compareBoundaryPoints(_START_TO_END,range);if(start>=0&&incStart<=0){incStart=testRange.compareBoundaryPoints(_START_TO_START,range)}if(incStart>=0&&incEnd<=0){incEnd=testRange.compareBoundaryPoints(_END_TO_END,range)}if(incEnd>=0&&end<=0){end=testRange.compareBoundaryPoints(_END_TO_START,range)}if(end>=0){return false}nextNode=node.nextSibling;if(start>0){if(node.nodeType==1){if(incStart>=0&&incEnd<=0){if(isCopy){frag.appendChild(node.cloneNode(true))}if(isDelete){nodeList.push(node)}}else{var childFlag;if(isCopy){childFlag=node.cloneNode(false);frag.appendChild(childFlag)}if(extractNodes(node,childFlag)===false){return false}}}else if(node.nodeType==3){var textNode;if(node==copyRange.startContainer){textNode=splitTextNode(node,copyRange.startOffset,node.nodeValue.length)}else if(node==copyRange.endContainer){textNode=splitTextNode(node,0,copyRange.endOffset)}else{textNode=splitTextNode(node,0,node.nodeValue.length)}if(isCopy){try{frag.appendChild(textNode)}catch(e){}}}}node=nextNode}}extractNodes(ancestor,frag);if(isDelete){range.up().collapse(true)}for(var i=0,len=nodeList.length;i<len;i++){var node=nodeList[i];if(node.parentNode){node.parentNode.removeChild(node)}}return isCopy?frag:range}function _moveToElementText(range,el){var node=el;while(node){var knode=K(node);if(knode.name=="marquee"||knode.name=="select"){return}node=node.parentNode}try{range.moveToElementText(el)}catch(e){}}function _getStartEnd(rng,isStart){var doc=rng.parentElement().ownerDocument,pointRange=rng.duplicate();pointRange.collapse(isStart);var parent=pointRange.parentElement(),nodes=parent.childNodes;if(nodes.length===0){return{node:parent.parentNode,offset:K(parent).index()}}var startNode=doc,startPos=0,cmp=-1;var testRange=rng.duplicate();_moveToElementText(testRange,parent);for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];cmp=testRange.compareEndPoints("StartToStart",pointRange);if(cmp===0){return{node:node.parentNode,offset:i}}if(node.nodeType==1){var nodeRange=rng.duplicate(),dummy,knode=K(node),newNode=node;if(knode.isControl()){dummy=doc.createElement("span");knode.after(dummy);newNode=dummy;startPos+=knode.text().replace(/\r\n|\n|\r/g,"").length}_moveToElementText(nodeRange,newNode);testRange.setEndPoint("StartToEnd",nodeRange);if(cmp>0){startPos+=nodeRange.text.replace(/\r\n|\n|\r/g,"").length}else{startPos=0}if(dummy){K(dummy).remove()}}else if(node.nodeType==3){testRange.moveStart("character",node.nodeValue.length);startPos+=node.nodeValue.length}if(cmp<0){startNode=node}}if(cmp<0&&startNode.nodeType==1){return{node:parent,offset:K(parent.lastChild).index()+1}}if(cmp>0){while(startNode.nextSibling&&startNode.nodeType==1){startNode=startNode.nextSibling}}testRange=rng.duplicate();_moveToElementText(testRange,parent);testRange.setEndPoint("StartToEnd",pointRange);startPos-=testRange.text.replace(/\r\n|\n|\r/g,"").length;if(cmp>0&&startNode.nodeType==3){var prevNode=startNode.previousSibling;while(prevNode&&prevNode.nodeType==3){startPos-=prevNode.nodeValue.length;prevNode=prevNode.previousSibling}}return{node:startNode,offset:startPos}}function _getEndRange(node,offset){var doc=node.ownerDocument||node,range=doc.body.createTextRange();if(doc==node){range.collapse(true);return range}if(node.nodeType==1&&node.childNodes.length>0){var children=node.childNodes,isStart,child;if(offset===0){child=children[0];isStart=true}else{child=children[offset-1];isStart=false}if(!child){return range}if(K(child).name==="head"){if(offset===1){isStart=true}if(offset===2){isStart=false}range.collapse(isStart);return range}if(child.nodeType==1){var kchild=K(child),span;if(kchild.isControl()){span=doc.createElement("span");if(isStart){kchild.before(span)}else{kchild.after(span)}child=span}_moveToElementText(range,child);range.collapse(isStart);if(span){K(span).remove()}return range}node=child;offset=isStart?0:child.nodeValue.length}var dummy=doc.createElement("span");K(node).before(dummy);_moveToElementText(range,dummy);range.moveStart("character",offset);K(dummy).remove();return range}function _toRange(rng){var doc,range;function tr2td(start){if(K(start.node).name=="tr"){start.node=start.node.cells[start.offset];start.offset=0}}if(_IERANGE){if(rng.item){doc=_getDoc(rng.item(0));range=new KRange(doc);range.selectNode(rng.item(0));return range}doc=rng.parentElement().ownerDocument;var start=_getStartEnd(rng,true),end=_getStartEnd(rng,false);tr2td(start);tr2td(end);range=new KRange(doc);range.setStart(start.node,start.offset);range.setEnd(end.node,end.offset);return range}var startContainer=rng.startContainer;doc=startContainer.ownerDocument||startContainer;range=new KRange(doc);range.setStart(startContainer,rng.startOffset);range.setEnd(rng.endContainer,rng.endOffset);return range}function KRange(doc){this.init(doc)}_extend(KRange,{init:function(doc){var self=this;self.startContainer=doc;self.startOffset=0;self.endContainer=doc;self.endOffset=0;self.collapsed=true;self.doc=doc},commonAncestor:function(){function getParents(node){var parents=[];while(node){parents.push(node);node=node.parentNode}return parents}var parentsA=getParents(this.startContainer),parentsB=getParents(this.endContainer),i=0,lenA=parentsA.length,lenB=parentsB.length,parentA,parentB;while(++i){parentA=parentsA[lenA-i];parentB=parentsB[lenB-i];if(!parentA||!parentB||parentA!==parentB){break}}return parentsA[lenA-i+1]},setStart:function(node,offset){var self=this,doc=self.doc;self.startContainer=node;self.startOffset=offset;if(self.endContainer===doc){self.endContainer=node;self.endOffset=offset}return _updateCollapsed(this)},setEnd:function(node,offset){var self=this,doc=self.doc;self.endContainer=node;self.endOffset=offset;if(self.startContainer===doc){self.startContainer=node;self.startOffset=offset}return _updateCollapsed(this)},setStartBefore:function(node){return this.setStart(node.parentNode||this.doc,K(node).index())},setStartAfter:function(node){return this.setStart(node.parentNode||this.doc,K(node).index()+1)},setEndBefore:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index())},setEndAfter:function(node){return this.setEnd(node.parentNode||this.doc,K(node).index()+1)},selectNode:function(node){return this.setStartBefore(node).setEndAfter(node)},selectNodeContents:function(node){var knode=K(node);if(knode.type==3||knode.isSingle()){return this.selectNode(node)}var children=knode.children();if(children.length>0){return this.setStartBefore(children[0]).setEndAfter(children[children.length-1])}return this.setStart(node,0).setEnd(node,0)},collapse:function(toStart){if(toStart){return this.setEnd(this.startContainer,this.startOffset)}return this.setStart(this.endContainer,this.endOffset)},compareBoundaryPoints:function(how,range){var rangeA=this.get(),rangeB=range.get();if(_IERANGE){var arr={};arr[_START_TO_START]="StartToStart";arr[_START_TO_END]="EndToStart";arr[_END_TO_END]="EndToEnd";arr[_END_TO_START]="StartToEnd";var cmp=rangeA.compareEndPoints(arr[how],rangeB);if(cmp!==0){return cmp}var nodeA,nodeB,nodeC,posA,posB;if(how===_START_TO_START||how===_END_TO_START){nodeA=this.startContainer;posA=this.startOffset}if(how===_START_TO_END||how===_END_TO_END){nodeA=this.endContainer;posA=this.endOffset}if(how===_START_TO_START||how===_START_TO_END){nodeB=range.startContainer;posB=range.startOffset}if(how===_END_TO_END||how===_END_TO_START){nodeB=range.endContainer;posB=range.endOffset}if(nodeA===nodeB){var diff=posA-posB;return diff>0?1:diff<0?-1:0}nodeC=nodeB;while(nodeC&&nodeC.parentNode!==nodeA){nodeC=nodeC.parentNode}if(nodeC){return K(nodeC).index()>=posA?-1:1}nodeC=nodeA;while(nodeC&&nodeC.parentNode!==nodeB){nodeC=nodeC.parentNode}if(nodeC){return K(nodeC).index()>=posB?1:-1}nodeC=K(nodeB).next();if(nodeC&&nodeC.contains(nodeA)){return 1}nodeC=K(nodeA).next();if(nodeC&&nodeC.contains(nodeB)){return-1}}else{return rangeA.compareBoundaryPoints(how,rangeB)}},cloneRange:function(){return new KRange(this.doc).setStart(this.startContainer,this.startOffset).setEnd(this.endContainer,this.endOffset)},toString:function(){var rng=this.get(),str=_IERANGE?rng.text:rng.toString();return str.replace(/\r\n|\n|\r/g,"")},cloneContents:function(){return _copyAndDelete(this,true,false)},deleteContents:function(){return _copyAndDelete(this,false,true)},extractContents:function(){return _copyAndDelete(this,true,true)},insertNode:function(node){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,firstChild,lastChild,c,nodeCount=1;if(node.nodeName.toLowerCase()==="#document-fragment"){firstChild=node.firstChild;lastChild=node.lastChild;nodeCount=node.childNodes.length}if(sc.nodeType==1){c=sc.childNodes[so];if(c){sc.insertBefore(node,c);if(sc===ec){eo+=nodeCount}}else{sc.appendChild(node)}}else if(sc.nodeType==3){if(so===0){sc.parentNode.insertBefore(node,sc);if(sc.parentNode===ec){eo+=nodeCount}}else if(so>=sc.nodeValue.length){if(sc.nextSibling){sc.parentNode.insertBefore(node,sc.nextSibling)}else{sc.parentNode.appendChild(node)}}else{if(so>0){c=sc.splitText(so)}else{c=sc}sc.parentNode.insertBefore(node,c);if(sc===ec){ec=c;eo-=so}}}if(firstChild){self.setStartBefore(firstChild).setEndAfter(lastChild)}else{self.selectNode(node)}if(self.compareBoundaryPoints(_END_TO_END,self.cloneRange().setEnd(ec,eo))>=1){return self}return self.setEnd(ec,eo)},surroundContents:function(node){node.appendChild(this.extractContents());return this.insertNode(node).selectNode(node)},isControl:function(){var self=this,sc=self.startContainer,so=self.startOffset,ec=self.endContainer,eo=self.endOffset,rng;return sc.nodeType==1&&sc===ec&&so+1===eo&&K(sc.childNodes[so]).isControl()},get:function(hasControlRange){var self=this,doc=self.doc,node,rng;if(!_IERANGE){rng=doc.createRange();try{rng.setStart(self.startContainer,self.startOffset);rng.setEnd(self.endContainer,self.endOffset)}catch(e){}return rng}if(hasControlRange&&self.isControl()){rng=doc.body.createControlRange();rng.addElement(self.startContainer.childNodes[self.startOffset]);return rng}var range=self.cloneRange().down();rng=doc.body.createTextRange();rng.setEndPoint("StartToStart",_getEndRange(range.startContainer,range.startOffset));rng.setEndPoint("EndToStart",_getEndRange(range.endContainer,range.endOffset));return rng},html:function(){return K(this.cloneContents()).outer()},down:function(){var self=this;function downPos(node,pos,isStart){if(node.nodeType!=1){return}var children=K(node).children();if(children.length===0){return}var left,right,child,offset;if(pos>0){left=children.eq(pos-1)}if(pos<children.length){right=children.eq(pos)}if(left&&left.type==3){child=left[0];offset=child.nodeValue.length}if(right&&right.type==3){child=right[0];offset=0}if(!child){return}if(isStart){self.setStart(child,offset)}else{self.setEnd(child,offset)}}downPos(self.startContainer,self.startOffset,true);downPos(self.endContainer,self.endOffset,false);return self},up:function(){var self=this;function upPos(node,pos,isStart){if(node.nodeType!=3){return}if(pos===0){if(isStart){self.setStartBefore(node)}else{self.setEndBefore(node)}}else if(pos==node.nodeValue.length){if(isStart){self.setStartAfter(node)}else{self.setEndAfter(node)}}}upPos(self.startContainer,self.startOffset,true);upPos(self.endContainer,self.endOffset,false);return self},enlarge:function(toBlock){var self=this;self.up();function enlargePos(node,pos,isStart){var knode=K(node),parent;if(knode.type==3||_NOSPLIT_TAG_MAP[knode.name]||!toBlock&&knode.isBlock()){return}if(pos===0){while(!knode.prev()){parent=knode.parent();if(!parent||_NOSPLIT_TAG_MAP[parent.name]||!toBlock&&parent.isBlock()){break}knode=parent}if(isStart){self.setStartBefore(knode[0])}else{self.setEndBefore(knode[0])}}else if(pos==knode.children().length){while(!knode.next()){parent=knode.parent();if(!parent||_NOSPLIT_TAG_MAP[parent.name]||!toBlock&&parent.isBlock()){break}knode=parent}if(isStart){self.setStartAfter(knode[0])}else{self.setEndAfter(knode[0])}}}enlargePos(self.startContainer,self.startOffset,true);enlargePos(self.endContainer,self.endOffset,false);return self},shrink:function(){var self=this,child,collapsed=self.collapsed;while(self.startContainer.nodeType==1&&(child=self.startContainer.childNodes[self.startOffset])&&child.nodeType==1&&!K(child).isSingle()){self.setStart(child,0)}if(collapsed){return self.collapse(collapsed)}while(self.endContainer.nodeType==1&&self.endOffset>0&&(child=self.endContainer.childNodes[self.endOffset-1])&&child.nodeType==1&&!K(child).isSingle()){self.setEnd(child,child.childNodes.length)}return self},createBookmark:function(serialize){var self=this,doc=self.doc,endNode,startNode=K('<span style="display:none;"></span>',doc)[0];startNode.id="__kindeditor_bookmark_start_"+_BOOKMARK_ID+++"__";if(!self.collapsed){endNode=startNode.cloneNode(true);endNode.id="__kindeditor_bookmark_end_"+_BOOKMARK_ID+++"__"}if(endNode){self.cloneRange().collapse(false).insertNode(endNode).setEndBefore(endNode)}self.insertNode(startNode).setStartAfter(startNode);return{start:serialize?"#"+startNode.id:startNode,end:endNode?serialize?"#"+endNode.id:endNode:null}},moveToBookmark:function(bookmark){var self=this,doc=self.doc,start=K(bookmark.start,doc),end=bookmark.end?K(bookmark.end,doc):null;if(!start||start.length<1){return self}self.setStartBefore(start[0]);start.remove();if(end&&end.length>0){self.setEndBefore(end[0]);end.remove()}else{self.collapse(true)}return self},dump:function(){console.log("--------------------");console.log(this.startContainer.nodeType==3?this.startContainer.nodeValue:this.startContainer,this.startOffset);console.log(this.endContainer.nodeType==3?this.endContainer.nodeValue:this.endContainer,this.endOffset)}});function _range(mixed){if(!mixed.nodeName){return mixed.constructor===KRange?mixed:_toRange(mixed)}return new KRange(mixed)}K.RangeClass=KRange;K.range=_range;K.START_TO_START=_START_TO_START;K.START_TO_END=_START_TO_END;K.END_TO_END=_END_TO_END;K.END_TO_START=_END_TO_START;function _nativeCommand(doc,key,val){try{doc.execCommand(key,false,val)}catch(e){}}function _nativeCommandValue(doc,key){var val="";try{val=doc.queryCommandValue(key)}catch(e){}if(typeof val!=="string"){val=""}return val}function _getSel(doc){var win=_getWin(doc);return _IERANGE?doc.selection:win.getSelection()}function _getRng(doc){var sel=_getSel(doc),rng;try{if(sel.rangeCount>0){rng=sel.getRangeAt(0)}else{rng=sel.createRange()}}catch(e){}if(_IERANGE&&(!rng||!rng.item&&rng.parentElement().ownerDocument!==doc)){return null}return rng}function _singleKeyMap(map){var newMap={},arr,v;_each(map,function(key,val){arr=key.split(",");for(var i=0,len=arr.length;i<len;i++){v=arr[i];newMap[v]=val}});return newMap}function _hasAttrOrCss(knode,map){return _hasAttrOrCssByKey(knode,map,"*")||_hasAttrOrCssByKey(knode,map)}function _hasAttrOrCssByKey(knode,map,mapKey){mapKey=mapKey||knode.name;if(knode.type!==1){return false}var newMap=_singleKeyMap(map);if(!newMap[mapKey]){return false}var arr=newMap[mapKey].split(",");for(var i=0,len=arr.length;i<len;i++){var key=arr[i];if(key==="*"){return true}var match=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key);var method=match[1]?"css":"attr";key=match[2];var val=match[3]||"";if(val===""&&knode[method](key)!==""){return true}if(val!==""&&knode[method](key)===val){return true}}return false}function _removeAttrOrCss(knode,map){if(knode.type!=1){return}_removeAttrOrCssByKey(knode,map,"*");_removeAttrOrCssByKey(knode,map)}function _removeAttrOrCssByKey(knode,map,mapKey){mapKey=mapKey||knode.name;if(knode.type!==1){return}var newMap=_singleKeyMap(map);if(!newMap[mapKey]){return}var arr=newMap[mapKey].split(","),allFlag=false;for(var i=0,len=arr.length;i<len;i++){var key=arr[i];if(key==="*"){allFlag=true;break}var match=/^(\.?)([^=]+)(?:=([^=]*))?$/.exec(key);key=match[2];if(match[1]){key=_toCamel(key);if(knode[0].style[key]){knode[0].style[key]=""}}else{knode.removeAttr(key)}}if(allFlag){knode.remove(true)}}function _getInnerNode(knode){var inner=knode;while(inner.first()){inner=inner.first()}return inner}function _isEmptyNode(knode){if(knode.type!=1||knode.isSingle()){return false}return knode.html().replace(/<[^>]+>/g,"")===""}function _mergeWrapper(a,b){a=a.clone(true);var lastA=_getInnerNode(a),childA=a,merged=false;while(b){while(childA){if(childA.name===b.name){_mergeAttrs(childA,b.attr(),b.css());merged=true}childA=childA.first()}if(!merged){lastA.append(b.clone(false))}merged=false;b=b.first()}return a}function _wrapNode(knode,wrapper){wrapper=wrapper.clone(true);if(knode.type==3){_getInnerNode(wrapper).append(knode.clone(false));knode.replaceWith(wrapper);return wrapper}var nodeWrapper=knode,child;while((child=knode.first())&&child.children().length==1){knode=child}child=knode.first();var frag=knode.doc.createDocumentFragment();while(child){frag.appendChild(child[0]);child=child.next()}wrapper=_mergeWrapper(nodeWrapper,wrapper);if(frag.firstChild){_getInnerNode(wrapper).append(frag)}nodeWrapper.replaceWith(wrapper);return wrapper}function _mergeAttrs(knode,attrs,styles){_each(attrs,function(key,val){if(key!=="style"){knode.attr(key,val)}});_each(styles,function(key,val){knode.css(key,val)})}function _inPreElement(knode){while(knode&&knode.name!="body"){if(_PRE_TAG_MAP[knode.name]||knode.name=="div"&&knode.hasClass("ke-script")){return true}knode=knode.parent()}return false}function KCmd(range){this.init(range)}_extend(KCmd,{init:function(range){var self=this,doc=range.doc;self.doc=doc;self.win=_getWin(doc);self.sel=_getSel(doc);self.range=range},selection:function(forceReset){var self=this,doc=self.doc,rng=_getRng(doc);self.sel=_getSel(doc);if(rng){self.range=_range(rng);if(K(self.range.startContainer).name=="html"){self.range.selectNodeContents(doc.body).collapse(false)}return self}if(forceReset){self.range.selectNodeContents(doc.body).collapse(false)}return self},select:function(hasDummy){hasDummy=_undef(hasDummy,true);var self=this,sel=self.sel,range=self.range.cloneRange().shrink(),sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,doc=_getDoc(sc),win=self.win,rng,hasU200b=false;if(hasDummy&&sc.nodeType==1&&range.collapsed){if(_IERANGE){var dummy=K("<span> </span>",doc);range.insertNode(dummy[0]);rng=doc.body.createTextRange();try{rng.moveToElementText(dummy[0])}catch(ex){}rng.collapse(false);rng.select();dummy.remove();win.focus();return self}if(_WEBKIT){var children=sc.childNodes;if(K(sc).isInline()||so>0&&K(children[so-1]).isInline()||children[so]&&K(children[so]).isInline()){range.insertNode(doc.createTextNode(""));hasU200b=true}}}if(_IERANGE){try{rng=range.get(true);rng.select()}catch(e){}}else{if(hasU200b){range.collapse(false)}rng=range.get(true);sel.removeAllRanges();sel.addRange(rng);if(doc!==document){var pos=K(rng.endContainer).pos();win.scrollTo(pos.x,pos.y)}}win.focus();return self},wrap:function(val){var self=this,doc=self.doc,range=self.range,wrapper;wrapper=K(val,doc);if(range.collapsed){range.shrink();range.insertNode(wrapper[0]).selectNodeContents(wrapper[0]);return self}if(wrapper.isBlock()){var copyWrapper=wrapper.clone(true),child=copyWrapper;while(child.first()){child=child.first()}child.append(range.extractContents());range.insertNode(copyWrapper[0]).selectNode(copyWrapper[0]);return self}range.enlarge();var bookmark=range.createBookmark(),ancestor=range.commonAncestor(),isStart=false;K(ancestor).scan(function(node){if(!isStart&&node==bookmark.start){isStart=true;return}if(isStart){if(node==bookmark.end){return false}var knode=K(node);if(_inPreElement(knode)){return}if(knode.type==3&&_trim(node.nodeValue).length>0){var parent;while((parent=knode.parent())&&parent.isStyle()&&parent.children().length==1){knode=parent}_wrapNode(knode,wrapper)}}});range.moveToBookmark(bookmark);return self},split:function(isStart,map){var range=this.range,doc=range.doc;var tempRange=range.cloneRange().collapse(isStart);var node=tempRange.startContainer,pos=tempRange.startOffset,parent=node.nodeType==3?node.parentNode:node,needSplit=false,knode;while(parent&&parent.parentNode){knode=K(parent);if(map){if(!knode.isStyle()){break}if(!_hasAttrOrCss(knode,map)){break}}else{if(_NOSPLIT_TAG_MAP[knode.name]){break}}needSplit=true;parent=parent.parentNode}if(needSplit){var dummy=doc.createElement("span");range.cloneRange().collapse(!isStart).insertNode(dummy);if(isStart){tempRange.setStartBefore(parent.firstChild).setEnd(node,pos)}else{tempRange.setStart(node,pos).setEndAfter(parent.lastChild)}var frag=tempRange.extractContents(),first=frag.firstChild,last=frag.lastChild;if(isStart){tempRange.insertNode(frag);range.setStartAfter(last).setEndBefore(dummy)}else{parent.appendChild(frag);range.setStartBefore(dummy).setEndBefore(first)}var dummyParent=dummy.parentNode;if(dummyParent==range.endContainer){var prev=K(dummy).prev(),next=K(dummy).next();if(prev&&next&&prev.type==3&&next.type==3){range.setEnd(prev[0],prev[0].nodeValue.length)}else if(!isStart){range.setEnd(range.endContainer,range.endOffset-1)}}dummyParent.removeChild(dummy)}return this},remove:function(map){var self=this,doc=self.doc,range=self.range;range.enlarge();if(range.startOffset===0){var ksc=K(range.startContainer),parent;while((parent=ksc.parent())&&parent.isStyle()&&parent.children().length==1){ksc=parent}range.setStart(ksc[0],0);ksc=K(range.startContainer);if(ksc.isBlock()){_removeAttrOrCss(ksc,map)}var kscp=ksc.parent();if(kscp&&kscp.isBlock()){_removeAttrOrCss(kscp,map)}}var sc,so;if(range.collapsed){self.split(true,map);sc=range.startContainer;so=range.startOffset;if(so>0){var sb=K(sc.childNodes[so-1]);if(sb&&_isEmptyNode(sb)){sb.remove();range.setStart(sc,so-1)}}var sa=K(sc.childNodes[so]);if(sa&&_isEmptyNode(sa)){sa.remove()}if(_isEmptyNode(sc)){range.startBefore(sc);sc.remove()}range.collapse(true);return self}self.split(true,map);self.split(false,map);var startDummy=doc.createElement("span"),endDummy=doc.createElement("span");range.cloneRange().collapse(false).insertNode(endDummy);range.cloneRange().collapse(true).insertNode(startDummy);var nodeList=[],cmpStart=false;K(range.commonAncestor()).scan(function(node){if(!cmpStart&&node==startDummy){cmpStart=true;return}if(node==endDummy){return false}if(cmpStart){nodeList.push(node)}});K(startDummy).remove();K(endDummy).remove();sc=range.startContainer;so=range.startOffset;var ec=range.endContainer,eo=range.endOffset;if(so>0){var startBefore=K(sc.childNodes[so-1]);if(startBefore&&_isEmptyNode(startBefore)){startBefore.remove();range.setStart(sc,so-1);if(sc==ec){range.setEnd(ec,eo-1)}}var startAfter=K(sc.childNodes[so]);if(startAfter&&_isEmptyNode(startAfter)){startAfter.remove();if(sc==ec){range.setEnd(ec,eo-1)}}}var endAfter=K(ec.childNodes[range.endOffset]);if(endAfter&&_isEmptyNode(endAfter)){endAfter.remove()}var bookmark=range.createBookmark(true);_each(nodeList,function(i,node){_removeAttrOrCss(K(node),map)});range.moveToBookmark(bookmark);return self},commonNode:function(map){var range=this.range;var ec=range.endContainer,eo=range.endOffset,node=ec.nodeType==3||eo===0?ec:ec.childNodes[eo-1];function find(node){var child=node,parent=node;while(parent){if(_hasAttrOrCss(K(parent),map)){return K(parent)}parent=parent.parentNode}while(child&&(child=child.lastChild)){if(_hasAttrOrCss(K(child),map)){return K(child)}}return null}var cNode=find(node);if(cNode){return cNode}if(node.nodeType==1||ec.nodeType==3&&eo===0){var prev=K(node).prev();if(prev){return find(prev)}}return null},commonAncestor:function(tagName){var range=this.range,sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset,startNode=sc.nodeType==3||so===0?sc:sc.childNodes[so-1],endNode=ec.nodeType==3||eo===0?ec:ec.childNodes[eo-1];function find(node){while(node){if(node.nodeType==1){if(node.tagName.toLowerCase()===tagName){return node}}node=node.parentNode}return null}var start=find(startNode),end=find(endNode);if(start&&end&&start===end){return K(start)}return null},state:function(key){var self=this,doc=self.doc,bool=false;try{bool=doc.queryCommandState(key)}catch(e){}return bool},val:function(key){var self=this,doc=self.doc,range=self.range;function lc(val){return val.toLowerCase()}key=lc(key);var val="",knode;if(key==="fontfamily"||key==="fontname"){val=_nativeCommandValue(doc,"fontname");val=val.replace(/['"]/g,"");return lc(val)}if(key==="formatblock"){val=_nativeCommandValue(doc,key);if(val===""){knode=self.commonNode({"h1,h2,h3,h4,h5,h6,p,div,pre,address":"*"});if(knode){val=knode.name}}if(val==="Normal"){val="p"}return lc(val)}if(key==="fontsize"){knode=self.commonNode({"*":".font-size"});if(knode){val=knode.css("font-size")}return lc(val)}if(key==="forecolor"){knode=self.commonNode({"*":".color"});if(knode){val=knode.css("color")}val=_toHex(val);if(val===""){val="default"}return lc(val)}if(key==="hilitecolor"){knode=self.commonNode({"*":".background-color"});if(knode){val=knode.css("background-color")}val=_toHex(val);if(val===""){val="default"}return lc(val)}return val},toggle:function(wrapper,map){var self=this;if(self.commonNode(map)){self.remove(map)}else{self.wrap(wrapper)}return self.select()},bold:function(){return this.toggle("<strong></strong>",{span:".font-weight=bold",strong:"*",b:"*"})},italic:function(){return this.toggle("<em></em>",{span:".font-style=italic",em:"*",i:"*"})},underline:function(){return this.toggle("<u></u>",{span:".text-decoration=underline",u:"*"})},strikethrough:function(){return this.toggle("<s></s>",{span:".text-decoration=line-through",s:"*"})},forecolor:function(val){return this.wrap('<span style="color:'+val+';"></span>').select()},hilitecolor:function(val){return this.wrap('<span style="background-color:'+val+';"></span>').select()},fontsize:function(val){return this.wrap('<span style="font-size:'+val+';"></span>').select()},fontname:function(val){return this.fontfamily(val)},fontfamily:function(val){return this.wrap('<span style="font-family:'+val+';"></span>').select()},removeformat:function(){var map={"*":".font-weight,.font-style,.text-decoration,.color,.background-color,.font-size,.font-family,.text-indent"},tags=_STYLE_TAG_MAP;_each(tags,function(key,val){map[key]="*"});this.remove(map);return this.select()},inserthtml:function(val,quickMode){var self=this,range=self.range;if(val===""){return self}function pasteHtml(range,val){val='<img id="__kindeditor_temp_tag__" width="0" height="0" style="display:none;" />'+val;var rng=range.get();if(rng.item){rng.item(0).outerHTML=val}else{rng.pasteHTML(val)}var temp=range.doc.getElementById("__kindeditor_temp_tag__");temp.parentNode.removeChild(temp);var newRange=_toRange(rng);range.setEnd(newRange.endContainer,newRange.endOffset);range.collapse(false);self.select(false)}function insertHtml(range,val){var doc=range.doc,frag=doc.createDocumentFragment();K("@"+val,doc).each(function(){frag.appendChild(this)});range.deleteContents();range.insertNode(frag);range.collapse(false);self.select(false)}if(_IERANGE&&quickMode){try{pasteHtml(range,val)}catch(e){insertHtml(range,val)}return self}insertHtml(range,val);return self},hr:function(){return this.inserthtml("<hr />")},print:function(){this.win.print();return this},insertimage:function(url,title,width,height,border,align){title=_undef(title,"");border=_undef(border,0);var html='<img src="'+_escape(url)+'" data-ke-src="'+_escape(url)+'" ';if(width){html+='width="'+_escape(width)+'" '}if(height){html+='height="'+_escape(height)+'" '}if(title){html+='title="'+_escape(title)+'" '}if(align){html+='align="'+_escape(align)+'" '}html+='alt="'+_escape(title)+'" ';html+="/>";return this.inserthtml(html)},createlink:function(url,type){var self=this,doc=self.doc,range=self.range;self.select();var a=self.commonNode({a:"*"});if(a&&!range.isControl()){range.selectNode(a.get());self.select()}var html='<a href="'+_escape(url)+'" data-ke-src="'+_escape(url)+'" ';if(type){html+=' target="'+_escape(type)+'"'}if(range.collapsed){html+=">"+_escape(url)+"</a>";return self.inserthtml(html)}if(range.isControl()){var node=K(range.startContainer.childNodes[range.startOffset]);html+="></a>";node.after(K(html,doc));node.next().append(node);range.selectNode(node[0]);return self.select()}function setAttr(node,url,type){K(node).attr("href",url).attr("data-ke-src",url);if(type){K(node).attr("target",type)}else{K(node).removeAttr("target")}}var sc=range.startContainer,so=range.startOffset,ec=range.endContainer,eo=range.endOffset;if(sc.nodeType==1&&sc===ec&&so+1===eo){var child=sc.childNodes[so];if(child.nodeName.toLowerCase()=="a"){setAttr(child,url,type);return self}}_nativeCommand(doc,"createlink","__kindeditor_temp_url__");K('a[href="__kindeditor_temp_url__"]',doc).each(function(){setAttr(this,url,type)});return self},unlink:function(){var self=this,doc=self.doc,range=self.range;self.select();if(range.collapsed){var a=self.commonNode({a:"*"});if(a){range.selectNode(a.get());self.select()}_nativeCommand(doc,"unlink",null);if(_WEBKIT&&K(range.startContainer).name==="img"){var parent=K(range.startContainer).parent();if(parent.name==="a"){parent.remove(true)}}}else{_nativeCommand(doc,"unlink",null)}return self}});_each(("formatblock,selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,"+"insertunorderedlist,indent,outdent,subscript,superscript").split(","),function(i,name){KCmd.prototype[name]=function(val){var self=this;self.select();_nativeCommand(self.doc,name,val);if(_IERANGE&&_inArray(name,"justifyleft,justifycenter,justifyright,justifyfull".split(","))>=0){self.selection()}if(!_IERANGE||_inArray(name,"formatblock,selectall,insertorderedlist,insertunorderedlist".split(","))>=0){self.selection()}return self}});_each("cut,copy,paste".split(","),function(i,name){KCmd.prototype[name]=function(){var self=this;if(!self.doc.queryCommandSupported(name)){throw"not supported"}self.select();_nativeCommand(self.doc,name,null);return self}});function _cmd(mixed){if(mixed.nodeName){var doc=_getDoc(mixed);mixed=_range(doc).selectNodeContents(doc.body).collapse(false)}return new KCmd(mixed)}K.CmdClass=KCmd;K.cmd=_cmd;function _drag(options){var moveEl=options.moveEl,moveFn=options.moveFn,clickEl=options.clickEl||moveEl,beforeDrag=options.beforeDrag,iframeFix=options.iframeFix===undefined?true:options.iframeFix;var docs=[document];if(iframeFix){K("iframe").each(function(){var src=_formatUrl(this.src||"","absolute");if(/^https?:\/\//.test(src)){return}var doc;try{doc=_iframeDoc(this)}catch(e){}if(doc){var pos=K(this).pos();K(doc).data("pos-x",pos.x);K(doc).data("pos-y",pos.y);docs.push(doc)}})}clickEl.mousedown(function(e){if(e.button!==0&&e.button!==1){return}e.stopPropagation();var self=clickEl.get(),x=_removeUnit(moveEl.css("left")),y=_removeUnit(moveEl.css("top")),width=moveEl.width(),height=moveEl.height(),pageX=e.pageX,pageY=e.pageY;if(beforeDrag){beforeDrag()}function moveListener(e){e.preventDefault();var kdoc=K(_getDoc(e.target));var diffX=_round((kdoc.data("pos-x")||0)+e.pageX-pageX);var diffY=_round((kdoc.data("pos-y")||0)+e.pageY-pageY);moveFn.call(clickEl,x,y,width,height,diffX,diffY)}function selectListener(e){e.preventDefault()}function upListener(e){e.preventDefault();K(docs).unbind("mousemove",moveListener).unbind("mouseup",upListener).unbind("selectstart",selectListener);if(self.releaseCapture){self.releaseCapture()}}K(docs).mousemove(moveListener).mouseup(upListener).bind("selectstart",selectListener);if(self.setCapture){self.setCapture()}})}function KWidget(options){this.init(options)}_extend(KWidget,{init:function(options){var self=this;self.name=options.name||"";self.doc=options.doc||document;self.win=_getWin(self.doc);self.x=_addUnit(options.x);self.y=_addUnit(options.y);self.z=options.z;self.width=_addUnit(options.width);self.height=_addUnit(options.height);self.div=K('<div style="display:block;"></div>');self.options=options;self._alignEl=options.alignEl;if(self.width){self.div.css("width",self.width)}if(self.height){self.div.css("height",self.height)}if(self.z){self.div.css({position:"absolute",left:self.x,top:self.y,"z-index":self.z})}if(self.z&&(self.x===undefined||self.y===undefined)){self.autoPos(self.width,self.height)}if(options.cls){self.div.addClass(options.cls)}if(options.shadowMode){self.div.addClass("ke-shadow")}if(options.css){self.div.css(options.css)}if(options.src){K(options.src).replaceWith(self.div)}else{K(self.doc.body).append(self.div)}if(options.html){self.div.html(options.html)}if(options.autoScroll){if(_IE&&_V<7||_QUIRKS){var scrollPos=_getScrollPos();K(self.win).bind("scroll",function(e){var pos=_getScrollPos(),diffX=pos.x-scrollPos.x,diffY=pos.y-scrollPos.y;self.pos(_removeUnit(self.x)+diffX,_removeUnit(self.y)+diffY,false)})}else{self.div.css("position","fixed")}}},pos:function(x,y,updateProp){var self=this;updateProp=_undef(updateProp,true);if(x!==null){x=x<0?0:_addUnit(x);self.div.css("left",x);if(updateProp){self.x=x}}if(y!==null){y=y<0?0:_addUnit(y);self.div.css("top",y);if(updateProp){self.y=y}}return self},autoPos:function(width,height){var x,y,self=this,w=_removeUnit(width)||0,h=_removeUnit(height)||0,scrollPos=_getScrollPos();if(self._alignEl){var knode=K(self._alignEl),pos=knode.pos(),diffX=_round(knode[0].clientWidth/2-w/2),diffY=_round(knode[0].clientHeight/2-h/2);x=diffX<0?pos.x:pos.x+diffX}else{var docEl=_docElement(self.doc);x=_round(scrollPos.x+(docEl.clientWidth-w)/2);y=_round(scrollPos.y+(docEl.clientHeight-h)/2)}if(K.options.dialogOffset>0){y=scrollPos.y+20}if(!(_IE&&_V<7||_QUIRKS)){x-=scrollPos.x;y-=scrollPos.y}return self.pos(x,y)},remove:function(){var self=this;if(_IE&&_V<7||_QUIRKS){K(self.win).unbind("scroll")}self.div.remove();_each(self,function(i){self[i]=null});return this},show:function(){this.div.show();return this},hide:function(){this.div.hide();return this},draggable:function(options){var self=this;options=options||{};options.moveEl=self.div;options.moveFn=function(x,y,width,height,diffX,diffY){if((x=x+diffX)<0){x=0}if((y=y+diffY)<0){y=0}self.pos(x,y)};_drag(options);return self}});function _widget(options){return new KWidget(options)}K.WidgetClass=KWidget;K.widget=_widget;function _iframeDoc(iframe){iframe=_get(iframe);return iframe.contentDocument||iframe.contentWindow.document}var html,_direction="";if(html=document.getElementsByTagName("html")){_direction=html[0].dir}function _getInitHtml(options){var themesPath=_undef(options.themesPath,""),bodyClass=options.bodyClass,cssPath=options.cssPath,jsPath=options.jsPath,cssData=options.cssData;var arr=[_direction===""?"<html>":'<html dir="'+_direction+'">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}","img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/flash.svg);","\t*background-image:url("+themesPath+"common/flash.png);","\tbackground-size:64px 64px;","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+themesPath+"common/play.svg);","\t*background-image:url("+themesPath+"common/play.png);","\tbackground-position:center center;","\tbackground-size:64px 64px;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}"];if(options.showHelpGrid){arr.push("p,ul,ol,li,div{border: 1px dashed #c1c1c1;}");arr.push("li{margin:5px 0px}");arr.push("div,ul,ol{margin-bottom:10px}")}arr.push("</style>");if(!_isArray(cssPath)){cssPath=[cssPath]}if(_inArray(K.basePath+"themes/app.css",cssPath)<0){cssPath.push(K.basePath+"themes/app.css")}_each(cssPath,function(i,path){if(path){arr.push('<link href="'+path+'" rel="stylesheet" />')}});if(cssData){arr.push("<style>"+cssData+"</style>")}arr.push("</head><body "+(bodyClass?'class="'+bodyClass+'"':"")+">");if(!_isArray(jsPath)){jsPath=[jsPath]}_each(jsPath,function(i,path){if(path){arr.push('<script type="text/javascript" src="'+path+'"><\/script>')}});arr.push("</body></html>");return arr.join("\n")}function _elementVal(knode,val){if(knode.hasVal()){if(val===undefined){var html=knode.val();html=html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"");return html}return knode.val(val)}return knode.html(val)}function KEdit(options){this.init(options)}_extend(KEdit,KWidget,{init:function(options){var self=this;KEdit.parent.init.call(self,options);self.srcElement=K(options.srcElement);self.div.addClass("ke-edit");self.designMode=_undef(options.designMode,true);self.beforeGetHtml=options.beforeGetHtml;self.beforeSetHtml=options.beforeSetHtml;self.afterSetHtml=options.afterSetHtml;var isDocumentDomain=location.protocol!="res:"&&location.host.replace(/:\d+/,"")!==document.domain,srcScript="document.open();"+(isDocumentDomain?'document.domain="'+document.domain+'";':"")+"document.close();",iframeSrc=_IE?' src="javascript:void(function(){'+encodeURIComponent(srcScript)+'}())"':"";self.iframe=K('<iframe class="ke-edit-iframe" hidefocus="true" frameborder="0"'+iframeSrc+"></iframe>").css("width","100%");self.textarea=K('<textarea class="ke-edit-textarea" hidefocus="true"></textarea>').css("width","100%");self.tabIndex=isNaN(parseInt(options.tabIndex,10))?self.srcElement.attr("tabindex"):parseInt(options.tabIndex,10);self.iframe.attr("tabindex",self.tabIndex);self.textarea.attr("tabindex",self.tabIndex);if(self.width){self.setWidth(self.width)}if(self.height){self.setHeight(self.height)}if(self.designMode){self.textarea.hide()}else{self.iframe.hide()}function ready(){var doc=_iframeDoc(self.iframe);doc.open();if(isDocumentDomain){doc.domain=document.domain}doc.write(_getInitHtml(self.options));doc.close();self.win=self.iframe[0].contentWindow;self.doc=doc;var cmd=_cmd(doc);self.afterChange(function(e){cmd.selection()});if(_WEBKIT){K(doc).click(function(e){if(K(e.target).name==="img"){cmd.selection(true);cmd.range.selectNode(e.target);cmd.select()}})}if(_IE){self._mousedownHandler=function(){var newRange=cmd.range.cloneRange();newRange.shrink();if(newRange.isControl()){self.blur()}};K(document).mousedown(self._mousedownHandler);K(doc).keydown(function(e){if(e.which==8){cmd.selection();var rng=cmd.range;if(rng.isControl()){rng.collapse(true);K(rng.startContainer.childNodes[rng.startOffset]).remove();e.preventDefault()}}})}self.cmd=cmd;self.html(_elementVal(self.srcElement));if(_IE){doc.body.disabled=true;doc.body.contentEditable=true;doc.body.removeAttribute("disabled")}else{doc.designMode="on"}if(options.afterCreate){options.afterCreate.call(self)}}if(isDocumentDomain){self.iframe.bind("load",function(e){self.iframe.unbind("load");if(_IE){ready()}else{setTimeout(ready,0)}})}self.div.append(self.iframe);self.div.append(self.textarea);self.srcElement.hide();!isDocumentDomain&&ready()},setWidth:function(val){var self=this;val=_addUnit(val);self.width=val;self.div.css("width",val);return self},setHeight:function(val){var self=this;val=_addUnit(val);self.height=val;self.div.css("height",val);self.iframe.css("height",val);if(_IE&&_V<8||_QUIRKS){val=_addUnit(_removeUnit(val)-2)}self.textarea.css("height",val);return self},remove:function(){var self=this,doc=self.doc;K(doc.body).unbind();K(doc).unbind();K(self.win).unbind();if(self._mousedownHandler){K(document).unbind("mousedown",self._mousedownHandler)}_elementVal(self.srcElement,self.html());self.srcElement.show();self.iframe.unbind();self.textarea.unbind();KEdit.parent.remove.call(self)},html:function(val,isFull){var self=this,doc=self.doc;if(self.designMode){var body=doc.body;if(val===undefined){if(isFull){val="<!doctype html><html>"+body.parentNode.innerHTML+"</html>"}else{val=body.innerHTML}if(self.beforeGetHtml){val=self.beforeGetHtml(val)}if(_GECKO&&val=="<br />"){val=""}return val}if(self.beforeSetHtml){val=self.beforeSetHtml(val)}if(_IE&&_V>=9){val=val.replace(/(<.*?checked=")checked(".*>)/gi,"$1$2")}K(body).html(val);if(self.afterSetHtml){self.afterSetHtml()}return self}if(val===undefined){return self.textarea.val()}self.textarea.val(val);return self},design:function(bool){var self=this,val;if(bool===undefined?!self.designMode:bool){if(!self.designMode){val=self.html();self.designMode=true;self.textarea.hide();self.html(val);var iframe=self.iframe;var height=_removeUnit(self.height);iframe.height(height-2);iframe.show();setTimeout(function(){iframe.height(height)},0)}}else{if(self.designMode){val=self.html();self.designMode=false;self.html(val);self.iframe.hide();self.textarea.show()}}return self.focus()},focus:function(){var self=this;self.designMode?self.win.focus():self.textarea[0].focus();return self},blur:function(){var self=this;if(_IE){var input=K('<input type="text" style="float:left;width:0;height:0;padding:0;margin:0;border:0;" value="" />',self.div);self.div.append(input);input[0].focus();input.remove()}else{self.designMode?self.win.blur():self.textarea[0].blur()}return self},afterChange:function(fn){var self=this,doc=self.doc,body=doc.body;K(doc).keyup(function(e){if(!e.ctrlKey&&!e.altKey&&_CHANGE_KEY_MAP[e.which]){fn(e)}});K(doc).mouseup(fn).contextmenu(fn);K(self.win).blur(fn);function timeoutHandler(e){setTimeout(function(){fn(e)},1)}K(body).bind("paste",timeoutHandler);K(body).bind("cut",timeoutHandler);return self}});function _edit(options){return new KEdit(options)}K.EditClass=KEdit;K.edit=_edit;K.iframeDoc=_iframeDoc;function _selectToolbar(name,fn){var self=this,knode=self.get(name);if(knode){if(knode.hasClass("ke-disabled")){return}fn(knode)}}function KToolbar(options){this.init(options)}_extend(KToolbar,KWidget,{init:function(options){var self=this;KToolbar.parent.init.call(self,options);self.disableMode=_undef(options.disableMode,false);self.noDisableItemMap=_toMap(_undef(options.noDisableItems,[]));self._itemMap={};self.div.addClass("ke-toolbar").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()}).attr("unselectable","on");function find(target){var knode=K(target);if(knode.hasClass("ke-outline")){return knode}if(knode.hasClass("ke-toolbar-icon")){return knode.parent()}}function hover(e,method){var knode=find(e.target);if(knode){if(knode.hasClass("ke-disabled")){return}if(knode.hasClass("ke-selected")){return}knode[method]("ke-on")}}self.div.mouseover(function(e){hover(e,"addClass")}).mouseout(function(e){hover(e,"removeClass")}).click(function(e){var knode=find(e.target);if(knode){if(knode.hasClass("ke-disabled")){return}self.options.click.call(this,e,knode.attr("data-name"))}})},get:function(name){if(this._itemMap[name]){return this._itemMap[name]}return this._itemMap[name]=K("span.ke-icon-"+name,this.div).parent()},select:function(name){_selectToolbar.call(this,name,function(knode){knode.addClass("ke-selected")});return self},unselect:function(name){_selectToolbar.call(this,name,function(knode){knode.removeClass("ke-selected").removeClass("ke-on")});return self},enable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass("ke-disabled");knode.opacity(1)}return self},disable:function(name){var self=this,knode=name.get?name:self.get(name);if(knode){knode.removeClass("ke-selected").addClass("ke-disabled");knode.opacity(.5)}return self},disableAll:function(bool,noDisableItems){var self=this,map=self.noDisableItemMap,item;if(noDisableItems){map=_toMap(noDisableItems)}if(bool===undefined?!self.disableMode:bool){K("span.ke-outline",self.div).each(function(){var knode=K(this),name=knode[0].getAttribute("data-name",2);if(!map[name]){self.disable(knode)}});self.disableMode=true}else{K("span.ke-outline",self.div).each(function(){var knode=K(this),name=knode[0].getAttribute("data-name",2);if(!map[name]){self.enable(knode)}});self.disableMode=false}return self}});function _toolbar(options){return new KToolbar(options)}K.ToolbarClass=KToolbar;K.toolbar=_toolbar;function KMenu(options){this.init(options)}_extend(KMenu,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KMenu.parent.init.call(self,options);self.centerLineMode=_undef(options.centerLineMode,true);self.div.addClass("ke-menu ke-menu-"+options.themeType).bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on")},addItem:function(item){var self=this;if(item.title==="-"){self.div.append(K('<div class="ke-menu-separator"></div>'));return}var itemDiv=K('<div class="ke-menu-item" unselectable="on"></div>'),leftDiv=K('<div class="ke-inline-block ke-menu-item-left"></div>'),rightDiv=K('<div class="ke-inline-block ke-menu-item-right"></div>'),height=_addUnit(item.height),iconClass=_undef(item.iconClass,"");self.div.append(itemDiv);if(height){itemDiv.css("height",height);rightDiv.css("line-height",height)}var centerDiv;if(self.centerLineMode){centerDiv=K('<div class="ke-inline-block ke-menu-item-center"></div>');if(height){centerDiv.css("height",height)}}itemDiv.mouseover(function(e){K(this).addClass("ke-menu-item-on");if(centerDiv){centerDiv.addClass("ke-menu-item-center-on")}}).mouseout(function(e){K(this).removeClass("ke-menu-item-on");if(centerDiv){centerDiv.removeClass("ke-menu-item-center-on")}}).click(function(e){item.click.call(K(this));e.stopPropagation()}).append(leftDiv);if(centerDiv){itemDiv.append(centerDiv)}itemDiv.append(rightDiv);if(item.checked){iconClass="ke-icon-checked"}if(iconClass!==""){leftDiv.html('<span class="ke-inline-block ke-toolbar-icon ke-toolbar-icon-url '+iconClass+'"></span>')}rightDiv.html(item.title);return self},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self)}K(".ke-menu-item",self.div[0]).unbind();KMenu.parent.remove.call(self);return self}});function _menu(options){return new KMenu(options)}K.MenuClass=KMenu;K.menu=_menu;function KColorPicker(options){this.init(options)}_extend(KColorPicker,KWidget,{init:function(options){var self=this;options.z=options.z||811213;KColorPicker.parent.init.call(self,options);var colors=options.colors||[["#E53333","#E56600","#FF9900","#64451D","#DFC5A4","#FFE500"],["#009900","#006600","#99BB00","#B8D100","#60D978","#00D5FF"],["#337FE5","#003399","#4C33E5","#9933E5","#CC33E5","#EE33EE"],["#FFFFFF","#CCCCCC","#999999","#666666","#333333","#000000"]];self.selectedColor=(options.selectedColor||"").toLowerCase();self._cells=[];self.div.addClass("ke-colorpicker").bind("click,mousedown",function(e){e.stopPropagation()}).attr("unselectable","on");var table=self.doc.createElement("table");self.div.append(table);table.className="ke-colorpicker-table";table.cellPadding=0;table.cellSpacing=0;table.border=0;var row=table.insertRow(0),cell=row.insertCell(0);cell.colSpan=colors[0].length;self._addAttr(cell,"","ke-colorpicker-cell-top");for(var i=0;i<colors.length;i++){row=table.insertRow(i+1);for(var j=0;j<colors[i].length;j++){cell=row.insertCell(j);self._addAttr(cell,colors[i][j],"ke-colorpicker-cell")}}},_addAttr:function(cell,color,cls){var self=this;cell=K(cell).addClass(cls);if(self.selectedColor===color.toLowerCase()){cell.addClass("ke-colorpicker-cell-selected")}cell.attr("title",color||self.options.noColor);cell.mouseover(function(e){K(this).addClass("ke-colorpicker-cell-on")});cell.mouseout(function(e){K(this).removeClass("ke-colorpicker-cell-on")});cell.click(function(e){e.stop();self.options.click.call(K(this),color)});if(color){cell.append(K('<div class="ke-colorpicker-cell-color" unselectable="on"></div>').css("background-color",color))}else{cell.html(self.options.noColor)}K(cell).attr("unselectable","on");self._cells.push(cell)},remove:function(){var self=this;_each(self._cells,function(){this.unbind()});KColorPicker.parent.remove.call(self);return self}});function _colorpicker(options){return new KColorPicker(options)}K.ColorPickerClass=KColorPicker;K.colorpicker=_colorpicker;function KUploadButton(options){this.init(options)}_extend(KUploadButton,{init:function(options){var self=this,button=K(options.button),fieldName=options.fieldName||"file",url=options.url||"",title=button.val(),extraParams=options.extraParams||{},cls=button[0].className||"",target=options.target||"kindeditor_upload_iframe_"+(new Date).getTime();options.afterError=options.afterError||function(str){K.options.errorMsgHandler(str,"error")};var hiddenElements=[];for(var k in extraParams){hiddenElements.push('<input type="hidden" name="'+k+'" value="'+extraParams[k]+'" />')}var html=['<div class="ke-inline-block '+cls+'">',options.target?"":'<iframe name="'+target+'" style="display:none;"></iframe>',options.form?'<div class="ke-upload-area">':'<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+target+'" action="'+url+'">','<span class="ke-button-common">',hiddenElements.join(""),'<input type="button" class="ke-button-common ke-button" value="'+title+'" />',"</span>",'<input type="file" class="ke-upload-file" name="'+fieldName+'" tabindex="-1" />',options.form?"</div>":"</form>","</div>"].join("");var div=K(html,button.doc);button.hide();button.before(div);self.div=div;self.button=button;self.iframe=options.target?K('iframe[name="'+target+'"]'):K("iframe",div);self.form=options.form?K(options.form):K("form",div);self.fileBox=K(".ke-upload-file",div);var width=options.width||K(".ke-button-common",div).width();K(".ke-upload-area",div).width(width);self.options=options},submit:function(){var self=this,iframe=self.iframe;if(typeof self.options.beforeUpload=="function"){var result=self.options.beforeUpload.call(self);if(!result){return false}}iframe.bind("load",function(){iframe.unbind();var tempForm=document.createElement("form");self.fileBox.before(tempForm);K(tempForm).append(self.fileBox);tempForm.reset();K(tempForm).remove(true);var doc=K.iframeDoc(iframe),pre=doc.getElementsByTagName("pre")[0],str="",data;if(pre){str=pre.innerHTML}else{str=doc.body.innerHTML}str=_unescape(str);iframe[0].src="javascript:false";try{data=K.json(str)}catch(e){self.options.afterError.call(self,"<!doctype html><html>"+doc.body.parentNode.innerHTML+"</html>")}if(data){self.options.afterUpload.call(self,data)}});self.form[0].submit();return self},remove:function(){var self=this;if(self.fileBox){self.fileBox.unbind()}self.iframe.remove();self.div.remove();self.button.show();return self}});function _uploadbutton(options){return new KUploadButton(options)}K.UploadButtonClass=KUploadButton;K.uploadbutton=_uploadbutton;function _createButton(arg){arg=arg||{};var name=arg.name||"",btn=K('<a href="javascript:;" class="ke-dialog-btn" title="'+name+'">'+name+"</a>");if(arg.click){btn.click(arg.click)}return btn}function KDialog(options){this.init(options)}_extend(KDialog,KWidget,{init:function(options){var self=this;options.z=options.z||811213;options.shadowMode=false;options.autoScroll=_undef(options.autoScroll,true);KDialog.parent.init.call(self,options);var title=options.title,body=K(options.body,self.doc),previewBtn=options.previewBtn,yesBtn=options.yesBtn,noBtn=options.noBtn,closeBtn=options.closeBtn,showMask=_undef(options.showMask,true);self.div.addClass("ke-dialog ke-animated").bind("click,mousedown",function(e){e.stopPropagation()});var contentDiv=K('<div class="ke-dialog-content"></div>').appendTo(self.div);var headerDiv=K('<div class="ke-dialog-header"></div>');contentDiv.append(headerDiv);headerDiv.html(title);self.closeIcon=K('<span class="ke-dialog-icon-close" title="'+closeBtn.name+'"></span>').click(closeBtn.click);headerDiv.append(self.closeIcon);self.draggable({clickEl:headerDiv,beforeDrag:options.beforeDrag});var bodyDiv=K('<div class="ke-dialog-body"></div>');contentDiv.append(bodyDiv);bodyDiv.append(body);var footerDiv=K('<div class="ke-dialog-footer"></div>');if(previewBtn||yesBtn||noBtn){self.div.append(footerDiv);contentDiv.height(self.div.height()-footerDiv.height())}_each([{btn:previewBtn,name:"preview"},{btn:yesBtn,name:"yes"},{btn:noBtn,name:"no"}],function(){if(this.btn){var button=_createButton(this.btn);button.addClass("ke-dialog-"+this.name);footerDiv.append(button)}});if(self.height){bodyDiv.height(_removeUnit(self.height)-headerDiv.height()-footerDiv.height())}self.div.width(self.div.width());self.div.height(self.div.height());self.mask=null;if(showMask){var docEl=_docElement(self.doc),docWidth=Math.max(docEl.scrollWidth,docEl.clientWidth),docHeight=Math.max(docEl.scrollHeight,docEl.clientHeight);self.mask=_widget({x:0,y:0,z:self.z-1,cls:"ke-dialog-mask",width:docWidth,height:docHeight})}self.autoPos(self.div.width(),self.div.height());self.footerDiv=footerDiv;self.bodyDiv=bodyDiv;self.headerDiv=headerDiv;self.isLoading=false},setMaskIndex:function(z){var self=this;self.mask.div.css("z-index",z)},showLoading:function(msg){msg=_undef(msg,"");var self=this,body=self.bodyDiv;self.loading=K('<div class="ke-dialog-loading"><div class="ke-inline-block ke-dialog-loading-content" style="margin-top:'+Math.round(body.height()/3)+'px;">'+msg+"</div></div>").width(body.width()).height(body.height()).css("top",self.headerDiv.height()+"px");body.css("visibility","hidden").after(self.loading);self.isLoading=true;return self},hideLoading:function(){this.loading&&this.loading.remove();this.bodyDiv.css("visibility","visible");this.isLoading=false;return this},remove:function(){var self=this;if(self.options.beforeRemove){self.options.beforeRemove.call(self)}self.mask&&self.mask.remove();self.iframeMask&&self.iframeMask.remove();self.closeIcon.unbind();K("input",self.div).unbind();K("button",self.div).unbind();self.footerDiv.unbind();self.bodyDiv.unbind();self.headerDiv.unbind();K("iframe",self.div).each(function(){K(this).remove()});KDialog.parent.remove.call(self);return self}});function _dialog(options){return new KDialog(options)}K.DialogClass=KDialog;K.dialog=_dialog;function _tabs(options){var self=_widget(options),remove=self.remove,afterSelect=options.afterSelect,div=self.div,liList=[];div.addClass("ke-tabs").bind("contextmenu,mousedown,mousemove",function(e){e.preventDefault()});var ul=K('<ul class="ke-tabs-ul ke-clearfix"></ul>');div.append(ul);self.add=function(tab){var li=K('<li class="ke-tabs-li">'+tab.title+"</li>");li.data("tab",tab);liList.push(li);ul.append(li)};self.selectedIndex=0;self.select=function(index){self.selectedIndex=index;_each(liList,function(i,li){li.unbind();if(i===index){li.addClass("ke-tabs-li-selected");K(li.data("tab").panel).show("")}else{li.removeClass("ke-tabs-li-selected").removeClass("ke-tabs-li-on").mouseover(function(){K(this).addClass("ke-tabs-li-on")}).mouseout(function(){K(this).removeClass("ke-tabs-li-on")}).click(function(){self.select(i)});K(li.data("tab").panel).hide()}});if(afterSelect){afterSelect.call(self,index)}};self.remove=function(){_each(liList,function(){this.remove()});ul.remove();remove.call(self)};return self}K.tabs=_tabs;function _loadScript(url,fn){if(K.options.resLoadCache[url]){return}var head=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),script=document.createElement("script");head.appendChild(script);K.options.resLoadCache[url]=1;script.src=url;script.charset="utf-8";script.onload=script.onreadystatechange=function(){if(!this.readyState||this.readyState==="loaded"){if(fn){fn()}script.onload=script.onreadystatechange=null;head.removeChild(script)}}}function _chopQuery(url){var index=url.indexOf("?");return index>0?url.substr(0,index):url}function _loadStyle(url){if(K.options.resLoadCache[url]){return}var head=document.getElementsByTagName("head")[0]||(_QUIRKS?document.body:document.documentElement),link=document.createElement("link"),absoluteUrl=_chopQuery(_formatUrl(url,"absolute"));var links=K('link[rel="stylesheet"]',head);for(var i=0,len=links.length;i<len;i++){if(_chopQuery(_formatUrl(links[i].href,"absolute"))===absoluteUrl){return}}head.appendChild(link);K.options.resLoadCache[url]=1;link.href=url;link.rel="stylesheet"}function _ajax(url,fn,method,param,dataType){method=method||"GET";dataType=dataType||"json";var xhr=window.XMLHttpRequest?new window.XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP");xhr.open(method,url,true);xhr.onreadystatechange=function(){if(xhr.readyState==4&&xhr.status==200){if(fn){var data=_trim(xhr.responseText);if(dataType=="json"){data=_json(data)}fn(data)}}};if(method=="POST"){var params=[];_each(param,function(key,val){params.push(encodeURIComponent(key)+"="+encodeURIComponent(val))});try{xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}catch(e){}xhr.send(params.join("&"))}else{xhr.send(null)}}K.loadScript=_loadScript;K.loadStyle=_loadStyle;K.ajax=_ajax;var _plugins={};function _plugin(name,fn){if(name===undefined){return _plugins}if(!fn){return _plugins[name]}_plugins[name]=fn}var _language={};function _parseLangKey(key){var match,ns="core";if(match=/^(\w+)\.(\w+)$/.exec(key)){ns=match[1];key=match[2]}return{ns:ns,key:key}}function _lang(mixed,langType){langType=langType===undefined?K.options.langType:langType;if(typeof mixed==="string"){if(!_language[langType]){return"no language"}var pos=mixed.length-1;if(mixed.substr(pos)==="."){return _language[langType][mixed.substr(0,pos)]}var obj=_parseLangKey(mixed);return _language[langType][obj.ns][obj.key]}_each(mixed,function(key,val){var obj=_parseLangKey(key);if(!_language[langType]){_language[langType]={}}if(!_language[langType][obj.ns]){_language[langType][obj.ns]={}}_language[langType][obj.ns][obj.key]=val})}function _getImageFromRange(range,fn){if(range.collapsed){return}range=range.cloneRange().up();var sc=range.startContainer,so=range.startOffset;if(!_WEBKIT&&!range.isControl()){return}var img=K(sc.childNodes[so]);if(!img||img.name!="img"){return}if(fn(img)){return img}}function _bindContextmenuEvent(){var self=this,doc=self.edit.doc;K(doc).contextmenu(function(e){if(self.menu){self.hideMenu()}if(!self.useContextmenu){e.preventDefault();return}if(self._contextmenus.length===0){return}var maxWidth=0,items=[];_each(self._contextmenus,function(){if(this.title=="-"){items.push(this);return}if(this.cond&&this.cond()){items.push(this);if(this.width&&this.width>maxWidth){maxWidth=this.width}}});while(items.length>0&&items[0].title=="-"){items.shift()}while(items.length>0&&items[items.length-1].title=="-"){items.pop()}var prevItem=null;_each(items,function(i){if(this.title=="-"&&prevItem.title=="-"){delete items[i]}prevItem=this});if(items.length>0){e.preventDefault();var pos=K(self.edit.iframe).pos(),menu=_menu({x:pos.x+e.clientX,themeType:self.themeType,y:pos.y+e.clientY,width:maxWidth,css:{visibility:"hidden"},shadowMode:self.shadowMode});_each(items,function(){if(this.title){menu.addItem(this)}});var docEl=_docElement(menu.doc),menuHeight=menu.div.height();if(e.clientY+menuHeight>=docEl.clientHeight-100){menu.pos(menu.x,_removeUnit(menu.y)-menuHeight)}menu.div.css("visibility","visible");self.menu=menu}})}function _bindNewlineEvent(){var self=this,doc=self.edit.doc,newlineTag=self.newlineTag;if(_IE&&newlineTag!=="br"){return}if(_GECKO&&_V<3&&newlineTag!=="p"){return}if(_OPERA&&_V<9){return}var brSkipTagMap=_toMap("h1,h2,h3,h4,h5,h6,pre,li"),pSkipTagMap=_toMap("p,h1,h2,h3,h4,h5,h6,pre,li,blockquote");function getAncestorTagName(range){var ancestor=K(range.commonAncestor());while(ancestor){if(ancestor.type==1&&!ancestor.isStyle()){break}ancestor=ancestor.parent()}return ancestor.name}K(doc).keydown(function(e){if(e.which==39){if(self.__startOffset==self.cmd.range.startOffset){var tagName=getAncestorTagName(self.cmd.range);if(tagName!="body"){self.appendHtml("<br />")}}else{self.__startOffset=self.cmd.range.startOffset}return}if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return}self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=="marquee"||tagName=="select"){return}if(newlineTag==="br"&&!brSkipTagMap[tagName]){e.preventDefault();self.insertHtml("<br />"+(_IE&&_V<9?"":""));return}if(!pSkipTagMap[tagName]){_nativeCommand(doc,"formatblock","<p>")}});K(doc).keyup(function(e){if(e.which!=13||e.shiftKey||e.ctrlKey||e.altKey){return}if(newlineTag=="br"){return}if(_GECKO){var root=self.cmd.commonAncestor("p");var a=self.cmd.commonAncestor("a");if(a&&a.text()==""){a.remove(true);self.cmd.range.selectNodeContents(root[0]).collapse(true);self.cmd.select()}return}self.cmd.selection();var tagName=getAncestorTagName(self.cmd.range);if(tagName=="marquee"||tagName=="select"){return}if(!pSkipTagMap[tagName]){_nativeCommand(doc,"formatblock","<p>")}var div=self.cmd.commonAncestor("div");if(div){var p=K("<p></p>"),child=div[0].firstChild;while(child){var next=child.nextSibling;p.append(child);child=next}div.before(p);div.remove();self.cmd.range.selectNodeContents(p[0]);self.cmd.select()}})}function _bindTabEvent(){var self=this,doc=self.edit.doc;K(doc).keydown(function(e){if(e.which==9){e.preventDefault();if(self.afterTab){self.afterTab.call(self,e);return}var cmd=self.cmd,range=cmd.range;range.shrink();if(range.collapsed&&range.startContainer.nodeType==1){range.insertNode(K("@ ",doc)[0]);cmd.select()}self.insertHtml(" ")}})}function _bindFocusEvent(){var self=this;K(self.edit.textarea[0],self.edit.win).focus(function(e){if(self.afterFocus){self.afterFocus.call(self,e)}}).blur(function(e){if(self.afterBlur){self.afterBlur.call(self,e)}})}function _removeBookmarkTag(html){return _trim(html.replace(/<span [^>]*id="?__kindeditor_bookmark_\w+_\d+__"?[^>]*><\/span>/gi,""))}function _removeTempTag(html){return html.replace(/<div[^>]+class="?__kindeditor_paste__"?[^>]*>[\s\S]*?<\/div>/gi,"")}function _addBookmarkToStack(stack,bookmark){if(stack.length===0){stack.push(bookmark);return}var prev=stack[stack.length-1];if(_removeBookmarkTag(bookmark.html)!==_removeBookmarkTag(prev.html)){stack.push(bookmark)}}function _undoToRedo(fromStack,toStack){var self=this,edit=self.edit,body=edit.doc.body,range,bookmark;if(fromStack.length===0){return self}if(edit.designMode){range=self.cmd.range;bookmark=range.createBookmark(true);bookmark.html=body.innerHTML}else{bookmark={html:body.innerHTML}}_addBookmarkToStack(toStack,bookmark);var prev=fromStack.pop();if(_removeBookmarkTag(bookmark.html)===_removeBookmarkTag(prev.html)&&fromStack.length>0){prev=fromStack.pop()}if(edit.designMode){edit.html(prev.html);if(prev.start){range.moveToBookmark(prev);self.select()}}else{K(body).html(_removeBookmarkTag(prev.html))}return self}function KEditor(options){var self=this;self.options={};function setOption(key,val){if(KEditor.prototype[key]===undefined){self[key]=val}self.options[key]=val}_each(options,function(key,val){setOption(key,options[key])});_each(K.options,function(key,val){if(self[key]===undefined){setOption(key,val)}});var se=K(self.srcElement||"<textarea/>");if(!self.width){self.width=se[0].style.width||se.width()}if(!self.height){self.height=se[0].style.height||se.height()}setOption("width",_undef(self.width,self.minWidth));setOption("height",_undef(self.height,self.minHeight));setOption("width",_addUnit(self.width));setOption("height",_addUnit(self.height));if(_MOBILE&&(!_IOS||_V<534)){self.designMode=false}self.srcElement=se;self.initContent="";self.plugin={};self.isCreated=false;self._handlers={};self._contextmenus=[];self._undoStack=[];self._redoStack=[];self._firstAddBookmark=true;self.menu=self.contextmenu=null;self.dialogs=[]}KEditor.prototype={lang:function(mixed){return _lang(mixed,this.langType)},loadPlugin:function(name,fn){var self=this;var _pluginStatus=this._pluginStatus;if(!_pluginStatus){_pluginStatus=this._pluginStatus={}}if(_plugins[name]){if(!_isFunction(_plugins[name])){setTimeout(function(){self.loadPlugin(name,fn)},100);return self}if(!_pluginStatus[name]){_plugins[name].call(self,KindEditor);_pluginStatus[name]="inited"}if(fn){fn.call(self)}return self}_plugins[name]="loading";_loadScript(self.pluginsPath+name+"/"+name+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){setTimeout(function(){if(_plugins[name]){self.loadPlugin(name,fn)}},0)});return self},handler:function(key,fn){var self=this;if(!self._handlers[key]){self._handlers[key]=[]}if(_isFunction(fn)){self._handlers[key].push(fn);return self}_each(self._handlers[key],function(){fn=this.call(self,fn)});return fn},clickToolbar:function(name,fn){var self=this,key="clickToolbar"+name;if(fn===undefined){if(self._handlers[key]){return self.handler(key)}self.loadPlugin(name,function(){self.handler(key)});return self}return self.handler(key,fn)},updateState:function(){var self=this;_each(("justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,insertunorderedlist,"+"subscript,superscript,bold,italic,underline,strikethrough").split(","),function(i,name){self.cmd.state(name)?self.toolbar.select(name):self.toolbar.unselect(name)});return self},addContextmenu:function(item){this._contextmenus.push(item);return this},afterCreate:function(fn){return this.handler("afterCreate",fn)},beforeRemove:function(fn){return this.handler("beforeRemove",fn)},beforeGetHtml:function(fn){return this.handler("beforeGetHtml",fn)},beforeSetHtml:function(fn){return this.handler("beforeSetHtml",fn)},afterSetHtml:function(fn){return this.handler("afterSetHtml",fn)},create:function(){var self=this,fullscreenMode=self.fullscreenMode;if(self.isCreated){return self}if(self.srcElement.data("kindeditor")){return self}self.srcElement.data("kindeditor","true");if(fullscreenMode){_docElement().style.overflow="hidden"}else{_docElement().style.overflow=""}var width=fullscreenMode?_docElement().clientWidth+"px":self.width,height=fullscreenMode?_docElement().clientHeight+"px":self.height;if(_IE&&_V<8||_QUIRKS){height=_addUnit(_removeUnit(height)+2)}var container=self.container=K(self.layout);if(fullscreenMode){K(document.body).append(container)}else{self.srcElement.before(container)}var toolbarDiv=K(".toolbar",container),editDiv=K(".edit",container),statusbar=self.statusbar=K(".statusbar",container);container.removeClass("container").addClass("ke-container ke-container-"+self.themeType).css("width",width);if(fullscreenMode){container.css({position:"absolute",left:0,top:0,"z-index":811211});if(!_GECKO){self._scrollPos=_getScrollPos()}window.scrollTo(0,0);K(document.body).css({height:"1px",overflow:"hidden"});K(document.body.parentNode).css("overflow","hidden");self._fullscreenExecuted=true}else{if(self._fullscreenExecuted){K(document.body).css({height:"",overflow:""});K(document.body.parentNode).css("overflow","")}if(self._scrollPos){window.scrollTo(self._scrollPos.x,self._scrollPos.y)}}var htmlList=[];K.each(self.items,function(i,name){if(name=="|"){htmlList.push('<span class="ke-inline-block ke-separator"></span>')}else if(name=="/"){htmlList.push('<div class="ke-hr"></div>')}else{htmlList.push('<span class="ke-outline" data-name="'+name+'" title="'+self.lang(name)+'" unselectable="on">');htmlList.push('<span class="ke-toolbar-icon ke-toolbar-icon-url ke-icon-'+name+'" unselectable="on"></span></span>')}});var toolbar=self.toolbar=_toolbar({src:toolbarDiv,html:htmlList.join(""),noDisableItems:self.noDisableItems,click:function(e,name){e.stop();if(self.menu){var menuName=self.menu.name;self.hideMenu();if(menuName===name){return}}self.clickToolbar(name)}});var editHeight=_removeUnit(height)-toolbar.div.height();var edit=self.edit=_edit({height:editHeight>0&&_removeUnit(height)>self.minHeight?editHeight:self.minHeight,src:editDiv,srcElement:self.srcElement,designMode:self.designMode,themesPath:self.themesPath,bodyClass:self.bodyClass,cssPath:self.cssPath,jsPath:self.jsPath,showHelpGrid:self.showHelpGrid,cssData:self.cssData,beforeGetHtml:function(html){html=self.beforeGetHtml(html);html=_removeBookmarkTag(_removeTempTag(html));return _formatHtml(html,self.filterMode?self.htmlTags:null,self.urlType,self.wellFormatMode,self.indentChar)},beforeSetHtml:function(html){html=_formatHtml(html,self.filterMode?self.htmlTags:null,"",false);return self.beforeSetHtml(html)},afterSetHtml:function(){self.edit=edit=this;self.afterSetHtml()},afterCreate:function(){self.edit=edit=this;self.cmd=edit.cmd;self._docMousedownFn=function(e){if(self.menu){self.hideMenu()}};K(edit.doc,document).mousedown(self._docMousedownFn);_bindContextmenuEvent.call(self);_bindNewlineEvent.call(self);_bindTabEvent.call(self);_bindFocusEvent.call(self);edit.afterChange(function(e){if(!edit.designMode){return}self.updateState();self.addBookmark();if(self.options.afterChange){self.options.afterChange.call(self)}});edit.textarea.keyup(function(e){if(!e.ctrlKey&&!e.altKey&&_INPUT_KEY_MAP[e.which]){if(self.options.afterChange){self.options.afterChange.call(self)}}});if(self.readonlyMode){self.readonly()}self.isCreated=true;if(self.initContent===""){self.initContent=self.html()}if(self._undoStack.length>0){var prev=self._undoStack.pop();if(prev.start){self.html(prev.html);edit.cmd.range.moveToBookmark(prev);self.select()}}self.afterCreate();if(self.options.afterCreate){self.options.afterCreate.call(self)}}});statusbar.removeClass("statusbar").addClass("ke-statusbar").append('<span class="ke-inline-block ke-statusbar-center-icon"></span>').append('<span class="ke-inline-block ke-statusbar-right-icon"></span>');if(self._fullscreenResizeHandler){K(window).unbind("resize",self._fullscreenResizeHandler);self._fullscreenResizeHandler=null}function initResize(){if(statusbar.height()===0){setTimeout(initResize,100);return}self.resize(width,height,false)}initResize();if(fullscreenMode){self._fullscreenResizeHandler=function(e){if(self.isCreated){self.resize(_docElement().clientWidth,_docElement().clientHeight,false)}};K(window).bind("resize",self._fullscreenResizeHandler);toolbar.select("fullscreen");statusbar.first().css("visibility","hidden");statusbar.last().css("visibility","hidden")}else{if(_GECKO){K(window).bind("scroll",function(e){self._scrollPos=_getScrollPos()})}if(self.resizeType>0){_drag({moveEl:container,clickEl:statusbar,moveFn:function(x,y,width,height,diffX,diffY){height+=diffY;self.resize(null,height)}})}else{statusbar.first().css("visibility","hidden")}if(self.resizeType===2){_drag({moveEl:container,clickEl:statusbar.last(),moveFn:function(x,y,width,height,diffX,diffY){width+=diffX;height+=diffY;self.resize(width,height)}})}else{statusbar.last().css("visibility","hidden")}}return self},remove:function(){var self=this;if(!self.isCreated){return self}self.beforeRemove();self.srcElement.data("kindeditor","");if(self.menu){self.hideMenu()}_each(self.dialogs,function(){self.hideDialog()});K(document).unbind("mousedown",self._docMousedownFn);self.toolbar.remove();self.edit.remove();self.statusbar.last().unbind();self.statusbar.unbind();self.container.remove();self.container=self.toolbar=self.edit=self.menu=null;self.dialogs=[];self.isCreated=false;return self},resize:function(width,height,updateProp){var self=this;updateProp=_undef(updateProp,true);if(width){if(!/%/.test(width)){width=_removeUnit(width);width=width<self.minWidth?self.minWidth:width}self.container.css("width",_addUnit(width));if(updateProp){self.width=_addUnit(width)}}if(height){height=_removeUnit(height);var editHeight=_removeUnit(height)-self.toolbar.div.height()-self.statusbar.height();editHeight=editHeight<self.minHeight?self.minHeight:editHeight;self.edit.setHeight(editHeight);if(updateProp){self.height=_addUnit(height)}}return self},select:function(){this.isCreated&&this.cmd.select();return this},html:function(val){var self=this;if(val===undefined){return self.isCreated?self.edit.html():_elementVal(self.srcElement)}self.isCreated?self.edit.html(val):_elementVal(self.srcElement,val);if(self.isCreated){self.cmd.selection()}return self},fullHtml:function(){return this.isCreated?this.edit.html(undefined,true):""},text:function(val){var self=this;if(val===undefined){return _trim(self.html().replace(/<(?!img|embed).*?>/gi,"").replace(/ /gi," "))}else{return self.html(_escape(val))}},isEmpty:function(){return _trim(this.text().replace(/\r\n|\n|\r/,""))===""},isDirty:function(){return _trim(this.initContent.replace(/\r\n|\n|\r|t/g,""))!==_trim(this.html().replace(/\r\n|\n|\r|t/g,""))},selectedHtml:function(){var val=this.isCreated?this.cmd.range.html():"";val=_removeBookmarkTag(_removeTempTag(val));return val},count:function(mode){var self=this;mode=(mode||"html").toLowerCase();if(mode==="html"){return self.html().length}if(mode==="text"){return self.text().replace(/<(?:img|embed).*?>/gi,"K").replace(/\r\n|\n|\r/g,"").length}return 0},exec:function(key){key=key.toLowerCase();var self=this,cmd=self.cmd,changeFlag=_inArray(key,"selectall,copy,paste,print".split(","))<0;if(changeFlag){self.addBookmark(false)}cmd[key].apply(cmd,_toArray(arguments,1));if(changeFlag){self.updateState();self.addBookmark(false);if(self.options.afterChange){self.options.afterChange.call(self)}}return self},insertHtml:function(val,quickMode){if(!this.isCreated){return this}val=this.beforeSetHtml(val);this.exec("inserthtml",val,quickMode);return this},appendHtml:function(val){this.html(this.html()+val);if(this.isCreated){var cmd=this.cmd;cmd.range.selectNodeContents(cmd.doc.body).collapse(false);cmd.select()}return this},sync:function(){_elementVal(this.srcElement,this.html());return this},focus:function(){this.isCreated?this.edit.focus():this.srcElement[0].focus();return this},blur:function(){this.isCreated?this.edit.blur():this.srcElement[0].blur();return this},addBookmark:function(checkSize){checkSize=_undef(checkSize,true);var self=this,edit=self.edit,body=edit.doc.body,html=_removeTempTag(body.innerHTML),bookmark;if(checkSize&&self._undoStack.length>0){var prev=self._undoStack[self._undoStack.length-1];if(Math.abs(html.length-_removeBookmarkTag(prev.html).length)<self.minChangeSize){return self}}if(edit.designMode&&!self._firstAddBookmark){var range=self.cmd.range;bookmark=range.createBookmark(true);bookmark.html=_removeTempTag(body.innerHTML);range.moveToBookmark(bookmark)}else{bookmark={html:html}}self._firstAddBookmark=false;_addBookmarkToStack(self._undoStack,bookmark);return self},undo:function(){return _undoToRedo.call(this,this._undoStack,this._redoStack)},redo:function(){return _undoToRedo.call(this,this._redoStack,this._undoStack)},fullscreen:function(bool){this.fullscreenMode=bool===undefined?!this.fullscreenMode:bool;this.addBookmark(false);return this.remove().create()},readonly:function(isReadonly){isReadonly=_undef(isReadonly,true);var self=this,edit=self.edit,doc=edit.doc;if(self.designMode){self.toolbar.disableAll(isReadonly,[])}else{_each(self.noDisableItems,function(){self.toolbar[isReadonly?"disable":"enable"](this)})}if(_IE){doc.body.contentEditable=!isReadonly}else{doc.designMode=isReadonly?"off":"on"}edit.textarea[0].disabled=isReadonly},createMenu:function(options){var self=this,name=options.name,knode=self.toolbar.get(name),pos=knode.pos();options.x=pos.x;options.y=pos.y+knode.height();options.z=self.options.zIndex;options.shadowMode=_undef(options.shadowMode,self.shadowMode);if(options.selectedColor!==undefined){options.cls="ke-colorpicker-"+self.themeType;options.noColor=self.lang("noColor");self.menu=_colorpicker(options)}else{options.cls="ke-menu-"+self.themeType;options.centerLineMode=false;self.menu=_menu(options)}return self.menu},hideMenu:function(){this.menu.remove();this.menu=null;return this},hideContextmenu:function(){this.contextmenu.remove();this.contextmenu=null;return this},createDialog:function(options){var self=this;options.z=self.options.zIndex;options.shadowMode=_undef(options.shadowMode,self.shadowMode);options.closeBtn=_undef(options.closeBtn,{name:self.lang("close"),click:function(e){self.hideDialog();if(_IE&&self.cmd){self.cmd.select()}}});options.noBtn=_undef(options.noBtn,{name:self.lang(options.yesBtn?"no":"close"),click:function(e){self.hideDialog();if(_IE&&self.cmd){self.cmd.select()}}});if(self.dialogAlignType!="page"){options.alignEl=self.container}options.cls="ke-dialog-"+self.themeType;if(self.dialogs.length>0){var firstDialog=self.dialogs[0],parentDialog=self.dialogs[self.dialogs.length-1];firstDialog.setMaskIndex(parentDialog.z+2);options.z=parentDialog.z+3;options.showMask=false}var dialog=_dialog(options);self.dialogs.push(dialog);return dialog},hideDialog:function(){var self=this;if(self.dialogs.length>0){self.dialogs.pop().remove()}if(self.dialogs.length>0){var firstDialog=self.dialogs[0],parentDialog=self.dialogs[self.dialogs.length-1];firstDialog.setMaskIndex(parentDialog.z-1)}return self},errorDialog:function(html){var self=this;var dialog=self.createDialog({width:750,title:self.lang("uploadError"),body:'<div style="padding:10px 20px;"><iframe frameborder="0" style="width:708px;height:400px;"></iframe></div>'});var iframe=K("iframe",dialog.div),doc=K.iframeDoc(iframe);doc.open();doc.write(html);doc.close();K(doc.body).css("background-color","#FFF");iframe[0].contentWindow.focus();return self}};function _editor(options){return new KEditor(options)}var _instances=[];function _create(expr,options){options=options||{};options.basePath=_undef(options.basePath,K.basePath);options.themesPath=_undef(options.themesPath,options.basePath+"themes/");options.langPath=_undef(options.langPath,options.basePath+"lang/");options.pluginsPath=_undef(options.pluginsPath,options.basePath+"plugins/");if(typeof options.errorMsgHandler=="function"){K.options.errorMsgHandler=options.errorMsgHandler}if(_undef(options.loadStyleMode,K.options.loadStyleMode)){var themeType=_undef(options.themeType,K.options.themeType);_loadStyle(options.themesPath+themeType+"/editor.min.css")}function create(editor){_each(_plugins,function(name,fn){if(_isFunction(fn)){fn.call(editor,KindEditor);if(!editor._pluginStatus){editor._pluginStatus={}}editor._pluginStatus[name]="inited"}});return editor.create()}var knode=K(expr);if(!knode||knode.length===0){return}if(knode.length>1){knode.each(function(){_create(this,options)});return _instances[0]}options.srcElement=knode[0];var editor=new KEditor(options);_instances.push(editor);if(_language[editor.langType]){return create(editor)}_loadScript(editor.langPath+editor.langType+".js?ver="+encodeURIComponent(K.DEBUG?_TIME:_VERSION),function(){create(editor)});return editor}function _eachEditor(expr,fn){K(expr).each(function(i,el){K.each(_instances,function(j,editor){if(editor&&editor.srcElement[0]==el){fn.call(editor,j);return false}})})}K.remove=function(expr){_eachEditor(expr,function(i){this.remove();_instances.splice(i,1)})};K.sync=function(expr){_eachEditor(expr,function(){this.sync()})};K.html=function(expr,val){_eachEditor(expr,function(){this.html(val)})};K.insertHtml=function(expr,val){_eachEditor(expr,function(){this.insertHtml(val)})};K.appendHtml=function(expr,val){_eachEditor(expr,function(){this.appendHtml(val)})};if(_IE&&_V<7){_nativeCommand(document,"BackgroundImageCache",true)}K.EditorClass=KEditor;K.editor=_editor;K.create=_create;K.instances=_instances;K.plugin=_plugin;K.lang=_lang;_plugin("core",function(K){var self=this,shortcutKeys={undo:"Z",redo:"Y",bold:"B",italic:"I",underline:"U",print:"P",selectall:"A"};self.afterSetHtml(function(){if(self.options.afterChange){self.options.afterChange.call(self)}});self.afterCreate(function(){if(self.syncType!="form"){return}var el=K(self.srcElement),hasForm=false;while(el=el.parent()){if(el.name=="form"){hasForm=true;break}}if(hasForm){el.bind("submit",function(e){self.sync();K(window).bind("unload",function(){self.edit.textarea.remove()})});var resetBtn=K('[type="reset"]',el);resetBtn.click(function(){self.html(self.initContent);self.cmd.selection()});self.beforeRemove(function(){el.unbind();resetBtn.unbind()})}});self.clickToolbar("source",function(){if(self.edit.designMode){self.toolbar.disableAll(true);self.edit.design(false);self.toolbar.select("source")}else{self.toolbar.disableAll(false);self.edit.design(true);self.toolbar.unselect("source");if(_GECKO){setTimeout(function(){self.cmd.selection()},0)}else{self.cmd.selection()}}self.designMode=self.edit.designMode});self.afterCreate(function(){if(!self.designMode){self.toolbar.disableAll(true).select("source")}});self.clickToolbar("fullscreen",function(){self.fullscreen()});if(self.fullscreenShortcut){var loaded=false;self.afterCreate(function(){K(self.edit.doc,self.edit.textarea).keyup(function(e){if(e.which==27){setTimeout(function(){self.fullscreen()},0)}});if(loaded){if(_IE&&!self.designMode){return}self.focus()}if(!loaded){loaded=true}})}_each("undo,redo".split(","),function(i,name){if(shortcutKeys[name]){self.afterCreate(function(){_ctrl(this.edit.doc,shortcutKeys[name],function(){self.clickToolbar(name)})})}self.clickToolbar(name,function(){self[name]()})});self.clickToolbar("formatblock",function(){var blocks=self.lang("formatblock.formatBlock"),heights={h1:28,h2:24,h3:18,H4:14,p:12},curVal=self.cmd.val("formatblock"),menu=self.createMenu({name:"formatblock",width:self.langType=="en"?200:150});_each(blocks,function(key,val){var style="font-size:"+heights[key]+"px;";if(key.charAt(0)==="h"){style+="font-weight:bold;"}menu.addItem({title:'<span style="'+style+'" unselectable="on">'+val+"</span>",height:heights[key]+12,checked:curVal===key||curVal===val,click:function(){self.select().exec("formatblock","<"+key+">").hideMenu()}})})});self.clickToolbar("fontname",function(){var curVal=self.cmd.val("fontname"),menu=self.createMenu({name:"fontname",width:150});console;_each(self.lang("fontname.fontName"),function(key,val){menu.addItem({title:'<span style="font-family: '+key+';" unselectable="on">'+val+"</span>",checked:curVal===key.toLowerCase()||curVal===val.toLowerCase(),click:function(){self.exec("fontname",key).hideMenu()}})})});self.clickToolbar("fontsize",function(){var curVal=self.cmd.val("fontsize"),menu=self.createMenu({name:"fontsize",width:150});_each(self.fontSizeTable,function(i,val){menu.addItem({title:'<span style="font-size:'+val+';" unselectable="on">'+val+"</span>",height:_removeUnit(val)+12,checked:curVal===val,click:function(){self.exec("fontsize",val).hideMenu()}})})});_each("forecolor,hilitecolor".split(","),function(i,name){self.clickToolbar(name,function(){self.createMenu({name:name,selectedColor:self.cmd.val(name)||"default",colors:self.colorTable,click:function(color){self.exec(name,color).hideMenu()}})})});_each("cut,copy,paste".split(","),function(i,name){self.clickToolbar(name,function(){self.focus();try{self.exec(name,null)}catch(e){K.options.errorMsgHandler(self.lang(name+"Error"),"error")}})});self.clickToolbar("about",function(){var html='<div style="margin:20px;">'+"<div>NKeditor "+_VERSION+"</div>"+'<div>Forked from KindEditor By BlackFox. <a href="http://git.oschina.net/blackfox/kindeditor">Git项目地址</a>.</div>'+"</div>";self.createDialog({name:"about",width:350,title:self.lang("about"),body:html})});self.plugin.getSelectedLink=function(){return self.cmd.commonAncestor("a")};self.plugin.getSelectedImage=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return!/^ke-\w+$/i.test(img[0].className)})};self.plugin.getSelectedFlash=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-flash"})};self.plugin.getSelectedMedia=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-media"||img[0].className=="ke-rm"})};self.plugin.getSelectedAnchor=function(){return _getImageFromRange(self.edit.cmd.range,function(img){return img[0].className=="ke-anchor"})};_each("link,image,flash,media,anchor".split(","),function(i,name){var uName=name.charAt(0).toUpperCase()+name.substr(1);_each("edit,delete".split(","),function(j,val){self.addContextmenu({title:self.lang(val+uName),click:function(){self.loadPlugin(name,function(){self.plugin[name][val]();self.hideMenu()})},cond:self.plugin["getSelected"+uName],width:150,iconClass:val=="edit"?"ke-icon-"+name:undefined})});self.addContextmenu({title:"-"})});self.plugin.getSelectedTable=function(){return self.cmd.commonAncestor("table")};self.plugin.getSelectedRow=function(){return self.cmd.commonAncestor("tr")};self.plugin.getSelectedCell=function(){return self.cmd.commonAncestor("td")};_each(("prop,cellprop,colinsertleft,colinsertright,rowinsertabove,rowinsertbelow,rowmerge,colmerge,"+"rowsplit,colsplit,coldelete,rowdelete,insert,delete").split(","),function(i,val){var cond=_inArray(val,["prop","delete"])<0?self.plugin.getSelectedCell:self.plugin.getSelectedTable;self.addContextmenu({title:self.lang("table"+val),click:function(){self.loadPlugin("table",function(){self.plugin.table[val]();self.hideMenu()})},cond:cond,width:170,iconClass:"ke-icon-table"+val})});self.addContextmenu({title:"-"});_each(("selectall,justifyleft,justifycenter,justifyright,justifyfull,insertorderedlist,"+"insertunorderedlist,indent,outdent,subscript,superscript,hr,print,"+"bold,italic,underline,strikethrough,removeformat,unlink").split(","),function(i,name){if(shortcutKeys[name]){self.afterCreate(function(){_ctrl(this.edit.doc,shortcutKeys[name],function(){self.cmd.selection();self.clickToolbar(name)})})}self.clickToolbar(name,function(){self.focus().exec(name,null)})});self.afterCreate(function(){var doc=self.edit.doc,cmd,bookmark,div,cls="__kindeditor_paste__",pasting=false;function movePastedData(){cmd.range.moveToBookmark(bookmark);cmd.select();if(_WEBKIT){K("div."+cls,div).each(function(){K(this).after("<br />").remove(true)});K("span.Apple-style-span",div).remove(true);K("span.Apple-tab-span",div).remove(true);K("span[style]",div).each(function(){if(K(this).css("white-space")=="nowrap"){K(this).remove(true)}});K("meta",div).remove()}var html=div[0].innerHTML;div.remove();if(html===""){return}if(_WEBKIT){html=html.replace(/(<br>)\1/gi,"$1")}if(self.pasteType===2){html=html.replace(/(<(?:p|p\s[^>]*)>) *(<\/p>)/gi,"");if(/schemas-microsoft-com|worddocument|mso-\w+/i.test(html)){html=_clearMsWord(html,self.filterMode?self.htmlTags:K.options.htmlTags)}else{html=_formatHtml(html,self.filterMode?self.htmlTags:null);html=self.beforeSetHtml(html)}}if(self.pasteType===1){html=html.replace(/ /gi," ");html=html.replace(/\n\s*\n/g,"\n");html=html.replace(/<br[^>]*>/gi,"\n");html=html.replace(/<\/p><p[^>]*>/gi,"\n");html=html.replace(/<[^>]+>/g,"");html=html.replace(/ {2}/g," ");if(self.newlineTag=="p"){if(/\n/.test(html)){html=html.replace(/^/,"<p>").replace(/$/,"<br /></p>").replace(/\n/g,"<br /></p><p>")}}else{html=html.replace(/\n/g,"<br />$&")}}self.insertHtml(html,true)}K(doc.body).bind("paste",function(e){if(self.pasteType===0){e.stop();return}if(pasting){return}pasting=true;K("div."+cls,doc).remove();cmd=self.cmd.selection();bookmark=cmd.range.createBookmark();div=K('<div class="'+cls+'"></div>',doc).css({position:"absolute",width:"1px",height:"1px",overflow:"hidden",left:"-1981px",top:K(bookmark.start).pos().y+"px","white-space":"nowrap"});K(doc.body).append(div);if(_IE){var rng=cmd.range.get(true);rng.moveToElementText(div[0]);rng.select();rng.execCommand("paste");e.preventDefault()}else{cmd.range.selectNodeContents(div[0]);cmd.select();div[0].tabIndex=-1;div[0].focus()}setTimeout(function(){movePastedData();pasting=false},0)})});self.beforeGetHtml(function(html){if(_IE&&_V<=8){html=html.replace(/<div\s+[^>]*data-ke-input-tag="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,tag){return unescape(tag)});html=html.replace(/(<input)((?:\s+[^>]*)?>)/gi,function($0,$1,$2){if(!/\s+type="[^"]+"/i.test($0)){return $1+' type="text"'+$2}return $0})}return html.replace(/(<(?:noscript|noscript\s[^>]*)>)([\s\S]*?)(<\/noscript>)/gi,function($0,$1,$2,$3){return $1+_unescape($2).replace(/\s+/g," ")+$3}).replace(/<img[^>]*class="?ke-(flash|rm|media)"?[^>]*>/gi,function(full){var imgAttrs=_getAttrList(full);var styles=_getCssList(imgAttrs.style||"");var attrs=_mediaAttrs(imgAttrs["data-ke-tag"]);var width=_undef(styles.width,"");var height=_undef(styles.height,"");if(/px/i.test(width)){width=_removeUnit(width)}if(/px/i.test(height)){height=_removeUnit(height)}attrs.width=_undef(imgAttrs.width,width);attrs.height=_undef(imgAttrs.height,height);return _mediaEmbed(attrs)}).replace(/<img[^>]*class="?ke-anchor"?[^>]*>/gi,function(full){var imgAttrs=_getAttrList(full);return'<a name="'+unescape(imgAttrs["data-ke-name"])+'"></a>'}).replace(/<div\s+[^>]*data-ke-script-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,attr,code){return"<script"+unescape(attr)+">"+unescape(code)+"<\/script>"}).replace(/<div\s+[^>]*data-ke-noscript-attr="([^"]*)"[^>]*>([\s\S]*?)<\/div>/gi,function(full,attr,code){return"<noscript"+unescape(attr)+">"+unescape(code)+"</noscript>"}).replace(/(<[^>]*)data-ke-src="([^"]*)"([^>]*>)/gi,function(full,start,src,end){full=full.replace(/(\s+(?:href|src)=")[^"]*(")/i,function($0,$1,$2){return $1+_unescape(src)+$2});full=full.replace(/\s+data-ke-src="[^"]*"/i,"");return full}).replace(/(<[^>]+\s)data-ke-(on\w+="[^"]*"[^>]*>)/gi,function(full,start,end){return start+end})});self.beforeSetHtml(function(html){if(_IE&&_V<=8){html=html.replace(/<input[^>]*>|<(select|button)[^>]*>[\s\S]*?<\/\1>/gi,function(full){var attrs=_getAttrList(full);var styles=_getCssList(attrs.style||"");if(styles.display=="none"){return'<div class="ke-display-none" data-ke-input-tag="'+escape(full)+'"></div>'}return full})}return html.replace(/<embed[^>]*type="([^"]+)"[^>]*>(?:<\/embed>)?/gi,function(full){var attrs=_getAttrList(full);attrs.src=_undef(attrs.src,"");attrs.width=_undef(attrs.width,0);attrs.height=_undef(attrs.height,0);return _mediaImg(self.themesPath+"common/blank.gif",attrs)}).replace(/<video[^>]*type="([^"]+)"[^>]*>(?:<\/video>)?/gi,function(full){var attrs=_getAttrList(full);attrs.src=_undef(attrs.src,"");attrs.width=_undef(attrs.width,0);attrs.height=_undef(attrs.height,0);return _mediaImg(self.themesPath+"common/blank.gif",attrs)}).replace(/<a[^>]*name="([^"]+)"[^>]*>(?:<\/a>)?/gi,function(full){var attrs=_getAttrList(full);if(attrs.href!==undefined){return full}return'<img class="ke-anchor" src="'+self.themesPath+'common/anchor.gif" data-ke-name="'+escape(attrs.name)+'" />'}).replace(/<script([^>]*)>([\s\S]*?)<\/script>/gi,function(full,attr,code){return'<div class="ke-script" data-ke-script-attr="'+escape(attr)+'">'+escape(code)+"</div>"}).replace(/<noscript([^>]*)>([\s\S]*?)<\/noscript>/gi,function(full,attr,code){return'<div class="ke-noscript" data-ke-noscript-attr="'+escape(attr)+'">'+escape(code)+"</div>"}).replace(/(<[^>]*)(href|src)="([^"]*)"([^>]*>)/gi,function(full,start,key,src,end){if(full.match(/\sdata-ke-src="[^"]*"/i)){return full}full=start+key+'="'+src+'"'+' data-ke-src="'+_escape(src)+'"'+end;return full}).replace(/(<[^>]+\s)(on\w+="[^"]*"[^>]*>)/gi,function(full,start,end){return start+"data-ke-"+end}).replace(/<table[^>]*\s+border="0"[^>]*>/gi,function(full){if(full.indexOf("ke-zeroborder")>=0){return full}return _addClassToTag(full,"ke-zeroborder")})})})})(window);KindEditor.lang({source:"HTML代码",preview:"预览",undo:"后退(Ctrl+Z)",redo:"前进(Ctrl+Y)",cut:"剪切(Ctrl+X)",copy:"复制(Ctrl+C)",paste:"粘贴(Ctrl+V)",plainpaste:"粘贴为无格式文本",wordpaste:"从Word粘贴",selectall:"全选(Ctrl+A)",justifyleft:"左对齐",justifycenter:"居中",justifyright:"右对齐",justifyfull:"两端对齐",insertorderedlist:"编号",insertunorderedlist:"项目符号",indent:"增加缩进",outdent:"减少缩进",subscript:"下标",superscript:"上标",formatblock:"段落",fontname:"字体",fontsize:"文字大小",forecolor:"文字颜色",hilitecolor:"文字背景",bold:"粗体(Ctrl+B)",italic:"斜体(Ctrl+I)",underline:"下划线(Ctrl+U)",strikethrough:"删除线",removeformat:"删除格式",image:"图片",multiimage:"批量图片上传",graft:"涂鸦",flash:"Flash",media:"视音频",table:"表格",tablecell:"单元格",hr:"插入横线",emoticons:"插入表情",link:"超级链接",unlink:"取消超级链接",fullscreen:"全屏显示",about:"关于",print:"打印(Ctrl+P)",filemanager:"文件空间",code:"插入程序代码",quote:"插入引用",map:"Google地图",baidumap:"百度地图",lineheight:"行距",clearhtml:"清理HTML代码",pagebreak:"插入分页符",quickformat:"一键排版",insertfile:"插入文件",template:"插入模板",anchor:"锚点",yes:"确定",no:"取消",close:"关闭",editImage:"图片属性",deleteImage:"删除图片",editFlash:"Flash属性",deleteFlash:"删除Flash",editMedia:"视音频属性",deleteMedia:"删除视音频",editLink:"超级链接属性",deleteLink:"取消超级链接",editAnchor:"锚点属性",deleteAnchor:"删除锚点",tableprop:"表格属性",tablecellprop:"单元格属性",tableinsert:"插入表格",tabledelete:"删除表格",tablecolinsertleft:"左侧插入列",tablecolinsertright:"右侧插入列",tablerowinsertabove:"上方插入行",tablerowinsertbelow:"下方插入行",tablerowmerge:"向下合并单元格",tablecolmerge:"向右合并单元格",tablerowsplit:"拆分行",tablecolsplit:"拆分列",tablecoldelete:"删除列",tablerowdelete:"删除行",noColor:"无颜色",pleaseSelectFile:"请选择文件。",invalidImg:"请输入有效的URL地址。\n只允许jpg,gif,bmp,png格式。",invalidMedia:"请输入有效的URL地址。\n只允许swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb格式。",invalidWidth:"宽度必须为数字。",invalidHeight:"高度必须为数字。",invalidBorder:"边框必须为数字。",invalidUrl:"请输入有效的URL地址。",invalidRows:"行数为必选项,只允许输入大于0的数字。",invalidCols:"列数为必选项,只允许输入大于0的数字。",invalidPadding:"边距必须为数字。",invalidSpacing:"间距必须为数字。",invalidJson:"服务器发生故障。",uploadSuccess:"上传成功。",cutError:"您的浏览器安全设置不允许使用剪切操作,请使用快捷键(Ctrl+X)来完成。",copyError:"您的浏览器安全设置不允许使用复制操作,请使用快捷键(Ctrl+C)来完成。",pasteError:"您的浏览器安全设置不允许使用粘贴操作,请使用快捷键(Ctrl+V)来完成。",ajaxLoading:"加载中,请稍候 ...",uploadLoading:"上传中,请稍候 ...",uploadError:"上传错误","plainpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","wordpaste.comment":"请使用快捷键(Ctrl+V)把内容粘贴到下面的方框里。","code.pleaseInput":"请输入程序代码。","link.url":"URL","link.linkType":"打开类型","link.newWindow":"新窗口","link.selfWindow":"当前窗口","flash.url":"URL","flash.width":"宽度","flash.height":"高度","flash.upload":"上传","flash.viewServer":"文件空间","media.url":"URL","media.width":"宽度","media.height":"高度","media.autostart":"自动播放","media.upload":"上传","media.viewServer":"文件空间","image.remoteImage":"网络图片","image.localImage":"本地上传","image.remoteUrl":"图片地址","image.localUrl":"上传文件","image.size":"图片大小","image.width":"宽","image.height":"高","image.resetSize":"重置大小","image.align":"对齐方式","image.defaultAlign":"默认方式","image.leftAlign":"左对齐","image.rightAlign":"右对齐","image.imgTitle":"图片说明","image.upload":"浏览...","image.viewServer":"图片空间","multiimage.title":"多图上传","multiimage.uploadDesc":"共选择了 <%=numSelect%> 张图片,共 <%=totalSize%>, 还可以添加 <%=numLeft%> 张图片.","multiimage.startUpload":"开始上传","multiimage.noListUrl":"无法获取图片,请先配置 fileManagerJson.","multiimage.noSearchUrl":"无法进行图片搜索,请先配置 imageSearchJson.","multiimage.noDataText":"(⊙o⊙)亲,没有多数据了。","multiimage.closeText":"关闭对话框","multiimage.confirmBtnText":"确定","multiimage.cancelBtnText":"取消","multiimage.loadMoreData":"往下拉动滚动条可以加载更多数据.","multiimage.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","multiimage.localUpload":"本地上传","multiimage.fileServer":"文件服务器","multiimage.imgSearch":"图片搜索","multiimage.selectFile":"点击选择图片","multiimage.continueAdd":"继续添加","multiimage.searchBtn":"搜索一下","multiimage.searchPlaceholder":"请输入搜索关键词","multiimage.searchClear":"清空搜索","multiimage.noFileAdded":"请至少添加一个文件!","multiimage.uploading":"正在上传","multiimage.fileNotUpload":"您还有文件没有上传!","multiimage.uploadLimit":"您本次最多上传 <%=uploadLimit%> 个文件.","multiimage.sizeLimit":"文件大小不能超过 <%=sizeLimit%> KB.","multiimage.invalidExt":"非法的文件后缀 <%=invalidExt%>.","multiimage.remove":"删除","multiimage.rotateRight":"向右旋转","multiimage.rotateLeft":"向左旋转","multiimage.uploadFail":"发生异常,上传失败!","multiimage.noFileSelected":"请至少选择一个文件或一张图片.","filemanager.noDataText":"(⊙o⊙)亲,没有多数据了。","filemanager.title":"文件服务器","filemanager.noListUrl":"无法获取图片,请先配置 fileManagerJson.","filemanager.closeText":"关闭对话框","filemanager.confirmBtnText":"确定","filemanager.cancelBtnText":"取消","filemanager.loadMoreData":"往下拉动滚动条可以加载更多数据.","filemanager.depJQueryError":"文件管理插件依赖 jQuery, 请先引入 jQuery.","filemanager.fileType":"类型","graft.btnText":"保存并插入涂鸦","graft.uploadSuccess":"涂鸦上传成功","graft.uploadFaild":"涂鸦上传失败","graft.empty":"您没有在画布上绘制任何图像","insertfile.url":"URL","insertfile.title":"文件说明","insertfile.upload":"上传","insertfile.viewServer":"文件空间","table.cells":"单元格数","table.rows":"行数","table.cols":"列数","table.size":"大小","table.width":"宽度","table.height":"高度","table.percent":"%","table.px":"px","table.space":"边距间距","table.padding":"边距","table.spacing":"间距","table.align":"对齐方式","table.textAlign":"水平对齐","table.verticalAlign":"垂直对齐","table.alignDefault":"默认","table.alignLeft":"左对齐","table.alignCenter":"居中","table.alignRight":"右对齐","table.alignTop":"顶部","table.alignMiddle":"中部","table.alignBottom":"底部","table.alignBaseline":"基线","table.border":"边框","table.borderWidth":"宽度","table.borderColor":"颜色","table.backgroundColor":"背景颜色","map.address":"地址: ","map.search":"搜索","baidumap.address":"地址: ","baidumap.search":"搜索","baidumap.insertDynamicMap":"插入动态地图","anchor.name":"锚点名称","formatblock.formatBlock":{h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",p:"正 文"},"fontname.fontName":{SimSun:"宋体",NSimSun:"新宋体",FangSong:"仿宋",KaiTi:"楷体",SimHei:"黑体","Microsoft YaHei":"微软雅黑",Arial:"Arial","Arial Black":"Arial Black","Times New Roman":"Times New Roman","Courier New":"Courier New",Tahoma:"Tahoma",Verdana:"Verdana"},"lineheight.lineHeight":[{1:"单倍行距"},{1.5:"1.5倍行距"},{2:"2倍行距"},{2.5:"2.5倍行距"},{3:"3倍行距"}],"template.selectTemplate":"可选模板","template.replaceContent":"替换当前内容","template.fileList":{"1.html":"图片和文字","2.html":"表格","3.html":"项目编号"}},"zh-CN");KindEditor.options.langType="zh-CN";KindEditor.plugin("anchor",function(K){var self=this,name="anchor",lang=self.lang(name+".");self.plugin.anchor={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keName">'+lang.name+":</label>",'<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />',"</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:300,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){self.insertHtml('<a name="'+nameBox.val()+'">').hideDialog().focus()}}});var div=dialog.div,nameBox=K('input[name="name"]',div);var img=self.plugin.getSelectedAnchor();if(img){nameBox.val(unescape(img.attr("data-ke-name")))}nameBox[0].focus();nameBox[0].select()},delete:function(){self.plugin.getSelectedAnchor().remove()}};self.clickToolbar(name,self.plugin.anchor.edit)});KindEditor.plugin("autoheight",function(K){var self=this;if(!self.autoHeightMode){return}var minHeight;function hideScroll(){var edit=self.edit;var body=edit.doc.body;edit.iframe[0].scroll="no";body.style.overflowY="hidden"}function resetHeight(){if(self.fullscreenMode){return}var edit=self.edit;var body=edit.doc.body;edit.iframe.height(minHeight);self.resize(null,Math.max((K.IE?body.scrollHeight:body.offsetHeight)+76,minHeight))}function init(){minHeight=K.removeUnit(self.height);self.edit.afterChange(resetHeight);if(!self.fullscreenMode){hideScroll()}resetHeight()}if(self.isCreated){init()}else{self.afterCreate(init)}});KindEditor.plugin("baidumap",function(K){var self=this,name="baidumap",lang=self.lang(name+".");var mapWidth=K.undef(self.mapWidth,558);var mapHeight=K.undef(self.mapHeight,360);self.clickToolbar(name,function(){var html=['<div class="ke-dialog-content-inner" style="padding-top: 0">','<div class="ke-dialog-row ke-clearfix">','<div class="ke-header">'+lang.address,'<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',"<span>",'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+lang.search+'" style="line-height:22px;padding:0 10px;" />',"</span>",'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">'+lang.insertDynamicMap+"</label>","</div>","</div>",'<div class="ke-map" style="width:'+mapWidth+"px;height:"+mapHeight+'px;"></div>',"</div>"].join("");var dialog=self.createDialog({name:name,width:mapWidth+42,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var map=win.map;var centerObj=map.getCenter();var center=centerObj.lng+","+centerObj.lat;var zoom=map.getZoom();var url=[checkbox[0].checked?self.pluginsPath+"baidumap/index.html":"https://api.map.baidu.com/staticimage","?center="+encodeURIComponent(center),"&zoom="+encodeURIComponent(zoom),"&width="+mapWidth,"&height="+mapHeight,"&markers="+encodeURIComponent(center),"&markerStyles="+encodeURIComponent("l,A")].join("");if(checkbox[0].checked){self.insertHtml('<iframe src="'+url+'" frameborder="0" style="width:'+(mapWidth+2)+"px;height:"+(mapHeight+2)+'px;"></iframe>')}else{self.exec("insertimage",url)}self.hideDialog().focus()}},beforeRemove:function(){searchBtn.remove();if(doc){doc.write("")}iframe.remove()}});var div=dialog.div,addressBox=K('[name="address"]',div),searchBtn=K('[name="searchBtn"]',div),checkbox=K('[name="insertDynamicMap"]',dialog.div),win,doc;var iframe=K('<iframe class="ke-textarea" frameborder="0" src="'+self.pluginsPath+'baidumap/map.html" style="width:'+mapWidth+"px;height:"+mapHeight+'px;"></iframe>');function ready(){win=iframe[0].contentWindow;doc=K.iframeDoc(iframe)}iframe.bind("load",function(){iframe.unbind("load");if(K.IE){ready()}else{setTimeout(ready,0)}});K(".ke-map",div).replaceWith(iframe);searchBtn.click(function(){win.search(addressBox.val())})})});KindEditor.plugin("map",function(K){var self=this,name="map",lang=self.lang(name+".");self.clickToolbar(name,function(){var html=['<div style="padding:10px 20px;">','<div class="ke-dialog-row">',lang.address+' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'+lang.search+'" />',"</span>","</div>",'<div class="ke-map" style="width:558px;height:360px;"></div>',"</div>"].join("");var dialog=self.createDialog({name:name,width:600,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var geocoder=win.geocoder,map=win.map,center=map.getCenter().lat()+","+map.getCenter().lng(),zoom=map.getZoom(),maptype=map.getMapTypeId(),url="https://maps.googleapis.com/maps/api/staticmap";url+="?center="+encodeURIComponent(center);url+="&zoom="+encodeURIComponent(zoom);url+="&size=558x360";url+="&maptype="+encodeURIComponent(maptype);url+="&markers="+encodeURIComponent(center);url+="&language="+self.langType;url+="&sensor=false";self.exec("insertimage",url).hideDialog().focus()}},beforeRemove:function(){searchBtn.remove();if(doc){doc.write("")}iframe.remove()}});var div=dialog.div,addressBox=K('[name="address"]',div),searchBtn=K('[name="searchBtn"]',div),win,doc;var iframeHtml=["<!doctype html><html><head>",'<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',"<style>","\thtml { height: 100% }","\tbody { height: 100%; margin: 0; padding: 0; background-color: #FFF }","\t#map_canvas { height: 100% }","</style>",'<script src="https://maps.googleapis.com/maps/api/js?sensor=false&language='+self.langType+'"><\/script>',"<script>","var map, geocoder;","function initialize() {","\tvar latlng = new google.maps.LatLng(31.230393, 121.473704);","\tvar options = {","\t\tzoom: 11,","\t\tcenter: latlng,","\t\tdisableDefaultUI: true,","\t\tpanControl: true,","\t\tzoomControl: true,","\t\tmapTypeControl: true,","\t\tscaleControl: true,","\t\tstreetViewControl: false,","\t\toverviewMapControl: true,","\t\tmapTypeId: google.maps.MapTypeId.ROADMAP","\t};",'\tmap = new google.maps.Map(document.getElementById("map_canvas"), options);',"\tgeocoder = new google.maps.Geocoder();","\tgeocoder.geocode({latLng: latlng}, function(results, status) {","\t\tif (status == google.maps.GeocoderStatus.OK) {","\t\t\tif (results[3]) {",'\t\t\t\tparent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',"\t\t\t}","\t\t}","\t});","}","function search(address) {","\tif (!map) return;","\tgeocoder.geocode({address : address}, function(results, status) {","\t\tif (status == google.maps.GeocoderStatus.OK) {","\t\t\tmap.setZoom(11);","\t\t\tmap.setCenter(results[0].geometry.location);","\t\t\tvar marker = new google.maps.Marker({","\t\t\t\tmap: map,","\t\t\t\tposition: results[0].geometry.location","\t\t\t});","\t\t} else {",'\t\t\talert("Invalid address: " + address);',"\t\t}","\t});","}","<\/script>","</head>",'<body onload="initialize();">','<div id="map_canvas" style="width:100%; height:100%"></div>',"</body></html>"].join("\n");var iframe=K('<iframe class="ke-textarea" frameborder="0" src="'+self.pluginsPath+'map/map.html" style="width:558px;height:360px;"></iframe>');function ready(){win=iframe[0].contentWindow;doc=K.iframeDoc(iframe)}iframe.bind("load",function(){iframe.unbind("load");if(K.IE){ready()}else{setTimeout(ready,0)}});K(".ke-map",div).replaceWith(iframe);searchBtn.click(function(){win.search(addressBox.val())})})});KindEditor.plugin("clearhtml",function(K){var self=this,name="clearhtml";self.clickToolbar(name,function(){self.focus();var html=self.html();html=html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/gi,"");html=html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/gi,"");html=K.formatHtml(html,{a:["href","target"],embed:["src","width","height","type","loop","autostart","quality",".width",".height","align","allowscriptaccess","controls"],img:["src","width","height","border","alt","title",".width",".height"],table:["border"],"td,th":["rowspan","colspan"],"div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6":[]});self.html(html);self.cmd.selection(true);self.addBookmark()})});KindEditor.plugin("code",function(K){var self=this,name="code";self.clickToolbar(name,function(){var lang=self.lang(name+"."),html=['<div style="margin: 0px 20px;">','<div class="ke-dialog-row">','<select class="ke-select" style="margin-bottom: 5px;">','<option value="javascript">JavaScript</option>','<option value="html">HTML</option>','<option value="css">CSS</option>','<option value="php">PHP</option>','<option value="perl">Perl</option>','<option value="python">Python</option>','<option value="ruby">Ruby</option>','<option value="java">Java</option>','<option value="go">Go</option>','<option value="asp">ASP/VB</option>','<option value="csharp">C#</option>','<option value="cpp">C/C++</option>','<option value="cs">C#</option>','<option value="bash">Shell</option>','<option value="sql">SQL</option>','<option value="markup">Other</option>',"</select>","</div>",'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>',"</div>"].join(""),dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var type=K(".ke-select",dialog.div).val(),code=textarea.val(),cls=type===""?"":"language-"+type,html='<pre class="'+cls+'"><code>'+K.escape(code)+"</code></pre> <br/>";if(K.trim(code)===""){K.options.errorMsgHandler(lang.pleaseInput,"error");textarea[0].focus();return}self.insertHtml(html).hideDialog().focus()}}}),textarea=K("textarea",dialog.div);textarea[0].focus()})});KindEditor.plugin("emoticons",function(K){var self=this,name="emoticons",path=self.emoticonsPath||self.pluginsPath+"emoticons/images/",allowPreview=self.allowPreviewEmoticons===undefined?true:self.allowPreviewEmoticons,currentPageNum=1;self.clickToolbar(name,function(){var rows=5,cols=9,total=135,startNum=0,cells=rows*cols,pages=Math.ceil(total/cells),colsHalf=Math.floor(cols/2),wrapperDiv=K('<div class="ke-plugin-emoticons"></div>'),elements=[],menu=self.createMenu({name:name,beforeRemove:function(){removeEvent()}});menu.div.append(wrapperDiv);var previewDiv,previewImg;if(allowPreview){previewDiv=K('<div class="ke-preview"></div>').css("right",0);previewImg=K('<img class="ke-preview-img" src="'+path+startNum+'.gif" />');wrapperDiv.append(previewDiv);previewDiv.append(previewImg)}function bindCellEvent(cell,j,num){if(previewDiv){cell.mouseover(function(){if(j>colsHalf){previewDiv.css("left",0);previewDiv.css("right","")}else{previewDiv.css("left","");previewDiv.css("right",0)}previewImg.attr("src",path+num+".gif");K(this).addClass("ke-on")})}else{cell.mouseover(function(){K(this).addClass("ke-on")})}cell.mouseout(function(){K(this).removeClass("ke-on")});cell.click(function(e){self.insertHtml('<img src="'+path+num+'.gif" border="0" alt="" />').hideMenu().focus();e.stop()})}function createEmoticonsTable(pageNum,parentDiv){var table=document.createElement("table");parentDiv.append(table);if(previewDiv){K(table).mouseover(function(){previewDiv.show("block")});K(table).mouseout(function(){previewDiv.hide()});elements.push(K(table))}table.className="ke-table";table.cellPadding=0;table.cellSpacing=0;table.border=0;var num=(pageNum-1)*cells+startNum;for(var i=0;i<rows;i++){var row=table.insertRow(i);for(var j=0;j<cols;j++){var cell=K(row.insertCell(j));cell.addClass("ke-cell");bindCellEvent(cell,j,num);var span=K('<span class="ke-img"></span>').css("background-position","-"+24*num+"px 0px").css("background-image","url("+path+"static.gif)");cell.append(span);elements.push(cell);num++}}return table}var table=createEmoticonsTable(currentPageNum,wrapperDiv);function removeEvent(){K.each(elements,function(){this.unbind()})}var pageDiv;function bindPageEvent(el,pageNum){el.click(function(e){removeEvent();table.parentNode.removeChild(table);pageDiv.remove();table=createEmoticonsTable(pageNum,wrapperDiv);createPageTable(pageNum);currentPageNum=pageNum;e.stop()})}function createPageTable(currentPageNum){pageDiv=K('<div class="ke-page"></div>');wrapperDiv.append(pageDiv);for(var pageNum=1;pageNum<=pages;pageNum++){if(currentPageNum!==pageNum){var a=K('<a href="javascript:;">['+pageNum+"]</a>");bindPageEvent(a,pageNum);pageDiv.append(a);elements.push(a)}else{pageDiv.append(K("@["+pageNum+"]"))}pageDiv.append(K("@ "))}}createPageTable(currentPageNum)})});KindEditor.plugin("flash",function(K){var self=this,name="flash",lang=self.lang(name+"."),allowFlashUpload=K.undef(self.allowFlashUpload,true),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php");self.plugin.flash={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.width+":</label>",'<div class="row-right">','<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keHeight" class="row-left">'+lang.height+":</label>",'<div class="row-right">','<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ',"</div>","</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val();if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}var html=K.mediaImg(self.themesPath+"common/blank.gif",{src:url,type:K.mediaType(".swf"),width:width,height:height,quality:"high"});self.insertHtml(html).hideDialog().focus()}}}),div=dialog.div,urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('[name="width"]',div),heightBox=K('[name="height"]',div);urlBox.val("http://");if(allowFlashUpload){var callback=function(data){dialog.hideLoading();if(data.code==="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,extraParams:extraParams,url:K.addParam(uploadJson,"fileType=flash"),beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"flash",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K('[name="url"]').css("width","250px");viewServerBtn.hide()}var img=self.plugin.getSelectedFlash();if(img){var attrs=K.mediaAttrs(img.attr("data-ke-tag"));urlBox.val(attrs.src);widthBox.val(K.removeUnit(img.css("width"))||attrs.width||0);heightBox.val(K.removeUnit(img.css("height"))||attrs.height||0)}urlBox[0].focus();urlBox[0].select()},delete:function(){self.plugin.getSelectedFlash().remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.flash.edit)});KindEditor.plugin("image",function(K){var self=this,name="image",allowImageUpload=K.undef(self.allowImageUpload,true),allowImageRemote=K.undef(self.allowImageRemote,true),formatUploadUrl=K.undef(self.formatUploadUrl,true),allowFileManager=K.undef(self.allowFileManager,false),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),imageTabIndex=K.undef(self.imageTabIndex,0),imgPath=self.pluginsPath+"image/images/",extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),fillDescAfterUploadImage=K.undef(self.fillDescAfterUploadImage,false),lang=self.lang(name+".");self.plugin.imageDialog=function(options){var imageUrl=options.imageUrl,imageWidth=K.undef(options.imageWidth,""),imageHeight=K.undef(options.imageHeight,""),imageTitle=K.undef(options.imageTitle,""),imageAlign=K.undef(options.imageAlign,""),showRemote=K.undef(options.showRemote,true),showLocal=K.undef(options.showLocal,true),tabIndex=K.undef(options.tabIndex,0),clickFn=options.clickFn;var target="kindeditor_upload_iframe_"+(new Date).getTime();var hiddenElements=[];for(var k in extraParams){hiddenElements.push('<input type="hidden" name="'+k+'" value="'+extraParams[k]+'" />')}var html=['<div class="ke-dialog-content-inner">','<div class="tabs"></div>','<div class="tab1" style="display:none;">','<div class="ke-dialog-row ke-clearfix">','<label for="remoteUrl" class="row-left">'+lang.remoteUrl+":</label>",'<div class="row-right">','<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix ">','<label for="remoteWidth" class="row-left">'+lang.size+":</label>",'<div class="row-right">'+lang.width+' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ',lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<img class="ke-refresh-btn" src="'+imgPath+'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="'+lang.resetSize+'" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label class="row-left">'+lang.align+":</label>",'<div class="row-right">','<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> '+'<img name="defaultImg" src="'+imgPath+'align_top.gif" width="23" height="25" alt="" /></span>',' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> '+'<img name="leftImg" src="'+imgPath+'align_left.gif" width="23" height="25" alt="" /></span>',' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> '+'<img name="rightImg" src="'+imgPath+'align_right.gif" width="23" height="25" alt="" /></span>',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="remoteTitle" class="row-left">'+lang.imgTitle+":</label>",'<div class="row-right">','<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />',"</div>","</div>","</div>",'<div class="tab2" style="display:none;">','<iframe name="'+target+'" style="display:none;"></iframe>','<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="'+target+'" action="'+K.addParam(uploadJson,"fileType=image")+'">','<div class="ke-dialog-row ke-clearfix">',hiddenElements.join(""),'<label class="row-left">'+lang.localUrl+":</label>",'<div class="row-right">','<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" />',"</div>","</div>","</form>","</div>","</div>"].join("");var dialogWidth=showLocal||allowFileManager?450:400,dialogHeight=showLocal&&showRemote?310:260;var dialog=self.createDialog({name:name,width:dialogWidth,height:dialogHeight,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){if(dialog.isLoading){return}if(showLocal&&showRemote&&tabs&&tabs.selectedIndex===1||!showRemote){if(uploadbutton.fileBox.val()==""){K.options.errorMsgHandler(self.lang("pleaseSelectFile"),"error");return}dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit();localUrlBox.val("");return}var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val(),title=titleBox.val(),align="";alignBox.each(function(){if(this.checked){align=this.value;return false}});if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}clickFn.call(self,url,title,width,height,0,align)}},beforeRemove:function(){viewServerBtn.unbind();widthBox.unbind();heightBox.unbind();refreshBtn.unbind()}}),div=dialog.div;var urlBox=K('[name="url"]',div),localUrlBox=K('[name="localUrl"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('.tab1 [name="width"]',div),heightBox=K('.tab1 [name="height"]',div),refreshBtn=K(".ke-refresh-btn",div),titleBox=K('.tab1 [name="title"]',div),alignBox=K('.tab1 [name="align"]',div);var tabs;if(showRemote&&showLocal){tabs=K.tabs({src:K(".tabs",div),afterSelect:function(i){}});tabs.add({title:lang.remoteImage,panel:K(".tab1",div)});tabs.add({title:lang.localImage,panel:K(".tab2",div)});tabs.select(tabIndex)}else if(showRemote){K(".tab1",div).show()}else if(showLocal){K(".tab2",div).show()}var callback=function(data){if(data.code=="000"){dialog.hideLoading();var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}if(!fillDescAfterUploadImage){clickFn.call(self,url,data.title,data.width,data.height,data.border,data.align)}else{K(".ke-dialog-row #remoteUrl",div).val(url);K(".ke-tabs-li",div)[0].click();K(".ke-refresh-btn",div).click()}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,form:K(".ke-form",div),target:target,width:60,beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){localUrlBox.val(uploadbutton.fileBox.val())});if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"image",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{viewServerBtn.hide()}var originalWidth=0,originalHeight=0;function setSize(width,height){widthBox.val(width);heightBox.val(height);originalWidth=width;originalHeight=height}refreshBtn.click(function(e){var tempImg=K('<img src="'+urlBox.val()+'" />',document).css({position:"absolute",visibility:"hidden",top:0,left:"-1000px"});tempImg.bind("load",function(){setSize(tempImg.width(),tempImg.height());tempImg.remove()});K(document.body).append(tempImg)});widthBox.change(function(e){if(originalWidth>0){heightBox.val(Math.round(originalHeight/originalWidth*parseInt(this.value,10)))}});heightBox.change(function(e){if(originalHeight>0){widthBox.val(Math.round(originalWidth/originalHeight*parseInt(this.value,10)))}});urlBox.val(options.imageUrl);setSize(options.imageWidth,options.imageHeight);titleBox.val(options.imageTitle);alignBox.each(function(){if(this.value===options.imageAlign){this.checked=true;return false}});if(showRemote&&tabIndex===0){urlBox[0].focus();urlBox[0].select()}return dialog};self.plugin.image={edit:function(){var img=self.plugin.getSelectedImage();self.plugin.imageDialog({imageUrl:img?img.attr("data-ke-src"):"http://",imageWidth:img?img.width():"",imageHeight:img?img.height():"",imageTitle:img?img.attr("title"):"",imageAlign:img?img.attr("align"):"",showRemote:allowImageRemote,showLocal:allowImageUpload,tabIndex:img?0:imageTabIndex,clickFn:function(url,title,width,height,border,align){if(img){img.attr("src",url);img.attr("data-ke-src",url);img.attr("width",width);img.attr("height",height);img.attr("title",title);img.attr("align",align);img.attr("alt",title)}else{self.exec("insertimage",url,title,width,height,border,align)}setTimeout(function(){self.hideDialog().focus()},0)}})},delete:function(){var target=self.plugin.getSelectedImage();if(target.parent().name=="a"){target=target.parent()}target.remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.image.edit)});KindEditor.plugin("insertfile",function(K){var self=this,name="insertfile",allowFileUpload=K.undef(self.allowFileUpload,true),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),lang=self.lang(name+".");self.plugin.fileDialog=function(options){var fileUrl=K.undef(options.fileUrl,"http://"),fileTitle=K.undef(options.fileTitle,""),clickFn=options.clickFn;var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keTitle" class="row-left">'+lang.title+":</label>",'<div class="row-right">','<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>',"</div>","</div>","</form>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),title=titleBox.val();if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}if(K.trim(title)===""){title=url}clickFn.call(self,url,title)}}}),div=dialog.div;var urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),titleBox=K('[name="title"]',div);if(allowFileUpload){var callback=function(data){dialog.hideLoading();if(data.code==="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,url:K.addParam(uploadJson,"fileType=file"),extraParams:extraParams,beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({viewType:"LIST",dirName:"file",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K("#keUrl").css("width","250px");viewServerBtn.hide()}urlBox.val(fileUrl);titleBox.val(fileTitle);urlBox[0].focus();urlBox[0].select()};self.clickToolbar(name,function(){self.plugin.fileDialog({clickFn:function(url,title){var html='<a class="ke-insertfile" href="'+url+'" data-ke-src="'+url+'" target="_blank">'+title+"</a>";self.insertHtml(html).hideDialog().focus()}})})});KindEditor.plugin("lineheight",function(K){var self=this,name="lineheight",lang=self.lang(name+".");self.clickToolbar(name,function(){var curVal="",commonNode=self.cmd.commonNode({"*":".line-height"});if(commonNode){curVal=commonNode.css("line-height")}var menu=self.createMenu({name:name,width:150});K.each(lang.lineHeight,function(i,row){K.each(row,function(key,val){menu.addItem({title:val,checked:curVal===key,click:function(){self.cmd.toggle('<span style="line-height:'+key+';"></span>',{span:".line-height="+key});self.updateState();self.addBookmark();self.hideMenu()}})})})})});KindEditor.plugin("link",function(K){var self=this,name="link";self.plugin.link={edit:function(){var lang=self.lang(name+"."),html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix"">','<label for="keType" class="row-left">'+lang.linkType+":</label>",'<div class="row-right">','<select id="keType" class="ke-select" name="type"></select>',"</div>","</div>","</div>"].join(""),dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val());if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}self.exec("createlink",url,typeBox.val()).hideDialog().focus()}}}),div=dialog.div,urlBox=K('input[name="url"]',div),typeBox=K('select[name="type"]',div);urlBox.val("http://");typeBox[0].options[0]=new Option(lang.newWindow,"_blank");typeBox[0].options[1]=new Option(lang.selfWindow,"");self.cmd.selection();var a=self.plugin.getSelectedLink();if(a){self.cmd.range.selectNode(a[0]);self.cmd.select();urlBox.val(a.attr("data-ke-src"));typeBox.val(a.attr("target"))}urlBox[0].focus();urlBox[0].select()},delete:function(){self.exec("unlink",null)}};self.clickToolbar(name,self.plugin.link.edit)});KindEditor.plugin("media",function(K){var self=this,name="media",lang=self.lang(name+"."),allowMediaUpload=K.undef(self.allowMediaUpload,false),allowFileManager=K.undef(self.allowFileManager,false),formatUploadUrl=K.undef(self.formatUploadUrl,true),extraParams=K.undef(self.extraFileUploadParams,{}),filePostName=K.undef(self.filePostName,"imgFile"),uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php");self.plugin.media={edit:function(){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keUrl" class="row-left">'+lang.url+":</label>",'<div class="row-right">','<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ','<input type="button" class="ke-upload-button" value="'+lang.upload+'" /> ','<span class="ke-button-common ke-button-outer">','<input type="button" class="ke-button-common ke-button" name="viewServer" value="'+lang.viewServer+'" />',"</span>",'<div style="margin-top:5px;color:#aaa;">支持优酷、爱奇艺、腾讯视频等视频网站【<span style="color:green">通用代码</span>】',"</div>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.width+":</label>",'<div class="row-right">','<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keHeight" class="row-left">'+lang.height+":</label>",'<div class="row-right">','<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAutostart" class="row-left">'+lang.autostart+":</label>",'<div class="row-right">','<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ',"</div>","</div>","</div>"].join("");var dialog=self.createDialog({name:name,width:450,height:260,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var url=K.trim(urlBox.val()),width=widthBox.val(),height=heightBox.val();var match=url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/);if(!match){if(url=="http://"||K.invalidUrl(url)){K.options.errorMsgHandler(self.lang("invalidUrl"),"error");urlBox[0].focus();return}}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!match){var html=K.mediaImg(self.themesPath+"common/blank.gif",{src:url,type:K.mediaType(url),width:width,height:height,autostart:autostartBox[0].checked?"true":"false",loop:"true"})}else{var html='<iframe src="'+match[3]+'" frameborder="0" style="width:'+width+"px;height:"+height+'px;"></iframe>'}self.insertHtml(html).hideDialog().focus()}}}),div=dialog.div,urlBox=K('[name="url"]',div),viewServerBtn=K('[name="viewServer"]',div),widthBox=K('[name="width"]',div),heightBox=K('[name="height"]',div),autostartBox=K('[name="autostart"]',div);urlBox.val("http://");if(allowMediaUpload){var callback=function(data){dialog.hideLoading();if(data.code=="000"){var url=data.data.url;if(formatUploadUrl){url=K.formatUrl(url,"absolute")}urlBox.val(url);if(self.afterUpload){self.afterUpload.call(self,url,data,name)}}else{K.options.errorMsgHandler(data.message,"error","error")}};var uploadbutton=K.uploadbutton({button:K(".ke-upload-button",div)[0],fieldName:filePostName,extraParams:extraParams,url:K.addParam(uploadJson,"fileType=media"),beforeUpload:function(){if(typeof self.beforeUpload=="function"){self.beforeUpload.call(this,callback);return false}else{return true}},afterUpload:function(data){callback(data)},afterError:function(html){dialog.hideLoading();self.errorDialog(html)}});uploadbutton.fileBox.change(function(e){dialog.showLoading(self.lang("uploadLoading"));uploadbutton.submit()})}else{K(".ke-upload-button",div).hide()}if(allowMediaUpload&&allowFileManager){viewServerBtn.click(function(e){self.loadPlugin("filemanager",function(){self.plugin.filemanagerDialog({dirName:"media",clickFn:function(url){K('[name="url"]',div).val(url);if(self.afterSelectFile){self.afterSelectFile.call(self,url)}}})})})}else{K("#keUrl").css("width","250px");viewServerBtn.hide()}var img=self.plugin.getSelectedMedia();if(img){var attrs=K.mediaAttrs(img.attr("data-ke-tag"));urlBox.val(attrs.src);widthBox.val(K.removeUnit(img.css("width"))||attrs.width||0);heightBox.val(K.removeUnit(img.css("height"))||attrs.height||0);autostartBox[0].checked=attrs.autostart==="true"}urlBox[0].focus();urlBox[0].select()},delete:function(){self.plugin.getSelectedMedia().remove();self.addBookmark()}};self.clickToolbar(name,self.plugin.media.edit)});KindEditor.plugin("multiimage",function(K){var self=this,name="multiimage",uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),fileManagerJson=K.undef(self.fileManagerJson,self.basePath+"php/file_manager_json.php"),imageSizeLimit=K.undef(self.imageSizeLimit,2048),imageFileTypes=K.undef(self.imageFileTypes,"jpg|png|gif|jpeg"),imageUploadLimit=K.undef(self.imageUploadLimit,20),filePostName=K.undef(self.filePostName,"imgFile"),lang=self.lang(name+".");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadScript(K.options.pluginsPath+name+"/BUpload.js");K.loadStyle(K.options.pluginsPath+name+"/css/upload.css")}K.locker=function(){var docWidth=Math.max(document.documentElement.clientWidth,document.body.clientWidth);var docHeight=Math.max(document.documentElement.clientHeight,document.body.clientHeight,$(document).height())+document.documentElement.scrollTop;return K.widget({x:0,y:0,cls:"ke-dialog-lock",width:docWidth,height:docHeight})};self.plugin.multiImageDialog=function(options){var clickFn=options.clickFn;var locker=K.locker();locker.show();var dialog=new BUpload({src:filePostName,upload_url:uploadJson,list_url:fileManagerJson,max_filesize:imageSizeLimit,max_filenum:imageUploadLimit,ext_allow:imageFileTypes,lang:lang,top:self.dialogOffset,fileType:"image",errorHandler:K.options.errorMsgHandler,callback:function(data){clickFn.call(this,data)},close:function(){locker.remove()}});return dialog};self.clickToolbar(name,function(){self.plugin.multiImageDialog({clickFn:function(urlList){if(urlList.length===0){return}K.each(urlList,function(i,data){if(self.afterUpload){self.afterUpload.call(self,data,data,"multiimage")}self.exec("insertimage",data)});setTimeout(function(){self.hideDialog().focus()},0)}})})});KindEditor.plugin("graft",function(K){var self=this,name="graft",uploadJson=K.undef(self.uploadJson,self.basePath+"php/upload_json.php"),allowUploadGraft=K.undef(self.allowUploadGraft,true),lang=self.lang(name+".");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css");K.loadScript(K.options.pluginsPath+"graft/scrawl.js")}self.plugin.graftDialog=function(options){var clickFn=options.clickFn;var html=['<div class="scrawl-main" id="scrawl-main">','<div class="hot">','<div class="drawBoard border_style">','<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>','<div class="picBoard" id="picBoard" style=""></div>',"</div>",'<div class="operateBar">','<button id="J_prevStep" class="prevStep" title="上一步">','<em class="icon"></em>',"</button>",'<button id="J_nextStep" class="nextStep" title="下一步">','<em class="icon"></em>',"</button>",'<button id="J_clearBoard" class="clearBoard" title="清空">','<em class="icon"></em>',"</button>","</div>","</div>",'<div class="drawToolbar border_style">','<div class="colorBar">','<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>','<span data-color="#003366" style="background:#003366;"></span>','<span data-color="#993333" style="background:#993333;"></span>','<span data-color="#FF9900" style="background:#FF9900;"></span>','<span data-color="#0000CC" style="background:#0000CC;"></span>','<span data-color="#CC3333" style="background:#CC3333;"></span>','<span data-color="#F4D03F" style="background:#641E16;"></span>','<span data-color="#4A235A" style="background:#4A235A;"></span>','<span data-color="#009966" style="background:#009966;"></span>','<span data-color="#ffff00" style="background:#ffff00;"></span>','<span data-color="#7D6608" style="background:#7D6608;"></span>','<span data-color="#FF33CC" style="background:#FF33CC;"></span>','<span data-color="#990066" style="background:#990066;"></span>','<span data-color="#ffffff" style="background:#ffffff;"></span>','<span data-color="#9bbb59" style="background:#9bbb59;"></span>','<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>','<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>','<span data-color="#CC99CC" style="background:#CC99CC;"></span>',"</div>",'<div class="sectionBar">','<em class="brushIcon"></em>','<a href="javascript:void(0)" class="brush-size size1">1</a>','<a href="javascript:void(0)" class="brush-size size2">3</a>','<a href="javascript:void(0)" class="brush-size size3">5</a>','<a href="javascript:void(0)" class="brush-size size4">7</a>',"</div>",'<div class="sectionBar">','<em class="eraserIcon"></em>','<a href="javascript:void(0)" class="eraser-size size1">5</a>','<a href="javascript:void(0)" class="eraser-size size2">10</a>','<a href="javascript:void(0)" class="eraser-size size3">15</a>','<a href="javascript:void(0)" class="eraser-size size4">20</a>',"</div>",'<div class="sectionBar">','<em class="blurIcon"></em>','<a href="javascript:void(0)" class="blur-size size1">2</a>','<a href="javascript:void(0)" class="blur-size size2">4</a>','<a href="javascript:void(0)" class="blur-size size3">6</a>','<a href="javascript:void(0)" class="blur-size size4">8</a>',"</div>",'<div class="sectionBar">','<span id="clearSetting" class="clearSetting">','<em class="icon"></em>','<em class="text">初始化设置</em>',"</span>","</div>",'<div class="sectionBar">','<div id="J_addImg" class="addImgH">','<em class="icon"></em>','<em class="text">添加背景</em>','<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>',"</div>","</div>",'<div class="sectionBar">','<span id="J_removeImg" class="removeImg">','<em class="icon"></em>','<em class="text">删除背景</em>',"</span>","</div>","</div>"].join("");var dataURLtoFile=function(dataurl,filename){var arr=dataurl.split(","),mime=arr[0].match(/:(.*?);/)[1],bstr=atob(arr[1]),n=bstr.length,u8arr=new Uint8Array(n);while(n--){u8arr[n]=bstr.charCodeAt(n)}return new File([u8arr],filename,{type:mime})};var dialog=self.createDialog({name:name,width:750,height:440,title:self.lang(name),body:html,yesBtn:{name:lang.btnText,click:function(e){if(dialog.isLoading){return}if(canvas.isEmpty()){K.options.errorMsgHandler(lang.empty,"error");return}canvas.save(function(data){if(allowUploadGraft){var callback=function(res){dialog.hideLoading();if(res.code=="000"){clickFn.call(self,res.data.url);self.hideDialog().focus()}else{K.options.errorMsgHandler(lang.uploadFaild,"error")}};dialog.showLoading(self.lang("uploadLoading"));if(typeof self.beforeUpload=="function"){var file=dataURLtoFile(data,"graft.png");self.beforeUpload.call(this,callback,file)}else{$.post(uploadJson,{img_base64_data:data,fileType:"image",base64:1},function(res){callback(res)},"json")}}else{clickFn.call(self,data);self.hideDialog().focus()}})}}});var canvas=new Canvas({canvasId:"canvas-borad",width:600,height:320})};self.clickToolbar(name,function(){self.plugin.graftDialog({clickFn:function(url){self.exec("insertimage",url)}})})});KindEditor.plugin("filemanager",function(K){var self=this;var fileManagerJson=K.undef(self.fileManagerJson,self.basePath+"php/file_manager_json.php");var lang=self.lang("filemanager.");if(typeof jQuery=="undefined"){K.options.errorMsgHandler(lang.depJQueryError,"error");return}else{K.loadScript(K.options.pluginsPath+"filemanager/FManager.js");K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css")}self.plugin.filemanagerDialog=function(options){var clickFn=options.clickFn;new FManager({list_url:fileManagerJson,lang:lang,fileType:options.dirName,top:self.dialogOffset,multiple:options.multiple?true:false,callback:function(data){clickFn.call(this,options.multiple?data:data[0])}})}});KindEditor.plugin("pagebreak",function(K){var self=this;var name="pagebreak";var pagebreakHtml=K.undef(self.pagebreakHtml,'<hr style="page-break-after: always;" class="ke-pagebreak" />');self.clickToolbar(name,function(){var cmd=self.cmd,range=cmd.range;self.focus();var tail=self.newlineTag=="br"||K.WEBKIT?"":'<span id="__kindeditor_tail_tag__"></span>';self.insertHtml(pagebreakHtml+tail);if(tail!==""){var p=K("#__kindeditor_tail_tag__",self.edit.doc);range.selectNodeContents(p[0]);p.removeAttr("id");cmd.select()}})});KindEditor.plugin("plainpaste",function(K){var self=this,name="plainpaste";self.clickToolbar(name,function(){var lang=self.lang(name+"."),html='<div style="padding:10px 20px;">'+'<div style="margin-bottom:10px;">'+lang.comment+"</div>"+'<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>'+"</div>",dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var html=textarea.val();html=K.escape(html);html=html.replace(/ {2}/g," ");if(self.newlineTag=="p"){html=html.replace(/^/,"<p>").replace(/$/,"</p>").replace(/\n/g,"</p><p>")}else{html=html.replace(/\n/g,"<br />$&")}self.insertHtml(html).hideDialog().focus()}}}),textarea=K("textarea",dialog.div);textarea[0].focus()})});KindEditor.plugin("preview",function(K){var self=this,name="preview",undefined;self.clickToolbar(name,function(){var lang=self.lang(name+"."),width=document.documentElement.clientWidth*.9,height=document.documentElement.clientHeight-160,html='<div style="padding:10px 20px;">'+'<iframe class="ke-textarea" frameborder="0" style="width:'+(width-42)+"px;height:"+height+'px;"></iframe>'+"</div>",dialog=self.createDialog({name:name,width:width,title:self.lang(name),body:html}),iframe=K("iframe",dialog.div),doc=K.iframeDoc(iframe);doc.open();var cssPath=self.options.cssPath;var jsPath=self.options.jsPath;var arr=['<html lang="en">','<head><meta charset="utf-8" /><title></title>',"<style>","html {margin:0;padding:0;}","body {margin:0;padding:5px;}",'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}',"body, p, div {word-wrap: break-word;}","p {margin:5px 0;}","table {border-collapse:collapse;}","img {border:0;}","noscript {display:none;}","table.ke-zeroborder td {border:1px dotted #AAA;}","img.ke-flash {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/flash.svg);","\t*background-image:url("+self.options.themesPath+"common/flash.png);","\tbackground-size:64px 64px;","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-rm {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/rm.gif);","\tbackground-position:center center;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-media {","\tborder:1px solid #AAA;","\tbackground-image:url("+self.options.themesPath+"common/play.svg);","\t*background-image:url("+self.options.themesPath+"common/play.png);","\tbackground-position:center center;","\tbackground-size:64px 64px;","\tbackground-repeat:no-repeat;","\twidth:100px;","\theight:100px;","}","img.ke-anchor {","\tborder:1px dashed #666;","\twidth:16px;","\theight:16px;","}",".ke-script, .ke-noscript, .ke-display-none {","\tdisplay:none;","\tfont-size:0;","\twidth:0;","\theight:0;","}",".ke-pagebreak {","\tborder:1px dotted #AAA;","\tfont-size:0;","\theight:2px;","}"];if(self.options.showHelpGrid){arr.push("p,ul,ol,li,div{border: 1px dashed #c1c1c1;}");arr.push("li{margin:5px 0px}");arr.push("div,ul,ol{margin-bottom:10px}")}arr.push("</style>");if(!K.isArray(cssPath)){cssPath=[cssPath]}if(K.inArray(self.options.pluginsPath+"code/prism.css",cssPath)<0){cssPath.push(self.options.pluginsPath+"code/prism.css")}K.each(cssPath,function(i,path){if(path){arr.push('<link href="'+path+'" rel="stylesheet" />')}});if(self.options.cssData){arr.push("<style>"+self.options.cssData+"</style>")}arr.push("</head><body "+(self.options.bodyClass?'class="'+self.options.bodyClass+'"':"")+">");arr.push(self.fullHtml());if(!K.isArray(jsPath)){jsPath=[jsPath]}if(K.inArray(self.options.pluginsPath+"code/prism.js",jsPath)<0){jsPath.push(self.options.pluginsPath+"code/prism.js")}K.each(jsPath,function(i,path){if(path){arr.push('<script type="text/javascript" src="'+path+'"><\/script>')}});arr.push("</body></html>");doc.write(arr.join("\n"));doc.close();K(doc.body).css("background-color","#FFF");iframe[0].contentWindow.focus()})});KindEditor.plugin("quickformat",function(K){var self=this,name="quickformat",blockMap=K.toMap("blockquote,center,div,h1,h2,h3,h4,h5,h6,p");function getFirstChild(knode){var child=knode.first();while(child&&child.first()){child=child.first()}return child}self.clickToolbar(name,function(){self.focus();var doc=self.edit.doc,range=self.cmd.range,child=K(doc.body).first(),next,nodeList=[],subList=[],bookmark=range.createBookmark(true);while(child){next=child.next();var firstChild=getFirstChild(child);if(!firstChild||firstChild.name!="img"){if(blockMap[child.name]){child.html(child.html().replace(/^(\s| | )+/gi,""));child.css("text-indent","2em")}else{subList.push(child)}if(!next||(blockMap[next.name]||blockMap[child.name]&&!blockMap[next.name])){if(subList.length>0){nodeList.push(subList)}subList=[]}}child=next}K.each(nodeList,function(i,subList){var wrapper=K('<p style="text-indent:2em;"></p>',doc);subList[0].before(wrapper);K.each(subList,function(i,knode){wrapper.append(knode)})});range.moveToBookmark(bookmark);self.addBookmark()})});KindEditor.plugin("table",function(K){var self=this,name="table",lang=self.lang(name+"."),zeroborder="ke-zeroborder";var borderColor=K.undef(self.options.tableBorderColor,"#cccccc");function _setColor(box,color){color=color.toUpperCase();box.css("background-color",color);box.css("color",color==="#000000"?"#FFFFFF":"#000000");box.html(color)}var pickerList=[];function _initColorPicker(dialogDiv,colorBox){colorBox.bind("click,mousedown",function(e){e.stopPropagation()});function removePicker(){K.each(pickerList,function(){this.remove()});pickerList=[];K(document).unbind("click,mousedown",removePicker);dialogDiv.unbind("click,mousedown",removePicker)}colorBox.click(function(e){removePicker();var box=K(this),pos=box.pos();var picker=K.colorpicker({x:pos.x,y:pos.y+box.height(),z:811214,selectedColor:K(this).html(),colors:self.colorTable,noColor:self.lang("noColor"),shadowMode:self.shadowMode,click:function(color){_setColor(box,color);removePicker()}});pickerList.push(picker);K(document).bind("click,mousedown",removePicker);dialogDiv.bind("click,mousedown",removePicker)})}function _getCellIndex(table,row,cell){var rowSpanCount=0;for(var i=0,len=row.cells.length;i<len;i++){if(row.cells[i]==cell){break}rowSpanCount+=row.cells[i].rowSpan-1}return cell.cellIndex-rowSpanCount}self.plugin.table={prop:function(isInsert){var html=['<div class="ke-dialog-content-inner">','<div class="ke-dialog-row ke-clearfix">','<label for="keRows" class="row-left">'+lang.cells+":</label>",'<div class="row-right">',lang.rows+' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ',lang.cols+' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" class="row-left">'+lang.size+":</label>",'<div class="row-right">',lang.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ','<select name="widthType" class="ke-select">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select> ",lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<select name="heightType" class="ke-select">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="kePadding" class="row-left">'+lang.space+":</label>",'<div class="row-right">',lang.padding+' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ',lang.spacing+' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAlign" class="row-left">'+lang.align+":</label>",'<div class="row-right">','<select id="keAlign" class="ke-select" name="align">','<option value="">'+lang.alignDefault+"</option>",'<option value="left">'+lang.alignLeft+"</option>",'<option value="center">'+lang.alignCenter+"</option>",'<option value="right">'+lang.alignRight+"</option>","</select>","</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBorder" class="row-left">'+lang.border+":</label>",'<div class="row-right">',lang.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',lang.borderColor+' <span class="ke-inline-block ke-input-color"></span>',"</div>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBgColor" class="row-left">'+lang.backgroundColor+":</label>",'<div class="row-right">','<span class="ke-inline-block ke-input-color"></span>',"</div>","</div>","</div>"].join("");var bookmark=self.cmd.range.createBookmark();var dialog=self.createDialog({name:name,width:500,title:self.lang(name),body:html,beforeRemove:function(){colorBox.unbind()},yesBtn:{name:self.lang("yes"),click:function(e){var rows=rowsBox.val(),cols=colsBox.val(),width=widthBox.val(),height=heightBox.val(),widthType=widthTypeBox.val(),heightType=heightTypeBox.val(),padding=paddingBox.val(),spacing=spacingBox.val(),align=alignBox.val(),border=borderBox.val(),borderColor=K(colorBox[0]).html()||"",bgColor=K(colorBox[1]).html()||"";if(rows==0||!/^\d+$/.test(rows)){K.options.errorMsgHandler(self.lang("invalidRows"),"error");rowsBox[0].focus();return}if(cols==0||!/^\d+$/.test(cols)){K.options.errorMsgHandler(self.lang("invalidRows"),"error");colsBox[0].focus();return}if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!/^\d*$/.test(padding)){K.options.errorMsgHandler(self.lang("invalidPadding"),"error");paddingBox[0].focus();return}if(!/^\d*$/.test(spacing)){K.options.errorMsgHandler(self.lang("invalidSpacing"),"error");spacingBox[0].focus();return}if(!/^\d*$/.test(border)){K.options.errorMsgHandler(self.lang("invalidBorder"),"error");borderBox[0].focus();return}if(table){if(width!==""){table.width(width+widthType)}else{table.css("width","")}if(table[0].width!==undefined){table.removeAttr("width")}if(height!==""){table.height(height+heightType)}else{table.css("height","")}if(table[0].height!==undefined){table.removeAttr("height")}table.css("background-color",bgColor);if(table[0].bgColor!==undefined){table.removeAttr("bgColor")}if(padding!==""){table[0].cellPadding=padding}else{table.removeAttr("cellPadding")}if(spacing!==""){table[0].cellSpacing=spacing}else{table.removeAttr("cellSpacing")}if(align!==""){table[0].align=align}else{table.removeAttr("align")}if(border!==""){table.attr("border",border)}else{table.removeAttr("border")}if(border===""||border==="0"){table.addClass(zeroborder)}else{table.removeClass(zeroborder)}if(borderColor!==""){table.attr("borderColor",borderColor)}else{table.removeAttr("borderColor")}self.hideDialog().focus();self.cmd.range.moveToBookmark(bookmark);self.cmd.select();self.addBookmark();return}var style="";if(width!==""){style+="width:"+width+widthType+";"}if(height!==""){style+="height:"+height+heightType+";"}if(bgColor!==""){style+="background-color:"+bgColor+";"}var html='<table class="table"';if(style!==""){html+=' style="'+style+'"'}if(padding!==""){html+=' cellpadding="'+padding+'"'}if(spacing!==""){html+=' cellspacing="'+spacing+'"'}if(align!==""){html+=' align="'+align+'"'}if(border!==""){html+=' border="'+border+'"'}if(border===""||border==="0"){html+=' class="table '+zeroborder+'"'}if(borderColor!==""){html+=' bordercolor="'+borderColor+'"'}html+=">";for(var i=0;i<rows;i++){html+="<tr>";for(var j=0;j<cols;j++){html+="<td>"+(K.IE?" ":"<br />")+"</td>"}html+="</tr>"}html+="</table>";if(!K.IE){html+="<br />"}function getAncestorTag(range){var ancestor=K(range.commonAncestor());while(ancestor){if(ancestor.type==1&&!ancestor.isStyle()){break}ancestor=ancestor.parent()}return ancestor}var tag=getAncestorTag(self.cmd.range);if(tag.name=="p"){tag.before(K(html));tag.remove();self.cmd.selection();self.insertHtml("<br />");self.select().hideDialog().focus()}else{self.insertHtml(html);self.select().hideDialog().focus();self.addBookmark()}}}}),div=dialog.div,rowsBox=K('[name="rows"]',div).val(3),colsBox=K('[name="cols"]',div).val(2),widthBox=K('[name="width"]',div).val(100),heightBox=K('[name="height"]',div),widthTypeBox=K('[name="widthType"]',div),heightTypeBox=K('[name="heightType"]',div),paddingBox=K('[name="padding"]',div).val(0),spacingBox=K('[name="spacing"]',div).val(0),alignBox=K('[name="align"]',div),borderBox=K('[name="border"]',div).val(1),colorBox=K(".ke-input-color",div);_initColorPicker(div,colorBox.eq(0));_initColorPicker(div,colorBox.eq(1));_setColor(colorBox.eq(1),"");rowsBox[0].focus();rowsBox[0].select();var table;if(isInsert){return}table=self.plugin.getSelectedTable();if(table){rowsBox.val(table[0].rows.length);colsBox.val(table[0].rows.length>0?table[0].rows[0].cells.length:0);rowsBox.attr("disabled",true);colsBox.attr("disabled",true);var match,tableWidth=table[0].style.width||table[0].width,tableHeight=table[0].style.height||table[0].height;if(tableWidth!==undefined&&(match=/^(\d+)((?:px|%)*)$/.exec(tableWidth))){widthBox.val(match[1]);widthTypeBox.val(match[2])}else{widthBox.val("")}if(tableHeight!==undefined&&(match=/^(\d+)((?:px|%)*)$/.exec(tableHeight))){heightBox.val(match[1]);heightTypeBox.val(match[2])}paddingBox.val(table[0].cellPadding||"");spacingBox.val(table[0].cellSpacing||"");alignBox.val(table[0].align||"");borderBox.val(table[0].border===undefined?"":table[0].border);_setColor(colorBox.eq(0),K.toHex(table.attr("borderColor")||""));_setColor(colorBox.eq(1),K.toHex(table[0].style.backgroundColor||table[0].bgColor||""));widthBox[0].focus();widthBox[0].select()}},cellprop:function(){var html=['<div style="padding:20px;">','<div class="ke-dialog-row ke-clearfix">','<label for="keWidth" style="width:90px;">'+lang.size+"</label>",lang.width+' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ','<select name="widthType">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select> ",lang.height+' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ','<select name="heightType">','<option value="%">'+lang.percent+"</option>",'<option value="px">'+lang.px+"</option>","</select>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keAlign" style="width:90px;">'+lang.align+"</label>",lang.textAlign+' <select id="keAlign" name="textAlign">','<option value="">'+lang.alignDefault+"</option>",'<option value="left">'+lang.alignLeft+"</option>",'<option value="center">'+lang.alignCenter+"</option>",'<option value="right">'+lang.alignRight+"</option>","</select> ",lang.verticalAlign+' <select name="verticalAlign">','<option value="">'+lang.alignDefault+"</option>",'<option value="top">'+lang.alignTop+"</option>",'<option value="middle">'+lang.alignMiddle+"</option>",'<option value="bottom">'+lang.alignBottom+"</option>",'<option value="baseline">'+lang.alignBaseline+"</option>","</select>","</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBorder" style="width:90px;">'+lang.border+"</label>",lang.borderWidth+' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ',lang.borderColor+' <span class="ke-inline-block ke-input-color"></span>',"</div>",'<div class="ke-dialog-row ke-clearfix">','<label for="keBgColor" style="width:90px;">'+lang.backgroundColor+"</label>",'<span class="ke-inline-block ke-input-color"></span>',"</div>","</div>"].join("");var bookmark=self.cmd.range.createBookmark();var dialog=self.createDialog({name:name,width:500,title:self.lang("tablecell"),body:html,beforeRemove:function(){colorBox.unbind()},yesBtn:{name:self.lang("yes"),click:function(e){var width=widthBox.val(),height=heightBox.val(),widthType=widthTypeBox.val(),heightType=heightTypeBox.val(),padding=paddingBox.val(),spacing=spacingBox.val(),textAlign=textAlignBox.val(),verticalAlign=verticalAlignBox.val(),border=borderBox.val(),borderColor=K(colorBox[0]).html()||"",bgColor=K(colorBox[1]).html()||"";if(!/^\d*$/.test(width)){K.options.errorMsgHandler(self.lang("invalidWidth"),"error");widthBox[0].focus();return}if(!/^\d*$/.test(height)){K.options.errorMsgHandler(self.lang("invalidHeight"),"error");heightBox[0].focus();return}if(!/^\d*$/.test(border)){K.options.errorMsgHandler(self.lang("invalidBorder"),"error");borderBox[0].focus();return}cell.css({width:width!==""?width+widthType:"",height:height!==""?height+heightType:"","background-color":bgColor,"text-align":textAlign,"vertical-align":verticalAlign,"border-width":border,"border-style":border!==""?"solid":"","border-color":borderColor});self.hideDialog().focus();self.cmd.range.moveToBookmark(bookmark);self.cmd.select();self.addBookmark()}}}),div=dialog.div,widthBox=K('[name="width"]',div).val(100),heightBox=K('[name="height"]',div),widthTypeBox=K('[name="widthType"]',div),heightTypeBox=K('[name="heightType"]',div),paddingBox=K('[name="padding"]',div).val(0),spacingBox=K('[name="spacing"]',div).val(0),textAlignBox=K('[name="textAlign"]',div),verticalAlignBox=K('[name="verticalAlign"]',div),borderBox=K('[name="border"]',div).val(1),colorBox=K(".ke-input-color",div);_initColorPicker(div,colorBox.eq(0));_initColorPicker(div,colorBox.eq(1));_setColor(colorBox.eq(1),"");widthBox[0].focus();widthBox[0].select();var cell=self.plugin.getSelectedCell();var match,cellWidth=cell[0].style.width||cell[0].width||"",cellHeight=cell[0].style.height||cell[0].height||"";if(match=/^(\d+)((?:px|%)*)$/.exec(cellWidth)){widthBox.val(match[1]);widthTypeBox.val(match[2])}else{widthBox.val("")}if(match=/^(\d+)((?:px|%)*)$/.exec(cellHeight)){heightBox.val(match[1]);heightTypeBox.val(match[2])}textAlignBox.val(cell[0].style.textAlign||"");verticalAlignBox.val(cell[0].style.verticalAlign||"");var border=cell[0].style.borderWidth||"";if(border){border=parseInt(border)}borderBox.val(border);_setColor(colorBox.eq(0),K.toHex(cell[0].style.borderColor||""));_setColor(colorBox.eq(1),K.toHex(cell[0].style.backgroundColor||""));widthBox[0].focus();widthBox[0].select()},insert:function(){this.prop(true)},delete:function(){var table=self.plugin.getSelectedTable();self.cmd.range.setStartBefore(table[0]).collapse(true);self.cmd.select();table.remove();self.addBookmark()},colinsert:function(offset){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],index=cell.cellIndex+offset;index+=table.rows[0].cells.length-row.cells.length;for(var i=0,len=table.rows.length;i<len;i++){var newRow=table.rows[i],newCell=newRow.insertCell(index);newCell.innerHTML=K.IE?"":"<br />";index=_getCellIndex(table,newRow,newCell)}self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colinsertleft:function(){this.colinsert(0)},colinsertright:function(){this.colinsert(1)},rowinsert:function(offset){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0];var rowIndex=row.rowIndex;if(offset===1){rowIndex=row.rowIndex+(cell.rowSpan-1)+offset}var newRow=table.insertRow(rowIndex);for(var i=0,len=row.cells.length;i<len;i++){if(row.cells[i].rowSpan>1){len-=row.cells[i].rowSpan-1}var newCell=newRow.insertCell(i);if(offset===1&&row.cells[i].colSpan>1){newCell.colSpan=row.cells[i].colSpan}newCell.innerHTML=K.IE?"":"<br />"}for(var j=rowIndex;j>=0;j--){var cells=table.rows[j].cells;if(cells.length>i){for(var k=cell.cellIndex;k>=0;k--){if(cells[k].rowSpan>1){cells[k].rowSpan+=1}}break}}self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},rowinsertabove:function(){this.rowinsert(0)},rowinsertbelow:function(){this.rowinsert(1)},rowmerge:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex,nextRowIndex=rowIndex+cell.rowSpan,nextRow=table.rows[nextRowIndex];if(table.rows.length<=nextRowIndex){return}var cellIndex=cell.cellIndex;if(nextRow.cells.length<=cellIndex){return}var nextCell=nextRow.cells[cellIndex];if(cell.colSpan!==nextCell.colSpan){return}cell.rowSpan+=nextCell.rowSpan;nextRow.deleteCell(cellIndex);self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colmerge:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex,cellIndex=cell.cellIndex,nextCellIndex=cellIndex+1;if(row.cells.length<=nextCellIndex){return}var nextCell=row.cells[nextCellIndex];if(cell.rowSpan!==nextCell.rowSpan){return}cell.colSpan+=nextCell.colSpan;row.deleteCell(nextCellIndex);self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},rowsplit:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex;if(cell.rowSpan===1){return}var cellIndex=_getCellIndex(table,row,cell);for(var i=1,len=cell.rowSpan;i<len;i++){var newRow=table.rows[rowIndex+i],newCell=newRow.insertCell(cellIndex);if(cell.colSpan>1){newCell.colSpan=cell.colSpan}newCell.innerHTML=K.IE?"":"<br />";cellIndex=_getCellIndex(table,newRow,newCell)}K(cell).removeAttr("rowSpan");self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},colsplit:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],cellIndex=cell.cellIndex;if(cell.colSpan===1){return}for(var i=1,len=cell.colSpan;i<len;i++){var newCell=row.insertCell(cellIndex+i);if(cell.rowSpan>1){newCell.rowSpan=cell.rowSpan}newCell.innerHTML=K.IE?"":"<br />"}K(cell).removeAttr("colSpan");self.cmd.range.selectNodeContents(cell).collapse(true);self.cmd.select();self.addBookmark()},coldelete:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],index=cell.cellIndex;for(var i=0,len=table.rows.length;i<len;i++){var newRow=table.rows[i],newCell=newRow.cells[index];if(newCell.colSpan>1){newCell.colSpan-=1;if(newCell.colSpan===1){K(newCell).removeAttr("colSpan")}}else{newRow.deleteCell(index)}if(newCell.rowSpan>1){i+=newCell.rowSpan-1}}if(row.cells.length===0){self.cmd.range.setStartBefore(table).collapse(true);self.cmd.select();K(table).remove()}else{self.cmd.selection(true)}self.addBookmark()},rowdelete:function(){var table=self.plugin.getSelectedTable()[0],row=self.plugin.getSelectedRow()[0],cell=self.plugin.getSelectedCell()[0],rowIndex=row.rowIndex;for(var i=cell.rowSpan-1;i>=0;i--){table.deleteRow(rowIndex+i)}if(table.rows.length===0){self.cmd.range.setStartBefore(table).collapse(true);self.cmd.select();K(table).remove()}else{self.cmd.selection(true)}self.addBookmark()}};self.clickToolbar(name,self.plugin.table.prop)});KindEditor.plugin("template",function(K){var self=this,name="template",lang=self.lang(name+"."),htmlPath=self.pluginsPath+name+"/html/";function getFilePath(fileName){return htmlPath+fileName+"?ver="+encodeURIComponent(K.DEBUG?K.TIME:K.VERSION)}self.clickToolbar(name,function(){var lang=self.lang(name+"."),arr=['<div class="ke-dialog-content-inner" style="padding-top:0">','<div class="ke-dialog-row ke-clearfix">','<div class="ke-header" style="height: 32px;">',lang.selectTemplate+' <select class="ke-select">'];K.each(lang.fileList,function(key,val){arr.push('<option value="'+key+'">'+val+"</option>")});html=[arr.join(""),"</select>",'<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">'+lang.replaceContent+"</label>","</div>","</div>",'<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>',"</div>"].join("");var dialog=self.createDialog({name:name,width:500,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var doc=K.iframeDoc(iframe);self[checkbox[0].checked?"html":"insertHtml"](doc.body.innerHTML).hideDialog().focus()}}});var selectBox=K("select",dialog.div),checkbox=K('[name="replaceFlag"]',dialog.div),iframe=K("iframe",dialog.div);checkbox[0].checked=true;iframe.attr("src",getFilePath(selectBox.val()));selectBox.change(function(){iframe.attr("src",getFilePath(this.value))})})});KindEditor.plugin("wordpaste",function(K){var self=this,name="wordpaste";self.clickToolbar(name,function(){var jsonp=function(url,callback){var callbackName="jsonp_callback_"+Math.round(1e5*Math.random());window[callbackName]=function(data){delete window[callbackName];document.body.removeChild(script);callback(data)};var script=document.createElement("script");script.src=url+(url.indexOf("?")>=0?"&":"?")+"callback="+callbackName;document.body.appendChild(script)};var lang=self.lang(name+"."),html='<div style="padding:10px 20px;">'+'<div style="margin-bottom:10px;">'+lang.comment+"</div>"+'<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>'+"</div>",dialog=self.createDialog({name:name,width:450,title:self.lang(name),body:html,yesBtn:{name:self.lang("yes"),click:function(e){var str=doc.body.innerHTML;str=K.clearMsWord(str,self.filterMode?self.htmlTags:K.options.htmlTags);if(typeof self.wordImageServer!=="undefined"&&self.wordImageServer){var i=0;var arr=[];var replacedStr=str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/gi,function(value){arr[i]=value;var replaced="##"+i+"##";i++;return replaced});for(var j=0;j<arr.length;j++){jsonp("http://"+self.wordImageServer+"/word?index="+j+"&file="+encodeURIComponent(arr[j]),function(data){K.uploadwordimage.call(self,data.index,data.info)})}str=replacedStr}self.insertHtml(str).hideDialog().focus()}}}),div=dialog.div,iframe=K("iframe",div),doc=K.iframeDoc(iframe);if(!K.IE){doc.designMode="on"}doc.open();doc.write("<!doctype html><html><head><title>WordPaste</title></head>");doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">');if(!K.IE){doc.write("<br />")}doc.write("</body></html>");doc.close();if(K.IE){doc.body.contentEditable="true"}iframe[0].contentWindow.focus()})});KindEditor.plugin("fixtoolbar",function(K){var self=this;if(!self.fixToolBar){return}function init(){var toolbar=K(".ke-toolbar");var originY=toolbar.pos().y;K(window).bind("scroll",function(){if(toolbar.css("position")=="fixed"){if(document.body.scrollTop-originY<0){toolbar.css("position","static");toolbar.css("top","auto")}}else{if(toolbar.pos().y-document.body.scrollTop<0){toolbar.css("position","fixed");toolbar.css("top",0)}}})}if(self.isCreated){init()}else{self.afterCreate(init)}}); diff --git a/public/assets/addons/nkeditor/plugins/anchor/anchor.js b/public/assets/addons/nkeditor/plugins/anchor/anchor.js new file mode 100644 index 0000000..ddf6b7a --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/anchor/anchor.js @@ -0,0 +1,46 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('anchor', function(K) { + var self = this, name = 'anchor', lang = self.lang(name + '.'); + self.plugin.anchor = { + edit : function() { + var html = ['<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keName">' + lang.name + ':</label>', + '<input class="ke-input-text" type="text" id="keName" name="name" value="" style="width:100px;" />', + '</div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 300, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + self.insertHtml('<a name="' + nameBox.val() + '">').hideDialog().focus(); + } + } + }); + var div = dialog.div, + nameBox = K('input[name="name"]', div); + var img = self.plugin.getSelectedAnchor(); + if (img) { + nameBox.val(unescape(img.attr('data-ke-name'))); + } + nameBox[0].focus(); + nameBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedAnchor().remove(); + } + }; + self.clickToolbar(name, self.plugin.anchor.edit); +}); diff --git a/public/assets/addons/nkeditor/plugins/autoheight/autoheight.js b/public/assets/addons/nkeditor/plugins/autoheight/autoheight.js new file mode 100644 index 0000000..6123cfa --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/autoheight/autoheight.js @@ -0,0 +1,59 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('autoheight', function(K) { + var self = this; + + if (!self.autoHeightMode) { + return; + } + + var minHeight; + + function hideScroll() { + var edit = self.edit; + var body = edit.doc.body; + edit.iframe[0].scroll = 'no'; + body.style.overflowY = 'hidden'; + } + + function resetHeight() { + if(self.fullscreenMode){ + return; + } + var edit = self.edit; + var body = edit.doc.body; + edit.iframe.height(minHeight); + self.resize(null, Math.max((K.IE ? body.scrollHeight : body.offsetHeight) + 76, minHeight)); + } + + function init() { + minHeight = K.removeUnit(self.height); + + self.edit.afterChange(resetHeight); + if(!self.fullscreenMode){ + hideScroll(); + } + resetHeight(); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } +}); + +/* +* 如何实现真正的自动高度? +* 修改编辑器高度之后,再次获取body内容高度时,最小值只会是当前iframe的设置高度,这样就导致高度只增不减。 +* 所以每次获取body内容高度之前,先将iframe的高度重置为最小高度,这样就能获取body的实际高度。 +* 由此就实现了真正的自动高度 +* 测试:chrome、firefox、IE9、IE8 +* */ diff --git a/public/assets/addons/nkeditor/plugins/baidumap/baidumap.js b/public/assets/addons/nkeditor/plugins/baidumap/baidumap.js new file mode 100644 index 0000000..31ce564 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/baidumap/baidumap.js @@ -0,0 +1,91 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5 + +KindEditor.plugin('baidumap', function(K) { + var self = this, name = 'baidumap', lang = self.lang(name + '.'); + var mapWidth = K.undef(self.mapWidth, 558); + var mapHeight = K.undef(self.mapHeight, 360); + self.clickToolbar(name, function() { + var html = ['<div class="ke-dialog-content-inner" style="padding-top: 0">', + '<div class="ke-dialog-row ke-clearfix">', + // right start + '<div class="ke-header">' + lang.address, + '<input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span>', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" style="line-height:22px;padding:0 10px;" />', + '</span>', + '<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" class="checkbox" value="1" style="display:inline-block;" /> <label for="keInsertDynamicMap">' + lang.insertDynamicMap + '</label>', + '</div>', + '</div>', + + //map iframe + '<div class="ke-map" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : mapWidth + 42, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var map = win.map; + var centerObj = map.getCenter(); + var center = centerObj.lng + ',' + centerObj.lat; + var zoom = map.getZoom(); + var url = [checkbox[0].checked ? self.pluginsPath + 'baidumap/index.html' : 'https://api.map.baidu.com/staticimage', + '?center=' + encodeURIComponent(center), + '&zoom=' + encodeURIComponent(zoom), + '&width=' + mapWidth, + '&height=' + mapHeight, + '&markers=' + encodeURIComponent(center), + '&markerStyles=' + encodeURIComponent('l,A')].join(''); + if (checkbox[0].checked) { + self.insertHtml('<iframe src="' + url + '" frameborder="0" style="width:' + (mapWidth + 2) + 'px;height:' + (mapHeight + 2) + 'px;"></iframe>'); + } else { + self.exec('insertimage', url); + } + self.hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + checkbox = K('[name="insertDynamicMap"]', dialog.div), + win, doc; + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'baidumap/map.html" style="width:' + mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>'); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/baidumap/index.html b/public/assets/addons/nkeditor/plugins/baidumap/index.html new file mode 100644 index 0000000..727d52d --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/baidumap/index.html @@ -0,0 +1,102 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"/> + <meta name="keywords" content="百度地图,百度地图API,百度地图自定义工具,百度地图所见即所得工具"/> + <meta name="description" content="百度地图API自定义地图,帮助用户在可视化操作下生成百度地图"/> + <title>百度地图API自定义地图</title> + <!--引用百度地图API--> + <style type="text/css"> + html, body { + margin: 0; + padding: 0; + } + + .iw_poi_title { + color: #CC5522; + font-size: 14px; + font-weight: bold; + overflow: hidden; + padding-right: 13px; + white-space: nowrap + } + + .iw_poi_content { + font: 12px arial, sans-serif; + overflow: visible; + padding-top: 4px; + white-space: -moz-pre-wrap; + word-wrap: break-word + } + </style> + <script type="text/javascript" src="//api.map.baidu.com/api?key=&v=1.1&services=true"></script> +</head> + +<body onload="initMap();"> +<!--百度地图容器--> +<div style="width:697px;height:550px;border:#ccc solid 1px;" id="dituContent"></div> +</body> +<script type="text/javascript"> + function getParam(name) { + return location.href.match(new RegExp('[?&]' + name + '=([^?&]+)', 'i')) ? decodeURIComponent(RegExp.$1) : ''; + } + + var centerParam = getParam('center'); + var zoomParam = getParam('zoom'); + var widthParam = getParam('width'); + var heightParam = getParam('height'); + var markersParam = getParam('markers'); + var markerStylesParam = getParam('markerStyles'); + + //创建和初始化地图函数: + function initMap() { + // [FF]切换模式后报错 + if (!window.BMap) { + return; + } + var dituContent = document.getElementById('dituContent'); + dituContent.style.width = widthParam + 'px'; + dituContent.style.height = heightParam + 'px'; + + createMap();//创建地图 + setMapEvent();//设置地图事件 + addMapControl();//向地图添加控件 + + // 创建标注 + var markersArr = markersParam.split(','); + var point = new BMap.Point(markersArr[0], markersArr[1]); + var marker = new BMap.Marker(point); + map.addOverlay(marker); // 将标注添加到地图中 + } + + //创建地图函数: + function createMap() { + var map = new BMap.Map("dituContent");//在百度地图容器中创建一个地图 + var centerArr = centerParam.split(','); + var point = new BMap.Point(centerArr[0], centerArr[1]);//定义一个中心点坐标 + map.centerAndZoom(point, zoomParam);//设定地图的中心点和坐标并将地图显示在地图容器中 + window.map = map;//将map变量存储在全局 + } + + //地图事件设置函数: + function setMapEvent() { + map.enableDragging();//启用地图拖拽事件,默认启用(可不写) + map.enableScrollWheelZoom();//启用地图滚轮放大缩小 + map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写) + map.enableKeyboard();//启用键盘上下左右键移动地图 + } + + //地图控件添加函数: + function addMapControl() { + //向地图中添加缩放控件 + var ctrl_nav = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_LEFT, type: BMAP_NAVIGATION_CONTROL_LARGE}); + map.addControl(ctrl_nav); + //向地图中添加缩略图控件 + var ctrl_ove = new BMap.OverviewMapControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT, isOpen: 1}); + map.addControl(ctrl_ove); + //向地图中添加比例尺控件 + var ctrl_sca = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_LEFT}); + map.addControl(ctrl_sca); + } +</script> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/baidumap/map.html b/public/assets/addons/nkeditor/plugins/baidumap/map.html new file mode 100644 index 0000000..6810c15 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/baidumap/map.html @@ -0,0 +1,53 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8"/> + <title>Baidu Maps</title> + <style> + html { + height: 100% + } + + body { + height: 100%; + margin: 0; + padding: 0; + background-color: #FFF + } + </style> + <script charset="utf-8" src="//api.map.baidu.com/api?v=1.3"></script> + <script> + var map, geocoder; + + function initialize() { + map = new BMap.Map('map_canvas'); + var point = new BMap.Point(114.025974, 22.546054); + map.centerAndZoom(point, 11); + map.addControl(new BMap.NavigationControl()); + map.enableScrollWheelZoom(); + + var gc = new BMap.Geocoder(); + gc.getLocation(point, function (rs) { + var addComp = rs.addressComponents; + var address = [addComp.city].join(''); + parent.document.getElementById("kindeditor_plugin_map_address").value = address; + }); + } + + function search(address) { + if (!map) return; + var local = new BMap.LocalSearch(map, { + renderOptions: { + map: map, + autoViewport: true, + selectFirstResult: false + } + }); + local.search(address); + } + </script> +</head> +<body onload="initialize();"> +<div id="map_canvas" style="width:100%; height:100%"></div> +</body> +</html> diff --git a/public/assets/addons/nkeditor/plugins/clearhtml/clearhtml.js b/public/assets/addons/nkeditor/plugins/clearhtml/clearhtml.js new file mode 100644 index 0000000..1bf0e5d --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/clearhtml/clearhtml.js @@ -0,0 +1,29 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('clearhtml', function(K) { + var self = this, name = 'clearhtml'; + self.clickToolbar(name, function() { + self.focus(); + var html = self.html(); + html = html.replace(/(<script[^>]*>)([\s\S]*?)(<\/script>)/ig, ''); + html = html.replace(/(<style[^>]*>)([\s\S]*?)(<\/style>)/ig, ''); + html = K.formatHtml(html, { + a : ['href', 'target'], + embed : ['src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], + img : ['src', 'width', 'height', 'border', 'alt', 'title', '.width', '.height'], + table : ['border'], + 'td,th' : ['rowspan', 'colspan'], + 'div,hr,br,tbody,tr,p,ol,ul,li,blockquote,h1,h2,h3,h4,h5,h6' : [] + }); + self.html(html); + self.cmd.selection(true); + self.addBookmark(); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/code/code.js b/public/assets/addons/nkeditor/plugins/code/code.js new file mode 100644 index 0000000..67bd09d --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/code/code.js @@ -0,0 +1,64 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// google code prettify: http://google-code-prettify.googlecode.com/ +// http://google-code-prettify.googlecode.com/ + +KindEditor.plugin('code', function(K) { + var self = this, name = 'code'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = ['<div style="margin: 0px 20px;">', + '<div class="ke-dialog-row">', + '<select class="ke-select" style="margin-bottom: 5px;">', + '<option value="javascript">JavaScript</option>', + '<option value="html">HTML</option>', + '<option value="css">CSS</option>', + '<option value="php">PHP</option>', + '<option value="perl">Perl</option>', + '<option value="python">Python</option>', + '<option value="ruby">Ruby</option>', + '<option value="java">Java</option>', + '<option value="go">Go</option>', + '<option value="asp">ASP/VB</option>', + '<option value="csharp">C#</option>', + '<option value="cpp">C/C++</option>', + '<option value="cs">C#</option>', + '<option value="bash">Shell</option>', + '<option value="sql">SQL</option>', + '<option value="markup">Other</option>', + '</select>', + '</div>', + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>', + '</div>'].join(''), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var type = K('.ke-select', dialog.div).val(), + code = textarea.val(), + cls = type === '' ? '' : 'language-' + type, + html = '<pre class="' + cls + '"><code>' + K.escape(code) + '</code></pre> <br/>'; + if (K.trim(code) === '') { + K.options.errorMsgHandler(lang.pleaseInput, "error"); + textarea[0].focus(); + return; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/code/pretty.js b/public/assets/addons/nkeditor/plugins/code/pretty.js new file mode 100644 index 0000000..ec84da9 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/code/pretty.js @@ -0,0 +1,18 @@ +/** + * @author yangjian + * @since 18-9-11 下午9:02. + */ + +// function _bindEvent(el, type, fn) { +// if (el.addEventListener){ +// el.addEventListener(type, fn); +// } else if (el.attachEvent){ +// el.attachEvent('on' + type, fn); +// } +// } +// _bindEvent(document.body, "DOMNodeInserted", function(e) { +// var className = e.target.className; +// if (className && className.indexOf("language-") != -1) { +// Prism.highlightElement(e.target); +// } +// }) diff --git a/public/assets/addons/nkeditor/plugins/code/prism.css b/public/assets/addons/nkeditor/plugins/code/prism.css new file mode 100644 index 0000000..f88adbc --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/code/prism.css @@ -0,0 +1,292 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; + white-space: normal; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function, +.token.class-name { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + position: relative; + padding: 1em 0 1em 3em; +} + +.line-highlight { + position: absolute; + left: 0; + right: 0; + padding: inherit 0; + margin-top: 1em; /* Same as .prism’s padding-top */ + + background: hsla(24, 20%, 50%,.08); + background: linear-gradient(to right, hsla(24, 20%, 50%,.1) 70%, hsla(24, 20%, 50%,0)); + + pointer-events: none; + + line-height: inherit; + white-space: pre; +} + + .line-highlight:before, + .line-highlight[data-end]:after { + content: attr(data-start); + position: absolute; + top: .4em; + left: .6em; + min-width: 1em; + padding: 0 .5em; + background-color: hsla(24, 20%, 50%,.4); + color: hsl(24, 20%, 95%); + font: bold 65%/1.5 sans-serif; + text-align: center; + vertical-align: .3em; + border-radius: 999px; + text-shadow: none; + box-shadow: 0 1px white; + } + + .line-highlight[data-end]:after { + content: attr(data-end); + top: auto; + bottom: .4em; + } + +.line-numbers .line-highlight:before, +.line-numbers .line-highlight:after { + content: none; +} + +pre[class*="language-"].line-numbers { + position: relative; + padding-left: 3.8em; + counter-reset: linenumber; +} + +pre[class*="language-"].line-numbers > code { + position: relative; + white-space: inherit; +} + +.line-numbers .line-numbers-rows { + position: absolute; + pointer-events: none; + top: 0; + font-size: 100%; + left: -3.8em; + width: 3em; /* works for line-numbers below 1000 lines */ + letter-spacing: -1px; + border-right: 1px solid #999; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + +} + + .line-numbers-rows > span { + pointer-events: none; + display: block; + counter-increment: linenumber; + } + + .line-numbers-rows > span:before { + content: counter(linenumber); + color: #999; + display: block; + padding-right: 0.8em; + text-align: right; + } + +div.code-toolbar { + position: relative; +} + +div.code-toolbar > .toolbar { + position: absolute; + top: .3em; + right: .2em; + transition: opacity 0.3s ease-in-out; + opacity: 0; +} + +div.code-toolbar:hover > .toolbar { + opacity: 1; +} + +div.code-toolbar > .toolbar .toolbar-item { + display: inline-block; +} + +div.code-toolbar > .toolbar a { + cursor: pointer; +} + +div.code-toolbar > .toolbar button { + background: none; + border: 0; + color: inherit; + font: inherit; + line-height: normal; + overflow: visible; + padding: 0; + -webkit-user-select: none; /* for button */ + -moz-user-select: none; + -ms-user-select: none; +} + +div.code-toolbar > .toolbar a, +div.code-toolbar > .toolbar button, +div.code-toolbar > .toolbar span { + color: #bbb; + font-size: .8em; + padding: 0 .5em; + background: #f5f2f0; + background: rgba(224, 224, 224, 0.2); + box-shadow: 0 2px 0 0 rgba(0,0,0,0.2); + border-radius: .5em; +} + +div.code-toolbar > .toolbar a:hover, +div.code-toolbar > .toolbar a:focus, +div.code-toolbar > .toolbar button:hover, +div.code-toolbar > .toolbar button:focus, +div.code-toolbar > .toolbar span:hover, +div.code-toolbar > .toolbar span:focus { + color: inherit; + text-decoration: none; +} + diff --git a/public/assets/addons/nkeditor/plugins/code/prism.js b/public/assets/addons/nkeditor/plugins/code/prism.js new file mode 100644 index 0000000..0f748e7 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/code/prism.js @@ -0,0 +1,26 @@ +/* PrismJS 1.15.0 +https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+c+csharp+bash+cpp+aspnet+ruby+markup-templating+go+markdown+php+python+sass+yaml&plugins=line-highlight+line-numbers+toolbar+highlight-keywords+show-language+copy-to-clipboard */ +var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(){var e=/\blang(?:uage)?-([\w-]+)\b/i,t=0,n=_self.Prism={manual:_self.Prism&&_self.Prism.manual,disableWorkerMessageHandler:_self.Prism&&_self.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof r?new r(e.type,n.util.encode(e.content),e.alias):"Array"===n.util.type(e)?e.map(n.util.encode):e.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},objId:function(e){return e.__id||Object.defineProperty(e,"__id",{value:++t}),e.__id},clone:function(e,t){var r=n.util.type(e);switch(t=t||{},r){case"Object":if(t[n.util.objId(e)])return t[n.util.objId(e)];var a={};t[n.util.objId(e)]=a;for(var l in e)e.hasOwnProperty(l)&&(a[l]=n.util.clone(e[l],t));return a;case"Array":if(t[n.util.objId(e)])return t[n.util.objId(e)];var a=[];return t[n.util.objId(e)]=a,e.forEach(function(e,r){a[r]=n.util.clone(e,t)}),a}return e}},languages:{extend:function(e,t){var r=n.util.clone(n.languages[e]);for(var a in t)r[a]=t[a];return r},insertBefore:function(e,t,r,a){a=a||n.languages;var l=a[e];if(2==arguments.length){r=arguments[1];for(var i in r)r.hasOwnProperty(i)&&(l[i]=r[i]);return l}var o={};for(var s in l)if(l.hasOwnProperty(s)){if(s==t)for(var i in r)r.hasOwnProperty(i)&&(o[i]=r[i]);o[s]=l[s]}var u=a[e];return a[e]=o,n.languages.DFS(n.languages,function(t,n){n===u&&t!=e&&(this[t]=o)}),o},DFS:function(e,t,r,a){a=a||{};for(var l in e)e.hasOwnProperty(l)&&(t.call(e,l,e[l],r||l),"Object"!==n.util.type(e[l])||a[n.util.objId(e[l])]?"Array"!==n.util.type(e[l])||a[n.util.objId(e[l])]||(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,l,a)):(a[n.util.objId(e[l])]=!0,n.languages.DFS(e[l],t,null,a)))}},plugins:{},highlightAll:function(e,t){n.highlightAllUnder(document,e,t)},highlightAllUnder:function(e,t,r){var a={callback:r,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};n.hooks.run("before-highlightall",a);for(var l,i=a.elements||e.querySelectorAll(a.selector),o=0;l=i[o++];)n.highlightElement(l,t===!0,a.callback)},highlightElement:function(t,r,a){for(var l,i,o=t;o&&!e.test(o.className);)o=o.parentNode;o&&(l=(o.className.match(e)||[,""])[1].toLowerCase(),i=n.languages[l]),t.className=t.className.replace(e,"").replace(/\s+/g," ")+" language-"+l,t.parentNode&&(o=t.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+l));var s=t.textContent,u={element:t,language:l,grammar:i,code:s};if(n.hooks.run("before-sanity-check",u),!u.code||!u.grammar)return u.code&&(n.hooks.run("before-highlight",u),u.element.textContent=u.code,n.hooks.run("after-highlight",u)),n.hooks.run("complete",u),void 0;if(n.hooks.run("before-highlight",u),r&&_self.Worker){var g=new Worker(n.filename);g.onmessage=function(e){u.highlightedCode=e.data,n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,a&&a.call(u.element),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},g.postMessage(JSON.stringify({language:u.language,code:u.code,immediateClose:!0}))}else u.highlightedCode=n.highlight(u.code,u.grammar,u.language),n.hooks.run("before-insert",u),u.element.innerHTML=u.highlightedCode,a&&a.call(t),n.hooks.run("after-highlight",u),n.hooks.run("complete",u)},highlight:function(e,t,a){var l={code:e,grammar:t,language:a};return n.hooks.run("before-tokenize",l),l.tokens=n.tokenize(l.code,l.grammar),n.hooks.run("after-tokenize",l),r.stringify(n.util.encode(l.tokens),l.language)},matchGrammar:function(e,t,r,a,l,i,o){var s=n.Token;for(var u in r)if(r.hasOwnProperty(u)&&r[u]){if(u==o)return;var g=r[u];g="Array"===n.util.type(g)?g:[g];for(var c=0;c<g.length;++c){var h=g[c],f=h.inside,d=!!h.lookbehind,m=!!h.greedy,p=0,y=h.alias;if(m&&!h.pattern.global){var v=h.pattern.toString().match(/[imuy]*$/)[0];h.pattern=RegExp(h.pattern.source,v+"g")}h=h.pattern||h;for(var b=a,k=l;b<t.length;k+=t[b].length,++b){var w=t[b];if(t.length>e.length)return;if(!(w instanceof s)){if(m&&b!=t.length-1){h.lastIndex=k;var _=h.exec(e);if(!_)break;for(var j=_.index+(d?_[1].length:0),P=_.index+_[0].length,A=b,x=k,O=t.length;O>A&&(P>x||!t[A].type&&!t[A-1].greedy);++A)x+=t[A].length,j>=x&&(++b,k=x);if(t[b]instanceof s)continue;I=A-b,w=e.slice(k,x),_.index-=k}else{h.lastIndex=0;var _=h.exec(w),I=1}if(_){d&&(p=_[1]?_[1].length:0);var j=_.index+p,_=_[0].slice(p),P=j+_.length,N=w.slice(0,j),S=w.slice(P),C=[b,I];N&&(++b,k+=N.length,C.push(N));var E=new s(u,f?n.tokenize(_,f):_,y,_,m);if(C.push(E),S&&C.push(S),Array.prototype.splice.apply(t,C),1!=I&&n.matchGrammar(e,t,r,b,k,!0,u),i)break}else if(i)break}}}}},tokenize:function(e,t){var r=[e],a=t.rest;if(a){for(var l in a)t[l]=a[l];delete t.rest}return n.matchGrammar(e,r,t,0,0,!1),r},hooks:{all:{},add:function(e,t){var r=n.hooks.all;r[e]=r[e]||[],r[e].push(t)},run:function(e,t){var r=n.hooks.all[e];if(r&&r.length)for(var a,l=0;a=r[l++];)a(t)}}},r=n.Token=function(e,t,n,r,a){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!a};if(r.stringify=function(e,t,a){if("string"==typeof e)return e;if("Array"===n.util.type(e))return e.map(function(n){return r.stringify(n,t,e)}).join("");var l={type:e.type,content:r.stringify(e.content,t,a),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:a};if(e.alias){var i="Array"===n.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(l.classes,i)}n.hooks.run("wrap",l);var o=Object.keys(l.attributes).map(function(e){return e+'="'+(l.attributes[e]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+l.tag+' class="'+l.classes.join(" ")+'"'+(o?" "+o:"")+">"+l.content+"</"+l.tag+">"},!_self.document)return _self.addEventListener?(n.disableWorkerMessageHandler||_self.addEventListener("message",function(e){var t=JSON.parse(e.data),r=t.language,a=t.code,l=t.immediateClose;_self.postMessage(n.highlight(a,n.languages[r],r)),l&&_self.close()},!1),_self.Prism):_self.Prism;var a=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return a&&(n.filename=a.src,n.manual||a.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(n.highlightAll):window.setTimeout(n.highlightAll,16):document.addEventListener("DOMContentLoaded",n.highlightAll))),_self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); +Prism.languages.markup={comment:/<!--[\s\S]*?-->/,prolog:/<\?[\s\S]+?\?>/,doctype:/<!DOCTYPE[\s\S]+?>/i,cdata:/<!\[CDATA\[[\s\S]*?]]>/i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,inside:{punctuation:[/^=/,{pattern:/(^|[^\\])["']/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Prism.languages.xml=Prism.languages.markup,Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup; +Prism.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(?:;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^{}\s][^{};]*?(?=\s*\{)/,string:{pattern:/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},Prism.languages.css.atrule.inside.rest=Prism.languages.css,Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/(<style[\s\S]*?>)[\s\S]*?(?=<\/style>)/i,lookbehind:!0,inside:Prism.languages.css,alias:"language-css",greedy:!0}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag)); +Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(?:true|false)\b/,"function":/\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/}; +Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},/\b(?:as|async|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/],number:/\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/,"function":/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\(|\.(?:apply|bind|call)\()/,operator:/-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[[^\]\r\n]+]|\\.|[^\/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/,lookbehind:!0,greedy:!0},"function-variable":{pattern:/[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:function\b|(?:\([^()]*\)|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i,alias:"function"},constant:/\b[A-Z][A-Z\d_]*\b/}),Prism.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/,greedy:!0,inside:{interpolation:{pattern:/\${[^}]+}/,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/(<script[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.javascript,alias:"language-javascript",greedy:!0}}),Prism.languages.js=Prism.languages.javascript; +Prism.languages.c=Prism.languages.extend("clike",{keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?/,number:/(?:\b0x[\da-f]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i}),Prism.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/,lookbehind:!0},directive:{pattern:/(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/,lookbehind:!0,alias:"keyword"}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"]; +Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(?:abstract|add|alias|as|ascending|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|descending|do|double|dynamic|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|from|get|global|goto|group|if|implicit|in|int|interface|internal|into|is|join|let|lock|long|namespace|new|null|object|operator|orderby|out|override|params|partial|private|protected|public|readonly|ref|remove|return|sbyte|sealed|select|set|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|value|var|virtual|void|volatile|where|while|yield)\b/,string:[{pattern:/@("|')(?:\1\1|\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*?\1/,greedy:!0}],"class-name":[{pattern:/\b[A-Z]\w*(?:\.\w+)*\b(?=\s+\w+)/,inside:{punctuation:/\./}},{pattern:/(\[)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/(\b(?:class|interface)\s+[A-Z]\w*(?:\.\w+)*\s*:\s*)[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}},{pattern:/((?:\b(?:class|interface|new)\s+)|(?:catch\s+\())[A-Z]\w*(?:\.\w+)*\b/,lookbehind:!0,inside:{punctuation:/\./}}],number:/\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)f?/i}),Prism.languages.insertBefore("csharp","class-name",{"generic-method":{pattern:/\w+\s*<[^>\r\n]+?>\s*(?=\()/,inside:{"function":/^\w+/,"class-name":{pattern:/\b[A-Z]\w*(?:\.\w+)*\b/,inside:{punctuation:/\./}},keyword:Prism.languages.csharp.keyword,punctuation:/[<>(),.:]/}},preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(\s*#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}}),Prism.languages.dotnet=Prism.languages.csharp; +!function(e){var t={variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\([^)]+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},/\$(?:[\w#?*!@]+|\{[^}]+\})/i]};e.languages.bash={shebang:{pattern:/^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/,alias:"important"},comment:{pattern:/(^|[^"{\\])#.*/,lookbehind:!0},string:[{pattern:/((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/,lookbehind:!0,greedy:!0,inside:t},{pattern:/(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/,greedy:!0,inside:t}],variable:t.variable,"function":{pattern:/(^|[\s;|&])(?:alias|apropos|apt-get|aptitude|aspell|awk|basename|bash|bc|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chmod|chown|chroot|chkconfig|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|grep|groupadd|groupdel|groupmod|groups|gzip|hash|head|help|hg|history|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|jobs|join|kill|killall|less|link|ln|locate|logname|logout|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|make|man|mkdir|mkfifo|mkisofs|mknod|more|most|mount|mtools|mtr|mv|mmv|nano|netstat|nice|nl|nohup|notify-send|npm|nslookup|open|op|passwd|paste|pathchk|ping|pkill|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|rename|renice|remsync|rev|rm|rmdir|rsync|screen|scp|sdiff|sed|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|sync|tail|tar|tee|test|time|timeout|times|touch|top|traceroute|trap|tr|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|uptime|useradd|userdel|usermod|users|uuencode|uudecode|v|vdir|vi|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yes|zip)(?=$|[\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/,lookbehind:!0},"boolean":{pattern:/(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/,lookbehind:!0},operator:/&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/,punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];]/};var a=t.variable[1].inside;a.string=e.languages.bash.string,a["function"]=e.languages.bash["function"],a.keyword=e.languages.bash.keyword,a["boolean"]=e.languages.bash["boolean"],a.operator=e.languages.bash.operator,a.punctuation=e.languages.bash.punctuation,e.languages.shell=e.languages.bash}(Prism); +Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(?:true|false)\b/,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*\/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)\w+/i,lookbehind:!0}}),Prism.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}); +Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.aspnet.tag.pattern=/<(?!%)\/?[^\s>\/]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\s\S]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/(<script(?=.*runat=['"]?server['"]?)[\s\S]*?>)[\s\S]*?(?=<\/script>)/i,lookbehind:!0,inside:Prism.languages.csharp||{}}}); +!function(e){e.languages.ruby=e.languages.extend("clike",{comment:[/#.*/,{pattern:/^=begin(?:\r?\n|\r)(?:.*(?:\r?\n|\r))*?=end/m,greedy:!0}],keyword:/\b(?:alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|protected|private|public|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var n={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.languages.ruby}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,greedy:!0,inside:{interpolation:n}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}],variable:/[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,symbol:{pattern:/(^|[^:]):[a-zA-Z_]\w*(?:[?!]|\b)/,lookbehind:!0}}),e.languages.insertBefore("ruby","number",{builtin:/\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|Fixnum|Float|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z]\w*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s{(\[<])(?:(?!\1)[^\\]|\\[\s\S])*\1/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,greedy:!0,inside:{interpolation:n}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,greedy:!0,inside:{interpolation:n}},{pattern:/("|')(?:#\{[^}]+\}|\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0,inside:{interpolation:n}}]}(Prism); +Prism.languages["markup-templating"]={},Object.defineProperties(Prism.languages["markup-templating"],{buildPlaceholders:{value:function(e,t,n,a){e.language===t&&(e.tokenStack=[],e.code=e.code.replace(n,function(n){if("function"==typeof a&&!a(n))return n;for(var r=e.tokenStack.length;-1!==e.code.indexOf("___"+t.toUpperCase()+r+"___");)++r;return e.tokenStack[r]=n,"___"+t.toUpperCase()+r+"___"}),e.grammar=Prism.languages.markup)}},tokenizePlaceholders:{value:function(e,t){if(e.language===t&&e.tokenStack){e.grammar=Prism.languages[t];var n=0,a=Object.keys(e.tokenStack),r=function(o){if(!(n>=a.length))for(var i=0;i<o.length;i++){var g=o[i];if("string"==typeof g||g.content&&"string"==typeof g.content){var c=a[n],s=e.tokenStack[c],l="string"==typeof g?g:g.content,p=l.indexOf("___"+t.toUpperCase()+c+"___");if(p>-1){++n;var f,u=l.substring(0,p),_=new Prism.Token(t,Prism.tokenize(s,e.grammar,t),"language-"+t,s),k=l.substring(p+("___"+t.toUpperCase()+c+"___").length);if(u||k?(f=[u,_,k].filter(function(e){return!!e}),r(f)):f=_,"string"==typeof g?Array.prototype.splice.apply(o,[i,1].concat(f)):g.content=f,n>=a.length)break}}else g.content&&"string"!=typeof g.content&&r(g.content)}};r(e.tokens)}}}}); +Prism.languages.go=Prism.languages.extend("clike",{keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/,"boolean":/\b(?:_|iota|nil|true|false)\b/,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,number:/(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i,string:{pattern:/(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0}}),delete Prism.languages.go["class-name"]; +Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},code:[{pattern:/^(?: {4}|\t).+/m,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*(?:\r?\n|\r)(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#+.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*$|__$/}},italic:{pattern:/(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:\\.|[^"\\])*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.italic.inside.url=Prism.languages.markdown.url,Prism.languages.markdown.bold.inside.italic=Prism.languages.markdown.italic,Prism.languages.markdown.italic.inside.bold=Prism.languages.markdown.bold; +!function(e){e.languages.php=e.languages.extend("clike",{keyword:/\b(?:and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0}}),e.languages.insertBefore("php","string",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),e.languages.insertBefore("php","keyword",{delimiter:{pattern:/\?>|<\?(?:php|=)?/i,alias:"important"},variable:/\$+(?:\w+\b|(?={))/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),e.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}});var n={pattern:/{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/,lookbehind:!0,inside:{rest:e.languages.php}};e.languages.insertBefore("php","string",{"nowdoc-string":{pattern:/<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<'[^']+'|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<'?|[';]$/}}}},"heredoc-string":{pattern:/<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i,greedy:!0,alias:"string",inside:{delimiter:{pattern:/^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,alias:"symbol",inside:{punctuation:/^<<<"?|[";]$/}},interpolation:n}},"single-quoted-string":{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0,alias:"string"},"double-quoted-string":{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,alias:"string",inside:{interpolation:n}}}),delete e.languages.php.string,e.hooks.add("before-tokenize",function(n){if(/(?:<\?php|<\?)/gi.test(n.code)){var t=/(?:<\?php|<\?)[\s\S]*?(?:\?>|$)/gi;e.languages["markup-templating"].buildPlaceholders(n,"php",t)}}),e.hooks.add("after-tokenize",function(n){e.languages["markup-templating"].tokenizePlaceholders(n,"php")})}(Prism); +Prism.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"triple-quoted-string":{pattern:/("""|''')[\s\S]+?\1/,greedy:!0,alias:"string"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,greedy:!0},"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,"boolean":/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/}; +!function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var a=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:a,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:a,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,delete e.languages.sass.selector,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/,lookbehind:!0}})}(Prism); +Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},"boolean":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},"null":{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./}; +!function(){function e(e,t){return Array.prototype.slice.call((t||document).querySelectorAll(e))}function t(e,t){return t=" "+t+" ",(" "+e.className+" ").replace(/[\n\t]/g," ").indexOf(t)>-1}function n(e,n,i){n="string"==typeof n?n:e.getAttribute("data-line");for(var o,l=n.replace(/\s+/g,"").split(","),a=+e.getAttribute("data-line-offset")||0,s=r()?parseInt:parseFloat,d=s(getComputedStyle(e).lineHeight),u=t(e,"line-numbers"),c=0;o=l[c++];){var p=o.split("-"),m=+p[0],f=+p[1]||m,h=e.querySelector('.line-highlight[data-range="'+o+'"]')||document.createElement("div");if(h.setAttribute("aria-hidden","true"),h.setAttribute("data-range",o),h.className=(i||"")+" line-highlight",u&&Prism.plugins.lineNumbers){var g=Prism.plugins.lineNumbers.getLine(e,m),y=Prism.plugins.lineNumbers.getLine(e,f);g&&(h.style.top=g.offsetTop+"px"),y&&(h.style.height=y.offsetTop-g.offsetTop+y.offsetHeight+"px")}else h.setAttribute("data-start",m),f>m&&h.setAttribute("data-end",f),h.style.top=(m-a-1)*d+"px",h.textContent=new Array(f-m+2).join(" \n");u?e.appendChild(h):(e.querySelector("code")||e).appendChild(h)}}function i(){var t=location.hash.slice(1);e(".temporary.line-highlight").forEach(function(e){e.parentNode.removeChild(e)});var i=(t.match(/\.([\d,-]+)$/)||[,""])[1];if(i&&!document.getElementById(t)){var r=t.slice(0,t.lastIndexOf(".")),o=document.getElementById(r);o&&(o.hasAttribute("data-line")||o.setAttribute("data-line",""),n(o,i,"temporary "),document.querySelector(".temporary.line-highlight").scrollIntoView())}}if("undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector){var r=function(){var e;return function(){if("undefined"==typeof e){var t=document.createElement("div");t.style.fontSize="13px",t.style.lineHeight="1.5",t.style.padding=0,t.style.border=0,t.innerHTML=" <br /> ",document.body.appendChild(t),e=38===t.offsetHeight,document.body.removeChild(t)}return e}}(),o=0;Prism.hooks.add("before-sanity-check",function(t){var n=t.element.parentNode,i=n&&n.getAttribute("data-line");if(n&&i&&/pre/i.test(n.nodeName)){var r=0;e(".line-highlight",n).forEach(function(e){r+=e.textContent.length,e.parentNode.removeChild(e)}),r&&/^( \n)+$/.test(t.code.slice(-r))&&(t.code=t.code.slice(0,-r))}}),Prism.hooks.add("complete",function l(e){var r=e.element.parentNode,a=r&&r.getAttribute("data-line");if(r&&a&&/pre/i.test(r.nodeName)){clearTimeout(o);var s=Prism.plugins.lineNumbers,d=e.plugins&&e.plugins.lineNumbers;t(r,"line-numbers")&&s&&!d?Prism.hooks.add("line-numbers",l):(n(r,a),o=setTimeout(i,1))}}),window.addEventListener("hashchange",i),window.addEventListener("resize",function(){var e=document.querySelectorAll("pre[data-line]");Array.prototype.forEach.call(e,function(e){n(e)})})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var e="line-numbers",t=/\n(?!$)/g,n=function(e){var n=r(e),s=n["white-space"];if("pre-wrap"===s||"pre-line"===s){var l=e.querySelector("code"),i=e.querySelector(".line-numbers-rows"),a=e.querySelector(".line-numbers-sizer"),o=l.textContent.split(t);a||(a=document.createElement("span"),a.className="line-numbers-sizer",l.appendChild(a)),a.style.display="block",o.forEach(function(e,t){a.textContent=e||"\n";var n=a.getBoundingClientRect().height;i.children[t].style.height=n+"px"}),a.textContent="",a.style.display="none"}},r=function(e){return e?window.getComputedStyle?getComputedStyle(e):e.currentStyle||null:null};window.addEventListener("resize",function(){Array.prototype.forEach.call(document.querySelectorAll("pre."+e),n)}),Prism.hooks.add("complete",function(e){if(e.code){var r=e.element.parentNode,s=/\s*\bline-numbers\b\s*/;if(r&&/pre/i.test(r.nodeName)&&(s.test(r.className)||s.test(e.element.className))&&!e.element.querySelector(".line-numbers-rows")){s.test(e.element.className)&&(e.element.className=e.element.className.replace(s," ")),s.test(r.className)||(r.className+=" line-numbers");var l,i=e.code.match(t),a=i?i.length+1:1,o=new Array(a+1);o=o.join("<span></span>"),l=document.createElement("span"),l.setAttribute("aria-hidden","true"),l.className="line-numbers-rows",l.innerHTML=o,r.hasAttribute("data-start")&&(r.style.counterReset="linenumber "+(parseInt(r.getAttribute("data-start"),10)-1)),e.element.appendChild(l),n(r),Prism.hooks.run("line-numbers",e)}}}),Prism.hooks.add("line-numbers",function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}),Prism.plugins.lineNumbers={getLine:function(t,n){if("PRE"===t.tagName&&t.classList.contains(e)){var r=t.querySelector(".line-numbers-rows"),s=parseInt(t.getAttribute("data-start"),10)||1,l=s+(r.children.length-1);s>n&&(n=s),n>l&&(n=l);var i=n-s;return r.children[i]}}}}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){var t=[],e={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var o;o="function"==typeof a?a:function(t){var e;return"function"==typeof a.onClick?(e=document.createElement("button"),e.type="button",e.addEventListener("click",function(){a.onClick.call(this,t)})):"string"==typeof a.url?(e=document.createElement("a"),e.href=a.url):e=document.createElement("span"),e.textContent=a.text,e},t.push(e[n]=o)},o=Prism.plugins.toolbar.hook=function(a){var o=a.element.parentNode;if(o&&/pre/i.test(o.nodeName)&&!o.parentNode.classList.contains("code-toolbar")){var r=document.createElement("div");r.classList.add("code-toolbar"),o.parentNode.insertBefore(r,o),r.appendChild(o);var i=document.createElement("div");i.classList.add("toolbar"),document.body.hasAttribute("data-toolbar-order")&&(t=document.body.getAttribute("data-toolbar-order").split(",").map(function(t){return e[t]||n})),t.forEach(function(t){var e=t(a);if(e){var n=document.createElement("div");n.classList.add("toolbar-item"),n.appendChild(e),i.appendChild(n)}}),r.appendChild(i)}};a("label",function(t){var e=t.element.parentNode;if(e&&/pre/i.test(e.nodeName)&&e.hasAttribute("data-label")){var n,a,o=e.getAttribute("data-label");try{a=document.querySelector("template#"+o)}catch(r){}return a?n=a.content:(e.hasAttribute("data-url")?(n=document.createElement("a"),n.href=e.getAttribute("data-url")):n=document.createElement("span"),n.textContent=o),n}}),Prism.hooks.add("complete",o)}}(); +!function(){"undefined"!=typeof self&&!self.Prism||"undefined"!=typeof global&&!global.Prism||Prism.hooks.add("wrap",function(e){"keyword"===e.type&&e.classes.push("keyword-"+e.content)})}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Show Languages plugin loaded before Toolbar plugin."),void 0;var e={html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",css:"CSS",clike:"C-like",javascript:"JavaScript",abap:"ABAP",actionscript:"ActionScript",apacheconf:"Apache Configuration",apl:"APL",applescript:"AppleScript",arff:"ARFF",asciidoc:"AsciiDoc",asm6502:"6502 Assembly",aspnet:"ASP.NET (C#)",autohotkey:"AutoHotkey",autoit:"AutoIt",shell:"Shell",basic:"BASIC",csharp:"C#",cpp:"C++",coffeescript:"CoffeeScript",csp:"Content-Security-Policy","css-extras":"CSS Extras",django:"Django/Jinja2",erb:"ERB",fsharp:"F#",gedcom:"GEDCOM",glsl:"GLSL",graphql:"GraphQL",http:"HTTP",hpkp:"HTTP Public-Key-Pins",hsts:"HTTP Strict-Transport-Security",ichigojam:"IchigoJam",inform7:"Inform 7",json:"JSON",jsonp:"JSONP",latex:"LaTeX",livescript:"LiveScript",lolcode:"LOLCODE","markup-templating":"Markup templating",matlab:"MATLAB",mel:"MEL",n4js:"N4JS",nasm:"NASM",nginx:"nginx",nsis:"NSIS",objectivec:"Objective-C",ocaml:"OCaml",opencl:"OpenCL",parigp:"PARI/GP",objectpascal:"Object Pascal",php:"PHP","php-extras":"PHP Extras",plsql:"PL/SQL",powershell:"PowerShell",properties:".properties",protobuf:"Protocol Buffers",q:"Q (kdb+ database)",jsx:"React JSX",tsx:"React TSX",renpy:"Ren'py",rest:"reST (reStructuredText)",sas:"SAS",sass:"Sass (Sass)",scss:"Sass (Scss)",sql:"SQL",soy:"Soy (Closure Template)",tap:"TAP",tt2:"Template Toolkit 2",typescript:"TypeScript",vbnet:"VB.Net",vhdl:"VHDL",vim:"vim","visual-basic":"Visual Basic",wasm:"WebAssembly",wiki:"Wiki markup",xeoracube:"XeoraCube",xojo:"Xojo (REALbasic)",xquery:"XQuery",yaml:"YAML"};Prism.plugins.toolbar.registerButton("show-language",function(a){var t=a.element.parentNode;if(t&&/pre/i.test(t.nodeName)){var s=t.getAttribute("data-language")||e[a.language]||a.language&&a.language.substring(0,1).toUpperCase()+a.language.substring(1);if(s){var i=document.createElement("span");return i.textContent=s,i}}})}}(); +!function(){if("undefined"!=typeof self&&self.Prism&&self.document){if(!Prism.plugins.toolbar)return console.warn("Copy to Clipboard plugin loaded before Toolbar plugin."),void 0;var o=window.ClipboardJS||void 0;o||"function"!=typeof require||(o=require("clipboard"));var e=[];if(!o){var t=document.createElement("script"),n=document.querySelector("head");t.onload=function(){if(o=window.ClipboardJS)for(;e.length;)e.pop()()},t.src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js",n.appendChild(t)}Prism.plugins.toolbar.registerButton("copy-to-clipboard",function(t){function n(){var e=new o(i,{text:function(){return t.code}});e.on("success",function(){i.textContent="Copied!",r()}),e.on("error",function(){i.textContent="Press Ctrl+C to copy",r()})}function r(){setTimeout(function(){i.textContent="Copy"},5e3)}var i=document.createElement("a");return i.textContent="Copy",o?n():e.push(n),i})}}(); diff --git a/public/assets/addons/nkeditor/plugins/emoticons/emoticons.js b/public/assets/addons/nkeditor/plugins/emoticons/emoticons.js new file mode 100644 index 0000000..a990066 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/emoticons/emoticons.js @@ -0,0 +1,129 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('emoticons', function(K) { + var self = this, name = 'emoticons', + path = (self.emoticonsPath || self.pluginsPath + 'emoticons/images/'), + allowPreview = self.allowPreviewEmoticons === undefined ? true : self.allowPreviewEmoticons, + currentPageNum = 1; + self.clickToolbar(name, function() { + var rows = 5, cols = 9, total = 135, startNum = 0, + cells = rows * cols, pages = Math.ceil(total / cells), + colsHalf = Math.floor(cols / 2), + wrapperDiv = K('<div class="ke-plugin-emoticons"></div>'), + elements = [], + menu = self.createMenu({ + name : name, + beforeRemove : function() { + removeEvent(); + } + }); + menu.div.append(wrapperDiv); + var previewDiv, previewImg; + if (allowPreview) { + previewDiv = K('<div class="ke-preview"></div>').css('right', 0); + previewImg = K('<img class="ke-preview-img" src="' + path + startNum + '.gif" />'); + wrapperDiv.append(previewDiv); + previewDiv.append(previewImg); + } + function bindCellEvent(cell, j, num) { + if (previewDiv) { + cell.mouseover(function() { + if (j > colsHalf) { + previewDiv.css('left', 0); + previewDiv.css('right', ''); + } else { + previewDiv.css('left', ''); + previewDiv.css('right', 0); + } + previewImg.attr('src', path + num + '.gif'); + K(this).addClass('ke-on'); + }); + } else { + cell.mouseover(function() { + K(this).addClass('ke-on'); + }); + } + cell.mouseout(function() { + K(this).removeClass('ke-on'); + }); + cell.click(function(e) { + self.insertHtml('<img src="' + path + num + '.gif" border="0" alt="" />').hideMenu().focus(); + e.stop(); + }); + } + function createEmoticonsTable(pageNum, parentDiv) { + var table = document.createElement('table'); + parentDiv.append(table); + if (previewDiv) { + K(table).mouseover(function() { + previewDiv.show('block'); + }); + K(table).mouseout(function() { + previewDiv.hide(); + }); + elements.push(K(table)); + } + table.className = 'ke-table'; + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + var num = (pageNum - 1) * cells + startNum; + for (var i = 0; i < rows; i++) { + var row = table.insertRow(i); + for (var j = 0; j < cols; j++) { + var cell = K(row.insertCell(j)); + cell.addClass('ke-cell'); + bindCellEvent(cell, j, num); + var span = K('<span class="ke-img"></span>') + .css('background-position', '-' + (24 * num) + 'px 0px') + .css('background-image', 'url(' + path + 'static.gif)'); + cell.append(span); + elements.push(cell); + num++; + } + } + return table; + } + var table = createEmoticonsTable(currentPageNum, wrapperDiv); + function removeEvent() { + K.each(elements, function() { + this.unbind(); + }); + } + var pageDiv; + function bindPageEvent(el, pageNum) { + el.click(function(e) { + removeEvent(); + table.parentNode.removeChild(table); + pageDiv.remove(); + table = createEmoticonsTable(pageNum, wrapperDiv); + createPageTable(pageNum); + currentPageNum = pageNum; + e.stop(); + }); + } + function createPageTable(currentPageNum) { + pageDiv = K('<div class="ke-page"></div>'); + wrapperDiv.append(pageDiv); + for (var pageNum = 1; pageNum <= pages; pageNum++) { + if (currentPageNum !== pageNum) { + var a = K('<a href="javascript:;">[' + pageNum + ']</a>'); + bindPageEvent(a, pageNum); + pageDiv.append(a); + elements.push(a); + } else { + pageDiv.append(K('@[' + pageNum + ']')); + } + pageDiv.append(K('@ ')); + } + } + createPageTable(currentPageNum); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/0.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/0.gif new file mode 100644 index 0000000..5be27cb Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/0.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/1.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/1.gif new file mode 100644 index 0000000..a2644a9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/1.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/10.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/10.gif new file mode 100644 index 0000000..905c15b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/10.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/100.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/100.gif new file mode 100644 index 0000000..92ad35d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/100.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/101.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/101.gif new file mode 100644 index 0000000..1f27663 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/101.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/102.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/102.gif new file mode 100644 index 0000000..748ded1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/102.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/103.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/103.gif new file mode 100644 index 0000000..be9eaa0 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/103.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/104.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/104.gif new file mode 100644 index 0000000..d7c2066 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/104.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/105.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/105.gif new file mode 100644 index 0000000..2f353ca Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/105.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/106.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/106.gif new file mode 100644 index 0000000..5193534 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/106.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/107.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/107.gif new file mode 100644 index 0000000..70d38d3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/107.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/108.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/108.gif new file mode 100644 index 0000000..749d500 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/108.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/109.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/109.gif new file mode 100644 index 0000000..6f57d56 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/109.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/11.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/11.gif new file mode 100644 index 0000000..b512dd5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/11.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/110.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/110.gif new file mode 100644 index 0000000..e253abc Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/110.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/111.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/111.gif new file mode 100644 index 0000000..0c56723 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/111.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/112.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/112.gif new file mode 100644 index 0000000..c8ddce8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/112.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/113.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/113.gif new file mode 100644 index 0000000..2727104 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/113.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/114.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/114.gif new file mode 100644 index 0000000..53918e2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/114.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/115.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/115.gif new file mode 100644 index 0000000..4db3369 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/115.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/116.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/116.gif new file mode 100644 index 0000000..57326bd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/116.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/117.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/117.gif new file mode 100644 index 0000000..14611b6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/117.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/118.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/118.gif new file mode 100644 index 0000000..8c25500 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/118.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/119.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/119.gif new file mode 100644 index 0000000..65bb468 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/119.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/12.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/12.gif new file mode 100644 index 0000000..547529c Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/12.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/120.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/120.gif new file mode 100644 index 0000000..5ce77c0 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/120.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/121.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/121.gif new file mode 100644 index 0000000..a021aba Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/121.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/122.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/122.gif new file mode 100644 index 0000000..9a79e11 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/122.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/123.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/123.gif new file mode 100644 index 0000000..b9480be Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/123.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/124.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/124.gif new file mode 100644 index 0000000..7fed477 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/124.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/125.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/125.gif new file mode 100644 index 0000000..e2c3c11 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/125.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/126.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/126.gif new file mode 100644 index 0000000..24105c9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/126.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/127.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/127.gif new file mode 100644 index 0000000..0cead36 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/127.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/128.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/128.gif new file mode 100644 index 0000000..3185861 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/128.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/129.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/129.gif new file mode 100644 index 0000000..ffd7c6b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/129.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/13.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/13.gif new file mode 100644 index 0000000..3475300 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/13.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/130.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/130.gif new file mode 100644 index 0000000..d828e3d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/130.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/131.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/131.gif new file mode 100644 index 0000000..dcb096f Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/131.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/132.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/132.gif new file mode 100644 index 0000000..1b272a6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/132.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/133.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/133.gif new file mode 100644 index 0000000..0d0e864 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/133.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/134.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/134.gif new file mode 100644 index 0000000..cf48356 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/134.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/14.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/14.gif new file mode 100644 index 0000000..6a788f8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/14.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/15.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/15.gif new file mode 100644 index 0000000..debab8e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/15.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/16.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/16.gif new file mode 100644 index 0000000..ed5d29f Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/16.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/17.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/17.gif new file mode 100644 index 0000000..85886fe Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/17.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/18.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/18.gif new file mode 100644 index 0000000..b6af218 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/18.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/19.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/19.gif new file mode 100644 index 0000000..e045ff2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/19.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/2.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/2.gif new file mode 100644 index 0000000..40cfda4 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/2.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/20.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/20.gif new file mode 100644 index 0000000..efd650f Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/20.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/21.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/21.gif new file mode 100644 index 0000000..cb8cf6d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/21.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/22.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/22.gif new file mode 100644 index 0000000..96b04df Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/22.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/23.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/23.gif new file mode 100644 index 0000000..96516b8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/23.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/24.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/24.gif new file mode 100644 index 0000000..5f925c7 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/24.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/25.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/25.gif new file mode 100644 index 0000000..97f8b1a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/25.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/26.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/26.gif new file mode 100644 index 0000000..a7cded7 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/26.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/27.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/27.gif new file mode 100644 index 0000000..bb46890 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/27.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/28.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/28.gif new file mode 100644 index 0000000..f59dd58 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/28.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/29.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/29.gif new file mode 100644 index 0000000..3c5227e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/29.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/3.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/3.gif new file mode 100644 index 0000000..6d6f762 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/3.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/30.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/30.gif new file mode 100644 index 0000000..e24a180 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/30.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/31.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/31.gif new file mode 100644 index 0000000..073e743 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/31.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/32.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/32.gif new file mode 100644 index 0000000..772eff2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/32.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/33.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/33.gif new file mode 100644 index 0000000..217c1c5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/33.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/34.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/34.gif new file mode 100644 index 0000000..e9d4213 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/34.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/35.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/35.gif new file mode 100644 index 0000000..d6da2c3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/35.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/36.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/36.gif new file mode 100644 index 0000000..c1e6ac9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/36.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/37.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/37.gif new file mode 100644 index 0000000..92efec6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/37.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/38.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/38.gif new file mode 100644 index 0000000..489f0f9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/38.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/39.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/39.gif new file mode 100644 index 0000000..734f6d8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/39.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/4.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/4.gif new file mode 100644 index 0000000..6ccdaa2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/4.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/40.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/40.gif new file mode 100644 index 0000000..24a8eb6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/40.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/41.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/41.gif new file mode 100644 index 0000000..99139e1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/41.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/42.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/42.gif new file mode 100644 index 0000000..f60897e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/42.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/43.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/43.gif new file mode 100644 index 0000000..4350491 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/43.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/44.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/44.gif new file mode 100644 index 0000000..650d3dd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/44.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/45.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/45.gif new file mode 100644 index 0000000..5c8e071 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/45.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/46.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/46.gif new file mode 100644 index 0000000..f3cb074 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/46.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/47.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/47.gif new file mode 100644 index 0000000..5b3057a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/47.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/48.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/48.gif new file mode 100644 index 0000000..27a30c1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/48.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/49.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/49.gif new file mode 100644 index 0000000..dcfa48a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/49.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/5.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/5.gif new file mode 100644 index 0000000..ab0b81b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/5.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/50.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/50.gif new file mode 100644 index 0000000..029cf0f Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/50.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/51.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/51.gif new file mode 100644 index 0000000..69f183f Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/51.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/52.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/52.gif new file mode 100644 index 0000000..d41e8aa Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/52.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/53.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/53.gif new file mode 100644 index 0000000..56352dd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/53.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/54.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/54.gif new file mode 100644 index 0000000..b28d848 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/54.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/55.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/55.gif new file mode 100644 index 0000000..e18da84 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/55.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/56.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/56.gif new file mode 100644 index 0000000..edf96f0 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/56.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/57.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/57.gif new file mode 100644 index 0000000..3f0e2b9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/57.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/58.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/58.gif new file mode 100644 index 0000000..47b1aaa Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/58.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/59.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/59.gif new file mode 100644 index 0000000..918288b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/59.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/6.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/6.gif new file mode 100644 index 0000000..ceab122 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/6.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/60.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/60.gif new file mode 100644 index 0000000..66d2113 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/60.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/61.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/61.gif new file mode 100644 index 0000000..034933e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/61.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/62.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/62.gif new file mode 100644 index 0000000..8d5c4fd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/62.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/63.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/63.gif new file mode 100644 index 0000000..d58fcf6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/63.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/64.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/64.gif new file mode 100644 index 0000000..c4e00bd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/64.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/65.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/65.gif new file mode 100644 index 0000000..da23bfa Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/65.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/66.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/66.gif new file mode 100644 index 0000000..310ec65 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/66.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/67.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/67.gif new file mode 100644 index 0000000..51761ba Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/67.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/68.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/68.gif new file mode 100644 index 0000000..345cb43 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/68.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/69.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/69.gif new file mode 100644 index 0000000..e0f28a0 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/69.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/7.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/7.gif new file mode 100644 index 0000000..2f45399 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/7.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/70.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/70.gif new file mode 100644 index 0000000..24284cf Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/70.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/71.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/71.gif new file mode 100644 index 0000000..a0ccf2e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/71.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/72.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/72.gif new file mode 100644 index 0000000..7e113ee Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/72.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/73.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/73.gif new file mode 100644 index 0000000..c0293c3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/73.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/74.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/74.gif new file mode 100644 index 0000000..1c52bde Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/74.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/75.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/75.gif new file mode 100644 index 0000000..9cb9aa7 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/75.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/76.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/76.gif new file mode 100644 index 0000000..27019f8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/76.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/77.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/77.gif new file mode 100644 index 0000000..8f882f5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/77.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/78.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/78.gif new file mode 100644 index 0000000..d0d0856 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/78.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/79.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/79.gif new file mode 100644 index 0000000..61652a7 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/79.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/8.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/8.gif new file mode 100644 index 0000000..f6c8834 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/8.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/80.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/80.gif new file mode 100644 index 0000000..9a77936 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/80.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/81.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/81.gif new file mode 100644 index 0000000..2329101 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/81.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/82.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/82.gif new file mode 100644 index 0000000..644748a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/82.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/83.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/83.gif new file mode 100644 index 0000000..fbf275b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/83.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/84.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/84.gif new file mode 100644 index 0000000..076f0c6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/84.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/85.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/85.gif new file mode 100644 index 0000000..d254af4 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/85.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/86.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/86.gif new file mode 100644 index 0000000..8f09d33 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/86.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/87.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/87.gif new file mode 100644 index 0000000..df70756 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/87.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/88.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/88.gif new file mode 100644 index 0000000..4d8b15e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/88.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/89.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/89.gif new file mode 100644 index 0000000..05726dc Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/89.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/9.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/9.gif new file mode 100644 index 0000000..c2d8450 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/9.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/90.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/90.gif new file mode 100644 index 0000000..adaf20e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/90.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/91.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/91.gif new file mode 100644 index 0000000..608d0ad Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/91.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/92.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/92.gif new file mode 100644 index 0000000..b909e16 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/92.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/93.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/93.gif new file mode 100644 index 0000000..7f71a8c Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/93.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/94.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/94.gif new file mode 100644 index 0000000..4f26d7d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/94.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/95.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/95.gif new file mode 100644 index 0000000..5ef6d38 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/95.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/96.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/96.gif new file mode 100644 index 0000000..2b709e1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/96.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/97.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/97.gif new file mode 100644 index 0000000..cf29be8 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/97.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/98.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/98.gif new file mode 100644 index 0000000..c70e7d3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/98.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/99.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/99.gif new file mode 100644 index 0000000..05c1863 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/99.gif differ diff --git a/public/assets/addons/nkeditor/plugins/emoticons/images/static.gif b/public/assets/addons/nkeditor/plugins/emoticons/images/static.gif new file mode 100644 index 0000000..b8c444b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/emoticons/images/static.gif differ diff --git a/public/assets/addons/nkeditor/plugins/filemanager/FManager.js b/public/assets/addons/nkeditor/plugins/filemanager/FManager.js new file mode 100644 index 0000000..ad8a8f8 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/filemanager/FManager.js @@ -0,0 +1,307 @@ +/** + * HTML5上传插件 + * @author yangjian<yangjian102621@gmail.com> + * @version 1.0.1 + * @site https://git.oschina.net/blackfox/ajaxUpload + */ +(function ($) { + + //判断浏览器是否支持html5 + // if ( !window.applicationCache ) + // throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function (__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width / this.height; + var cropRate = __width / __height; + if (orgRate >= cropRate) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width) / 2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position": "absolute", + top: -top + "px", + left: -left + "px", + width: width + "px", + height: height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function (options) { + var defaults = { + handler: null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function (e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function (e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); + $(__self).css({ + 'top': e.pageY - offsetTop + 'px', + 'left': e.pageX - offsetLeft + 'px' + }); + }); + + }).mouseup(function () { + $(document).unbind('mousemove'); + }); + + } + + if (Array.prototype.remove == undefined) { + Array.prototype.remove = function (item) { + for (var i = 0; i < this.length; i++) { + if (this[i] == item) { + this.splice(i, 1); + break; + } + } + } + } + if (Array.prototype.uinque == undefined) { + Array.prototype.uinque = function () { + var result = [], hash = {}; + for (var i = 0, item; (item = this[i]) != null; i++) { + if (!hash[item]) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.FManager = function (options) { + options = $.extend({ + lang: {}, + list_url: null, + data_type: "json", + fileType: "image", //文件类型,默认是图片,可选flash,media,file + top: 20, + multiple: false, + callback: function (data) { + console.log(data); + } + }, options); + + var o = {}; + o.dialog = null; + o.selectedList = new Array(); //the file queue upload successfully + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + + //close the dialog + o.close = function () { + o.dialog.remove(); + try { + JDialog.lock.hide(); + } catch (e) { + } + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('<div class="uedbody ke-animated"><div class="ued_title">'); + builder.append('<div class="uedbar"><span>' + options.lang.title + '</span></div><div class="close_btn icon" title="' + options.lang.closeText + '"></div>'); + builder.append('</div><div class="wrapper"><div class="wra_body wra_body_server">'); + builder.append('<div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'); + builder.append('<div class="loading-icon"></div></div></div><div class="wra-btn-group">'); + builder.append('<div class="tip-text">' + options.lang.loadMoreData + '</div>') + builder.append('<span class="btn btn-primary btn-confirm">' + options.lang.confirmBtnText + '</span>') + builder.append('<span class="btn btn-default btn-cancel">' + options.lang.cancelBtnText + '</span></div></div>'); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height()) / 2; + } + o.dialog.css({ + left: ($(window).width() - o.dialog.width()) / 2 + "px", + top: options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler: o.dialog.find(".ued_title")}); + loadFilesFromServer(); + + } + + //绑定元素事件 + function bindEvent() { + + //关闭对话框 + G(".close_btn").on("click", function () { + o.close(); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function () { + options.callback(o.selectedList); + o.close(); + }); + G(".btn-cancel").on("click", function () { + o.close(); + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function () { + + if (this.scrollTop + this.clientHeight >= this.scrollHeight) { + loadFilesFromServer(); + } + }); + + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if (!options.list_url) { + G(".online .no-data").html('<span class="error">' + options.lang.noListUrl + '</span>').show(); + return false; + } + if (o.noRecord) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page: o.page, + marker: o.marker, + fileType: options.fileType + }, function (res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if (res.code == "000") { + if (!res.data[0]) { + G(".online .no-data").html(options.lang.noDataText).show(); + return; + } + o.page++; + o.marker = res.extra; //存储marker + appendFiles(res.data); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data) { + + $.each(data, function (idx, item) { + + var builder = new StringBuilder(); + builder.append('<li>'); + var extension = getFileExt(item.thumbURL); + if (extension == '') extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width + 'x' + item.height; //图片尺寸 + if ("jpg|jpeg|gif|png|bmp".indexOf(extension) == -1) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append('<span class="icon-placeholder icon-default icon-' + extension + '" data-src="' + item.oriURL + '"></span>'); + } else { + builder.append('<img src="' + item.thumbURL + '" data-src="' + item.oriURL + '" border="0">'); + } + + builder.append('<span class="ic"><em class="img-size">' + imgSize + '</em></span></li>'); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function () { + var src = $(this).prev().attr("data-src"); + var oldSrc = $('.selected:eq(0)').prev().attr("data-src"); + if (options.multiple) { + //多选 + if ($(this).hasClass("selected")) { + $(this).removeClass("selected"); + o.selectedList.remove(src); + } else { + $(this).addClass("selected"); + o.selectedList.push(src); + } + } else { + //这里暂时改成单选 + $('.selected:eq(0)').removeClass("selected"); //移除之前的选中的图片 + o.selectedList.remove(oldSrc); + $(this).addClass("selected"); + o.selectedList.push(src); + } + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + G(".imagelist .list").append($image); + }); + + } + + //获取文件后缀名 + function getFileExt(filename) { + if (!filename) return false; + var position = filename.lastIndexOf('.') + if (position != -1) { + return filename.substr(position + 1).toLowerCase(); + } + return false; + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if (size / 1048576 > 1) { + return (size / 1048576).toFixed(2) + "MB"; + } else { + return (size / 1024).toFixed(2) + "KB"; + } + + } + + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function () { + + var buffer = new Array(); + StringBuilder.prototype.append = function (str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/filemanager/FManager.min.js b/public/assets/addons/nkeditor/plugins/filemanager/FManager.min.js new file mode 100644 index 0000000..508bf23 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/filemanager/FManager.min.js @@ -0,0 +1,2 @@ +/* NKeditor 5.0.3 (2018-10-25), Copyright (C) r9it.com,*/ +!function(a){if(!window.applicationCache)throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!");a.fn.imageCrop=function(b,c){a(this).on("load",function(){var d,e,f,g,h=this.width/this.height,i=b/c;h>=i?(e=c,d=b*h,g=0,f=(d-b)/2):(d=b,e=c/h,f=0,g=0),a(this).css({position:"absolute",top:-g+"px",left:-f+"px",width:d+"px",height:e+"px"})})},a.fn.draggable=function(b){var c={handler:null};b=a.extend(c,b);var d=this;a(b.handler).mousedown(function(b){var c=b.pageX-a(d).position().left,e=b.pageY-a(d).position().top;a(document).mousemove(function(b){window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(),a(d).css({top:b.pageY-e+"px",left:b.pageX-c+"px"})})}).mouseup(function(){a(document).unbind("mousemove")})},void 0==Array.prototype.remove&&(Array.prototype.remove=function(a){for(var b=0;b<this.length;b++)if(this[b]==a){this.splice(b,1);break}}),void 0==Array.prototype.uinque&&(Array.prototype.uinque=function(){for(var a,b=[],c={},d=0;null!=(a=this[d]);d++)c[a]||(b.push(a),c[a]=!0);return b}),window.FManager=function(c){function d(){var d=new b;d.append('<div class="uedbody ke-animated"><div class="ued_title">'),d.append('<div class="uedbar"><span>'+c.lang.title+'</span></div><div class="close_btn icon" title="'+c.lang.closeText+'"></div>'),d.append('</div><div class="wrapper"><div class="wra_body wra_body_server">'),d.append('<div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'),d.append('<div class="loading-icon"></div></div></div><div class="wra-btn-group">'),d.append('<div class="tip-text">'+c.lang.loadMoreData+"</div>"),d.append('<span class="btn btn-primary btn-confirm">'+c.lang.confirmBtnText+"</span>"),d.append('<span class="btn btn-default btn-cancel">'+c.lang.cancelBtnText+"</span></div></div>"),k.dialog=a(d.toString()),a("body").append(k.dialog),0==c.top&&(c.top=(a(window).height()-k.dialog.height())/2),k.dialog.css({left:(a(window).width()-k.dialog.width())/2+"px",top:c.top+"px"}),k.dialog.draggable({handler:k.dialog.find(".ued_title")}),g()}function e(){f(".close_btn").on("click",function(){k.close()}),f(".btn-confirm").on("click",function(){c.callback(k.selectedList),k.close()}),f(".btn-cancel").on("click",function(){k.close()}),f(".imagelist").on("scroll",function(){this.scrollTop+this.clientHeight>=this.scrollHeight&&g()})}function f(a){return k.dialog.find(a)}function g(){return c.list_url?k.noRecord?!1:(f(".loading-icon").show(),void a.get(c.list_url,{page:k.page,marker:k.marker,fileType:c.fileType},function(a){if(f(".loading-icon").hide(),"000"==a.code){if(!a.data[0])return void f(".online .no-data").html(c.lang.noDataText).show();k.page++,k.marker=a.extra,h(a.data)}else f(".online .no-data").text(c.lang.noDataText).show(),k.noRecord=!0},"json")):(f(".online .no-data").html('<span class="error">'+c.lang.noListUrl+"</span>").show(),!1)}function h(c){a.each(c,function(c,d){var e=new b;e.append("<li>");var g=i(d.thumbURL);""==g&&(g="default"),g=g.toLowerCase();var h=d.width+"x"+d.height;-1=="jpg|jpeg|gif|png|bmp".indexOf(g)?(h=j(d.filesize),e.append('<span class="icon-placeholder icon-default icon-'+g+'" data-src="'+d.oriURL+'"></span>')):e.append('<img src="'+d.thumbURL+'" data-src="'+d.oriURL+'" border="0">'),e.append('<span class="ic"><em class="img-size">'+h+"</em></span></li>");var l=a(e.toString());l.find(".ic").on("click",function(){var b=a(this).prev().attr("data-src"),c=a(".selected:eq(0)").prev().attr("data-src");a(".selected:eq(0)").removeClass("selected"),k.selectedList.remove(c),a(this).addClass("selected"),k.selectedList.push(b)}),l.find("img").imageCrop(113,113),f(".imagelist .list").append(l)})}function i(a){if(!a)return!1;var b=a.lastIndexOf(".");return-1!=b?a.substr(b+1).toLowerCase():!1}function j(a){return a/1048576>1?(a/1048576).toFixed(2)+"MB":(a/1024).toFixed(2)+"KB"}c=a.extend({lang:{},list_url:null,data_type:"json",fileType:"image",top:20,callback:function(a){console.log(a)}},c);var k={};return k.dialog=null,k.selectedList=new Array,k.page=1,k.marker=null,k.noRecord=!1,k.close=function(){k.dialog.remove();try{JDialog.lock.hide()}catch(a){}"function"==typeof c.close&&c.close()},d(),e(),k};var b=function(){var a=new Array;b.prototype.append=function(b){a.push(b)},b.prototype.toString=function(){return a.join("")}}}(jQuery); \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/filemanager/css/filemanager.min.css b/public/assets/addons/nkeditor/plugins/filemanager/css/filemanager.min.css new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/filemanager/css/filemanager.min.css diff --git a/public/assets/addons/nkeditor/plugins/filemanager/filemanager.js b/public/assets/addons/nkeditor/plugins/filemanager/filemanager.js new file mode 100644 index 0000000..9f740f8 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/filemanager/filemanager.js @@ -0,0 +1,35 @@ +/** + * 文件服务器管理 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ +KindEditor.plugin('filemanager', function(K) { + var self = this; + var fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'); + var lang = self.lang('filemanager.'); + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+"filemanager/FManager.js"); + K.loadStyle(K.options.pluginsPath+"multiimage/css/upload.css"); + } + + self.plugin.filemanagerDialog = function(options) { + + var clickFn = options.clickFn; + new FManager({ + list_url : fileManagerJson, //图片列表数据获取url + lang : lang, //语言包 + fileType : options.dirName, + top : self.dialogOffset, + callback : function(data) { + //console.log(data); + clickFn.call(this, data[0]); + } + }); + //return dialog; + } + +}); diff --git a/public/assets/addons/nkeditor/plugins/fixtoolbar/fixtoolbar.js b/public/assets/addons/nkeditor/plugins/fixtoolbar/fixtoolbar.js new file mode 100644 index 0000000..7a16fca --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/fixtoolbar/fixtoolbar.js @@ -0,0 +1,35 @@ +/** + * Created by chenyihong on 14/12/4. + */ + +KindEditor.plugin('fixtoolbar', function (K) { + var self = this; + if (!self.fixToolBar) { + return; + } + + function init() { + var toolbar = K('.ke-toolbar'); + var originY = toolbar.pos().y; + K(window).bind('scroll', function () { + if (toolbar.css('position') == 'fixed') { + if(document.body.scrollTop - originY < 0){ + toolbar.css('position', 'static'); + toolbar.css('top', 'auto'); + } + } else { + if (toolbar.pos().y - document.body.scrollTop < 0) { + toolbar.css('position', 'fixed'); + toolbar.css('top', 0); + } + } + }); + } + + if (self.isCreated) { + init(); + } else { + self.afterCreate(init); + } + +}); diff --git a/public/assets/addons/nkeditor/plugins/flash/flash.js b/public/assets/addons/nkeditor/plugins/flash/flash.js new file mode 100644 index 0000000..f26eaf3 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/flash/flash.js @@ -0,0 +1,165 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('flash', function(K) { + var self = this, name = 'flash', lang = self.lang(name + '.'), + allowFlashUpload = K.undef(self.allowFlashUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + self.plugin.flash = { + edit : function() { + var html = [ + '<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //width + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" /> ', + '</div>', + '</div>', + //height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src : url, + type : K.mediaType('.swf'), + width : width, + height : height, + quality : 'high' + }); + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div); + urlBox.val('http://'); + + if (allowFlashUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=flash'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'flash', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K('[name="url"]').css("width", "250px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedFlash(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedFlash().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.flash.edit); +}); diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/addimg.png b/public/assets/addons/nkeditor/plugins/graft/css/images/addimg.png new file mode 100644 index 0000000..03a8713 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/addimg.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/blur.png b/public/assets/addons/nkeditor/plugins/graft/css/images/blur.png new file mode 100644 index 0000000..6307d27 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/blur.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/brush.png b/public/assets/addons/nkeditor/plugins/graft/css/images/brush.png new file mode 100644 index 0000000..efa6fdb Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/brush.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/delimg.png b/public/assets/addons/nkeditor/plugins/graft/css/images/delimg.png new file mode 100644 index 0000000..5a892e4 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/delimg.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/delimgH.png b/public/assets/addons/nkeditor/plugins/graft/css/images/delimgH.png new file mode 100644 index 0000000..2f0c5c9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/delimgH.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/empty.png b/public/assets/addons/nkeditor/plugins/graft/css/images/empty.png new file mode 100644 index 0000000..0375196 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/empty.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/emptyH.png b/public/assets/addons/nkeditor/plugins/graft/css/images/emptyH.png new file mode 100644 index 0000000..838ca72 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/emptyH.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/eraser.png b/public/assets/addons/nkeditor/plugins/graft/css/images/eraser.png new file mode 100644 index 0000000..63e87ce Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/eraser.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/init.png b/public/assets/addons/nkeditor/plugins/graft/css/images/init.png new file mode 100644 index 0000000..c2eb7be Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/init.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/redo.png b/public/assets/addons/nkeditor/plugins/graft/css/images/redo.png new file mode 100644 index 0000000..12cd9bb Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/redo.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/redoH.png b/public/assets/addons/nkeditor/plugins/graft/css/images/redoH.png new file mode 100644 index 0000000..d9f33d3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/redoH.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/save.png b/public/assets/addons/nkeditor/plugins/graft/css/images/save.png new file mode 100644 index 0000000..2ab611e Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/save.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/scale.png b/public/assets/addons/nkeditor/plugins/graft/css/images/scale.png new file mode 100644 index 0000000..935a3f3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/scale.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/scaleH.png b/public/assets/addons/nkeditor/plugins/graft/css/images/scaleH.png new file mode 100644 index 0000000..72e64a9 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/scaleH.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/size.png b/public/assets/addons/nkeditor/plugins/graft/css/images/size.png new file mode 100644 index 0000000..8366845 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/size.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/undo.png b/public/assets/addons/nkeditor/plugins/graft/css/images/undo.png new file mode 100644 index 0000000..084c7cc Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/undo.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/images/undoH.png b/public/assets/addons/nkeditor/plugins/graft/css/images/undoH.png new file mode 100644 index 0000000..fde7eb3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/graft/css/images/undoH.png differ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css new file mode 100644 index 0000000..f53a5d7 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css @@ -0,0 +1,204 @@ +/*common +*/ +body { + margin: 0; } + body a { + text-decoration: none; } + body em { + font-style: normal; } + body .border_style { + border: 1px solid #ccc; + border-radius: 5px; + box-shadow: 2px 2px 5px #d3d6da; } + body em { + font-style: normal; } + body .ke-dialog-body { + padding-top: 8px; } + body .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; } + body .scrawl-main .hot { + float: left; } + body .scrawl-main .hot .drawBoard { + position: relative; + cursor: crosshair; } + body .scrawl-main .hot .drawBoard .brushBorad { + position: absolute; + left: 0; + top: 0; + z-index: 998; } + body .scrawl-main .hot .drawBoard .picBoard { + border: none; + text-align: center; + cursor: default; } + body .scrawl-main .hot .operateBar { + margin-top: 10px; + font-size: 12px; + text-align: center; } + body .scrawl-main .hot .operateBar span { + margin-left: 10px; } + body .scrawl-main .hot .operateBar button { + background: #e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor: default; } + body .scrawl-main .hot .operateBar .prevStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/undo.png"); } + body .scrawl-main .hot .operateBar .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .prevStep.active .icon { + background-image: url("images/undoH.png"); } + body .scrawl-main .hot .operateBar .nextStep .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/redo.png"); } + body .scrawl-main .hot .operateBar .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .nextStep.active .icon { + background-image: url("images/redoH.png"); } + body .scrawl-main .hot .operateBar .clearBoard { + cursor: default; } + body .scrawl-main .hot .operateBar .clearBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/empty.png"); } + body .scrawl-main .hot .operateBar .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; } + body .scrawl-main .hot .operateBar .clearBoard.active .icon { + background-image: url("images/emptyH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/scale.png"); + cursor: default; } + body .scrawl-main .hot .operateBar .scaleBoard .iconH { + background-image: url("images/scaleH.png"); } + body .scrawl-main .hot .operateBar .scaleBoard .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar { + float: right; + width: 110px; + height: 320px; + overflow: hidden; } + body .scrawl-main .drawToolbar .brushIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/brush.png"); } + body .scrawl-main .drawToolbar .eraserIcon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/eraser.png"); } + body .scrawl-main .drawToolbar .blurIcon { + display: inline-block; + width: 16px; + height: 16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; } + body .scrawl-main .drawToolbar .colorBar { + margin-top: 10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; } + body .scrawl-main .drawToolbar .colorBar span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border: 1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; } + body .scrawl-main .drawToolbar .colorBar .active { + border-color: #FF0000; + box-shadow: 2px 2px 5px #d3d6da; } + body .scrawl-main .drawToolbar .sectionBar { + margin-top: 15px; + font-size: 12px; + text-align: center; } + body .scrawl-main .drawToolbar .sectionBar a { + display: inline-block; + width: 10px; + height: 12px; + color: #888; + text-indent: -999px; + opacity: 0.3; } + body .scrawl-main .drawToolbar .sectionBar .size1 { + background: url("images/size.png") 1px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size2 { + background: url("images/size.png") -10px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size3 { + background: url("images/size.png") -22px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .size4 { + background: url("images/size.png") -35px center no-repeat; } + body .scrawl-main .drawToolbar .sectionBar .icon { + position: relative; + top: 3px; } + body .scrawl-main .drawToolbar .sectionBar .clearSetting .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/init.png"); + background-size: 16px 16px; } + body .scrawl-main .drawToolbar .sectionBar .addImgH { + position: relative; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/addimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .addImgH .upload { + position: absolute; + left: 18px; + top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/delimg.png"); + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg .text { + color: #ccc; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .icon { + background-image: url("images/delimgH.png"); } + body .scrawl-main .drawToolbar .sectionBar .removeImg.active .text { + color: #000; + cursor: default; } + body .scrawl-main .drawToolbar .sectionBar .saveImg { + cursor: pointer; } + body .scrawl-main .drawToolbar .sectionBar .saveImg .icon { + display: inline-block; + width: 16px; + height: 16px; + background-image: url("images/save.png"); + background-size: 18px 18px; + cursor: default; } + body .scrawl-main .drawToolbar #clearSetting { + cursor: pointer; } + +/*# sourceMappingURL=scrawl.css.map */ diff --git a/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css.map b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css.map new file mode 100644 index 0000000..6143e2c --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["scrawl.scss"], +"names": [], +"file": "scrawl.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/graft/css/scrawl.scss b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.scss new file mode 100644 index 0000000..fc23a3e --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/css/scrawl.scss @@ -0,0 +1,284 @@ +/*common +*/ +body { + + margin: 0; + a{text-decoration: none;} + em{font-style: normal;} + + .border_style{ + border: 1px solid #ccc; + border-radius: 5px; + box-shadow:2px 2px 5px #d3d6da; + } + em {font-style: normal;} + + .ke-dialog-body { + padding-top: 8px; + } + .scrawl-main { + padding: 0px 8px; + zoom: 1; + overflow: hidden; + max-width: 1000px; + + + // 绘图区域 + .hot { + float:left; + + .drawBoard{ + position: relative; + cursor: crosshair; + + .brushBorad{ + position: absolute; + left:0; + top:0; + z-index: 998; + } + + .picBoard{ + border: none; + text-align: center; + cursor: default; + } + } + + .operateBar{ + margin-top:10px; + font-size:12px; + text-align: center; + + span {margin-left: 10px;} + + button { + background:#e1e1e1; + border: 1px solid #cccccc; + margin: 0px 5px; + cursor:default; + } + + .prevStep { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/undo.png'); + } + } + + .prevStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/undoH.png'); + } + + } + + .nextStep { + .icon { + display: inline-block; + width:16px; + height:16px; + background-image: url('images/redo.png'); + } + } + + .nextStep.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/redoH.png'); + } + } + + .clearBoard { + cursor: default; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/empty.png'); + } + + } + + .clearBoard.active { + cursor: pointer; + background: #FFFFFF; + border-color: #56CCCC; + + .icon { + background-image: url('images/emptyH.png'); + } + } + + .scaleBoard { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/scale.png'); + cursor:default;} + + .iconH { + background-image: url('images/scaleH.png'); + } + + .text{ + color:#ccc; + cursor:default;} + } + + + } + } + + // 绘图工具 + .drawToolbar { + float:right; + width:110px; + height:320px; + overflow: hidden; + + .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')} + + .blurIcon { + display: inline-block; + width:16px;height:16px; + background: url(images/blur.png) -2px -2px; + background-size: 22px 20px; + } + + .colorBar { + margin-top:10px; + font-size: 12px; + text-align: center; + zoom: 1; + overflow: hidden; + + span { + float: left; + margin: 2px 3px; + width: 10px; + height: 10px; + border:1px solid #c1c1c1; + border-radius: 3px; + cursor: pointer; + } + + .active { + border-color: #FF0000; + box-shadow:2px 2px 5px #d3d6da; + } + } + + .sectionBar { + margin-top:15px; + font-size: 12px; + text-align: center; + + 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;} + + .icon { + position: relative; + top:3px; + } + .clearSetting { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/init.png'); + background-size: 16px 16px; + } + } + + .addImgH { + position: relative; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/addimg.png'); + cursor:default; + } + + .upload { + position: absolute; + left: 18px;top: -1px; + width: 75px; + height: 21px; + opacity: 0; + cursor: pointer; + opacity: 0; + } + } + + .removeImg { + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/delimg.png'); + cursor:default; + } + + .text{color:#ccc;cursor:default;} + } //end removeImg + + .removeImg.active { + cursor: pointer; + + .icon { + background-image: url('images/delimgH.png'); + } + + .text{color:#000;cursor:default;} + } //end removeImg + + //保存图片 + .saveImg { + cursor: pointer; + + .icon { + display: inline-block; + width:16px;height:16px; + background-image: url('images/save.png'); + background-size: 18px 18px; + cursor:default; + } + } + + } + + #clearSetting {cursor: pointer;} + } + } + + +} + + diff --git a/public/assets/addons/nkeditor/plugins/graft/graft.js b/public/assets/addons/nkeditor/plugins/graft/graft.js new file mode 100644 index 0000000..0102a88 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/graft.js @@ -0,0 +1,189 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('graft', function(K) { + var self = this, name = 'graft', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + allowUploadGraft = K.undef(self.allowUploadGraft, true), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css"); + K.loadScript(K.options.pluginsPath+"graft/scrawl.js"); + } + + self.plugin.graftDialog = function(options) { + var clickFn = options.clickFn; + var html = [ + '<div class="scrawl-main" id="scrawl-main">', + //绘图区域 + '<div class="hot">', + '<div class="drawBoard border_style">', + '<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>', + '<div class="picBoard" id="picBoard" style=""></div>', + '</div>', + '<div class="operateBar">', + '<button id="J_prevStep" class="prevStep" title="上一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_nextStep" class="nextStep" title="下一步">', + '<em class="icon"></em>', + '</button>', + '<button id="J_clearBoard" class="clearBoard" title="清空">', + '<em class="icon"></em>', + '</button>', + '</div>', + '</div>', + //绘图区域 end + + //工具栏 + '<div class="drawToolbar border_style">', + '<div class="colorBar">', + '<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>', + '<span data-color="#003366" style="background:#003366;"></span>', + '<span data-color="#993333" style="background:#993333;"></span>', + '<span data-color="#FF9900" style="background:#FF9900;"></span>', + '<span data-color="#0000CC" style="background:#0000CC;"></span>', + '<span data-color="#CC3333" style="background:#CC3333;"></span>', + + '<span data-color="#F4D03F" style="background:#641E16;"></span>', + '<span data-color="#4A235A" style="background:#4A235A;"></span>', + '<span data-color="#009966" style="background:#009966;"></span>', + '<span data-color="#ffff00" style="background:#ffff00;"></span>', + '<span data-color="#7D6608" style="background:#7D6608;"></span>', + '<span data-color="#FF33CC" style="background:#FF33CC;"></span>', + + '<span data-color="#990066" style="background:#990066;"></span>', + '<span data-color="#ffffff" style="background:#ffffff;"></span>', + '<span data-color="#9bbb59" style="background:#9bbb59;"></span>', + '<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>', + '<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>', + '<span data-color="#CC99CC" style="background:#CC99CC;"></span>', + '</div>', + + //笔刷设置 + '<div class="sectionBar">', + '<em class="brushIcon"></em>', + '<a href="javascript:void(0)" class="brush-size size1">1</a>', + '<a href="javascript:void(0)" class="brush-size size2">3</a>', + '<a href="javascript:void(0)" class="brush-size size3">5</a>', + '<a href="javascript:void(0)" class="brush-size size4">7</a>', + '</div>', + '<div class="sectionBar">', + '<em class="eraserIcon"></em>', + '<a href="javascript:void(0)" class="eraser-size size1">5</a>', + '<a href="javascript:void(0)" class="eraser-size size2">10</a>', + '<a href="javascript:void(0)" class="eraser-size size3">15</a>', + '<a href="javascript:void(0)" class="eraser-size size4">20</a>', + '</div>', + '<div class="sectionBar">', + '<em class="blurIcon"></em>', + '<a href="javascript:void(0)" class="blur-size size1">2</a>', + '<a href="javascript:void(0)" class="blur-size size2">4</a>', + '<a href="javascript:void(0)" class="blur-size size3">6</a>', + '<a href="javascript:void(0)" class="blur-size size4">8</a>', + '</div>', + //end 笔刷设置 + '<div class="sectionBar">', + '<span id="clearSetting" class="clearSetting">', + '<em class="icon"></em>', + '<em class="text">初始化设置</em>', + '</span>', + '</div>', + '<div class="sectionBar">', + '<div id="J_addImg" class="addImgH">', + '<em class="icon"></em>', + '<em class="text">添加背景</em>', + '<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>', + '</div>', + '</div>', + '<div class="sectionBar">', + '<span id="J_removeImg" class="removeImg">', + '<em class="icon"></em>', + '<em class="text">删除背景</em>', + '</span>', + '</div>', + '</div>' + ].join(''); + + var dialog = self.createDialog({ + name : name, + width : 750, + height : 440, + title : self.lang(name), + body : html, + yesBtn : { + name : lang.btnText, + click : function(e) { + + if (dialog.isLoading) { + return; + } + if (canvas.isEmpty()) { + K.options.errorMsgHandler(lang.empty, "error"); + return; + } + canvas.save(function(data) { + //上传涂鸦到服务器 + if (allowUploadGraft) { + dialog.showLoading(self.lang('uploadLoading')); + $.post(uploadJson, { + img_base64_data : data, + fileType : "image", + base64 : 1 + }, function(res) { + + dialog.hideLoading(); + if (res.code == "000") { + K.options.errorMsgHandler(lang.uploadSuccess, "ok"); + clickFn.call(self, res.data.url); + self.hideDialog().focus(); + } else { + K.options.errorMsgHandler(lang.uploadFaild, "error"); + } + + }, "json"); + + } else { + clickFn.call(self, data); + self.hideDialog().focus(); + } + + }); + + } + } + }); + //console.log(div); + + //var urlBox = K('[name="url"]', div), + // viewServerBtn = K('[name="viewServer"]', div), + // titleBox = K('[name="title"]', div); + + var canvas = new Canvas({ + canvasId : "canvas-borad", + width : 600, + height : 320 + }); + + + + }; + + self.clickToolbar(name, function() { + self.plugin.graftDialog({ + clickFn : function(url) { + self.exec('insertimage', url); + } + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/graft/index.html b/public/assets/addons/nkeditor/plugins/graft/index.html new file mode 100644 index 0000000..9b684f9 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/index.html @@ -0,0 +1,134 @@ +<!DOCTYPE html> +<html> +<head> + <title>在线涂鸦工具</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="robots" content="noindex, nofollow"/> + <link rel="stylesheet" type="text/css" href="css/scrawl.css"> +</head> +<body> +<div class="scrawl-main" id="scrawl-main"> + <div class="hot"> + <div class="drawBoard border_style"> + <canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas> + <div class="picBoard" id="picBoard" style=""></div> + </div> + <div class="operateBar"> + <button id="J_prevStep" class="prevStep" title="上一步"> + <em class="icon"></em> + </button> + <button id="J_nextStep" class="nextStep" title="下一步"> + <em class="icon"></em> + </button> + <button id="J_clearBoard" class="clearBoard" title="清空"> + <em class="icon"></em> + </button> + <!--<span id="J_sacleBoard" class="scaleBoard">--> + <!--<em class="icon"></em>--> + <!--<em class="text">缩放背景</em>--> + <!--</span>--> + </div> + </div> + <div class="drawToolbar border_style"> + <div class="colorBar"> + <span data-color="#0099CC" style="background:#0099CC;" class="active"></span> + <span data-color="#003366" style="background:#003366;"></span> + <span data-color="#993333" style="background:#993333;"></span> + <span data-color="#FF9900" style="background:#FF9900;"></span> + <span data-color="#0000CC" style="background:#0000CC;"></span> + <span data-color="#CC3333" style="background:#CC3333;"></span> + + <span data-color="#F4D03F" style="background:#641E16;"></span> + <span data-color="#4A235A" style="background:#4A235A;"></span> + <span data-color="#009966" style="background:#009966;"></span> + <span data-color="#ffff00" style="background:#ffff00;"></span> + <span data-color="#7D6608" style="background:#7D6608;"></span> + <span data-color="#FF33CC" style="background:#FF33CC;"></span> + + <span data-color="#c00000" style="background:#641E16;"></span> + <span data-color="#ffffff" style="background:#ffffff;"></span> + <span data-color="#9bbb59" style="background:#9bbb59;"></span> + <span data-color="#CCFFFF" style="background:#CCFFFF;"></span> + <span data-color="#FFCCCC" style="background:#FFCCCC;"></span> + <span data-color="#CC99CC" style="background:#CC99CC;"></span> + </div> + + <div class="sectionBar"> + <em class="brushIcon"></em> + <a href="javascript:void(0)" class="brush-size size1">1</a> + <a href="javascript:void(0)" class="brush-size size2">3</a> + <a href="javascript:void(0)" class="brush-size size3">5</a> + <a href="javascript:void(0)" class="brush-size size4">7</a> + </div> + <div class="sectionBar"> + <em class="eraserIcon"></em> + <a href="javascript:void(0)" class="eraser-size size1">5</a> + <a href="javascript:void(0)" class="eraser-size size2">10</a> + <a href="javascript:void(0)" class="eraser-size size3">15</a> + <a href="javascript:void(0)" class="eraser-size size4">20</a> + </div> + + <div class="sectionBar"> + <em class="blurIcon"></em> + <a href="javascript:void(0)" class="blur-size size1">2</a> + <a href="javascript:void(0)" class="blur-size size2">4</a> + <a href="javascript:void(0)" class="blur-size size3">6</a> + <a href="javascript:void(0)" class="blur-size size4">8</a> + </div> + + <div class="sectionBar"> + <span id="clearSetting" class="clearSetting"> + <em class="icon"></em> + <em class="text">初始化设置</em> + </span> + </div> + + <div class="sectionBar"> + <div id="J_addImg" class="addImgH"> + <em class="icon"></em> + <em class="text">添加背景</em> + <input type="file" class="upload" id="J_canvas_bg" + accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/> + + </div> + </div> + + <div class="sectionBar"> + <span id="J_removeImg" class="removeImg"> + <em class="icon"></em> + <em class="text">删除背景</em> + </span> + </div> + + <div class="sectionBar"> + <span id="J_saveImg" class="saveImg"> + <em class="icon"></em> + <em class="text">保存图片</em> + </span> + </div> + + </div> +</div> + +<script type="text/javascript" src="scrawl/libs/jquery.min.js"></script> +<script type="text/javascript" src="scrawl.js"></script> +<script> + new Canvas({ + canvasId : "canvas-borad", + width : 700, + height : 400, + save : function(data) { + $.post("upload.php", {imgBase64: data}, function(res) { + if (res.code == "000") { + alert("图片保存成功!"); + location.href = res.url; + } else { + alert(res.url); + } + }, "json"); + } + }); +</script> + +</body> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/graft/scrawl.js b/public/assets/addons/nkeditor/plugins/graft/scrawl.js new file mode 100644 index 0000000..fe13f07 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/graft/scrawl.js @@ -0,0 +1,262 @@ +/** + * Created by yangjian on 17-9-18. + */ +(function($) { + + // 设置元素可用状态 + $.fn.enable = function() { + $(this).addClass("active"); + $(this).removeAttr("disabled"); + } + + // 设置元素不可用状态 + $.fn.disable = function() { + $(this).removeClass("active"); + $(this).attr("disabled", true); + } + + var Canvas = function(options) { + + var configs = { + width : 360, + height : 300 + }; //默认配置 + options = options || {}; + $.extend(configs, options); + + var canvas = $("#"+configs.canvasId)[0]; //画布 + canvas.width = configs.width; + canvas.height = configs.height; + var context = canvas.getContext("2d"); //绘图环境 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + //设置默认颜色 + setColor(); + var $prevBtn = $("#J_prevStep"); //上一步 + var $nextBtn = $("#J_nextStep"); //下一步 + var $clearBtn = $("#J_clearBoard"); //清空画板 + var drawing = false; //是否正在绘制 + var erasering = false; //是否正在擦除 + var prevSteps = []; //返回上一步操作集合 + var nextSteps = []; //恢复下一步操作集合 + var o = {}; + + $("#picBoard").css({ + width : configs.width + "px", + height : configs.height + "px" + }); + + // 事件绑定 + canvas.onmousedown = startDrawing; + canvas.onmouseup = stopDrawing; + canvas.onmouseout = stopDrawing; + canvas.onmousemove = doDrawing; + $prevBtn.on("click", gotoPrevStep); + $nextBtn.on("click", gotoNextStep); + $clearBtn.on("click", clearBoard); + + // 清空设置 + $("#clearSetting").on("click", function() { + context.lineWidth = 1; + setColor($(".colorBar span:first").data("color")); + context.shadowBlur = 0; + alert("画笔已重新初始化,请重新配置画笔。"); + }); + + //上传背景图片 + $("#J_canvas_bg").on("change", function() { + + if ($("#picBoard img").length > 0) { + $("#picBoard img:eq(0)").attr("src", window.URL.createObjectURL(this.files[0])); + return; + } + var $img = '<img src="'+window.URL.createObjectURL(this.files[0])+'" width="'+configs.width+'" height="'+configs.height+'" />'; + $("#picBoard").append($img); + + // 激活删除背景按钮 + $("#J_removeImg").enable(); + + }); + + // 删除背景图片 + $("#J_removeImg").on("click", function() { + $("#picBoard").empty(); + $(this).disable(); + }); + + //保存图片 + $('#J_saveImg').on("click", saveImage); + + // 设置笔刷大小 + $("#scrawl-main .brush-size").on("click", function() { + + context.restore(); //恢复到canvas的上一个状态 + context.lineWidth = parseInt($(this).text()); + erasering = false; + + }); + + // 设置笔触虚化 + $("#scrawl-main .blur-size").on("click", function() { + context.shadowBlur = parseInt($(this).text()); + }); + + // 橡皮擦功能 + $("#scrawl-main .eraser-size").on("click", function() { + + if (erasering == true) { + return; + } + erasering = true; + context.save(); //保存canvas状态 + context.lineCap = "round"; //设置线条两端为圆弧 + context.lineJoin = "round"; //设置线条转折为圆弧 + context.lineWidth = 10; + context.globalCompositeOperation = "destination-out"; + + }); + + //设置颜色 + $("#scrawl-main .colorBar span").on("click",function() { + + $("#scrawl-main .colorBar .active").removeClass("active"); + $(this).addClass("active"); + setColor($(this).data("color")); + }); + + // 开始绘制 + function startDrawing(e) { + drawing = true; + //记录上一步的数据 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + // 创建一个新的绘图路径 + context.beginPath(); + // 把画笔移动到鼠标位置 + var offset = $(canvas).offset(); + context.moveTo(e.pageX - offset.left, e.pageY - offset.top); + } + + // 停止绘制 + function stopDrawing() { + + drawing = false; + //清空下一步的数据集合,从新开始记录 + nextSteps = []; + $nextBtn.disable(); + if (prevSteps.length == 1) { + $prevBtn.enable(); + $clearBtn.enable(); + } + } + + //绘制图像 + function doDrawing(e) { + if (drawing) { + // 找到鼠标最新位置 + var offset = $(canvas).offset(); + var x = e.pageX - offset.left; + var y = e.pageY - offset.top; + // 画一条直线到鼠标最新位置 + context.lineTo(x, y); + context.stroke(); + } + } + + /** + * 返回上一步操作 + */ + function gotoPrevStep() { + if (prevSteps.length > 0) { + //保存当前状态到下一步的操作历史库 + nextSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var popData = prevSteps.pop(); + context.putImageData(popData, 0, 0); + $nextBtn.enable(); + + if (prevSteps.length == 0) { + $prevBtn.disable(); + } + } + } + + /** + * 恢复下一步操作 + */ + function gotoNextStep() { + if (nextSteps.length > 0) { + //保存当前状态到上一步的操作历史库 + prevSteps.push(context.getImageData(0, 0, configs.width, configs.height)); + var imgData = nextSteps.pop(); + context.putImageData(imgData, 0, 0); + $prevBtn.enable(); + + if (nextSteps.length == 0) { + $nextBtn.disable(); + } + } + } + + /** + * 清空画板 + */ + function clearBoard() { + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + prevSteps = []; + nextSteps = []; + + $prevBtn.disable(); + $nextBtn.disable(); + $clearBtn.disable(); + } + + /** + * 设置画笔颜色 + * @param color + */ + function setColor(color) { + if (!color) { + color = $(".colorBar .active:eq(0)").data("color"); + } + context.strokeStyle = color; + context.shadowColor = color; + } + + /** + * 获取图片 base64 编码 + */ + function saveImage(callback) { + + if ($("#picBoard img").length > 0) { + var image = new Image(); + image.src = $("#picBoard img:eq(0)").attr("src"); + image.onload = function() { + context.save(); + context.shadowBlur = 0; + context.shadowColor = '#FFF'; + context.globalCompositeOperation = "destination-atop"; + context.drawImage(this, 0, 0, configs.width, configs.height); + context.restore(); + + callback(canvas.toDataURL("image/png")); + } + + } else { + callback(canvas.toDataURL("image/png")); + } + } + + + //要导出的API + o.nextStep = gotoNextStep; + o.prevStep = gotoNextStep; + o.setColor = setColor; + o.save = saveImage; + o.isEmpty = function() { + return prevSteps.length == 0; + } + return o; + } + + + window.Canvas = Canvas; +})(jQuery); \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/image/image.js b/public/assets/addons/nkeditor/plugins/image/image.js new file mode 100644 index 0000000..dc4848a --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/image/image.js @@ -0,0 +1,340 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('image', function(K) { + var self = this, name = 'image', + allowImageUpload = K.undef(self.allowImageUpload, true), + allowImageRemote = K.undef(self.allowImageRemote, true), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + allowFileManager = K.undef(self.allowFileManager, false), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + imageTabIndex = K.undef(self.imageTabIndex, 0), + imgPath = self.pluginsPath + 'image/images/', + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + fillDescAfterUploadImage = K.undef(self.fillDescAfterUploadImage, false), + lang = self.lang(name + '.'); + + self.plugin.imageDialog = function(options) { + var imageUrl = options.imageUrl, + imageWidth = K.undef(options.imageWidth, ''), + imageHeight = K.undef(options.imageHeight, ''), + imageTitle = K.undef(options.imageTitle, ''), + imageAlign = K.undef(options.imageAlign, ''), + showRemote = K.undef(options.showRemote, true), + showLocal = K.undef(options.showLocal, true), + tabIndex = K.undef(options.tabIndex, 0), + clickFn = options.clickFn; + var target = 'kindeditor_upload_iframe_' + new Date().getTime(); + var hiddenElements = []; + for(var k in extraParams){ + hiddenElements.push('<input type="hidden" name="' + k + '" value="' + extraParams[k] + '" />'); + } + var html = [ + '<div class="ke-dialog-content-inner">', + //tabs + '<div class="tabs"></div>', + //remote image - start + '<div class="tab1" style="display:none;">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteUrl" class="row-left">' + lang.remoteUrl + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteUrl" class="ke-input-text" name="url" value="" style="width:250px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //size + '<div class="ke-dialog-row ke-clearfix ">', + '<label for="remoteWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">'+lang.width + ' <input type="text" id="remoteWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<img class="ke-refresh-btn" src="' + imgPath + 'refresh.png" width="16" height="16" alt="" style="cursor:pointer;" title="' + lang.resetSize + '" />', + '</div>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<span><input type="radio" name="align" class="ke-inline-block" value="" checked="checked" /> ' + + '<img name="defaultImg" src="' + imgPath + 'align_top.gif" width="23" height="25" alt="" /></span>', + + ' <span><input type="radio" name="align" class="ke-inline-block" value="left" /> ' + + '<img name="leftImg" src="' + imgPath + 'align_left.gif" width="23" height="25" alt="" /></span>', + + ' <span><input type="radio" name="align" class="ke-inline-block" value="right" /> ' + + '<img name="rightImg" src="' + imgPath + 'align_right.gif" width="23" height="25" alt="" /></span>', + '</div>', + '</div>', + //title + '<div class="ke-dialog-row ke-clearfix">', + '<label for="remoteTitle" class="row-left">' + lang.imgTitle + ':</label>', + '<div class="row-right">', + '<input type="text" id="remoteTitle" class="ke-input-text" name="title" value="" style="width:250px;" />', + '</div>', + '</div>', + '</div>', + //remote image - end + //local upload - start + '<div class="tab2" style="display:none;">', + '<iframe name="' + target + '" style="display:none;"></iframe>', + '<form class="ke-upload-area ke-form" method="post" enctype="multipart/form-data" target="' + target + '" action="' + K.addParam(uploadJson, 'fileType=image') + '">', + //file + '<div class="ke-dialog-row ke-clearfix">', + hiddenElements.join(''), + '<label class="row-left">' + lang.localUrl + ':</label>', + '<div class="row-right">', + '<input type="text" name="localUrl" class="ke-input-text" tabindex="-1" style="width:250px;" readonly="true" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" />', + '</div>', + '</div>', + '</form>', + '</div>', + //local upload - end + '</div>' + ].join(''); + + var dialogWidth = showLocal || allowFileManager ? 450 : 400, + dialogHeight = showLocal && showRemote ? 310 : 260; + var dialog = self.createDialog({ + name : name, + width : dialogWidth, + height : dialogHeight, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + // Bugfix: http://code.google.com/p/kindeditor/issues/detail?id=319 + if (dialog.isLoading) { + return; + } + // insert local image + if (showLocal && showRemote && tabs && tabs.selectedIndex === 1 || !showRemote) { + if (uploadbutton.fileBox.val() == '') { + K.options.errorMsgHandler(self.lang('pleaseSelectFile'), "error"); + return; + } + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + localUrlBox.val(''); + return; + } + // insert remote image + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(), + title = titleBox.val(), + align = ''; + alignBox.each(function() { + if (this.checked) { + align = this.value; + return false; + } + }); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + clickFn.call(self, url, title, width, height, 0, align); + } + }, + beforeRemove : function() { + viewServerBtn.unbind(); + widthBox.unbind(); + heightBox.unbind(); + refreshBtn.unbind(); + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + localUrlBox = K('[name="localUrl"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('.tab1 [name="width"]', div), + heightBox = K('.tab1 [name="height"]', div), + refreshBtn = K('.ke-refresh-btn', div), + titleBox = K('.tab1 [name="title"]', div), + alignBox = K('.tab1 [name="align"]', div); + + var tabs; + if (showRemote && showLocal) { + tabs = K.tabs({ + src : K('.tabs', div), + afterSelect : function(i) {} + }); + tabs.add({ + title : lang.remoteImage, + panel : K('.tab1', div) + }); + tabs.add({ + title : lang.localImage, + panel : K('.tab2', div) + }); + tabs.select(tabIndex); + } else if (showRemote) { + K('.tab1', div).show(); + } else if (showLocal) { + K('.tab2', div).show(); + } + + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + form : K('.ke-form', div), + target : target, + width: 60, + afterUpload : function(data) { + + dialog.hideLoading(); + if (data.code == "000") { + + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + if (!fillDescAfterUploadImage) { + clickFn.call(self, url, data.title, data.width, data.height, data.border, data.align); + } else { + K(".ke-dialog-row ke-clearfix #remoteUrl", div).val(url); + K(".ke-tabs-li", div)[0].click(); + K(".ke-refresh-btn", div).click(); + } + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + localUrlBox.val(uploadbutton.fileBox.val()); + }); + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'image', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + viewServerBtn.hide(); + } + var originalWidth = 0, originalHeight = 0; + function setSize(width, height) { + widthBox.val(width); + heightBox.val(height); + originalWidth = width; + originalHeight = height; + } + refreshBtn.click(function(e) { + var tempImg = K('<img src="' + urlBox.val() + '" />', document).css({ + position : 'absolute', + visibility : 'hidden', + top : 0, + left : '-1000px' + }); + tempImg.bind('load', function() { + setSize(tempImg.width(), tempImg.height()); + tempImg.remove(); + }); + K(document.body).append(tempImg); + }); + widthBox.change(function(e) { + if (originalWidth > 0) { + heightBox.val(Math.round(originalHeight / originalWidth * parseInt(this.value, 10))); + } + }); + heightBox.change(function(e) { + if (originalHeight > 0) { + widthBox.val(Math.round(originalWidth / originalHeight * parseInt(this.value, 10))); + } + }); + urlBox.val(options.imageUrl); + setSize(options.imageWidth, options.imageHeight); + titleBox.val(options.imageTitle); + alignBox.each(function() { + if (this.value === options.imageAlign) { + this.checked = true; + return false; + } + }); + if (showRemote && tabIndex === 0) { + urlBox[0].focus(); + urlBox[0].select(); + } + return dialog; + }; + self.plugin.image = { + edit : function() { + var img = self.plugin.getSelectedImage(); + self.plugin.imageDialog({ + imageUrl : img ? img.attr('data-ke-src') : 'http://', + imageWidth : img ? img.width() : '', + imageHeight : img ? img.height() : '', + imageTitle : img ? img.attr('title') : '', + imageAlign : img ? img.attr('align') : '', + showRemote : allowImageRemote, + showLocal : allowImageUpload, + tabIndex: img ? 0 : imageTabIndex, + clickFn : function(url, title, width, height, border, align) { + if (img) { + img.attr('src', url); + img.attr('data-ke-src', url); + img.attr('width', width); + img.attr('height', height); + img.attr('title', title); + img.attr('align', align); + img.attr('alt', title); + } else { + self.exec('insertimage', url, title, width, height, border, align); + } + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }, + 'delete' : function() { + var target = self.plugin.getSelectedImage(); + if (target.parent().name == 'a') { + target = target.parent(); + } + target.remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.image.edit); +}); diff --git a/public/assets/addons/nkeditor/plugins/image/images/align_left.gif b/public/assets/addons/nkeditor/plugins/image/images/align_left.gif new file mode 100644 index 0000000..ab17f56 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/image/images/align_left.gif differ diff --git a/public/assets/addons/nkeditor/plugins/image/images/align_right.gif b/public/assets/addons/nkeditor/plugins/image/images/align_right.gif new file mode 100644 index 0000000..e8ebe6a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/image/images/align_right.gif differ diff --git a/public/assets/addons/nkeditor/plugins/image/images/align_top.gif b/public/assets/addons/nkeditor/plugins/image/images/align_top.gif new file mode 100644 index 0000000..d8826a5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/image/images/align_top.gif differ diff --git a/public/assets/addons/nkeditor/plugins/image/images/refresh.png b/public/assets/addons/nkeditor/plugins/image/images/refresh.png new file mode 100644 index 0000000..77e12d1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/image/images/refresh.png differ diff --git a/public/assets/addons/nkeditor/plugins/insertfile/insertfile.js b/public/assets/addons/nkeditor/plugins/insertfile/insertfile.js new file mode 100644 index 0000000..12d6e27 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/insertfile/insertfile.js @@ -0,0 +1,141 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('insertfile', function(K) { + var self = this, name = 'insertfile', + allowFileUpload = K.undef(self.allowFileUpload, true), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + self.plugin.fileDialog = function(options) { + var fileUrl = K.undef(options.fileUrl, 'http://'), + fileTitle = K.undef(options.fileTitle, ''), + clickFn = options.clickFn; + var html = [ + '<div class="ke-dialog-content-inner">', + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input type="text" id="keUrl" name="url" class="ke-input-text" style="width:160px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '</div>', + '</div>', + //title + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keTitle" class="row-left">' + lang.title + ':</label>', + '<div class="row-right">', + '<input type="text" id="keTitle" class="ke-input-text" name="title" value="" style="width:160px;" /></div>', + '</div>', + '</div>', + //form end + '</form>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + title = titleBox.val(); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + if (K.trim(title) === '') { + title = url; + } + clickFn.call(self, url, title); + } + } + }), + div = dialog.div; + + var urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + titleBox = K('[name="title"]', div); + + if (allowFileUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + url : K.addParam(uploadJson, 'fileType=file'), + extraParams : extraParams, + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code === "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + if (allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + viewType : 'LIST', + dirName : 'file', + clickFn : function(url) { + //console.log(url); + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "250px"); + viewServerBtn.hide(); + } + urlBox.val(fileUrl); + titleBox.val(fileTitle); + urlBox[0].focus(); + urlBox[0].select(); + }; + self.clickToolbar(name, function() { + self.plugin.fileDialog({ + clickFn : function(url, title) { + var html = '<a class="ke-insertfile" href="' + url + '" data-ke-src="' + url + '" target="_blank">' + title + '</a>'; + self.insertHtml(html).hideDialog().focus(); + } + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/lineheight/lineheight.js b/public/assets/addons/nkeditor/plugins/lineheight/lineheight.js new file mode 100644 index 0000000..ae679d7 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/lineheight/lineheight.js @@ -0,0 +1,38 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('lineheight', function(K) { + var self = this, name = 'lineheight', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var curVal = '', commonNode = self.cmd.commonNode({'*' : '.line-height'}); + if (commonNode) { + curVal = commonNode.css('line-height'); + } + var menu = self.createMenu({ + name : name, + width : 150 + }); + K.each(lang.lineHeight, function(i, row) { + K.each(row, function(key, val) { + menu.addItem({ + title : val, + checked : curVal === key, + click : function() { + self.cmd.toggle('<span style="line-height:' + key + ';"></span>', { + span : '.line-height=' + key + }); + self.updateState(); + self.addBookmark(); + self.hideMenu(); + } + }); + }); + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/link/link.js b/public/assets/addons/nkeditor/plugins/link/link.js new file mode 100644 index 0000000..9a42fbd --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/link/link.js @@ -0,0 +1,71 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('link', function(K) { + var self = this, name = 'link'; + self.plugin.link = { + edit : function() { + var lang = self.lang(name + '.'), + html = ['<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:260px;" />', + '</div>', + '</div>', + //type + '<div class="ke-dialog-row ke-clearfix"">', + '<label for="keType" class="row-left">' + lang.linkType + ':</label>', + '<div class="row-right">', + '<select id="keType" class="ke-select" name="type"></select>', + '</div>', + '</div>', + '</div>'].join(""), + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()); + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + self.exec('createlink', url, typeBox.val()).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('input[name="url"]', div), + typeBox = K('select[name="type"]', div); + urlBox.val('http://'); + typeBox[0].options[0] = new Option(lang.newWindow, '_blank'); + typeBox[0].options[1] = new Option(lang.selfWindow, ''); + self.cmd.selection(); + var a = self.plugin.getSelectedLink(); + if (a) { + self.cmd.range.selectNode(a[0]); + self.cmd.select(); + urlBox.val(a.attr('data-ke-src')); + typeBox.val(a.attr('target')); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.exec('unlink', null); + } + }; + self.clickToolbar(name, self.plugin.link.edit); +}); diff --git a/public/assets/addons/nkeditor/plugins/map/map.html b/public/assets/addons/nkeditor/plugins/map/map.html new file mode 100644 index 0000000..fb27555 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/map/map.html @@ -0,0 +1,57 @@ +<!doctype html> +<html> + <head> + <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> + <style> + html { height: 100% } + body { height: 100%; margin: 0; padding: 0; background-color: #FFF } + #map_canvas { height: 100% } + </style> + <script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=zh_CN"></script> + <script> + var map, geocoder; + function initialize() { + var latlng = new google.maps.LatLng(-34.397, 150.644); + var options = { + zoom: 11, + center: latlng, + disableDefaultUI: true, + panControl: true, + zoomControl: true, + mapTypeControl: true, + scaleControl: true, + streetViewControl: false, + overviewMapControl: true, + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + map = new google.maps.Map(document.getElementById("map_canvas"), options); + geocoder = new google.maps.Geocoder(); + geocoder.geocode({latLng: latlng}, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + if (results[3]) { + parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address; + } + } + }); + } + function search(address) { + if (!map) return; + geocoder.geocode({address : address}, function(results, status) { + if (status == google.maps.GeocoderStatus.OK) { + map.setZoom(11); + map.setCenter(results[0].geometry.location); + var marker = new google.maps.Marker({ + map: map, + position: results[0].geometry.location + }); + } else { + alert("Invalid address: " + address); + } + }); + } + </script> + </head> + <body onload="initialize();"> + <div id="map_canvas" style="width:100%; height:100%"></div> + </body> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/map/map.js b/public/assets/addons/nkeditor/plugins/map/map.js new file mode 100644 index 0000000..5290875 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/map/map.js @@ -0,0 +1,137 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +// Google Maps: http://code.google.com/apis/maps/index.html + +KindEditor.plugin('map', function(K) { + var self = this, name = 'map', lang = self.lang(name + '.'); + self.clickToolbar(name, function() { + var html = ['<div style="padding:10px 20px;">', + '<div class="ke-dialog-row">', + lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />', + '</span>', + '</div>', + '<div class="ke-map" style="width:558px;height:360px;"></div>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 600, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var geocoder = win.geocoder, + map = win.map, + center = map.getCenter().lat() + ',' + map.getCenter().lng(), + zoom = map.getZoom(), + maptype = map.getMapTypeId(), + url = 'http://maps.googleapis.com/maps/api/staticmap'; + url += '?center=' + encodeURIComponent(center); + url += '&zoom=' + encodeURIComponent(zoom); + url += '&size=558x360'; + url += '&maptype=' + encodeURIComponent(maptype); + url += '&markers=' + encodeURIComponent(center); + url += '&language=' + self.langType; + url += '&sensor=false'; + self.exec('insertimage', url).hideDialog().focus(); + } + }, + beforeRemove : function() { + searchBtn.remove(); + if (doc) { + doc.write(''); + } + iframe.remove(); + } + }); + var div = dialog.div, + addressBox = K('[name="address"]', div), + searchBtn = K('[name="searchBtn"]', div), + win, doc; + var iframeHtml = ['<!doctype html><html><head>', + '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />', + '<style>', + ' html { height: 100% }', + ' body { height: 100%; margin: 0; padding: 0; background-color: #FFF }', + ' #map_canvas { height: 100% }', + '</style>', + '<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>', + '<script>', + 'var map, geocoder;', + 'function initialize() {', + ' var latlng = new google.maps.LatLng(31.230393, 121.473704);', + ' var options = {', + ' zoom: 11,', + ' center: latlng,', + ' disableDefaultUI: true,', + ' panControl: true,', + ' zoomControl: true,', + ' mapTypeControl: true,', + ' scaleControl: true,', + ' streetViewControl: false,', + ' overviewMapControl: true,', + ' mapTypeId: google.maps.MapTypeId.ROADMAP', + ' };', + ' map = new google.maps.Map(document.getElementById("map_canvas"), options);', + ' geocoder = new google.maps.Geocoder();', + ' geocoder.geocode({latLng: latlng}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' if (results[3]) {', + ' parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;', + ' }', + ' }', + ' });', + '}', + 'function search(address) {', + ' if (!map) return;', + ' geocoder.geocode({address : address}, function(results, status) {', + ' if (status == google.maps.GeocoderStatus.OK) {', + ' map.setZoom(11);', + ' map.setCenter(results[0].geometry.location);', + ' var marker = new google.maps.Marker({', + ' map: map,', + ' position: results[0].geometry.location', + ' });', + ' } else {', + ' alert("Invalid address: " + address);', + ' }', + ' });', + '}', + '</script>', + '</head>', + '<body onload="initialize();">', + '<div id="map_canvas" style="width:100%; height:100%"></div>', + '</body></html>'].join('\n'); + // TODO:用doc.write(iframeHtml)方式加载时,在IE6上第一次加载报错,暂时使用src方式 + var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>'); + function ready() { + win = iframe[0].contentWindow; + doc = K.iframeDoc(iframe); + //doc.open(); + //doc.write(iframeHtml); + //doc.close(); + } + iframe.bind('load', function() { + iframe.unbind('load'); + if (K.IE) { + ready(); + } else { + setTimeout(ready, 0); + } + }); + K('.ke-map', div).replaceWith(iframe); + // search map + searchBtn.click(function() { + win.search(addressBox.val()); + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/media/media.js b/public/assets/addons/nkeditor/plugins/media/media.js new file mode 100644 index 0000000..fab7faa --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/media/media.js @@ -0,0 +1,186 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('media', function(K) { + var self = this, name = 'media', lang = self.lang(name + '.'), + allowMediaUpload = K.undef(self.allowMediaUpload, false), + allowFileManager = K.undef(self.allowFileManager, false), + formatUploadUrl = K.undef(self.formatUploadUrl, true), + extraParams = K.undef(self.extraFileUploadParams, {}), + filePostName = K.undef(self.filePostName, 'imgFile'), + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'); + + self.plugin.media = { + edit : function() { + var html = [ + '<div class="ke-dialog-content-inner">', + //url + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keUrl" class="row-left">' + lang.url + ':</label>', + '<div class="row-right">', + '<input class="ke-input-text" type="text" id="keUrl" name="url" value="" style="width:180px;" /> ', + '<input type="button" class="ke-upload-button" value="' + lang.upload + '" /> ', + '<span class="ke-button-common ke-button-outer">', + '<input type="button" class="ke-button-common ke-button" name="viewServer" value="' + lang.viewServer + '" />', + '</span>', + '<div>支持优酷、爱奇艺、土豆、腾讯视频、56等视频网站【<span style="color:green">通用代码</span>】', + '</div>', + '</div>', + '</div>', + //width + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.width + ':</label>', + '<div class="row-right">', + '<input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="550" maxlength="4" />', + '</div>', + '</div>', + //height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keHeight" class="row-left">' + lang.height + ':</label>', + '<div class="row-right">', + '<input type="text" id="keHeight" class="ke-input-text ke-input-number" name="height" value="400" maxlength="4" />', + '</div>', + '</div>', + //autostart + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAutostart" class="row-left">' + lang.autostart + ':</label>', + '<div class="row-right">', + '<input type="checkbox" id="keAutostart" name="autostart" class="ke-input-checkbox" value="" /> ', + '</div>', + '</div>', + '</div>' + ].join(''); + var dialog = self.createDialog({ + name : name, + width : 450, + height : 260, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var url = K.trim(urlBox.val()), + width = widthBox.val(), + height = heightBox.val(); + var match = url.match(/^<iframe\s(.*?)src=('|")(.*?)('|")/); + if(!match) { + if (url == 'http://' || K.invalidUrl(url)) { + K.options.errorMsgHandler(self.lang('invalidUrl'), "error"); + urlBox[0].focus(); + return; + } + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if(!match) { + var html = K.mediaImg(self.themesPath + 'common/blank.gif', { + src: url, + type: K.mediaType(url), + width: width, + height: height, + autostart: autostartBox[0].checked ? 'true' : 'false', + loop: 'true' + }); + } else { + var html = '<iframe src="' + match[3] + '" frameborder="0" style="width:' + width + 'px;height:' + height + 'px;"></iframe>'; + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + div = dialog.div, + urlBox = K('[name="url"]', div), + viewServerBtn = K('[name="viewServer"]', div), + widthBox = K('[name="width"]', div), + heightBox = K('[name="height"]', div), + autostartBox = K('[name="autostart"]', div); + urlBox.val('http://'); + + if (allowMediaUpload) { + var uploadbutton = K.uploadbutton({ + button : K('.ke-upload-button', div)[0], + fieldName : filePostName, + extraParams : extraParams, + url : K.addParam(uploadJson, 'fileType=media'), + afterUpload : function(data) { + dialog.hideLoading(); + if (data.code == "000") { + var url = data.data.url; + if (formatUploadUrl) { + url = K.formatUrl(url, 'absolute'); + } + urlBox.val(url); + + if (self.afterUpload) { + self.afterUpload.call(self, url, data, name); + } + K.options.errorMsgHandler(self.lang('uploadSuccess'), "ok"); + } else { + K.options.errorMsgHandler(data.message, "error", "error"); + } + }, + afterError : function(html) { + dialog.hideLoading(); + self.errorDialog(html); + } + }); + uploadbutton.fileBox.change(function(e) { + dialog.showLoading(self.lang('uploadLoading')); + uploadbutton.submit(); + }); + } else { + K('.ke-upload-button', div).hide(); + } + + if (allowMediaUpload && allowFileManager) { + viewServerBtn.click(function(e) { + self.loadPlugin('filemanager', function() { + self.plugin.filemanagerDialog({ + dirName : 'media', + clickFn : function(url) { + K('[name="url"]', div).val(url); + if (self.afterSelectFile) { + self.afterSelectFile.call(self, url); + } + } + }); + }); + }); + } else { + K("#keUrl").css("width", "280px"); + viewServerBtn.hide(); + } + + var img = self.plugin.getSelectedMedia(); + if (img) { + var attrs = K.mediaAttrs(img.attr('data-ke-tag')); + urlBox.val(attrs.src); + widthBox.val(K.removeUnit(img.css('width')) || attrs.width || 0); + heightBox.val(K.removeUnit(img.css('height')) || attrs.height || 0); + autostartBox[0].checked = (attrs.autostart === 'true'); + } + urlBox[0].focus(); + urlBox[0].select(); + }, + 'delete' : function() { + self.plugin.getSelectedMedia().remove(); + // [IE] 删除图片后立即点击图片按钮出错 + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.media.edit); +}); diff --git a/public/assets/addons/nkeditor/plugins/multiimage/BUpload.js b/public/assets/addons/nkeditor/plugins/multiimage/BUpload.js new file mode 100644 index 0000000..a314e0c --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/BUpload.js @@ -0,0 +1,625 @@ +/** + * HTML5上传插件 + * @site https://git.oschina.net/blackfox/ajaxUpload + * @author yangjian<yangjian102621@gmail.com> + * @version 1.0.1 + */ +(function($) { + + //判断浏览器是否支持html5 + // if ( !window.applicationCache ) + // throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!"); + + //image crop + $.fn.imageCrop = function(__width, __height) { + $(this).on("load", function () { + + var width, height, left, top; + var orgRate = this.width/this.height; + var cropRate = __width/__height; + if ( orgRate >= cropRate ) { + height = __height; + width = __width * orgRate; + top = 0; + left = (width - __width)/2; + } else { + width = __width; + height = __height / orgRate; + left = 0; + //top = (height - __height)/2; + top = 0; + } + $(this).css({ + "position" : "absolute", + top : -top + "px", + left : -left + "px", + width : width + "px", + height : height + "px" + }); + }); + } + + //make element draggable + $.fn.draggable = function(options) { + var defaults = { + handler : null + } + options = $.extend(defaults, options); + var __self = this; + $(options.handler).mousedown(function(e) { + var offsetLeft = e.pageX - $(__self).position().left; + var offsetTop = e.pageY - $(__self).position().top; + $(document).mousemove(function(e) { + //清除拖动鼠标的时候选择文本 + window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); + $(__self).css({ + 'top' : e.pageY-offsetTop + 'px', + 'left' : e.pageX-offsetLeft + 'px' + }); + }); + + }).mouseup(function() { + $(document).unbind('mousemove'); + }); + + } + + if ( Array.prototype.remove == undefined ) { + Array.prototype.remove = function(item) { + for ( var i = 0; i < this.length; i++ ) { + if ( this[i] == item ) { + this.splice(i, 1); + break; + } + } + } + } + if ( Array.prototype.uinque == undefined ) { + Array.prototype.uinque = function() { + var result = [], hash = {}; + for ( var i = 0, item; (item = this[i]) != null; i++ ) { + if ( !hash[item] ) { + result.push(item); + hash[item] = true; + } + } + return result; + } + } + + window.BUpload = function(options) { + + options = $.extend({ + src : "src", + upload_url : null, + list_url : null, + data_type : "json", + top : 20, + fileType : "image", //文件类型,默认是图片,可选flash,media,file + max_filesize : 2048, //unit:KB + max_filenum : 20, + no_data_text : "(⊙o⊙)亲,没有多数据了。", + ext_allow : "jpg|png|gif|jpeg", + ext_refuse : "exe|txt", + errorHandler : function(messsage, type) { + alert(messsage); + }, + callback : function(data) { + console.log(data); + } + }, options); + + //错误代码和提示消息 + var codeMessageMap = { + '000' : '文件上传成功', + '001' : '文件上传失败', + '003' : '文件大小超出限制', + '004' : '非法文件名后缀' + }; + + var mimeType = { + "3gpp":"audio/3gpp, video/3gpp", + "ac3":"audio/ac3", + "asf":"allpication/vnd.ms-asf", + "au":"audio/basic", + "css":"text/css", + "csv":"text/csv", + "doc":"application/msword", + "dot":"application/msword", + "dtd":"application/xml-dtd", + "dwg":"image/vnd.dwg", + "dxf":"image/vnd.dxf", + "gif":"image/gif", + "htm":"text/html", + "html":"text/html", + "jp2":"image/jp2", + "jpe":"image/jpeg", + "jpeg":"image/jpeg", + "jpg":"image/jpeg", + "js":"text/javascript, application/javascript", + "json":"application/json", + "mp2":"audio/mpeg, video/mpeg", + "mp3":"audio/mpeg", + "mp4":"audio/mp4, video/mp4", + "mpeg":"video/mpeg", + "mpg":"video/mpeg", + "mpp":"application/vnd.ms-project", + "ogg":"application/ogg, audio/ogg", + "pdf":"application/pdf", + "png":"image/png", + "pot":"application/vnd.ms-powerpoint", + "pps":"application/vnd.ms-powerpoint", + "ppt":"application/vnd.ms-powerpoint", + "rtf":"application/rtf, text/rtf", + "svf":"image/vnd.svf", + "tif":"image/tiff", + "tiff":"image/tiff", + "txt":"text/plain", + "wdb":"application/vnd.ms-works", + "wps":"application/vnd.ms-works", + "xhtml":"application/xhtml+xml", + "xlc":"application/vnd.ms-excel", + "xlm":"application/vnd.ms-excel", + "xls":"application/vnd.ms-excel", + "xlt":"application/vnd.ms-excel", + "xlw":"application/vnd.ms-excel", + "xml":"text/xml, application/xml", + "zip":"aplication/zip", + "xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + } + + var o = {}; + o.dialog = null; + o.todoList = new Array(); //the file queue to be uploaded + o.uploadSuccessNum = 0; //已经上传成功的图片数量 + o.selectedList = new Array(); //the file queue upload successfully + o.addedFileNumber = 0; //the numbers of files that has added + o.totalFilesize = 0; //total file size + o.uploadLock = false; //upload thread lock + o.page = 1; //服务器图片列表页码 + o.marker = null, //七牛云上传的分页标识 + o.noRecord = false; + var dialogSCode = Math.ceil(Math.random() * 1000000000000); //对话框的令牌,如果创建多个BUpload上传对象用来保持唯一性 + + //close the dialog + o.close = function () { + o.dialog.remove(); + if (typeof options.close == 'function') { + options.close(); + } + } + + //create dialog + function createDialog() { + + var builder = new StringBuilder(); + builder.append('<div class="uedbody ke-animated"><div class="ued_title">'); + builder.append('<div class="uedbar"><span>'+options.lang.title+'</span></div><div class="close_btn icon"' + + ' title="'+options.lang.closeText+'"></div>'); + builder.append('</div><div class="wrapper"><div id="wra_head" class="wra_head"><span class="tab' + + ' tab-upload focus" tab="upload-panel">'+options.lang.localUpload+'</span>'); + if ( options.list_url != null ) { + builder.append('<span class="tab tab-online" tab="online">'+options.lang.fileServer+'</span>'); + } + builder.append('</div><div class="wra_body"><div class="tab-panel upload-panel"><div class="wra_pla"><div class="upload-image-placeholder">'); + builder.append('<div class="btn btn-primary image-select">'+options.lang.selectFile+'</div><input type="file" name="'+options.src+'" class="webuploader-element-invisible"' + + ' multiple="multiple" accept="'+getAccept()+'">'); + builder.append('</div></div><div class="image-list-box" style="display: none;"><div class="wra_bar"><div class="info fl"></div>'); + builder.append('<div class="fr"><span class="btn btn-default btn-continue-add">'+options.lang.continueAdd+'</span><span class="btn btn-primary btn-start-upload">'+options.lang.startUpload+'</span></div></div>'); + builder.append('<ul class="filelist"></ul></div></div><div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'); + builder.append('<div class="tab-panel searchbox"><div class="search-bar"><input class="searTxt"' + + ' type="text" placeholder="'+options.lang.searchPlaceholder+'" />'); + builder.append('<input value="'+options.lang.searchBtn+'" class="btn btn-primary btn-search" type="button" /><input value="'+options.lang.searchClear+'" class="btn btn-default btn-reset" type="button" />'); + builder.append('</div><div class="search-imagelist-box"><ul class="search-list"></ul><div class="no-data"></div></div>'); + builder.append('</div><div class="loading-icon"></div></div><!-- end of wrapper --></div><div class="wra-btn-group"><span class="btn btn-primary btn-confirm">'+options.lang.confirmBtnText+'</span>'); + builder.append('<span class="btn btn-default btn-cancel">'+options.lang.cancelBtnText+'</span></div></div>'); + + o.dialog = $(builder.toString()); + $("body").append(o.dialog); + if (options.top == 0) { + options.top = ($(window).height() - o.dialog.height())/2; + } + o.dialog.css({ + left : ($(window).width() - o.dialog.width())/2 + "px", + top : options.top + "px" + }); + //给对话框添加拖拽事件 + o.dialog.draggable({handler : o.dialog.find(".ued_title")}) + + } + + //绑定元素事件 + function bindEvent() { + + //选项卡事件 + G(".tab").on("click", function() { + var tab = $(this).attr("tab"); + G(".tab-panel").hide(); + G("."+tab).show(); + G(".tab").removeClass("focus"); + $(this).addClass("focus"); + }); + + //关闭对话框 + G(".close_btn").on("click", function() { + o.close(); + }); + + //选择文件事件 + G(".webuploader-element-invisible").on("change", function() { + addFiles(this); + }); + + //弹出上传文件选择框 + G(".image-select").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + G(".btn-continue-add").on("click", function() { + G(".webuploader-element-invisible").trigger("click"); + }); + + //开始上传按钮事件 + G(".btn-start-upload").on("click", function() { + if ( o.uploadLock ) return; + + if ( o.todoList.length == 0 ) { + options.errorHandler(options.lang.noFileAdded, "error"); + return false; + } + $(this).addClass("disabled").text(options.lang.uploading); + uploadFile(o.todoList.shift()); + }); + + //点击确认|取消按钮事件 + G(".btn-confirm").on("click", function() { + if ( o.todoList.length > 0 ) { + options.errorHandler(options.lang.fileNotUpload, "error"); + return false; + } + if (o.selectedList.length == 0) { + options.errorHandler(options.lang.noFileSelected, "error"); + return false; + } + options.callback(o.selectedList); + o.close(); + + }); + G(".btn-cancel").on("click", function() { + o.close(); + }); + + //从服务器加载文件 + G(".tab-online").on("click", function() { + + if ( G(".imagelist .list").children().length == 0 ) { + loadFilesFromServer() + } + + }); + + //当滚动条滚到底部时自动去加载图片 + G(".imagelist").on("scroll", function() { + + if ( this.scrollTop + this.clientHeight >= this.scrollHeight ) { + loadFilesFromServer(); + } + }); + } + + //add file to upload list + function addFiles(input) { + + var files = input.files; + var totalFileNum = o.todoList.length + o.uploadSuccessNum + files.length; //本次上传文件总数 + for ( var i = o.addedFileNumber; i < o.addedFileNumber+files.length; i++ ) { + + if ( totalFileNum > options.max_filenum ) { + options.errorHandler(KindEditor.tmpl(options.lang.uploadLimit, {uploadLimit: options.max_filenum}), "error"); + return; + } + var builder = new StringBuilder(); + var tempFile = files[i- o.addedFileNumber]; + builder.append('<li id="img-comtainer-'+dialogSCode+i+'"><div class="imgWrap">'); + + //如果上传的不是图片,则通过判断文件后缀来显示不同的图标 + var extension = getFileExt(tempFile.name); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + builder.append('<span class="icon-placeholder icon-default icon-'+extension+'"></span>'); + } else { + builder.append('<img src="'+window.URL.createObjectURL(tempFile)+'" border="0" />'); + } + + builder.append('</div><div class="file-opt-box clearfix"><span class="remove" index="'+i+'">'+options.lang.remove+'</span><span class="rotateRight">'+options.lang.rotateRight+'</span>'); + builder.append('<span class="rotateLeft">'+options.lang.rotateLeft+'</span></div><div class="success"></div><div class="error"></div>'); + builder.append('<div class="progress"><span style="display: none; width: 0px;"></span></div></li>'); + + var $image = $(builder.toString()); + //bind onelele event + $image.find(".remove").on("click", function() { + $(this).parents("li").remove(); //remove element + //remove file from todoList + var index = $(this).attr("index"); + for ( var i = 0; i < o.todoList.length; i++ ) { + if ( o.todoList[i].index == index ) { + o.totalFilesize -= o.todoList[i].file.size; + updateInfoText(o.uploadSuccessNum + o.todoList.length-1, o.totalFilesize); + o.todoList.splice(i, 1); + break; + } + } + if (G(".filelist li").length == 0) { + G(".image-list-box").hide(); + G(".wra_pla").show(); + } + }); + $image.on("mouseover", function() { + $(this).find(".file-opt-box").show(); + }).on("mouseout", function() { + $(this).find(".file-opt-box").hide(); + }); + + G(".wra_pla").hide(); + G(".image-list-box").show(); + G(".filelist").append($image); + + o.todoList.push({index:i, file:tempFile}); + o.totalFilesize += tempFile.size; + + //console.log(tempFile); + } + o.addedFileNumber += files.length; + updateInfoText(o.uploadSuccessNum + o.todoList.length, o.totalFilesize); + + //缩放并裁剪图片 + $(".imgWrap img").imageCrop(113,113); + + } + + /** + * upload file function(文件上传主函数) + * @param node 数据节点 + */ + function uploadFile(node) { + + if ( !fileCheckHandler(node) ) { + uploadNextFile(); //skip the file and upload the next file + return; + } + + // prepare XMLHttpRequest + var xhr = new XMLHttpRequest(); + xhr.open('POST', options.upload_url); + //upload successfully + xhr.addEventListener('load',function(e) { + + if ( options.data_type == "json" ) { + //console.log(e); + var data = $.parseJSON(e.target.responseText); + if ( data.code == "000" ) { + o.selectedList.push(data.data.url); //添加文件到上传文件列表 + o.uploadSuccessNum++; + $("#img-comtainer-"+dialogSCode+ node.index).find(".file-opt-box").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress").remove(); + $("#img-comtainer-"+dialogSCode+ node.index).find(".success").show(); + } else { + __error__(codeMessageMap[data.code], node); + } + } + + }, false); + + // file upload complete + xhr.addEventListener('loadend', function () { + uploadNextFile(); //upload the next file + }, false); + + //上传失败 + xhr.addEventListener('error', function() { + __error__(options.lang.uploadFail, node); + }, false); + + xhr.upload.addEventListener('progress', function(e) { + updateProgress(e, node); + }, false); + + // prepare FormData + var formData = new FormData(); + formData.append(options.src, node.file); + xhr.send(formData); + + } + + //upload next file(上传下一个文件) + function uploadNextFile() { + + if ( o.todoList.length ) { + var nextFile = o.todoList.shift(); + uploadFile(nextFile); + } else { + o.uploadLock = false; //release the upload lock + G(".btn-start-upload").removeClass("disabled").text(options.lang.startUpload); + //console.log(o.selectedList); + } + } + + // progress handler(文件上传进度控制) + function updateProgress(e, node) { + if ( e.lengthComputable ) { + $("#img-comtainer-"+dialogSCode+ node.index).find(".progress span").css({"width" : (e.loaded/e.total)*100+'%', "display":"block"}); + } + } + + //update file info text + function updateInfoText(filenum, filesize) { + var text = KindEditor.tmpl(options.lang.uploadDesc, {numSelect:filenum, totalSize:formatFileSize(filesize), numLeft:(options.max_filenum - filenum)}); + G(".info").text(text); + } + + //format file size(格式化文件大小) + function formatFileSize(size) { + + if ( size/1048576 > 1 ) { + return (size/1048576).toFixed(2)+"MB"; + } else { + return (size/1024).toFixed(2)+"KB"; + } + + } + + //file check handler(文件检测处理函数) + function fileCheckHandler(node) { + + //检查文件大小 + var maxsize = options.max_filesize * 1024; + if ( maxsize > 0 && node.file.size > maxsize ) { + __error__(KindEditor.tmpl(options.lang.sizeLimit, {sizeLimit:options.max_filesize}), node); + return false; + } + + //检查文件后缀名 + var ext = getFileExt(node.file.name); + if ( ext && options.ext_allow.indexOf(ext) != -1 + && options.ext_refuse.indexOf(ext) == -1 ) { + return true; + } else { + __error__(KindEditor.tmpl(options.lang.invalidExt, {invalidExt:ext}), node); + return false; + } + + } + + //获取文件后缀名 + function getFileExt(filename) { + if ( !filename ) return false; + var position = filename.lastIndexOf('.') + if ( position != -1 ) { + return filename.substr(position+1).toLowerCase(); + } + return false; + } + + //获取可接受的文件后缀 + function getAccept() { + var extensions = options.ext_allow.split("|"); + var accept = []; + $.each(extensions, function(idx, item) { + accept.push(mimeType[item]); + }); + if ( accept.length > 1 ) { + return accept.uinque().join(","); + } + return "*"; + } + + //显示上传错误信息 + function __error__(message, node) { + G("#img-comtainer-"+dialogSCode+ node.index).find(".error").show().text(message); + } + + //query + function G(query) { + return o.dialog.find(query); + } + + //从服务器上获取图片地址 + function loadFilesFromServer() { + if ( !options.list_url ) { + G(".online .no-data").html('<span class="error">'+options.lang.noListUrl+'</span>').show(); + return false; + } + if ( o.noRecord ) return false; + + G(".loading-icon").show(); //显示加载图标 + $.get(options.list_url, { + page : o.page, + marker : o.marker, + fileType : options.fileType, + }, function(res) { + + G(".loading-icon").hide(); //隐藏加载图标 + if ( res.code == "000" ) { + + if (!res.data[0]) { //没有加载到数据 + G(".online .no-data").text(options.lang.noDataText).show(); + return; + } + o.marker = res.extra; //存储marker + o.page++; + appendFiles(res.data, "online"); + } else { + G(".online .no-data").text(options.lang.noDataText).show(); + o.noRecord = true; + } + + }, "json"); + } + + //追加元素到图片列表 + function appendFiles(data, module) { + + $.each(data, function(idx, item) { + + var builder = new StringBuilder(); + builder.append('<li>'); + var extension = getFileExt(item.thumbURL); + if ( extension == '' ) extension = "default"; + extension = extension.toLowerCase(); + //如果不是图片,则根据文件的后缀名去加载对应的缩略图 + var imgSize = item.width+'x'+item.height; //图片尺寸 + if ( "jpg|jpeg|gif|png|bmp".indexOf(extension) == -1 ) { + imgSize = formatFileSize(item.filesize); //如果是文件则显示文件大小 + builder.append('<span class="icon-placeholder icon-'+extension+'" data-src="'+item.oriURL+'"></span>'); + } else { + builder.append('<img src="'+item.thumbURL+'" data-src="'+item.oriURL+'" border="0">'); + } + + builder.append('<span class="ic" data-module="'+module+'"><em class="img-size">'+imgSize+'</em></span></li>'); + var $image = $(builder.toString()); + + //绑定选择图片事件 + $image.find(".ic").on("click", function() { + var src = $(this).prev().data("src"); + var module = $(this).data("module"); + if ( $(this).hasClass("selected") ) { + $(this).removeClass("selected"); + } else { + $(this).addClass("selected"); + o.selectedList.push(src); + } + //console.log(o.selectedList); + }); + //裁剪显示图片 + $image.find("img").imageCrop(113, 113); + if ( module == "online" ) { + G(".imagelist .list").append($image); + } else if ( module == "search" ) { + G(".search-imagelist-box .search-list").append($image); + } + }); + + } + + //initialize dialog + createDialog(); + bindEvent(); + return o; + }; //end of JUpload + + //string builder + var StringBuilder = function() { + + var buffer = new Array(); + StringBuilder.prototype.append = function(str) { + buffer.push(str); + } + + StringBuilder.prototype.toString = function () { + return buffer.join(""); + } + + } + + +})(jQuery); \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/multiimage/BUpload.min.js b/public/assets/addons/nkeditor/plugins/multiimage/BUpload.min.js new file mode 100644 index 0000000..182c6fa --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/BUpload.min.js @@ -0,0 +1,2 @@ +/* NKeditor 5.0.3 (2018-10-25), Copyright (C) r9it.com,*/ +!function(a){if(!window.applicationCache)throw new Error("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!");a.fn.imageCrop=function(b,c){a(this).on("load",function(){var d,e,f,g,h=this.width/this.height,i=b/c;h>=i?(e=c,d=b*h,g=0,f=(d-b)/2):(d=b,e=c/h,f=0,g=0),a(this).css({position:"absolute",top:-g+"px",left:-f+"px",width:d+"px",height:e+"px"})})},a.fn.draggable=function(b){var c={handler:null};b=a.extend(c,b);var d=this;a(b.handler).mousedown(function(b){var c=b.pageX-a(d).position().left,e=b.pageY-a(d).position().top;a(document).mousemove(function(b){window.getSelection?window.getSelection().removeAllRanges():document.selection.empty(),a(d).css({top:b.pageY-e+"px",left:b.pageX-c+"px"})})}).mouseup(function(){a(document).unbind("mousemove")})},void 0==Array.prototype.remove&&(Array.prototype.remove=function(a){for(var b=0;b<this.length;b++)if(this[b]==a){this.splice(b,1);break}}),void 0==Array.prototype.uinque&&(Array.prototype.uinque=function(){for(var a,b=[],c={},d=0;null!=(a=this[d]);d++)c[a]||(b.push(a),c[a]=!0);return b}),window.BUpload=function(c){function d(){var d=new b;d.append('<div class="uedbody ke-animated"><div class="ued_title">'),d.append('<div class="uedbar"><span>'+c.lang.title+'</span></div><div class="close_btn icon" title="'+c.lang.closeText+'"></div>'),d.append('</div><div class="wrapper"><div id="wra_head" class="wra_head"><span class="tab tab-upload focus" tab="upload-panel">'+c.lang.localUpload+"</span>"),null!=c.list_url&&d.append('<span class="tab tab-online" tab="online">'+c.lang.fileServer+"</span>"),d.append('</div><div class="wra_body"><div class="tab-panel upload-panel"><div class="wra_pla"><div class="upload-image-placeholder">'),d.append('<div class="btn btn-primary image-select">'+c.lang.selectFile+'</div><input type="file" name="'+c.src+'" class="webuploader-element-invisible" multiple="multiple" accept="'+n()+'">'),d.append('</div></div><div class="image-list-box" style="display: none;"><div class="wra_bar"><div class="info fl"></div>'),d.append('<div class="fr"><span class="btn btn-default btn-continue-add">'+c.lang.continueAdd+'</span><span class="btn btn-primary btn-start-upload">'+c.lang.startUpload+"</span></div></div>"),d.append('<ul class="filelist"></ul></div></div><div class="tab-panel online"><div class="imagelist"><ul class="list clearfix"></ul><div class="no-data"></div></div></div>'),d.append('<div class="tab-panel searchbox"><div class="search-bar"><input class="searTxt" type="text" placeholder="'+c.lang.searchPlaceholder+'" />'),d.append('<input value="'+c.lang.searchBtn+'" class="btn btn-primary btn-search" type="button" /><input value="'+c.lang.searchClear+'" class="btn btn-default btn-reset" type="button" />'),d.append('</div><div class="search-imagelist-box"><ul class="search-list"></ul><div class="no-data"></div></div>'),d.append('</div><div class="loading-icon"></div></div><!-- end of wrapper --></div><div class="wra-btn-group"><span class="btn btn-primary btn-confirm">'+c.lang.confirmBtnText+"</span>"),d.append('<span class="btn btn-default btn-cancel">'+c.lang.cancelBtnText+"</span></div></div>"),u.dialog=a(d.toString()),a("body").append(u.dialog),0==c.top&&(c.top=(a(window).height()-u.dialog.height())/2),u.dialog.css({left:(a(window).width()-u.dialog.width())/2+"px",top:c.top+"px"}),u.dialog.draggable({handler:u.dialog.find(".ued_title")})}function e(){p(".tab").on("click",function(){var b=a(this).attr("tab");p(".tab-panel").hide(),p("."+b).show(),p(".tab").removeClass("focus"),a(this).addClass("focus")}),p(".close_btn").on("click",function(){u.close()}),p(".webuploader-element-invisible").on("change",function(){f(this)}),p(".image-select").on("click",function(){p(".webuploader-element-invisible").trigger("click")}),p(".btn-continue-add").on("click",function(){p(".webuploader-element-invisible").trigger("click")}),p(".btn-start-upload").on("click",function(){if(!u.uploadLock){if(0==u.todoList.length)return c.errorHandler(c.lang.noFileAdded,"error"),!1;a(this).addClass("disabled").text(c.lang.uploading),g(u.todoList.shift())}}),p(".btn-confirm").on("click",function(){return u.todoList.length>0?(c.errorHandler(c.lang.fileNotUpload,"error"),!1):0==u.selectedList.length?(c.errorHandler(c.lang.noFileSelected,"error"),!1):(c.callback(u.selectedList),void u.close())}),p(".btn-cancel").on("click",function(){u.close()}),p(".tab-online").on("click",function(){0==p(".imagelist .list").children().length&&q()}),p(".imagelist").on("scroll",function(){this.scrollTop+this.clientHeight>=this.scrollHeight&&q()})}function f(d){for(var e=d.files,f=u.todoList.length+u.uploadSuccessNum+e.length,g=u.addedFileNumber;g<u.addedFileNumber+e.length;g++){if(f>c.max_filenum)return void c.errorHandler(KindEditor.tmpl(c.lang.uploadLimit,{uploadLimit:c.max_filenum}),"error");var h=new b,i=e[g-u.addedFileNumber];h.append('<li id="img-comtainer-'+v+g+'"><div class="imgWrap">');var k=m(i.name);""==k&&(k="default"),k=k.toLowerCase(),-1=="jpg|jpeg|gif|png|bmp".indexOf(k)?h.append('<span class="icon-placeholder icon-default icon-'+k+'"></span>'):h.append('<img src="'+window.URL.createObjectURL(i)+'" border="0" />'),h.append('</div><div class="file-opt-box clearfix"><span class="remove" index="'+g+'">'+c.lang.remove+'</span><span class="rotateRight">'+c.lang.rotateRight+"</span>"),h.append('<span class="rotateLeft">'+c.lang.rotateLeft+'</span></div><div class="success"></div><div class="error"></div>'),h.append('<div class="progress"><span style="display: none; width: 0px;"></span></div></li>');var l=a(h.toString());l.find(".remove").on("click",function(){a(this).parents("li").remove();for(var b=a(this).attr("index"),c=0;c<u.todoList.length;c++)if(u.todoList[c].index==b){u.totalFilesize-=u.todoList[c].file.size,j(u.uploadSuccessNum+u.todoList.length-1,u.totalFilesize),u.todoList.splice(c,1);break}0==p(".filelist li").length&&(p(".image-list-box").hide(),p(".wra_pla").show())}),l.on("mouseover",function(){a(this).find(".file-opt-box").show()}).on("mouseout",function(){a(this).find(".file-opt-box").hide()}),p(".wra_pla").hide(),p(".image-list-box").show(),p(".filelist").append(l),u.todoList.push({index:g,file:i}),u.totalFilesize+=i.size}u.addedFileNumber+=e.length,j(u.uploadSuccessNum+u.todoList.length,u.totalFilesize),a(".imgWrap img").imageCrop(113,113)}function g(b){if(!l(b))return void h();var d=new XMLHttpRequest;d.open("POST",c.upload_url),d.addEventListener("load",function(d){if("json"==c.data_type){var e=a.parseJSON(d.target.responseText);"000"==e.code?(u.selectedList.push(e.data.url),u.uploadSuccessNum++,a("#img-comtainer-"+v+b.index).find(".file-opt-box").remove(),a("#img-comtainer-"+v+b.index).find(".progress").remove(),a("#img-comtainer-"+v+b.index).find(".success").show()):o(s[e.code],b)}},!1),d.addEventListener("loadend",function(){h()},!1),d.addEventListener("error",function(){o(c.lang.uploadFail,b)},!1),d.upload.addEventListener("progress",function(a){i(a,b)},!1);var e=new FormData;e.append(c.src,b.file),d.send(e)}function h(){if(u.todoList.length){var a=u.todoList.shift();g(a)}else u.uploadLock=!1,p(".btn-start-upload").removeClass("disabled").text(c.lang.startUpload)}function i(b,c){b.lengthComputable&&a("#img-comtainer-"+v+c.index).find(".progress span").css({width:b.loaded/b.total*100+"%",display:"block"})}function j(a,b){var d=KindEditor.tmpl(c.lang.uploadDesc,{numSelect:a,totalSize:k(b),numLeft:c.max_filenum-a});p(".info").text(d)}function k(a){return a/1048576>1?(a/1048576).toFixed(2)+"MB":(a/1024).toFixed(2)+"KB"}function l(a){var b=1024*c.max_filesize;if(b>0&&a.file.size>b)return o(KindEditor.tmpl(c.lang.sizeLimit,{sizeLimit:c.max_filesize}),a),!1;var d=m(a.file.name);return d&&-1!=c.ext_allow.indexOf(d)&&-1==c.ext_refuse.indexOf(d)?!0:(o(KindEditor.tmpl(c.lang.invalidExt,{invalidExt:d}),a),!1)}function m(a){if(!a)return!1;var b=a.lastIndexOf(".");return-1!=b?a.substr(b+1).toLowerCase():!1}function n(){var b=c.ext_allow.split("|"),d=[];return a.each(b,function(a,b){d.push(t[b])}),d.length>1?d.uinque().join(","):"*"}function o(a,b){p("#img-comtainer-"+v+b.index).find(".error").show().text(a)}function p(a){return u.dialog.find(a)}function q(){return c.list_url?u.noRecord?!1:(p(".loading-icon").show(),void a.get(c.list_url,{page:u.page,marker:u.marker,fileType:c.fileType},function(a){if(p(".loading-icon").hide(),"000"==a.code){if(!a.data[0])return void p(".online .no-data").text(c.lang.noDataText).show();u.marker=a.extra,u.page++,r(a.data,"online")}else p(".online .no-data").text(c.lang.noDataText).show(),u.noRecord=!0},"json")):(p(".online .no-data").html('<span class="error">'+c.lang.noListUrl+"</span>").show(),!1)}function r(c,d){a.each(c,function(c,e){var f=new b;f.append("<li>");var g=m(e.thumbURL);""==g&&(g="default"),g=g.toLowerCase();var h=e.width+"x"+e.height;-1=="jpg|jpeg|gif|png|bmp".indexOf(g)?(h=k(e.filesize),f.append('<span class="icon-placeholder icon-'+g+'" data-src="'+e.oriURL+'"></span>')):f.append('<img src="'+e.thumbURL+'" data-src="'+e.oriURL+'" border="0">'),f.append('<span class="ic" data-module="'+d+'"><em class="img-size">'+h+"</em></span></li>");var i=a(f.toString());i.find(".ic").on("click",function(){var b=a(this).prev().data("src");a(this).data("module");a(this).hasClass("selected")?a(this).removeClass("selected"):(a(this).addClass("selected"),u.selectedList.push(b))}),i.find("img").imageCrop(113,113),"online"==d?p(".imagelist .list").append(i):"search"==d&&p(".search-imagelist-box .search-list").append(i)})}c=a.extend({src:"src",upload_url:null,list_url:null,data_type:"json",top:20,fileType:"image",max_filesize:2048,max_filenum:20,no_data_text:"(⊙o⊙)亲,没有多数据了。",ext_allow:"jpg|png|gif|jpeg",ext_refuse:"exe|txt",errorHandler:function(a,b){alert(a)},callback:function(a){console.log(a)}},c);var s={"000":"文件上传成功","001":"文件上传失败","003":"文件大小超出限制","004":"非法文件名后缀"},t={"3gpp":"audio/3gpp, video/3gpp",ac3:"audio/ac3",asf:"allpication/vnd.ms-asf",au:"audio/basic",css:"text/css",csv:"text/csv",doc:"application/msword",dot:"application/msword",dtd:"application/xml-dtd",dwg:"image/vnd.dwg",dxf:"image/vnd.dxf",gif:"image/gif",htm:"text/html",html:"text/html",jp2:"image/jp2",jpe:"image/jpeg",jpeg:"image/jpeg",jpg:"image/jpeg",js:"text/javascript, application/javascript",json:"application/json",mp2:"audio/mpeg, video/mpeg",mp3:"audio/mpeg",mp4:"audio/mp4, video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",mpp:"application/vnd.ms-project",ogg:"application/ogg, audio/ogg",pdf:"application/pdf",png:"image/png",pot:"application/vnd.ms-powerpoint",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",rtf:"application/rtf, text/rtf",svf:"image/vnd.svf",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wdb:"application/vnd.ms-works",wps:"application/vnd.ms-works",xhtml:"application/xhtml+xml",xlc:"application/vnd.ms-excel",xlm:"application/vnd.ms-excel",xls:"application/vnd.ms-excel",xlt:"application/vnd.ms-excel",xlw:"application/vnd.ms-excel",xml:"text/xml, application/xml",zip:"aplication/zip",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},u={};u.dialog=null,u.todoList=new Array,u.uploadSuccessNum=0,u.selectedList=new Array,u.addedFileNumber=0,u.totalFilesize=0,u.uploadLock=!1,u.page=1,u.marker=null,u.noRecord=!1;var v=Math.ceil(1e12*Math.random());return u.close=function(){u.dialog.remove(),"function"==typeof c.close&&c.close()},d(),e(),u};var b=function(){var a=new Array;b.prototype.append=function(b){a.push(b)},b.prototype.toString=function(){return a.join("")}}}(jQuery); \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/aep.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/aep.png new file mode 100644 index 0000000..1ae4e95 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/aep.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/asp.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/asp.png new file mode 100644 index 0000000..a4fb174 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/asp.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/avi.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/avi.png new file mode 100644 index 0000000..f358993 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/avi.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/c.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/c.png new file mode 100644 index 0000000..bdc1f78 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/c.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/conf.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/conf.png new file mode 100644 index 0000000..ac9cf49 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/conf.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/css.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/css.png new file mode 100644 index 0000000..5475124 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/css.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/default.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/default.png new file mode 100644 index 0000000..946d095 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/default.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/doc.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/doc.png new file mode 100644 index 0000000..6b827c6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/doc.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eml.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eml.png new file mode 100644 index 0000000..8edc065 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eml.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eps.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eps.png new file mode 100644 index 0000000..0e6fb79 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/eps.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/fla.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/fla.png new file mode 100644 index 0000000..767c56c Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/fla.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/htm.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/htm.png new file mode 100644 index 0000000..9cc5171 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/htm.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/idn.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/idn.png new file mode 100644 index 0000000..3c83e99 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/idn.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ini.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ini.png new file mode 100644 index 0000000..0449595 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ini.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/java.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/java.png new file mode 100644 index 0000000..cbd350a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/java.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/js.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/js.png new file mode 100644 index 0000000..f65b15d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/js.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/jsf.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/jsf.png new file mode 100644 index 0000000..e551416 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/jsf.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/markdown.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/markdown.png new file mode 100644 index 0000000..57e0870 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/markdown.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mdb.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mdb.png new file mode 100644 index 0000000..56f037c Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mdb.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/midi.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/midi.png new file mode 100644 index 0000000..7ff836a Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/midi.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mov.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mov.png new file mode 100644 index 0000000..8b5b776 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mov.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mp3.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mp3.png new file mode 100644 index 0000000..11f13ad Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mp3.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mpeg.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mpeg.png new file mode 100644 index 0000000..eccb9fc Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/mpeg.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pdf.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pdf.png new file mode 100644 index 0000000..ca81a58 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pdf.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/php.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/php.png new file mode 100644 index 0000000..8c4a2c2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/php.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ppt.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ppt.png new file mode 100644 index 0000000..4b15ad6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/ppt.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/psd.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/psd.png new file mode 100644 index 0000000..a5f49e2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/psd.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pst.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pst.png new file mode 100644 index 0000000..fbe7fe5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pst.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pub.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pub.png new file mode 100644 index 0000000..71a92c1 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/pub.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/py.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/py.png new file mode 100644 index 0000000..8e2f6e2 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/py.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rb.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rb.png new file mode 100644 index 0000000..5956ee7 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rb.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rmvb.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rmvb.png new file mode 100644 index 0000000..eccb9fc Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/rmvb.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/scss.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/scss.png new file mode 100644 index 0000000..e043f36 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/scss.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/sql.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/sql.png new file mode 100644 index 0000000..0023d84 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/sql.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/tif.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/tif.png new file mode 100644 index 0000000..04e77a4 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/tif.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/txt.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/txt.png new file mode 100644 index 0000000..876352b Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/txt.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/vsd.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/vsd.png new file mode 100644 index 0000000..c248eb3 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/vsd.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wav.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wav.png new file mode 100644 index 0000000..c6ec2f6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wav.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wma.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wma.png new file mode 100644 index 0000000..68316b5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wma.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wmv.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wmv.png new file mode 100644 index 0000000..194ac20 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/wmv.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xls.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xls.png new file mode 100644 index 0000000..b9eada4 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xls.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xml.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xml.png new file mode 100644 index 0000000..805f307 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/xml.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/icons/zip.png b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/zip.png new file mode 100644 index 0000000..6f0a434 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/icons/zip.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/dialog-title-bg.png b/public/assets/addons/nkeditor/plugins/multiimage/css/images/dialog-title-bg.png new file mode 100644 index 0000000..f744f26 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/dialog-title-bg.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons-all.gif b/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons-all.gif new file mode 100644 index 0000000..21915e5 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons-all.gif differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons.png b/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons.png new file mode 100644 index 0000000..12e4700 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/icons.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/image.png b/public/assets/addons/nkeditor/plugins/multiimage/css/images/image.png new file mode 100644 index 0000000..19699f6 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/image.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/loader.gif b/public/assets/addons/nkeditor/plugins/multiimage/css/images/loader.gif new file mode 100644 index 0000000..5bb90fd Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/loader.gif differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/progress.png b/public/assets/addons/nkeditor/plugins/multiimage/css/images/progress.png new file mode 100644 index 0000000..717c486 Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/progress.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/images/success.png b/public/assets/addons/nkeditor/plugins/multiimage/css/images/success.png new file mode 100644 index 0000000..94f968d Binary files /dev/null and b/public/assets/addons/nkeditor/plugins/multiimage/css/images/success.png differ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css new file mode 100644 index 0000000..cff67e2 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css @@ -0,0 +1,552 @@ +@charset "UTF-8"; +.uedbody { + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + width: 652px; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: 811213; + font-family: "微软雅黑"; + font-size: 12px; + margin: 0px auto; } + .uedbody div, .uedbody dl, .uedbody dt, .uedbody dd, .uedbody ul, .uedbody li, .uedbody ol, .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6, .uedbody pre, .uedbody code, .uedbody form, .uedbody fieldset, .uedbody legend, .uedbody button, .uedbody textarea, .uedbody blockquote, .uedbody p { + margin: 0; + padding: 0; } + .uedbody h1, .uedbody h2, .uedbody h3, .uedbody h4, .uedbody h5, .uedbody h6 { + font-weight: normal; } + .uedbody li { + list-style-type: none; } + .uedbody ol, .uedbody ul, .uedbody dl { + list-style: none; } + .uedbody em { + font-style: normal; } + .uedbody img { + border: none; + vertical-align: middle; } + .uedbody select, .uedbody label, .uedbody input { + vertical-align: middle; + padding: 0; + margin: 0; + outline: medium; + font-size: 12px; } + .uedbody textarea { + resize: none; + line-height: 18px; } + .uedbody table { + border-collapse: collapse; + border-spacing: 0; + empty-cell: show; } + .uedbody a { + text-decoration: none; + color: #333; + outline: none; + cursor: pointer; } + .uedbody a:hover { + cursor: pointer; + blr: expression(this.onFocus=this.blur()); } + .uedbody * { + padding: 0; + margin: 0; + box-sizing: content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; } + .uedbody .clearfix:before, .uedbody .clearfix:after { + content: ""; + display: table; } + .uedbody .clearfix:after { + clear: both; } + .uedbody .clearfix { + *zoom: 1; } + .uedbody .fr { + float: right; } + .uedbody .fl { + float: left; } + .uedbody .ued_title { + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; } + .uedbody .ued_title .icon { + background: url("images/icons-all.gif") no-repeat center; } + .uedbody .ued_title .uedbar span { + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; } + .uedbody .ued_title .close_btn { + height: 20px; + width: 20px; + cursor: pointer; + background-position: 0px -59px; + position: absolute; + right: 5px; + top: 3px; } + .uedbody .ued_title .close_btn:hover { + background-position: 0px -89px; } + .uedbody .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: 14px; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; } + .uedbody .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; } + .uedbody .btn-default:hover { + background: #f0f0f0; } + .uedbody .btn-primary { + background: #00b7ee; + color: #ffffff; } + .uedbody .btn-primary:hover { + background: #00a2d4; } + .uedbody .btn.disabled { + cursor: not-allowed; + opacity: .65; } + .uedbody .btn.disabled:hover { + background: #00b7ee; } + .uedbody .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; } + .uedbody .wrapper .wra_head span { + float: left; + padding: 0px 5px; + margin-right: 3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_head span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; } + .uedbody .wrapper .wra_body { + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla { + zoom: 1; + overflow: hidden; + text-align: center; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible { + opacity: 0; + width: 0; + height: 0; } + .uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select { + padding: 10px 30px; + cursor: pointer; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info { + font-size: 14px; + color: #666; + margin-top: 6px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn { + padding: 6px 15px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist { + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap { + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box { + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + 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; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove { + background-position: -48px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover { + background-position: -48px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight { + display: none; + background-position: -24px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover { + background-position: -24px -0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft { + display: none; + background-position: 0px -24px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover { + background-position: 0px 0px; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success { + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding: 5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; } + .uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span { + 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); } + .uedbody .wrapper .wra_body .online { + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; } + .uedbody .wrapper .wra_body .online .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .online .imagelist .list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .online .imagelist .list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; + overflow: hidden; + display: none; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searTxt { + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: 14px; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; } + .uedbody .wrapper .wra_body .searchbox .search-bar .searchRese { + color: #333; + border-color: #CCC; + background-color: #FFF; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top: 10px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list { + zoom: 1; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img { + cursor: pointer; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size { + font-size: 12px; + padding: 5px; + background: rgba(0, 0, 0, 0.6); + display: none; + color: #ffffff; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size { + display: inline-block; + width: 97px; } + .uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected { + background: url("images/success.png") no-repeat 75px 75px; } + .uedbody .wrapper .wra_body .no-data { + line-height: 40px; + height: 40px; + font-size: 14px; + color: #999999; + text-align: center; + display: none; } + .uedbody .wrapper .wra_body .no-data .error { + color: #cc0000; } + .uedbody .wrapper .wra_body .loading-icon { + background: rgba(0, 0, 0, 0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top: 0; + left: 0; + display: none; + text-align: center; } + .uedbody .wrapper .wra_body .loading-icon .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left: 253px; } + .uedbody .wrapper .wra_body .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; } + .uedbody .wrapper .wra_body .icon-aep, .uedbody .wrapper .wra_body .icon-aepx { + background-image: url("icons/aep.png"); } + .uedbody .wrapper .wra_body .icon-asp { + background-image: url("icons/asp.png"); } + .uedbody .wrapper .wra_body .icon-avi { + background-image: url("icons/avi.png"); } + .uedbody .wrapper .wra_body .icon-c, .uedbody .wrapper .wra_body .icon-cpp { + background-image: url("icons/c.png"); } + .uedbody .wrapper .wra_body .icon-conf { + background-image: url("icons/conf.png"); } + .uedbody .wrapper .wra_body .icon-css { + background-image: url("icons/css.png"); } + .uedbody .wrapper .wra_body .icon-htm, .uedbody .wrapper .wra_body .icon-html { + background-image: url("icons/htm.png"); } + .uedbody .wrapper .wra_body .icon-default { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-doc, .uedbody .wrapper .wra_body .icon-docx { + background-image: url("icons/doc.png"); } + .uedbody .wrapper .wra_body .icon-eps { + background-image: url("icons/eps.png"); } + .uedbody .wrapper .wra_body .icon-fla, .uedbody .wrapper .wra_body .icon-swf { + background-image: url("icons/fla.png"); } + .uedbody .wrapper .wra_body .icon-idn { + background-image: url("icons/idn.png"); } + .uedbody .wrapper .wra_body .icon-ini { + background-image: url("icons/ini.png"); } + .uedbody .wrapper .wra_body .icon-java, .uedbody .wrapper .wra_body .icon-jar, .uedbody .wrapper .wra_body .icon-war { + background-image: url("icons/java.png"); } + .uedbody .wrapper .wra_body .icon-js { + background-image: url("icons/js.png"); } + .uedbody .wrapper .wra_body .icon-jsf { + background-image: url("icons/jsf.png"); } + .uedbody .wrapper .wra_body .icon-md, .uedbody .wrapper .wra_body .icon-markdown { + background-image: url("icons/markdown.png"); } + .uedbody .wrapper .wra_body .icon-mdb { + background-image: url("icons/mdb.png"); } + .uedbody .wrapper .wra_body .icon-midi { + background-image: url("icons/midi.png"); } + .uedbody .wrapper .wra_body .icon-mov { + background-image: url("icons/mov.png"); } + .uedbody .wrapper .wra_body .icon-mp3 { + background-image: url("icons/mp3.png"); } + .uedbody .wrapper .wra_body .icon-mpeg { + background-image: url("icons/mpeg.png"); } + .uedbody .wrapper .wra_body .icon-pdf { + background-image: url("icons/pdf.png"); } + .uedbody .wrapper .wra_body .icon-php { + background-image: url("icons/php.png"); } + .uedbody .wrapper .wra_body .icon-ppt, .uedbody .wrapper .wra_body .icon-pptx { + background-image: url("icons/ppt.png"); } + .uedbody .wrapper .wra_body .icon-psd { + background-image: url("icons/psd.png"); } + .uedbody .wrapper .wra_body .icon-pst { + background-image: url("icons/pst.png"); } + .uedbody .wrapper .wra_body .icon-pub { + background-image: url("icons/pub.png"); } + .uedbody .wrapper .wra_body .icon-py { + background-image: url("icons/py.png"); } + .uedbody .wrapper .wra_body .icon-rb { + background-image: url("icons/rb.png"); } + .uedbody .wrapper .wra_body .icon-rm, .uedbody .wrapper .wra_body .icon-rmvb { + background-image: url("icons/rmvb.png"); } + .uedbody .wrapper .wra_body .icon-scss { + background-image: url("icons/scss.png"); } + .uedbody .wrapper .wra_body .icon-tif { + background-image: url("icons/tif.png"); } + .uedbody .wrapper .wra_body .icon-txt { + background-image: url("icons/txt.png"); } + .uedbody .wrapper .wra_body .icon-vsd { + background-image: url("icons/vsd.png"); } + .uedbody .wrapper .wra_body .icon-wav { + background-image: url("icons/wav.png"); } + .uedbody .wrapper .wra_body .icon-wma { + background-image: url("icons/wma.png"); } + .uedbody .wrapper .wra_body .icon-wmv { + background-image: url("icons/wmv.png"); } + .uedbody .wrapper .wra_body .icon-xls, .uedbody .wrapper .wra_body .icon-xlsx { + background-image: url("icons/xls.png"); } + .uedbody .wrapper .wra_body .icon-xml { + background-image: url("icons/xml.png"); } + .uedbody .wrapper .wra_body .icon-zip, .uedbody .wrapper .wra_body .icon-rar, .uedbody .wrapper .wra_body .icon-tgz, .uedbody .wrapper .wra_body .icon-gz, .uedbody .wrapper .wra_body .icon-tar, .uedbody .wrapper .wra_body .icon-7z { + background-image: url("icons/zip.png"); } + .uedbody .wrapper .wra_body_server { + height: 380px; } + .uedbody .wrapper .wra_body_server .online { + display: block !important; + height: 365px; } + .uedbody .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; } + .uedbody .wra-btn-group .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; } + +/*# sourceMappingURL=upload.css.map */ diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css.map b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css.map new file mode 100644 index 0000000..b7e49d4 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAGA,QAAQ;EAaP,UAAU,EAAG,sBAAsB;EACnC,kBAAkB,EAAE,sBAAsB;EAC1C,eAAe,EAAE,sBAAsB;EAsBvC,KAAK,EAxCO,KAAK;EAyCjB,QAAQ,EAAE,KAAK;EACf,OAAO,EAAE,eAAe;EACxB,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,4BAA4B;EACpC,aAAa,EAAE,GAAG;EAClB,UAAU,EAAE,+BAA+B;EAC3C,OAAO,EA9CM,MAAM;EA+CnB,WAAW,EAAC,MAAM;EAClB,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,QAAQ;EA9ChB,6TAAqH;IAAC,MAAM,EAAC,CAAC;IAAE,OAAO,EAAC,CAAC;EACzI,4EAAkB;IAAC,WAAW,EAAC,MAAM;EACrC,WAAE;IAAC,eAAe,EAAC,IAAI;EACvB,qCAAQ;IAAC,UAAU,EAAC,IAAI;EACxB,WAAE;IAAC,UAAU,EAAC,MAAM;EACpB,YAAG;IAAC,MAAM,EAAC,IAAI;IAAC,cAAc,EAAC,MAAM;EACrC,+CAAkB;IAAC,cAAc,EAAC,MAAM;IAAE,OAAO,EAAC,CAAC;IAAE,MAAM,EAAC,CAAC;IAAC,OAAO,EAAC,MAAM;IAAC,SAAS,EAAC,IAAI;EAC3F,iBAAQ;IAAC,MAAM,EAAE,IAAI;IAAE,WAAW,EAAC,IAAI;EACvC,cAAM;IAAE,eAAe,EAAE,QAAQ;IAAE,cAAc,EAAE,CAAC;IAAE,UAAU,EAAC,IAAI;EACrE,UAAC;IAAC,eAAe,EAAC,IAAI;IAAC,KAAK,EAAC,IAAI;IAAC,OAAO,EAAC,IAAI;IAAE,MAAM,EAAC,OAAO;EAC9D,gBAAO;IAAC,MAAM,EAAC,OAAO;IAAC,GAAG,EAAC,oCAAoC;EAM/D,UAAE;IACD,OAAO,EAAE,CAAC;IAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAG,sBAAsB;IACnC,kBAAkB,EAAE,sBAAsB;IAC1C,eAAe,EAAE,sBAAsB;EAGxC,mDAAkC;IACjC,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,KAAK;EAEf,wBAAe;IACd,KAAK,EAAE,IAAI;EAEZ,kBAAS;IACR,KAAK,EAAE,CAAC;EAET,YAAG;IAAC,KAAK,EAAE,KAAK;EAChB,YAAG;IAAC,KAAK,EAAE,IAAI;EAef,mBAAU;IACT,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,mEAAmE;IAC/E,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAEZ,yBAAK;MAAC,UAAU,EAAE,4CAA4C;IAG7D,gCAAI;MACH,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE,IAAI;MACf,KAAK,EAAE,IAAI;MACX,WAAW,EAAE,IAAI;MACjB,YAAY,EAAE,GAAG;IAInB,8BAAU;MACT,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;MACf,mBAAmB,EAAE,SAAS;MAC9B,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MAER,oCAAO;QAAC,mBAAmB,EAAE,SAAS;EAMxC,aAAK;IACJ,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,GAAG;IACjB,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,GAAG;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,qBAAqB;IAC7B,WAAW,EAAE,MAAM;IACnB,SAAS,EA/FD,IAAI;IAgGZ,aAAa,EAAE,GAAG;IAClB,gBAAgB,EAAE,IAAI;IACtB,UAAU,EAAE,4BAA4B;IACxC,OAAO,EAAE,QAAQ;EAElB,qBAAa;IACZ,MAAM,EAAE,iBAAiB;IACzB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,OAAO;IACnB,2BAAQ;MACP,UAAU,EAAE,OAAO;EAGrB,qBAAa;IACZ,UAAU,EAAC,OAAO;IAClB,KAAK,EAAE,OAAO;IACd,2BAAQ;MACP,UAAU,EAAE,OAAO;EAGrB,sBAAc;IACb,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,GAAG;IACZ,4BAAQ;MACP,UAAU,EAAE,OAAO;EAKrB,iBAAS;IACR,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,QAAQ;IAClB,WAAW,EAAE,UAAU;IAItB,gCAAK;MACJ,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,OAAO;MAChB,YAAY,EAAC,GAAG;MAChB,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,cAAc;MACtB,UAAU,EAAE,mEAAmE;MAC/E,UAAU,EAAE,MAAM;MAClB,WAAW,EAAE,IAAI;MACjB,MAAM,EAAE,OAAO;MACf,QAAQ,EAAE,QAAQ;IAEnB,sCAAW;MACV,MAAM,EAAE,IAAI;MACZ,aAAa,EAAE,WAAW;MAC1B,UAAU,EAAE,6BAA6B;MACzC,QAAQ,EAAE,QAAQ;MAClB,OAAO,EAAE,CAAC;IAKZ,2BAAS;MAER,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,KAAK;MACb,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,QAAQ;MAChB,MAAM,EAAE,cAAc;MACtB,OAAO,EAAE,KAAK;MACd,IAAI,EAAE,IAAI;MACV,QAAQ,EAAE,MAAM;MAChB,GAAG,EAAE,IAAI;MACT,QAAQ,EAAE,QAAQ;MAIjB,kDAAS;QACR,IAAI,EAAE,CAAC;QAAE,QAAQ,EAAE,MAAM;QACzB,UAAU,EAAE,MAAM;QAElB,4EAA0B;UACzB,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,kBAAkB;UAC1B,MAAM,EAAE,KAAK;UACb,WAAW,EAAE,KAAK;UAClB,UAAU,EAAE,MAAM;UAClB,UAAU,EAAE,6CAA6C;UACzD,QAAQ,EAAE,QAAQ;UAClB,GAAG,EAAE,CAAC;UAEN,2GAA+B;YAK9B,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,CAAC;YAAE,MAAM,EAAE,CAAC;UAGpB,0FAAc;YACb,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,OAAO;MAOjB,kEAAS;QACR,aAAa,EAAE,iBAAiB;QAChC,OAAO,EAAE,GAAG;QACZ,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,QAAQ;QAClB,IAAI,EAAE,CAAC;QAAG,QAAQ,EAAE,MAAM;QAE1B,wEAAK;UACJ,SAAS,EApNN,IAAI;UAqNP,KAAK,EAAE,IAAI;UACX,UAAU,EAAE,GAAG;QAIf,2EAAK;UAAC,OAAO,EAAE,QAAQ;MAMzB,mEAAS;QACR,UAAU,EAAE,iBAAiB;QAC7B,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QACZ,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,KAAK;QAEb,sEAAG;UACF,KAAK,EAAE,KAAK;UACZ,MAAM,EAAE,KAAK;UACb,MAAM,EAAE,eAAe;UACvB,QAAQ,EAAE,QAAQ;UAClB,OAAO,EAAE,KAAK;UACd,KAAK,EAAE,IAAI;UACX,QAAQ,EAAE,MAAM;UAChB,SAAS,EAAE,IAAI;UAEf,+EAAQ;YACP,QAAQ,EAAE,QAAQ;YAClB,cAAc,EAAE,MAAM;YACtB,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK;YACb,gBAAgB,EAAE,WAAW;YAC7B,UAAU,EAAE,qBAAqB;UAKlC,oFAAa;YACZ,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,2CAA2C;YACvD,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,GAAG;YACR,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,MAAM;YAEhB,yFAAK;cACJ,KAAK,EAAE,IAAI;cACX,MAAM,EAAE,IAAI;cACZ,OAAO,EAAE,MAAM;cACf,KAAK,EAAE,KAAK;cACZ,WAAW,EAAE,OAAO;cACpB,QAAQ,EAAE,MAAM;cAChB,UAAU,EAAE,iCAAiC;cAC7C,MAAM,EAAE,WAAW;cACnB,MAAM,EAAE,OAAO;cACf,2BAA2B,EAAE,gBAAa;cAC1C,mBAAmB,EAAE,IAAI;cACzB,gBAAgB,EAAE,IAAI;cACtB,eAAe,EAAE,IAAI;cACrB,WAAW,EAAE,IAAI;YAGlB,4FAAO;cACN,mBAAmB,EAAE,WAAW;cAChC,kGAAO;gBACN,mBAAmB,EAAE,UAAU;YAGjC,iGAAY;cACX,OAAO,EAAE,IAAI;cACb,mBAAmB,EAAE,WAAW;cAChC,uGAAO;gBACN,mBAAmB,EAAE,UAAU;YAGjC,gGAAW;cACV,OAAO,EAAE,IAAI;cACb,mBAAmB,EAAE,SAAS;cAC9B,sGAAO;gBACN,mBAAmB,EAAE,OAAO;UAK/B,+EAAQ;YACP,UAAU,EAAE,yCAAyC;YACrD,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,IAAI;UAGZ,6EAAO;YACN,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,iDAAiD;YAC7D,IAAI,EAAE,CAAC;YACP,OAAO,EAAC,OAAO;YACf,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,CAAC;UAGV,gFAAU;YACT,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,CAAC;YACT,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,CAAC;YACT,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAAE,KAAK;YAEzB,qFAAK;cACJ,KAAK,EAAE,CAAC;cACR,MAAM,EAAE,IAAI;cACZ,UAAU,EAAE,2CAA2C;cACvD,iBAAiB,EAAE,kBAAkB;cACrC,eAAe,EAAE,kBAAkB;cACnC,aAAa,EAAE,kBAAkB;cACjC,cAAc,EAAE,kBAAkB;cAClC,UAAU,EAAE,kBAAkB;cAC9B,iBAAiB,EAAE,+BAA+B;cAClD,cAAc,EAAE,+BAA+B;cAC/C,YAAY,EAAE,+BAA+B;cAC7C,aAAa,EAAE,+BAA+B;cAC9C,SAAS,EAAE,+BAA+B;cAC1C,iBAAiB,EAAE,aAAa;MAWtC,mCAAO;QACN,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,IAAI;QAEb,8CAAW;UACV,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,UAAU,EAAE,MAAM;UAClB,UAAU,EAAE,IAAI;UAChB,QAAQ,EAAE,QAAQ;UAGjB,uDAAG;YACF,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,iBAAiB;YAC7B,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,eAAe;YACvB,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,QAAQ;YAElB,2DAAG;cAAC,MAAM,EAAE,OAAO;YAEnB,+DAAQ;cACP,QAAQ,EAAE,QAAQ;cAClB,GAAG,EAAE,GAAG;cACR,IAAI,EAAE,GAAG;cACT,MAAM,EAAE,OAAO;cACf,KAAK,EAAE,KAAK;cACZ,MAAM,EAAE,KAAK;cAEb,yEAAU;gBACT,SAAS,EAAC,IAAI;gBACd,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAC,kBAAe;gBAC1B,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,OAAO;cAGf,qEAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;gBACb,MAAM,EAAE,iBAAiB;gBACzB,mBAAmB,EAAE,SAAS;gBAC9B,+EAAU;kBACT,OAAO,EAAE,YAAY;kBACrB,KAAK,EAAE,IAAI;YAKd,qEAAc;cACb,UAAU,EAAE,6CAA6C;MAU9D,sCAAW;QACV,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,CAAC;QAAE,QAAQ,EAAE,MAAM;QACzB,OAAO,EAAE,IAAI;QAKZ,2DAAQ;UACP,WAAW,EAAE,GAAG;UAChB,UAAU,EAAE,6BAA6B;UACzC,KAAK,EAAE,KAAK;UACZ,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UACjB,OAAO,EAAE,OAAO;UAChB,SAAS,EAjcL,IAAI;UAkcR,WAAW,EAAE,OAAO;UACpB,MAAM,EAAE,cAAc;UACtB,aAAa,EAAE,GAAG;UAClB,UAAU,EAAE,sCAAsC;UAClD,UAAU,EAAE,kEAAkE;UAC9E,YAAY,EAAC,IAAI;QAGlB,6DAAW;UACV,KAAK,EAAE,IAAI;UACX,YAAY,EAAE,OAAO;UACrB,gBAAgB,EAAE,OAAO;QAE1B,8DAAW;UACV,KAAK,EAAE,IAAI;UACX,YAAY,EAAE,IAAI;UAClB,gBAAgB,EAAE,IAAI;QAIxB,4DAAsB;UACrB,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,KAAK;UACb,UAAU,EAAE,MAAM;UAClB,UAAU,EAAE,IAAI;UAChB,QAAQ,EAAE,QAAQ;UAClB,UAAU,EAAC,IAAI;UAEf,yEAAa;YACZ,IAAI,EAAC,CAAC;YAAE,QAAQ,EAAE,MAAM;YACxB,4EAAG;cACF,KAAK,EAAE,IAAI;cACX,OAAO,EAAE,KAAK;cACd,UAAU,EAAE,iBAAiB;cAC7B,OAAO,EAAE,GAAG;cACZ,KAAK,EAAE,KAAK;cACZ,MAAM,EAAE,KAAK;cACb,MAAM,EAAE,eAAe;cACvB,gBAAgB,EAAE,IAAI;cACtB,QAAQ,EAAE,MAAM;cAChB,MAAM,EAAE,OAAO;cACf,QAAQ,EAAE,QAAQ;cAElB,gFAAI;gBACH,MAAM,EAAE,OAAO;cAGhB,oFAAQ;gBACP,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,KAAK;gBAEb,8FAAU;kBACT,SAAS,EAAC,IAAI;kBACd,OAAO,EAAE,GAAG;kBACZ,UAAU,EAAC,kBAAe;kBAC1B,OAAO,EAAE,IAAI;kBACb,KAAK,EAAE,OAAO;gBAGf,0FAAQ;kBACP,KAAK,EAAE,KAAK;kBACZ,MAAM,EAAE,KAAK;kBACb,MAAM,EAAE,iBAAiB;kBACzB,mBAAmB,EAAE,SAAS;kBAC9B,QAAQ,EAAE,MAAM;kBAChB,oGAAU;oBACT,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE,IAAI;cAId,0FAAc;gBACb,UAAU,EAAE,6CAA6C;MAQ9D,oCAAS;QACR,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,SAAS,EAzhBH,IAAI;QA0hBV,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,MAAM;QAClB,OAAO,EAAE,IAAI;QACb,2CAAO;UACN,KAAK,EAAE,OAAO;MAIhB,yCAAc;QACb,UAAU,EAAC,mEAAgE;QAC3E,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,KAAK;QACb,GAAG,EAAC,CAAC;QAAE,IAAI,EAAE,CAAC;QACd,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,MAAM;QAElB,0DAAiB;UAChB,QAAQ,EAAE,QAAQ;UAClB,SAAS,EAAE,IAAI;UACf,KAAK,EAAE,OAAO;UACd,GAAG,EAAE,KAAK;UACV,IAAI,EAAC,KAAK;MAKZ,6CAAkB;QACjB,eAAe,EAAE,WAAW;QAC5B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;MAEd,6EAAsB;QAAC,gBAAgB,EAAE,oBAAoB;MAC7D,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,0EAAmB;QAAC,gBAAgB,EAAE,kBAAkB;MACxD,sCAAW;QAAC,gBAAgB,EAAE,qBAAqB;MACnD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,6EAAqB;QAAC,gBAAgB,EAAE,oBAAoB;MAC5D,yCAAc;QAAC,gBAAgB,EAAE,oBAAoB;MACrD,6EAAqB;QAAC,gBAAgB,EAAE,oBAAoB;MAC5D,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,4EAAoB;QAAC,gBAAgB,EAAE,oBAAoB;MAC3D,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,oHAAiC;QAAC,gBAAgB,EAAE,qBAAqB;MACzE,oCAAS;QAAC,gBAAgB,EAAE,mBAAmB;MAC/C,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,gFAAyB;QAAC,gBAAgB,EAAE,yBAAyB;MACrE,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,sCAAW;QAAC,gBAAgB,EAAE,qBAAqB;MACnD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,sCAAW;QAAC,gBAAgB,EAAE,qBAAqB;MACnD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,6EAAsB;QAAC,gBAAgB,EAAE,oBAAoB;MAC7D,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,oCAAS;QAAC,gBAAgB,EAAE,mBAAmB;MAC/C,oCAAS;QAAC,gBAAgB,EAAE,mBAAmB;MAC/C,4EAAqB;QAAC,gBAAgB,EAAE,qBAAqB;MAC7D,sCAAW;QAAC,gBAAgB,EAAE,qBAAqB;MACnD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,6EAAsB;QAAC,gBAAgB,EAAE,oBAAoB;MAC7D,qCAAU;QAAC,gBAAgB,EAAE,oBAAoB;MACjD,sOAA+D;QAAC,gBAAgB,EAAE,oBAAoB;IAIvG,kCAAiB;MAChB,MAAM,EAAE,KAAK;MAEb,0CAAQ;QACP,OAAO,EAAE,gBAAgB;QACzB,MAAM,EAAE,KAAK;EAMhB,uBAAe;IACd,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,kBAAkB;IAE3B,iCAAU;MACT,KAAK,EAAE,IAAI;MACX,OAAO,EAAE,QAAQ;MACjB,KAAK,EAAE,IAAI;MACX,SAAS,EAAE,IAAI", +"sources": ["upload.scss"], +"names": [], +"file": "upload.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/upload.min.css b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.min.css new file mode 100644 index 0000000..3f463d7 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.uedbody{box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;width:652px;position:fixed;padding:2px 0 0 2px;background-color:#fff;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);z-index:811213;font-family:"微软雅黑";font-size:12px;margin:0 auto}.uedbody blockquote,.uedbody button,.uedbody code,.uedbody dd,.uedbody div,.uedbody dl,.uedbody dt,.uedbody fieldset,.uedbody form,.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6,.uedbody legend,.uedbody li,.uedbody ol,.uedbody p,.uedbody pre,.uedbody textarea,.uedbody ul{margin:0;padding:0}.uedbody h1,.uedbody h2,.uedbody h3,.uedbody h4,.uedbody h5,.uedbody h6{font-weight:400}.uedbody li{list-style-type:none}.uedbody dl,.uedbody ol,.uedbody ul{list-style:none}.uedbody em{font-style:normal}.uedbody img{border:none;vertical-align:middle}.uedbody input,.uedbody label,.uedbody select{vertical-align:middle;padding:0;margin:0;outline:medium;font-size:12px}.uedbody textarea{resize:none;line-height:18px}.uedbody table{border-collapse:collapse;border-spacing:0;empty-cell:show}.uedbody a{text-decoration:none;color:#333;outline:0;cursor:pointer}.uedbody a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur())}.uedbody *{padding:0;margin:0;box-sizing:content-box!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important}.uedbody .clearfix:after,.uedbody .clearfix:before{content:"";display:table}.uedbody .clearfix:after{clear:both}.uedbody .fr{float:right}.uedbody .fl{float:left}.uedbody .ued_title{height:26px;border-bottom:1px solid #c6c6c6;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.uedbody .ued_title .icon{background:url(images/icons-all.gif) no-repeat center}.uedbody .ued_title .uedbar span{font-weight:700;font-size:14px;color:#444;line-height:26px;padding-left:5px}.uedbody .ued_title .close_btn{height:20px;width:20px;cursor:pointer;background-position:0 -59px;position:absolute;right:5px;top:3px}.uedbody .ued_title .close_btn:hover{background-position:0 -89px}.uedbody .btn{display:inline-block;margin-bottom:0;margin-right:5px;padding:4px 10px;font-weight:400;text-align:center;cursor:pointer;border:1px solid transparent;white-space:nowrap;font-size:14px;border-radius:3px;-moz-user-select:none;box-shadow:0 1px 1px rgba(0,0,0,.1);padding:5px 14px}.uedbody .btn-default{border:1px solid #cfcfcf;color:#565656;background:#fff}.uedbody .btn-default:hover{background:#f0f0f0}.uedbody .btn-primary{background:#00b7ee;color:#fff}.uedbody .btn-primary:hover{background:#00a2d4}.uedbody .btn.disabled{cursor:not-allowed;opacity:.65}.uedbody .btn.disabled:hover{background:#00b7ee}.uedbody .wrapper{width:630px;height:380px;margin:0 auto;padding:10px;position:relative;font-family:sans-serif}.uedbody .wrapper .wra_head span{float:left;padding:0 5px;margin-right:3px;height:30px;border:1px solid #ccc;background:transparent url(images/dialog-title-bg.png) repeat-x scroll 0 0;text-align:center;line-height:30px;cursor:pointer;position:relative}.uedbody .wrapper .wra_head span.focus{height:31px;border-bottom:medium none;background:#fff none repeat scroll 0 0;position:relative;z-index:2}.uedbody .wrapper .wra_body{width:100%;height:346px;clear:both;margin:0 auto;border:1px solid #ccc;display:block;clip:auto;overflow:hidden;top:-1px;position:relative}.uedbody .wrapper .wra_body .upload-panel .wra_pla{zoom:1;overflow:hidden;text-align:center}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder{margin:10px;border:2px dashed #e6e6e6;height:172px;padding-top:150px;text-align:center;background:url(images/image.png) center 70px no-repeat;position:relative;top:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .webuploader-element-invisible{opacity:0;width:0;height:0}.uedbody .wrapper .wra_body .upload-panel .wra_pla .upload-image-placeholder .image-select{padding:10px 30px;cursor:pointer}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar{border-bottom:1px solid #dadada;padding:8px;vertical-align:middle;position:relative;zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .info{font-size:14px;color:#666;margin-top:6px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .wra_bar .fr .btn{padding:6px 15px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist{list-style:outside none none;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;position:relative;height:300px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li{width:113px;height:113px;margin:9px 0 0 9px;position:relative;display:block;float:left;overflow:hidden;font-size:12px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .imgWrap{position:relative;vertical-align:middle;text-align:center;overflow:hidden;width:113px;height:113px;transform-origin:50% 50% 0;transition:all .2s ease-out 0s}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box{position:absolute;display:none;background:rgba(0,0,0,.5) none repeat scroll 0 0;width:100%;top:0;left:0;overflow:hidden}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box span{width:24px;height:24px;display:inline;float:right;text-indent:-9999px;overflow:hidden;background:url(images/icons.png) no-repeat;margin:5px 1px 1px;cursor:pointer;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove{background-position:-48px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .remove:hover{background-position:-48px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight{display:none;background-position:-24px -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateRight:hover{background-position:-24px 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft{display:none;background-position:0 -24px}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .file-opt-box .rotateLeft:hover{background-position:0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .success{background:url(images/success.png) no-repeat right;position:absolute;display:none;left:0;bottom:0;height:40px;width:100%}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .error{position:absolute;width:100%;display:none;background:rgba(255,255,255,.7) none repeat scroll 0 0;left:0;padding:5px 3px;color:#c00;border:1px solid #ccc;bottom:0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress{position:absolute;width:100%;bottom:0;left:0;bottom:0;height:8px;overflow:hidden;z-index:50;margin:0;border-radius:0;background:0 0;-webkit-box-shadow:0 0 0}.uedbody .wrapper .wra_body .upload-panel .image-list-box .filelist li .progress span{width:0;height:100%;background:#1483d8 url(images/progress.png) repeat-x;-webit-transition:width .2s linear;-moz-transition:width .2s linear;-o-transition:width .2s linear;-ms-transition:width .2s linear;transition:width .2s 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)}.uedbody .wrapper .wra_body .online{width:100%;height:336px;padding:10px 0 0;display:none}.uedbody .wrapper .wra_body .online .imagelist{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .online .imagelist .list li img{cursor:pointer}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px}.uedbody .wrapper .wra_body .online .imagelist .list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .online .imagelist .list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .searchbox{width:100%;padding:10px 0 0;zoom:1;overflow:hidden;display:none}.uedbody .wrapper .wra_body .searchbox .search-bar .searTxt{margin-left:5px;background:#fff none repeat scroll 0 0;width:300px;height:21px;line-height:21px;padding:3px 6px;font-size:14px;line-height:1.42857;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;transition:border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s;margin-right:10px}.uedbody .wrapper .wra_body .searchbox .search-bar .searchBtn{color:#fff;border-color:#285e8e;background-color:#3b97d7}.uedbody .wrapper .wra_body .searchbox .search-bar .searchRese{color:#333;border-color:#ccc;background-color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box{width:100%;height:292px;overflow-x:hidden;overflow-y:auto;position:relative;margin-top:10px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list{zoom:1;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li{float:left;display:block;list-style:outside none none;padding:0;width:113px;height:113px;margin:0 0 9px 9px;background-color:#eee;overflow:hidden;cursor:pointer;position:relative}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li img{cursor:pointer}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic{position:absolute;top:0;left:0;cursor:pointer;width:113px;height:113px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic .img-size{font-size:12px;padding:5px;background:rgba(0,0,0,.6);display:none;color:#fff}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover{width:107px;height:107px;border:3px solid #1094fa;background-position:72px 72px;overflow:hidden}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.ic:hover .img-size{display:inline-block;width:97px}.uedbody .wrapper .wra_body .searchbox .search-imagelist-box .search-list li span.selected{background:url(images/success.png) no-repeat 75px 75px}.uedbody .wrapper .wra_body .no-data{line-height:40px;height:40px;font-size:14px;color:#999;text-align:center;display:none}.uedbody .wrapper .wra_body .no-data .error{color:#c00}.uedbody .wrapper .wra_body .loading-icon{background:rgba(0,0,0,.4) url(images/loader.gif) no-repeat center center;position:absolute;width:100%;height:346px;top:0;left:0;display:none;text-align:center}.uedbody .wrapper .wra_body .loading-icon .loading-message{position:absolute;font-size:14px;color:#f0f0f0;top:210px;left:253px}.uedbody .wrapper .wra_body .icon-placeholder{background-size:113px 113px;display:block;width:113px;height:113px}.uedbody .wrapper .wra_body .icon-aep,.uedbody .wrapper .wra_body .icon-aepx{background-image:url(icons/aep.png)}.uedbody .wrapper .wra_body .icon-asp{background-image:url(icons/asp.png)}.uedbody .wrapper .wra_body .icon-avi{background-image:url(icons/avi.png)}.uedbody .wrapper .wra_body .icon-c,.uedbody .wrapper .wra_body .icon-cpp{background-image:url(icons/c.png)}.uedbody .wrapper .wra_body .icon-conf{background-image:url(icons/conf.png)}.uedbody .wrapper .wra_body .icon-css{background-image:url(icons/css.png)}.uedbody .wrapper .wra_body .icon-htm,.uedbody .wrapper .wra_body .icon-html{background-image:url(icons/htm.png)}.uedbody .wrapper .wra_body .icon-default{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-doc,.uedbody .wrapper .wra_body .icon-docx{background-image:url(icons/doc.png)}.uedbody .wrapper .wra_body .icon-eps{background-image:url(icons/eps.png)}.uedbody .wrapper .wra_body .icon-fla,.uedbody .wrapper .wra_body .icon-swf{background-image:url(icons/fla.png)}.uedbody .wrapper .wra_body .icon-idn{background-image:url(icons/idn.png)}.uedbody .wrapper .wra_body .icon-ini{background-image:url(icons/ini.png)}.uedbody .wrapper .wra_body .icon-jar,.uedbody .wrapper .wra_body .icon-java,.uedbody .wrapper .wra_body .icon-war{background-image:url(icons/java.png)}.uedbody .wrapper .wra_body .icon-js{background-image:url(icons/js.png)}.uedbody .wrapper .wra_body .icon-jsf{background-image:url(icons/jsf.png)}.uedbody .wrapper .wra_body .icon-markdown,.uedbody .wrapper .wra_body .icon-md{background-image:url(icons/markdown.png)}.uedbody .wrapper .wra_body .icon-mdb{background-image:url(icons/mdb.png)}.uedbody .wrapper .wra_body .icon-midi{background-image:url(icons/midi.png)}.uedbody .wrapper .wra_body .icon-mov{background-image:url(icons/mov.png)}.uedbody .wrapper .wra_body .icon-mp3{background-image:url(icons/mp3.png)}.uedbody .wrapper .wra_body .icon-mpeg{background-image:url(icons/mpeg.png)}.uedbody .wrapper .wra_body .icon-pdf{background-image:url(icons/pdf.png)}.uedbody .wrapper .wra_body .icon-php{background-image:url(icons/php.png)}.uedbody .wrapper .wra_body .icon-ppt,.uedbody .wrapper .wra_body .icon-pptx{background-image:url(icons/ppt.png)}.uedbody .wrapper .wra_body .icon-psd{background-image:url(icons/psd.png)}.uedbody .wrapper .wra_body .icon-pst{background-image:url(icons/pst.png)}.uedbody .wrapper .wra_body .icon-pub{background-image:url(icons/pub.png)}.uedbody .wrapper .wra_body .icon-py{background-image:url(icons/py.png)}.uedbody .wrapper .wra_body .icon-rb{background-image:url(icons/rb.png)}.uedbody .wrapper .wra_body .icon-rm,.uedbody .wrapper .wra_body .icon-rmvb{background-image:url(icons/rmvb.png)}.uedbody .wrapper .wra_body .icon-scss{background-image:url(icons/scss.png)}.uedbody .wrapper .wra_body .icon-tif{background-image:url(icons/tif.png)}.uedbody .wrapper .wra_body .icon-txt{background-image:url(icons/txt.png)}.uedbody .wrapper .wra_body .icon-vsd{background-image:url(icons/vsd.png)}.uedbody .wrapper .wra_body .icon-wav{background-image:url(icons/wav.png)}.uedbody .wrapper .wra_body .icon-wma{background-image:url(icons/wma.png)}.uedbody .wrapper .wra_body .icon-wmv{background-image:url(icons/wmv.png)}.uedbody .wrapper .wra_body .icon-xls,.uedbody .wrapper .wra_body .icon-xlsx{background-image:url(icons/xls.png)}.uedbody .wrapper .wra_body .icon-xml{background-image:url(icons/xml.png)}.uedbody .wrapper .wra_body .icon-7z,.uedbody .wrapper .wra_body .icon-gz,.uedbody .wrapper .wra_body .icon-rar,.uedbody .wrapper .wra_body .icon-tar,.uedbody .wrapper .wra_body .icon-tgz,.uedbody .wrapper .wra_body .icon-zip{background-image:url(icons/zip.png)}.uedbody .wrapper .wra_body_server{height:380px}.uedbody .wrapper .wra_body_server .online{display:block!important;height:365px}.uedbody .wra-btn-group{clear:both;zoom:1;text-align:right;padding:10px 20px 20px 0}.uedbody .wra-btn-group .tip-text{float:left;padding:5px 10px;color:#999;font-size:14px} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/multiimage/css/upload.scss b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.scss new file mode 100644 index 0000000..10ff832 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/css/upload.scss @@ -0,0 +1,642 @@ +$dialogWidth:652px; +$dialogZindex:811213; +$fontsize:14px; +.uedbody{ + div, dl, dt, dd, ul, li,ol, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, button, textarea, blockquote,p{margin:0; padding:0;} + h1,h2,h3,h4,h5,h6 {font-weight:normal;} + li{list-style-type:none;} + ol,ul,dl{list-style:none;} + em{font-style:normal;} + img{border:none;vertical-align:middle;} + select,label,input{vertical-align:middle; padding:0; margin:0;outline:medium;font-size:12px;} + textarea{resize: none; line-height:18px;} + table { border-collapse: collapse; border-spacing: 0; empty-cell:show;} + a{text-decoration:none;color:#333;outline:none; cursor:pointer;} + a:hover{cursor:pointer;blr:expression(this.onFocus=this.blur());} + + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + + * { + padding: 0; margin: 0; + box-sizing : content-box !important; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + } + + .clearfix:before, .clearfix:after { + content: ""; + display: table; + } + .clearfix:after{ + clear: both; + } + .clearfix{ + *zoom: 1; + } + .fr{float: right;} + .fl{float: left;} + + width: $dialogWidth; + position: fixed; + padding: 2px 0px 0px 2px; + background-color: #FFF; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); + z-index: $dialogZindex; + font-family:"微软雅黑"; + font-size: 12px; + margin: 0px auto; + + //start of ued_title + .ued_title{ + height: 26px; + border-bottom: 1px solid #C6C6C6; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + position: relative; + cursor: move; + + .icon{background: url("images/icons-all.gif") no-repeat center;} + + .uedbar { + span{ + font-weight: bold; + font-size: 14px; + color: #444; + line-height: 26px; + padding-left: 5px; + } + } + + .close_btn{ + height: 20px; + width: 20px; + cursor: pointer; + background-position :0px -59px; + position: absolute; + right: 5px; + top: 3px; + + &:hover{background-position: 0px -89px;} + } + } + //end of ued_title + + //button styles + .btn { + display: inline-block; + margin-bottom: 0px; + margin-right: 5px; + padding: 4px 10px; + font-weight: 400; + text-align: center; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + font-size: $fontsize; + border-radius: 3px; + -moz-user-select: none; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); + padding: 5px 14px; + } + .btn-default { + border: 1px solid #CFCFCF; + color: #565656; + background: #ffffff; + &:hover { + background: #f0f0f0; + } + } + .btn-primary { + background:#00b7ee; + color: #ffffff; + &:hover { + background: #00a2d4; + } + }//button style end + .btn.disabled { + cursor: not-allowed; + opacity: .65; + &:hover { + background: #00b7ee; + } + } + + //start of wrapper + .wrapper { + width: 630px; + height: 380px; + margin: 0px auto; + padding: 10px; + position: relative; + font-family: sans-serif; + + //start of wra_head + .wra_head { + span { + float: left; + padding: 0px 5px; + margin-right:3px; + height: 30px; + border: 1px solid #CCC; + background: transparent url("images/dialog-title-bg.png") repeat-x scroll 0% 0%; + text-align: center; + line-height: 30px; + cursor: pointer; + position: relative; + } + span.focus { + height: 31px; + border-bottom: medium none; + background: #FFF none repeat scroll 0% 0%; + position: relative; + z-index: 2; + } + }//end of wra_head + + //start of wra_body + .wra_body{ + + width: 100%; + height: 346px; + clear: both; + margin: 0px auto; + border: 1px solid #CCC; + display: block; + clip: auto; + overflow: hidden; + top: -1px; + position: relative; + + //upload panel start + .upload-panel { + .wra_pla { + zoom: 1; overflow: hidden; + text-align: center; + + .upload-image-placeholder { + margin: 10px; + border: 2px dashed #e6e6e6; + height: 172px; + padding-top: 150px; + text-align: center; + background: url("images/image.png") center 70px no-repeat; + position: relative; + top: 0; + + .webuploader-element-invisible { + //width: 145px; + //height: 40px; + //position: absolute; + //left: 225px; + opacity: 0; + width: 0; height: 0; + } + + .image-select { + padding: 10px 30px; + cursor: pointer; + } + } + } + + //image list box start + .image-list-box { + .wra_bar { + border-bottom: 1px solid #DADADA; + padding: 8px; + vertical-align: middle; + position: relative; + zoom: 1; overflow: hidden; + + .info{ + font-size: $fontsize; + color: #666; + margin-top: 6px; + } + + .fr { + .btn {padding: 6px 15px;} + } + + } + + //filelist start + .filelist{ + list-style: outside none none; + margin: 0px; + padding: 0px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + height: 300px; + + li { + width: 113px; + height: 113px; + margin: 9px 0px 0px 9px; + position: relative; + display: block; + float: left; + overflow: hidden; + font-size: 12px; + + .imgWrap{ + position: relative; + vertical-align: middle; + text-align: center; + overflow: hidden; + width: 113px; + height: 113px; + transform-origin: 50% 50% 0px; + transition: all 200ms ease-out 0s; + + } + + //file opt box start + .file-opt-box{ + position: absolute; + display: none; + background: rgba(0, 0, 0, 0.5) none repeat scroll 0% 0%; + width: 100%; + top: 0px; + left: 0px; + overflow: hidden; + + span { + width: 24px; + height: 24px; + display: inline; + float: right; + text-indent: -9999px; + overflow: hidden; + background: url("images/icons.png") no-repeat; + 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; + } + + .remove{ + background-position: -48px -24px; + &:hover{ + background-position: -48px -0px; + } + } + .rotateRight{ + display: none; + background-position: -24px -24px; + &:hover{ + background-position: -24px -0px; + } + } + .rotateLeft{ + display: none; + background-position: 0px -24px; + &:hover{ + background-position: 0px 0px; + } + } + }//file opt box end + + .success{ + background: url("images/success.png") no-repeat right; + position: absolute; + display: none; + left: 0px; + bottom: 0px; + height: 40px; + width: 100%; + } + + .error { + position: absolute; + width: 100%; + display: none; + background: rgba(255, 255, 255, 0.7) none repeat scroll 0% 0%; + left: 0; + padding:5px 3px; + color: #cc0000; + border: 1px solid #cccccc; + bottom: 0; + } + + .progress { + position: absolute; + width: 100%; + bottom: 0; + left: 0; + bottom: 0; + height: 8px; + overflow: hidden; + z-index: 50; + margin: 0; + border-radius: 0; + background: none; + -webkit-box-shadow: 0 0 0; + + span { + 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); + } + } + }//end li + + }//filelist end + + }//image list box end + }//upload panel end + + //image online start + .online{ + width: 100%; + height: 336px; + padding: 10px 0px 0px; + display: none; + + .imagelist { + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: relative; + + .list { + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img{cursor: pointer;} + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover{ + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + .img-size { + display: inline-block; + width: 97px; + } + + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + + } + + } //image online end + + //image search start + .searchbox { + width: 100%; + padding: 10px 0px 0px; + zoom: 1; overflow: hidden; + display: none; + + //搜索条 + .search-bar { + + .searTxt{ + margin-left: 5px; + background: #FFF none repeat scroll 0% 0%; + width: 300px; + height: 21px; + line-height: 21px; + padding: 3px 6px; + font-size: $fontsize; + line-height: 1.42857; + border: 1px solid #CCC; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + margin-right:10px; + } + + .searchBtn { + color: #FFF; + border-color: #285E8E; + background-color: #3B97D7; + } + .searchRese{ + color: #333; + border-color: #CCC; + background-color: #FFF; + } + } + + .search-imagelist-box { + width: 100%; + height: 292px; + overflow-x: hidden; + overflow-y: auto; + position: relative; + margin-top:10px; + + .search-list { + zoom:1; overflow: hidden; + li { + float: left; + display: block; + list-style: outside none none; + padding: 0px; + width: 113px; + height: 113px; + margin: 0px 0px 9px 9px; + background-color: #EEE; + overflow: hidden; + cursor: pointer; + position: relative; + + img { + cursor: pointer; + } + + span.ic { + position: absolute; + top: 0px; + left: 0px; + cursor: pointer; + width: 113px; + height: 113px; + + .img-size { + font-size:12px; + padding: 5px; + background:rgba(0,0,0,0.6); + display: none; + color: #ffffff; + } + + &:hover { + width: 107px; + height: 107px; + border: 3px solid #1094FA; + background-position: 72px 72px; + overflow: hidden; + .img-size { + display: inline-block; + width: 97px; + } + } + } + span.selected { + background: url("images/success.png") no-repeat 75px 75px; + } + } + } + } + + }//image search start end + + .no-data { + line-height: 40px; + height: 40px; + font-size:$fontsize; + color: #999999; + text-align: center; + display: none; + .error { + color: #cc0000; + } + } + + .loading-icon { + background:rgba(0,0,0,0.4) url("images/loader.gif") no-repeat center center; + position: absolute; + width: 100%; + height: 346px; + top:0; left: 0; + display: none; + text-align: center; + + .loading-message { + position: absolute; + font-size: 14px; + color: #f0f0f0; + top: 210px; + left:253px; + } + } + + //图片占位符 + .icon-placeholder { + background-size: 113px 113px; + display: block; + width: 113px; + height: 113px; + } + .icon-aep, .icon-aepx {background-image: url("icons/aep.png");} + .icon-asp {background-image: url("icons/asp.png");} + .icon-avi {background-image: url("icons/avi.png");} + .icon-c, .icon-cpp {background-image: url("icons/c.png");} + .icon-conf {background-image: url("icons/conf.png");} + .icon-css {background-image: url("icons/css.png");} + .icon-htm,.icon-html {background-image: url("icons/htm.png");} + .icon-default {background-image: url("icons/txt.png");} + .icon-doc,.icon-docx {background-image: url("icons/doc.png");} + .icon-eps {background-image: url("icons/eps.png");} + .icon-fla,.icon-swf {background-image: url("icons/fla.png");} + .icon-idn {background-image: url("icons/idn.png");} + .icon-ini {background-image: url("icons/ini.png");} + .icon-java, .icon-jar, .icon-war {background-image: url("icons/java.png");} + .icon-js {background-image: url("icons/js.png");} + .icon-jsf {background-image: url("icons/jsf.png");} + .icon-md, .icon-markdown {background-image: url("icons/markdown.png");} + .icon-mdb {background-image: url("icons/mdb.png");} + .icon-midi {background-image: url("icons/midi.png");} + .icon-mov {background-image: url("icons/mov.png");} + .icon-mp3 {background-image: url("icons/mp3.png");} + .icon-mpeg {background-image: url("icons/mpeg.png");} + .icon-pdf {background-image: url("icons/pdf.png");} + .icon-php {background-image: url("icons/php.png");} + .icon-ppt, .icon-pptx {background-image: url("icons/ppt.png");} + .icon-psd {background-image: url("icons/psd.png");} + .icon-pst {background-image: url("icons/pst.png");} + .icon-pub {background-image: url("icons/pub.png");} + .icon-py {background-image: url("icons/py.png");} + .icon-rb {background-image: url("icons/rb.png");} + .icon-rm, .icon-rmvb {background-image: url("icons/rmvb.png");} + .icon-scss {background-image: url("icons/scss.png");} + .icon-tif {background-image: url("icons/tif.png");} + .icon-txt {background-image: url("icons/txt.png");} + .icon-vsd {background-image: url("icons/vsd.png");} + .icon-wav {background-image: url("icons/wav.png");} + .icon-wma {background-image: url("icons/wma.png");} + .icon-wmv {background-image: url("icons/wmv.png");} + .icon-xls, .icon-xlsx {background-image: url("icons/xls.png");} + .icon-xml {background-image: url("icons/xml.png");} + .icon-zip, .icon-rar, .icon-tgz, .icon-gz, .icon-tar, .icon-7z {background-image: url("icons/zip.png");} + + }//end of wra_body + + .wra_body_server { + height: 380px; + + .online { + display: block !important; + height: 365px; + } + } + + }//start of wrapper + + .wra-btn-group { + clear: both; + zoom: 1; + text-align: right; + padding: 10px 20px 20px 0px; + + .tip-text { + float: left; + padding: 5px 10px; + color: #999; + font-size: 14px; + } + } +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/multiimage/multiimage.js b/public/assets/addons/nkeditor/plugins/multiimage/multiimage.js new file mode 100644 index 0000000..fbc89b3 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/multiimage.js @@ -0,0 +1,90 @@ +/** + * HTML5 批量文件上传 + * @author yangjian <yangjian102621@gmail.com> + * @since v4.1.12(2017-09-12) + * @site http://git.oschina.net/blackfox/kindeditor + */ + +KindEditor.plugin('multiimage', function(K) { + var self = this, name = 'multiimage', + uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'), + fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'), + imageSizeLimit = K.undef(self.imageSizeLimit, 2048), //单位KB + imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'), + imageUploadLimit = K.undef(self.imageUploadLimit, 20), + filePostName = K.undef(self.filePostName, 'imgFile'), + lang = self.lang(name + '.'); + + if(typeof jQuery == 'undefined') { + K.options.errorMsgHandler(lang.depJQueryError, "error"); + return; + } else { + K.loadScript(K.options.pluginsPath+name+"/BUpload.js"); + K.loadStyle(K.options.pluginsPath+name+"/css/upload.css"); + } + + //锁屏插件 + K.locker = function () { + var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth); + var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop; + return K.widget({ + x : 0, + y : 0, + cls : 'ke-dialog-lock', + width : docWidth, + height : docHeight + }); + } + self.plugin.multiImageDialog = function(options) { + + if ( !window.applicationCache ) { + K.options.errorMsgHandler("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!", "error"); + return; + } + var clickFn = options.clickFn; + var locker = K.locker(); + locker.show(); + + var dialog = new BUpload({ + src : filePostName, + upload_url : uploadJson, + list_url : fileManagerJson, //图片列表数据获取url + max_filesize : imageSizeLimit, + max_filenum : imageUploadLimit, + ext_allow : imageFileTypes, + lang : lang, + top : self.dialogOffset, + fileType : "image", + errorHandler : K.options.errorMsgHandler, + callback : function(data) { + //console.log(data); + clickFn.call(this, data); + }, + close : function () { + locker.remove(); + } + }); + + return dialog; + }; + self.clickToolbar(name, function() { + self.plugin.multiImageDialog({ + clickFn : function (urlList) { + + if (urlList.length === 0) { + return; + } + K.each(urlList, function(i, data) { + if (self.afterUpload) { + self.afterUpload.call(self, data, data, 'multiimage'); + } + self.exec('insertimage', data); + }); + // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog + setTimeout(function() { + self.hideDialog().focus(); + }, 0); + } + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/multiimage/template/template.html b/public/assets/addons/nkeditor/plugins/multiimage/template/template.html new file mode 100644 index 0000000..6625f0a --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/multiimage/template/template.html @@ -0,0 +1,95 @@ +<div class="uedbody"> + <div class="ued_title"> + <div class="uedbar"> + <span>多图上传</span> + </div> + <div class="close_but icon" title="关闭对话框"></div> + </div> + + <div class="wrapper"> + <div id="wra_head" class="wra_head"> + <span class="tab tab-upload focus" tab="upload-panel">本地上传</span> + <span class="tab tab-online" tab="online">文件服务器</span> + <span class="tab tab-search" tab="searchbox">图片搜索</span> + </div> + + <div class="wra_body"> + <div class="tab-panel upload-panel"> + <div class="wra_pla"> + <div class="upload-image-placeholder"> + <div class="btn btn-primary image-select">点击选择图片</div> + <input type="file" name="src" class="webuploader-element-invisible" multiple="multiple"> + </div> + </div> + + <div class="image-list-box" style="display: none;"> + <div class="wra_bar"> + <div class="info fl">选中 {img.num} 张图片,共 {img.size} K</div> + <div class="fr"> + <span class="btn btn-default btn-continue-add">继续添加</span> + <span class="btn btn-primary btn-start-upload">开始上传</span> + </div> + </div> + + <ul class="filelist"> + <?php for ( $i = 0; $i < 20; $i++ ) {?> + <li> + <div class="imgWrap"> + <img src="http://ueditor.baidu.com/server/ueditor/upload/image/3.jpg?noCache=iokrzz5b" width="113" height="113" border="0" /> + </div> + <div class="file-opt-box clearfix"> + <span class="remove">删除</span> + <span class="rotateRight">向右旋转</span> + <span class="rotateLeft">向左旋转</span> + </div> + <div class="success"></div> + <div class="error">这是错误信息</div> + <div class="progress"><span style="display: none; width: 0px;"></span></div> + </li> + <?php }?> + + </ul> + + </div> + </div> + + <div class="tab-panel online"> + <div class="imagelist"> + <ul class="list"> + <li> + <img style="margin-left: -33px;" src="http://ueditor.baidu.com/server/ueditor/upload/image/10.jpg?noCache=iokuzbsf" height="113" width="179"> + <span class="ic <?php if ($i%2==0) {echo "selected";}?>"></span> + </li> + </ul> + <div class="no-data">(⊙o⊙)亲,没有多数据了。</div> + </div> + </div> + + <div class="tab-panel searchbox"> + <div class="search-bar"> + <input class="searTxt" type="text" placeholder="请输入搜索关键词" /> + <input value="百度一下" class="btn btn-primary btn-search" type="button" /> + <input value="清空搜索" class="btn btn-default btn-cancel" type="button" /> + </div> + + <div class="search-imagelist-box"> + <ul class="search-list"> + <li> + <img style="margin-left: -33px;" src="http://ueditor.baidu.com/server/ueditor/upload/image/10.jpg?noCache=iokuzbsf" height="113" width="179"> + <span class="ic <?php if ($i%2==0) {echo "selected";}?>"></span> + </li> + </ul> + <div class="no-data">(⊙o⊙)亲,没有多数据了。</div> + </div> + </div> + + <div class="loading-icon"></div> + </div><!-- end of wrapper --> + + </div> + + <div class="wra-btn-group"> + <span class="btn btn-primary btn-confirm">确认</span> + <span class="btn btn-default btn-cancel">取消</span> + </div> +</div> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/pagebreak/pagebreak.js b/public/assets/addons/nkeditor/plugins/pagebreak/pagebreak.js new file mode 100644 index 0000000..dfa883a --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/pagebreak/pagebreak.js @@ -0,0 +1,27 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('pagebreak', function(K) { + var self = this; + var name = 'pagebreak'; + var pagebreakHtml = K.undef(self.pagebreakHtml, '<hr style="page-break-after: always;" class="ke-pagebreak" />'); + + self.clickToolbar(name, function() { + var cmd = self.cmd, range = cmd.range; + self.focus(); + var tail = self.newlineTag == 'br' || K.WEBKIT ? '' : '<span id="__kindeditor_tail_tag__"></span>'; + self.insertHtml(pagebreakHtml + tail); + if (tail !== '') { + var p = K('#__kindeditor_tail_tag__', self.edit.doc); + range.selectNodeContents(p[0]); + p.removeAttr('id'); + cmd.select(); + } + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/plainpaste/plainpaste.js b/public/assets/addons/nkeditor/plugins/plainpaste/plainpaste.js new file mode 100644 index 0000000..8f7bed8 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/plainpaste/plainpaste.js @@ -0,0 +1,41 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('plainpaste', function(K) { + var self = this, name = 'plainpaste'; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<textarea class="ke-textarea" style="width:408px;height:260px;"></textarea>' + + '</div>', + dialog = self.createDialog({ + name : name, + width : 450, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var html = textarea.val(); + html = K.escape(html); + html = html.replace(/ {2}/g, ' '); + if (self.newlineTag == 'p') { + html = html.replace(/^/, '<p>').replace(/$/, '</p>').replace(/\n/g, '</p><p>'); + } else { + html = html.replace(/\n/g, '<br />$&'); + } + self.insertHtml(html).hideDialog().focus(); + } + } + }), + textarea = K('textarea', dialog.div); + textarea[0].focus(); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/preview/preview.js b/public/assets/addons/nkeditor/plugins/preview/preview.js new file mode 100644 index 0000000..029c227 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/preview/preview.js @@ -0,0 +1,134 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('preview', function(K) { + var self = this, name = 'preview', undefined; + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + width = document.documentElement.clientWidth * 0.9, + height = document.documentElement.clientHeight - 160, + html = '<div style="padding:10px 20px;">' + + '<iframe class="ke-textarea" frameborder="0" style="width:'+(width-42)+'px;height:'+height+'px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name : name, + width : width, + title : self.lang(name), + body : html + }), + iframe = K('iframe', dialog.div), + doc = K.iframeDoc(iframe); + doc.open(); + + var cssPath = self.options.cssPath; + var jsPath = self.options.jsPath; + var arr = [ + '<html lang="en">', + '<head><meta charset="utf-8" /><title></title>', + //'<link href="http://localhost/editor/nkeditor/plugins/code/prettify.css" rel="stylesheet">', + '<style>', + 'html {margin:0;padding:0;}', + 'body {margin:0;padding:5px;}', + 'body, td {font:12px/1.5 "sans serif",tahoma,verdana,helvetica;}', + 'body, p, div {word-wrap: break-word;}', + 'p {margin:5px 0;}', + 'table {border-collapse:collapse;}', + 'img {border:0;}', + 'noscript {display:none;}', + 'table.ke-zeroborder td {border:1px dotted #AAA;}', + 'img.ke-flash {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/flash.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/flash.png);', + ' background-size:64px 64px;', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-rm {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/rm.gif);', + ' background-position:center center;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-media {', + ' border:1px solid #AAA;', + ' background-image:url(' + self.options.themesPath + 'common/play.svg);', + ' *background-image:url(' + self.options.themesPath + 'common/play.png);', + ' background-position:center center;', + ' background-size:64px 64px;', + ' background-repeat:no-repeat;', + ' width:100px;', + ' height:100px;', + '}', + 'img.ke-anchor {', + ' border:1px dashed #666;', + ' width:16px;', + ' height:16px;', + '}', + '.ke-script, .ke-noscript, .ke-display-none {', + ' display:none;', + ' font-size:0;', + ' width:0;', + ' height:0;', + '}', + '.ke-pagebreak {', + ' border:1px dotted #AAA;', + ' font-size:0;', + ' height:2px;', + '}' + ]; + + if (self.options.showHelpGrid) { + arr.push('p,ul,ol,li,div{border: 1px dashed #c1c1c1;}'); + arr.push('li{margin:5px 0px}'); + arr.push('div,ul,ol{margin-bottom:10px}'); + } + arr.push('</style>'); + // 加载 css + if (!K.isArray(cssPath)) { + cssPath = [cssPath]; + } + if (K.inArray(self.options.pluginsPath+'code/prism.css', cssPath) < 0) { + cssPath.push(self.options.pluginsPath+'code/prism.css'); + } + K.each(cssPath, function(i, path) { + if (path) { + arr.push('<link href="' + path + '" rel="stylesheet" />'); + } + }); + if (self.options.cssData) { + arr.push('<style>' + self.options.cssData + '</style>'); + } + arr.push('</head><body ' + (self.options.bodyClass ? 'class="' + self.options.bodyClass + '"' : '') + '>'); + // 获取编辑器内容 + arr.push(self.fullHtml()); + // 加载脚本 + if (!K.isArray(jsPath)) { + jsPath = [jsPath]; + } + // 加载代码高亮的脚本 + if (K.inArray(self.options.pluginsPath+'code/prism.js', jsPath) < 0) { + jsPath.push(self.options.pluginsPath+'code/prism.js'); + } + K.each(jsPath, function(i, path) { + if (path) { + arr.push('<script type="text/javascript" src="' + path + '"></script>'); + } + }); + arr.push('</body></html>'); + doc.write(arr.join('\n')); + doc.close(); + K(doc.body).css('background-color', '#FFF'); + iframe[0].contentWindow.focus(); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/quickformat/quickformat.js b/public/assets/addons/nkeditor/plugins/quickformat/quickformat.js new file mode 100644 index 0000000..5b98c72 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/quickformat/quickformat.js @@ -0,0 +1,81 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('quickformat', function(K) { + var self = this, name = 'quickformat', + blockMap = K.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p'); + function getFirstChild(knode) { + var child = knode.first(); + while (child && child.first()) { + child = child.first(); + } + return child; + } + self.clickToolbar(name, function() { + self.focus(); + var doc = self.edit.doc, + range = self.cmd.range, + child = K(doc.body).first(), next, + nodeList = [], subList = [], + bookmark = range.createBookmark(true); + while(child) { + next = child.next(); + var firstChild = getFirstChild(child); + if (!firstChild || firstChild.name != 'img') { + if (blockMap[child.name]) { + child.html(child.html().replace(/^(\s| | )+/ig, '')); + child.css('text-indent', '2em'); + } else { + subList.push(child); + } + if (!next || (blockMap[next.name] || blockMap[child.name] && !blockMap[next.name])) { + if (subList.length > 0) { + nodeList.push(subList); + } + subList = []; + } + } + child = next; + } + K.each(nodeList, function(i, subList) { + var wrapper = K('<p style="text-indent:2em;"></p>', doc); + subList[0].before(wrapper); + K.each(subList, function(i, knode) { + wrapper.append(knode); + }); + }); + range.moveToBookmark(bookmark); + self.addBookmark(); + }); +}); + +/** +-------------------------- +abcd<br /> +1234<br /> + +to + +<p style="text-indent:2em;"> + abcd<br /> + 1234<br /> +</p> + +-------------------------- + + abcd<img>1233 +<p>1234</p> + +to + +<p style="text-indent:2em;">abcd<img>1233</p> +<p style="text-indent:2em;">1234</p> + +-------------------------- +*/ \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/quote/quote.js b/public/assets/addons/nkeditor/plugins/quote/quote.js new file mode 100644 index 0000000..b4daca4 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/quote/quote.js @@ -0,0 +1,12 @@ +/** + * 引用插件 + * @author yangjian + */ +KindEditor.plugin('quote', function(K) { + var self = this; + var name = 'quote'; + self.clickToolbar(name, function() { + self.insertHtml('<blockquote class="ke-quote"><p>这里输入引用内容...</p></blockquote><br/>'); + self.focus(); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/table/table.js b/public/assets/addons/nkeditor/plugins/table/table.js new file mode 100644 index 0000000..1068edc --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/table/table.js @@ -0,0 +1,746 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('table', function(K) { + var self = this, name = 'table', lang = self.lang(name + '.'), zeroborder = 'ke-zeroborder'; + var borderColor = K.undef(self.options.tableBorderColor, '#cccccc'); + // 设置颜色 + function _setColor(box, color) { + color = color.toUpperCase(); + box.css('background-color', color); + box.css('color', color === '#000000' ? '#FFFFFF' : '#000000'); + box.html(color); + } + // 初始化取色器 + var pickerList = []; + function _initColorPicker(dialogDiv, colorBox) { + colorBox.bind('click,mousedown', function(e){ + e.stopPropagation(); + }); + function removePicker() { + K.each(pickerList, function() { + this.remove(); + }); + pickerList = []; + K(document).unbind('click,mousedown', removePicker); + dialogDiv.unbind('click,mousedown', removePicker); + } + colorBox.click(function(e) { + removePicker(); + var box = K(this), + pos = box.pos(); + var picker = K.colorpicker({ + x : pos.x, + y : pos.y + box.height(), + z : 811214, + selectedColor : K(this).html(), + colors : self.colorTable, + noColor : self.lang('noColor'), + shadowMode : self.shadowMode, + click : function(color) { + _setColor(box, color); + removePicker(); + } + }); + pickerList.push(picker); + K(document).bind('click,mousedown', removePicker); + dialogDiv.bind('click,mousedown', removePicker); + }); + } + // 取得下一行cell的index + function _getCellIndex(table, row, cell) { + var rowSpanCount = 0; + for (var i = 0, len = row.cells.length; i < len; i++) { + if (row.cells[i] == cell) { + break; + } + rowSpanCount += row.cells[i].rowSpan - 1; + } + return cell.cellIndex - rowSpanCount; + } + self.plugin.table = { + //insert or modify table + prop : function(isInsert) { + var html = [ + '<div class="ke-dialog-content-inner">', + //rows, cols + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keRows" class="row-left">' + lang.cells + ':</label>', + '<div class="row-right">', + lang.rows + ' <input type="text" id="keRows" class="ke-input-text ke-input-number" name="rows" value="" maxlength="4" /> ', + lang.cols + ' <input type="text" class="ke-input-text ke-input-number" name="cols" value="" maxlength="4" />', + '</div>', + '</div>', + //width, height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" class="row-left">' + lang.size + ':</label>', + '<div class="row-right">', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType" class="ke-select">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + '</div>', + //space, padding + '<div class="ke-dialog-row ke-clearfix">', + '<label for="kePadding" class="row-left">' + lang.space + ':</label>', + '<div class="row-right">', + lang.padding + ' <input type="text" id="kePadding" class="ke-input-text ke-input-number" name="padding" value="" maxlength="4" /> ', + lang.spacing + ' <input type="text" class="ke-input-text ke-input-number" name="spacing" value="" maxlength="4" />', + '</div>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" class="row-left">' + lang.align + ':</label>', + '<div class="row-right">', + '<select id="keAlign" class="ke-select" name="align">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select>', + '</div>', + '</div>', + //border + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" class="row-left">' + lang.border + ':</label>', + '<div class="row-right">', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + //background color + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" class="row-left">' + lang.backgroundColor + ':</label>', + '<div class="row-right">', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var rows = rowsBox.val(), + cols = colsBox.val(), + width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + align = alignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (rows == 0 || !/^\d+$/.test(rows)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + rowsBox[0].focus(); + return; + } + if (cols == 0 || !/^\d+$/.test(cols)) { + K.options.errorMsgHandler(self.lang('invalidRows'), "error"); + colsBox[0].focus(); + return; + } + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(padding)) { + K.options.errorMsgHandler(self.lang('invalidPadding'), "error"); + paddingBox[0].focus(); + return; + } + if (!/^\d*$/.test(spacing)) { + K.options.errorMsgHandler(self.lang('invalidSpacing'), "error"); + spacingBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + //modify table + if (table) { + if (width !== '') { + table.width(width + widthType); + } else { + table.css('width', ''); + } + if (table[0].width !== undefined) { + table.removeAttr('width'); + } + if (height !== '') { + table.height(height + heightType); + } else { + table.css('height', ''); + } + if (table[0].height !== undefined) { + table.removeAttr('height'); + } + table.css('background-color', bgColor); + if (table[0].bgColor !== undefined) { + table.removeAttr('bgColor'); + } + if (padding !== '') { + table[0].cellPadding = padding; + } else { + table.removeAttr('cellPadding'); + } + if (spacing !== '') { + table[0].cellSpacing = spacing; + } else { + table.removeAttr('cellSpacing'); + } + if (align !== '') { + table[0].align = align; + } else { + table.removeAttr('align'); + } + if (border !== '') { + table.attr('border', border); + } else { + table.removeAttr('border'); + } + if (border === '' || border === '0') { + table.addClass(zeroborder); + } else { + table.removeClass(zeroborder); + } + if (borderColor !== '') { + table.attr('borderColor', borderColor); + } else { + table.removeAttr('borderColor'); + } + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + return; + } + //insert new table + var style = ''; + if (width !== '') { + style += 'width:' + width + widthType + ';'; + } + if (height !== '') { + style += 'height:' + height + heightType + ';'; + } + if (bgColor !== '') { + style += 'background-color:' + bgColor + ';'; + } + var html = '<table class="table"'; + if (style !== '') { + html += ' style="' + style + '"'; + } + if (padding !== '') { + html += ' cellpadding="' + padding + '"'; + } + if (spacing !== '') { + html += ' cellspacing="' + spacing + '"'; + } + if (align !== '') { + html += ' align="' + align + '"'; + } + if (border !== '') { + html += ' border="' + border + '"'; + } + if (border === '' || border === '0') { + html += ' class="table ' + zeroborder + '"'; + } + if (borderColor !== '') { + html += ' bordercolor="' + borderColor + '"'; + } + html += '>'; + for (var i = 0; i < rows; i++) { + html += '<tr>'; + for (var j = 0; j < cols; j++) { + html += '<td>' + (K.IE ? ' ' : '<br />') + '</td>'; + } + html += '</tr>'; + } + html += '</table>'; + if (!K.IE) { + html += '<br />'; + } + // 取得range的block标签 + function getAncestorTag(range) { + var ancestor = K(range.commonAncestor()); + while (ancestor) { + if (ancestor.type == 1 && !ancestor.isStyle()) { + break; + } + ancestor = ancestor.parent(); + } + return ancestor; + } + // 如果是在 p 标签中插入表格,则自动删除当前 p 标签 + var tag = getAncestorTag(self.cmd.range); + if (tag.name == 'p') { + tag.before(K(html)); + tag.remove(); + self.cmd.selection(); + self.insertHtml('<br />'); + self.select().hideDialog().focus(); + } else { + self.insertHtml(html); + self.select().hideDialog().focus(); + self.addBookmark(); + } + } + } + }), + div = dialog.div, + rowsBox = K('[name="rows"]', div).val(3), + colsBox = K('[name="cols"]', div).val(2), + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + alignBox = K('[name="align"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), borderColor); + _setColor(colorBox.eq(1), ''); + // foucs and select + rowsBox[0].focus(); + rowsBox[0].select(); + var table; + if (isInsert) { + return; + } + //get selected table node + table = self.plugin.getSelectedTable(); + if (table) { + rowsBox.val(table[0].rows.length); + colsBox.val(table[0].rows.length > 0 ? table[0].rows[0].cells.length : 0); + rowsBox.attr('disabled', true); + colsBox.attr('disabled', true); + var match, + tableWidth = table[0].style.width || table[0].width, + tableHeight = table[0].style.height || table[0].height; + if (tableWidth !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if (tableHeight !== undefined && (match = /^(\d+)((?:px|%)*)$/.exec(tableHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + paddingBox.val(table[0].cellPadding || ''); + spacingBox.val(table[0].cellSpacing || ''); + alignBox.val(table[0].align || ''); + borderBox.val(table[0].border === undefined ? '' : table[0].border); + _setColor(colorBox.eq(0), K.toHex(table.attr('borderColor') || '')); + _setColor(colorBox.eq(1), K.toHex(table[0].style.backgroundColor || table[0].bgColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + } + }, + //modify cell + cellprop : function() { + var html = [ + '<div style="padding:20px;">', + //width, height + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keWidth" style="width:90px;">' + lang.size + '</label>', + lang.width + ' <input type="text" id="keWidth" class="ke-input-text ke-input-number" name="width" value="" maxlength="4" /> ', + '<select name="widthType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select> ', + lang.height + ' <input type="text" class="ke-input-text ke-input-number" name="height" value="" maxlength="4" /> ', + '<select name="heightType">', + '<option value="%">' + lang.percent + '</option>', + '<option value="px">' + lang.px + '</option>', + '</select>', + '</div>', + //align + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keAlign" style="width:90px;">' + lang.align + '</label>', + lang.textAlign + ' <select id="keAlign" name="textAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="left">' + lang.alignLeft + '</option>', + '<option value="center">' + lang.alignCenter + '</option>', + '<option value="right">' + lang.alignRight + '</option>', + '</select> ', + lang.verticalAlign + ' <select name="verticalAlign">', + '<option value="">' + lang.alignDefault + '</option>', + '<option value="top">' + lang.alignTop + '</option>', + '<option value="middle">' + lang.alignMiddle + '</option>', + '<option value="bottom">' + lang.alignBottom + '</option>', + '<option value="baseline">' + lang.alignBaseline + '</option>', + '</select>', + '</div>', + //border + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBorder" style="width:90px;">' + lang.border + '</label>', + lang.borderWidth + ' <input type="text" id="keBorder" class="ke-input-text ke-input-number" name="border" value="" maxlength="4" /> ', + lang.borderColor + ' <span class="ke-inline-block ke-input-color"></span>', + '</div>', + //background color + '<div class="ke-dialog-row ke-clearfix">', + '<label for="keBgColor" style="width:90px;">' + lang.backgroundColor + '</label>', + '<span class="ke-inline-block ke-input-color"></span>', + '</div>', + '</div>' + ].join(''); + var bookmark = self.cmd.range.createBookmark(); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang('tablecell'), + body : html, + beforeRemove : function() { + colorBox.unbind(); + }, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var width = widthBox.val(), + height = heightBox.val(), + widthType = widthTypeBox.val(), + heightType = heightTypeBox.val(), + padding = paddingBox.val(), + spacing = spacingBox.val(), + textAlign = textAlignBox.val(), + verticalAlign = verticalAlignBox.val(), + border = borderBox.val(), + borderColor = K(colorBox[0]).html() || '', + bgColor = K(colorBox[1]).html() || ''; + if (!/^\d*$/.test(width)) { + K.options.errorMsgHandler(self.lang('invalidWidth'), "error"); + widthBox[0].focus(); + return; + } + if (!/^\d*$/.test(height)) { + K.options.errorMsgHandler(self.lang('invalidHeight'), "error"); + heightBox[0].focus(); + return; + } + if (!/^\d*$/.test(border)) { + K.options.errorMsgHandler(self.lang('invalidBorder'), "error"); + borderBox[0].focus(); + return; + } + cell.css({ + width : width !== '' ? (width + widthType) : '', + height : height !== '' ? (height + heightType) : '', + 'background-color' : bgColor, + 'text-align' : textAlign, + 'vertical-align' : verticalAlign, + 'border-width' : border, + 'border-style' : border !== '' ? 'solid' : '', + 'border-color' : borderColor + }); + self.hideDialog().focus(); + self.cmd.range.moveToBookmark(bookmark); + self.cmd.select(); + self.addBookmark(); + } + } + }), + div = dialog.div, + widthBox = K('[name="width"]', div).val(100), + heightBox = K('[name="height"]', div), + widthTypeBox = K('[name="widthType"]', div), + heightTypeBox = K('[name="heightType"]', div), + paddingBox = K('[name="padding"]', div).val(0), + spacingBox = K('[name="spacing"]', div).val(0), + textAlignBox = K('[name="textAlign"]', div), + verticalAlignBox = K('[name="verticalAlign"]', div), + borderBox = K('[name="border"]', div).val(1), + colorBox = K('.ke-input-color', div); + _initColorPicker(div, colorBox.eq(0)); + _initColorPicker(div, colorBox.eq(1)); + //_setColor(colorBox.eq(0), '#000000'); + _setColor(colorBox.eq(1), ''); + // foucs and select + widthBox[0].focus(); + widthBox[0].select(); + // get selected cell + var cell = self.plugin.getSelectedCell(); + var match, + cellWidth = cell[0].style.width || cell[0].width || '', + cellHeight = cell[0].style.height || cell[0].height || ''; + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellWidth))) { + widthBox.val(match[1]); + widthTypeBox.val(match[2]); + } else { + widthBox.val(''); + } + if ((match = /^(\d+)((?:px|%)*)$/.exec(cellHeight))) { + heightBox.val(match[1]); + heightTypeBox.val(match[2]); + } + textAlignBox.val(cell[0].style.textAlign || ''); + verticalAlignBox.val(cell[0].style.verticalAlign || ''); + var border = cell[0].style.borderWidth || ''; + if (border) { + border = parseInt(border); + } + borderBox.val(border); + _setColor(colorBox.eq(0), K.toHex(cell[0].style.borderColor || '')); + _setColor(colorBox.eq(1), K.toHex(cell[0].style.backgroundColor || '')); + widthBox[0].focus(); + widthBox[0].select(); + }, + insert : function() { + this.prop(true); + }, + 'delete' : function() { + var table = self.plugin.getSelectedTable(); + self.cmd.range.setStartBefore(table[0]).collapse(true); + self.cmd.select(); + table.remove(); + self.addBookmark(); + }, + colinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex + offset; + // 取得第一行的index + index += table.rows[0].cells.length - row.cells.length; + + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.insertCell(index); + newCell.innerHTML = K.IE ? '' : '<br />'; + // 调整下一行的单元格index + index = _getCellIndex(table, newRow, newCell); + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colinsertleft : function() { + this.colinsert(0); + }, + colinsertright : function() { + this.colinsert(1); + }, + rowinsert : function(offset) { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0]; + var rowIndex = row.rowIndex; + if (offset === 1) { + rowIndex = row.rowIndex + (cell.rowSpan - 1) + offset; + } + var newRow = table.insertRow(rowIndex); + + for (var i = 0, len = row.cells.length; i < len; i++) { + // 调整cell个数 + if (row.cells[i].rowSpan > 1) { + len -= row.cells[i].rowSpan - 1; + } + var newCell = newRow.insertCell(i); + // copy colspan + if (offset === 1 && row.cells[i].colSpan > 1) { + newCell.colSpan = row.cells[i].colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + // 调整rowspan + for (var j = rowIndex; j >= 0; j--) { + var cells = table.rows[j].cells; + if (cells.length > i) { + for (var k = cell.cellIndex; k >= 0; k--) { + if (cells[k].rowSpan > 1) { + cells[k].rowSpan += 1; + } + } + break; + } + } + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowinsertabove : function() { + this.rowinsert(0); + }, + rowinsertbelow : function() { + this.rowinsert(1); + }, + rowmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + nextRowIndex = rowIndex + cell.rowSpan, // 下一行的index + nextRow = table.rows[nextRowIndex]; // 下一行 + // 最后一行不能合并 + if (table.rows.length <= nextRowIndex) { + return; + } + var cellIndex = cell.cellIndex; // 下一行单元格的index + if (nextRow.cells.length <= cellIndex) { + return; + } + var nextCell = nextRow.cells[cellIndex]; // 下一行单元格 + // 上下行的colspan不一致时不能合并 + if (cell.colSpan !== nextCell.colSpan) { + return; + } + cell.rowSpan += nextCell.rowSpan; + nextRow.deleteCell(cellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colmerge : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex, // 当前行的index + cellIndex = cell.cellIndex, + nextCellIndex = cellIndex + 1; + // 最后一列不能合并 + if (row.cells.length <= nextCellIndex) { + return; + } + var nextCell = row.cells[nextCellIndex]; + // 左右列的rowspan不一致时不能合并 + if (cell.rowSpan !== nextCell.rowSpan) { + return; + } + cell.colSpan += nextCell.colSpan; + row.deleteCell(nextCellIndex); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + rowsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 不是可分割单元格 + if (cell.rowSpan === 1) { + return; + } + var cellIndex = _getCellIndex(table, row, cell); + for (var i = 1, len = cell.rowSpan; i < len; i++) { + var newRow = table.rows[rowIndex + i], + newCell = newRow.insertCell(cellIndex); + if (cell.colSpan > 1) { + newCell.colSpan = cell.colSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + // 调整下一行的单元格index + cellIndex = _getCellIndex(table, newRow, newCell); + } + K(cell).removeAttr('rowSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + colsplit : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + cellIndex = cell.cellIndex; + // 不是可分割单元格 + if (cell.colSpan === 1) { + return; + } + for (var i = 1, len = cell.colSpan; i < len; i++) { + var newCell = row.insertCell(cellIndex + i); + if (cell.rowSpan > 1) { + newCell.rowSpan = cell.rowSpan; + } + newCell.innerHTML = K.IE ? '' : '<br />'; + } + K(cell).removeAttr('colSpan'); + self.cmd.range.selectNodeContents(cell).collapse(true); + self.cmd.select(); + self.addBookmark(); + }, + coldelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + index = cell.cellIndex; + for (var i = 0, len = table.rows.length; i < len; i++) { + var newRow = table.rows[i], + newCell = newRow.cells[index]; + if (newCell.colSpan > 1) { + newCell.colSpan -= 1; + if (newCell.colSpan === 1) { + K(newCell).removeAttr('colSpan'); + } + } else { + newRow.deleteCell(index); + } + // 跳过不需要删除的行 + if (newCell.rowSpan > 1) { + i += newCell.rowSpan - 1; + } + } + if (row.cells.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + }, + rowdelete : function() { + var table = self.plugin.getSelectedTable()[0], + row = self.plugin.getSelectedRow()[0], + cell = self.plugin.getSelectedCell()[0], + rowIndex = row.rowIndex; + // 从下到上删除 + for (var i = cell.rowSpan - 1; i >= 0; i--) { + table.deleteRow(rowIndex + i); + } + if (table.rows.length === 0) { + self.cmd.range.setStartBefore(table).collapse(true); + self.cmd.select(); + K(table).remove(); + } else { + self.cmd.selection(true); + } + self.addBookmark(); + } + }; + self.clickToolbar(name, self.plugin.table.prop); +}); diff --git a/public/assets/addons/nkeditor/plugins/template/html/1.html b/public/assets/addons/nkeditor/plugins/template/html/1.html new file mode 100644 index 0000000..034126b --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/template/html/1.html @@ -0,0 +1,14 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <h3> + <img align="left" height="100" style="margin-right: 10px" width="100" />在此处输入标题 + </h3> + <p> + 在此处输入内容 + </p> +</body> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/template/html/2.html b/public/assets/addons/nkeditor/plugins/template/html/2.html new file mode 100644 index 0000000..dc2584a --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/template/html/2.html @@ -0,0 +1,42 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <h3> + 标题 + </h3> + <table style="width:100%;" cellpadding="2" cellspacing="0" border="1"> + <tbody> + <tr> + <td> + <h3>标题1</h3> + </td> + <td> + <h3>标题1</h3> + </td> + </tr> + <tr> + <td> + 内容1 + </td> + <td> + 内容2 + </td> + </tr> + <tr> + <td> + 内容3 + </td> + <td> + 内容4 + </td> + </tr> + </tbody> + </table> + <p> + 表格说明 + </p> +</body> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/template/html/3.html b/public/assets/addons/nkeditor/plugins/template/html/3.html new file mode 100644 index 0000000..873f0c6 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/template/html/3.html @@ -0,0 +1,36 @@ +<!doctype html> +<html> +<head> + <meta charset="utf-8" /> +</head> +<body> + <p> + 在此处输入内容 + </p> + <ol> + <li> + 描述1 + </li> + <li> + 描述2 + </li> + <li> + 描述3 + </li> + </ol> + <p> + 在此处输入内容 + </p> + <ul> + <li> + 描述1 + </li> + <li> + 描述2 + </li> + <li> + 描述3 + </li> + </ul> +</body> +</html> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/plugins/template/template.js b/public/assets/addons/nkeditor/plugins/template/template.js new file mode 100644 index 0000000..30d0dc3 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/template/template.js @@ -0,0 +1,58 @@ +/******************************************************************************* +* KindEditor - WYSIWYG HTML Editor for Internet +* Copyright (C) 2006-2011 kindsoft.net +* +* @author Roddy <luolonghao@gmail.com> +* @site http://www.kindsoft.net/ +* @licence http://www.kindsoft.net/license.php +*******************************************************************************/ + +KindEditor.plugin('template', function(K) { + var self = this, name = 'template', lang = self.lang(name + '.'), + htmlPath = self.pluginsPath + name + '/html/'; + function getFilePath(fileName) { + return htmlPath + fileName + '?ver=' + encodeURIComponent(K.DEBUG ? K.TIME : K.VERSION); + } + self.clickToolbar(name, function() { + var lang = self.lang(name + '.'), + arr = ['<div class="ke-dialog-content-inner" style="padding-top:0">', + '<div class="ke-dialog-row ke-clearfix">', + '<div class="ke-header" style="height: 32px;">', + // left start + lang. selectTemplate + ' <select class="ke-select">']; + K.each(lang.fileList, function(key, val) { + arr.push('<option value="' + key + '">' + val + '</option>'); + }); + html = [arr.join(''), + '</select>', + // right start + '<input type="checkbox" id="keReplaceFlag" class="checkbox" name="replaceFlag" value="1" /> <label for="keReplaceFlag">' + lang.replaceContent + '</label>', + '</div>', + '</div>', + + //template iframe + '<iframe class="ke-textarea" frameborder="0" style="width:458px;height:260px;background-color:#FFF;"></iframe>', + '</div>'].join(''); + var dialog = self.createDialog({ + name : name, + width : 500, + title : self.lang(name), + body : html, + yesBtn : { + name : self.lang('yes'), + click : function(e) { + var doc = K.iframeDoc(iframe); + self[checkbox[0].checked ? 'html' : 'insertHtml'](doc.body.innerHTML).hideDialog().focus(); + } + } + }); + var selectBox = K('select', dialog.div), + checkbox = K('[name="replaceFlag"]', dialog.div), + iframe = K('iframe', dialog.div); + checkbox[0].checked = true; + iframe.attr('src', getFilePath(selectBox.val())); + selectBox.change(function() { + iframe.attr('src', getFilePath(this.value)); + }); + }); +}); diff --git a/public/assets/addons/nkeditor/plugins/wordpaste/wordpaste.js b/public/assets/addons/nkeditor/plugins/wordpaste/wordpaste.js new file mode 100644 index 0000000..9f828e0 --- /dev/null +++ b/public/assets/addons/nkeditor/plugins/wordpaste/wordpaste.js @@ -0,0 +1,79 @@ +/******************************************************************************* + * KindEditor - WYSIWYG HTML Editor for Internet + * Copyright (C) 2006-2011 kindsoft.net + * + * @author Roddy <luolonghao@gmail.com> + * @site http://www.kindsoft.net/ + * @licence http://www.kindsoft.net/license.php + *******************************************************************************/ + +KindEditor.plugin('wordpaste', function (K) { + var self = this, name = 'wordpaste'; + self.clickToolbar(name, function () { + var jsonp = function (url, callback) { + var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random()); + window[callbackName] = function (data) { + delete window[callbackName]; + document.body.removeChild(script); + callback(data); + }; + + var script = document.createElement('script'); + script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName; + document.body.appendChild(script); + }; + var lang = self.lang(name + '.'), + html = '<div style="padding:10px 20px;">' + + '<div style="margin-bottom:10px;">' + lang.comment + '</div>' + + '<iframe class="ke-textarea" frameborder="0" style="width:408px;height:260px;"></iframe>' + + '</div>', + dialog = self.createDialog({ + name: name, + width: 450, + title: self.lang(name), + body: html, + yesBtn: { + name: self.lang('yes'), + click: function (e) { + var str = doc.body.innerHTML; + str = K.clearMsWord(str, self.filterMode ? self.htmlTags : K.options.htmlTags); + if (typeof self.wordImageServer !== 'undefined' && self.wordImageServer) { + var i = 0; + var arr = []; + var replacedStr = str.replace(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/ig, function (value) { + arr[i] = value; + var replaced = "##" + i + "##"; + i++; + return replaced; + }); + for (var j = 0; j < arr.length; j++) { + jsonp("http://" + self.wordImageServer + "/word?index=" + j + "&file=" + encodeURIComponent(arr[j]), function (data) { + K.uploadwordimage.call(self, data.index, data.info); + }); + } + str = replacedStr; + } + self.insertHtml(str).hideDialog().focus(); + } + } + }), + div = dialog.div, + iframe = K('iframe', div), + doc = K.iframeDoc(iframe); + if (!K.IE) { + doc.designMode = 'on'; + } + doc.open(); + doc.write('<!doctype html><html><head><title>WordPaste</title></head>'); + doc.write('<body style="background-color:#FFF;font-size:12px;margin:2px;">'); + if (!K.IE) { + doc.write('<br />'); + } + doc.write('</body></html>'); + doc.close(); + if (K.IE) { + doc.body.contentEditable = 'true'; + } + iframe[0].contentWindow.focus(); + }); +}); diff --git a/public/assets/addons/nkeditor/themes/app.css b/public/assets/addons/nkeditor/themes/app.css new file mode 100644 index 0000000..baba45f --- /dev/null +++ b/public/assets/addons/nkeditor/themes/app.css @@ -0,0 +1,96 @@ +/* 引用样式 */ +blockquote { + padding: 20px; + margin: 20px 0; + border: 1px solid #eee; + border-left-width: 5px; + border-left-color: #ce4844; + border-radius: 3px; +} + +blockquote, q { + quotes: none; +} + +/* 表格样式 */ +table { + border-spacing: 0; + border-collapse: collapse; +} + +td, +th { + padding: 0; +} + +.table { + border-collapse: collapse !important; +} + +.table td, +.table th { + background-color: #fff !important; + border: 1px solid #ddd; +} + +.table-bordered th, +.table-bordered td { + border: 1px solid #ddd !important; +} + +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} + +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} + +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} + +.table > tbody + tbody { + border-top: 2px solid #ddd; +} + +.table .table { + background-color: #fff; +} + +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} + +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} + +.ke-content img { + max-width: 100%; +} diff --git a/public/assets/addons/nkeditor/themes/black/editor.css b/public/assets/addons/nkeditor/themes/black/editor.css new file mode 100644 index 0000000..a84525c --- /dev/null +++ b/public/assets/addons/nkeditor/themes/black/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-black .ke-toolbar { + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-black .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-black .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-black .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-black .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-black .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-black .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-black .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-black .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-black .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-black .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-black .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-black .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-black .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-black .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-black .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-black .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-black .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-black .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-black .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-black .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-black .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-black .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-black .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-black .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-black .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-black .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-black .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-black .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-black .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-black .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-black .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-black .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-black .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-black .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-black .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-black .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-black .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-black .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-black .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-black .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-black .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-black .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-black .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-black .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-black .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-black .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-black .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-black .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-black .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-black .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-black .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-black .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-black .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-black .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-black .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-black .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/public/assets/addons/nkeditor/themes/black/editor.css.map b/public/assets/addons/nkeditor/themes/black/editor.css.map new file mode 100644 index 0000000..6d1b06d --- /dev/null +++ b/public/assets/addons/nkeditor/themes/black/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/black/editor.min.css b/public/assets/addons/nkeditor/themes/black/editor.min.css new file mode 100644 index 0000000..f5d26e0 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/black/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-black .ke-toolbar{border-top:5px solid #222;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-black .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-black .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-black .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-black .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-black .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-black .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-black .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-black .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-black .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-black .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-black .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-black .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-black .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-black .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-black .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-black .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-black .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-black .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-black .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-black .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-black .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-black .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-black .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-black .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-black .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-black .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-black .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-black .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-black .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-black .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-black .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-black .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-black .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-black .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-black .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-black .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-black .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-black .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-black .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-black .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-black .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-black .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-black .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-black .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-black .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-black .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-black .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-black .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-black .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-black .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-black .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-black .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-black .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-black .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-black .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-black .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-black .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/black/editor.scss b/public/assets/addons/nkeditor/themes/black/editor.scss new file mode 100644 index 0000000..3148e8c --- /dev/null +++ b/public/assets/addons/nkeditor/themes/black/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-black { + .ke-toolbar { + + border-top: 5px solid #222222; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-black { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/black/images/nkeditor.png b/public/assets/addons/nkeditor/themes/black/images/nkeditor.png new file mode 100644 index 0000000..f3fbea2 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/black/images/nkeditor.png differ diff --git a/public/assets/addons/nkeditor/themes/black/images/nkeditor.svg b/public/assets/addons/nkeditor/themes/black/images/nkeditor.svg new file mode 100644 index 0000000..56416dd --- /dev/null +++ b/public/assets/addons/nkeditor/themes/black/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#333" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#333" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#333" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#333" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#333" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#333" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#333" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#333" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#333" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#333" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#333" d="M3 10h7v1h-7v-1z"></path> +<path fill="#333" d="M3 8h7v1h-7v-1z"></path> +<path fill="#333" d="M3 12h4v1h-4v-1z"></path> +<path fill="#333" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#333" d="M3 6h7v1h-7v-1z"></path> +<path fill="#333" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#333" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#333" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#333" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#333" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#333" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#333" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#333" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#333" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#333" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#333" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#333" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#333" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#333" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#333" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#333" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#333" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#333" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#333" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#333" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#333" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#333" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#333" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#333" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#333" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#333" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#333" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#333" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#333" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#333" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#333" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#333" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#333" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#333" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#333" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#333" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#333" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#333" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#333" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#333" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#333" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#333" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#333" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#333" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#333" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#333" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#333" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#333" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#333" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#333" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#333" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#333" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#333" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#333" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#333" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#333" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#333" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#333" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#333" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#333" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#333" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#333" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#333" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#333" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#333" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#333" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#333" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#333" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#333" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#333" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#333" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#333" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#333" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#333" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#333" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#333" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#333" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#333" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#333" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#333" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#333" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#333" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#333" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#333" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#333" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#333" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#333" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#333" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#333" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#333" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#333" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/public/assets/addons/nkeditor/themes/blue/editor.css b/public/assets/addons/nkeditor/themes/blue/editor.css new file mode 100644 index 0000000..7a14292 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/blue/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-blue .ke-toolbar { + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-blue .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-blue .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-blue .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-blue .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-blue .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-blue .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-blue .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-blue .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-blue .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-blue .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-blue .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-blue .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-blue .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-blue .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-blue .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-blue .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-blue .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-blue .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-blue .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-blue .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-blue .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-blue .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-blue .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-blue .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-blue .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-blue .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-blue .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-blue .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-blue .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-blue .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-blue .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-blue .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-blue .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-blue .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-blue .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-blue .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-blue .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-blue .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-blue .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-blue .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-blue .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-blue .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-blue .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-blue .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-blue .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-blue .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-blue .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-blue .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-blue .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-blue .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-blue .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-blue .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-blue .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/public/assets/addons/nkeditor/themes/blue/editor.css.map b/public/assets/addons/nkeditor/themes/blue/editor.css.map new file mode 100644 index 0000000..01a6d6f --- /dev/null +++ b/public/assets/addons/nkeditor/themes/blue/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAgCA;;EAEE;AAEF,YAAa;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;;AAEf,kBAAmB;EACf,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,CAAC;EACZ,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AAGtB,YAAa;EACT,SAAS,EAAE,MAAM;EACjB,kBAAkB,EAAE,IAAI;EACxB,mBAAmB,EAAE,IAAI;;AAE7B,iBAQC;EAPG,IAAK;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,sBAAsB;EAErC,GAAI;IACA,OAAO,EAAE,CAAC;AAKlB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;;AAEhB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EACN,QAAQ,EAAE,QAAQ;;AAGtB;;GAEG;AACH,aAAc;EAEV,OAAO,EAAE,KAAK;EAEd,gBAAgB,EAAE,IAAI;EACtB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,gEAA0D;EAEtE;;KAEG;EAcH;;KAEG;EA0DH;;KAEG;EAwBH;;KAEG;EArGH,wBAAW;IAvEX,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,mBAAmB;IACpC,kBAAkB,EAAE,mBAAmB;IACvC,MAAM,EAAE,oFAAoF;IAsExF,gBAAgB,EAAE,OAAO;EAG7B;;;kCAGmB;IACf,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAMzB,yBAAY;IAER,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,OAAO;IAEhB,qCAAY;MAER,OAAO,EAAE,QAAQ;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;MAEX;;SAEG;MACH,sDAAiB;QApHzB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO;IAoHX,gCAAO;MACH,UAAU,EAAE,OAAO;IAEvB,sCAAa;MACT,gBAAgB,EAAE,OAAO;IAE7B,sCAAa;MACT,MAAM,EAAE,OAAO;IAEnB,uCAAc;MACV,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,OAAO;MACf,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;MAChB,KAAK,EAAE,CAAC;MACR,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,QAAQ,EAAE,MAAM;MAChB,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;IAEf,gCAAO;MACH,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,sBAAsB;MAC7B,UAAU,EAAE,OAAO;EAQ3B,sBAAS;IACL,OAAO,EAAE,CAAC;IAEV;4CACkB;MACd,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,IAAI;IAElB,wCAAkB;MACd,IAAI,EAAE,4FAA4F;MAClG,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,IAAI;MACd,MAAM,EAAE,IAAI;MAEZ,8CAAQ;QACJ,OAAO,EAAE,IAAI;EASzB,2BAAc;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,OAAO;IACzB,UAAU,EAvMG,iBAAiB;IAwM9B,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;IAEb,qDAA0B;MACtB,mBAAmB,EAAE,WAAW;MAChC,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;IAGhB,oDAAyB;MACrB,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,SAAS;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;;AAMxB;;OAEO;AACP,QAAS;EACL,MAAM,EArOW,iBAAiB;EAsOlC,gBAAgB,EArOL,OAAO;EAsOlB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,wCAAwC;EACrD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAgEhB;;KAEG;EAhEH,sBAAc;IACV,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,OAAO;IAEf,uCAAiB;MAlPrB,OAAO,EAAE,iBAAiB;MAC1B,OAAO,EAAE,YAAY;MACrB,cAAc,EAAE,MAAM;MACtB,IAAI,EAAE,CAAC;MACP,QAAQ,EAAE,MAAM;MAiPR,wDAAiB;QArPzB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;IAsPZ,yCAAmB;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,QAAQ,EAAE,MAAM;IAKpB,2CAAqB;MACjB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;IAGpB,8CAAwB;MACpB,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;IAGnC,0CAAoB;MAChB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;IAGpB,yCAAmB;MACf,MAAM,EAAE,KAAK;MACb,MAAM,EAAE,CAAC;MACT,QAAQ,EAAE,MAAM;MAChB,UAAU,EAjSD,iBAAiB;MAkS1B,aAAa,EAAE,iBAAiB;MAChC,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;EAIvB,yBAAiB;IACb,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;EAM7B,6BAAqB;IACjB,QAAQ,EAAE,QAAQ;IAElB,yCAAY;MACR,QAAQ,EAAE,QAAQ;MAClB,UAAU,EAAE,MAAM;MAClB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,IAAI;MACb,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,iBAAiB;MACzB,gBAAgB,EAAE,OAAO;MACzB,OAAO,EAAE,IAAI;MAEb,yDAAgB;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IAIlB,uCAAU;MACN,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,eAAe,EAAE,QAAQ;MAEzB,gDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,OAAO;QAEf,wDAAQ;UACJ,OAAO,EAAE,KAAK;UACd,iBAAiB,EAAE,SAAS;UAC5B,QAAQ,EAAE,MAAM;UAChB,MAAM,EAAE,GAAG;UACX,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;MAGjB,8CAAO;QACH,MAAM,EAAE,iBAAiB;QACzB,gBAAgB,EAAE,OAAO;IAIjC,sCAAS;MACL,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MACV,MAAM,EAAE,CAAC;MACT,IAAI,EAAE,+CAA+C;MACrD,KAAK,EAAE,IAAI;MACX,eAAe,EAAE,IAAI;;AAOjC;;GAEG;AACH,eAAgB;EACZ,MAAM,EAAE,iBAAiB;EACzB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EAEZ,qCAAsB;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,QAAQ;IAEzB,0DAAqB;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MAEV,qFAA2B;QACvB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;IAGjB,8DAAyB;MACrB,WAAW,EAAE,wCAAwC;MACrD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;IAEtB,6DAAwB;MACpB,MAAM,EAAE,iBAAiB;IAE7B,mEAA8B;MAC1B,MAAM,EAAE,iBAAiB;;AAMrC;;GAEG;AACH,UAAW;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAxaW,iBAAiB;EAyalC,IAAI,EAAE,CAAC;EAnZP,UAAU,EAAE,mBAAmB;EAC/B,eAAe,EAAE,mBAAmB;EACpC,kBAAkB,EAAE,mBAAmB;EACvC,MAAM,EAAE,oFAAoF;EAkZ5F,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,GAAG;EACvB,qBAAqB,EAAE,GAAG;EAC1B,QAAQ,EAAE,MAAM;EAGhB,4BAAkB;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,kEAAkE;IAC9E,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAEZ,kDAAsB;MAClB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;MACf,UAAU,EAAE,sCAAsC;MAClD,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MAER,wDAAQ;QACJ,mBAAmB,EAAE,SAAS;EAO1C,6BAAmB;IAEf,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IAGP,6CAAgB;MACZ,IAAI,EAAE,iDAAiD;MACvD,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;MAChB,KAAK,EAAE,IAAI;MAEX,0DAAa;QACT,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,iBAA2B;QAEnC,gEAAQ;UACJ,YAAY,EAhfP,OAAO;UAifZ,OAAO,EAAE,IAAI;MAIrB,wDAAW;QACP,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,iBAA2B;QACnC,MAAM,EA5fP,IAAI;MA8fP,sDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;MAGd,8DAAiB;QACb,KAAK,EAAE,IAAI;MAGf,gEAAmB;QACf,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAC,GAAG;MAGX,sDAAS;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,IAAI;QAEZ,4DAAQ;UACJ,OAAO,EAAE,IAAI;MAIrB,4DAAe;QACX,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,KAAK;QAChB,MAAM,EA1hBP,IAAI;QA2hBH,WAAW,EA3hBZ,IAAI;QA4hBH,MAAM,EAAC,iBAA2B;QAClC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,MAAM;QAEhB,kEAAQ;UACJ,YAAY,EAriBP,OAAO;MAyiBpB,6DAAgB;QACZ,MAAM,EAxiBD,iBAAiB;QAyiBtB,gBAAgB,EAAE,OAAO;QACzB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;MAGpB,6DAAgB;QACZ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,GAAG,EAAC,IAAI;QACR,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QAEb,6EAAgB;UACZ,QAAQ,EAAE,QAAQ;UAClB,SAAS,EAAE,IAAI;UACf,GAAG,EAAE,CAAC;UACN,KAAK,EAAE,CAAC;UACR,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,MAAM;UACf,MAAM,EAAE,MAAM;UACd,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,OAAO;UACf,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,gBAAgB;QAI5B,+EAAkB;UACd,GAAG,EAAE,IAAI;QAEb,wEAAW;UACP,OAAO,EAAE,QAAQ;MAIzB,sEAAyB;QACrB,OAAO,EAAE,kBAAkB;QAkE3B;;WAEG;QAlEH,qFAAe;UACX,MAAM,EAAC,iBAAiB;UACxB,aAAa,EAAE,IAAI;UACnB,QAAQ,EAAE,MAAM;UAEhB,+FAAU;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;UAErB,gGAAW;YACP,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;YAEhB,iHAAiB;cAxmBrC,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAumBQ,mIAAkB;gBACd,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,IAAI;YAIjB,sGAAM;cACF,MAAM,EAAE,OAAO;cACf,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,UAAU,EAAE,KAAK;cACjB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAEhB,0GAAI;gBACA,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,YAAY;gBACrB,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,MAAM;QAShC,iFAAW;UACP,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UAEjB,gGAAe;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;UAErB,4FAAW;YACP,OAAO,EAAE,QAAQ;UAErB,2FAAU;YACN,WAAW,EAAC,IAAI;QAOxB,+EAAS;UACL,IAAI,EAAE,+CAA+C;UACrD,aAAa,EAlqBZ,iBAAiB;UAmqBlB,aAAa,EAAE,IAAI;UAEnB,2FAAY;YACR,UAAU,EAAE,iBAAiB;YAC7B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YAEV,uGAAY;cACR,QAAQ,EAAE,QAAQ;cAClB,MAAM,EAAE,YAAY;cACpB,OAAO,EAAE,MAAM;cACf,KAAK,EAAE,IAAI;cACX,WAAW,EAAE,IAAI;cACjB,UAAU,EAAE,MAAM;cAClB,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;YAEnB,gHAAqB;cACjB,gBAAgB,EAAE,IAAI;cACtB,MAAM,EAtrBb,iBAAiB;cAurBV,aAAa,EAAE,cAAc;cAC7B,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;cACf,sBAAsB,EAAE,GAAG;cAC3B,uBAAuB,EAAE,GAAG;YAGhC,0GAAe;cACX,gBAAgB,EAAE,IAAI;cACtB,KAAK,EAAE,IAAI;IAU/B,gDAAmB;MACf,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,GAAG;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;MAElB,2EAA2B;QACvB,UAAU,EAAE,6CAA6C;QACzD,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;EAM9B,4BAAkB;IACd,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,YAAY;IACrB,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IAEZ,2CAAe;MACX,MAAM,EAAE,GAAG;IAGf,0CAAc;MACV,MAAM,EAAE,gBAAgB;EAIhC,4BAAkB;IACd,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO;EAGnB,2BAAiB;IACb,mBAAmB,EAAE,OAAO;IAC5B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM;IACtB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAGpB,qBAAW;IACP,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,wDAAwD;IAEpE,2BAAQ;MACJ,MAAM,EA7wBG,iBAAiB;MA8wB1B,gBAAgB,EAAE,OAAO;EAIjC,yBAAe;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,OAAO;IACf,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,YAAY;IAExB,+BAAQ;MACJ,MAAM,EAAE,iBAAiB;MACzB,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,EAAE;;AClyBnB,8BAAY;EAER,UAAU,EAAE,iBAAiB;EAC7B,UAAU,EAAE,gEAAgE;EAC5E,eAAe,EAAE,WAAW;EAC5B,cAAc,EAAE,kBAAkB;EAElC,+CAAiB;IACb,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,8CAAgB;IACZ,mBAAmB,EAAE,KAAK;EAE9B,+CAAiB;IACb,mBAAmB,EAAE,OAAO;EAEhC,6CAAe;IACX,mBAAmB,EAAE,OAAO;EAEhC,4CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,4CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,qDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,yDAA2B;IACvB,mBAAmB,EAAE,QAAQ;EAGjC,2DAA6B;IACzB,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,+CAAiB;IACb,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,4CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,gDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,qDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,+CAAiB;IACb,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,0CAAY;IACR,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,4CAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,8CAAgB;IACZ,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,6CAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,eAAe;EAG1B,iDAAmB;IACf,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,4CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,2CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,gDAAkB;IACd,mBAAmB,EAAE,SAAS;EAGlC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,iDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,mDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,8CAAgB;IACZ,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,2CAAa;IACT,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,mDAAqB;IACjB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,kDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,6CAAe;IACX,mBAAmB,EAAE,QAAQ;;AAKzC;;GAEG;AAKK,8CAAmB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,MAAM;EAEhB,+DAAiB;IDrRzB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,OAAO;ICiRH,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,mEAAqB;IACjB,mBAAmB,EAAE,QAAQ;IAC7B,KAAK,EAAE,eAAe;EAG1B,mEAAqB;IACjB,mBAAmB,EAAE,SAAS;EAGlC,0EAA4B;IACxB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,2EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,sEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,sEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,iEAAmB;IACf,mBAAmB,EAAE,SAAS;EAElC,sEAAwB;IACpB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,qEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,qEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,qEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAIlC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,6DAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,4DAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,+DAAiB;IACb,mBAAmB,EAAE,SAAS", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/blue/editor.min.css b/public/assets/addons/nkeditor/themes/blue/editor.min.css new file mode 100644 index 0000000..5297fab --- /dev/null +++ b/public/assets/addons/nkeditor/themes/blue/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-blue .ke-toolbar{border-top:5px solid #1296db;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-blue .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-blue .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-blue .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-blue .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-blue .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-blue .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-blue .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-blue .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-blue .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-blue .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-blue .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-blue .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-blue .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-blue .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-blue .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-blue .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-blue .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-blue .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-blue .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-blue .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-blue .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-blue .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-blue .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-blue .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-blue .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-blue .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-blue .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-blue .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-blue .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-blue .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-blue .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-blue .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-blue .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-blue .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-blue .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-blue .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-blue .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-blue .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-blue .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-blue .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-blue .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-blue .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-blue .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-blue .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-blue .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-blue .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-blue .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-blue .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-blue .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-blue .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-blue .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-blue .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-blue .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-blue .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-blue .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-blue .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-blue .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/blue/editor.scss b/public/assets/addons/nkeditor/themes/blue/editor.scss new file mode 100644 index 0000000..56739c1 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/blue/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-blue { + .ke-toolbar { + + border-top: 5px solid #1296db; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-blue { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/blue/images/nkeditor.png b/public/assets/addons/nkeditor/themes/blue/images/nkeditor.png new file mode 100644 index 0000000..6cf968a Binary files /dev/null and b/public/assets/addons/nkeditor/themes/blue/images/nkeditor.png differ diff --git a/public/assets/addons/nkeditor/themes/blue/images/nkeditor.svg b/public/assets/addons/nkeditor/themes/blue/images/nkeditor.svg new file mode 100644 index 0000000..5f12453 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/blue/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#1296db" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#1296db" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#1296db" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#1296db" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#1296db" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#1296db" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#1296db" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#1296db" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#1296db" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#1296db" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#1296db" d="M3 10h7v1h-7v-1z"></path> +<path fill="#1296db" d="M3 8h7v1h-7v-1z"></path> +<path fill="#1296db" d="M3 12h4v1h-4v-1z"></path> +<path fill="#1296db" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#1296db" d="M3 6h7v1h-7v-1z"></path> +<path fill="#1296db" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#1296db" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#1296db" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#1296db" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#1296db" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#1296db" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#1296db" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#1296db" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#1296db" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#1296db" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#1296db" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#1296db" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#1296db" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#1296db" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#1296db" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#1296db" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#1296db" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#1296db" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#1296db" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#1296db" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#1296db" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#1296db" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#1296db" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#1296db" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#1296db" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#1296db" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#1296db" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#1296db" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#1296db" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#1296db" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#1296db" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#1296db" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#1296db" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#1296db" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#1296db" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#1296db" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#1296db" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#1296db" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#1296db" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#1296db" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#1296db" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#1296db" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#1296db" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#1296db" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#1296db" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#1296db" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#1296db" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#1296db" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#1296db" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#1296db" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#1296db" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#1296db" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#1296db" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#1296db" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#1296db" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#1296db" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#1296db" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#1296db" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#1296db" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#1296db" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#1296db" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#1296db" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#1296db" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#1296db" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#1296db" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#1296db" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#1296db" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#1296db" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#1296db" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#1296db" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#1296db" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#1296db" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#1296db" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#1296db" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#1296db" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#1296db" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#1296db" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#1296db" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#1296db" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#1296db" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#1296db" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#1296db" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#1296db" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#1296db" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#1296db" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#1296db" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#1296db" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#1296db" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#1296db" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/public/assets/addons/nkeditor/themes/common/anchor.gif b/public/assets/addons/nkeditor/themes/common/anchor.gif new file mode 100644 index 0000000..61145ea Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/anchor.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/blank.gif b/public/assets/addons/nkeditor/themes/common/blank.gif new file mode 100644 index 0000000..5bfd67a Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/blank.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/common.css b/public/assets/addons/nkeditor/themes/common/common.css new file mode 100644 index 0000000..a92c5de --- /dev/null +++ b/public/assets/addons/nkeditor/themes/common/common.css @@ -0,0 +1,605 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +/*# sourceMappingURL=common.css.map */ diff --git a/public/assets/addons/nkeditor/themes/common/common.css.map b/public/assets/addons/nkeditor/themes/common/common.css.map new file mode 100644 index 0000000..0844fe0 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/common/common.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["common.scss"], +"names": [], +"file": "common.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/common/common.scss b/public/assets/addons/nkeditor/themes/common/common.scss new file mode 100644 index 0000000..5e8549b --- /dev/null +++ b/public/assets/addons/nkeditor/themes/common/common.scss @@ -0,0 +1,830 @@ +$inputBorderColor : #cccccc; +$inputFocusBorderColor : #66afe9; +$inputHeight : 30px; +$editorBorderStyle : 1px solid #e1e1e1; +$dialogBorderStyle : 1px solid #cccccc; +$menuBgColor : #f5f5f5; + +@mixin ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} +//工具栏图标样式 +@mixin ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; +} +//阴影 +@mixin ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); +} + +/** +公共样式 +*/ +//清除浮动 +.ke-clearfix { + zoom: 1; + clear: both; +} +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} +// 过渡动画 +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; +} +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); + } + 50% { + opacity: 1; + } +} + +//遮罩层 +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; +} + +/** +编辑器样式开始 + */ +.ke-container { + + display: block; + //border: $editorBorderStyle; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 1px 1px rgba(0,0,0,0.16); + + /** + 通用样式 + */ + .ke-shadow { + @include ke-shadow; + background-color: #F0F0EE; + } + + .ke-menu a, + .ke-menu a:hover, + .ke-dialog a, + .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; + } + + /** + toolbar 样式 + */ + .ke-toolbar { + //border-bottom: $editorBorderStyle; + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; + + .ke-outline { + //border: 1px solid #f5f5f5; + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + + /** + * 按钮通用样式 + */ + .ke-toolbar-icon { + @include ke-toolbar-icon; + } + + } + + .ke-on { + background: #ebebeb; + } + .ke-selected { + background-color: #ebebeb; + } + .ke-disabled { + cursor: default; + } + .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; + } + .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; + } + } + //end ke-toolbar + + /** + ke-edit + */ + .ke-edit { + padding: 0; + + .ke-edit-iframe, + .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; + } + .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; + + &:focus { + outline: none; + } + } + } + //end ke-edit + + /** + statusbar start + */ + .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: $editorBorderStyle; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; + + .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + } + + .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; + } + } + //end ke-statusbar +} + +/** + menu 右键菜单 + */ +.ke-menu { + border: $dialogBorderStyle; + background-color: $menuBgColor; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + + .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; + + .ke-inline-block { + @include ke-inline-block; + + .ke-inline-block { + @include ke-inline-block; + } + } + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + + } + + .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + } + + .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; + } + + .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; + } + + .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: $editorBorderStyle; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; + } + } + + .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + + /** + 表情插件 + */ + .ke-plugin-emoticons { + position: relative; + + .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; + + .ke-preview-img { + border: 0; + margin: 0; + padding: 0; + } + } //end ke-preview + + .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; + + .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; + } + } + .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; + } + } //end ke-table + + .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; + } + } + +} +//menu end + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + + .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; + + .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; + + .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; + } + } + .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; + } + .ke-colorpicker-cell-on { + border: 1px solid #5690D2; + } + .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; + } + + } +} //colorpicker end + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: $dialogBorderStyle; + zoom: 1; + @include ke-shadow; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; + + // start ke-dialog-header + .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; + + .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; + + &:hover { + background-position: 0px -89px; + } + } + + } //end ke-dialog-header + + //start ke-content + .ke-dialog-content { + + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; + + // ke-dialog-body start + .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; + + .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid $inputBorderColor; + + &:focus { + border-color: $inputFocusBorderColor; + outline: none; + } + } + + .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid $inputBorderColor; + height: $inputHeight; + } + .ke-form { + margin: 0; + padding: 0; + } + + .ke-input-number { + width: 50px; + } + + .ke-input-checkbox { + position: relative; + top:6px; + } + + textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; + + &:focus { + outline: none; + } + } + + .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: $inputHeight; + line-height: $inputHeight; + border:1px solid $inputBorderColor; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; + + &:focus { + border-color: $inputFocusBorderColor; + } + } + + .ke-input-color { + border: $editorBorderStyle; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top:-1px; + position: relative; + *height: 25px; + + .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); + + } + + .ke-button-common { + top: -1px; + } + .ke-button { + padding: 8px 15px; + } + } + + .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + + .ke-dialog-row { + border:1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; + + .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; + } + .row-right { + float: left; + text-align: left; + + .ke-inline-block { + @include ke-inline-block; + + .ke-upload-button { + position: relative; + top: -1px; + } + } + + label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; + + img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + } + } + + + } //end ke-dialog-row + + //百度地图样式 + .ke-header { + height: 30px; + line-height: 30px; + + .ke-input-text { + height: 22px; + line-height: 22px; + } + .ke-button { + padding: 3px 10px; + } + .checkbox { + margin-left:10px; + } + } + + /** + tabs + */ + .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: $editorBorderStyle; + margin-bottom: 20px; + + .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; + + .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; + } + .ke-tabs-li-selected { + background-color: #FFF; + border: $editorBorderStyle; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + } + + .ke-tabs-li-on { + background-color: #FFF; + color: #000; + } + } //end ul + } //end tabs + + } //end ke-dialog-content-inner + + + } // end ke-dialog-body + + .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; + + .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; + } + } //end ke-dialog-loading + + } //end ke-content + + .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; + + .ke-dialog-yes { + margin: 5px; + } + + .ke-dialog-no { + margin: 5px 10px 5px 5px; + } + } // ke-dialog-footer + + .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; + } + + .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + } + + .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; + + &:hover { + border: $editorBorderStyle; + background-color: #e1e1e1; + } + } + + .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; + + &:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; + } + } + + +} //dialog end + +//.ke-dialog-preview { +// margin: 5px; +//} + + +//.ke-plugin-plainpaste-textarea, +//.ke-plugin-wordpaste-iframe { +// display: block; +// width: 408px; +// height: 260px; +// font-family: "sans serif", tahoma, verdana, helvetica; +// font-size: 12px; +// border-color: #848484 #E0E0E0 #E0E0E0 #848484; +// border-style: solid; +// border-width: 1px; +//} + + diff --git a/public/assets/addons/nkeditor/themes/common/dialog-title-bg.png b/public/assets/addons/nkeditor/themes/common/dialog-title-bg.png new file mode 100644 index 0000000..f744f26 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/dialog-title-bg.png differ diff --git a/public/assets/addons/nkeditor/themes/common/flash.gif b/public/assets/addons/nkeditor/themes/common/flash.gif new file mode 100644 index 0000000..2cb12b2 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/flash.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/flash.png b/public/assets/addons/nkeditor/themes/common/flash.png new file mode 100644 index 0000000..cc3be67 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/flash.png differ diff --git a/public/assets/addons/nkeditor/themes/common/flash.svg b/public/assets/addons/nkeditor/themes/common/flash.svg new file mode 100644 index 0000000..31750f2 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/common/flash.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1506319500431" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3560" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M512 56.888889C261.688889 56.888889 56.888889 261.688889 56.888889 512s204.8 455.111111 455.111111 455.111111 455.111111-204.8 455.111111-455.111111-204.8-455.111111-455.111111-455.111111z m227.555556 324.266667c-79.644444-5.688889-125.155556 79.644444-125.155556 79.644444l91.022222 5.688889V568.888889h-130.844444C506.311111 819.2 341.333333 773.688889 341.333333 773.688889v-85.333333s96.711111 0 147.911111-176.355556C563.2 233.244444 739.555556 290.133333 739.555556 290.133333v91.022223z" p-id="3561"></path></svg> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/common/icons-all.gif b/public/assets/addons/nkeditor/themes/common/icons-all.gif new file mode 100644 index 0000000..21915e5 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/icons-all.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/loading.gif b/public/assets/addons/nkeditor/themes/common/loading.gif new file mode 100644 index 0000000..c69e937 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/loading.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/media.gif b/public/assets/addons/nkeditor/themes/common/media.gif new file mode 100644 index 0000000..e1c0e30 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/media.gif differ diff --git a/public/assets/addons/nkeditor/themes/common/play.png b/public/assets/addons/nkeditor/themes/common/play.png new file mode 100644 index 0000000..7899c5a Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/play.png differ diff --git a/public/assets/addons/nkeditor/themes/common/play.svg b/public/assets/addons/nkeditor/themes/common/play.svg new file mode 100644 index 0000000..8d5cd9a --- /dev/null +++ b/public/assets/addons/nkeditor/themes/common/play.svg @@ -0,0 +1 @@ +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1506318981937" class="icon" style="" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1622" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><defs><style type="text/css"></style></defs><path d="M512 1024C229.2352 1024 0 794.7648 0 512S229.2352 0 512 0s512 229.2352 512 512-229.2352 512-512 512z m-85.248-257.4976l307.0336-230.2848c17.024-12.7616 17.024-33.4336 0-46.1952L426.752 259.7376c-17.024-12.7616-30.7968-5.888-30.7968 15.3472v476.0704c0 21.2864 13.7984 28.1088 30.7968 15.36z" p-id="1623"></path></svg> \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/common/rm.gif b/public/assets/addons/nkeditor/themes/common/rm.gif new file mode 100644 index 0000000..d013d55 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/common/rm.gif differ diff --git a/public/assets/addons/nkeditor/themes/default/editor.css b/public/assets/addons/nkeditor/themes/default/editor.css new file mode 100644 index 0000000..8518512 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/default/editor.css @@ -0,0 +1,1398 @@ +/* common */ +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } + +.ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-clearfix { + zoom: 1; +} + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; +} + +.ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; +} + +.ke-menu a, +.ke-menu a:hover, +.ke-dialog a, +.ke-dialog a:hover { + color: #337FE5; + text-decoration: none; +} + +/* icons */ +.ke-icon-source { + background-position: 0px 0px; + width: 16px; + height: 16px; +} + +.ke-icon-preview { + background-position: 0px -16px; + width: 16px; + height: 16px; +} + +.ke-icon-print { + background-position: 0px -32px; + width: 16px; + height: 16px; +} + +.ke-icon-undo { + background-position: 0px -48px; + width: 16px; + height: 16px; +} + +.ke-icon-redo { + background-position: 0px -64px; + width: 16px; + height: 16px; +} + +.ke-icon-cut { + background-position: 0px -80px; + width: 16px; + height: 16px; +} + +.ke-icon-copy { + background-position: 0px -96px; + width: 16px; + height: 16px; +} + +.ke-icon-paste { + background-position: 0px -112px; + width: 16px; + height: 16px; +} + +.ke-icon-selectall { + background-position: 0px -128px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyleft { + background-position: 0px -144px; + width: 16px; + height: 16px; +} + +.ke-icon-justifycenter { + background-position: 0px -160px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyright { + background-position: 0px -176px; + width: 16px; + height: 16px; +} + +.ke-icon-justifyfull { + background-position: 0px -192px; + width: 16px; + height: 16px; +} + +.ke-icon-insertorderedlist { + background-position: 0px -208px; + width: 16px; + height: 16px; +} + +.ke-icon-insertunorderedlist { + background-position: 0px -224px; + width: 16px; + height: 16px; +} + +.ke-icon-indent { + background-position: 0px -240px; + width: 16px; + height: 16px; +} + +.ke-icon-outdent { + background-position: 0px -256px; + width: 16px; + height: 16px; +} + +.ke-icon-subscript { + background-position: 0px -272px; + width: 16px; + height: 16px; +} + +.ke-icon-superscript { + background-position: 0px -288px; + width: 16px; + height: 16px; +} + +.ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; +} + +.ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; +} + +.ke-icon-formatblock { + background-position: 0px -336px; + width: 25px; + height: 16px; +} + +.ke-icon-fontname { + background-position: 0px -352px; + width: 21px; + height: 16px; +} + +.ke-icon-fontsize { + background-position: 0px -368px; + width: 23px; + height: 16px; +} + +.ke-icon-forecolor { + background-position: 0px -384px; + width: 20px; + height: 16px; +} + +.ke-icon-hilitecolor { + background-position: 0px -400px; + width: 23px; + height: 16px; +} + +.ke-icon-bold { + background-position: 0px -416px; + width: 16px; + height: 16px; +} + +.ke-icon-italic { + background-position: 0px -432px; + width: 16px; + height: 16px; +} + +.ke-icon-underline { + background-position: 0px -448px; + width: 16px; + height: 16px; +} + +.ke-icon-strikethrough { + background-position: 0px -464px; + width: 16px; + height: 16px; +} + +.ke-icon-removeformat { + background-position: 0px -480px; + width: 16px; + height: 16px; +} + +.ke-icon-image { + background-position: 0px -496px; + width: 16px; + height: 16px; +} + +.ke-icon-flash { + background-position: 0px -512px; + width: 16px; + height: 16px; +} + +.ke-icon-media { + background-position: 0px -528px; + width: 16px; + height: 16px; +} + +.ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; +} + +.ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; +} + +.ke-icon-hr { + background-position: 0px -592px; + width: 16px; + height: 16px; +} + +.ke-icon-emoticons { + background-position: 0px -608px; + width: 16px; + height: 16px; +} + +.ke-icon-link { + background-position: 0px -624px; + width: 16px; + height: 16px; +} + +.ke-icon-unlink { + background-position: 0px -640px; + width: 16px; + height: 16px; +} + +.ke-icon-fullscreen { + background-position: 0px -656px; + width: 16px; + height: 16px; +} + +.ke-icon-about { + background-position: 0px -672px; + width: 16px; + height: 16px; +} + +.ke-icon-plainpaste { + background-position: 0px -704px; + width: 16px; + height: 16px; +} + +.ke-icon-wordpaste { + background-position: 0px -720px; + width: 16px; + height: 16px; +} + +.ke-icon-table { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; +} + +.ke-icon-tableinsert { + background-position: 0px -784px; + width: 16px; + height: 16px; +} + +.ke-icon-tabledelete { + background-position: 0px -800px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertleft { + background-position: 0px -816px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolinsertright { + background-position: 0px -832px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertabove { + background-position: 0px -848px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowinsertbelow { + background-position: 0px -864px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecoldelete { + background-position: 0px -880px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowdelete { + background-position: 0px -896px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellprop { + background-position: 0px -912px; + width: 16px; + height: 16px; +} + +.ke-icon-tableprop { + background-position: 0px -928px; + width: 16px; + height: 16px; +} + +.ke-icon-checked { + background-position: 0px -944px; + width: 16px; + height: 16px; +} + +.ke-icon-code { + background-position: 0px -960px; + width: 16px; + height: 16px; +} + +.ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-baidumap { + background-position: 0px -976px; + width: 16px; + height: 16px; +} + +.ke-icon-lineheight { + background-position: 0px -992px; + width: 16px; + height: 16px; +} + +.ke-icon-clearhtml { + background-position: 0px -1008px; + width: 16px; + height: 16px; +} + +.ke-icon-pagebreak { + background-position: 0px -1024px; + width: 16px; + height: 16px; +} + +.ke-icon-insertfile { + background-position: 0px -1040px; + width: 16px; + height: 16px; +} + +.ke-icon-quickformat { + background-position: 0px -1056px; + width: 16px; + height: 16px; +} + +.ke-icon-template { + background-position: 0px -1072px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowmerge { + background-position: 0px -1104px; + width: 16px; + height: 16px; +} + +.ke-icon-tablerowsplit { + background-position: 0px -1120px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolmerge { + background-position: 0px -1136px; + width: 16px; + height: 16px; +} + +.ke-icon-tablecolsplit { + background-position: 0px -1152px; + width: 16px; + height: 16px; +} + +.ke-icon-anchor { + background-position: 0px -1168px; + width: 16px; + height: 16px; +} + +.ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; +} + +.ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; +} + +.ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; +} + +.ke-icon-multiimage { + background-position: 0px -1232px; + width: 16px; + height: 16px; +} + +.ke-icon-graft { + background: url("images/scrawl.png") !important; + width: 16px; + height: 16px; +} + +/* container */ +.ke-container { + display: block; + border: 1px solid #CCCCCC; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; +} + +/* toolbar */ +.ke-toolbar { + border-bottom: 1px solid #CCC; + background-color: #FFFFFF; + padding: 2px 5px; + text-align: left; + overflow: hidden; + zoom: 1; +} + +.ke-toolbar-icon { + background-repeat: no-repeat; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; +} + +.ke-toolbar-icon-url { + background-image: url(images/default.png); +} + +.ke-toolbar .ke-outline { + border: 1px solid #F0F0EE; + margin: 1px; + padding: 1px 2px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; +} + +.ke-toolbar .ke-on { + border: 1px solid #5690D2; +} + +.ke-toolbar .ke-selected { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-toolbar .ke-disabled { + cursor: default; +} + +.ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; +} + +.ke-toolbar .ke-hr { + overflow: hidden; + height: 1px; + clear: both; +} + +/* edit */ +.ke-edit { + padding: 0; +} + +.ke-edit-iframe, +.ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; +} + +.ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; +} + +.ke-edit-textarea:focus { + outline: none; +} + +/* statusbar */ +.ke-statusbar { + position: relative; + background-color: #F0F0EE; + border-top: 1px solid #CCCCCC; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; +} + +.ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; + background-image: url(images/default.png); +} + +.ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + background-position: -5px -741px; + width: 11px; + height: 11px; + background-image: url(images/default.png); +} + +/* menu */ +.ke-menu { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; +} + +.ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; +} + +.ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; +} + +.ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; +} + +.ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; +} + +.ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; +} + +.ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #CCCCCC; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; +} + +/* colorpicker */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; +} + +.ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; +} + +.ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; +} + +.ke-colorpicker-cell-on { + border: 1px solid #5690D2; +} + +.ke-colorpicker-cell-selected { + border: 1px solid #2446AB; +} + +.ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; +} + +/* dialog */ +.ke-dialog { + position: absolute; + margin: 0; + padding: 0; +} + +.ke-dialog .ke-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-dialog .ke-header .ke-left { + float: left; +} + +.ke-dialog .ke-header .ke-right { + float: right; +} + +.ke-dialog .ke-header label { + margin-right: 0; + cursor: pointer; + font-weight: normal; + display: inline; + vertical-align: top; +} + +.ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; +} + +.ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + background: #F8F8F8; + border-bottom: 1px solid #eeeeee; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + +} + +.ke-dialog-icon-close { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 6px; + top: 8px; + cursor: pointer; +} + +.ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; +} + +.ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; +} + +.ke-dialog-body textarea:focus, +.ke-dialog-body input:focus, +.ke-dialog-body select:focus { + outline: none; +} + +.ke-dialog-body label { + margin-right: 10px; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; +} + +.ke-dialog-body img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-dialog-body select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; +} + +.ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +.ke-dialog-body .ke-form { + margin: 0; + padding: 0; +} + +.ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; +} + +.ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; +} + +.ke-dialog-row { + margin-bottom: 10px; +} + +.ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + border-radius: 6px; + height: 45px; +} + +.ke-dialog-preview, +.ke-dialog-yes { + margin: 5px; +} + +.ke-dialog-no { + margin: 5px 10px 5px 5px; +} + +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; +} + +.ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 5px 10px; + margin-top: -2px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; +} + +.ke-button:hover { + border: 1px solid #d1d1d1; + background-color: #d1d1d1; +} + +.ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; +} + +.ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; +} + +/* inputbox */ +.ke-input-text { + display: inline-block !important; + width: 400px; + border: 1px solid #cccccc; + height: 20px; + line-height: 18px; + font-size: 14px; + padding: 3px; + margin: 0; + outline: 0; + *display: inline; +} + +.ke-input-text:focus { + border-color: #66afe9; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 8px rgba(102, 175, 233, .6); +} + +.ke-input-number { + width: 50px; +} + +.ke-input-color { + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 20px; + line-height: 20px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; +} + +.ke-upload-button { + position: relative; + top: -1px; +} + +.ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + *height: 25px; +} + +.ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 50px; + height: 30px; + filter: alpha(opacity=0); +} + +.ke-upload-area .ke-button { + padding: 6px 15px; +} + +/* tabs */ +.ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #cccccc; + padding-left: 5px; + margin-bottom: 20px; +} + +.ke-tabs-ul { + list-style-image: none; + list-style-position: outside; + list-style-type: none; + margin: 0; + padding: 0; +} + +.ke-tabs-li { + position: relative; + + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; +} + +.ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #cccccc; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.ke-tabs-li-on { + background-color: #FFF; + color: #000; +} + +/* progressbar */ +.ke-progressbar { + position: relative; + margin: 0; + padding: 0; +} + +.ke-progressbar-bar { + border: 1px solid #6FA5DB; + width: 80px; + height: 5px; + margin: 10px 10px 0 10px; + padding: 0; +} + +.ke-progressbar-bar-inner { + width: 0; + height: 5px; + background-color: #6FA5DB; + overflow: hidden; + margin: 0; + padding: 0; +} + +.ke-progressbar-percent { + position: absolute; + top: 0; + left: 40%; + display: none; +} + +/* swfupload */ +.ke-swfupload-top { + position: relative; + margin-bottom: 10px; + _width: 608px; +} + +.ke-swfupload-button { + height: 23px; + line-height: 23px; +} + +.ke-swfupload-desc { + padding: 0 10px; + height: 23px; + line-height: 23px; +} + +.ke-swfupload-startupload { + position: absolute; + top: 0; + right: 0; +} + +.ke-swfupload-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-swfupload-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-swfupload-body .ke-photo { + position: relative; + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-swfupload-body .ke-delete { + display: block; + background: url(images/default.png) no-repeat scroll 0px -688px; + width: 16px; + height: 16px; + position: absolute; + right: 0; + top: 0; + cursor: pointer; +} + +.ke-swfupload-body .ke-status { + position: absolute; + left: 0; + bottom: 5px; + width: 100px; + height: 17px; +} + +.ke-swfupload-body .ke-message { + width: 100px; + text-align: center; + overflow: hidden; + height: 17px; +} + +.ke-swfupload-body .ke-error { + color: red; +} + +.ke-swfupload-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-swfupload-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +/* emoticons */ +.ke-plugin-emoticons { + position: relative; +} + +.ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; +} + +.ke-plugin-emoticons .ke-preview-img { + border: 0; + margin: 0; + padding: 0; +} + +.ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-emoticons .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #F0F0EE; + cursor: pointer; +} + +.ke-plugin-emoticons .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-emoticons .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; +} + +.ke-plugin-plainpaste-textarea, +.ke-plugin-wordpaste-iframe { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; +} + +/* filemanager */ +.ke-plugin-filemanager-header { + width: 100%; + margin-bottom: 10px; +} + +.ke-plugin-filemanager-header .ke-left { + float: left; +} + +.ke-plugin-filemanager-header .ke-right { + float: right; +} + +.ke-plugin-filemanager-body { + overflow: scroll; + background-color: #FFFFFF; + border-color: #848484 #E0E0E0 #E0E0E0 #848484; + border-style: solid; + border-width: 1px; + width: auto; + height: 370px; + padding: 5px; +} + +.ke-plugin-filemanager-body .ke-item { + width: 100px; + margin: 5px; +} + +.ke-plugin-filemanager-body .ke-photo { + border: 1px solid #DDDDDD; + background-color: #FFFFFF; + padding: 10px; +} + +.ke-plugin-filemanager-body .ke-name { + width: 100px; + text-align: center; + overflow: hidden; + height: 16px; +} + +.ke-plugin-filemanager-body .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; +} + +.ke-plugin-filemanager-body .ke-table { + width: 95%; + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; +} + +.ke-plugin-filemanager-body .ke-table .ke-cell { + margin: 0; + padding: 0; + border: 0; +} + +.ke-plugin-filemanager-body .ke-table .ke-name { + width: 55%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-size { + width: 15%; + text-align: left; +} + +.ke-plugin-filemanager-body .ke-table .ke-datetime { + width: 30%; + text-align: center; +} + +.ke-dialog-content-inner { + padding: 10px 20px; +} +.ke-dialog-content-inner .row-left { + float: left; +} +.ke-dialog-content-inner .row-right { + float: left; +} +.ke-dialog-default { + box-shadow: 0 5px 15px rgba(0, 0, 0, .2) !important; + border: 1px solid #999 !important; + border: 1px solid rgba(0, 0, 0, .2) !important; + border-radius: 6px; + outline: 0; + zoom: 1; + overflow: hidden; +} diff --git a/public/assets/addons/nkeditor/themes/default/editor.min.css b/public/assets/addons/nkeditor/themes/default/editor.min.css new file mode 100644 index 0000000..cb8de2d --- /dev/null +++ b/public/assets/addons/nkeditor/themes/default/editor.min.css @@ -0,0 +1 @@ +.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-clearfix{zoom:1}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-dialog a,.ke-dialog a:hover,.ke-menu a,.ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-icon-source{background-position:0 0;width:16px;height:16px}.ke-icon-preview{background-position:0 -16px;width:16px;height:16px}.ke-icon-print{background-position:0 -32px;width:16px;height:16px}.ke-icon-undo{background-position:0 -48px;width:16px;height:16px}.ke-icon-redo{background-position:0 -64px;width:16px;height:16px}.ke-icon-cut{background-position:0 -80px;width:16px;height:16px}.ke-icon-copy{background-position:0 -96px;width:16px;height:16px}.ke-icon-paste{background-position:0 -112px;width:16px;height:16px}.ke-icon-selectall{background-position:0 -128px;width:16px;height:16px}.ke-icon-justifyleft{background-position:0 -144px;width:16px;height:16px}.ke-icon-justifycenter{background-position:0 -160px;width:16px;height:16px}.ke-icon-justifyright{background-position:0 -176px;width:16px;height:16px}.ke-icon-justifyfull{background-position:0 -192px;width:16px;height:16px}.ke-icon-insertorderedlist{background-position:0 -208px;width:16px;height:16px}.ke-icon-insertunorderedlist{background-position:0 -224px;width:16px;height:16px}.ke-icon-indent{background-position:0 -240px;width:16px;height:16px}.ke-icon-outdent{background-position:0 -256px;width:16px;height:16px}.ke-icon-subscript{background-position:0 -272px;width:16px;height:16px}.ke-icon-superscript{background-position:0 -288px;width:16px;height:16px}.ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-icon-formatblock{background-position:0 -336px;width:25px;height:16px}.ke-icon-fontname{background-position:0 -352px;width:21px;height:16px}.ke-icon-fontsize{background-position:0 -368px;width:23px;height:16px}.ke-icon-forecolor{background-position:0 -384px;width:20px;height:16px}.ke-icon-hilitecolor{background-position:0 -400px;width:23px;height:16px}.ke-icon-bold{background-position:0 -416px;width:16px;height:16px}.ke-icon-italic{background-position:0 -432px;width:16px;height:16px}.ke-icon-underline{background-position:0 -448px;width:16px;height:16px}.ke-icon-strikethrough{background-position:0 -464px;width:16px;height:16px}.ke-icon-removeformat{background-position:0 -480px;width:16px;height:16px}.ke-icon-image{background-position:0 -496px;width:16px;height:16px}.ke-icon-flash{background-position:0 -512px;width:16px;height:16px}.ke-icon-media{background-position:0 -528px;width:16px;height:16px}.ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-icon-hr{background-position:0 -592px;width:16px;height:16px}.ke-icon-emoticons{background-position:0 -608px;width:16px;height:16px}.ke-icon-link{background-position:0 -624px;width:16px;height:16px}.ke-icon-unlink{background-position:0 -640px;width:16px;height:16px}.ke-icon-fullscreen{background-position:0 -656px;width:16px;height:16px}.ke-icon-about{background-position:0 -672px;width:16px;height:16px}.ke-icon-plainpaste{background-position:0 -704px;width:16px;height:16px}.ke-icon-wordpaste{background-position:0 -720px;width:16px;height:16px}.ke-icon-table{background-position:0 -784px;width:16px;height:16px}.ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-icon-tableinsert{background-position:0 -784px;width:16px;height:16px}.ke-icon-tabledelete{background-position:0 -800px;width:16px;height:16px}.ke-icon-tablecolinsertleft{background-position:0 -816px;width:16px;height:16px}.ke-icon-tablecolinsertright{background-position:0 -832px;width:16px;height:16px}.ke-icon-tablerowinsertabove{background-position:0 -848px;width:16px;height:16px}.ke-icon-tablerowinsertbelow{background-position:0 -864px;width:16px;height:16px}.ke-icon-tablecoldelete{background-position:0 -880px;width:16px;height:16px}.ke-icon-tablerowdelete{background-position:0 -896px;width:16px;height:16px}.ke-icon-tablecellprop{background-position:0 -912px;width:16px;height:16px}.ke-icon-tableprop{background-position:0 -928px;width:16px;height:16px}.ke-icon-checked{background-position:0 -944px;width:16px;height:16px}.ke-icon-code{background-position:0 -960px;width:16px;height:16px}.ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-icon-baidumap{background-position:0 -976px;width:16px;height:16px}.ke-icon-lineheight{background-position:0 -992px;width:16px;height:16px}.ke-icon-clearhtml{background-position:0 -1008px;width:16px;height:16px}.ke-icon-pagebreak{background-position:0 -1024px;width:16px;height:16px}.ke-icon-insertfile{background-position:0 -1040px;width:16px;height:16px}.ke-icon-quickformat{background-position:0 -1056px;width:16px;height:16px}.ke-icon-template{background-position:0 -1072px;width:16px;height:16px}.ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-icon-tablerowmerge{background-position:0 -1104px;width:16px;height:16px}.ke-icon-tablerowsplit{background-position:0 -1120px;width:16px;height:16px}.ke-icon-tablecolmerge{background-position:0 -1136px;width:16px;height:16px}.ke-icon-tablecolsplit{background-position:0 -1152px;width:16px;height:16px}.ke-icon-anchor{background-position:0 -1168px;width:16px;height:16px}.ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-icon-multiimage{background-position:0 -1232px;width:16px;height:16px}.ke-icon-graft{background:url(images/scrawl.png)!important;width:16px;height:16px}.ke-container{display:block;border:1px solid #ccc;background-color:#fff;overflow:hidden;margin:0;padding:0}.ke-toolbar{border-bottom:1px solid #ccc;background-color:#fff;padding:2px 5px;text-align:left;overflow:hidden;zoom:1}.ke-toolbar-icon{background-repeat:no-repeat;font-size:0;line-height:0;overflow:hidden;display:block}.ke-toolbar-icon-url{background-image:url(images/default.png)}.ke-toolbar .ke-outline{border:1px solid #f0f0ee;margin:1px;padding:1px 2px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-toolbar .ke-on{border:1px solid #5690d2}.ke-toolbar .ke-selected{border:1px solid #5690d2;background-color:#e9eff6}.ke-toolbar .ke-disabled{cursor:default}.ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-toolbar .ke-hr{overflow:hidden;height:1px;clear:both}.ke-edit{padding:0}.ke-edit-iframe,.ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-edit-textarea:focus{outline:0}.ke-statusbar{position:relative;background-color:#f0f0ee;border-top:1px solid #ccc;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize}.ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px;background-image:url(images/default.png)}.ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;background-position:-5px -741px;width:11px;height:11px;background-image:url(images/default.png)}.ke-menu{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #ccc;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f0f0ee;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-dialog{position:absolute;margin:0;padding:0}.ke-dialog .ke-header{width:100%;margin-bottom:10px}.ke-dialog .ke-header .ke-left{float:left}.ke-dialog .ke-header .ke-right{float:right}.ke-dialog .ke-header label{margin-right:0;cursor:pointer;font-weight:400;display:inline;vertical-align:top}.ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0}.ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;background:#f8f8f8;border-bottom:1px solid #eee;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px}.ke-dialog-icon-close{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:6px;top:8px;cursor:pointer}.ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog-body input:focus,.ke-dialog-body select:focus,.ke-dialog-body textarea:focus{outline:0}.ke-dialog-body label{margin-right:10px;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog-body img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog-body select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto}.ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog-row{margin-bottom:10px}.ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;border-radius:6px;height:45px}.ke-dialog-preview,.ke-dialog-yes{margin:5px}.ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:5px 10px;margin-top:-2px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-button:hover{border:1px solid #d1d1d1;background-color:#d1d1d1}.ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-input-text{display:inline-block!important;width:400px;border:1px solid #ccc;height:20px;line-height:18px;font-size:14px;padding:3px;margin:0;outline:0}.ke-input-text:focus{border-color:#66afe9;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.ke-input-number{width:50px}.ke-input-color{border:1px solid #a0a0a0;background-color:#fff;font-size:12px;width:60px;height:20px;line-height:20px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-upload-button{position:relative;top:-1px}.ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0}.ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:50px;height:30px}.ke-upload-area .ke-button{padding:6px 15px}.ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #ccc;padding-left:5px;margin-bottom:20px}.ke-tabs-ul{list-style-image:none;list-style-position:outside;list-style-type:none;margin:0;padding:0}.ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-tabs-li-selected{background-color:#fff;border:1px solid #ccc;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-tabs-li-on{background-color:#fff;color:#000}.ke-progressbar{position:relative;margin:0;padding:0}.ke-progressbar-bar{border:1px solid #6fa5db;width:80px;height:5px;margin:10px 10px 0 10px;padding:0}.ke-progressbar-bar-inner{width:0;height:5px;background-color:#6fa5db;overflow:hidden;margin:0;padding:0}.ke-progressbar-percent{position:absolute;top:0;left:40%;display:none}.ke-swfupload-top{position:relative;margin-bottom:10px}.ke-swfupload-button{height:23px;line-height:23px}.ke-swfupload-desc{padding:0 10px;height:23px;line-height:23px}.ke-swfupload-startupload{position:absolute;top:0;right:0}.ke-swfupload-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-swfupload-body .ke-item{width:100px;margin:5px}.ke-swfupload-body .ke-photo{position:relative;border:1px solid #ddd;background-color:#fff;padding:10px}.ke-swfupload-body .ke-delete{display:block;background:url(images/default.png) no-repeat scroll 0 -688px;width:16px;height:16px;position:absolute;right:0;top:0;cursor:pointer}.ke-swfupload-body .ke-status{position:absolute;left:0;bottom:5px;width:100px;height:17px}.ke-swfupload-body .ke-message{width:100px;text-align:center;overflow:hidden;height:17px}.ke-swfupload-body .ke-error{color:red}.ke-swfupload-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-swfupload-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons{position:relative}.ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-plugin-emoticons .ke-preview-img{border:0;margin:0;padding:0}.ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-emoticons .ke-cell{margin:0;padding:1px;border:1px solid #f0f0ee;cursor:pointer}.ke-plugin-emoticons .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-emoticons .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-plugin-plainpaste-textarea,.ke-plugin-wordpaste-iframe{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px}.ke-plugin-filemanager-header{width:100%;margin-bottom:10px}.ke-plugin-filemanager-header .ke-left{float:left}.ke-plugin-filemanager-header .ke-right{float:right}.ke-plugin-filemanager-body{overflow:scroll;background-color:#fff;border-color:#848484 #e0e0e0 #e0e0e0 #848484;border-style:solid;border-width:1px;width:auto;height:370px;padding:5px}.ke-plugin-filemanager-body .ke-item{width:100px;margin:5px}.ke-plugin-filemanager-body .ke-photo{border:1px solid #ddd;background-color:#fff;padding:10px}.ke-plugin-filemanager-body .ke-name{width:100px;text-align:center;overflow:hidden;height:16px}.ke-plugin-filemanager-body .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-plugin-filemanager-body .ke-table{width:95%;border:0;margin:0;padding:0;border-collapse:separate}.ke-plugin-filemanager-body .ke-table .ke-cell{margin:0;padding:0;border:0}.ke-plugin-filemanager-body .ke-table .ke-name{width:55%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-size{width:15%;text-align:left}.ke-plugin-filemanager-body .ke-table .ke-datetime{width:30%;text-align:center}.ke-dialog-content-inner{padding:10px 20px}.ke-dialog-content-inner .row-left{float:left}.ke-dialog-content-inner .row-right{float:left}.ke-dialog-default{box-shadow:0 5px 15px rgba(0,0,0,.2)!important;border:1px solid #999!important;border:1px solid rgba(0,0,0,.2)!important;border-radius:6px;outline:0;zoom:1;overflow:hidden} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/default/images/background.png b/public/assets/addons/nkeditor/themes/default/images/background.png new file mode 100644 index 0000000..e59bd68 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/default/images/background.png differ diff --git a/public/assets/addons/nkeditor/themes/default/images/default.png b/public/assets/addons/nkeditor/themes/default/images/default.png new file mode 100644 index 0000000..cc9e72d Binary files /dev/null and b/public/assets/addons/nkeditor/themes/default/images/default.png differ diff --git a/public/assets/addons/nkeditor/themes/default/images/scrawl.png b/public/assets/addons/nkeditor/themes/default/images/scrawl.png new file mode 100644 index 0000000..58e04ec Binary files /dev/null and b/public/assets/addons/nkeditor/themes/default/images/scrawl.png differ diff --git a/public/assets/addons/nkeditor/themes/grey/editor.css b/public/assets/addons/nkeditor/themes/grey/editor.css new file mode 100644 index 0000000..beb0eae --- /dev/null +++ b/public/assets/addons/nkeditor/themes/grey/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-grey .ke-toolbar { + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-grey .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-grey .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-grey .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-grey .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-grey .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-grey .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-grey .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-grey .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-grey .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-grey .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-grey .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-grey .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-grey .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-grey .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-grey .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-grey .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-grey .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-grey .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-grey .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-grey .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-grey .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-grey .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-grey .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-grey .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-grey .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-grey .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-grey .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-grey .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-grey .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-grey .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-grey .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-grey .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-grey .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-grey .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-grey .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-grey .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-grey .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-grey .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-grey .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-grey .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-grey .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-grey .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-grey .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-grey .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-grey .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-grey .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-grey .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-grey .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-grey .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-grey .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-grey .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-grey .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-grey .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/public/assets/addons/nkeditor/themes/grey/editor.css.map b/public/assets/addons/nkeditor/themes/grey/editor.css.map new file mode 100644 index 0000000..01a6d6f --- /dev/null +++ b/public/assets/addons/nkeditor/themes/grey/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/grey/editor.min.css b/public/assets/addons/nkeditor/themes/grey/editor.min.css new file mode 100644 index 0000000..34fe061 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/grey/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-grey .ke-toolbar{border-top:5px solid #8a8a8a;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-grey .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-grey .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-grey .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-grey .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-grey .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-grey .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-grey .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-grey .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-grey .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-grey .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-grey .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-grey .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-grey .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-grey .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-grey .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-grey .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-grey .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-grey .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-grey .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-grey .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-grey .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-grey .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-grey .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-grey .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-grey .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-grey .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-grey .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-grey .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-grey .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-grey .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-grey .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-grey .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-grey .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-grey .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-grey .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-grey .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-grey .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-grey .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-grey .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-grey .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-grey .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-grey .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-grey .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-grey .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-grey .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-grey .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-grey .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-grey .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-grey .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-grey .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-grey .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-grey .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-grey .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-grey .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-grey .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-grey .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-grey .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/grey/editor.scss b/public/assets/addons/nkeditor/themes/grey/editor.scss new file mode 100644 index 0000000..9549839 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/grey/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-grey { + .ke-toolbar { + + border-top: 5px solid #8a8a8a; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-grey { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/grey/images/nkeditor.png b/public/assets/addons/nkeditor/themes/grey/images/nkeditor.png new file mode 100644 index 0000000..3e12962 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/grey/images/nkeditor.png differ diff --git a/public/assets/addons/nkeditor/themes/grey/images/nkeditor.svg b/public/assets/addons/nkeditor/themes/grey/images/nkeditor.svg new file mode 100644 index 0000000..7a5b61d --- /dev/null +++ b/public/assets/addons/nkeditor/themes/grey/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#8a8a8a" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#8a8a8a" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#8a8a8a" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#8a8a8a" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#8a8a8a" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#8a8a8a" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#8a8a8a" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#8a8a8a" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#8a8a8a" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#8a8a8a" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#8a8a8a" d="M3 10h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M3 8h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M3 12h4v1h-4v-1z"></path> +<path fill="#8a8a8a" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#8a8a8a" d="M3 6h7v1h-7v-1z"></path> +<path fill="#8a8a8a" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#8a8a8a" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#8a8a8a" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#8a8a8a" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#8a8a8a" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#8a8a8a" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#8a8a8a" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#8a8a8a" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#8a8a8a" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#8a8a8a" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#8a8a8a" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#8a8a8a" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#8a8a8a" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#8a8a8a" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#8a8a8a" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#8a8a8a" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#8a8a8a" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#8a8a8a" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#8a8a8a" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#8a8a8a" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#8a8a8a" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#8a8a8a" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#8a8a8a" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#8a8a8a" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#8a8a8a" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#8a8a8a" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#8a8a8a" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#8a8a8a" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#8a8a8a" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#8a8a8a" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#8a8a8a" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#8a8a8a" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#8a8a8a" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#8a8a8a" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#8a8a8a" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#8a8a8a" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#8a8a8a" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#8a8a8a" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#8a8a8a" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#8a8a8a" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#8a8a8a" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#8a8a8a" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#8a8a8a" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#8a8a8a" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#8a8a8a" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#8a8a8a" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#8a8a8a" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#8a8a8a" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#8a8a8a" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#8a8a8a" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#8a8a8a" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#8a8a8a" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#8a8a8a" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#8a8a8a" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#8a8a8a" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#8a8a8a" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#8a8a8a" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#8a8a8a" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#8a8a8a" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#8a8a8a" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#8a8a8a" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#8a8a8a" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#8a8a8a" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#8a8a8a" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#8a8a8a" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#8a8a8a" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#8a8a8a" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#8a8a8a" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#8a8a8a" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#8a8a8a" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#8a8a8a" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#8a8a8a" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#8a8a8a" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#8a8a8a" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#8a8a8a" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#8a8a8a" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#8a8a8a" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#8a8a8a" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#8a8a8a" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#8a8a8a" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#8a8a8a" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#8a8a8a" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#8a8a8a" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#8a8a8a" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#8a8a8a" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#8a8a8a" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#8a8a8a" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#8a8a8a" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#8a8a8a" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/public/assets/addons/nkeditor/themes/primary/editor.css b/public/assets/addons/nkeditor/themes/primary/editor.css new file mode 100644 index 0000000..33f3788 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/primary/editor.css @@ -0,0 +1,822 @@ +@charset "UTF-8"; +/** +公共样式 +*/ +.ke-clearfix { + zoom: 1; + clear: both; } + +.ke-clearfix:after { + content: "."; + display: block; + clear: both; + font-size: 0; + height: 0; + line-height: 0; + visibility: hidden; } + +.ke-animated { + animation: zoomIn; + animation-duration: 0.3s; + animation-fill-mode: both; } + +@keyframes zoomIn { + from { + opacity: 0; + transform: scale3d(0.3, 0.3, 0.3); } + 50% { + opacity: 1; } } +.ke-dialog-mask { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; } + +.ke-dialog-lock { + background-color: #FFF; + filter: alpha(opacity=50); + opacity: 0.5; + z-index: 811213; + left: 0; + top: 0; + position: absolute; } + +/** +编辑器样式开始 + */ +.ke-container { + display: block; + background-color: #FFF; + overflow: hidden; + margin: 0; + padding: 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + /** + 通用样式 + */ + /** + toolbar 样式 + */ + /** + ke-edit + */ + /** + statusbar start + */ } + .ke-container .ke-shadow { + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + background-color: #F0F0EE; } + .ke-container .ke-menu a, + .ke-container .ke-menu a:hover, + .ke-container .ke-dialog a, + .ke-container .ke-dialog a:hover { + color: #337FE5; + text-decoration: none; } + .ke-container .ke-toolbar { + text-align: left; + overflow: hidden; + zoom: 1; + padding: 0px 5px; } + .ke-container .ke-toolbar .ke-outline { + padding: 10px 5px; + font-size: 0; + line-height: 0; + cursor: pointer; + display: block; + float: left; + /** + * 按钮通用样式 + */ } + .ke-container .ke-toolbar .ke-outline .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; } + .ke-container .ke-toolbar .ke-on { + background: #ebebeb; } + .ke-container .ke-toolbar .ke-selected { + background-color: #ebebeb; } + .ke-container .ke-toolbar .ke-disabled { + cursor: default; } + .ke-container .ke-toolbar .ke-separator { + height: 16px; + margin: 2px 3px; + border-left: 1px solid #A0A0A0; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; + width: 0; + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + float: left; } + .ke-container .ke-toolbar .ke-hr { + clear: both; + height: 1px; + width: calc(100% - (2 * 2px)); + background: #ebebeb; } + .ke-container .ke-edit { + padding: 0; } + .ke-container .ke-edit .ke-edit-iframe, + .ke-container .ke-edit .ke-edit-textarea { + border: 0; + margin: 0; + padding: 0; + overflow: auto; } + .ke-container .ke-edit .ke-edit-textarea { + font: 12px/1.5 "Consolas", "Monaco", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; + color: #000; + overflow: auto; + resize: none; } + .ke-container .ke-edit .ke-edit-textarea:focus { + outline: none; } + .ke-container .ke-statusbar { + position: relative; + background-color: #f5f5f5; + border-top: 1px solid #e1e1e1; + font-size: 0; + line-height: 0; + *height: 12px; + overflow: hidden; + text-align: center; + cursor: s-resize; + display: none; } + .ke-container .ke-statusbar .ke-statusbar-center-icon { + background-position: -0px -754px; + width: 15px; + height: 11px; } + .ke-container .ke-statusbar .ke-statusbar-right-icon { + position: absolute; + right: 0; + bottom: 0; + cursor: se-resize; + width: 11px; + height: 11px; } + +/** + menu 右键菜单 + */ +.ke-menu { + border: 1px solid #cccccc; + background-color: #f5f5f5; + color: #222222; + padding: 2px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + text-align: left; + overflow: hidden; + /** + 表情插件 + */ } + .ke-menu .ke-menu-item { + border: 1px solid #F1F1F1; + background-color: #F1F1F1; + color: #222222; + height: 24px; + overflow: hidden; + cursor: pointer; } + .ke-menu .ke-menu-item .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-inline-block .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-menu .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-item-center { + width: 0; + height: 24px; + border-left: 1px solid #E3E3E3; + border-right: 1px solid #FFFFFF; + border-top: 0; + border-bottom: 0; } + .ke-menu .ke-menu-item .ke-menu-item-center-on { + border-left: 1px solid #E9EFF6; + border-right: 1px solid #E9EFF6; } + .ke-menu .ke-menu-item .ke-menu-item-right { + border: 0; + padding: 0 0 0 5px; + line-height: 24px; + text-align: left; + overflow: hidden; } + .ke-menu .ke-menu-item .ke-menu-separator { + margin: 2px 0; + height: 0; + overflow: hidden; + border-top: 1px solid #e1e1e1; + border-bottom: 1px solid #FFFFFF; + border-left: 0; + border-right: 0; } + .ke-menu .ke-menu-item-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons { + position: relative; } + .ke-menu .ke-plugin-emoticons .ke-preview { + position: absolute; + text-align: center; + margin: 2px; + padding: 10px; + top: 0; + border: 1px solid #A0A0A0; + background-color: #FFFFFF; + display: none; } + .ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img { + border: 0; + margin: 0; + padding: 0; } + .ke-menu .ke-plugin-emoticons .ke-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell { + margin: 0; + padding: 1px; + border: 1px solid #f5f5f5; + cursor: pointer; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img { + display: block; + background-repeat: no-repeat; + overflow: hidden; + margin: 2px; + width: 24px; + height: 24px; + margin: 0; + padding: 0; + border: 0; } + .ke-menu .ke-plugin-emoticons .ke-table .ke-on { + border: 1px solid #5690D2; + background-color: #E9EFF6; } + .ke-menu .ke-plugin-emoticons .ke-page { + text-align: right; + margin: 5px; + padding: 0; + border: 0; + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + color: #333; + text-decoration: none; } + +/** + colorpicker + */ +.ke-colorpicker { + border: 1px solid #A0A0A0; + background-color: #F1F1F1; + color: #222222; + padding: 2px; } + .ke-colorpicker .ke-colorpicker-table { + border: 0; + margin: 0; + padding: 0; + border-collapse: separate; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell { + font-size: 0; + line-height: 0; + border: 1px solid #F0F0EE; + cursor: pointer; + margin: 3px; + padding: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color { + width: 14px; + height: 14px; + margin: 3px; + padding: 0; + border: 0; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top { + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + line-height: 24px; + border: 1px solid #F1F1F1; + cursor: pointer; + margin: 0; + padding: 0; + text-align: center; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on { + border: 1px solid #5690D2; } + .ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected { + border: 1px solid #2446AB; } + +/** + dialog + */ +.ke-dialog { + margin: 0; + padding: 0; + border: 1px solid #cccccc; + zoom: 1; + box-shadow: 1px 1px 3px #A0A0A0; + -moz-box-shadow: 1px 1px 3px #A0A0A0; + -webkit-box-shadow: 1px 1px 3px #A0A0A0; + filter: progid:DXImageTransform.Microsoft.Shadow(color='#A0A0A0', Direction=135, Strength=3); + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + overflow: hidden; } + .ke-dialog .ke-dialog-header { + border: 0; + margin: 0; + font-weight: bold; + font-size: 14px; + height: 30px; + line-height: 30px; + padding: 0px 10px; + text-align: left; + color: #222; + cursor: move; + border-top-left-radius: 6px; + border-top-right-radius: 6px; + border-bottom: 1px solid #c6c6c6; + background: transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0; + position: relative; + cursor: move; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close { + height: 20px; + width: 20px; + cursor: pointer; + background: url("../common/icons-all.gif") 0 -59px; + position: absolute; + right: 5px; + top: 4px; } + .ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover { + background-position: 0px -89px; } + .ke-dialog .ke-dialog-content { + background-color: #FFF; + width: 100%; + height: 100%; + color: #333; + outline: 0; + zoom: 1; } + .ke-dialog .ke-dialog-content .ke-dialog-body { + font: 12px/1.5 "sans serif", tahoma, verdana, helvetica; + text-align: left; + overflow: hidden; + width: 100%; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea { + display: block; + width: 408px; + height: 260px; + font-family: "sans serif", tahoma, verdana, helvetica; + font-size: 12px; + border: 1px solid #cccccc; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus { + border-color: #66afe9; + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-select { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; + width: auto; + border: 1px solid #cccccc; + height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-form { + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number { + width: 50px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox { + position: relative; + top: 6px; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea { + display: block; + overflow: auto; + padding: 0; + resize: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus { + outline: none; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text { + display: inline-block !important; + max-width: 400px; + height: 30px; + line-height: 30px; + border: 1px solid #cccccc; + font-size: 14px; + margin: 0; + outline: 0; + padding: 0px 10px; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus { + border-color: #66afe9; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color { + border: 1px solid #e1e1e1; + background-color: #FFFFFF; + font-size: 12px; + width: 60px; + height: 30px; + line-height: 30px; + padding-left: 5px; + overflow: hidden; + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + top: -1px; + position: relative; + *height: 25px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file { + position: absolute; + font-size: 60px; + top: 0; + right: 0; + padding: 0; + margin: 0; + z-index: 811212; + border: 0 none; + opacity: 0; + cursor: pointer; + width: 62px; + height: 30px; + filter: alpha(opacity=0); } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common { + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button { + padding: 8px 15px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner { + padding: 10px 20px 0px 20px; + /** + tabs + */ } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row { + border: 1px solid #FFFFFF; + margin-bottom: 10px; + overflow: hidden; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left { + float: left; + height: 30px; + line-height: 30px; + width: 60px; + text-align: right; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right { + float: left; + text-align: left; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button { + position: relative; + top: -1px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label { + cursor: pointer; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + text-align: right; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img { + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header { + height: 30px; + line-height: 30px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text { + height: 22px; + line-height: 22px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button { + padding: 3px 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox { + margin-left: 10px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + border-bottom: 1px solid #e1e1e1; + margin-bottom: 20px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul { + list-style: none outside none; + margin: 0; + padding: 0; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li { + position: relative; + margin: 0 2px -1px 0; + padding: 0 20px; + float: left; + line-height: 25px; + text-align: center; + color: #337ab7; + cursor: pointer; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected { + background-color: #FFF; + border: 1px solid #e1e1e1; + border-bottom: 1px solid #FFF; + color: #555555; + cursor: default; + border-top-left-radius: 3px; + border-top-right-radius: 3px; } + .ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on { + background-color: #FFF; + color: #000; } + .ke-dialog .ke-dialog-content .ke-dialog-loading { + position: absolute; + top: 0; + left: 1px; + z-index: 1; + text-align: center; } + .ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content { + background: url("../common/loading.gif") no-repeat center; + color: #666; + font-size: 14px; + font-weight: bold; + height: 31px; + line-height: 31px; + padding-left: 36px; } + .ke-dialog .ke-dialog-footer { + font: 12px/1 "sans serif", tahoma, verdana, helvetica; + text-align: right; + padding: 0 15px 5px 0; + background-color: #FFF; + height: 40px; } + .ke-dialog .ke-dialog-footer .ke-dialog-yes { + margin: 5px; } + .ke-dialog .ke-dialog-footer .ke-dialog-no { + margin: 5px 10px 5px 5px; } + .ke-dialog .ke-button-common { + display: inline-block; + text-align: center; + background: none; + border: none; + padding: 0; + cursor: pointer; } + .ke-dialog .ke-button-outer { + background-position: 0 -25px; + padding: 0; + display: -moz-inline-stack; + display: inline-block; + vertical-align: middle; + zoom: 1; + *display: inline; } + .ke-dialog .ke-button { + color: #333; + font-size: 12px; + border: 1px solid #e6e6e6; + background-color: #e6e6e6; + padding: 7px 10px; + margin-top: -4px; + color: #444; + text-decoration: none; + transition: background-color .3s ease-out, border-color .3s ease-out; } + .ke-dialog .ke-button:hover { + border: 1px solid #e1e1e1; + background-color: #e1e1e1; } + .ke-dialog .ke-dialog-btn { + font-size: 12px; + margin: 5px; + background: #2e8ded; + color: #fff !important; + padding: 8px 12px; + display: inline-block; + border-radius: 2px; + cursor: pointer; + text-decoration: none; + transition: .3s ease-out; } + .ke-dialog .ke-dialog-btn:hover { + filter: alpha(opacity=80); + box-shadow: none; + box-shadow: none; + opacity: .8; } + +.ke-container-primary .ke-toolbar { + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; } + .ke-container-primary .ke-toolbar .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-container-primary .ke-toolbar .ke-icon-source { + background-position: 0 0px; } + .ke-container-primary .ke-toolbar .ke-icon-preview { + background-position: 0 -63px; } + .ke-container-primary .ke-toolbar .ke-icon-print { + background-position: 0 -84px; } + .ke-container-primary .ke-toolbar .ke-icon-undo { + background-position: 0 -21px; } + .ke-container-primary .ke-toolbar .ke-icon-redo { + background-position: 0 -42px; } + .ke-container-primary .ke-toolbar .ke-icon-template { + background-position: 0 -105px; } + .ke-container-primary .ke-toolbar .ke-icon-cut { + background-position: 0 -147px; } + .ke-container-primary .ke-toolbar .ke-icon-copy { + background-position: 0 -168px; } + .ke-container-primary .ke-toolbar .ke-icon-paste { + background-position: 0 -189px; } + .ke-container-primary .ke-toolbar .ke-icon-selectall { + background-position: 0 -483px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyleft { + background-position: 0 -252px; } + .ke-container-primary .ke-toolbar .ke-icon-justifycenter { + background-position: 0 -273px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyright { + background-position: 0 -294px; } + .ke-container-primary .ke-toolbar .ke-icon-justifyfull { + background-position: 0 -315px; } + .ke-container-primary .ke-toolbar .ke-icon-insertorderedlist { + background-position: 0 -336px; } + .ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist { + background-position: 0 -357px; } + .ke-container-primary .ke-toolbar .ke-icon-indent { + background-position: 0 -378px; } + .ke-container-primary .ke-toolbar .ke-icon-outdent { + background-position: 0 -399px; } + .ke-container-primary .ke-toolbar .ke-icon-subscript { + background-position: 0 -420px; } + .ke-container-primary .ke-toolbar .ke-icon-superscript { + background-position: 0 -441px; } + .ke-container-primary .ke-toolbar .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formatblock { + background-position: 0 -546px; } + .ke-container-primary .ke-toolbar .ke-icon-fontname { + background-position: 0 -567px; } + .ke-container-primary .ke-toolbar .ke-icon-fontsize { + background-position: 0 -588px; } + .ke-container-primary .ke-toolbar .ke-icon-forecolor { + background-position: 0 -609px; } + .ke-container-primary .ke-toolbar .ke-icon-hilitecolor { + background-position: 0 -630px; } + .ke-container-primary .ke-toolbar .ke-icon-bold { + background-position: 0 -651px; } + .ke-container-primary .ke-toolbar .ke-icon-italic { + background-position: 0 -672px; } + .ke-container-primary .ke-toolbar .ke-icon-underline { + background-position: 0 -693px; } + .ke-container-primary .ke-toolbar .ke-icon-strikethrough { + background-position: 0 -714px; } + .ke-container-primary .ke-toolbar .ke-icon-removeformat { + background-position: 0 -756px; } + .ke-container-primary .ke-toolbar .ke-icon-image { + background-position: 0 -777px; } + .ke-container-primary .ke-toolbar .ke-icon-flash { + background-position: 0 -840px; } + .ke-container-primary .ke-toolbar .ke-icon-media { + background-position: 0 -861px; } + .ke-container-primary .ke-toolbar .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-hr { + background-position: 0 -924px; } + .ke-container-primary .ke-toolbar .ke-icon-emoticons { + background-position: 0 -945px; } + .ke-container-primary .ke-toolbar .ke-icon-link { + background-position: 0 -1008px; } + .ke-container-primary .ke-toolbar .ke-icon-unlink { + background-position: 0 -1029px; } + .ke-container-primary .ke-toolbar .ke-icon-fullscreen { + background-position: 0 -525px; } + .ke-container-primary .ke-toolbar .ke-icon-about { + background-position: 0 -1092px; } + .ke-container-primary .ke-toolbar .ke-icon-quote { + background-position: 0 -1114px; } + .ke-container-primary .ke-toolbar .ke-icon-plainpaste { + background-position: 0 -210px; } + .ke-container-primary .ke-toolbar .ke-icon-wordpaste { + background-position: 0 -231px; } + .ke-container-primary .ke-toolbar .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; } + .ke-container-primary .ke-toolbar .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-code { + background-position: 0 -126px; } + .ke-container-primary .ke-toolbar .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-baidumap { + background-position: 0 -1050px; } + .ke-container-primary .ke-toolbar .ke-icon-lineheight { + background-position: 0 -735px; } + .ke-container-primary .ke-toolbar .ke-icon-clearhtml { + background-position: 0 -462px; } + .ke-container-primary .ke-toolbar .ke-icon-pagebreak { + background-position: 0 -966px; } + .ke-container-primary .ke-toolbar .ke-icon-insertfile { + background-position: 0 -882px; } + .ke-container-primary .ke-toolbar .ke-icon-quickformat { + background-position: 0 -504px; } + .ke-container-primary .ke-toolbar .ke-icon-anchor { + background-position: 0 -987px; } + .ke-container-primary .ke-toolbar .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; } + .ke-container-primary .ke-toolbar .ke-icon-multiimage { + background-position: 0 -798px; } + .ke-container-primary .ke-toolbar .ke-icon-graft { + background-position: 0 -819px; } + +/** + menu 右键菜单 + */ +.ke-menu-primary .ke-menu-item .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon { + font-size: 0; + line-height: 0; + overflow: hidden; + display: block; + width: 16px; + height: 16px; + margin: 0px 2px; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete { + background-position: 0 -1428px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete { + background-position: 0 -1239px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete { + background-position: 0 -1260px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop { + background-position: 0 -1218px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop { + background-position: 0 -1134px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge { + background-position: -1px -1197px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge { + background-position: -4px -1365px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit { + background-position: 0 -1344px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image { + background-position: 0 -777px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash { + background-position: 0 -840px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media { + background-position: 0 -861px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link { + background-position: 0 -1008px; } + .ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked { + background-position: 0 -1407px; } + +/*# sourceMappingURL=editor.css.map */ diff --git a/public/assets/addons/nkeditor/themes/primary/editor.css.map b/public/assets/addons/nkeditor/themes/primary/editor.css.map new file mode 100644 index 0000000..268b7c7 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/primary/editor.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";AAgCA;;EAEE;AAEF,YAAa;EACT,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;;AAEf,kBAAmB;EACf,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,CAAC;EACZ,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,CAAC;EACd,UAAU,EAAE,MAAM;;AAGtB,YAAa;EACT,SAAS,EAAE,MAAM;EACjB,kBAAkB,EAAE,IAAI;EACxB,mBAAmB,EAAE,IAAI;;AAE7B,iBAQC;EAPG,IAAK;IACD,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,sBAAsB;EAErC,GAAI;IACA,OAAO,EAAE,CAAC;AAKlB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;;AAEhB,eAAgB;EACZ,gBAAgB,EAAE,IAAI;EACtB,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,CAAC;EACP,GAAG,EAAE,CAAC;EACN,QAAQ,EAAE,QAAQ;;AAGtB;;GAEG;AACH,aAAc;EAEV,OAAO,EAAE,KAAK;EAEd,gBAAgB,EAAE,IAAI;EACtB,QAAQ,EAAE,MAAM;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,UAAU,EAAE,gEAA0D;EAEtE;;KAEG;EAcH;;KAEG;EA0DH;;KAEG;EAwBH;;KAEG;EArGH,wBAAW;IAvEX,UAAU,EAAE,mBAAmB;IAC/B,eAAe,EAAE,mBAAmB;IACpC,kBAAkB,EAAE,mBAAmB;IACvC,MAAM,EAAE,oFAAoF;IAsExF,gBAAgB,EAAE,OAAO;EAG7B;;;kCAGmB;IACf,KAAK,EAAE,OAAO;IACd,eAAe,EAAE,IAAI;EAMzB,yBAAY;IAER,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,OAAO;IAEhB,qCAAY;MAER,OAAO,EAAE,QAAQ;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,OAAO;MACf,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;MAEX;;SAEG;MACH,sDAAiB;QApHzB,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,MAAM;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,OAAO;IAoHX,gCAAO;MACH,UAAU,EAAE,OAAO;IAEvB,sCAAa;MACT,gBAAgB,EAAE,OAAO;IAE7B,sCAAa;MACT,MAAM,EAAE,OAAO;IAEnB,uCAAc;MACV,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,OAAO;MACf,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;MAChB,KAAK,EAAE,CAAC;MACR,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,QAAQ,EAAE,MAAM;MAChB,OAAO,EAAE,KAAK;MACd,KAAK,EAAE,IAAI;IAEf,gCAAO;MACH,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,GAAG;MACX,KAAK,EAAE,sBAAsB;MAC7B,UAAU,EAAE,OAAO;EAQ3B,sBAAS;IACL,OAAO,EAAE,CAAC;IAEV;4CACkB;MACd,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,QAAQ,EAAE,IAAI;IAElB,wCAAkB;MACd,IAAI,EAAE,4FAA4F;MAClG,KAAK,EAAE,IAAI;MACX,QAAQ,EAAE,IAAI;MACd,MAAM,EAAE,IAAI;MAEZ,8CAAQ;QACJ,OAAO,EAAE,IAAI;EASzB,2BAAc;IACV,QAAQ,EAAE,QAAQ;IAClB,gBAAgB,EAAE,OAAO;IACzB,UAAU,EAvMG,iBAAiB;IAwM9B,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,MAAM;IAChB,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,IAAI;IAEb,qDAA0B;MACtB,mBAAmB,EAAE,WAAW;MAChC,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;IAGhB,oDAAyB;MACrB,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,SAAS;MACjB,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,IAAI;;AAMxB;;OAEO;AACP,QAAS;EACL,MAAM,EArOW,iBAAiB;EAsOlC,gBAAgB,EArOL,OAAO;EAsOlB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EACZ,WAAW,EAAE,wCAAwC;EACrD,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,IAAI;EAChB,QAAQ,EAAE,MAAM;EAgEhB;;KAEG;EAhEH,sBAAc;IACV,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,OAAO;IAEf,uCAAiB;MAlPrB,OAAO,EAAE,iBAAiB;MAC1B,OAAO,EAAE,YAAY;MACrB,cAAc,EAAE,MAAM;MACtB,IAAI,EAAE,CAAC;MACP,QAAQ,EAAE,MAAM;MAiPR,wDAAiB;QArPzB,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;IAsPZ,yCAAmB;MACf,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,QAAQ,EAAE,MAAM;IAKpB,2CAAqB;MACjB,KAAK,EAAE,CAAC;MACR,MAAM,EAAE,IAAI;MACZ,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;MAC/B,UAAU,EAAE,CAAC;MACb,aAAa,EAAE,CAAC;IAGpB,8CAAwB;MACpB,WAAW,EAAE,iBAAiB;MAC9B,YAAY,EAAE,iBAAiB;IAGnC,0CAAoB;MAChB,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,SAAS;MAClB,WAAW,EAAE,IAAI;MACjB,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;IAGpB,yCAAmB;MACf,MAAM,EAAE,KAAK;MACb,MAAM,EAAE,CAAC;MACT,QAAQ,EAAE,MAAM;MAChB,UAAU,EAjSD,iBAAiB;MAkS1B,aAAa,EAAE,iBAAiB;MAChC,WAAW,EAAE,CAAC;MACd,YAAY,EAAE,CAAC;EAIvB,yBAAiB;IACb,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;EAM7B,6BAAqB;IACjB,QAAQ,EAAE,QAAQ;IAElB,yCAAY;MACR,QAAQ,EAAE,QAAQ;MAClB,UAAU,EAAE,MAAM;MAClB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,IAAI;MACb,GAAG,EAAE,CAAC;MACN,MAAM,EAAE,iBAAiB;MACzB,gBAAgB,EAAE,OAAO;MACzB,OAAO,EAAE,IAAI;MAEb,yDAAgB;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;IAIlB,uCAAU;MACN,MAAM,EAAE,CAAC;MACT,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,eAAe,EAAE,QAAQ;MAEzB,gDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,OAAO;QAEf,wDAAQ;UACJ,OAAO,EAAE,KAAK;UACd,iBAAiB,EAAE,SAAS;UAC5B,QAAQ,EAAE,MAAM;UAChB,MAAM,EAAE,GAAG;UACX,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;MAGjB,8CAAO;QACH,MAAM,EAAE,iBAAiB;QACzB,gBAAgB,EAAE,OAAO;IAIjC,sCAAS;MACL,UAAU,EAAE,KAAK;MACjB,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MACV,MAAM,EAAE,CAAC;MACT,IAAI,EAAE,+CAA+C;MACrD,KAAK,EAAE,IAAI;MACX,eAAe,EAAE,IAAI;;AAOjC;;GAEG;AACH,eAAgB;EACZ,MAAM,EAAE,iBAAiB;EACzB,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,OAAO;EACd,OAAO,EAAE,GAAG;EAEZ,qCAAsB;IAClB,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,QAAQ;IAEzB,0DAAqB;MACjB,SAAS,EAAE,CAAC;MACZ,WAAW,EAAE,CAAC;MACd,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,GAAG;MACX,OAAO,EAAE,CAAC;MAEV,qFAA2B;QACvB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;IAGjB,8DAAyB;MACrB,WAAW,EAAE,wCAAwC;MACrD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,MAAM,EAAE,iBAAiB;MACzB,MAAM,EAAE,OAAO;MACf,MAAM,EAAE,CAAC;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;IAEtB,6DAAwB;MACpB,MAAM,EAAE,iBAAiB;IAE7B,mEAA8B;MAC1B,MAAM,EAAE,iBAAiB;;AAMrC;;GAEG;AACH,UAAW;EACP,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EACV,MAAM,EAxaW,iBAAiB;EAyalC,IAAI,EAAE,CAAC;EAnZP,UAAU,EAAE,mBAAmB;EAC/B,eAAe,EAAE,mBAAmB;EACpC,kBAAkB,EAAE,mBAAmB;EACvC,MAAM,EAAE,oFAAoF;EAkZ5F,aAAa,EAAE,GAAG;EAClB,kBAAkB,EAAE,GAAG;EACvB,qBAAqB,EAAE,GAAG;EAC1B,QAAQ,EAAE,MAAM;EAGhB,4BAAkB;IACd,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,sBAAsB,EAAE,GAAG;IAC3B,uBAAuB,EAAE,GAAG;IAC5B,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,kEAAkE;IAC9E,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,IAAI;IAEZ,kDAAsB;MAClB,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;MACf,UAAU,EAAE,sCAAsC;MAClD,QAAQ,EAAE,QAAQ;MAClB,KAAK,EAAE,GAAG;MACV,GAAG,EAAE,GAAG;MAER,wDAAQ;QACJ,mBAAmB,EAAE,SAAS;EAO1C,6BAAmB;IAEf,gBAAgB,EAAE,IAAI;IACtB,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,CAAC;IAGP,6CAAgB;MACZ,IAAI,EAAE,iDAAiD;MACvD,UAAU,EAAE,IAAI;MAChB,QAAQ,EAAE,MAAM;MAChB,KAAK,EAAE,IAAI;MAEX,0DAAa;QACT,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,iBAA2B;QAEnC,gEAAQ;UACJ,YAAY,EAhfP,OAAO;UAifZ,OAAO,EAAE,IAAI;MAIrB,wDAAW;QACP,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,iBAA2B;QACnC,MAAM,EA5fP,IAAI;MA8fP,sDAAS;QACL,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;MAGd,8DAAiB;QACb,KAAK,EAAE,IAAI;MAGf,gEAAmB;QACf,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAC,GAAG;MAGX,sDAAS;QACL,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,IAAI;QAEZ,4DAAQ;UACJ,OAAO,EAAE,IAAI;MAIrB,4DAAe;QACX,OAAO,EAAE,uBAAuB;QAChC,SAAS,EAAE,KAAK;QAChB,MAAM,EA1hBP,IAAI;QA2hBH,WAAW,EA3hBZ,IAAI;QA4hBH,MAAM,EAAC,iBAA2B;QAClC,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,MAAM;QAEhB,kEAAQ;UACJ,YAAY,EAriBP,OAAO;MAyiBpB,6DAAgB;QACZ,MAAM,EAxiBD,iBAAiB;QAyiBtB,gBAAgB,EAAE,OAAO;QACzB,SAAS,EAAE,IAAI;QACf,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,MAAM;MAGpB,6DAAgB;QACZ,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,CAAC;QACT,OAAO,EAAE,CAAC;QACV,GAAG,EAAC,IAAI;QACR,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,IAAI;QAEb,6EAAgB;UACZ,QAAQ,EAAE,QAAQ;UAClB,SAAS,EAAE,IAAI;UACf,GAAG,EAAE,CAAC;UACN,KAAK,EAAE,CAAC;UACR,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,CAAC;UACT,OAAO,EAAE,MAAM;UACf,MAAM,EAAE,MAAM;UACd,OAAO,EAAE,CAAC;UACV,MAAM,EAAE,OAAO;UACf,KAAK,EAAE,IAAI;UACX,MAAM,EAAE,IAAI;UACZ,MAAM,EAAE,gBAAgB;QAI5B,+EAAkB;UACd,GAAG,EAAE,IAAI;QAEb,wEAAW;UACP,OAAO,EAAE,QAAQ;MAIzB,sEAAyB;QACrB,OAAO,EAAE,kBAAkB;QAkE3B;;WAEG;QAlEH,qFAAe;UACX,MAAM,EAAC,iBAAiB;UACxB,aAAa,EAAE,IAAI;UACnB,QAAQ,EAAE,MAAM;UAEhB,+FAAU;YACN,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,KAAK;UAErB,gGAAW;YACP,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;YAEhB,iHAAiB;cAxmBrC,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAumBQ,mIAAkB;gBACd,QAAQ,EAAE,QAAQ;gBAClB,GAAG,EAAE,IAAI;YAIjB,sGAAM;cACF,MAAM,EAAE,OAAO;cACf,OAAO,EAAE,iBAAiB;cAC1B,OAAO,EAAE,YAAY;cACrB,cAAc,EAAE,MAAM;cACtB,UAAU,EAAE,KAAK;cACjB,IAAI,EAAE,CAAC;cACP,QAAQ,EAAE,MAAM;cAEhB,0GAAI;gBACA,OAAO,EAAE,iBAAiB;gBAC1B,OAAO,EAAE,YAAY;gBACrB,cAAc,EAAE,MAAM;gBACtB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,MAAM;QAShC,iFAAW;UACP,MAAM,EAAE,IAAI;UACZ,WAAW,EAAE,IAAI;UAEjB,gGAAe;YACX,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,IAAI;UAErB,4FAAW;YACP,OAAO,EAAE,QAAQ;UAErB,2FAAU;YACN,WAAW,EAAC,IAAI;QAOxB,+EAAS;UACL,IAAI,EAAE,+CAA+C;UACrD,aAAa,EAlqBZ,iBAAiB;UAmqBlB,aAAa,EAAE,IAAI;UAEnB,2FAAY;YACR,UAAU,EAAE,iBAAiB;YAC7B,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;YAEV,uGAAY;cACR,QAAQ,EAAE,QAAQ;cAClB,MAAM,EAAE,YAAY;cACpB,OAAO,EAAE,MAAM;cACf,KAAK,EAAE,IAAI;cACX,WAAW,EAAE,IAAI;cACjB,UAAU,EAAE,MAAM;cAClB,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;YAEnB,gHAAqB;cACjB,gBAAgB,EAAE,IAAI;cACtB,MAAM,EAtrBb,iBAAiB;cAurBV,aAAa,EAAE,cAAc;cAC7B,KAAK,EAAE,OAAO;cACd,MAAM,EAAE,OAAO;cACf,sBAAsB,EAAE,GAAG;cAC3B,uBAAuB,EAAE,GAAG;YAGhC,0GAAe;cACX,gBAAgB,EAAE,IAAI;cACtB,KAAK,EAAE,IAAI;IAU/B,gDAAmB;MACf,QAAQ,EAAE,QAAQ;MAClB,GAAG,EAAE,CAAC;MACN,IAAI,EAAE,GAAG;MACT,OAAO,EAAE,CAAC;MACV,UAAU,EAAE,MAAM;MAElB,2EAA2B;QACvB,UAAU,EAAE,6CAA6C;QACzD,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;EAM9B,4BAAkB;IACd,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,KAAK;IACjB,OAAO,EAAE,YAAY;IACrB,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IAEZ,2CAAe;MACX,MAAM,EAAE,GAAG;IAGf,0CAAc;MACV,MAAM,EAAE,gBAAgB;EAIhC,4BAAkB;IACd,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,MAAM;IAClB,UAAU,EAAE,IAAI;IAChB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,OAAO;EAGnB,2BAAiB;IACb,mBAAmB,EAAE,OAAO;IAC5B,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,YAAY;IACrB,cAAc,EAAE,MAAM;IACtB,IAAI,EAAE,CAAC;IACP,QAAQ,EAAE,MAAM;EAGpB,qBAAW;IACP,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,iBAAiB;IACzB,gBAAgB,EAAE,OAAO;IACzB,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,wDAAwD;IAEpE,2BAAQ;MACJ,MAAM,EA7wBG,iBAAiB;MA8wB1B,gBAAgB,EAAE,OAAO;EAIjC,yBAAe;IACX,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,OAAO;IACnB,KAAK,EAAE,eAAe;IACtB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,YAAY;IACrB,aAAa,EAAE,GAAG;IAClB,MAAM,EAAE,OAAO;IACf,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,YAAY;IAExB,+BAAQ;MACJ,MAAM,EAAE,iBAAiB;MACzB,UAAU,EAAE,IAAI;MAChB,UAAU,EAAE,IAAI;MAChB,OAAO,EAAE,EAAE;;AClyBnB,iCAAY;EAER,UAAU,EAAE,iBAAiB;EAC7B,UAAU,EAAE,gEAAgE;EAC5E,eAAe,EAAE,WAAW;EAC5B,cAAc,EAAE,kBAAkB;EAElC,kDAAiB;IACb,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,iDAAgB;IACZ,mBAAmB,EAAE,KAAK;EAE9B,kDAAiB;IACb,mBAAmB,EAAE,OAAO;EAEhC,gDAAe;IACX,mBAAmB,EAAE,OAAO;EAEhC,+CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,+CAAc;IACV,mBAAmB,EAAE,OAAO;EAGhC,mDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,8CAAa;IACT,mBAAmB,EAAE,QAAQ;EAGjC,+CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,wDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,uDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,4DAA2B;IACvB,mBAAmB,EAAE,QAAQ;EAGjC,8DAA6B;IACzB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,kDAAiB;IACb,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,+CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,+CAAc;IACV,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,mDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,mDAAkB;IACd,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,+CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,iDAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,wDAAuB;IACnB,mBAAmB,EAAE,QAAQ;EAGjC,uDAAsB;IAClB,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,QAAQ;EAGjC,8CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,kDAAiB;IACb,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,6CAAY;IACR,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,+CAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,iDAAgB;IACZ,mBAAmB,EAAE,SAAS;EAGlC,qDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,gDAAe;IACX,mBAAmB,EAAE,SAAS;EAGlC,qDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,eAAe;EAG1B,oDAAmB;IACf,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,+CAAc;IACV,mBAAmB,EAAE,QAAQ;EAGjC,8CAAa;IACT,mBAAmB,EAAE,UAAU;IAC/B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,mDAAkB;IACd,mBAAmB,EAAE,SAAS;EAGlC,qDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,oDAAmB;IACf,mBAAmB,EAAE,QAAQ;EAGjC,qDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,sDAAqB;IACjB,mBAAmB,EAAE,QAAQ;EAGjC,iDAAgB;IACZ,mBAAmB,EAAE,QAAQ;EAGjC,iDAAgB;IACZ,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,8CAAa;IACT,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,sDAAqB;IACjB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,qDAAoB;IAChB,mBAAmB,EAAE,QAAQ;EAGjC,gDAAe;IACX,mBAAmB,EAAE,QAAQ;;AAKzC;;GAEG;AAKK,iDAAmB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;EAClB,QAAQ,EAAE,MAAM;EAEhB,kEAAiB;IDrRzB,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM;IAChB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,OAAO;ICiRH,iBAAiB,EAAE,wBAAwB;IAC3C,UAAU,EAAE,kCAAkC;EAGlD,sEAAqB;IACjB,mBAAmB,EAAE,QAAQ;IAC7B,KAAK,EAAE,eAAe;EAG1B,sEAAqB;IACjB,mBAAmB,EAAE,SAAS;EAGlC,6EAA4B;IACxB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,8EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,8EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,8EAA6B;IACzB,mBAAmB,EAAE,SAAS;IAC9B,KAAK,EAAE,eAAe;EAG1B,yEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,yEAAwB;IACpB,mBAAmB,EAAE,SAAS;EAGlC,wEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,oEAAmB;IACf,mBAAmB,EAAE,SAAS;EAElC,yEAAwB;IACpB,mBAAmB,EAAE,WAAW;IAChC,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;EAGhB,wEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,wEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAGlC,wEAAuB;IACnB,mBAAmB,EAAE,YAAY;EAGrC,wEAAuB;IACnB,mBAAmB,EAAE,SAAS;EAIlC,gEAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,gEAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,gEAAe;IACX,mBAAmB,EAAE,QAAQ;EAEjC,+DAAc;IACV,mBAAmB,EAAE,SAAS;EAGlC,kEAAiB;IACb,mBAAmB,EAAE,SAAS", +"sources": ["../common/common.scss","editor.scss"], +"names": [], +"file": "editor.css" +} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/primary/editor.min.css b/public/assets/addons/nkeditor/themes/primary/editor.min.css new file mode 100644 index 0000000..62d5203 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/primary/editor.min.css @@ -0,0 +1 @@ +@charset "UTF-8";.ke-clearfix{zoom:1;clear:both}.ke-clearfix:after{content:".";display:block;clear:both;font-size:0;height:0;line-height:0;visibility:hidden}.ke-animated{animation:zoomIn;animation-duration:.3s;animation-fill-mode:both}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}.ke-dialog-mask{background-color:#fff;opacity:.5}.ke-dialog-lock{background-color:#fff;opacity:.5;z-index:811213;left:0;top:0;position:absolute}.ke-container{display:block;background-color:#fff;overflow:hidden;margin:0;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16)}.ke-container .ke-shadow{box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;background-color:#f0f0ee}.ke-container .ke-dialog a,.ke-container .ke-dialog a:hover,.ke-container .ke-menu a,.ke-container .ke-menu a:hover{color:#337fe5;text-decoration:none}.ke-container .ke-toolbar{text-align:left;overflow:hidden;zoom:1;padding:0 5px}.ke-container .ke-toolbar .ke-outline{padding:10px 5px;font-size:0;line-height:0;cursor:pointer;display:block;float:left}.ke-container .ke-toolbar .ke-outline .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px}.ke-container .ke-toolbar .ke-on{background:#ebebeb}.ke-container .ke-toolbar .ke-selected{background-color:#ebebeb}.ke-container .ke-toolbar .ke-disabled{cursor:default}.ke-container .ke-toolbar .ke-separator{height:16px;margin:2px 3px;border-left:1px solid #a0a0a0;border-right:1px solid #fff;border-top:0;border-bottom:0;width:0;font-size:0;line-height:0;overflow:hidden;display:block;float:left}.ke-container .ke-toolbar .ke-hr{clear:both;height:1px;width:calc(100% - (2 * 2px));background:#ebebeb}.ke-container .ke-edit{padding:0}.ke-container .ke-edit .ke-edit-iframe,.ke-container .ke-edit .ke-edit-textarea{border:0;margin:0;padding:0;overflow:auto}.ke-container .ke-edit .ke-edit-textarea{font:12px/1.5 Consolas,Monaco,"Bitstream Vera Sans Mono","Courier New",Courier,monospace;color:#000;overflow:auto;resize:none}.ke-container .ke-edit .ke-edit-textarea:focus{outline:0}.ke-container .ke-statusbar{position:relative;background-color:#f5f5f5;border-top:1px solid #e1e1e1;font-size:0;line-height:0;overflow:hidden;text-align:center;cursor:s-resize;display:none}.ke-container .ke-statusbar .ke-statusbar-center-icon{background-position:0 -754px;width:15px;height:11px}.ke-container .ke-statusbar .ke-statusbar-right-icon{position:absolute;right:0;bottom:0;cursor:se-resize;width:11px;height:11px}.ke-menu{border:1px solid #ccc;background-color:#f5f5f5;color:#222;padding:2px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item{border:1px solid #f1f1f1;background-color:#f1f1f1;color:#222;height:24px;overflow:hidden;cursor:pointer}.ke-menu .ke-menu-item .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-inline-block .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-menu .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-item-center{width:0;height:24px;border-left:1px solid #e3e3e3;border-right:1px solid #fff;border-top:0;border-bottom:0}.ke-menu .ke-menu-item .ke-menu-item-center-on{border-left:1px solid #e9eff6;border-right:1px solid #e9eff6}.ke-menu .ke-menu-item .ke-menu-item-right{border:0;padding:0 0 0 5px;line-height:24px;text-align:left;overflow:hidden}.ke-menu .ke-menu-item .ke-menu-separator{margin:2px 0;height:0;overflow:hidden;border-top:1px solid #e1e1e1;border-bottom:1px solid #fff;border-left:0;border-right:0}.ke-menu .ke-menu-item-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons{position:relative}.ke-menu .ke-plugin-emoticons .ke-preview{position:absolute;text-align:center;margin:2px;padding:10px;top:0;border:1px solid #a0a0a0;background-color:#fff;display:none}.ke-menu .ke-plugin-emoticons .ke-preview .ke-preview-img{border:0;margin:0;padding:0}.ke-menu .ke-plugin-emoticons .ke-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell{margin:0;padding:1px;border:1px solid #f5f5f5;cursor:pointer}.ke-menu .ke-plugin-emoticons .ke-table .ke-cell .ke-img{display:block;background-repeat:no-repeat;overflow:hidden;margin:2px;width:24px;height:24px;margin:0;padding:0;border:0}.ke-menu .ke-plugin-emoticons .ke-table .ke-on{border:1px solid #5690d2;background-color:#e9eff6}.ke-menu .ke-plugin-emoticons .ke-page{text-align:right;margin:5px;padding:0;border:0;font:12px/1 "sans serif",tahoma,verdana,helvetica;color:#333;text-decoration:none}.ke-colorpicker{border:1px solid #a0a0a0;background-color:#f1f1f1;color:#222;padding:2px}.ke-colorpicker .ke-colorpicker-table{border:0;margin:0;padding:0;border-collapse:separate}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell{font-size:0;line-height:0;border:1px solid #f0f0ee;cursor:pointer;margin:3px;padding:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell .ke-colorpicker-cell-color{width:14px;height:14px;margin:3px;padding:0;border:0}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-top{font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;line-height:24px;border:1px solid #f1f1f1;cursor:pointer;margin:0;padding:0;text-align:center}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-on{border:1px solid #5690d2}.ke-colorpicker .ke-colorpicker-table .ke-colorpicker-cell-selected{border:1px solid #2446ab}.ke-dialog{margin:0;padding:0;border:1px solid #ccc;zoom:1;box-shadow:1px 1px 3px #a0a0a0;-moz-box-shadow:1px 1px 3px #a0a0a0;-webkit-box-shadow:1px 1px 3px #a0a0a0;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;overflow:hidden}.ke-dialog .ke-dialog-header{border:0;margin:0;font-weight:700;font-size:14px;height:30px;line-height:30px;padding:0 10px;text-align:left;color:#222;cursor:move;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom:1px solid #c6c6c6;background:transparent url(../common/dialog-title-bg.png) repeat-x scroll 0 0;position:relative;cursor:move}.ke-dialog .ke-dialog-header .ke-dialog-icon-close{height:20px;width:20px;cursor:pointer;background:url(../common/icons-all.gif) 0 -59px;position:absolute;right:5px;top:4px}.ke-dialog .ke-dialog-header .ke-dialog-icon-close:hover{background-position:0 -89px}.ke-dialog .ke-dialog-content{background-color:#fff;width:100%;height:100%;color:#333;outline:0;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body{font:12px/1.5 "sans serif",tahoma,verdana,helvetica;text-align:left;overflow:hidden;width:100%}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea{display:block;width:408px;height:260px;font-family:"sans serif",tahoma,verdana,helvetica;font-size:12px;border:1px solid #ccc}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-textarea:focus{border-color:#66afe9;outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-select{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1;width:auto;border:1px solid #ccc;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-form{margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-number{width:50px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-checkbox{position:relative;top:6px}.ke-dialog .ke-dialog-content .ke-dialog-body textarea{display:block;overflow:auto;padding:0;resize:none}.ke-dialog .ke-dialog-content .ke-dialog-body textarea:focus{outline:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text{display:inline-block!important;max-width:400px;height:30px;line-height:30px;border:1px solid #ccc;font-size:14px;margin:0;outline:0;padding:0 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-text:focus{border-color:#66afe9}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-input-color{border:1px solid #e1e1e1;background-color:#fff;font-size:12px;width:60px;height:30px;line-height:30px;padding-left:5px;overflow:hidden;cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area{position:relative;overflow:hidden;margin:0;padding:0;top:-1px;position:relative}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-upload-file{position:absolute;font-size:60px;top:0;right:0;padding:0;margin:0;z-index:811212;border:0 none;opacity:0;cursor:pointer;width:62px;height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button-common{top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-upload-area .ke-button{padding:8px 15px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner{padding:10px 20px 0 20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row{border:1px solid #fff;margin-bottom:10px;overflow:hidden}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-left{float:left;height:30px;line-height:30px;width:60px;text-align:right}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right{float:left;text-align:left}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right .ke-inline-block .ke-upload-button{position:relative;top:-1px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label{cursor:pointer;display:-moz-inline-stack;display:inline-block;vertical-align:middle;text-align:right;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-dialog-row .row-right label img{display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header{height:30px;line-height:30px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-input-text{height:22px;line-height:22px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .ke-button{padding:3px 10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-header .checkbox{margin-left:10px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs{font:12px/1 "sans serif",tahoma,verdana,helvetica;border-bottom:1px solid #e1e1e1;margin-bottom:20px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul{list-style:none outside none;margin:0;padding:0}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li{position:relative;margin:0 2px -1px 0;padding:0 20px;float:left;line-height:25px;text-align:center;color:#337ab7;cursor:pointer}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-selected{background-color:#fff;border:1px solid #e1e1e1;border-bottom:1px solid #fff;color:#555;cursor:default;border-top-left-radius:3px;border-top-right-radius:3px}.ke-dialog .ke-dialog-content .ke-dialog-body .ke-dialog-content-inner .ke-tabs .ke-tabs-ul .ke-tabs-li-on{background-color:#fff;color:#000}.ke-dialog .ke-dialog-content .ke-dialog-loading{position:absolute;top:0;left:1px;z-index:1;text-align:center}.ke-dialog .ke-dialog-content .ke-dialog-loading .ke-dialog-loading-content{background:url(../common/loading.gif) no-repeat center;color:#666;font-size:14px;font-weight:700;height:31px;line-height:31px;padding-left:36px}.ke-dialog .ke-dialog-footer{font:12px/1 "sans serif",tahoma,verdana,helvetica;text-align:right;padding:0 15px 5px 0;background-color:#fff;height:40px}.ke-dialog .ke-dialog-footer .ke-dialog-yes{margin:5px}.ke-dialog .ke-dialog-footer .ke-dialog-no{margin:5px 10px 5px 5px}.ke-dialog .ke-button-common{display:inline-block;text-align:center;background:0 0;border:none;padding:0;cursor:pointer}.ke-dialog .ke-button-outer{background-position:0 -25px;padding:0;display:-moz-inline-stack;display:inline-block;vertical-align:middle;zoom:1}.ke-dialog .ke-button{color:#333;font-size:12px;border:1px solid #e6e6e6;background-color:#e6e6e6;padding:7px 10px;margin-top:-4px;color:#444;text-decoration:none;transition:background-color .3s ease-out,border-color .3s ease-out}.ke-dialog .ke-button:hover{border:1px solid #e1e1e1;background-color:#e1e1e1}.ke-dialog .ke-dialog-btn{font-size:12px;margin:5px;background:#2e8ded;color:#fff!important;padding:8px 12px;display:inline-block;border-radius:2px;cursor:pointer;text-decoration:none;transition:.3s ease-out}.ke-dialog .ke-dialog-btn:hover{box-shadow:none;box-shadow:none;opacity:.8}.ke-container-primary .ke-toolbar{border-top:5px solid #009688;box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 1px 1px rgba(0,0,0,.16);background-clip:padding-box;text-rendering:optimizelegibility}.ke-container-primary .ke-toolbar .ke-toolbar-icon{background:url(images/nkeditor.svg) no-repeat}.ke-container-primary .ke-toolbar .ke-icon-source{background-position:0 0}.ke-container-primary .ke-toolbar .ke-icon-preview{background-position:0 -63px}.ke-container-primary .ke-toolbar .ke-icon-print{background-position:0 -84px}.ke-container-primary .ke-toolbar .ke-icon-undo{background-position:0 -21px}.ke-container-primary .ke-toolbar .ke-icon-redo{background-position:0 -42px}.ke-container-primary .ke-toolbar .ke-icon-template{background-position:0 -105px}.ke-container-primary .ke-toolbar .ke-icon-cut{background-position:0 -147px}.ke-container-primary .ke-toolbar .ke-icon-copy{background-position:0 -168px}.ke-container-primary .ke-toolbar .ke-icon-paste{background-position:0 -189px}.ke-container-primary .ke-toolbar .ke-icon-selectall{background-position:0 -483px}.ke-container-primary .ke-toolbar .ke-icon-justifyleft{background-position:0 -252px}.ke-container-primary .ke-toolbar .ke-icon-justifycenter{background-position:0 -273px}.ke-container-primary .ke-toolbar .ke-icon-justifyright{background-position:0 -294px}.ke-container-primary .ke-toolbar .ke-icon-justifyfull{background-position:0 -315px}.ke-container-primary .ke-toolbar .ke-icon-insertorderedlist{background-position:0 -336px}.ke-container-primary .ke-toolbar .ke-icon-insertunorderedlist{background-position:0 -357px}.ke-container-primary .ke-toolbar .ke-icon-indent{background-position:0 -378px}.ke-container-primary .ke-toolbar .ke-icon-outdent{background-position:0 -399px}.ke-container-primary .ke-toolbar .ke-icon-subscript{background-position:0 -420px}.ke-container-primary .ke-toolbar .ke-icon-superscript{background-position:0 -441px}.ke-container-primary .ke-toolbar .ke-icon-date{background-position:0 -304px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-time{background-position:0 -320px;width:25px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formatblock{background-position:0 -546px}.ke-container-primary .ke-toolbar .ke-icon-fontname{background-position:0 -567px}.ke-container-primary .ke-toolbar .ke-icon-fontsize{background-position:0 -588px}.ke-container-primary .ke-toolbar .ke-icon-forecolor{background-position:0 -609px}.ke-container-primary .ke-toolbar .ke-icon-hilitecolor{background-position:0 -630px}.ke-container-primary .ke-toolbar .ke-icon-bold{background-position:0 -651px}.ke-container-primary .ke-toolbar .ke-icon-italic{background-position:0 -672px}.ke-container-primary .ke-toolbar .ke-icon-underline{background-position:0 -693px}.ke-container-primary .ke-toolbar .ke-icon-strikethrough{background-position:0 -714px}.ke-container-primary .ke-toolbar .ke-icon-removeformat{background-position:0 -756px}.ke-container-primary .ke-toolbar .ke-icon-image{background-position:0 -777px}.ke-container-primary .ke-toolbar .ke-icon-flash{background-position:0 -840px}.ke-container-primary .ke-toolbar .ke-icon-media{background-position:0 -861px}.ke-container-primary .ke-toolbar .ke-icon-div{background-position:0 -544px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-formula{background-position:0 -576px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-hr{background-position:0 -924px}.ke-container-primary .ke-toolbar .ke-icon-emoticons{background-position:0 -945px}.ke-container-primary .ke-toolbar .ke-icon-link{background-position:0 -1008px}.ke-container-primary .ke-toolbar .ke-icon-unlink{background-position:0 -1029px}.ke-container-primary .ke-toolbar .ke-icon-fullscreen{background-position:0 -525px}.ke-container-primary .ke-toolbar .ke-icon-about{background-position:0 -1092px}.ke-container-primary .ke-toolbar .ke-icon-quote{background-position:0 -1114px}.ke-container-primary .ke-toolbar .ke-icon-plainpaste{background-position:0 -210px}.ke-container-primary .ke-toolbar .ke-icon-wordpaste{background-position:0 -231px}.ke-container-primary .ke-toolbar .ke-icon-table{background-position:0 -903px;width:18px!important}.ke-container-primary .ke-toolbar .ke-icon-tablemenu{background-position:0 -768px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-code{background-position:0 -126px}.ke-container-primary .ke-toolbar .ke-icon-map{background-position:0 -976px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-baidumap{background-position:0 -1050px}.ke-container-primary .ke-toolbar .ke-icon-lineheight{background-position:0 -735px}.ke-container-primary .ke-toolbar .ke-icon-clearhtml{background-position:0 -462px}.ke-container-primary .ke-toolbar .ke-icon-pagebreak{background-position:0 -966px}.ke-container-primary .ke-toolbar .ke-icon-insertfile{background-position:0 -882px}.ke-container-primary .ke-toolbar .ke-icon-quickformat{background-position:0 -504px}.ke-container-primary .ke-toolbar .ke-icon-anchor{background-position:0 -987px}.ke-container-primary .ke-toolbar .ke-icon-search{background-position:0 -1184px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-new{background-position:0 -1200px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-specialchar{background-position:0 -1216px;width:16px;height:16px}.ke-container-primary .ke-toolbar .ke-icon-multiimage{background-position:0 -798px}.ke-container-primary .ke-toolbar .ke-icon-graft{background-position:0 -819px}.ke-menu-primary .ke-menu-item .ke-menu-item-left{width:27px;text-align:center;overflow:hidden}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-toolbar-icon{font-size:0;line-height:0;overflow:hidden;display:block;width:16px;height:16px;margin:0 2px;background:url(images/nkeditor.svg) no-repeat}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableinsert{background-position:0 -903px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tabledelete{background-position:0 -1428px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertleft{background-position:0 -1176px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolinsertright{background-position:0 -1323px;width:18px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertabove{background-position:0 -1302px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowinsertbelow{background-position:0 -1155px;width:22px!important}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecoldelete{background-position:0 -1239px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowdelete{background-position:0 -1260px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellprop{background-position:0 -1218px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tableprop{background-position:0 -1134px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecellsplit{background-position:0 -1088px;width:16px;height:16px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowmerge{background-position:-1px -1197px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablerowsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolmerge{background-position:-4px -1365px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-tablecolsplit{background-position:0 -1344px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-image{background-position:0 -777px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-flash{background-position:0 -840px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-media{background-position:0 -861px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-link{background-position:0 -1008px}.ke-menu-primary .ke-menu-item .ke-menu-item-left .ke-icon-checked{background-position:0 -1407px} \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/primary/editor.scss b/public/assets/addons/nkeditor/themes/primary/editor.scss new file mode 100644 index 0000000..c20d945 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/primary/editor.scss @@ -0,0 +1,387 @@ +@import "../common/common"; + +.ke-container-primary { + .ke-toolbar { + + border-top: 5px solid #009688; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 1px 1px rgba(0, 0, 0, 0.16); + background-clip: padding-box; + text-rendering: optimizelegibility; + + .ke-toolbar-icon { + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-source { + background-position: 0 0px; + } + .ke-icon-preview { + background-position: 0 -63px; + } + .ke-icon-print { + background-position: 0 -84px; + } + .ke-icon-undo { + background-position: 0 -21px; + } + + .ke-icon-redo { + background-position: 0 -42px; + } + + .ke-icon-template { + background-position: 0 -105px; + } + + .ke-icon-cut { + background-position: 0 -147px; + } + + .ke-icon-copy { + background-position: 0 -168px; + } + + .ke-icon-paste { + background-position: 0 -189px; + } + + .ke-icon-selectall { + background-position: 0 -483px; + } + + .ke-icon-justifyleft { + background-position: 0 -252px; + } + + .ke-icon-justifycenter { + background-position: 0 -273px; + } + + .ke-icon-justifyright { + background-position: 0 -294px; + } + + .ke-icon-justifyfull { + background-position: 0 -315px; + } + + .ke-icon-insertorderedlist { + background-position: 0 -336px; + } + + .ke-icon-insertunorderedlist { + background-position: 0 -357px; + } + + .ke-icon-indent { + background-position: 0 -378px; + } + + .ke-icon-outdent { + background-position: 0 -399px; + } + + .ke-icon-subscript { + background-position: 0 -420px; + } + + .ke-icon-superscript { + background-position: 0 -441px; + } + + .ke-icon-date { + background-position: 0px -304px; + width: 25px; + height: 16px; + } + + .ke-icon-time { + background-position: 0px -320px; + width: 25px; + height: 16px; + } + + .ke-icon-formatblock { + background-position: 0 -546px; + } + + .ke-icon-fontname { + background-position: 0 -567px; + } + + .ke-icon-fontsize { + background-position: 0 -588px; + } + + .ke-icon-forecolor { + background-position: 0 -609px; + } + + .ke-icon-hilitecolor { + background-position: 0 -630px; + } + + .ke-icon-bold { + background-position: 0 -651px; + } + + .ke-icon-italic { + background-position: 0 -672px; + } + + .ke-icon-underline { + background-position: 0 -693px; + } + + .ke-icon-strikethrough { + background-position: 0 -714px; + } + + .ke-icon-removeformat { + background-position: 0 -756px; + } + + .ke-icon-image { + background-position: 0 -777px; + } + + .ke-icon-flash { + background-position: 0 -840px; + } + + .ke-icon-media { + background-position: 0 -861px; + } + + .ke-icon-div { + background-position: 0px -544px; + width: 16px; + height: 16px; + } + + .ke-icon-formula { + background-position: 0px -576px; + width: 16px; + height: 16px; + } + + .ke-icon-hr { + background-position: 0 -924px; + } + + .ke-icon-emoticons { + background-position: 0 -945px; + } + + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-unlink { + background-position: 0 -1029px; + } + + .ke-icon-fullscreen { + background-position: 0 -525px; + } + + .ke-icon-about { + background-position: 0 -1092px; + } + + .ke-icon-quote { + background-position: 0 -1114px; + } + + .ke-icon-plainpaste { + background-position: 0 -210px; + } + + .ke-icon-wordpaste { + background-position: 0 -231px; + } + + .ke-icon-table { + background-position: 0px -903px; + width: 18px !important; + } + + .ke-icon-tablemenu { + background-position: 0px -768px; + width: 16px; + height: 16px; + } + + .ke-icon-code { + background-position: 0 -126px; + } + + .ke-icon-map { + background-position: 0px -976px; + width: 16px; + height: 16px; + } + + .ke-icon-baidumap { + background-position: 0 -1050px; + } + + .ke-icon-lineheight { + background-position: 0 -735px; + } + + .ke-icon-clearhtml { + background-position: 0 -462px; + } + + .ke-icon-pagebreak { + background-position: 0 -966px; + } + + .ke-icon-insertfile { + background-position: 0 -882px; + } + + .ke-icon-quickformat { + background-position: 0 -504px; + } + + .ke-icon-anchor { + background-position: 0 -987px; + } + + .ke-icon-search { + background-position: 0px -1184px; + width: 16px; + height: 16px; + } + + .ke-icon-new { + background-position: 0px -1200px; + width: 16px; + height: 16px; + } + + .ke-icon-specialchar { + background-position: 0px -1216px; + width: 16px; + height: 16px; + } + + .ke-icon-multiimage { + background-position: 0 -798px; + } + + .ke-icon-graft { + background-position: 0 -819px; + } + } +} + +/** + menu 右键菜单 + */ +.ke-menu-primary { + + .ke-menu-item { + + .ke-menu-item-left { + width: 27px; + text-align: center; + overflow: hidden; + + .ke-toolbar-icon { + @include ke-toolbar-icon; + *background-image: url(images/nkeditor.png); + background: url(images/nkeditor.svg) no-repeat; + } + + .ke-icon-tableinsert { + background-position: 0 -903px; + width: 18px !important; + } + + .ke-icon-tabledelete { + background-position: 0 -1428px; + } + + .ke-icon-tablecolinsertleft { + background-position: 0 -1176px; + width: 18px !important; + } + + .ke-icon-tablecolinsertright { + background-position: 0 -1323px; + width: 18px !important; + } + + .ke-icon-tablerowinsertabove { + background-position: 0 -1302px; + width: 22px !important; + } + + .ke-icon-tablerowinsertbelow { + background-position: 0 -1155px; + width: 22px !important; + } + + .ke-icon-tablecoldelete { + background-position: 0 -1239px; + } + + .ke-icon-tablerowdelete { + background-position: 0 -1260px; + } + + .ke-icon-tablecellprop { + background-position: 0 -1218px; + } + + .ke-icon-tableprop { + background-position: 0 -1134px; + } + .ke-icon-tablecellsplit { + background-position: 0px -1088px; + width: 16px; + height: 16px; + } + + .ke-icon-tablerowmerge { + background-position: -1px -1197px; + } + + .ke-icon-tablerowsplit { + background-position: 0 -1344px; + } + + .ke-icon-tablecolmerge { + background-position: -4px -1365px; + } + + .ke-icon-tablecolsplit { + background-position: 0 -1344px; + } + + //图片,视频右键菜单 + .ke-icon-image { + background-position: 0 -777px; + } + .ke-icon-flash { + background-position: 0 -840px; + } + .ke-icon-media { + background-position: 0 -861px; + } + .ke-icon-link { + background-position: 0 -1008px; + } + + .ke-icon-checked { + background-position: 0 -1407px; + } + + } + } +} +//menu end \ No newline at end of file diff --git a/public/assets/addons/nkeditor/themes/primary/images/nkeditor.png b/public/assets/addons/nkeditor/themes/primary/images/nkeditor.png new file mode 100644 index 0000000..2bd53f2 Binary files /dev/null and b/public/assets/addons/nkeditor/themes/primary/images/nkeditor.png differ diff --git a/public/assets/addons/nkeditor/themes/primary/images/nkeditor.svg b/public/assets/addons/nkeditor/themes/primary/images/nkeditor.svg new file mode 100644 index 0000000..3c83f02 --- /dev/null +++ b/public/assets/addons/nkeditor/themes/primary/images/nkeditor.svg @@ -0,0 +1,260 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generated by IcoMoon.io --> +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="21" height="1549" viewBox="0 0 21 1549"> +<svg id="icon-source-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="0"> +<path fill="#009688" d="M14.4 16h-12.8c-0.884 0-1.6-0.716-1.6-1.6v-12.8c0-0.884 0.716-1.6 1.6-1.6h12.8c0.884 0 1.6 0.716 1.6 1.6v12.8c0 0.884-0.716 1.6-1.6 1.6zM14.4 2.4h-12.8v12h12.8v-12zM6.4 5.6l-2.4 3.2 2.4 2.4-0.8 0.8-3.2-3.2 3.2-4 0.8 0.8zM9.6 4l-1.6 8.8h-1.6l1.6-8.8h1.6zM10.4 4.8l3.2 4-3.2 3.2-0.8-0.8 2.4-2.4-2.4-3.2 0.8-0.8z"></path> +</svg> +<svg id="icon-undo" width="16" height="16" viewBox="0 0 16 16" x="0" y="21"> +<path fill="#009688" d="M12.161 16c1.777-3.219 2.076-8.13-4.904-7.966v3.966l-6-6 6-6v3.881c8.359-0.218 9.29 7.378 4.904 12.119z"></path> +</svg> +<svg id="icon-redo" width="16" height="16" viewBox="0 0 16 16" x="0" y="42"> +<path fill="#009688" d="M9 3.881v-3.881l6 6-6 6v-3.966c-6.981-0.164-6.681 4.747-4.904 7.966-4.386-4.741-3.454-12.337 4.904-12.119z"></path> +</svg> +<svg id="icon-preview" width="16" height="16" viewBox="0 0 16 16" x="0" y="63"> +<path fill="#009688" d="M11.566 10.552c1.261-1.733 1.095-4.134-0.425-5.645-0.827-0.827-1.922-1.275-3.089-1.275-1.166 0-2.261 0.456-3.089 1.275-0.811 0.827-1.269 1.922-1.269 3.086s0.456 2.259 1.277 3.086c0.827 0.827 1.922 1.275 3.089 1.275 0.922 0 1.805-0.291 2.561-0.85l2.269 2.259c0.127 0.127 0.292 0.197 0.473 0.197s0.347-0.070 0.473-0.197c0.259-0.259 0.259-0.684 0-0.945l-2.27-2.266zM5.916 10.134c-1.181-1.181-1.181-3.094 0-4.275 0.575-0.575 1.331-0.881 2.142-0.881s1.567 0.316 2.142 0.881c1.181 1.181 1.181 3.094 0 4.275-1.141 1.133-3.142 1.133-4.284 0z"></path> +<path fill="#009688" d="M11.431 1h-6.855c-1.969 0-3.577 1.598-3.577 3.575v6.85c0 1.969 1.6 3.575 3.577 3.575h3.719c0.37 0 0.67-0.298 0.67-0.669s-0.3-0.669-0.67-0.669h-3.719c-1.23 0-2.23-1-2.23-2.228v-6.852c0-1.228 1-2.228 2.23-2.228h6.855c1.23 0 2.23 1 2.23 2.228v3.645c0 0.37 0.3 0.669 0.67 0.669s0.67-0.298 0.67-0.669v-3.661c-0.002-1.969-1.602-3.567-3.57-3.567z"></path> +</svg> +<svg id="icon-print" width="16" height="16" viewBox="0 0 16 16" x="0" y="84"> +<path fill="#009688" d="M4.98 14.938h5.967c0.548 0 0.975-0.461 0.975-1.011v-2.973h-7.922v2.973c0 0.55 0.431 1.011 0.98 1.011zM10.947 1.016h-5.967c-0.548 0-0.98 0.428-0.98 0.978v2.959h7.922v-2.959c0-0.55-0.427-0.978-0.975-0.978z"></path> +<path fill="#009688" d="M12.922 4.953v1.016h-9.922v-1.016h-1.003c-0.55 0-0.981 0.469-0.981 1.019v6.961c0 0.55 0.431 1.005 0.981 1.005h1.003v-3.984h9.922v3.984h1.008c0.548 0 1.008-0.455 1.008-1.005v-6.961c0-0.55-0.458-1.019-1.008-1.019h-1.008zM12.922 7.984h-2.969v-1.016h2.969v1.016z"></path> +</svg> +<svg id="icon-template" width="16" height="16" viewBox="0 0 16 16" x="0" y="105"> +<path fill="#009688" d="M8.824 4.504h-8.504v8.536h8.504v-8.536zM6.632 10.84h-0.68v-3.056l-1.056 3.056h-0.608l-1.048-3.104v3.104h-0.68v-4.28h0.952l0.992 2.976c0.048 0.144 0.088 0.264 0.12 0.376 0.040-0.12 0.088-0.264 0.144-0.424l1-2.92h0.872v4.272zM14.88 2.84l-2.024-2.032c-0.44-0.44-1.312-0.808-1.936-0.808h-6.8c-0.624 0-1.136 0.512-1.136 1.136v2.296h0.904v-2.296c0-0.12 0.104-0.224 0.224-0.224h6.8c0.064 0 0.144 0.008 0.224 0.024v3.616h3.6c0.016 0.080 0.024 0.528 0.024 0.6v9.712c0 0.12-0.104 0.224-0.224 0.224h-10.432c-0.12 0-0.224-0.104-0.224-0.224v-0.76h-0.904v0.76c0 0.624 0.512 1.136 1.136 1.136h10.432c0.624 0 1.136-0.512 1.136-1.136v-9.712c0-0.624-0.36-1.872-0.8-2.312zM12.056 3.64v-2.328c0.064 0.040 0.112 0.088 0.16 0.136l2.024 2.032c0.048 0.048 0.088 0.096 0.136 0.16h-2.32zM9.864 9.6h3.72v-1.064h-3.72v1.064zM9.864 11.736h3.72v-1.064h-3.72v1.064zM13.584 6.4h-3.72v1.064h3.72v-1.064z"></path> +</svg> +<svg id="icon-code" width="16" height="16" viewBox="0 0 16 16" x="0" y="126"> +<path fill="#009688" d="M5.015 3.754l-0.708-0.585c-0.215-0.154-0.462-0.123-0.646 0.062l-3.569 4.492c-0.123 0.154-0.123 0.4 0 0.585l3.6 4.462c0.154 0.185 0.431 0.246 0.646 0.062l0.708-0.585c0.215-0.154 0.246-0.462 0.062-0.646l-2.892-3.6 2.923-3.6c0.123-0.185 0.092-0.462-0.123-0.646zM15.908 7.723l-3.6-4.462c-0.154-0.185-0.431-0.246-0.646-0.062l-0.708 0.585c-0.215 0.154-0.246 0.462-0.062 0.646l2.923 3.6-2.923 3.6c-0.154 0.185-0.123 0.492 0.062 0.646l0.708 0.585c0.215 0.154 0.462 0.123 0.646-0.062l3.6-4.492c0.123-0.215 0.123-0.431 0-0.585zM9.723 3.323l-0.923-0.215c-0.246-0.062-0.523 0.092-0.585 0.338l-2.277 8.738c-0.062 0.246 0.092 0.492 0.338 0.554l0.923 0.215c0.246 0.062 0.523-0.092 0.585-0.338l2.277-8.738c0.062-0.277-0.092-0.492-0.338-0.554z"></path> +</svg> +<svg id="icon-crop" width="16" height="16" viewBox="0 0 16 16" x="0" y="147"> +<path fill="#009688" d="M13.585 0.288c1.548 1.972 0.581 3.752 0.581 3.752l-6.049 7.649s-4.161-4.761-5.855-7.12c-1.693-2.356 0.099-4.569 0.099-4.569l5.757 7.312 5.467-7.023zM8.074 10.223c0.469 0 0.846-0.378 0.846-0.842 0-0.224-0.090-0.439-0.249-0.597s-0.374-0.246-0.598-0.246c-0.467 0-0.848 0.377-0.848 0.842s0.381 0.842 0.848 0.842zM11.641 10.395c0.746-0.002 1.462 0.292 1.989 0.818s0.827 1.24 0.829 1.985c-0.002 0.746-0.3 1.459-0.829 1.985s-1.244 0.819-1.989 0.817c-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.3-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM11.641 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001zM4.575 10.395c0.746-0.002 1.461 0.292 1.989 0.818s0.826 1.24 0.829 1.985c-0.005 1.552-1.266 2.807-2.818 2.802-0.746 0.003-1.462-0.292-1.99-0.816s-0.827-1.24-0.829-1.986c0.002-0.746 0.299-1.46 0.829-1.986s1.244-0.819 1.99-0.817zM4.575 14.607c0.783 0 1.419-0.63 1.419-1.409s-0.637-1.411-1.419-1.411c-0.784 0-1.419 0.631-1.419 1.411s0.635 1.41 1.419 1.41v-0.001z"></path> +</svg> +<svg id="icon-copy" width="16" height="16" viewBox="0 0 16 16" x="0" y="168"> +<path fill="#009688" d="M3 10h7v1h-7v-1z"></path> +<path fill="#009688" d="M3 8h7v1h-7v-1z"></path> +<path fill="#009688" d="M3 12h4v1h-4v-1z"></path> +<path fill="#009688" d="M14 0h-9c-1.1 0-2 0.9-2 2h1c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9c0 0.6-0.4 1-1 1v1c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2z"></path> +<path fill="#009688" d="M3 6h7v1h-7v-1z"></path> +<path fill="#009688" d="M11 3h-9c-1.1 0-2 0.9-2 2v9c0 1.1 0.9 2 2 2h9c1.1 0 2-0.9 2-2v-9c0-1.1-0.9-2-2-2zM12 14c0 0.6-0.4 1-1 1h-9c-0.6 0-1-0.4-1-1v-9c0-0.6 0.4-1 1-1h9c0.6 0 1 0.4 1 1v9z"></path> +</svg> +<svg id="icon-paste" width="16" height="16" viewBox="0 0 16 16" x="0" y="189"> +<path fill="#009688" d="M13.644 7h-5.288c-1.298 0-2.356 1.056-2.356 2.356v4.288c0 1.298 1.056 2.356 2.356 2.356h5.289c1.298 0 2.356-1.056 2.356-2.356v-4.289c-0.002-1.298-1.058-2.355-2.358-2.355zM15 13.644c0 0.747-0.608 1.356-1.356 1.356h-5.288c-0.747 0-1.356-0.608-1.356-1.356v-4.289c0-0.747 0.608-1.356 1.356-1.356h5.289c0.747 0 1.356 0.608 1.356 1.356v4.289h-0.002z"></path> +<path fill="#009688" d="M4.453 13h-2.434c-0.561 0-1.019-0.456-1.019-1.019v-9.963c0-0.561 0.456-1.019 1.019-1.019h8.962c0.561 0 1.019 0.456 1.019 1.019v3.497c0 0.277 0.223 0.5 0.5 0.5s0.5-0.223 0.5-0.5v-3.497c0-1.112-0.906-2.019-2.019-2.019h-8.963c-1.112 0-2.019 0.905-2.019 2.019v9.962c0 1.113 0.906 2.019 2.019 2.019h2.434c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +<path fill="#009688" d="M10.5 3h-8c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h8c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM5.5 6h-3c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h3c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5zM4.5 9h-2c-0.277 0-0.5 0.223-0.5 0.5s0.223 0.5 0.5 0.5h2c0.277 0 0.5-0.223 0.5-0.5s-0.223-0.5-0.5-0.5z"></path> +</svg> +<svg id="icon-paste-text" width="16" height="16" viewBox="0 0 16 16" x="0" y="210"> +<path fill="#009688" d="M10.5 2h-2v-1c0-0.551-0.45-1-1-1h-2c-0.549 0-1 0.45-1 1v1h-2v2.278h7.999v-2.278zM7.5 2h-2v-0.998c0.001 0 0.001-0.001 0.002-0.001h1.996c0.001 0 0.001 0.001 0.002 0.001l-0.001 0.998zM8.17 9.529h1.972v3.834h1.005v-3.834h1.967v-1.005h-4.943z"></path> +<path fill="#009688" d="M12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.816h-0.012v1.928h-8.992v-1.743h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.651c0 0.275 0.225 0.5 0.5 0.5h4.772v1.347l9.727 0.001v-10.118h-3zM6.773 14.999v-8.118h7.726l0.003 8.117-7.729 0.001z"></path> +</svg> +<svg id="icon-paste-word" width="16" height="16" viewBox="0 0 16 16" x="0" y="231"> +<path fill="#009688" d="M13.628 8.819v0.146c-0.195 0.017-0.34 0.154-0.437 0.413l-1.238 3.691h-0.17l-1.044-2.865h-0.024l-1.141 2.865h-0.17l-1.311-3.691c-0.081-0.259-0.227-0.396-0.437-0.413v-0.146h1.821v0.146c-0.275 0.017-0.405 0.105-0.389 0.267 0 0.081 0.016 0.154 0.049 0.219l0.59 1.788 0.718-1.799-0.046-0.257c-0.097-0.13-0.251-0.202-0.461-0.219v-0.146h1.942v0.146c-0.032 0.017-0.057 0.024-0.073 0.024-0.276 0-0.397 0.073-0.364 0.219 0 0.033 0.008 0.105 0.025 0.219 0.016 0.065 0.032 0.105 0.048 0.121l0.572 1.679 0.534-1.806c0.016-0.032 0.084-0.421-0.062-0.432-0.017-0.001-0.033-0.008-0.049-0.024v-0.146h1.117zM10.5 2h-2v-1c0-0.55-0.45-1-1-1h-2c-0.55 0-1 0.45-1 1v1h-2v2.278h8v-2.278zM7.5 2h-2v-0.998l0.002-0.002h1.997c0 0.001 0.002 0.001 0.002 0.002l-0 0.998zM12.499 5.882v-3.382c0-0.275-0.225-0.5-0.499-0.5h-1v0.815h-0.011v1.928h-8.992v-1.744h0.004v-1h-1c-0.275 0-0.5 0.225-0.5 0.5v11.652c0 0.275 0.225 0.5 0.5 0.5h4.773v1.348l9.727 0.001v-10.118h-3zM6.773 14.999v-8.117h7.727l0.003 8.117h-7.729z"></path> +</svg> +<svg id="icon-left-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="252"> +<path fill="#009688" d="M1.148 0h13.704c0.624 0 1.123 0.499 1.123 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.679c-0.649-0.025-1.148-0.524-1.148-1.148 0-0.649 0.499-1.148 1.148-1.148zM1.148 4.568h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 9.136h13.704c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-13.704c-0.624 0-1.148-0.499-1.148-1.148s0.499-1.148 1.148-1.148zM1.148 13.704h9.136c0.624 0 1.148 0.499 1.148 1.148 0 0.624-0.499 1.148-1.148 1.148h-9.136c-0.649-0.025-1.148-0.524-1.148-1.173 0-0.624 0.499-1.123 1.148-1.123z"></path> +</svg> +<svg id="icon-center-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="273"> +<path fill="#009688" d="M1.953 3.11q-0.407 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.281h11.719q0.406 0 0.688 0.281t0.281 0.688-0.281 0.696-0.688 0.289h-11.719zM11.719 5.063q0.406 0 0.688 0.282t0.281 0.688-0.281 0.696-0.688 0.289h-7.813q-0.406 0-0.688-0.289t-0.281-0.696 0.281-0.688 0.688-0.282h7.813zM13.672 8.953q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-11.719q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h11.719zM11.719 12.86q0.406 0 0.688 0.289t0.281 0.696-0.281 0.688-0.688 0.281h-7.813q-0.406 0-0.688-0.281t-0.281-0.688 0.281-0.695 0.688-0.289h7.813z"></path> +</svg> +<svg id="icon-right-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="294"> +<path fill="#009688" d="M3.497 10.966c-0.249-0.002-0.529-0.062-0.737-0.19-0.382-0.234-0.488-0.667-0.349-1.095 0.142-0.437 0.484-0.671 1.071-0.672 3.574-0.006 7.149-0.006 10.723 0.005 0.236 0.001 0.5 0.070 0.701 0.19 0.374 0.222 0.5 0.672 0.371 1.090-0.132 0.428-0.468 0.674-0.974 0.676-1.822 0.006-3.643 0.002-5.465 0.002-1.78 0-3.561 0.008-5.341-0.008zM14.228 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.795-0 3.589-0.002 5.383 0.001zM9.344 6.983c-1.63 0-3.26 0.004-4.89-0.002-0.662-0.002-1.097-0.402-1.095-0.98 0.001-0.58 0.436-0.993 1.093-0.994 3.26-0.006 6.52-0.008 9.78 0.007 0.245 0.001 0.521 0.098 0.727 0.235 0.35 0.232 0.448 0.677 0.309 1.074-0.144 0.412-0.47 0.654-0.951 0.656-1.658 0.007-3.315 0.003-4.973 0.003v0.002zM14.279 13.022c0.627 0.003 1.053 0.418 1.049 0.983-0.004 0.563-0.437 0.98-1.058 0.981-3.287 0.005-5.935 0.007-9.222-0.008-0.231-0.001-0.492-0.098-0.685-0.23-0.343-0.234-0.441-0.681-0.305-1.078 0.137-0.4 0.477-0.646 0.958-0.648 1.657-0.007 2.675-0.003 4.332-0.003 1.644-0 3.287-0.006 4.931 0.002z"></path> +</svg> +<svg id="icon-both-align" width="16" height="16" viewBox="0 0 16 16" x="0" y="315"> +<path fill="#009688" d="M14.148 1.013c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 13.040c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.336 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001zM14.148 8.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.002 7.105-0.002 1.794-0 3.589-0.002 5.383 0.001zM14.148 4.96c0.554 0.001 0.91 0.244 1.051 0.696 0.21 0.674-0.27 1.276-1.037 1.278-2.374 0.006-4.749 0.002-7.123 0.002-1.228 0-4.137 0.003-5.366-0.002-0.507-0.002-0.86-0.232-1.012-0.637-0.256-0.68 0.222-1.333 0.999-1.337 1.808-0.008 5.297-0.003 7.105-0.003 1.794-0 3.589-0.002 5.383 0.001z"></path> +</svg> +<svg id="icon-ol" width="16" height="16" viewBox="0 0 16 16" x="0" y="336"> +<path fill="#009688" d="M7.111 1.778h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889z"></path> +<path fill="#009688" d="M15.111 4.711h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M15.111 9.511h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M15.111 14.222h-8c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M2.578 0.533h-0.8l-1.689 0.889 0.267 0.889 1.244-0.711v3.733h-1.333v0.889h3.556v-0.889h-1.244z"></path> +<path fill="#009688" d="M2.222 13.956c0.178-0.178 0.444-0.444 0.622-0.622s0.356-0.356 0.444-0.533c0.089-0.178 0.178-0.356 0.267-0.533s0.089-0.356 0.089-0.622c0-0.267-0.089-0.622-0.178-0.8-0.089-0.267-0.267-0.356-0.356-0.533s-0.444-0.267-0.622-0.356c-0.178-0.089-0.444-0.089-0.711-0.089-0.356 0-0.711 0.089-0.978 0.178-0.267 0.178-0.622 0.356-0.8 0.622l0.444 0.622c0.178-0.178 0.356-0.267 0.533-0.444s0.444-0.178 0.622-0.178c0.178 0 0.356 0 0.444 0s0.267 0.089 0.267 0.267 0.178 0.178 0.178 0.356 0.089 0.267 0.089 0.356c0 0.178 0 0.267 0 0.444s-0.089 0.267-0.178 0.356-0.178 0.267-0.356 0.444-0.356 0.444-0.533 0.711l-1.511 1.244v0.889h3.733v-0.889h-2.4l0.889-0.889z"></path> +</svg> +<svg id="icon-ul" width="16" height="16" viewBox="0 0 16 16" x="0" y="357"> +<path fill="#009688" d="M15.111 13.333h-8.889c-0.533 0-0.889 0.356-0.889 0.889s0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M6.222 2.667h8.889c0.533 0 0.889-0.356 0.889-0.889s-0.356-0.889-0.889-0.889h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889z"></path> +<path fill="#009688" d="M15.111 7.111h-8.889c-0.533 0-0.889 0.444-0.889 0.889 0 0.533 0.356 0.889 0.889 0.889h8.889c0.533 0 0.889-0.356 0.889-0.889 0-0.444-0.444-0.889-0.889-0.889z"></path> +<path fill="#009688" d="M0 1.778c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#009688" d="M0 8c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +<path fill="#009688" d="M0 14.222c0 0.982 0.796 1.778 1.778 1.778s1.778-0.796 1.778-1.778v0c0-0.982-0.796-1.778-1.778-1.778s-1.778 0.796-1.778 1.778v0z"></path> +</svg> +<svg id="icon-right-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="378"> +<path fill="#009688" d="M0 1.882h17.488v-1.882h-17.488zM7.511 5.412h9.977v-1.883h-9.977zM7.511 8.941h9.977v-1.883h-9.977zM7.511 12.471h9.977v-1.883h-9.977zM0 16h17.488v-1.882h-17.488zM0 11.572v-6.627l4.418 3.314z"></path> +</svg> +<svg id="icon-left-indent" width="17" height="16" viewBox="0 0 17 16" x="0" y="399"> +<path fill="#009688" d="M0 1.883h17.488v-1.883h-17.488v1.883zM7.511 5.412h9.977v-1.883h-9.977v1.883zM7.511 8.941h9.977v-1.883h-9.977v1.883zM7.511 12.471h9.977v-1.883h-9.977v1.883zM0 16h17.488v-1.883h-17.488v1.883zM4.418 11.572v-6.627l-4.418 3.314 4.418 3.313z"></path> +</svg> +<svg id="icon-down-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="420"> +<path fill="#009688" d="M13.331 13.511v1.089h2.669v1.4h-4.001v-3.189l2.664-1.309v-1.089h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-up-tag" width="16" height="16" viewBox="0 0 16 16" x="0" y="441"> +<path fill="#009688" d="M13.331 4.492v1.095h2.669v1.394h-4.001v-3.183l2.664-1.309v-1.095h-2.664v-1.394h4.001v3.183l-2.669 1.309zM9.397 0.762l-3.448 5.204-3.454-5.204h-2.495l4.696 7.083-4.696 7.083h2.495l3.454-5.204 3.448 5.204h2.495l-4.696-7.083 4.696-7.083z"></path> +</svg> +<svg id="icon-clear-format" width="16" height="16" viewBox="0 0 16 16" x="0" y="462"> +<path fill="#009688" d="M11.163 3.197l3.005-1.734 1.43 1.763-2.248 2.491zM8.877 2.251c0.879 0.108 5.156 5.318 5.046 5.904s-2.497 2.206-2.497 2.206l-5.417-6.229c-0 0 1.989-1.988 2.868-1.88zM5.491 4.897l5.23 6.088-3.209 4.173-7.247-9.178s1.436-0.060 2.633-0.374c0.783-0.206 2.593-0.709 2.593-0.709z"></path> +</svg> +<svg id="icon-selectall" width="16" height="16" viewBox="0 0 16 16" x="0" y="483"> +<path fill="#009688" d="M7.272 8.96c-0.216 0-0.416-0.080-0.568-0.232l-3.136-3.144c-0.112-0.112-0.176-0.264-0.176-0.416 0-0.16 0.064-0.304 0.176-0.416s0.264-0.176 0.416-0.176c0.16 0 0.304 0.064 0.416 0.176l2.872 2.872 6.104-6.104c0.112-0.112 0.264-0.176 0.416-0.176 0.16 0 0.304 0.064 0.416 0.176 0.232 0.232 0.232 0.608 0 0.84l-6.368 6.368c-0.152 0.152-0.352 0.232-0.568 0.232z"></path> +<path fill="#009688" d="M2 12.76c-0.256 0-0.496-0.104-0.68-0.28-0.184-0.184-0.28-0.424-0.28-0.68v-9.776c0-0.256 0.104-0.496 0.28-0.68 0.184-0.184 0.424-0.28 0.68-0.28h6.776c0.328 0 0.592 0.264 0.592 0.592s-0.264 0.592-0.592 0.592h-6.552v9.328h8.92v-4.304c0-0.328 0.272-0.6 0.6-0.6s0.6 0.272 0.6 0.6v4.528c0 0.256-0.104 0.496-0.28 0.68-0.184 0.184-0.424 0.28-0.68 0.28h-9.384z"></path> +<path fill="#009688" d="M5 15.016c-0.328 0-0.592-0.264-0.592-0.592s0.264-0.592 0.592-0.592l8.808-0.008v-7.68c0-0.328 0.264-0.592 0.592-0.592 0.16 0 0.312 0.064 0.424 0.176s0.176 0.264 0.176 0.424l-0.008 8.008c0 0.472-0.384 0.848-0.856 0.848l-9.136 0.008z"></path> +</svg> +<svg id="icon-paiban" width="16" height="16" viewBox="0 0 16 16" x="0" y="504"> +<path fill="#009688" d="M15.176 12.792l-5.48-4.8c-0.304-0.264-0.76-0.232-1.024 0.072l-1.552 1.776c-0.264 0.304-0.232 0.76 0.064 1.024l2.16 1.888 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.776 0.68 0.36-0.416 0.424-0.48c0.088-0.104 0.24-0.112 0.344-0.024l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.424 0.48-0.36 0.416 0.776 0.68 0.456-0.52 0.64-0.736c0.088-0.096 0.24-0.104 0.344-0.016l0.016 0.016c0.104 0.088 0.112 0.24 0.024 0.344l-0.64 0.736-0.456 0.52 0.616 0.544c0.304 0.264 0.76 0.232 1.024-0.072l1.56-1.776c0.264-0.32 0.232-0.776-0.072-1.040zM9.76 9.944c-0.176 0.2-0.488 0.208-0.704 0.024s-0.248-0.496-0.072-0.696c0.176-0.2 0.488-0.208 0.704-0.024s0.248 0.496 0.072 0.696z"></path> +<path fill="#009688" d="M5.784 10.824h-2.928c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.552 0.552-0.552h3.096l0.944-1.112h-4.040c-0.304 0-0.552-0.248-0.552-0.552s0.248-0.56 0.552-0.56h4.984l0.472-0.56c0.344-0.4 0.952-0.456 1.352-0.112l2.632 2.232v-6.016l-0.072-0.072v-0.008l-2.88-2.88h-7.784c-0.816 0-1.48 0.664-1.48 1.48v10.744c0 0.816 0.664 1.48 1.48 1.48h7.6l-3.144-2.664c-0.096-0.080-0.176-0.184-0.232-0.296zM2.856 3.040h3.704c0.304 0 0.552 0.248 0.552 0.552s-0.248 0.552-0.552 0.552h-3.704c-0.304 0-0.552-0.248-0.552-0.552 0-0.296 0.248-0.552 0.552-0.552zM2.856 5.264h6.664c0.304 0 0.552 0.248 0.552 0.56 0 0.304-0.248 0.552-0.552 0.552h-6.664c-0.304 0-0.552-0.248-0.552-0.552 0-0.312 0.248-0.56 0.552-0.56z"></path> +</svg> +<svg id="icon-full-screen" width="16" height="16" viewBox="0 0 16 16" x="0" y="525"> +<path fill="#009688" d="M14.872 1.258c-0.094-0.094-0.219-0.145-0.352-0.145h-0.002l-4.502 0.017c-0.275 0.002-0.497 0.223-0.497 0.5 0.002 0.273 0.223 0.497 0.498 0.497h0.002l3.175-0.013-3.423 3.45c-0.194 0.194-0.192 0.511 0.003 0.705 0.097 0.097 0.223 0.145 0.35 0.145 0.128 0 0.256-0.050 0.353-0.148l3.545-3.572v3.22c0 0.275 0.222 0.498 0.498 0.498 0.275 0 0.498-0.222 0.498-0.498v-4.303c-0.002-0.133-0.055-0.259-0.148-0.353zM1.239 1.238c0.094-0.094 0.219-0.145 0.352-0.145h0.002l4.502 0.019c0.275 0.002 0.497 0.225 0.497 0.5-0.002 0.273-0.223 0.497-0.498 0.497h-0.002l-3.177-0.014 3.425 3.45c0.194 0.194 0.192 0.511-0.003 0.705-0.097 0.097-0.223 0.145-0.35 0.145-0.128 0-0.256-0.050-0.353-0.148l-3.545-3.572v3.22c0 0.275-0.222 0.498-0.498 0.498s-0.498-0.222-0.498-0.498v-4.303c0.002-0.131 0.055-0.259 0.148-0.353zM14.872 14.881c-0.094 0.094-0.219 0.145-0.352 0.145h-0.002l-4.502-0.017c-0.275-0.002-0.497-0.225-0.497-0.5 0.002-0.273 0.223-0.497 0.498-0.497h0.002l3.175 0.012-3.423-3.448c-0.194-0.194-0.192-0.511 0.003-0.705 0.097-0.097 0.223-0.145 0.35-0.145 0.128 0 0.256 0.050 0.353 0.148l3.545 3.57v-3.22c0-0.275 0.222-0.498 0.498-0.498 0.275 0 0.498 0.222 0.498 0.498v4.303c-0.002 0.133-0.055 0.259-0.148 0.353zM1.223 14.886c0.094 0.094 0.219 0.145 0.352 0.145h0.002l4.502-0.017c0.275-0.002 0.497-0.225 0.497-0.5-0.002-0.273-0.223-0.497-0.498-0.497h-0.002l-3.175 0.012 3.425-3.45c0.194-0.194 0.192-0.511-0.003-0.705-0.097-0.097-0.223-0.145-0.35-0.145-0.128 0-0.256 0.050-0.353 0.148l-3.547 3.572v-3.22c0-0.275-0.222-0.498-0.498-0.498s-0.498 0.222-0.498 0.498v4.303c0.002 0.133 0.055 0.259 0.148 0.353z"></path> +</svg> +<svg id="icon-title" width="16" height="16" viewBox="0 0 16 16" x="0" y="546"> +<path fill="#009688" d="M1.815 2.089v4.803h1.332v-4.803h1.815v-1.089h-4.962v1.089h1.815zM6.443 1.966v-0.966h-1.205v0.966h1.205zM5.239 2.626v4.267h1.205v-4.267h-1.205zM8.594 2.626v-1.279h-1.205v1.279h-0.73v0.784h0.73v2.517c0 0.215 0.037 0.388 0.11 0.52s0.174 0.234 0.301 0.305c0.127 0.072 0.274 0.12 0.441 0.144s0.344 0.037 0.53 0.037c0.119 0 0.24-0.003 0.365-0.008s0.238-0.016 0.339-0.033v-0.908c-0.057 0.011-0.116 0.019-0.178 0.025s-0.127 0.008-0.195 0.008c-0.204 0-0.339-0.033-0.407-0.099s-0.102-0.198-0.102-0.396v-2.113h0.882v-0.784h-0.882zM9.761 1v5.893h1.205v-5.893h-1.205zM14.541 4.301h-1.96c0.006-0.083 0.024-0.176 0.055-0.281s0.085-0.204 0.161-0.297c0.076-0.094 0.178-0.172 0.305-0.235s0.287-0.095 0.479-0.095c0.294 0 0.513 0.077 0.657 0.231s0.245 0.38 0.301 0.677v0zM12.581 5.044h3.164c0.023-0.33-0.006-0.646-0.085-0.949s-0.208-0.572-0.386-0.809c-0.178-0.237-0.406-0.425-0.683-0.565s-0.602-0.21-0.976-0.21c-0.334 0-0.638 0.058-0.912 0.173s-0.51 0.274-0.708 0.475c-0.198 0.201-0.351 0.439-0.458 0.714s-0.161 0.572-0.161 0.891c0 0.33 0.052 0.633 0.157 0.908s0.253 0.512 0.445 0.71c0.192 0.198 0.427 0.351 0.704 0.458s0.588 0.161 0.933 0.161c0.498 0 0.922-0.11 1.272-0.33s0.611-0.586 0.78-1.098h-1.060c-0.040 0.132-0.147 0.257-0.322 0.376s-0.385 0.177-0.628 0.177c-0.339 0-0.599-0.085-0.78-0.256s-0.28-0.446-0.297-0.825zM0 9h16v1h-16v-1zM0 12h16v1h-16v-1zM0 15h12v1h-12v-1z"></path> +</svg> +<svg id="icon-font" width="16" height="16" viewBox="0 0 16 16" x="0" y="567"> +<path fill="#009688" d="M0.32 1.436v3.661h0.448c0.149-0.971 0.523-1.793 1.195-2.316 0.374-0.374 1.046-0.598 2.017-0.598h1.046v10.386c0 0.672-0.075 1.121-0.149 1.27-0.075 0.224-0.224 0.374-0.448 0.448-0.224 0.149-0.598 0.224-0.971 0.224h-0.448v0.374h7.472v-0.374h-0.448c-0.448 0-0.747-0.075-0.971-0.224s-0.374-0.299-0.448-0.448-0.149-0.598-0.149-1.27v-10.386h1.046c0.672 0 1.121 0.075 1.42 0.149 0.448 0.224 0.822 0.523 1.121 0.897s0.523 0.971 0.747 1.793h0.374v-3.586h-12.851z"></path> +<path fill="#009688" d="M8.533 6.286v2.341h0.254c0.085-0.621 0.296-1.146 0.676-1.481 0.211-0.239 0.592-0.382 1.141-0.382h0.592v6.64c0 0.43-0.042 0.716-0.085 0.812-0.042 0.143-0.127 0.239-0.254 0.287-0.127 0.095-0.338 0.143-0.549 0.143h-0.254v0.239h4.225v-0.239h-0.253c-0.254 0-0.423-0.048-0.549-0.143s-0.211-0.191-0.254-0.287c-0.042-0.095-0.084-0.382-0.084-0.812v-6.64h0.592c0.38 0 0.634 0.048 0.803 0.096 0.255 0.145 0.467 0.338 0.63 0.567l0.004 0.006c0.169 0.239 0.296 0.621 0.423 1.146h0.211v-2.293h-7.268z"></path> +</svg> +<svg id="icon-fontsize" width="16" height="16" viewBox="0 0 16 16" x="0" y="588"> +<path fill="#009688" d="M10.75 12.432l2.663 3.141 2.674-3.141z"></path> +<path fill="#009688" d="M2.979 7.234l1.53-4.933 1.534 4.933h-3.064zM5.888 0.408h-2.332l-3.489 11.051h1.617l0.825-2.63h4.042l0.839 2.63h2.025l-3.527-11.051z"></path> +<path fill="#009688" d="M9.553 8.899l0.888-2.357 0.888 2.357h-1.776zM11.238 5.444h-1.351l-1.085 2.927 0.47 1.475 0.007-0.021h2.342l0.487 1.522h1.171l-2.041-5.903z"></path> +</svg> +<svg id="icon-fontcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="609"> +<path fill="#009688" d="M1.051 12.486v2.105h9.121l2.105-2.105h-11.226zM11.575 14.591h3.508v-3.508l-3.508 3.508z"></path> +<path fill="#009688" d="M12.338 12.135h-1.766l-1.437-3.369h-4.42l-1.423 3.369h-1.802l4.631-10.705h1.66l4.558 10.705zM8.565 7.275l-1.625-3.615-1.639 3.615h3.264z"></path> +</svg> +<svg id="icon-font-bgcolor" width="16" height="16" viewBox="0 0 16 16" x="0" y="630"> +<path fill="#009688" d="M4.068 9.652c-0.151 0.146-0.226 0.351-0.226 0.614 0 0.231 0.082 0.42 0.246 0.566s0.38 0.219 0.649 0.219c0.374 0 0.683-0.132 0.926-0.395s0.364-0.594 0.364-0.991v-0.465l-1.136 0.154c-0.398 0.053-0.672 0.152-0.823 0.298zM12.953 1.452h-9.984c-1.103 0-1.997 0.894-1.997 1.997v8.985c0 1.103 0.894 1.997 1.997 1.997h9.984c1.103 0 1.997-0.894 1.997-1.997v-8.985c0-1.103-0.894-1.997-1.997-1.997zM6.879 11.635h-0.851v-0.75h-0.022c-0.336 0.576-0.832 0.864-1.487 0.864-0.471 0-0.845-0.127-1.123-0.382s-0.417-0.598-0.417-1.031c0-0.907 0.537-1.435 1.61-1.584l1.439-0.202c0-0.793-0.328-1.189-0.983-1.189-0.582 0-1.113 0.196-1.593 0.588v-0.829c0.483-0.301 1.040-0.452 1.672-0.452 1.17 0 1.755 0.614 1.755 1.843v3.124zM12.26 11.023c-0.402 0.484-0.938 0.726-1.608 0.726-0.632 0-1.113-0.266-1.443-0.799h-0.018v0.684h-0.86v-7.182h0.86v3.168h0.018c0.38-0.635 0.936-0.952 1.667-0.952 0.608 0 1.092 0.214 1.45 0.643s0.538 1.014 0.538 1.757c0 0.819-0.201 1.47-0.603 1.955zM10.638 7.38c-0.421 0-0.769 0.151-1.042 0.452s-0.41 0.684-0.41 1.15v0.658c0 0.392 0.127 0.723 0.382 0.994s0.573 0.406 0.956 0.406c0.456 0 0.813-0.175 1.071-0.526s0.386-0.836 0.386-1.457c0-0.512-0.12-0.919-0.36-1.222s-0.567-0.454-0.983-0.454z"></path> +</svg> +<svg id="icon-b" width="16" height="16" viewBox="0 0 16 16" x="0" y="651"> +<path fill="#009688" d="M12.615 5.846c0-1.846-1.477-3.385-3.231-3.385h-5.077c-0.338 0-0.615 0.277-0.615 0.615v10.154c0 0.338 0.277 0.615 0.615 0.615h5.077c1.754 0 3.231-1.538 3.231-3.385 0-0.892-0.338-1.692-0.892-2.308 0.554-0.615 0.892-1.415 0.892-2.308zM9.385 11.692h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231zM9.385 7.077h-3.538v-2.462h3.538c0.585 0 1.108 0.585 1.108 1.231s-0.523 1.231-1.108 1.231z"></path> +</svg> +<svg id="icon-italic" width="16" height="16" viewBox="0 0 16 16" x="0" y="672"> +<path fill="#009688" d="M11.692 3.785v-0.4c0-0.338-0.277-0.615-0.615-0.615h-4.308c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615 0.523 0 0.923 0.492 0.8 0.985l-1.108 5.415c-0.092 0.4-0.431 0.677-0.8 0.677h-0.738c-0.338 0-0.615 0.277-0.615 0.615v0.615c0 0.338 0.277 0.615 0.615 0.615h4.308c0.338 0 0.615-0.277 0.615-0.615v-0.615c0-0.338-0.277-0.615-0.615-0.615-0.523 0-0.923-0.492-0.8-0.985l1.108-5.415c0.092-0.4 0.431-0.677 0.8-0.677h0.523c0.462 0 0.831-0.369 0.831-0.831z"></path> +</svg> +<svg id="icon-underline" width="16" height="16" viewBox="0 0 16 16" x="0" y="693"> +<path fill="#009688" d="M13.692 12.923h-11.385c-0.246 0-0.462 0.215-0.462 0.462v0.923c0 0.246 0.215 0.462 0.462 0.462h11.385c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462zM7.785 11.692c-2.308-0.123-4.092-2.123-4.092-4.431v-4.185c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.215c0 1.323 0.985 2.462 2.308 2.554 1.446 0.092 2.615-1.046 2.615-2.462v-4.308c0-0.338 0.277-0.615 0.615-0.615h0.615c0.338 0 0.615 0.277 0.615 0.615v4.308c0 2.462-2.062 4.431-4.523 4.308z"></path> +</svg> +<svg id="icon-strickout" width="16" height="16" viewBox="0 0 16 16" x="0" y="714"> +<path fill="#009688" d="M3.723 5.569c-0.062-0.308-0.092-0.677-0.092-1.046 0-0.4 0.092-0.862 0.277-1.292 0.185-0.462 0.462-0.892 0.862-1.262 0.369-0.369 0.892-0.708 1.477-0.954 0.615-0.246 1.323-0.4 2.185-0.4 0.769 0 1.508 0.092 2.215 0.308 0.554 0.185 1.077 0.492 1.538 0.923 0.185 0.185 0.185 0.492-0.031 0.677l-0.831 0.769c-0.185 0.154-0.462 0.185-0.646 0-0.215-0.215-0.462-0.4-0.738-0.554-0.431-0.215-0.923-0.338-1.508-0.338-0.523 0-0.985 0.062-1.323 0.215s-0.646 0.308-0.862 0.554-0.369 0.462-0.462 0.708-0.123 0.492-0.123 0.677c0 0.338 0.062 0.615 0.154 0.862 0.092 0.215-0.062 0.431-0.277 0.431h-1.508c-0.154 0-0.277-0.154-0.308-0.277zM12.277 10.154h-1.538c-0.215 0-0.369 0.215-0.277 0.4s0.123 0.431 0.123 0.677c0 0.369-0.092 0.708-0.246 1.015-0.185 0.308-0.4 0.523-0.677 0.738-0.277 0.185-0.585 0.338-0.923 0.431s-0.646 0.154-0.985 0.154c-0.585 0-1.138-0.123-1.662-0.369-0.4-0.185-0.738-0.431-1.046-0.769-0.154-0.185-0.462-0.215-0.646-0.062l-0.862 0.738c-0.185 0.154-0.215 0.462-0.031 0.646 0.431 0.492 0.985 0.862 1.631 1.108 0.8 0.308 1.662 0.462 2.585 0.462 0.677 0 1.323-0.092 1.908-0.308 0.585-0.185 1.108-0.492 1.569-0.862 0.431-0.369 0.8-0.831 1.046-1.385s0.4-1.138 0.4-1.815c0-0.246 0-0.4-0.031-0.615-0.062-0.062-0.185-0.185-0.338-0.185zM15.354 7.354c-0.062-0.185-0.246-0.277-0.431-0.277h-13.846c-0.215 0-0.369 0.092-0.431 0.277-0.031 0.062-0.031 0.092-0.031 0.154v0.923c0 0.246 0.215 0.492 0.462 0.492h13.846c0.246 0 0.462-0.246 0.462-0.492v-0.923c0-0.062 0-0.092-0.031-0.154z"></path> +</svg> +<svg id="icon-line-height" width="16" height="16" viewBox="0 0 16 16" x="0" y="735"> +<path fill="#009688" d="M2.499 11.902v-7.682c-0.166 0-0.326 0.009-0.485-0.002-0.265-0.019-0.339-0.2-0.178-0.467 0.254-0.423 0.52-0.837 0.79-1.245 0.145-0.219 0.377-0.212 0.522 0.009 0.262 0.398 0.521 0.801 0.767 1.214 0.055 0.093 0.087 0.254 0.063 0.359-0.016 0.067-0.153 0.115-0.239 0.126-0.153 0.020-0.308 0.006-0.469 0.006v7.672c0.15 0 0.298-0.017 0.444 0.006 0.097 0.015 0.246 0.062 0.266 0.138 0.027 0.104-0.021 0.274-0.080 0.375-0.236 0.397-0.486 0.781-0.737 1.164-0.17 0.26-0.396 0.258-0.566-0.005-0.25-0.384-0.492-0.775-0.737-1.163-0.022-0.035-0.044-0.075-0.061-0.118l-0.002-0.005c-0.088-0.217-0.034-0.357 0.161-0.375 0.176-0.016 0.353-0.003 0.543-0.003z"></path> +<path fill="#009688" d="M14.841 0v1.166h-13.69v-1.166zM14.849 14.834v1.166h-13.69v-1.166zM10.056 2.956l4.172 10.602h-1.321l-1.129-2.97h-4.871l-1.128 2.97h-1.307l4.173-10.602zM11.392 9.563l-2.004-5.3h-0.059l-2.034 5.3z"></path> +</svg> +<svg id="icon-clear-html" width="16" height="16" viewBox="0 0 16 16" x="0" y="756"> +<path fill="#009688" d="M10.175 3.11c-0.106-0.106-0.279-0.106-0.385 0l-8.625 8.625c-0.106 0.106-0.106 0.279 0 0.385l1.678 1.678c0.106 0.106 0.315 0.192 0.464 0.192h5.374c0.15 0 0.358-0.087 0.464-0.192l5.666-5.666c0.106-0.106 0.106-0.279 0-0.385l-4.636-4.636zM8.612 12.774c-0.106 0.106-0.315 0.192-0.464 0.192h-4.161c-0.15 0-0.358-0.087-0.464-0.192l-0.791-0.791c-0.106-0.106-0.106-0.279 0-0.385l3.162-3.162c0.106-0.106 0.279-0.106 0.385 0l3.143 3.143c0.106 0.106 0.106 0.279 0 0.385l-0.81 0.81z"></path> +</svg> +<svg id="icon-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="777"> +<path fill="#009688" d="M15.385 3.077c0-0.677-0.554-1.231-1.231-1.231h-12.308c-0.677 0-1.231 0.554-1.231 1.231v9.846c0 0.677 0.554 1.231 1.231 1.231h12.308c0.677 0 1.231-0.554 1.231-1.231v-9.846zM12.185 11.692h-8.923c-0.369 0-0.585-0.4-0.4-0.708l2.708-4.708c0.123-0.215 0.4-0.215 0.523 0l1.631 2.8c0.123 0.185 0.4 0.215 0.523 0.031l1.323-1.908c0.123-0.185 0.4-0.185 0.523 0l2.431 3.877c0.185 0.277 0 0.615-0.338 0.615zM11.385 6.154c-0.677 0-1.231-0.554-1.231-1.231s0.554-1.231 1.231-1.231 1.231 0.554 1.231 1.231-0.554 1.231-1.231 1.231z"></path> +</svg> +<svg id="icon-multiple-image" width="16" height="16" viewBox="0 0 16 16" x="0" y="798"> +<path fill="#009688" d="M13 1v12.033h-12v-12.033h12zM13 0h-12c-0.567 0-1 0.433-1 1v12.033c0 0.567 0.433 1 1 1h12.033c0.567 0 1-0.433 1-1v-12.033c-0.033-0.567-0.467-1-1.033-1z"></path> +<path fill="#009688" d="M13 12.267c0.567-0.6 0.8-2.3 0.8-3.1 0-2.033-1.6-3.7-3.633-3.7-1.433 0-2.633 0.8-3.233 1.967-0.667 1.033-1.8 1.7-3.1 1.7-1.367 0-2.533-0.733-3.2-1.833-0.333 0.567-0.5 1.2-0.5 1.867 0 0.733 0.2 2.333 0.567 2.9v1.133h1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h2.1c0.6 0.3 1.333 0.667 2.133 0.667s1.533-0.4 2.133-0.667h0.7v-0.933z"></path> +<path fill="#009688" d="M2.767 4.233c0 0 0 0 0 0 0 0.7 0.567 1.267 1.267 1.267s1.267-0.567 1.267-1.267c0-0 0-0 0-0v0c0-0 0-0 0-0 0-0.7-0.567-1.267-1.267-1.267s-1.267 0.567-1.267 1.267c0 0 0 0 0 0v0z"></path> +<path fill="#009688" d="M15.633 16h-9c-0.267 0-0.5-0.233-0.5-0.5s0.233-0.5 0.5-0.5h8.5v-8.5c0-0.267 0.233-0.5 0.5-0.5s0.5 0.233 0.5 0.5v9c0 0.267-0.233 0.5-0.5 0.5z"></path> +</svg> +<svg id="icon-graft" width="17" height="16" viewBox="0 0 17 16" x="0" y="819"> +<path fill="#009688" d="M16.407 3.584c0.106-0.333 0.388-1.214-0.194-1.628-0.171-0.118-0.382-0.188-0.61-0.188-0.013 0-0.026 0-0.039 0.001l0.002-0c-0.449 0-1.133 0.267-1.914 0.713-0.030-0.060-0.067-0.112-0.111-0.157l0 0c-1.435-1.432-3.417-2.318-5.605-2.318-4.379 0-7.93 3.548-7.935 7.926v0c-0 0.009-0 0.020-0 0.031 0 2.264 0.957 4.305 2.489 5.739l0.004 0.004c0.107 0.101 0.251 0.163 0.41 0.163 0.001 0 0.001 0 0.002 0h0.044c-0.291 0.29-0.604 0.557-0.938 0.8l-0.023 0.016c-0.155 0.11-0.255 0.289-0.255 0.491 0 0.279 0.19 0.513 0.448 0.581l0.004 0.001c0.631 0.152 1.356 0.239 2.102 0.239 0.004 0 0.008 0 0.011 0h-0.001c1.236 0 2.256-0.259 3.042-0.777v0.047c0 0.332 0.269 0.601 0.601 0.601v0c4.38-0.005 7.929-3.555 7.935-7.934v-0c0-0.008 0.001-0.018 0.001-0.028 0-0.332-0.269-0.601-0.601-0.601s-0.601 0.269-0.601 0.601c0 0.010 0 0.020 0.001 0.029l-0-0.001c-0.005 3.687-2.969 6.679-6.644 6.731l-0.005 0c0.617-0.614 0.933-1.306 0.906-1.993-0.017-0.336-0.114-0.646-0.272-0.916l0.005 0.009c0.166 0.056 0.358 0.088 0.557 0.088 0.004 0 0.007-0 0.011-0h-0.001c2.749-0.001 6.495-6.143 7.175-8.27zM4.521 13.81c0.268-0.47 1.21-1.992 2.168-1.992 0.209 0.006 0.402 0.071 0.563 0.18l-0.004-0.002c0.265 0.15 0.447 0.419 0.476 0.732l0 0.004c0.021 0.427-0.3 0.928-0.881 1.375s-1.457 0.695-2.549 0.695c-0.181 0-0.369-0.006-0.56-0.021 0.298-0.283 0.558-0.602 0.774-0.952l0.012-0.020zM8.754 9.025c1.072-2.589 5.206-5.632 6.574-6.016-0.129 0.493-0.567 1.583-1.553 3.158-1.643 2.599-3.549 4.486-4.55 4.486-0.003 0-0.007 0-0.010 0-0.167 0-0.317-0.071-0.422-0.185l-0-0c-0.299-0.299-0.312-0.786-0.039-1.443zM1.2 7.933c0-0.002 0-0.004 0-0.006 0-3.717 3.014-6.731 6.731-6.731 1.835 0 3.499 0.734 4.713 1.925l-0.001-0.001c-1.977 1.364-4.207 3.536-4.998 5.444-0.422 1.019-0.327 1.744-0.071 2.246-0.26-0.121-0.564-0.192-0.885-0.193h-0c-1.486 0-2.63 1.588-3.193 2.559-0.021-0.136-0.086-0.254-0.18-0.343l-0-0c-1.303-1.221-2.115-2.952-2.115-4.874 0-0.009 0-0.019 0-0.028v0.001z"></path> +<path fill="#009688" d="M8.931 4.704c0.858 0 1.553-0.695 1.553-1.553s-0.695-1.553-1.553-1.553c-0.858 0-1.553 0.695-1.553 1.553v0c0 0.858 0.695 1.553 1.553 1.553v0zM8.931 3.504c-0.194 0-0.352-0.158-0.352-0.352s0.158-0.352 0.352-0.352c0.194 0 0.352 0.158 0.352 0.352v0c0 0.194-0.158 0.352-0.352 0.352v0zM5.394 9.012c0-0.858-0.695-1.553-1.553-1.553s-1.553 0.695-1.553 1.553c0 0.858 0.695 1.553 1.553 1.553v0c0.858 0 1.553-0.695 1.553-1.553v0zM3.841 8.659c0.002-0 0.004-0 0.006-0 0.194 0 0.352 0.158 0.352 0.352s-0.158 0.352-0.352 0.352c-0.194 0-0.352-0.158-0.352-0.352v0c0-0 0-0 0-0 0-0.193 0.155-0.349 0.347-0.352h0zM4.977 7.069c1.144 0 2.071-0.927 2.071-2.071s-0.927-2.071-2.071-2.071c-1.144 0-2.071 0.927-2.071 2.071v0c0 1.144 0.927 2.071 2.071 2.071v0zM4.977 4.123c0.482 0 0.872 0.391 0.872 0.872s-0.391 0.872-0.872 0.872c-0.482 0-0.872-0.391-0.872-0.872v0c0.001-0.481 0.391-0.87 0.872-0.871h0z"></path> +</svg> +<svg id="icon-flash" width="16" height="16" viewBox="0 0 16 16" x="0" y="840"> +<path fill="#009688" d="M8 0.889c-3.911 0-7.111 3.2-7.111 7.111s3.2 7.111 7.111 7.111 7.111-3.2 7.111-7.111-3.2-7.111-7.111-7.111zM11.556 5.956c-1.244-0.089-1.956 1.244-1.956 1.244l1.422 0.089v1.6h-2.044c-1.067 3.911-3.644 3.2-3.644 3.2v-1.333s1.511 0 2.311-2.756c1.156-4.356 3.911-3.467 3.911-3.467v1.422z"></path> +</svg> +<svg id="icon-vedio" width="16" height="16" viewBox="0 0 16 16" x="0" y="861"> +<path fill="#009688" d="M15.385 0.615h-0.615v1.231h-1.846v-1.231h-9.846v1.231h-1.846v-1.231h-0.615c-0.339 0-0.615 0.276-0.615 0.615v13.538c0 0.339 0.276 0.615 0.615 0.615h0.615v-0.615h1.846v0.615h9.846v-0.615h1.846v0.615h0.615c0.339 0 0.615-0.276 0.615-0.615v-13.538c0-0.339-0.276-0.615-0.615-0.615zM3.077 12.923h-1.846v-1.846h1.846v1.846zM3.077 9.231h-1.846v-1.846h1.846v1.846zM3.077 5.538h-1.846v-1.846h1.846v1.846zM10.823 8.404l-4.002 2.334c-0.065 0.033-0.137 0.048-0.207 0.048-0.085 0-0.167-0.023-0.242-0.067-0.135-0.082-0.218-0.228-0.218-0.385v-4.668c0-0.157 0.082-0.303 0.218-0.385 0.137-0.082 0.307-0.090 0.449-0.018l4.002 2.334c0.156 0.077 0.254 0.233 0.254 0.404s-0.098 0.327-0.254 0.404zM14.769 12.923h-1.846v-1.846h1.846v1.846zM14.769 9.231h-1.846v-1.846h1.846v1.846zM14.769 5.538h-1.846v-1.846h1.846v1.846z"></path> +</svg> +<svg id="icon-attach" width="16" height="16" viewBox="0 0 16 16" x="0" y="882"> +<path fill="#009688" d="M5.415 11.292c0.185 0.185 0.462 0.154 0.646 0l3.077-3.077c0.215-0.215 0.585-0.246 0.862 0s0.246 0.677 0 0.923l-3.785 3.723c-0.831 0.831-2.215 0.831-3.046 0l-0.031-0.031c-0.831-0.831-0.831-2.215 0-3.046l6.677-6.677c0.831-0.831 2.215-0.831 3.046 0l0.031 0.031c0.831 0.831 0.831 2.215 0 3.046l-0.031 0.031c-0.154 0.154-0.185 0.369-0.062 0.554 0.185 0.338 0.338 0.708 0.431 1.077 0.062 0.246 0.338 0.308 0.523 0.154 0.246-0.246 0.462-0.492 0.462-0.492 1.569-1.569 1.569-4.123 0-5.692h-0.062c-1.569-1.569-4.123-1.569-5.692 0l-6.677 6.646c-1.569 1.569-1.569 4.123 0 5.692l0.062 0.062c1.569 1.569 4.092 1.569 5.662 0l3.815-3.785c0.985-0.985 0.954-2.585-0.062-3.569-0.985-0.954-2.585-0.892-3.538 0.092l-3.015 3.015c-0.185 0.185-0.185 0.492 0 0.677l0.708 0.646z"></path> +</svg> +<svg id="icon-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="903"> +<path fill="#009688" d="M17.846 0h-17.231c-0.49 0-0.615 0.129-0.615 0.615v14.769c0 0.486 0.125 0.615 0.615 0.615h17.231c0.49 0 0.615-0.129 0.615-0.615v-14.769c0-0.486-0.125-0.615-0.615-0.615zM5.538 14.769l-4.328 0.051v-3.108l4.328-0.020v3.077zM5.538 10.462h-4.308v-3.077h4.308v3.077zM5.538 6.154h-4.308v-2.462h4.308v2.462zM11.692 14.769h-4.923v-3.077h4.923v3.077zM11.692 10.462h-4.923v-3.077h4.923v3.077zM11.692 6.154h-4.923v-2.462h4.923v2.462zM17.231 14.769h-4.308v-3.077h4.308v3.077zM17.231 10.462h-4.308v-3.077h4.308v3.077zM17.231 6.154h-4.308v-2.462h4.308v2.462z"></path> +</svg> +<svg id="icon-split" width="16" height="16" viewBox="0 0 16 16" x="0" y="924"> +<path fill="#009688" d="M14.222 12.412l-1.811 1.811h-1.022l2.833-2.833v1.022zM14.222 13.742v0.48h-0.48l0.48-0.48zM14.222 10.059l-4.164 4.164h-1.022l4.444-4.444h0.741v0.281zM12.15 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM9.796 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM7.444 9.778l-4.444 4.444h-1.022l4.444-4.444h1.022zM5.091 9.778l-3.313 3.313v-1.012l2.3-2.3h1.013zM2.748 9.778l-0.97 0.97v-0.97h0.97zM14.222 3.078l-2.255 2.255h-1.022l3.277-3.277v1.022zM14.222 4.409v0.924h-0.924l0.924-0.924zM13.17 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM10.817 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM8.462 1.778l-3.556 3.556h-1.022l3.556-3.556h1.022zM6.11 1.778l-3.556 3.556h-0.777v-0.244l3.311-3.311h1.022zM3.757 1.778l-1.98 1.98v-1.012l0.967-0.967h1.013zM0 7.111h16v0.889h-16v-0.889z"></path> +</svg> +<svg id="icon-face" width="16" height="16" viewBox="0 0 16 16" x="0" y="945"> +<path fill="#009688" d="M8 16c-4.417 0-8-3.58-8-7.993s3.583-8.007 8-8.007 8 3.594 8 8.007c0 4.413-3.583 7.993-8 7.993zM8 1c-3.865 0-7 3.145-7 7.006s3.135 6.994 7 6.994 7-3.132 7-6.994c0-3.861-3.135-7.006-7-7.006zM8 13c-2.419 0-4.436-1.718-4.899-4h1.041c0.446 1.722 1.997 3 3.859 3s3.412-1.278 3.858-3h1.041c-0.463 2.282-2.48 4-4.899 4zM11 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1zM5 6c-0.552 0-1-0.448-1-1s0.448-1 1-1 1 0.448 1 1c0 0.552-0.448 1-1 1z"></path> +</svg> +<svg id="icon-split-page" width="16" height="16" viewBox="0 0 16 16" x="0" y="966"> +<path fill="#009688" d="M14.25 1v4h-12.5v-4h1.042v3h10.417v-3zM1.75 15v-4h12.5v4h-1.041v-3h-10.417v3zM1 7h14v2h-14z"></path> +</svg> +<svg id="icon-anchor" width="16" height="16" viewBox="0 0 16 16" x="0" y="987"> +<path fill="#009688" d="M15.297 9.614l-1.117-1.117c-0.075-0.075-0.174-0.116-0.28-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l0.442-0.442c-0.107 1.281-0.667 2.486-1.579 3.399-0.925 0.925-2.149 1.487-3.45 1.583l-0-7.611 3.106-0c0.218 0 0.396-0.178 0.396-0.396s-0.178-0.396-0.396-0.396h-3.106v-4.407l2.781 2.781c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-3.434-3.434c-0.083-0.083-0.198-0.125-0.316-0.114-0.109-0.003-0.214 0.038-0.291 0.116l-3.434 3.434c-0.154 0.154-0.154 0.406 0 0.56 0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116l2.781-2.781v4.405h-3.106c-0.218 0-0.396 0.178-0.396 0.396s0.178 0.396 0.396 0.396l3.106-0v7.613c-1.311-0.091-2.546-0.653-3.478-1.585-0.92-0.92-1.481-2.137-1.582-3.43l0.444 0.444c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116c0.075-0.075 0.116-0.174 0.116-0.28s-0.041-0.205-0.116-0.28l-1.117-1.117c-0.075-0.075-0.174-0.116-0.279-0.116-0.012 0-0.024 0.001-0.036 0.002-0.11-0.003-0.214 0.038-0.291 0.116l-1.143 1.143c-0.075 0.075-0.116 0.174-0.116 0.28s0.041 0.205 0.116 0.28 0.174 0.116 0.28 0.116c0.106 0 0.205-0.041 0.28-0.116l0.475-0.475c0.047 0.697 0.208 1.376 0.48 2.018 0.316 0.748 0.769 1.42 1.346 1.997s1.249 1.030 1.997 1.346c0.775 0.328 1.598 0.494 2.446 0.494s1.671-0.166 2.446-0.494c0.748-0.316 1.42-0.769 1.997-1.346s1.030-1.249 1.346-1.997c0.275-0.651 0.437-1.338 0.481-2.045l0.474 0.474c0.075 0.075 0.174 0.116 0.28 0.116s0.205-0.041 0.28-0.116 0.116-0.174 0.116-0.28c0-0.106-0.041-0.205-0.116-0.28z"></path> +</svg> +<svg id="icon-link" width="16" height="16" viewBox="0 0 16 16" x="0" y="1008"> +<path fill="#009688" d="M8.369 12.831l-0.646-0.092s-0.431-0.092-0.646-0.185c-0.123-0.031-0.277 0-0.369 0.092l-0.154 0.154c-0.892 0.892-2.338 0.985-3.262 0.185-1.046-0.892-1.077-2.492-0.123-3.446l2.338-2.338c0.308-0.308 0.677-0.492 1.046-0.615 0.492-0.123 1.015-0.092 1.477 0.092 0.277 0.123 0.554 0.277 0.8 0.523 0.123 0.123 0.215 0.246 0.308 0.4 0.123 0.215 0.4 0.246 0.554 0.062l0.862-0.862c0.123-0.123 0.123-0.308 0.031-0.462-0.123-0.185-0.277-0.338-0.431-0.492-0.215-0.215-0.462-0.431-0.738-0.585-0.431-0.277-0.923-0.462-1.446-0.554-0.954-0.185-2-0.031-2.862 0.431-0.338 0.185-0.677 0.431-0.954 0.708l-2.246 2.246c-1.631 1.631-1.754 4.277-0.185 5.938 1.631 1.785 4.4 1.815 6.092 0.123l0.769-0.769c0.215-0.154 0.062-0.523-0.215-0.554zM14.031 1.785c-1.692-1.569-4.338-1.446-5.938 0.185l-0.708 0.677c-0.215 0.215-0.062 0.585 0.215 0.615 0.431 0.031 0.862 0.123 1.292 0.246 0.123 0.031 0.277 0 0.369-0.092l0.154-0.154c0.892-0.892 2.338-0.985 3.262-0.185 1.046 0.892 1.077 2.492 0.123 3.446l-2.338 2.338c-0.308 0.308-0.677 0.492-1.046 0.615-0.492 0.123-1.015 0.092-1.477-0.092-0.277-0.123-0.554-0.277-0.8-0.523-0.123-0.123-0.215-0.246-0.308-0.4-0.123-0.215-0.4-0.246-0.554-0.062l-0.862 0.862c-0.123 0.123-0.123 0.308-0.031 0.462 0.123 0.185 0.277 0.338 0.431 0.492 0.215 0.215 0.492 0.431 0.738 0.585 0.431 0.277 0.923 0.462 1.415 0.554 0.954 0.185 2 0.031 2.862-0.431 0.338-0.185 0.677-0.431 0.954-0.708l2.338-2.338c1.723-1.692 1.662-4.462-0.092-6.092z"></path> +</svg> +<svg id="icon-unlink" width="16" height="16" viewBox="0 0 16 16" x="0" y="1029"> +<path fill="#009688" d="M7.385 11.262c-0.185 0-0.369-0.031-0.554-0.092-0.185-0.031-0.4-0.092-0.585-0.154-0.123-0.031-0.246 0-0.308 0.062l-0.123 0.123c-0.769 0.769-2.031 0.862-2.862 0.154-0.892-0.8-0.954-2.185-0.092-3.015l2.031-2.031c0.277-0.277 0.585-0.431 0.923-0.523 0.431-0.123 0.892-0.092 1.292 0.092 0.246 0.092 0.492 0.246 0.677 0.462 0.092 0.092 0.185 0.215 0.277 0.369 0.092 0.185 0.338 0.215 0.492 0.062l0.769-0.769c0.123-0.123 0.123-0.277 0.031-0.4-0.123-0.154-0.246-0.277-0.369-0.431-0.185-0.185-0.431-0.369-0.646-0.523-0.4-0.246-0.8-0.4-1.262-0.492-0.831-0.154-1.723-0.031-2.523 0.4-0.308 0.154-0.585 0.369-0.831 0.615l-1.969 1.969c-1.415 1.415-1.538 3.723-0.154 5.2 1.446 1.538 3.877 1.6 5.354 0.092l0.677-0.677c0.154-0.154 0.031-0.462-0.246-0.492zM12.462 6.923c1.477-1.477 1.446-3.908-0.092-5.354-1.477-1.354-3.785-1.262-5.2 0.154l-0.615 0.615c-0.185 0.185-0.062 0.492 0.185 0.523 0.369 0.031 0.769 0.092 1.138 0.215 0.123 0.031 0.246 0 0.308-0.062l0.123-0.123c0.769-0.769 2.031-0.862 2.862-0.154 0.892 0.8 0.954 2.185 0.092 3.015l-2.031 2.031c-0.277 0.277-0.585 0.431-0.923 0.523-0.431 0.123-0.892 0.092-1.292-0.092-0.246-0.092-0.492-0.246-0.677-0.462-0.092-0.092-0.185-0.215-0.246-0.338-0.092-0.185-0.338-0.215-0.492-0.062l-0.738 0.738c-0.123 0.123-0.123 0.277-0.031 0.4 0.123 0.154 0.215 0.277 0.369 0.431 0.215 0.215 0.431 0.369 0.646 0.523 0.4 0.246 0.8 0.4 1.262 0.492 0.831 0.154 1.723 0.031 2.523-0.4 0.308-0.154 0.585-0.369 0.831-0.615l2-2zM13.877 12.615l1.415-1.415c0.123-0.123 0.123-0.308 0-0.431l-0.862-0.862c-0.123-0.123-0.308-0.123-0.431 0l-1.385 1.446-1.323-1.323c-0.123-0.123-0.308-0.123-0.431 0l-0.862 0.862c-0.123 0.123-0.123 0.308 0 0.431l1.323 1.323-1.292 1.292c-0.123 0.123-0.123 0.308 0 0.431l0.862 0.862c0.123 0.123 0.308 0.123 0.431 0l1.292-1.292 1.385 1.385c0.123 0.123 0.308 0.123 0.431 0l0.862-0.862c0.123-0.123 0.123-0.308 0-0.431l-1.415-1.415z"></path> +</svg> +<svg id="icon-baidu-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1050"> +<path fill="#009688" d="M9.473 10.846c0.725-0.156 0.626-1.022 0.605-1.211-0.035-0.292-0.379-0.802-0.845-0.762-0.587 0.053-0.672 0.9-0.672 0.9-0.080 0.392 0.189 1.229 0.913 1.073zM10.243 12.353c-0.021 0.061-0.069 0.217-0.027 0.352 0.081 0.305 0.345 0.318 0.345 0.318h0.379v-0.928h-0.407c-0.183 0.055-0.271 0.197-0.291 0.258zM10.819 9.393c0.401 0 0.724-0.461 0.724-1.031s-0.323-1.030-0.724-1.030c-0.399 0-0.724 0.461-0.724 1.030s0.324 1.031 0.724 1.031zM12.543 9.461c0.535 0.069 0.879-0.501 0.947-0.935 0.070-0.432-0.275-0.935-0.654-1.021-0.379-0.087-0.853 0.521-0.897 0.917-0.052 0.485 0.069 0.969 0.603 1.038zM13.854 12.006s-0.828-0.641-1.311-1.333c-0.655-1.021-1.586-0.605-1.897-0.086-0.31 0.519-0.793 0.847-0.861 0.935-0.069 0.085-1 0.588-0.793 1.505s0.932 0.899 0.932 0.899 0.535 0.053 1.155-0.086c0.621-0.137 1.155 0.035 1.155 0.035s1.449 0.485 1.846-0.449c0.396-0.935-0.224-1.42-0.224-1.42zM11.374 13.397h-0.942c-0.407-0.081-0.569-0.359-0.589-0.406s-0.135-0.271-0.075-0.651c0.176-0.569 0.677-0.61 0.677-0.61h0.501v-0.617l0.427 0.007v2.277zM13.129 13.39h-1.084c-0.42-0.108-0.44-0.407-0.44-0.407v-1.199l0.44-0.007v1.078c0.027 0.115 0.169 0.136 0.169 0.136h0.447v-1.206h0.468v1.605zM14.664 10.189c0-0.207-0.172-0.831-0.81-0.831s-0.725 0.589-0.725 1.005c0 0.397 0.033 0.951 0.827 0.933s0.707-0.899 0.707-1.107zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l0.052-0.111c-0.201-0.083-0.385-0.213-0.533-0.393-0.345-0.423-0.433-0.979-0.368-1.358 0.062-0.522 0.394-1.388 1.275-1.467 0.032-0.003 0.069-0.005 0.106-0.005 0.001 0 0.002 0 0.003 0h-0c0.051 0 0.1 0.003 0.149 0.009 0.061-0.878 0.647-1.546 1.386-1.546 0.072 0 0.14 0.015 0.208 0.027l0.092-0.195c0.143-0.304 0.215-0.692 0.215-1.165 0-0.92-0.325-1.706-0.977-2.357s-1.437-0.977-2.357-0.977-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM8.734 14h-7.401l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h5.811c0.083 0.274 0.202 0.494 0.344 0.667z"></path> +</svg> +<svg id="icon-google-map" width="16" height="16" viewBox="0 0 16 16" x="0" y="1071"> +<path fill="#009688" d="M10.813 8.519c0 0.622 0.208 1.071 0.618 1.335 0.335 0.216 0.725 0.249 0.927 0.249 0.049 0 0.089-0.002 0.116-0.004 0 0-0.064 0.418 0.246 0.832h-0.014c-0.537 0-2.289 0.112-2.289 1.553 0 1.465 1.609 1.54 1.932 1.54 0.025 0 0.040-0.001 0.040-0.001 0.003 0 0.027 0.001 0.066 0.001 0.207 0 0.743-0.026 1.24-0.268 0.645-0.313 0.972-0.858 0.972-1.619 0-0.735-0.499-1.173-0.863-1.493-0.222-0.195-0.414-0.363-0.414-0.527 0-0.167 0.14-0.292 0.317-0.451 0.287-0.257 0.557-0.622 0.557-1.313 0-0.607-0.079-1.015-0.564-1.273 0.051-0.026 0.229-0.045 0.318-0.057 0.263-0.036 0.647-0.077 0.647-0.291v-0.041h-1.916c-0.019-0.001-1.937 0.071-1.937 1.827zM13.906 12.274c0.037 0.586-0.465 1.019-1.217 1.073-0.765 0.056-1.394-0.288-1.431-0.873-0.018-0.281 0.106-0.557 0.348-0.777 0.245-0.223 0.583-0.359 0.949-0.387 0.043-0.003 0.086-0.005 0.129-0.005 0.707 0 1.187 0.416 1.221 0.968zM13.405 8.118c0.188 0.661-0.096 1.353-0.548 1.48-0.048 0.014-0.103 0.022-0.16 0.022-0 0-0 0-0 0h0c-0.415 0-0.825-0.419-0.977-0.997-0.085-0.325-0.078-0.608 0.019-0.881 0.096-0.268 0.268-0.449 0.485-0.511 0.048-0.014 0.103-0.022 0.16-0.022 0 0 0 0 0 0h-0c0.501 0 0.823 0.207 1.021 0.908zM7.258 11.538c0.065 0.143 0.166 0.256 0.303 0.339s0.283 0.124 0.439 0.124 0.303-0.041 0.439-0.124c0.137-0.083 0.24-0.195 0.309-0.339l1.275-2.711c-0.009-0.099-0.017-0.199-0.017-0.308 0-1.052 0.509-1.742 1.153-2.151 0.109-0.284 0.174-0.621 0.174-1.034 0-0.92-0.325-1.706-0.977-2.357-0.651-0.652-1.437-0.977-2.357-0.977s-1.706 0.325-2.357 0.977c-0.651 0.651-0.977 1.437-0.977 2.357 0 0.473 0.071 0.862 0.215 1.165l2.377 5.039zM6.821 4.155c0.325-0.325 0.718-0.488 1.179-0.488s0.853 0.163 1.179 0.488c0.325 0.325 0.488 0.718 0.488 1.178s-0.163 0.853-0.488 1.179c-0.325 0.325-0.719 0.488-1.179 0.488s-0.853-0.163-1.179-0.488c-0.325-0.325-0.488-0.718-0.488-1.179 0-0.459 0.163-0.852 0.488-1.178zM9.895 10.667l0.313-0.667h0.225c0.137 0.189 0.299 0.35 0.483 0.48l0.006 0.004c-0.115 0.055-0.221 0.116-0.322 0.182h-0.705zM10.184 14h-8.851l2.667-4h1.795l0.315 0.667h-1.753l-1.778 2.667h7.195c0.099 0.255 0.235 0.479 0.411 0.667z"></path> +</svg> +<svg id="icon-about" width="16" height="16" viewBox="0 0 16 16" x="0" y="1092"> +<path fill="#009688" d="M8.011 0.991c-3.868 0-7.003 3.135-7.003 7.003s3.135 7.003 7.003 7.003 7.003-3.136 7.003-7.003c0-3.868-3.135-7.003-7.003-7.003zM7.984 11.487c-0.399 0-0.723-0.333-0.723-0.743s0.324-0.743 0.723-0.743c0.399 0 0.723 0.333 0.723 0.743s-0.324 0.743-0.723 0.743zM10.003 6.816c-0.1 0.192-0.218 0.357-0.355 0.496s-0.384 0.374-0.739 0.704c-0.098 0.093-0.177 0.174-0.236 0.245s-0.103 0.134-0.132 0.193c-0.026 0.050-0.049 0.108-0.066 0.168l-0.002 0.007c-0.016 0.059-0.040 0.161-0.072 0.308-0.055 0.312-0.227 0.467-0.516 0.467-0.15 0-0.277-0.051-0.379-0.153s-0.154-0.253-0.154-0.454c0-0.251 0.037-0.47 0.113-0.654s0.175-0.347 0.299-0.486c0.124-0.139 0.292-0.305 0.503-0.497 0.185-0.168 0.319-0.294 0.401-0.38 0.080-0.083 0.149-0.176 0.205-0.279l0.003-0.007c0.056-0.105 0.085-0.219 0.085-0.341 0-0.24-0.086-0.442-0.258-0.607s-0.394-0.247-0.666-0.247c-0.318 0-0.552 0.083-0.702 0.25s-0.277 0.411-0.382 0.735c-0.098 0.339-0.285 0.508-0.559 0.508-0.162 0-0.298-0.059-0.41-0.178s-0.167-0.247-0.167-0.384c0-0.285 0.088-0.573 0.264-0.866s0.434-0.534 0.772-0.726c0.338-0.192 0.733-0.288 1.183-0.288 0.419 0 0.789 0.080 1.11 0.24s0.569 0.378 0.743 0.654c0.175 0.276 0.262 0.576 0.262 0.899 0 0.255-0.050 0.478-0.15 0.67z"></path> +</svg> +<svg id="icon-blockquote" width="16" height="16" viewBox="0 0 16 16" x="0" y="1113"> +<path fill="#009688" d="M13.631 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8zM6 2c-2.769 0-4.892 2.154-4.892 4.923v6.615c0 0.246 0.215 0.462 0.462 0.462h5.231c0.246 0 0.462-0.215 0.462-0.462v-5.231c0-0.246-0.215-0.462-0.462-0.462h-3.846v-0.923c0-1.538 1.508-3.077 3.046-3.077h0.8c0.246 0 0.462-0.215 0.462-0.462v-0.923c0-0.246-0.215-0.462-0.462-0.462h-0.8z"></path> +</svg> +<svg id="icon-table-attr" width="16" height="16" viewBox="0 0 16 16" x="0" y="1134"> +<path fill="#009688" d="M15.204 1.055h-14.364c-0.41 0-0.743 0.333-0.743 0.743v12.383c0 0.41 0.333 0.743 0.743 0.743h14.364c0.41 0 0.743-0.333 0.743-0.743v-12.383c0-0.41-0.333-0.743-0.743-0.743l-0-0zM15.204 4.027v2.903h-4.293v-2.903h4.293zM5.875 10.563v-2.889h4.293v2.889h-4.293zM10.168 11.306v2.875h-4.293v-2.875h4.293zM5.132 10.563h-4.293v-2.889h4.293v2.889zM10.168 4.027v2.903h-4.293v-2.903h4.293zM10.911 7.674h4.293v2.889h-4.293v-2.889zM6.040 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM3.811 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 1.798c0.41 0 0.743 0.333 0.743 0.743s-0.333 0.743-0.743 0.743c-0.41 0-0.743-0.333-0.743-0.743s0.333-0.743 0.743-0.743v-0zM1.582 4.027h3.55v2.903h-4.293l0-2.903h0.743zM0.839 11.306h4.293v2.875h-4.293v-2.875zM10.911 14.181v-2.875h4.293v2.875h-4.293z"></path> +</svg> +<svg id="icon-insert-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1155"> +<path fill="#009688" d="M14 0h-2s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h2c0.552 0 1-0.448 1-1v-10c0-0.552-0.448-1-1-1zM14 11h-2v-3h2v3zM14 7h-2v-2h2v2zM14 4h-2v-3h2v3zM9 13l-2 3h5l-2-3h-1zM8 11v-10c0-0.552-0.448-1-1-1h-5s-1 0.448-1 1v10c0 0.552 0.448 1 1 1h5c0.552 0 1-0.448 1-1zM7 7h-2v-2h2v2zM7 1v3h-2v-3h2zM4 11h-2v-3h2v3zM4 7h-2v-2h2v2zM4 4h-2v-3h2v3zM5 8h2v3h-2v-3z"></path> +</svg> +<svg id="icon-insert-row" width="18" height="16" viewBox="0 0 18 16" x="0" y="1176"> +<path fill="#009688" d="M17.143 16h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143zM9.143 9.143h-3.429v2.286h3.429v-2.286zM9.143 12.571h-3.429v2.286h3.429v-2.286zM12.571 9.143h-2.286v2.286h2.286v-2.286zM12.571 12.571h-2.286v2.286h2.286v-2.286zM17.143 9.143h-3.429v2.286h3.429v-2.286zM13.714 12.571v2.286h3.429v-2.286h-3.429zM17.143 4.571h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143zM9.143 1.143h-3.429v2.286h3.429v-2.286zM12.571 1.143h-2.286v2.286h2.286v-2.286zM17.143 1.143h-3.429v2.286h3.429v-2.286zM0 3.429l3.429 2.286v1.143l-3.429 2.286v-5.714z"></path> +</svg> +<svg id="icon-merge-table" width="21" height="16" viewBox="0 0 21 16" x="0" y="1197"> +<path fill="#009688" d="M1.484 2.296c0-0.615 0.242-1.198 0.682-1.63 0.43-0.432 1.005-0.666 1.62-0.666h0.016l10.845 0.059c0.615 0 1.198 0.242 1.63 0.682s0.666 1.021 0.666 1.637l-0.059 10.845c0 0.615-0.242 1.198-0.682 1.63-0.432 0.432-1.007 0.666-1.622 0.666h-0.016l-10.845-0.059c-0.615 0-1.198-0.242-1.63-0.682s-0.666-1.023-0.666-1.639l0.061-10.843zM6.199 1.048l-2.412-0.016c-0.333 0-0.65 0.134-0.897 0.374-0.242 0.242-0.374 0.556-0.374 0.897l-0.016 2.461h3.7v-3.716zM10.98 1.072l-3.742-0.024v3.718h3.742v-3.693zM12.020 14.463l2.552 0.016c0.341 0 0.658-0.124 0.897-0.365 0.242-0.242 0.374-0.556 0.374-0.897l0.016-2.579h-3.842v3.825zM12.020 9.598h3.844l0.016-3.793h-3.868v3.793h0.008zM12.020 4.765h3.868l0.016-2.396c0-0.333-0.124-0.658-0.365-0.897-0.242-0.242-0.556-0.374-0.897-0.374l-2.619-0.016v3.683z"></path> +<path fill="#009688" d="M5.005 1.478c0.008 0 0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-merge-td" width="16" height="16" viewBox="0 0 16 16" x="0" y="1218"> +<path fill="#009688" d="M11.371 9.493h2.837v-2.987h-12.416v2.987h9.579zM0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333z"></path> +</svg> +<svg id="icon-remove-col" width="16" height="16" viewBox="0 0 16 16" x="0" y="1239"> +<path fill="#009688" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM7 12h1v1h-1s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h5c0.552 0 1 0.448 1 1v7h-1v-3h-2v3h-1v-3h-2v3h1v1h-1v3zM10 4h2v-3h-2v3zM9 4v-3h-2v3h2zM1 13s-1-0.448-1-1v-11c0-0.552 0.448-1 1-1h2c0.552 0 1 0.448 1 1v12h-3zM3 1h-2v3h2v-3zM3 5h-2v3h2v-3zM3 9h-2v3h2v-3z"></path> +</svg> +<svg id="icon-remove-row" width="16" height="16" viewBox="0 0 16 16" x="0" y="1260"> +<path fill="#009688" d="M16 16h-2l-2-2.334-2 2.334h-2l3-3.5-3-3.5h2l2 2.333 2-2.333h2l-3 3.5 3 3.5zM9 8h-4v2h1.667l0.333 1h-2v2h2.667l0.333 1h-7c-0.552 0-1-0.448-1-1v-5s0.448-1 1-1h12v1h-4zM4 8h-3v2h3v-2zM4 11h-3v2h3v-2zM1 4c-0.552 0-1-0.448-1-1v-2s0.448-1 1-1h11c0.552 0 1 0.448 1 1v3h-12zM4 1h-3v2h3v-2zM8 1h-3v2h3v-2zM12 1h-3v2h3v-2z"></path> +</svg> +<svg id="icon-remove-table" width="18" height="16" viewBox="0 0 18 16" x="0" y="1281"> +<path fill="#009688" d="M14.857 16v-3.429l3.429-2.286v3.429l-3.429 2.286zM8 11.429l4.571-3.429h5.714l-4.571 3.429h-5.714zM13.714 4.571h-3.429v3.429h-4.571v2.286h1.143v1.143h-5.714c-0.631 0-1.143-0.512-1.143-1.143v-9.143c0-0.631 0.512-1.143 1.143-1.143h12.571c0.631 0 1.143 0.512 1.143 1.143v5.714h-1.143v-2.286zM4.571 1.143h-3.429v2.286h3.429v-2.286zM4.571 4.571h-3.429v2.286h3.429v-2.286zM4.571 8h-3.429v2.286h3.429v-2.286zM9.143 1.143h-3.429v2.286h3.429v-2.286zM9.143 4.571h-3.429v2.286h3.429v-2.286zM13.714 1.143h-3.429v2.286h3.429v-2.286zM13.714 16h-5.714v-3.429h5.714v3.429z"></path> +</svg> +<svg id="icon-insert-col2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1302"> +<path fill="#009688" d="M2 16h2s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-2c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1zM2 5h2v3h-2v-3zM2 9h2v2h-2v-2zM2 12h2v3h-2v-3zM7 3l2-3h-5l2 3h1zM8 5v10c0 0.552 0.448 1 1 1h5s1-0.448 1-1v-10c0-0.552-0.448-1-1-1h-5c-0.552 0-1 0.448-1 1zM9 9h2v2h-2v-2zM9 15v-3h2v3h-2zM12 5h2v3h-2v-3zM12 9h2v2h-2v-2zM12 12h2v3h-2v-3zM11 8h-2v-3h2v3z"></path> +</svg> +<svg id="icon-insert-row2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1323"> +<path fill="#009688" d="M1.154 0h11.429c0.631 0 1.143 0.512 1.143 1.143v5.714s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-5.714s0.512-1.143 1.143-1.143zM9.154 6.857h3.429v-2.286h-3.429v2.286zM9.154 3.429h3.429v-2.286h-3.429v2.286zM5.725 6.857h2.286v-2.286h-2.286v2.286zM5.725 3.429h2.286v-2.286h-2.286v2.286zM1.154 6.857h3.429v-2.286h-3.429v2.286zM4.583 3.429v-2.286h-3.429v2.286h3.429zM1.154 11.429h11.429c0.631 0 1.143 0.512 1.143 1.143v2.286s-0.512 1.143-1.143 1.143h-11.429c-0.631 0-1.143-0.512-1.143-1.143v-2.286s0.512-1.143 1.143-1.143zM9.154 14.857h3.429v-2.286h-3.429v2.286zM5.725 14.857h2.286v-2.286h-2.286v2.286zM1.154 14.857h3.429v-2.286h-3.429v2.286zM18.297 12.571l-3.429-2.286v-1.143l3.429-2.286v5.714z"></path> +</svg> +<svg id="icon-split-table" width="16" height="16" viewBox="0 0 16 16" x="0" y="1344"> +<path fill="#009688" d="M0 0h16v16h-16v-16zM14.208 4.779v-2.987h-5.333v2.987h5.333zM14.208 14.208v-2.987h-5.333v2.987h5.333zM7.125 4.779v-2.987h-5.333v2.987h5.333zM7.125 14.208v-2.987h-5.333v2.987h5.333zM10.667 9.493v-2.987h-1.792v2.987h1.792zM14.208 9.493v-2.987h-1.792v2.987h1.792zM3.584 9.493v-2.987h-1.792v2.987h1.792zM7.125 9.493v-2.987h-1.792v2.987h1.792z"></path> +</svg> +<svg id="icon-merge-table2" width="21" height="16" viewBox="0 0 21 16" x="0" y="1365"> +<path fill="#009688" d="M19.297 2.296c0-0.615-0.242-1.198-0.682-1.63-0.43-0.432-1.005-0.666-1.62-0.666h-0.016l-10.845 0.059c-0.615 0-1.198 0.242-1.63 0.682s-0.666 1.021-0.666 1.637l0.059 10.845c0 0.615 0.242 1.198 0.682 1.63 0.432 0.432 1.007 0.666 1.622 0.666h0.016l10.845-0.059c0.615 0 1.198-0.242 1.63-0.682s0.666-1.023 0.666-1.639l-0.061-10.843zM14.583 1.048l2.412-0.016c0.333 0 0.65 0.134 0.897 0.374 0.242 0.242 0.374 0.556 0.374 0.897l0.016 2.461h-3.7v-3.716zM9.801 1.072l3.742-0.024v3.718h-3.742v-3.693zM8.761 14.463l-2.552 0.016c-0.341 0-0.658-0.124-0.897-0.365-0.242-0.242-0.374-0.556-0.374-0.897l-0.016-2.579h3.842v3.825zM8.761 9.598h-3.844l-0.016-3.793h3.868v3.793h-0.008zM8.761 4.765h-3.868l-0.016-2.396c0-0.333 0.124-0.658 0.365-0.897 0.242-0.242 0.556-0.374 0.897-0.374l2.619-0.016v3.683z"></path> +<path fill="#009688" d="M15.777 1.478c-0.008 0-0.008 0.008 0 0z"></path> +</svg> +<svg id="icon-remove2" width="16" height="16" viewBox="0 0 16 16" x="0" y="1386"> +<path fill="#009688" d="M6.214 13.804c0.401 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726zM15.299 1.464h-6.178v-0.726c0-0.401-0.325-0.726-0.727-0.726h-0.727c-0.401 0-0.727 0.325-0.727 0.726v0.726h-6.177c-0.008-0-0.017-0-0.026-0-0.401 0-0.726 0.325-0.726 0.726s0.325 0.726 0.726 0.726c0.009 0 0.018-0 0.027-0.001l-0.001 0h1.090v11.615c0.001 0.802 0.651 1.452 1.453 1.452 0 0 0.001 0 0.001 0h9.448c0 0 0.001 0 0.001 0 0.802 0 1.452-0.65 1.453-1.452v-11.615h1.090c0.008 0 0.017 0 0.026 0 0.401 0 0.726-0.325 0.726-0.726s-0.325-0.726-0.726-0.726c-0.009 0-0.018 0-0.027 0l0.001-0zM12.755 13.804c0 0.401-0.325 0.726-0.727 0.726h-7.994c-0.401 0-0.727-0.325-0.727-0.726v-10.889h9.448v10.889zM9.847 13.804c0.402 0 0.727-0.325 0.727-0.726v-8.711c0-0.401-0.325-0.727-0.727-0.727s-0.727 0.325-0.727 0.727v0 8.711c0 0.401 0.325 0.726 0.727 0.726z"></path> +</svg> +<svg id="icon-ok" width="16" height="16" viewBox="0 0 16 16" x="0" y="1407"> +<path fill="#009688" d="M8 16c-4.418 0-8-3.582-8-8s3.582-8 8-8c4.418 0 8 3.582 8 8s-3.582 8-8 8zM12.177 4.986l-4.894 4.894-3.364-3.365-0.918 0.918 4.282 4.283 5.811-5.812-0.917-0.918z"></path> +</svg> +<svg id="icon-remove" width="16" height="16" viewBox="0 0 16 16" x="0" y="1428"> +<path fill="#009688" d="M8 1c-3.867 0-7 3.133-7 7s3.133 7 7 7 7-3.133 7-7c0-3.867-3.133-7-7-7zM11.167 10.7c0.133 0.133 0.133 0.333 0 0.467s-0.333 0.133-0.467 0l-2.7-2.7-2.7 2.7c-0.133 0.133-0.333 0.133-0.467 0s-0.133-0.333 0-0.467l2.7-2.7-2.7-2.7c-0.133-0.133-0.133-0.333 0-0.467s0.333-0.133 0.467 0l2.7 2.7 2.7-2.7c0.133-0.133 0.333-0.133 0.467 0s0.133 0.333 0 0.467l-2.7 2.7 2.7 2.7z"></path> +</svg> +<svg id="icon-graft2" width="18" height="16" viewBox="0 0 18 16" x="0" y="1449"> +<path fill="#009688" d="M11.658 0.504c0.216-0.218 0.516-0.354 0.848-0.354s0.631 0.135 0.847 0.354l1.664 1.664c0.217 0.217 0.351 0.517 0.351 0.848s-0.134 0.631-0.351 0.848l-9.336 9.336c-0.468 0.468-1.365 0.954-2.024 1.089l-3.048 0.625 0.625-3.048c0.133-0.65 0.62-1.557 1.088-2.025l9.336-9.336zM9.96 2.202l-0.848 0.849 3.358 3.359 0.849-0.849-3.359-3.359zM12.184 12.804c0.905-0.457 1.054-0.865 0.639-1.526-0.338-0.537-1.675-0.285-1.797 0.805-0.044 0.398 0.117 0.753 0.421 1.026 0.28-0.096 0.525-0.197 0.737-0.305zM13.063 13.682c-0.092 0.059-0.206 0.124-0.322 0.183l-0.025 0.012c-0.396 0.201-0.877 0.38-1.442 0.54-1.27 0.36-2.968 0.617-5.104 0.781-0.013 0.001-0.028 0.002-0.043 0.002-0.314 0-0.572-0.243-0.594-0.552l-0-0.002c-0.001-0.014-0.002-0.031-0.002-0.048 0-0.313 0.24-0.57 0.547-0.596l0.002-0c1.652-0.127 3.021-0.311 4.101-0.548 0.479-0.104 0.901-0.22 1.266-0.345 0.367 0.331 0.943 0.544 1.616 0.573 0.981 0.043 2.17-0.303 3.22-1.242 0.104-0.093 0.242-0.15 0.393-0.15 0.177 0 0.336 0.078 0.444 0.202l0.001 0.001c0.093 0.106 0.149 0.245 0.149 0.398 0 0.178-0.077 0.338-0.2 0.449l-0.001 0c-1.888 1.687-4.29 1.855-5.796 1.079-0.462-0.238-0.84-0.565-1.093-0.964-0.221-0.346-0.353-0.767-0.353-1.219 0-0.101 0.007-0.2 0.019-0.297l-0.001 0.011c0.25-2.25 3.058-2.78 3.979-1.315 0.752 1.197 0.45 2.291-0.762 3.048z"></path> +</svg> +<svg id="icon-func" width="17" height="16" viewBox="0 0 17 16" x="0" y="1470"> +<path fill="#009688" d="M0.531 15.51v-2.065h4.213c-1.236-0.919-2.162-1.924-2.78-3.018-0.582-1.007-0.926-2.215-0.926-3.503 0-0.014 0-0.029 0-0.043l-0 0.002c0-1.992 0.695-3.612 2.086-4.861 1.39-1.25 3.193-1.874 5.406-1.874 2.215 0 4.017 0.625 5.408 1.874s2.086 2.869 2.086 4.86c0 1.263-0.309 2.441-0.927 3.535s-1.544 2.103-2.78 3.028h4.213v2.065h-6.854v-2.065c1.012-0.756 1.772-1.663 2.278-2.72 0.506-1.056 0.76-2.263 0.76-3.62 0-1.519-0.373-2.715-1.12-3.59-0.745-0.874-1.767-1.31-3.063-1.31s-2.317 0.438-3.063 1.316c-0.746 0.877-1.119 2.076-1.119 3.595 0 1.356 0.253 2.562 0.76 3.615s1.265 1.958 2.278 2.714v2.065h-6.857z"></path> +</svg> +<svg id="icon-find" width="16" height="16" viewBox="0 0 16 16" x="0" y="1491"> +<path fill="#009688" d="M1 0h6v1h-6zM9 0h6v1h-6zM14.875 5h-0.875v-4h-4v4h-4v-4h-4v4h-0.875c-0.619 0-1.125 0.506-1.125 1.125v8.75c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-5.875h2v5.875c0 0.619 0.506 1.125 1.125 1.125h4.75c0.619 0 1.125-0.506 1.125-1.125v-8.75c0-0.619-0.506-1.125-1.125-1.125zM5.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5zM8.5 8h-1c-0.275 0-0.5-0.225-0.5-0.5s0.225-0.5 0.5-0.5h1c0.275 0 0.5 0.225 0.5 0.5s-0.225 0.5-0.5 0.5zM14.438 15h-3.875c-0.309 0-0.563-0.225-0.563-0.5s0.253-0.5 0.563-0.5h3.875c0.309 0 0.563 0.225 0.563 0.5s-0.253 0.5-0.563 0.5z"></path> +</svg> +<svg id="icon-date" width="16" height="16" viewBox="0 0 16 16" x="0" y="1512"> +<path fill="#009688" d="M13.597 2.081h-0.584v2.837c0 0.603-0.489 1.093-1.093 1.093s-1.092-0.49-1.092-1.093v-2.837h-5.64v2.83c0 0.604-0.49 1.094-1.094 1.094-0.603 0-1.092-0.49-1.092-1.094v-2.83h-0.6c-0.775 0-1.402 0.628-1.402 1.402v3.070h14v-3.070c0-0.774-0.627-1.402-1.403-1.402zM4.927 4.612c0 0.463-0.376 0.837-0.837 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.375-0.837 0.837-0.837v0c0.461 0 0.837 0.374 0.837 0.837v2.76zM12.78 4.612c0 0.463-0.374 0.837-0.838 0.837v0c-0.463 0-0.837-0.374-0.837-0.837v-2.76c0-0.463 0.374-0.837 0.837-0.837v0c0.464 0 0.838 0.374 0.838 0.837v2.76zM14.182 7.133v5.608c0 0.774-0.627 1.401-1.401 1.401h-9.573c-0.774 0-1.401-0.627-1.401-1.401v-5.608h-0.807v6.45c0 0.774 0.627 1.403 1.403 1.403h11.193c0.776 0 1.403-0.629 1.403-1.403v-6.45h-0.817zM8.393 11.198h1.101c0.109 0.504 0.389 0.649 0.662 0.649 0.405 0 0.651-0.262 0.651-0.723 0-0.26-0.097-0.626-0.651-0.64h-0.351v-0.69h0.159c0.554-0.014 0.687-0.241 0.687-0.66 0-0.271-0.201-0.468-0.526-0.477-0.426-0.011-0.491 0.185-0.598 0.443l-1.031 0.002c0.239-0.793 0.793-1.196 1.661-1.21 1.052 0.028 1.597 0.453 1.635 1.274 0 0.403-0.232 0.708-0.692 0.909 0.589 0.202 0.885 0.563 0.885 1.080-0.037 0.865-0.646 1.319-1.827 1.362-0.998 0.001-1.599-0.483-1.765-1.319zM7.633 11.479v0.975h-3.543v-0.629c0.386-0.605 0.771-1.059 1.492-1.52 0.663-0.433 0.894-0.763 0.894-1.080 0-0.070 0.003-0.433-0.531-0.433-0.372 0.014-0.645 0.182-0.645 0.565l-1.128 0.007c0.065-1.087 0.95-1.473 1.856-1.473 1.032 0.043 1.586 0.482 1.66 1.317 0.037 0.563-0.28 1.101-1.148 1.634-0.48 0.287-0.523 0.319-0.817 0.636h1.91z"></path> +</svg> +<svg id="icon-clock" width="16" height="16" viewBox="0 0 16 16" x="0" y="1533"> +<path fill="#009688" d="M11.331 7.805h-2.732v-2.199c0-0.333-0.267-0.6-0.6-0.6s-0.6 0.267-0.6 0.6v2.932c0.067 0.267 0.267 0.466 0.533 0.466h3.398c0.333 0 0.6-0.267 0.6-0.6s-0.267-0.6-0.6-0.6zM13.53 3.074c-1.399-1.399-3.331-2.199-5.53-2.199-2.132 0-4.131 0.866-5.53 2.199-1.399 1.399-2.265 3.265-2.265 5.33s0.866 3.998 2.265 5.33c1.399 1.399 3.331 2.199 5.53 2.199 2.132 0 4.131-0.866 5.53-2.199 1.399-1.399 2.265-3.265 2.265-5.33s-0.866-3.998-2.265-5.33zM12.664 12.935c-1.199 1.133-2.865 1.866-4.664 1.866s-3.465-0.733-4.664-1.866c-1.199-1.133-1.932-2.732-1.932-4.531s0.733-3.398 1.932-4.531c1.199-1.133 2.865-1.866 4.664-1.866s3.465 0.733 4.664 1.866c1.199 1.133 1.932 2.798 1.932 4.531 0 1.799-0.733 3.398-1.932 4.531zM1.271 2.874l2.332-1.866c0.267-0.2 0.267-0.6 0.067-0.8-0.2-0.267-0.6-0.267-0.866-0.067l-2.332 1.866c-0.267 0.2-0.333 0.6-0.067 0.8 0.2 0.267 0.6 0.267 0.866 0.067zM14.729 2.874c0.267 0.2 0.666 0.133 0.866-0.067 0.2-0.267 0.133-0.6-0.067-0.8l-2.332-1.866c-0.267-0.2-0.666-0.133-0.866 0.067-0.2 0.267-0.2 0.6 0.067 0.8l2.332 1.866z"></path> +</svg> +</svg> diff --git a/public/assets/js/addons.js b/public/assets/js/addons.js index d2c1d20..58b77cc 100644 --- a/public/assets/js/addons.js +++ b/public/assets/js/addons.js @@ -1,3 +1,309 @@ define([], function () { - + require.config({ + paths: { + 'nkeditor': '../addons/nkeditor/js/customplugin', + 'nkeditor-core': '../addons/nkeditor/nkeditor.min', + 'nkeditor-lang': '../addons/nkeditor/lang/zh-CN', + }, + shim: { + 'nkeditor': { + deps: [ + 'nkeditor-core', + 'nkeditor-lang' + ] + }, + 'nkeditor-core': { + deps: [ + 'css!../addons/nkeditor/themes/black/editor.min.css', + 'css!../addons/nkeditor/css/common.css' + ], + exports: 'window.KindEditor' + }, + 'nkeditor-lang': { + deps: [ + 'nkeditor-core' + ] + } + } +}); +require(['form'], function (Form) { + var _bindevent = Form.events.bindevent; + Form.events.bindevent = function (form) { + _bindevent.apply(this, [form]); + if ($(".editor", form).size() > 0) { + require(['nkeditor', 'upload'], function (Nkeditor, Upload) { + var getImageFromClipboard, getImageFromDrop, getFileFromBase64; + getImageFromClipboard = function (data) { + var i, item; + i = 0; + while (i < data.clipboardData.items.length) { + item = data.clipboardData.items[i]; + if (item.type.indexOf("image") !== -1) { + return item.getAsFile() || false; + } + i++; + } + return false; + }; + getImageFromDrop = function (data) { + var i, item, images; + i = 0; + images = []; + while (i < data.dataTransfer.files.length) { + item = data.dataTransfer.files[i]; + if (item.type.indexOf("image") !== -1) { + images.push(item); + } + i++; + } + return images; + }; + getFileFromBase64 = function (data, url) { + var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + var filename, suffix; + if (typeof url != 'undefined') { + var urlArr = url.split('.'); + filename = url.substr(url.lastIndexOf('/') + 1); + suffix = urlArr.pop(); + } else { + filename = Math.random().toString(36).substring(5, 15); + } + console.log(filename); + if (!suffix) { + suffix = data.substring("data:image/".length, data.indexOf(";base64")); + } + + var exp = new RegExp("\\." + suffix + "$", "i"); + filename = exp.test(filename) ? filename : filename + "." + suffix; + var file = new File([u8arr], filename, {type: mime}); + return file; + }; + + var getImageFromUrl = function (url, callback, outputFormat) { + var canvas = document.createElement('CANVAS'), + ctx = canvas.getContext('2d'), + img = new Image; + img.crossOrigin = 'Anonymous'; + img.onload = function () { + var urlArr = url.split('.'); + var suffix = urlArr.pop(); + suffix = suffix.match(/^(jpg|png|gif|bmp|jpeg)$/i) ? suffix : 'png'; + + try { + canvas.height = img.height; + canvas.width = img.width; + ctx.drawImage(img, 0, 0); + var dataURL = canvas.toDataURL(outputFormat || 'image/' + suffix); + var file = getFileFromBase64(dataURL, url); + } catch (e) { + callback.call(this, null); + } + + callback.call(this, file); + canvas = null; + }; + img.onerror = function (e) { + callback.call(this, null); + }; + img.src = url; + }; + //上传Word图片 + Nkeditor.uploadwordimage = function (index, image) { + var that = this; + (function () { + var file = getFileFromBase64(image); + var placeholder = new RegExp("##" + index + "##", "g"); + Upload.api.send(file, function (data) { + that.html(that.html().replace(placeholder, Fast.api.cdnurl(data.url))); + }, function (data) { + that.html(that.html().replace(placeholder, "")); + }); + }(index, image)); + }; + + Nkeditor.lang({ + remoteimage: '下载远程图片' + }); + //远程下载图片 + Nkeditor.plugin('remoteimage', function (K) { + var editor = this, name = 'remoteimage'; + editor.plugin.remoteimage = { + download: function (e) { + var that = this; + var html = that.html(); + var staging = {}, orgined = {}, index = 0, images = 0, completed = 0, failured = 0; + var checkrestore = function () { + if (completed + failured >= images) { + $.each(staging, function (i, j) { + that.html(that.html().replace("<code>" + i + "</code>", j)); + }); + } + }; + html.replace(/<code>([\s\S]*?)<\/code>/g, function (code) { + staging[index] = code; + return "<code>" + index + "</code>"; + } + ); + html = html.replace(/<img([\s\S]*?)\ssrc\s*=\s*('|")((http(s?):)([\s\S]*?))('|")([\s\S]*?)[\/]?>/g, function () { + images++; + var url = arguments[3]; + var placeholder = '<img src="' + Fast.api.cdnurl("/assets/addons/nkeditor/img/downloading.png") + '" data-index="' + index + '" />'; + //如果是云存储的链接,则忽略 + if (Config.upload.cdnurl && url.indexOf(Config.upload.cdnurl) > -1) { + completed++; + return arguments[0]; + } else { + orgined[index] = arguments[0]; + } + //下载远程图片 + (function (index, url, placeholder) { + getImageFromUrl(url, function (file) { + if (!file) { + failured++; + that.html(that.html().replace(placeholder, orgined[index])); + checkrestore(); + } else { + Upload.api.send(file, function (data) { + completed++; + that.html(that.html().replace(placeholder, '<img src="' + Fast.api.cdnurl(data.url) + '" />')); + checkrestore(); + }, function (data) { + failured++; + that.html(that.html().replace(placeholder, orgined[index])); + checkrestore(); + }); + } + }); + })(index, url, placeholder); + index++; + return placeholder; + }); + if (index > 0) { + that.html(html); + } else { + Toastr.info("没有需要下载的远程图片"); + } + } + }; + // 点击图标时执行 + editor.clickToolbar(name, editor.plugin.remoteimage.download); + }); + + $(".editor", form).each(function () { + var that = this; + Nkeditor.create(that, { + width: '100%', + filterMode: false, + wellFormatMode: false, + allowMediaUpload: true, //是否允许媒体上传 + allowFileManager: true, + allowImageUpload: true, + wordImageServer: typeof Config.nkeditor != 'undefined' && Config.nkeditor.wordimageserver ? "127.0.0.1:10101" : "", //word图片替换服务器的IP和端口 + urlType: Config.upload.cdnurl ? 'domain' : '',//给图片加前缀 + cssPath: Fast.api.cdnurl('/assets/addons/nkeditor/plugins/code/prism.css'), + cssData: "body {font-size: 13px}", + fillDescAfterUploadImage: false, //是否在上传后继续添加描述信息 + themeType: typeof Config.nkeditor != 'undefined' ? Config.nkeditor.theme : 'black', //编辑器皮肤,这个值从后台获取 + fileManagerJson: Fast.api.fixurl("/addons/nkeditor/index/attachment/module/" + Config.modulename), + items: [ + 'source', 'undo', 'redo', 'preview', 'print', 'template', 'code', 'quote', 'cut', 'copy', 'paste', + 'plainpaste', 'wordpaste', 'justifyleft', 'justifycenter', 'justifyright', + 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', + 'superscript', 'clearhtml', 'quickformat', 'selectall', + 'formatblock', 'fontname', 'fontsize', 'forecolor', 'hilitecolor', 'bold', + 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', 'image', 'multiimage', 'graft', + 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', + 'anchor', 'link', 'unlink', 'remoteimage', 'about', 'fullscreen' + ], + afterCreate: function () { + var self = this; + //Ctrl+回车提交 + Nkeditor.ctrl(document, 13, function () { + self.sync(); + $(that).closest("form").submit(); + }); + Nkeditor.ctrl(self.edit.doc, 13, function () { + self.sync(); + $(that).closest("form").submit(); + }); + //粘贴上传 + $("body", self.edit.doc).bind('paste', function (event) { + var image, pasteEvent; + pasteEvent = event.originalEvent; + if (pasteEvent.clipboardData && pasteEvent.clipboardData.items) { + image = getImageFromClipboard(pasteEvent); + if (image) { + event.preventDefault(); + Upload.api.send(image, function (data) { + self.exec("insertimage", Fast.api.cdnurl(data.url)); + }); + } + } + }); + //挺拽上传 + $("body", self.edit.doc).bind('drop', function (event) { + var image, pasteEvent; + pasteEvent = event.originalEvent; + if (pasteEvent.dataTransfer && pasteEvent.dataTransfer.files) { + images = getImageFromDrop(pasteEvent); + if (images.length > 0) { + event.preventDefault(); + $.each(images, function (i, image) { + Upload.api.send(image, function (data) { + self.exec("insertimage", Fast.api.cdnurl(data.url)); + }); + }); + } + } + }); + }, + //FastAdmin自定义处理 + beforeUpload: function (callback, file) { + var file = file ? file : $("input.ke-upload-file", this.form).prop('files')[0]; + Upload.api.send(file, function (data) { + var data = {code: '000', data: {url: Fast.api.cdnurl(data.url)}, title: '', width: '', height: '', border: '', align: ''}; + callback(data); + }); + + }, + //错误处理 handler + errorMsgHandler: function (message, type) { + try { + console.log(message, type); + } catch (Error) { + alert(message); + } + } + }); + }); + }); + } + } +}); + +//修改上传的接口调用 +require(['upload'], function (Upload) { + var _onUploadResponse = Upload.events.onUploadResponse; + Upload.events.onUploadResponse = function (response) { + try { + var ret = typeof response === 'object' ? response : JSON.parse(response); + if (ret.hasOwnProperty("code") && ret.hasOwnProperty("data")) { + return _onUploadResponse.call(this, response); + } else if (ret.hasOwnProperty("key") && !ret.hasOwnProperty("err_code")) { + ret.code = 1; + ret.data = { + url: '/' + ret.key + }; + return _onUploadResponse.call(this, JSON.stringify(ret)); + } + } catch (e) { + } + return _onUploadResponse.call(this, response); + + }; +}); }); \ No newline at end of file diff --git a/public/assets/js/backend/banner.js b/public/assets/js/backend/banner.js new file mode 100644 index 0000000..1cc5c9a --- /dev/null +++ b/public/assets/js/backend/banner.js @@ -0,0 +1,51 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'banner/index' + location.search, + add_url: 'banner/add', + edit_url: 'banner/edit', + del_url: 'banner/del', + multi_url: 'banner/multi', + table: 'banner', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'image', title: __('Image'), events: Table.api.events.image, formatter: Table.api.formatter.image}, + {field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', formatter: Table.api.formatter.datetime}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); \ No newline at end of file diff --git a/public/assets/js/backend/command.js b/public/assets/js/backend/command.js new file mode 100644 index 0000000..f31d8f4 --- /dev/null +++ b/public/assets/js/backend/command.js @@ -0,0 +1,234 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'template'], function ($, undefined, Backend, Table, Form, Template) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'command/index', + add_url: 'command/add', + edit_url: '', + del_url: 'command/del', + multi_url: 'command/multi', + table: 'command', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'type', title: __('Type'), formatter: Table.api.formatter.search}, + {field: 'type_text', title: __('Type')}, + { + field: 'command', title: __('Command'), formatter: function (value, row, index) { + return '<input type="text" class="form-control" value="' + value + '">'; + } + }, + { + field: 'executetime', + title: __('Executetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'createtime', + title: __('Createtime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'updatetime', + title: __('Updatetime'), + operate: 'RANGE', + addclass: 'datetimerange', + formatter: Table.api.formatter.datetime + }, + { + field: 'status', + title: __('Status'), + table: table, + custom: {"successed": 'success', "failured": 'danger'}, + searchList: {"successed": __('Successed'), "failured": __('Failured')}, + formatter: Table.api.formatter.status + }, + { + field: 'operate', + title: __('Operate'), + buttons: [ + { + name: 'execute', + title: __('Execute again'), + text: __('Execute again'), + url: 'command/execute', + icon: 'fa fa-repeat', + classname: 'btn btn-success btn-xs btn-execute btn-ajax', + success: function (data) { + Layer.alert("<textarea class='form-control' cols='60' rows='5'>" + data.result + "</textarea>", { + title: __("执行结果"), + shadeClose: true + }); + table.bootstrapTable('refresh'); + return false; + } + }, + { + name: 'execute', + title: __('Detail'), + text: __('Detail'), + url: 'command/detail', + icon: 'fa fa-list', + classname: 'btn btn-info btn-xs btn-execute btn-dialog' + } + ], + table: table, + events: Table.api.events.operate, + formatter: Table.api.formatter.operate + } + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + require(['bootstrap-select', 'bootstrap-select-lang']); + var mainfields = []; + var relationfields = {}; + var maintable = []; + var relationtable = []; + var relationmode = ["belongsto", "hasone"]; + + var renderselect = function (select, data) { + var html = []; + for (var i = 0; i < data.length; i++) { + html.push("<option value='" + data[i] + "'>" + data[i] + "</option>"); + } + $(select).html(html.join("")); + select.trigger("change"); + if (select.data("selectpicker")) { + select.selectpicker('refresh'); + } + return select; + }; + + $("select[name=table] option").each(function () { + maintable.push($(this).val()); + }); + $(document).on('change', "input[name='isrelation']", function () { + $("#relation-zone").toggleClass("hide", !$(this).prop("checked")); + }); + $(document).on('change', "select[name='table']", function () { + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: $(that).val()}, + }, function (data, ret) { + mainfields = data.fieldlist; + $("#relation-zone .relation-item").remove(); + renderselect($("#fields"), mainfields); + return false; + }); + return false; + }); + $(document).on('click', "a.btn-newrelation", function () { + var that = this; + var index = parseInt($(that).data("index")) + 1; + var content = Template("relationtpl", {index: index}); + content = $(content.replace(/\[index\]/, index)); + $(this).data("index", index); + $(content).insertBefore($(that).closest(".row")); + $('select', content).selectpicker(); + var exists = [$("select[name='table']").val()]; + $("select.relationtable").each(function () { + exists.push($(this).val()); + }); + relationtable = []; + $.each(maintable, function (i, j) { + if ($.inArray(j, exists) < 0) { + relationtable.push(j); + } + }); + renderselect($("select.relationtable", content), relationtable); + $("select.relationtable", content).trigger("change"); + }); + $(document).on('click', "a.btn-removerelation", function () { + $(this).closest(".row").remove(); + }); + $(document).on('change', "#relation-zone select.relationmode", function () { + var table = $("select.relationtable", $(this).closest(".row")).val(); + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: table}, + }, function (data, ret) { + renderselect($(that).closest(".row").find("select.relationprimarykey"), $(that).val() == 'belongsto' ? data.fieldlist : mainfields); + renderselect($(that).closest(".row").find("select.relationforeignkey"), $(that).val() == 'hasone' ? data.fieldlist : mainfields); + return false; + }); + }); + $(document).on('change', "#relation-zone select.relationtable", function () { + var that = this; + Fast.api.ajax({ + url: "command/get_field_list", + data: {table: $(that).val()}, + }, function (data, ret) { + renderselect($(that).closest(".row").find("select.relationmode"), relationmode); + renderselect($(that).closest(".row").find("select.relationfields"), mainfields) + renderselect($(that).closest(".row").find("select.relationforeignkey"), data.fieldlist) + renderselect($(that).closest(".row").find("select.relationfields"), data.fieldlist) + return false; + }); + }); + $(document).on('click', ".btn-command", function () { + var form = $(this).closest("form"); + var textarea = $("textarea[rel=command]", form); + textarea.val(''); + Fast.api.ajax({ + url: "command/command/action/command", + data: form.serialize(), + }, function (data, ret) { + textarea.val(data.command); + return false; + }); + }); + $(document).on('click', ".btn-execute", function () { + var form = $(this).closest("form"); + var textarea = $("textarea[rel=result]", form); + textarea.val(''); + Fast.api.ajax({ + url: "command/command/action/execute", + data: form.serialize(), + }, function (data, ret) { + textarea.val(data.result); + window.parent.$(".toolbar .btn-refresh").trigger('click'); + top.window.Fast.api.refreshmenu(); + return false; + }, function () { + window.parent.$(".toolbar .btn-refresh").trigger('click'); + }); + }); + $("select[name='table']").trigger("change"); + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); diff --git a/public/uploads/20191127/79e122b17786dbf0365a1018e27872d7.png b/public/uploads/20191127/79e122b17786dbf0365a1018e27872d7.png new file mode 100644 index 0000000..b97a1f8 Binary files /dev/null and b/public/uploads/20191127/79e122b17786dbf0365a1018e27872d7.png differ diff --git a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php index e092371..ab846e2 100644 --- a/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +++ b/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php @@ -330,7 +330,7 @@ class CurlFactory implements CurlFactoryInterface $conf[CURLOPT_SSL_VERIFYPEER] = false; } else { $conf[CURLOPT_SSL_VERIFYHOST] = 2; - $conf[CURLOPT_SSL_VERIFYPEER] = true; + $conf[CURLOPT_SSL_VERIFYPEER] = false; if (is_string($options['verify'])) { // Throw an error if the file/folder/link path is not valid or doesn't exist. if (!file_exists($options['verify'])) { -- libgit2 0.24.0