From ac780beb2c359b1bc043e2381f78c9dd3400e363 Mon Sep 17 00:00:00 2001 From: thisgun Date: Mon, 9 Jan 2017 10:07:34 +0900 Subject: [PATCH 1/5] =?UTF-8?q?5.2.5=20=EB=B2=84=EC=A0=84=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.php b/config.php index 4aed44652..a17b5a387 100644 --- a/config.php +++ b/config.php @@ -5,7 +5,7 @@ ********************/ define('G5_VERSION', '그누보드5'); -define('G5_GNUBOARD_VER', '5.2.4'); +define('G5_GNUBOARD_VER', '5.2.5'); // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음 define('_GNUBOARD_', true); From 11038348a307afc91b58facf199b45d606704814 Mon Sep 17 00:00:00 2001 From: thisgun Date: Wed, 18 Jan 2017 10:30:04 +0900 Subject: [PATCH 2/5] =?UTF-8?q?cheditor5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- plugin/editor/cheditor5/backup_template.xml | 380 + plugin/editor/cheditor5/cheditor.js | 7963 +++++++++++++++++ plugin/editor/cheditor5/css/SourceCodePro.eot | Bin 0 -> 83743 bytes .../editor/cheditor5/css/SourceCodePro.woff | Bin 0 -> 89024 bytes plugin/editor/cheditor5/css/dialog.css | 185 + plugin/editor/cheditor5/css/editarea.css | 23 + plugin/editor/cheditor5/css/imageupload.css | 136 + plugin/editor/cheditor5/css/imageurl.css | 5 + plugin/editor/cheditor5/css/lightbox.css | 95 + plugin/editor/cheditor5/css/ui.css | 653 ++ plugin/editor/cheditor5/editor.lib.php | 158 + .../editor/cheditor5/icons/add_col_after.png | Bin 0 -> 187 bytes .../editor/cheditor5/icons/add_col_before.png | Bin 0 -> 190 bytes .../editor/cheditor5/icons/add_cols_after.png | Bin 0 -> 180 bytes .../cheditor5/icons/add_cols_before.png | Bin 0 -> 181 bytes .../editor/cheditor5/icons/add_row_after.png | Bin 0 -> 187 bytes .../editor/cheditor5/icons/add_row_before.png | Bin 0 -> 188 bytes .../editor/cheditor5/icons/add_rows_after.png | Bin 0 -> 187 bytes .../cheditor5/icons/add_rows_before.png | Bin 0 -> 187 bytes .../editor/cheditor5/icons/button/cancel.gif | Bin 0 -> 2265 bytes .../cheditor5/icons/button/color_picker.gif | Bin 0 -> 1436 bytes .../cheditor5/icons/button/color_picker.png | Bin 0 -> 1716 bytes .../icons/button/color_picker_disable.png | Bin 0 -> 1783 bytes .../editor/cheditor5/icons/button/delete.gif | Bin 0 -> 2294 bytes .../cheditor5/icons/button/delete_cross.gif | Bin 0 -> 2186 bytes .../cheditor5/icons/button/edit_cell.gif | Bin 0 -> 2572 bytes .../cheditor5/icons/button/edit_image.gif | Bin 0 -> 2572 bytes .../editor/cheditor5/icons/button/input.gif | Bin 0 -> 2274 bytes .../cheditor5/icons/button/input_color.gif | Bin 0 -> 1923 bytes .../cheditor5/icons/button/map_address.gif | Bin 0 -> 2293 bytes .../editor/cheditor5/icons/button/paste.gif | Bin 0 -> 2247 bytes plugin/editor/cheditor5/icons/button/play.gif | Bin 0 -> 2746 bytes .../editor/cheditor5/icons/button/preview.gif | Bin 0 -> 2136 bytes .../editor/cheditor5/icons/button/process.gif | Bin 0 -> 2265 bytes .../editor/cheditor5/icons/button/reset.gif | Bin 0 -> 2218 bytes .../editor/cheditor5/icons/button/submit.gif | Bin 0 -> 2249 bytes .../editor/cheditor5/icons/button/upload.gif | Bin 0 -> 2275 bytes plugin/editor/cheditor5/icons/checked.png | Bin 0 -> 1081 bytes .../editor/cheditor5/icons/color_picker.png | Bin 0 -> 811 bytes .../cheditor5/icons/color_picker_arrow.gif | Bin 0 -> 66 bytes .../cheditor5/icons/color_picker_cross.gif | Bin 0 -> 1922 bytes .../cheditor5/icons/color_picker_hs.png | Bin 0 -> 2684 bytes .../cheditor5/icons/color_picker_hv.png | Bin 0 -> 2865 bytes .../cheditor5/icons/color_picker_reset.png | Bin 0 -> 1768 bytes .../cheditor5/icons/color_picker_tick.png | Bin 0 -> 1096 bytes .../editor/cheditor5/icons/delete_element.png | Bin 0 -> 543 bytes .../editor/cheditor5/icons/delete_table.png | Bin 0 -> 1605 bytes plugin/editor/cheditor5/icons/dot.gif | Bin 0 -> 43 bytes .../cheditor5/icons/edit_mode_code_a.png | Bin 0 -> 1012 bytes .../cheditor5/icons/edit_mode_code_b.png | Bin 0 -> 1014 bytes .../cheditor5/icons/edit_mode_rich_a.png | Bin 0 -> 393 bytes .../cheditor5/icons/edit_mode_rich_b.png | Bin 0 -> 386 bytes .../cheditor5/icons/edit_mode_view_a.png | Bin 0 -> 538 bytes .../cheditor5/icons/edit_mode_view_b.png | Bin 0 -> 528 bytes plugin/editor/cheditor5/icons/em/1.gif | Bin 0 -> 1478 bytes plugin/editor/cheditor5/icons/em/10.gif | Bin 0 -> 1408 bytes plugin/editor/cheditor5/icons/em/11.gif | Bin 0 -> 1425 bytes plugin/editor/cheditor5/icons/em/12.gif | Bin 0 -> 1459 bytes plugin/editor/cheditor5/icons/em/13.gif | Bin 0 -> 1363 bytes plugin/editor/cheditor5/icons/em/14.gif | Bin 0 -> 2298 bytes plugin/editor/cheditor5/icons/em/15.gif | Bin 0 -> 1214 bytes plugin/editor/cheditor5/icons/em/16.gif | Bin 0 -> 1215 bytes plugin/editor/cheditor5/icons/em/17.gif | Bin 0 -> 1241 bytes plugin/editor/cheditor5/icons/em/18.gif | Bin 0 -> 1198 bytes plugin/editor/cheditor5/icons/em/19.gif | Bin 0 -> 1359 bytes plugin/editor/cheditor5/icons/em/2.gif | Bin 0 -> 640 bytes plugin/editor/cheditor5/icons/em/20.gif | Bin 0 -> 1717 bytes plugin/editor/cheditor5/icons/em/21.gif | Bin 0 -> 1657 bytes plugin/editor/cheditor5/icons/em/22.gif | Bin 0 -> 2209 bytes plugin/editor/cheditor5/icons/em/23.gif | Bin 0 -> 2266 bytes plugin/editor/cheditor5/icons/em/24.gif | Bin 0 -> 2010 bytes plugin/editor/cheditor5/icons/em/25.gif | Bin 0 -> 2775 bytes plugin/editor/cheditor5/icons/em/26.gif | Bin 0 -> 1476 bytes plugin/editor/cheditor5/icons/em/27.gif | Bin 0 -> 2080 bytes plugin/editor/cheditor5/icons/em/28.gif | Bin 0 -> 1310 bytes plugin/editor/cheditor5/icons/em/29.gif | Bin 0 -> 859 bytes plugin/editor/cheditor5/icons/em/3.gif | Bin 0 -> 1939 bytes plugin/editor/cheditor5/icons/em/30.gif | Bin 0 -> 2319 bytes plugin/editor/cheditor5/icons/em/31.gif | Bin 0 -> 1197 bytes plugin/editor/cheditor5/icons/em/32.gif | Bin 0 -> 1674 bytes plugin/editor/cheditor5/icons/em/33.gif | Bin 0 -> 1259 bytes plugin/editor/cheditor5/icons/em/34.gif | Bin 0 -> 1975 bytes plugin/editor/cheditor5/icons/em/35.gif | Bin 0 -> 1352 bytes plugin/editor/cheditor5/icons/em/36.gif | Bin 0 -> 3641 bytes plugin/editor/cheditor5/icons/em/37.gif | Bin 0 -> 2215 bytes plugin/editor/cheditor5/icons/em/38.gif | Bin 0 -> 1540 bytes plugin/editor/cheditor5/icons/em/39.gif | Bin 0 -> 2703 bytes plugin/editor/cheditor5/icons/em/4.gif | Bin 0 -> 2671 bytes plugin/editor/cheditor5/icons/em/40.gif | Bin 0 -> 1324 bytes plugin/editor/cheditor5/icons/em/41.gif | Bin 0 -> 1702 bytes plugin/editor/cheditor5/icons/em/42.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/43.gif | Bin 0 -> 1703 bytes plugin/editor/cheditor5/icons/em/44.gif | Bin 0 -> 1703 bytes plugin/editor/cheditor5/icons/em/45.gif | Bin 0 -> 2114 bytes plugin/editor/cheditor5/icons/em/46.gif | Bin 0 -> 1699 bytes plugin/editor/cheditor5/icons/em/47.gif | Bin 0 -> 1700 bytes plugin/editor/cheditor5/icons/em/48.gif | Bin 0 -> 1710 bytes plugin/editor/cheditor5/icons/em/49.gif | Bin 0 -> 1681 bytes plugin/editor/cheditor5/icons/em/5.gif | Bin 0 -> 1407 bytes plugin/editor/cheditor5/icons/em/50.gif | Bin 0 -> 1695 bytes plugin/editor/cheditor5/icons/em/51.gif | Bin 0 -> 2105 bytes plugin/editor/cheditor5/icons/em/52.gif | Bin 0 -> 1711 bytes plugin/editor/cheditor5/icons/em/53.gif | Bin 0 -> 1698 bytes plugin/editor/cheditor5/icons/em/54.gif | Bin 0 -> 1703 bytes plugin/editor/cheditor5/icons/em/55.gif | Bin 0 -> 1698 bytes plugin/editor/cheditor5/icons/em/56.gif | Bin 0 -> 1703 bytes plugin/editor/cheditor5/icons/em/57.gif | Bin 0 -> 1703 bytes plugin/editor/cheditor5/icons/em/58.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/59.gif | Bin 0 -> 1702 bytes plugin/editor/cheditor5/icons/em/6.gif | Bin 0 -> 2017 bytes plugin/editor/cheditor5/icons/em/60.gif | Bin 0 -> 2103 bytes plugin/editor/cheditor5/icons/em/61.gif | Bin 0 -> 2107 bytes plugin/editor/cheditor5/icons/em/62.gif | Bin 0 -> 1674 bytes plugin/editor/cheditor5/icons/em/63.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/64.gif | Bin 0 -> 2114 bytes plugin/editor/cheditor5/icons/em/65.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/66.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/67.gif | Bin 0 -> 1701 bytes plugin/editor/cheditor5/icons/em/68.gif | Bin 0 -> 1694 bytes plugin/editor/cheditor5/icons/em/69.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/7.gif | Bin 0 -> 2106 bytes plugin/editor/cheditor5/icons/em/70.gif | Bin 0 -> 1704 bytes plugin/editor/cheditor5/icons/em/71.gif | Bin 0 -> 1622 bytes plugin/editor/cheditor5/icons/em/72.gif | Bin 0 -> 1656 bytes plugin/editor/cheditor5/icons/em/73.gif | Bin 0 -> 2054 bytes plugin/editor/cheditor5/icons/em/74.gif | Bin 0 -> 2105 bytes plugin/editor/cheditor5/icons/em/75.gif | Bin 0 -> 2075 bytes plugin/editor/cheditor5/icons/em/76.gif | Bin 0 -> 1664 bytes plugin/editor/cheditor5/icons/em/77.gif | Bin 0 -> 1653 bytes plugin/editor/cheditor5/icons/em/78.gif | Bin 0 -> 1662 bytes plugin/editor/cheditor5/icons/em/79.gif | Bin 0 -> 1672 bytes plugin/editor/cheditor5/icons/em/8.gif | Bin 0 -> 1199 bytes plugin/editor/cheditor5/icons/em/80.gif | Bin 0 -> 1390 bytes plugin/editor/cheditor5/icons/em/9.gif | Bin 0 -> 1866 bytes plugin/editor/cheditor5/icons/fullscreen.png | Bin 0 -> 1305 bytes .../cheditor5/icons/fullscreen_actual.png | Bin 0 -> 1278 bytes .../cheditor5/icons/imageUpload/add.gif | Bin 0 -> 3020 bytes .../icons/imageUpload/cross-small.png | Bin 0 -> 2938 bytes .../cheditor5/icons/imageUpload/delete.png | Bin 0 -> 1717 bytes .../cheditor5/icons/imageUpload/dot.gif | Bin 0 -> 43 bytes .../cheditor5/icons/imageUpload/loader.gif | Bin 0 -> 1849 bytes .../icons/imageUpload/marker_bottom.gif | Bin 0 -> 43 bytes .../icons/imageUpload/marker_middle.gif | Bin 0 -> 49 bytes .../icons/imageUpload/marker_top.gif | Bin 0 -> 43 bytes .../icons/imageUpload/mouse_drag_img.gif | Bin 0 -> 316 bytes .../icons/imageUpload/remove_all.gif | Bin 0 -> 2970 bytes .../cheditor5/icons/image_align_center.png | Bin 0 -> 402 bytes .../cheditor5/icons/image_align_left.png | Bin 0 -> 396 bytes .../cheditor5/icons/image_align_left_wt.png | Bin 0 -> 423 bytes .../cheditor5/icons/image_align_right.png | Bin 0 -> 397 bytes .../cheditor5/icons/image_align_right_wt.png | Bin 0 -> 454 bytes .../editor/cheditor5/icons/image_resize.png | Bin 0 -> 531 bytes .../cheditor5/icons/image_wrap_text.png | Bin 0 -> 423 bytes .../editor/cheditor5/icons/magnifier-zoom.png | Bin 0 -> 2247 bytes .../editor/cheditor5/icons/readonlymode.png | Bin 0 -> 1983 bytes plugin/editor/cheditor5/icons/remove_col.png | Bin 0 -> 182 bytes plugin/editor/cheditor5/icons/remove_cols.png | Bin 0 -> 176 bytes plugin/editor/cheditor5/icons/remove_row.png | Bin 0 -> 185 bytes plugin/editor/cheditor5/icons/remove_rows.png | Bin 0 -> 181 bytes plugin/editor/cheditor5/icons/splitter.gif | Bin 0 -> 177 bytes .../cheditor5/icons/statusbar_bgline.gif | Bin 0 -> 45 bytes .../cheditor5/icons/table_delete_cell.png | Bin 0 -> 1536 bytes .../cheditor5/icons/table_delete_column.png | Bin 0 -> 1532 bytes .../cheditor5/icons/table_delete_row.png | Bin 0 -> 1562 bytes .../cheditor5/icons/table_insert_cell.png | Bin 0 -> 1526 bytes .../cheditor5/icons/table_insert_column.png | Bin 0 -> 1515 bytes .../cheditor5/icons/table_insert_row.png | Bin 0 -> 1530 bytes plugin/editor/cheditor5/icons/table_join.png | Bin 0 -> 1352 bytes .../cheditor5/icons/table_join_column.png | Bin 0 -> 1419 bytes .../editor/cheditor5/icons/table_join_row.png | Bin 0 -> 1466 bytes .../cheditor5/icons/table_split_column.png | Bin 0 -> 1322 bytes .../cheditor5/icons/table_split_row.png | Bin 0 -> 1396 bytes .../editor/cheditor5/icons/title_bar_bg.gif | Bin 0 -> 172 bytes .../editor/cheditor5/icons/title_bar_bg2.gif | Bin 0 -> 545 bytes .../cheditor5/icons/toolbar-background.png | Bin 0 -> 21437 bytes .../cheditor5/icons/toolbar-wrapper-bg.png | Bin 0 -> 1731 bytes plugin/editor/cheditor5/icons/toolbar.png | Bin 0 -> 13656 bytes .../editor/cheditor5/icons/viewmode_code.png | Bin 0 -> 2053 bytes .../cheditor5/icons/viewmode_preview.png | Bin 0 -> 2236 bytes plugin/editor/cheditor5/icons/watermark.png | Bin 0 -> 13496 bytes .../editor/cheditor5/imageUpload/_common.php | 3 + .../editor/cheditor5/imageUpload/config.php | 71 + .../editor/cheditor5/imageUpload/delete.php | 49 + .../editor/cheditor5/imageUpload/upload.php | 128 + .../editor/cheditor5/popup/color_picker.html | 19 + plugin/editor/cheditor5/popup/flash.html | 22 + .../cheditor5/popup/flash/ImagePreview.swf | Bin 0 -> 147221 bytes .../editor/cheditor5/popup/flash/chximage.swf | Bin 0 -> 63095 bytes plugin/editor/cheditor5/popup/google_map.html | 23 + plugin/editor/cheditor5/popup/icon.html | 15 + plugin/editor/cheditor5/popup/image.html | 76 + .../editor/cheditor5/popup/image.html5.html | 82 + plugin/editor/cheditor5/popup/image_url.html | 34 + plugin/editor/cheditor5/popup/js/AC_OETags.js | 247 + .../editor/cheditor5/popup/js/color_picker.js | 92 + plugin/editor/cheditor5/popup/js/dialog.js | 41 + plugin/editor/cheditor5/popup/js/flash.js | 95 + .../editor/cheditor5/popup/js/google_map.js | 143 + plugin/editor/cheditor5/popup/js/icon.js | 54 + .../editor/cheditor5/popup/js/image.html5.js | 1344 +++ plugin/editor/cheditor5/popup/js/image.js | 890 ++ .../cheditor5/popup/js/image_upload_flash.js | 279 + plugin/editor/cheditor5/popup/js/image_url.js | 244 + plugin/editor/cheditor5/popup/js/link.js | 125 + plugin/editor/cheditor5/popup/js/media.js | 46 + plugin/editor/cheditor5/popup/js/swfobject.js | 779 ++ plugin/editor/cheditor5/popup/js/symbol.js | 167 + plugin/editor/cheditor5/popup/js/table.js | 315 + .../editor/cheditor5/popup/js/table_modify.js | 640 ++ plugin/editor/cheditor5/popup/link.html | 70 + plugin/editor/cheditor5/popup/media.html | 40 + plugin/editor/cheditor5/popup/symbol.html | 26 + plugin/editor/cheditor5/popup/table.html | 178 + .../editor/cheditor5/popup/table_modify.html | 180 + plugin/editor/cheditor5/template.xml | 368 + plugin/editor/cheditor5/utils/crossdomain.xml | 6 + 217 files changed, 16490 insertions(+), 1 deletion(-) create mode 100644 plugin/editor/cheditor5/backup_template.xml create mode 100644 plugin/editor/cheditor5/cheditor.js create mode 100644 plugin/editor/cheditor5/css/SourceCodePro.eot create mode 100644 plugin/editor/cheditor5/css/SourceCodePro.woff create mode 100644 plugin/editor/cheditor5/css/dialog.css create mode 100644 plugin/editor/cheditor5/css/editarea.css create mode 100644 plugin/editor/cheditor5/css/imageupload.css create mode 100644 plugin/editor/cheditor5/css/imageurl.css create mode 100644 plugin/editor/cheditor5/css/lightbox.css create mode 100644 plugin/editor/cheditor5/css/ui.css create mode 100644 plugin/editor/cheditor5/editor.lib.php create mode 100644 plugin/editor/cheditor5/icons/add_col_after.png create mode 100644 plugin/editor/cheditor5/icons/add_col_before.png create mode 100644 plugin/editor/cheditor5/icons/add_cols_after.png create mode 100644 plugin/editor/cheditor5/icons/add_cols_before.png create mode 100644 plugin/editor/cheditor5/icons/add_row_after.png create mode 100644 plugin/editor/cheditor5/icons/add_row_before.png create mode 100644 plugin/editor/cheditor5/icons/add_rows_after.png create mode 100644 plugin/editor/cheditor5/icons/add_rows_before.png create mode 100644 plugin/editor/cheditor5/icons/button/cancel.gif create mode 100644 plugin/editor/cheditor5/icons/button/color_picker.gif create mode 100644 plugin/editor/cheditor5/icons/button/color_picker.png create mode 100644 plugin/editor/cheditor5/icons/button/color_picker_disable.png create mode 100644 plugin/editor/cheditor5/icons/button/delete.gif create mode 100644 plugin/editor/cheditor5/icons/button/delete_cross.gif create mode 100644 plugin/editor/cheditor5/icons/button/edit_cell.gif create mode 100644 plugin/editor/cheditor5/icons/button/edit_image.gif create mode 100644 plugin/editor/cheditor5/icons/button/input.gif create mode 100644 plugin/editor/cheditor5/icons/button/input_color.gif create mode 100644 plugin/editor/cheditor5/icons/button/map_address.gif create mode 100644 plugin/editor/cheditor5/icons/button/paste.gif create mode 100644 plugin/editor/cheditor5/icons/button/play.gif create mode 100644 plugin/editor/cheditor5/icons/button/preview.gif create mode 100644 plugin/editor/cheditor5/icons/button/process.gif create mode 100644 plugin/editor/cheditor5/icons/button/reset.gif create mode 100644 plugin/editor/cheditor5/icons/button/submit.gif create mode 100644 plugin/editor/cheditor5/icons/button/upload.gif create mode 100644 plugin/editor/cheditor5/icons/checked.png create mode 100644 plugin/editor/cheditor5/icons/color_picker.png create mode 100644 plugin/editor/cheditor5/icons/color_picker_arrow.gif create mode 100644 plugin/editor/cheditor5/icons/color_picker_cross.gif create mode 100644 plugin/editor/cheditor5/icons/color_picker_hs.png create mode 100644 plugin/editor/cheditor5/icons/color_picker_hv.png create mode 100644 plugin/editor/cheditor5/icons/color_picker_reset.png create mode 100644 plugin/editor/cheditor5/icons/color_picker_tick.png create mode 100644 plugin/editor/cheditor5/icons/delete_element.png create mode 100644 plugin/editor/cheditor5/icons/delete_table.png create mode 100644 plugin/editor/cheditor5/icons/dot.gif create mode 100644 plugin/editor/cheditor5/icons/edit_mode_code_a.png create mode 100644 plugin/editor/cheditor5/icons/edit_mode_code_b.png create mode 100644 plugin/editor/cheditor5/icons/edit_mode_rich_a.png create mode 100644 plugin/editor/cheditor5/icons/edit_mode_rich_b.png create mode 100644 plugin/editor/cheditor5/icons/edit_mode_view_a.png create mode 100644 plugin/editor/cheditor5/icons/edit_mode_view_b.png create mode 100644 plugin/editor/cheditor5/icons/em/1.gif create mode 100644 plugin/editor/cheditor5/icons/em/10.gif create mode 100644 plugin/editor/cheditor5/icons/em/11.gif create mode 100644 plugin/editor/cheditor5/icons/em/12.gif create mode 100644 plugin/editor/cheditor5/icons/em/13.gif create mode 100644 plugin/editor/cheditor5/icons/em/14.gif create mode 100644 plugin/editor/cheditor5/icons/em/15.gif create mode 100644 plugin/editor/cheditor5/icons/em/16.gif create mode 100644 plugin/editor/cheditor5/icons/em/17.gif create mode 100644 plugin/editor/cheditor5/icons/em/18.gif create mode 100644 plugin/editor/cheditor5/icons/em/19.gif create mode 100644 plugin/editor/cheditor5/icons/em/2.gif create mode 100644 plugin/editor/cheditor5/icons/em/20.gif create mode 100644 plugin/editor/cheditor5/icons/em/21.gif create mode 100644 plugin/editor/cheditor5/icons/em/22.gif create mode 100644 plugin/editor/cheditor5/icons/em/23.gif create mode 100644 plugin/editor/cheditor5/icons/em/24.gif create mode 100644 plugin/editor/cheditor5/icons/em/25.gif create mode 100644 plugin/editor/cheditor5/icons/em/26.gif create mode 100644 plugin/editor/cheditor5/icons/em/27.gif create mode 100644 plugin/editor/cheditor5/icons/em/28.gif create mode 100644 plugin/editor/cheditor5/icons/em/29.gif create mode 100644 plugin/editor/cheditor5/icons/em/3.gif create mode 100644 plugin/editor/cheditor5/icons/em/30.gif create mode 100644 plugin/editor/cheditor5/icons/em/31.gif create mode 100644 plugin/editor/cheditor5/icons/em/32.gif create mode 100644 plugin/editor/cheditor5/icons/em/33.gif create mode 100644 plugin/editor/cheditor5/icons/em/34.gif create mode 100644 plugin/editor/cheditor5/icons/em/35.gif create mode 100644 plugin/editor/cheditor5/icons/em/36.gif create mode 100644 plugin/editor/cheditor5/icons/em/37.gif create mode 100644 plugin/editor/cheditor5/icons/em/38.gif create mode 100644 plugin/editor/cheditor5/icons/em/39.gif create mode 100644 plugin/editor/cheditor5/icons/em/4.gif create mode 100644 plugin/editor/cheditor5/icons/em/40.gif create mode 100644 plugin/editor/cheditor5/icons/em/41.gif create mode 100644 plugin/editor/cheditor5/icons/em/42.gif create mode 100644 plugin/editor/cheditor5/icons/em/43.gif create mode 100644 plugin/editor/cheditor5/icons/em/44.gif create mode 100644 plugin/editor/cheditor5/icons/em/45.gif create mode 100644 plugin/editor/cheditor5/icons/em/46.gif create mode 100644 plugin/editor/cheditor5/icons/em/47.gif create mode 100644 plugin/editor/cheditor5/icons/em/48.gif create mode 100644 plugin/editor/cheditor5/icons/em/49.gif create mode 100644 plugin/editor/cheditor5/icons/em/5.gif create mode 100644 plugin/editor/cheditor5/icons/em/50.gif create mode 100644 plugin/editor/cheditor5/icons/em/51.gif create mode 100644 plugin/editor/cheditor5/icons/em/52.gif create mode 100644 plugin/editor/cheditor5/icons/em/53.gif create mode 100644 plugin/editor/cheditor5/icons/em/54.gif create mode 100644 plugin/editor/cheditor5/icons/em/55.gif create mode 100644 plugin/editor/cheditor5/icons/em/56.gif create mode 100644 plugin/editor/cheditor5/icons/em/57.gif create mode 100644 plugin/editor/cheditor5/icons/em/58.gif create mode 100644 plugin/editor/cheditor5/icons/em/59.gif create mode 100644 plugin/editor/cheditor5/icons/em/6.gif create mode 100644 plugin/editor/cheditor5/icons/em/60.gif create mode 100644 plugin/editor/cheditor5/icons/em/61.gif create mode 100644 plugin/editor/cheditor5/icons/em/62.gif create mode 100644 plugin/editor/cheditor5/icons/em/63.gif create mode 100644 plugin/editor/cheditor5/icons/em/64.gif create mode 100644 plugin/editor/cheditor5/icons/em/65.gif create mode 100644 plugin/editor/cheditor5/icons/em/66.gif create mode 100644 plugin/editor/cheditor5/icons/em/67.gif create mode 100644 plugin/editor/cheditor5/icons/em/68.gif create mode 100644 plugin/editor/cheditor5/icons/em/69.gif create mode 100644 plugin/editor/cheditor5/icons/em/7.gif create mode 100644 plugin/editor/cheditor5/icons/em/70.gif create mode 100644 plugin/editor/cheditor5/icons/em/71.gif create mode 100644 plugin/editor/cheditor5/icons/em/72.gif create mode 100644 plugin/editor/cheditor5/icons/em/73.gif create mode 100644 plugin/editor/cheditor5/icons/em/74.gif create mode 100644 plugin/editor/cheditor5/icons/em/75.gif create mode 100644 plugin/editor/cheditor5/icons/em/76.gif create mode 100644 plugin/editor/cheditor5/icons/em/77.gif create mode 100644 plugin/editor/cheditor5/icons/em/78.gif create mode 100644 plugin/editor/cheditor5/icons/em/79.gif create mode 100644 plugin/editor/cheditor5/icons/em/8.gif create mode 100644 plugin/editor/cheditor5/icons/em/80.gif create mode 100644 plugin/editor/cheditor5/icons/em/9.gif create mode 100644 plugin/editor/cheditor5/icons/fullscreen.png create mode 100644 plugin/editor/cheditor5/icons/fullscreen_actual.png create mode 100644 plugin/editor/cheditor5/icons/imageUpload/add.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/cross-small.png create mode 100644 plugin/editor/cheditor5/icons/imageUpload/delete.png create mode 100644 plugin/editor/cheditor5/icons/imageUpload/dot.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/loader.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/marker_bottom.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/marker_middle.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/marker_top.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/mouse_drag_img.gif create mode 100644 plugin/editor/cheditor5/icons/imageUpload/remove_all.gif create mode 100644 plugin/editor/cheditor5/icons/image_align_center.png create mode 100644 plugin/editor/cheditor5/icons/image_align_left.png create mode 100644 plugin/editor/cheditor5/icons/image_align_left_wt.png create mode 100644 plugin/editor/cheditor5/icons/image_align_right.png create mode 100644 plugin/editor/cheditor5/icons/image_align_right_wt.png create mode 100644 plugin/editor/cheditor5/icons/image_resize.png create mode 100644 plugin/editor/cheditor5/icons/image_wrap_text.png create mode 100644 plugin/editor/cheditor5/icons/magnifier-zoom.png create mode 100644 plugin/editor/cheditor5/icons/readonlymode.png create mode 100644 plugin/editor/cheditor5/icons/remove_col.png create mode 100644 plugin/editor/cheditor5/icons/remove_cols.png create mode 100644 plugin/editor/cheditor5/icons/remove_row.png create mode 100644 plugin/editor/cheditor5/icons/remove_rows.png create mode 100644 plugin/editor/cheditor5/icons/splitter.gif create mode 100644 plugin/editor/cheditor5/icons/statusbar_bgline.gif create mode 100644 plugin/editor/cheditor5/icons/table_delete_cell.png create mode 100644 plugin/editor/cheditor5/icons/table_delete_column.png create mode 100644 plugin/editor/cheditor5/icons/table_delete_row.png create mode 100644 plugin/editor/cheditor5/icons/table_insert_cell.png create mode 100644 plugin/editor/cheditor5/icons/table_insert_column.png create mode 100644 plugin/editor/cheditor5/icons/table_insert_row.png create mode 100644 plugin/editor/cheditor5/icons/table_join.png create mode 100644 plugin/editor/cheditor5/icons/table_join_column.png create mode 100644 plugin/editor/cheditor5/icons/table_join_row.png create mode 100644 plugin/editor/cheditor5/icons/table_split_column.png create mode 100644 plugin/editor/cheditor5/icons/table_split_row.png create mode 100644 plugin/editor/cheditor5/icons/title_bar_bg.gif create mode 100644 plugin/editor/cheditor5/icons/title_bar_bg2.gif create mode 100644 plugin/editor/cheditor5/icons/toolbar-background.png create mode 100644 plugin/editor/cheditor5/icons/toolbar-wrapper-bg.png create mode 100644 plugin/editor/cheditor5/icons/toolbar.png create mode 100644 plugin/editor/cheditor5/icons/viewmode_code.png create mode 100644 plugin/editor/cheditor5/icons/viewmode_preview.png create mode 100644 plugin/editor/cheditor5/icons/watermark.png create mode 100644 plugin/editor/cheditor5/imageUpload/_common.php create mode 100644 plugin/editor/cheditor5/imageUpload/config.php create mode 100644 plugin/editor/cheditor5/imageUpload/delete.php create mode 100644 plugin/editor/cheditor5/imageUpload/upload.php create mode 100644 plugin/editor/cheditor5/popup/color_picker.html create mode 100644 plugin/editor/cheditor5/popup/flash.html create mode 100644 plugin/editor/cheditor5/popup/flash/ImagePreview.swf create mode 100644 plugin/editor/cheditor5/popup/flash/chximage.swf create mode 100644 plugin/editor/cheditor5/popup/google_map.html create mode 100644 plugin/editor/cheditor5/popup/icon.html create mode 100644 plugin/editor/cheditor5/popup/image.html create mode 100644 plugin/editor/cheditor5/popup/image.html5.html create mode 100644 plugin/editor/cheditor5/popup/image_url.html create mode 100644 plugin/editor/cheditor5/popup/js/AC_OETags.js create mode 100644 plugin/editor/cheditor5/popup/js/color_picker.js create mode 100644 plugin/editor/cheditor5/popup/js/dialog.js create mode 100644 plugin/editor/cheditor5/popup/js/flash.js create mode 100644 plugin/editor/cheditor5/popup/js/google_map.js create mode 100644 plugin/editor/cheditor5/popup/js/icon.js create mode 100644 plugin/editor/cheditor5/popup/js/image.html5.js create mode 100644 plugin/editor/cheditor5/popup/js/image.js create mode 100644 plugin/editor/cheditor5/popup/js/image_upload_flash.js create mode 100644 plugin/editor/cheditor5/popup/js/image_url.js create mode 100644 plugin/editor/cheditor5/popup/js/link.js create mode 100644 plugin/editor/cheditor5/popup/js/media.js create mode 100644 plugin/editor/cheditor5/popup/js/swfobject.js create mode 100644 plugin/editor/cheditor5/popup/js/symbol.js create mode 100644 plugin/editor/cheditor5/popup/js/table.js create mode 100644 plugin/editor/cheditor5/popup/js/table_modify.js create mode 100644 plugin/editor/cheditor5/popup/link.html create mode 100644 plugin/editor/cheditor5/popup/media.html create mode 100644 plugin/editor/cheditor5/popup/symbol.html create mode 100644 plugin/editor/cheditor5/popup/table.html create mode 100644 plugin/editor/cheditor5/popup/table_modify.html create mode 100644 plugin/editor/cheditor5/template.xml create mode 100644 plugin/editor/cheditor5/utils/crossdomain.xml diff --git a/.gitignore b/.gitignore index bbcfde1ac..2ac415747 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ sirgle/ test.php *.key *.sh -cheditor*/ +cheditor5.*/ ckeditor*/ log/ g5_tree/ diff --git a/plugin/editor/cheditor5/backup_template.xml b/plugin/editor/cheditor5/backup_template.xml new file mode 100644 index 000000000..b1a1470a8 --- /dev/null +++ b/plugin/editor/cheditor5/backup_template.xml @@ -0,0 +1,380 @@ + + + \ No newline at end of file diff --git a/plugin/editor/cheditor5/cheditor.js b/plugin/editor/cheditor5/cheditor.js new file mode 100644 index 000000000..adc925981 --- /dev/null +++ b/plugin/editor/cheditor5/cheditor.js @@ -0,0 +1,7963 @@ +// ================================================================ +// CHEditor 5.1.9.3 +// ---------------------------------------------------------------- +// Homepage: http://www.chcode.com +// EMail: support@chcode.com +// Copyright (c) 1997-2016 CHSOFT +// ================================================================ +var GB = { + colors: ['#000000','#313131','#434343','#535353','#666666','#999999','#a0a0a0','#b5b5b5','#c0c0c0','#dcdcdc','#eeeeee','#ffffff', + '#ff0000','#ff8000','#ffff00','#80ff00','#00ff00','#00ff99','#00ffff','#0080ff','#0000ff','#7f00ff','#ff00ff','#ff007f', + '#ffcccc','#ffe5cc','#ffffcc','#e5ffcc','#ccffcc','#ccffe5','#ccffff','#cce5ff','#ccccff','#e5ccff','#ffccff','#ffcce5', + '#ff9999','#ffcc99','#ffff99','#ccff99','#99ff99','#99ffcc','#99ffff','#99ccff','#9999ff','#cc99ff','#ff99ff','#ff99cc', + '#ff6666','#ffb266','#ffff66','#b2ff66','#66ff66','#66ffb2','#66ffff','#66b2ff','#6666ff','#b266ff','#ff66ff','#ff66b2', + '#ff3333','#ff9933','#ffff33','#99ff33','#33ff33','#33ff99','#33ffff','#3399ff','#3333ff','#9933ff','#ff33ff','#ff3399', + '#cc0000','#cc6600','#cccc00','#66cc00','#00cc00','#00cc66','#00cccc','#0066cc','#0000cc','#6600cc','#cc00cc','#cc0066', + '#990000','#994c00','#999900','#4c9900','#009900','#00994c','#009999','#004c99','#000099','#4c0099','#990099','#99004c', + '#660000','#663300','#666600','#336600','#006600','#006633','#006666','#003366','#000066','#330066','#660066','#660033'], + offElementTags: { + button: 1, embed: 1, fieldset: 1, form: 1, hr: 1, img: 1, input: 1, object: 1, select: 1, table: 1, textarea: 1 + }, + selfClosingTags: { + area: 1, base: 1, br: 1, col: 1, command: 1, embed: 1, hr: 1, img: 1, input: 1, keygen: 1, link: 1, meta: 1, + param: 1, source: 1, track: 1, wbr: 1 + }, + textFormatTags: { + a: 1, addr: 1, acronym: 1, b: 1, bdo: 1, big: 1, cite: 1, code: 1, del: 1, dfn: 1, em: 1, font: 1, i: 1, ins: 1, kbd: 1, + q: 1, samp: 1, small: 1, strike: 1, strong: 1, sub: 1, sup: 1, time: 1, tt: 1, u: 1, 'var': 1, span: 1 + }, + textFormatBlockTags: { + address: 1, div: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, p: 1, pre: 1, code: 1, section: 1, aside: 1, article: 1, figcaption: 1 + }, + newLineBeforeTags: { + address: 1, article: 1, aside: 1, audio: 1, blockquote: 1, body: 1, canvas: 1, code: 1, comment: 1, dd: 1, div: 1, + dl: 1, fieldset: 1, figcaption: 1, figure: 1, footer: 1, form: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, head: 1, + header: 1, hggroup: 1, hr: 1, li: 1, noscript: 1, ol: 1, output: 1, p: 1, pre: 1, script: 1, section: 1, table: 1, + tbody: 1, td: 1, tfoot: 1, th: 1, thead: 1, title: 1, tr: 1, ul: 1, video: 1 + }, + lineHeightBlockTags: { + address: 1, article: 1, aside: 1, blockquote: 1, code: 1, dd: 1, div: 1, dt: 1, figcaption: 1, figure: 1, + h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, li: 1, p: 1, pre: 1, section: 1, td: 1, th: 1 + }, + listTags: { dd: 1, dt: 1, li: 1 }, + lineBreakTags: { address: 1, article: 1, aside: 1, dd: 1, div: 1, dt: 1, figcaption: 1, li: 1, p: 1, section: 1 }, + doctype: '', + popupWindow: { + ColorPicker : {tmpl : 'color_picker.html', width : 420, title : '색상 선택'}, + Embed : {tmpl : 'media.html', width : 430, title : '미디어'}, + EmotionIcon : {tmpl : 'icon.html', width : 300, title : '표정 아이콘'}, + FlashMovie : {tmpl : 'flash.html', width : 584, title : '플래쉬 동영상'}, + GoogleMap : {tmpl : 'google_map.html', width : 538, title : '구글 지도'}, + ImageUpload : {tmpl : 'image.html', width : 700, title : '내 PC 사진 넣기'}, + ImageUrl : {tmpl : 'image_url.html', width : 350, title : '웹 사진 넣기'}, + Layout : {tmpl : 'layout.html', width : 430, title : '레이아웃'}, + Link : {tmpl : 'link.html', width : 350, title : '하이퍼링크'}, + ModifyTable : {tmpl : 'table_modify.html', width : 430, title : '표 고치기'}, + Symbol : {tmpl : 'symbol.html', width : 450, title : '특수 문자'}, + Table : {tmpl : 'table.html', width : 430, title : '표 만들기'} + }, + fontName: { + kr : ['맑은 고딕', '돋움', '굴림', '바탕', '궁서'], + en : ['Arial', 'Comic Sans MS', 'Courier New', 'Georgia', 'HeadLineA', 'Impact', 'Tahoma', 'Times New Roman', 'Verdana'] + }, + fontStyle: { + FontSize: 'font-size', FontName: 'font-family', ForeColor: 'color', BackColor: 'background-color' + }, + textAlign: { + JustifyLeft: '', JustifyCenter: 'center', JustifyRight: 'right', JustifyFull: 'justify' + }, + listStyle: { + ordered: { + decimal: '숫자', 'lower-alpha': '영문 소문자', 'upper-alpha': '영문 대문자', 'lower-roman': '로마 소문자', 'upper-roman': '로마 대문자' + }, + unOrdered: {desc: '동그라미', circle: '빈 원', square: '사각형'} + }, + fontSize: { + pt: [7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36], + px: [9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72] + }, + formatBlock: { + P: '일반 텍스트', + H1: '제목 1', + H2: '제목 2', + H3: '제목 3', + H4: '제목 4', + H5: '제목 5', + H6: '제목 6', + ADDRESS: 'Address', + DIV: 'DIV', + PRE: 'Preformatted (PRE)' + }, + lineHeight: { + '한 줄 간격': 1, '1.15': 1.15, '1.5': 1.5, '1.7': 1.7, '1.8': 1.8, '두 줄 간격': 2 + }, + textBlock: [ + ['1px #dedfdf solid','#f7f7f7'], + ['1px #aee8e8 solid','#bfffff'], + ['1px #d3bceb solid','#e6ccff'], + ['1px #e8e88b solid','#ffff99'], + ['1px #c3e89e solid','#d6ffad'], + ['1px #e8c8b7 solid','#ffdcc9'], + ['1px #666666 dashed','#ffffff'], + ['1px #d4d4d4 solid','#ffffff'], + ['1px #cccccc inset','#f7f7f7'] + ], + node: { + element: 1, attribute: 2, text: 3, cdata_section: 4, entity_reference: 5, entity: 6, + processing_instruction: 7, comment: 8, document: 9, document_type: 10, document_fragment: 11, + notation: 12 + }, + + selection: { none: 1, text: 2, element: 3 }, + readyState: { 0: 'uninitialized', 1: 'loading', 2: 'loaded', 3: 'interactive', 4: 'complete' }, + dragWindow: null, + colorDropper: null, + readyEditor: 0, + browser: {} +}; + +function isUndefined(obj) { + return obj === void(0); // obj === undefined; +} + +function detechBrowser() { + function detect(ua) { + var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase(), + likeAndroid = /like android/i.test(ua), + android = !likeAndroid && /android/i.test(ua), + versionIdentifier = getFirstMatch(/version\/(\d+(\.\d+)?)/i), + tablet = /tablet/i.test(ua), + mobile = !tablet && /[^\-]mobi/i.test(ua), + result, + osVersion = '', + osMajorVersion, + osname, + app; + + function getFirstMatch(regex) { + var match = ua.match(regex); + return (match && match.length > 1 && match[1]) || ''; + } + + if (/opera|opr/i.test(ua)) { + result = { + name: 'Opera', opera: true, + version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\s\/](\d+(\.\d+)?)/i) + }; + } else if (/windows phone/i.test(ua)) { + result = { + name: 'Windows Phone', windowsphone: true, msie: true, + version: getFirstMatch(/iemobile\/(\d+(\.\d+)?)/i) + }; + } else if (/msie|trident/i.test(ua)) { + result = { + name: 'Internet Explorer', msie: true, version: getFirstMatch(/(?:msie |rv:)(\d+(\.\d+)?)/i) + }; + } else if (/edge/i.test(ua)) { + result = { + name: 'edge', edge: true, version: getFirstMatch(/(?:edge)\/(\d+(\.\d+)?)/i) + }; + } else if (/chrome|crios|crmo/i.test(ua)) { + result = { + name: 'Chrome', chrome: true, version: getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i) + }; + } else if (iosdevice) { + result = { + name: iosdevice === 'iphone' ? 'iPhone' : iosdevice === 'ipad' ? 'iPad' : 'iPod' + }; + if (versionIdentifier) { + result.version = versionIdentifier; + } + } else if (/firefox|iceweasel/i.test(ua)) { + result = { + name: 'Firefox', firefox: true, + version: getFirstMatch(/(?:firefox|iceweasel)[ \/](\d+(\.\d+)?)/i) + }; + if (/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(ua)) { + result.firefoxos = true; + } + } else if (/silk/i.test(ua)) { + result = { + name: 'Amazon Silk', silk: true, version : getFirstMatch(/silk\/(\d+(\.\d+)?)/i) + }; + } else if (android) { + result = { name: 'Android', version: versionIdentifier }; + } else if (/phantom/i.test(ua)) { + result = { + name: 'PhantomJS', phantom: true, version: getFirstMatch(/phantomjs\/(\d+(\.\d+)?)/i) + }; + } else if (/blackberry|\bbb\d+/i.test(ua) || /rim\stablet/i.test(ua)) { + result = { + name: 'BlackBerry', blackberry: true, + version: versionIdentifier || getFirstMatch(/blackberry[\d]+\/(\d+(\.\d+)?)/i) + }; + } else if (/(web|hpw)os/i.test(ua)) { + result = { + name: 'WebOS', webos: true, + version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i) + }; + if (/touchpad\//i.test(ua)) { + result.touchpad = true; + } + } else if (/safari/i.test(ua)) { + result = { + name: 'Safari', safari: true, version: versionIdentifier + }; + } else { + result = {}; + } + + if (/(apple)?webkit/i.test(ua)) { + result.name = result.name || 'Webkit'; + result.webkit = true; + if (!result.version && versionIdentifier) { + result.version = versionIdentifier; + } + } else if (!result.opera && /gecko\//i.test(ua)) { + result.gecko = true; + result.version = result.version || getFirstMatch(/gecko\/(\d+(\.\d+)?)/i); + result.name = result.name || 'Gecko'; + } + if (android || result.silk) { + result.android = true; + } else if (iosdevice) { + result[iosdevice] = true; + result.ios = true; + } + + if (iosdevice) { + osVersion = getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i); + osVersion = osVersion.replace(/[_\s]/g, '.'); + } else if (android) { + osVersion = getFirstMatch(/android[ \/\-](\d+(\.\d+)*)/i); + } else if (result.windowsphone) { + osVersion = getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i); + } else if (result.webos) { + osVersion = getFirstMatch(/(?:web|hpw)os\/(\d+(\.\d+)*)/i); + } else if (result.blackberry) { + osVersion = getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i); + } + + if (osVersion) { + result.osversion = osVersion; + } + + osMajorVersion = osVersion.split('.')[0]; + if (tablet || iosdevice === 'ipad' || + (android && (osMajorVersion === 3 || (osMajorVersion === 4 && !mobile))) || + result.silk) { + result.tablet = true; + } else if (mobile || iosdevice === 'iphone' || iosdevice === 'ipod' || android || + result.blackberry || result.webos) { + result.mobile = true; + } + + if (result.edge || + (result.msie && result.version >= 10) || + (result.chrome && result.version >= 20) || + (result.firefox && result.version >= 20.0) || + (result.safari && result.version >= 6) || + (result.opera && result.version >= 10.0) || + (result.ios && result.osversion && result.osversion.split('.')[0] >= 6) || + (result.blackberry && result.version >= 10.1)) { + result.a = true; + } else if ((result.msie && result.version < 10) || + (result.chrome && result.version < 20) || + (result.firefox && result.version < 20.0) || + (result.safari && result.version < 6) || + (result.opera && result.version < 10.0) || + (result.ios && result.osversion && result.osversion.split('.')[0] < 6)) { + result.c = true; + } else { + result.x = true; + } + + osname = ''; + if (/windows/i.test(ua)) { + osname = 'Windows'; + } else if (/mac/i.test(ua)) { + osname = 'MacOS'; + } else if (/x11/i.test(ua)) { + osname = 'UNIX'; + } else if (/linux/i.test(ua)) { + osname = 'Linux'; + } else if (/sunos/i.test(ua)) { + osname = 'Solaris'; + } else { + osname = 'Unknown OS'; + } + result.osname = osname; + + if (osname === 'Windows') { + app = getFirstMatch(/(Windows NT\s(\d+)\.(\d+))/i); + switch (app) { + case 'Windows NT 5.1' : result.os = 'Windows XP'; break; + case 'Windows NT 5.2' : result.os = 'Windows 2003'; break; + case 'Windows NT 6.0' : result.os = 'Windows Vista'; break; + case 'Windows NT 6.1' : result.os = 'Windows 7'; break; + case 'Windows NT 6.2' : result.os = 'Windows 8'; break; + case 'Windows NT 6.3' : result.os = 'Windows 8.1'; break; + case 'Windows NT 10.0' : result.os = 'Windows 10'; break; + default : result.os = app; + } + } + + if (result.msie) { + if (result.version > 10) { + result.msie_a = true; + result.msie_bogus = true; + } else if (result.version > 8) { + result.msie_b = true; + result.msie_bogus = false; + } else { + result.msie_c = true; + result.msie_bogus = (result.os === 'Windows XP'); + } + } + return result; + } + return detect(!isUndefined(navigator) ? navigator.userAgent : null); +} + +function URI(uri) { + this.scheme = null; + this.authority = null; + this.path = ''; + this.query = null; + this.fragment = null; + + this.parseUri = function (uri) { + var m = uri.match(/^(([A-Za-z][0-9A-Za-z+.\-]*)(:))?((\/\/)([^\/?#]*))?([^?#]*)((\?)([^#]*))?((#)(.*))?/); + this.scheme = m[3] ? m[2] : null; + this.authority = m[5] ? m[6] : null; + this.path = m[7]; + this.query = m[9] ? m[10] : null; + this.fragment = m[12] ? m[13] : null; + return this; + }; + + this.azToString = function () { + var result = ''; + if (this.scheme !== null) { + result = result + this.scheme + ':'; + } + if (this.authority !== null) { + result = result + '//' + this.authority; + } + if (this.path !== null) { + result = result + this.path; + } + if (this.query !== null) { + result = result + '?' + this.query; + } + if (this.fragment !== null) { + result = result + '#' + this.fragment; + } + return result; + }; + + this.toAbsolute = function (location) { + var baseUri = new URI(location), + URIAbs = this, + target = new URI(), + removeDotSegments = function (path) { + var result = '', rm; + while (path) { + if (path.substr(0, 3) === '../' || path.substr(0, 2) === './') { + path = path.replace(/^\.+/, '').substr(1); + } else if (path.substr(0, 3) === '/./' || path === '/.') { + path = '/' + path.substr(3); + } else if (path.substr(0, 4) === '/../' || path === '/..') { + path = '/' + path.substr(4); + result = result.replace(/\/?[^\/]*$/, ''); + } else if (path === '.' || path === '..') { + path = ''; + } else { + rm = path.match(/^\/?[^\/]*/)[0]; + path = path.substr(rm.length); + result = result + rm; + } + } + return result; + }; + + if (baseUri.scheme === null) { + return false; + } + if (URIAbs.scheme !== null && URIAbs.scheme.toLowerCase() === baseUri.scheme.toLowerCase()) { + URIAbs.scheme = null; + } + + if (URIAbs.scheme !== null) { + target.scheme = URIAbs.scheme; + target.authority = URIAbs.authority; + target.path = removeDotSegments(URIAbs.path); + target.query = URIAbs.query; + } else { + if (URIAbs.authority !== null) { + target.authority = URIAbs.authority; + target.path = removeDotSegments(URIAbs.path); + target.query = URIAbs.query; + } else { + if (URIAbs.path === '') { + target.path = baseUri.path; + target.query = URIAbs.query || baseUri.query; + } else { + if (URIAbs.path.substr(0, 1) === '/') { + target.path = removeDotSegments(URIAbs.path); + } else { + if (baseUri.authority !== null && baseUri.path === '') { + target.path = '/' + URIAbs.path; + } else { + target.path = baseUri.path.replace(/[^\/]+$/, '') + URIAbs.path; + } + target.path = removeDotSegments(target.path); + } + target.query = URIAbs.query; + } + target.authority = baseUri.authority; + } + target.scheme = baseUri.scheme; + } + target.fragment = URIAbs.fragment; + return target; + }; + if (uri) { + this.parseUri(uri); + } +} + +function setConfig() { + var config = { + allowedOnEvent : true, + colorToHex : true, + docTitle : '내 문서', + editAreaMargin : '5px 10px', + editorBgColor : '#fff', + editorFontColor : '#000', + editorFontName : '"맑은 고딕", "Malgun Gothic", gulim', + editorFontSize : '12px', + editorHeight : '300px', + editorPath : null, + editorWidth : '100%', + exceptedElements : { script: true, style: true, iframe: false }, + fontSizeValue : 'px', // [pt, px] + fullHTMLSource : false, + imgBlockMargin : '5px 0px', + imgCaptionFigure : 'border: 1px #ccc solid; background-color: #f0f0f0; margin: 0', + imgCaptionText : 'margin: 5px 5px; text-align: left; line-height: 17px', + imgCaptionWrapper : '', + imgDefaultAlign : 'left', // [left, center, right] + imgJpegQuality : 0.92, // JPEG 사진의 퀄리티 값, 최대값 1 + imgMaxWidth : 800, // 사진 최대 가로 크기, 이 크기 보다 크면 리사이징 처리 + imgResizeMinLimit : 32, // 사진 리사이징의 사용자 직접 입력 값이 이 값 보다 작으면, 이 값으로 설정 + imgResizeSelected : 800, // 사진 리사이징의 선택 입력 폼의 기본 선택 값 + imgResizeValue : [120, 240, 320, 640, 800, -1], // -1 = 사용자 직접 입력 + imgSetAttrAlt : true, + imgSetAttrWidth : 1, // -1 = (width="100%"; height="auto"), 0 = 설정 안함, 1 = 기본값 + imgUploadNumber : 12, + imgUploadSortName : false, + imgWaterMarkAlpha : 1, // 워터마크 불투명도 (최대값 1) + imgWaterMarkUrl : '', // 워터마크 이미지 URL (예: 'http://udomain.com/cheditor/icons/watermark.png') + includeHostname : true, + lineHeight : 1.7, + linkTarget : '_blank', + makeThumbnail : false, // 사진의 썸네일 이미지 생성, 가로 크기는 thumbnailWidth 값, 세로는 자동 계산 + paragraphCss : false, // true =

, false =

+ removeIndent : false, + showTagPath : false, + tabIndent : 3, + tabIndex : 0, + thumbnailWidth : 120, + + // 버튼 사용 유무 + useSource : true, + usePreview : true, + usePrint : true, + useNewDocument : true, + useUndo : true, + useRedo : true, + useCopy : true, + useCut : true, + usePaste : true, + usePasteFromWord : true, + useSelectAll : true, + useStrikethrough : true, + useUnderline : true, + useItalic : true, + useSuperscript : false, + useSubscript : false, + useJustifyLeft : true, + useJustifyCenter : true, + useJustifyRight : true, + useJustifyFull : true, + useBold : true, + useOrderedList : true, + useUnOrderedList : true, + useOutdent : true, + useIndent : true, + useFontName : true, + useFormatBlock : true, + useFontSize : true, + useLineHeight : true, + useBackColor : true, + useForeColor : true, + useRemoveFormat : true, + useClearTag : true, + useSymbol : true, + useLink : true, + useUnLink : true, + useFlash : true, + useMedia : false, + useImage : true, + useImageUrl : false, + useSmileyIcon : true, + useHR : true, + useTable : true, + useModifyTable : true, + useMap : true, + useTextBlock : true, + useFullScreen : true, + usePageBreak : false + }, + base, elem, i, editorUri, locationAbs; + + if (config.editorPath === null) { + base = location.href; + elem = document.getElementsByTagName('base'); + for (i = 0; i < elem.length; i++) { + if (elem[i].href) { + base = elem[i].href; + } + } + elem = document.getElementsByTagName('script'); + for (i = 0; i < elem.length; i++) { + if (elem[i].src) { + editorUri = new URI(elem[i].src); + if (/\/cheditor\.js$/.test(editorUri.path)) { + locationAbs = editorUri.toAbsolute(base).azToString(); + delete locationAbs.query; + delete locationAbs.fragment; + config.editorPath = locationAbs.replace(/[^\/]+$/, ''); + } + } + } + if (config.editorPath === null) { + throw 'CHEditor 경로가 바르지 않습니다.\nmyeditor.config.editorPath를 설정하여 주십시오.'; + } + } + + this.storedSelections = []; + this.keyPressStoredSelections = []; + this.images = []; + this.editImages = {}; + this.cheditor = {}; + this.toolbar = {}; + this.pulldown = {}; + this.currentRS = {}; + this.resizeEditor = {}; + this.setFullScreenMode = false; + this.modalElementZIndex = 1001; + this.config = config; + this.templateFile = 'template.xml'; + this.templatePath = config.editorPath + this.templateFile; + this.W3CRange = !(this.undefined(window.getSelection)); + this.inputForm = 'textAreaId'; + this.range = null; + this.tempTimer = null; + this.cheditor.tabSpaces = ''; + this.cheditor.modifyState = false; + this.cheditor.tabSpaces = new Array(this.config.tabIndent + 1).join(' '); +} + +function cheditor() { + this.toType = (function (global) { + var toString = cheditor.prototype.toString, + re = /^.*\s(\w+).*$/; + + return function (obj) { + if (obj === global) { + return 'global'; + } + return toString.call(obj).replace(re, '$1').toLowerCase(); + }; + }(this)); + + this.undefined = isUndefined; + GB.browser = this.browser = detechBrowser(); + + if (this.undefined(document.execCommand)) { + alert('현재 브라우저에서 CHEditor를 실행할 수 없습니다.'); + return null; + } + if (this.browser.msie && this.browser.version < 7) { + alert('CHEditor는 Internet Explorer 7 이하 버전은 지원하지 않습니다.'); + return null; + } + + try { + setConfig.call(this); + this.cheditor.id = (this.undefined(GB.readyEditor)) ? 1 : GB.readyEditor++; + } catch (e) { + alert(e.toString()); + return null; + } + + return this; +} + +cheditor.prototype = { + //---------------------------------------------------------------- + resetData : function () { + if (GB.browser.msie) { + if (this.undefined(this.cheditor.editArea.onreadystatechange)) { + GB.browser.version = 11; + } + GB.browser.msie_bogus = (GB.browser.version < 8 || GB.browser.version > 10); + document.execCommand('BackgroundImageCache', false, true); + } + this.resetEditArea(); + }, + + appendContents : function (contents) { + var div = this.doc.createElement('div'); + this.editAreaFocus(); + div.innerHTML = String(this.trimSpace(contents)); + + while (div.hasChildNodes()) { + this.doc.body.appendChild(div.firstChild); + } + this.editAreaFocus(); + }, + + insertContents : function (contents) { + this.editAreaFocus(); + this.doCmdPaste(String(this.trimSpace(contents))); + }, + + replaceContents : function (contents) { + this.editAreaFocus(); + this.doc.body.innerHTML = ''; + this.loadContents(contents); + this.editAreaFocus(); + }, + + loadContents : function (contents) { + if (typeof contents === 'string') { + contents = this.trimSpace(contents); + if (contents) { + this.cheditor.editArea.style.visibility = 'hidden'; + this.doc.body.innerHTML = contents; + this.cheditor.editArea.style.visibility = 'visible'; + } + } + }, + + setFolderPath : function () { + if (this.config.editorPath.charAt(this.config.editorPath.length - 1) !== '/') { + this.config.editorPath += '/'; + } + this.config.iconPath = this.config.editorPath + 'icons/'; + this.config.cssPath = this.config.editorPath + 'css/'; + this.config.popupPath = this.config.editorPath + 'popup/'; + }, + + checkInputForm : function () { + var textarea = document.getElementById(this.inputForm); + if (!textarea) { + throw 'ID가 "' + this.inputForm + '"인 textarea 개체를 찾을 수 없습니다.'; + } + textarea.style.display = 'none'; + this.cheditor.textarea = textarea; + }, + + setDesignMode : function (designMode, doc) { + var mode = designMode ? 'on' : 'off'; + + doc = doc || this.doc; + if (GB.browser.msie) { + if (doc.body.contentEditable !== designMode) { + doc.body.contentEditable = designMode; + } + return; + } + if (doc.designMode !== mode) { + doc.designMode = mode; + } + }, + + openDoc : function (doc, contents) { + var html = '' + + '' + this.config.docTitle + '' + + ''; + + doc.open(); + + if (typeof contents === 'string') { + html += this.trimSpace(contents); + } + + html += ''; + doc.write(html); + doc.close(); + }, + + getWindowHandle : function (iframeObj) { + var iframeWin; + if (iframeObj.contentWindow) { + iframeWin = iframeObj.contentWindow; + } else { + throw '현재 브라우저에서 에디터를 실행할 수 없습니다.'; + } + return iframeWin; + }, + + resetDoc : function () { + if (this.undefined(this.cheditor.editArea)) { + return false; + } + try { + this.editArea = this.getWindowHandle(this.cheditor.editArea); + this.doc = GB.browser.msie ? this.editArea.document : this.cheditor.editArea.contentDocument; + this.resetData(); + return true; + } catch (e) { + alert(e.toString()); + return false; + } + }, + + resetEditArea : function () { + this.openDoc(this.doc, this.cheditor.textarea.value); + this.setDocumentProp(); + }, + + resetDocumentBody : function () { + this.doc.body.parentNode.replaceChild(this.doc.createElement('body'), this.doc.body); + this.setDocumentBodyProp(); + }, + + setDocumentBodyProp : function () { + this.doc.body.setAttribute('spellcheck', 'false'); + this.doc.body.setAttribute('hidefocus', ''); + }, + + setDocumentProp : function () { + var oSheet, + bodyCss = 'font-size:' + this.config.editorFontSize + + '; font-family:' + this.config.editorFontName + + '; color:' + this.config.editorFontColor + + '; margin:' + this.config.editAreaMargin + + '; line-height:' + this.config.lineHeight, + tableCss = 'font-size:' + this.config.editorFontSize + '; line-height:' + this.config.lineHeight, + self = this; + + this.setDefaultCss({css: 'editarea.css', doc: this.doc}); + + oSheet = this.doc.styleSheets[0]; + if (!this.W3CRange) { + oSheet.addRule('body', bodyCss); + oSheet.addRule('table', tableCss); + } else { + oSheet.insertRule('body {' + bodyCss + '}', 0); + oSheet.insertRule('table {' + tableCss + '}', 1); + } + + this.setDocumentBodyProp(); + this.cheditor.bogusSpacerName = 'ch_bogus_spacer'; + + this.addEvent(this.doc, 'paste', function (event) { + self.handlePaste(event); + }); + + if (!GB.browser.msie) { + this.doc.execCommand('defaultParagraphSeparator', false, 'p'); + } + + this.setDesignMode(true); + this.initDefaultParagraphSeparator(); + }, + + initDefaultParagraphSeparator : function () { + var p = this.doc.createElement('p'), br; + + if (this.doc.body.firstChild && this.doc.body.firstChild.nodeName.toLowerCase() === 'br') { + this.doc.body.removeChild(this.doc.body.firstChild); + } + + if (this.W3CRange) { + if (!this.doc.body.hasChildNodes()) { + this.doc.body.appendChild(p); + if (!GB.browser.msie && !GB.browser.edge) { + br = this.doc.createElement('br'); + br.className = this.cheditor.bogusSpacerName; + p.appendChild(br); + this.placeCaretAt(p, false); + } else { + this.placeCaretAt(p, false); + } + } + } else { + this.doc.body.appendChild(p); + this.placeCaretAt(p, false); + } + }, + + handleBeforePaste : function () { + var range = this.getRange(), commonAncestorContainer, startOffset, wrapper; + this.backupRange(); + + if (!range.collapsed) { + range.deleteContents(); + range = this.getRange(); + } + + commonAncestorContainer = range.commonAncestorContainer; + startOffset = range.startOffset; + wrapper = this.doc.createElement('div'); + + if (startOffset < 1 && commonAncestorContainer.nodeType === GB.node.text) { + commonAncestorContainer.parentNode.insertBefore(wrapper, commonAncestorContainer); + } else { + range.insertNode(wrapper); + } + + this.placeCaretAt(wrapper, false); + return wrapper; + }, + + handlePaste : function (ev) { + var text, clip, elem, wrapper, pNode, space = [], div, self = this; + if (this.cheditor.mode === 'preview') { + return; + } + if (this.cheditor.paste !== 'text' && this.cheditor.mode === 'rich' && this.W3CRange) { + wrapper = this.handleBeforePaste(); + setTimeout(function () { + if (wrapper) { + if (wrapper.hasChildNodes()) { + text = wrapper.innerHTML; + text = text.replace(/[\r\n]/g, '\u00a0'); + text = text.replace(/]+)>(\s+| +)<\/font>/gi, '\u00a0'); + text = text.replace(/]+)>(\s+| +)<\/span>/gi, '\u00a0'); + text = text.replace(/<\/?(font)\s?([^>]+)?>/gi, ''); + text = text.replace(/([\s ]+)<\/strong>/gi, '\u00a0'); + text = text.replace(/([\s ]+)<\/b>/gi, '\u00a0'); + text = text.replace(/([\s ]+)<\/em>/gi, '\u00a0'); + text = text.replace(/([\s ]+)<\/i>/gi, '\u00a0'); + text = text.replace(/<\/?(colgroup|col\s?([^>]+))>/gi, ''); + text = text.replace(/<(\/)?strong>/gi, '<$1b>'); + text = text.replace(/<(\/)?em>/gi, '<$1i>'); + + wrapper.innerHTML = text; + if (wrapper.firstChild.nodeType === GB.node.text) { + text = wrapper.firstChild.data; + text = text.replace(/^( +|\s+)/g, ''); + wrapper.firstChild.data = text; + } + + elem = wrapper.firstChild; + while (elem) { + wrapper.parentNode.insertBefore(elem, wrapper); + elem = wrapper.firstChild; + } + } + + pNode = wrapper.parentNode; + if (pNode) { + if (pNode.firstChild === wrapper && pNode.lastChild === wrapper) { + pNode.parentNode.removeChild(pNode); + } else { + pNode.removeChild(wrapper); + } + } + self.setImageEvent(true); + } + }, 50); + return; + } + + if (ev !== null) { + clip = ev.clipboardData; + this.stopEvent(ev); + } + + text = this.trimSpace((this.undefined(clip) || clip === null) ? + window.clipboardData.getData('Text') : + clip.getData('text/plain')); + + if (text !== '') { + text = text.replace(/\r/g, ''); + if (this.cheditor.mode === 'code') { + div = this.doc.createElement('div'); + text = this.htmlEncode(text); + text = text.replace(/\s{2,}/gm, '\n'); + text = text.replace(/[\u200b\ufeff\xa0\u3000]+/g, ''); + + if (GB.browser.msie && GB.browser.version < 9) { + text = text.replace(/\n/g, '
'); + text = text.replace(/\t/g, '__CHEDITOR_TAB_SPACE__'); + text = text.replace(/\s/gm, ' '); + } + div.innerHTML = text; + div.id = 'clipboardData'; + this.insertHTML(div); + return; + } + + text = this.htmlEncode(text); + text = text.replace(/[\r\n]+/g, '\n'); + text = text.split('\n').join('
'); + + text = text.replace(/(\s{2,})/g, function (a, b) { + space = b.split(/\s/); + space.shift(); + return ' ' + space.join(' '); + }); + this.insertHTML(text); + self.setImageEvent(true); + } + }, + + editAreaFocus : function () { + this.editArea.focus(); + }, + + resizeGetY : function (evt) { + return GB.browser.msie ? + window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop : + evt.clientY + window.pageYOffset; + }, + + resizeStart : function (evt) { + var self = this; + self.currentRS.elNode = self.cheditor.mode === 'code' ? self.cheditor.textContent : self.cheditor.editArea; + self.currentRS.cursorStartY = self.resizeGetY(evt); + self.currentRS.elStartTop = parseInt(self.currentRS.elNode.style.height, 10); + + if (isNaN(self.currentRS.elStartTop)) { + self.currentRS.elStartTop = 0; + } + + evt = evt || window.event; + + self.resizeEditor.stopFunc = function (event) { + self.resizeStop(event); + }; + self.resizeEditor.moveFunc = function (event) { + self.resizeMove(event); + }; + + if (GB.browser.msie) { + self.setDesignMode(false); + } + + self.currentRS.elNode.style.visibility = 'hidden'; + self.addEvent(document, 'mousemove', self.resizeEditor.moveFunc); + self.addEvent(document, 'mouseup', self.resizeEditor.stopFunc); + self.stopEvent(evt); + }, + + resizeMove : function (evt) { + var offset = this.resizeGetY(evt), + height = this.currentRS.elStartTop + offset - this.currentRS.cursorStartY; + if (height < 1) { + this.resizeStop(evt); + height = 1; + } + this.config.editorHeight = this.currentRS.elNode.style.height = height + 'px'; + this.stopEvent(evt); + }, + + resizeStop : function (evt) { + this.stopEvent(evt); + this.removeEvent(document, 'mouseup', this.resizeEditor.stopFunc); + this.removeEvent(document, 'mousemove', this.resizeEditor.moveFunc); + this.currentRS.elNode.style.visibility = 'visible'; + if (GB.browser.msie) { + this.setDesignMode(true); + } + if (this.cheditor.mode === 'code') { + this.config.editorHeight = (parseInt(this.config.editorHeight, 10) + + parseInt(this.cheditor.textContent.getAttribute('xbar-height'), 10)) + 'px'; + this.cheditor.textContent.focus(); + } else if (this.cheditor.mode === 'rich') { + this.editAreaFocus(); + } + }, + + switchEditorMode : function (changeMode) { + var self = this, i, className, interval; + + this.editAreaFocus(); + if (this.cheditor.mode === changeMode) { + return; + } + + for (i in this.cheditor.modetab) { + if (this.cheditor.modetab.hasOwnProperty(i)) { + className = this.cheditor.modetab[i].className; + className = className.replace(/\-off$/, ''); + if (i !== changeMode) { + this.cheditor.modetab[i].className = className + '-off'; + } else { + this.cheditor.modetab[i].className = className; + } + } + } + + switch (changeMode) { + case 'rich' : + this.richMode(); + this.showTagSelector(true); + break; + case 'code' : + if (this.cheditor.modifyState) { + interval = setInterval(function () { + if (!self.cheditor.modifyState) { + clearInterval(interval); + self.editMode(); + } + }, 10); + } else { + this.editMode(); + } + this.showTagSelector(false); + break; + case 'preview' : + this.previewMode(); + this.showTagSelector(false); + } + this.cheditor.mode = changeMode; + }, + + initTemplate : function () { + var self = this, + httpRequest = null, + showError = function (msg) { + alert(self.templateFile + ' 파일 로딩 중 오류가 발생하였습니다.\n원인: ' + msg); + }, + templateReady = function () { + var event; + if (httpRequest.readyState === 4) { + if (httpRequest.status === 200) { + try { + self.xmlDoc = httpRequest.responseXML || httpRequest; + self.loadTemplate(self.xmlDoc); + if (self.W3CRange) { + event = document.createEvent('Event'); + event.initEvent(self.cheditor.id, true, true); + document.dispatchEvent(event); + } else { + document.documentElement.loadEvent = self.cheditor.id; + } + } catch (e) { + showError(e.toString()); + } + } else { + showError('XMLHttpRequest. Status ' + httpRequest.status); + } + } + }; + + if (window.XMLHttpRequest) { + httpRequest = new XMLHttpRequest(); + if (httpRequest.overrideMimeType) { + httpRequest.overrideMimeType('text/xml'); + } + httpRequest.onreadystatechange = templateReady; + try { + httpRequest.open('GET', self.templatePath, true); + } + catch (e) { + showError(e + '참고: 에디터를 웹 서버에서 실행하여 주십시오.'); + } + httpRequest.send(); + } else if (window.ActiveXObject) { + httpRequest = new window.ActiveXObject('Microsoft.XMLDOM'); + httpRequest.async = true; + httpRequest.onreadystatechange = templateReady; + httpRequest.load(self.templatePath); + } else { + showError('현재 브라우저에서 ' + self.templateFile + ' 파일을 사용할 수 없습니다.'); + } + }, + + getCDATASection : function (node) { + var elem, data; + if (node.hasChildNodes()) { + elem = node.firstChild; + while (elem && elem.nodeType !== GB.node.cdata_section) { + elem = elem.nextSibling; + } + if (elem && elem.nodeType === GB.node.cdata_section) { + data = elem.data; + data = data.replace(/\n/g, ''); + data = data.replace(/(\s+?)<([^>]*)>/g, '<$2>'); + data = this.trimSpace(data); + return data; + } + } + return null; + }, + + setToolbarBgPosition : function (elem, attr) { + elem.style.backgroundPosition = attr; + }, + + getToolbarBgPosition : function (elem) { + var pos; + switch (elem.className) { + case 'cheditor-tb-bg' : pos = 3; break; + case 'cheditor-tb-bg-last' : pos = 6; break; + case 'cheditor-tb-bg-single' : pos = 9; break; + case 'cheditor-tb-bg30-first' : pos = 12; break; + case 'cheditor-tb-bg30' : pos = 15; break; + case 'cheditor-tb-bg30-last' : pos = 18; break; + case 'cheditor-tb-bg55' : pos = 21; break; + case 'cheditor-tb-bg40' : pos = 24; break; + case 'cheditor-tb-bg44' : pos = 27; break; + case 'cheditor-tb-bgcombo' : pos = 30; break; + case 'cheditor-tb-bgcombo-last' : pos = 33; break; + default : pos = 0; + } + return pos; + }, + + toolbarMouseOverUp : function (elem) { + var pos, obj; + if (elem.checked) { + return; + } + this.setToolbarBgPosition(elem.button, '0 ' + (~(((elem.pos + 1) * elem.height)) + 1) + 'px'); + + if ((elem.name === 'combobox' && elem.prev && elem.prev.checked) || + (elem.name === 'combo' && elem.next && elem.next.checked)) { + return; + } + if (elem.type === 'combobox') { + if (elem.prev.checked) { + return; + } + obj = elem.prev; + pos = '0px ' + (~(((obj.pos + 1) * obj.height)) + 1) + 'px'; + this.setToolbarBgPosition(obj.button, pos); + } else if (elem.type === 'combo') { + if (elem.prev && !elem.prev.checked && !elem.prev.active) { + obj = elem.prev; + pos = (~(obj.width) + 1) + 'px ' + (~(obj.pos * obj.height) + 1) + 'px'; + this.setToolbarBgPosition(obj.button, pos); + } + if (elem.next) { + if (elem.next.checked) { + return; + } + obj = elem.next; + pos = (~(obj.width) + 1) + 'px ' + (~(((obj.pos + 1) * obj.height)) + 1) + 'px'; + this.setToolbarBgPosition(obj.button, pos); + } + } else { + if (!elem.prev || (elem.prev && elem.prev.checked)) { + return; + } + obj = elem.prev; + if (obj.className === 'cheditor-tb-bg-first') { + pos = (~(obj.width) + 1) + 'px 0'; + } else { + pos = (~(obj.width) + 1) + 'px ' + (~(obj.pos * obj.height) + 1) + 'px'; + } + this.setToolbarBgPosition(obj.button, pos); + } + }, + + toolbarMouseDownOut : function (elem, mousedown) { + if (elem.next && elem.next.checked && !mousedown) { + this.setToolbarBgPosition(elem.button, (~(elem.width * 2) + 1) + 'px ' + + (~(elem.pos * elem.height) + 1) + 'px'); + } + if (elem.prev) { + if (elem.prev.active || (elem.prev.type === 'combo' && elem.checked)) { + return; + } + if (elem.prev.checked) { + this.setToolbarBgPosition(elem.prev.button, '0 ' + + (~((elem.prev.pos + 2) * elem.prev.height) + 1) + 'px'); + return; + } + if (mousedown) { + this.setToolbarBgPosition(elem.prev.button, (~(elem.prev.width * 2) + 1) + 'px ' + + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } else { + this.setToolbarBgPosition(elem.prev.button, + '0 ' + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } + } + }, + + toolbarButtonChecked : function (elem) { + this.setToolbarBgPosition(elem.button, '0 ' + (~((elem.pos + 2) * elem.height) + 1) + 'px'); + if (elem.prev && elem.prev.type === 'combo') { + if (elem.prev.checked || elem.checked) { + return; + } + this.setToolbarBgPosition(elem.prev.button, (~(elem.prev.width * 2) + 1) + 'px ' + + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } + if (elem.prev && !elem.prev.checked) { + if (elem.checked) { + this.setToolbarBgPosition(elem.prev.button, (~(elem.prev.width * 2) + 1) + 'px ' + + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } else { + this.setToolbarBgPosition(elem.prev.button, '0 ' + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } + } + }, + + toolbarButtonUnchecked : function (elem) { + if (elem.type === 'combobox' && !elem.checked) { + if (elem.prev.checked) { + this.setToolbarBgPosition(elem.button, + (~(elem.width) + 1) + 'px ' + (~(((elem.pos + 1) * elem.height)) + 1) + 'px'); + return; + } + this.setToolbarBgPosition(elem.prev.button, '0 ' + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } + this.setToolbarBgPosition(elem.button, '0 ' + (~(elem.pos * elem.height) + 1) + 'px'); + if (elem.prev && elem.prev.name === 'BackColor') { + this.setToolbarBgPosition(elem.prev.button, '0 ' + (~(elem.prev.pos * elem.prev.height) + 1) + 'px'); + } + }, + + makeToolbarGrayscale : function (image) { + var context, imageData, filter, imgWidth = image.width, imgHeight = image.height, + canvas = this.doc.createElement('canvas'); + + filter = function (pixels) { + var d = pixels.data, i, r, g, b; + for (i = 0; i < d.length; i += 4) { + r = d[i]; + g = d[i + 1]; + b = d[i + 2]; + d[i] = d[i + 1] = d[i + 2] = (r + g + b) / 3; + } + return pixels; + }; + + context = canvas.getContext('2d'); + canvas.width = imgWidth; + canvas.height = imgHeight; + context.drawImage(image, 0, 0); + + imageData = context.getImageData(0, 0, imgWidth, imgHeight); + filter(imageData); + context.putImageData(imageData, 0, 0); + return canvas.toDataURL(); + }, + + toolbarSetBackgroundImage : function (elem, disable) { + var css = elem.firstChild.className, + tbEnable = (this.cheditor.toolbarGrayscale && elem.firstChild.style.backgroundImage); + + css = css.replace(/-disable$/i, ''); + if (disable) { + if (tbEnable) { + elem.firstChild.style.backgroundImage = 'url(' + this.cheditor.toolbarGrayscale + ')'; + } + css = css + '-disable'; + elem.style.cursor = 'default'; + } else { + if (tbEnable) { + elem.firstChild.style.backgroundImage = 'url(' + this.toolbar.icon + ')'; + } + elem.style.cursor = 'pointer'; + } + elem.firstChild.className = css; + }, + + toolbarDisable : function (elem, disable) { + if (disable) { + this.toolbarSetBackgroundImage(elem.button, true); + this.toolbarButtonUnchecked(elem); + this.toolbarMouseDownOut(elem); + this.toolbar[elem.name].disabled = true; + return true; + } + this.toolbarSetBackgroundImage(elem.button, false); + this.toolbar[elem.name].disabled = false; + return false; + }, + + colorConvert : function (color, which, opacity) { + var colorDefs = [ + { + re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, + process : function (bits) { + return [ + parseInt(bits[1], 10), + parseInt(bits[2], 10), + parseInt(bits[3], 10), + 1 + ]; + } + }, + { + re : /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d+(?:\.\d+)?|\.\d+)\s*\)/, + process : function (bits) { + return [ + parseInt(bits[1], 10), + parseInt(bits[2], 10), + parseInt(bits[3], 10), + parseFloat(bits[4]) + ]; + } + }, + { + re: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + process : function (bits) { + return [ + parseInt(bits[1], 16), + parseInt(bits[2], 16), + parseInt(bits[3], 16), + 1 + ]; + } + }, + { + re: /^([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/, + process : function (bits) { + return [ + parseInt(bits[1] * 2, 16), + parseInt(bits[2] * 2, 16), + parseInt(bits[3] * 2, 16), + 1 + ]; + } + } + ], r = null, g = null, b = null, a = null, i, re, processor, bits, channels, min, rData = null; + + if (!which) { + which = 'rgba'; + } + + color = color.replace(/^\s*#|\s*$/g, ''); + if (color.length === 3) { + color = color.replace(/(.)/g, '$1$1'); + } + + color = color.toLowerCase(); + which = which.toLowerCase(); + + for (i = 0; i < colorDefs.length; i++) { + re = colorDefs[i].re; + processor = colorDefs[i].process; + bits = re.exec(color); + if (bits) { + channels = processor(bits); + r = channels[0]; + g = channels[1]; + b = channels[2]; + a = channels[3]; + } + } + + r = (r < 0 || isNaN(r)) ? 0 : ((r > 255) ? 255 : r); + g = (g < 0 || isNaN(g)) ? 0 : ((g > 255) ? 255 : g); + b = (b < 0 || isNaN(b)) ? 0 : ((b > 255) ? 255 : b); + a = (a < 0 || isNaN(a)) ? 0 : ((a > 1) ? 1 : a); + + function hex(x) { + return ('0' + parseInt(x, 10).toString(16)).slice(-2); + } + + switch (which) { + case 'rgba': + if (opacity) { + a = (255 - (min = Math.min(r, g, b))) / 255; + r = ((r - min) / a).toFixed(0); + g = ((g - min) / a).toFixed(0); + b = ((b - min) / a).toFixed(0); + a = a.toFixed(4); + } + rData = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + break; + case 'rgb': + rData = 'rgb(' + r + ',' + g + ',' + b + ')'; + break; + case 'hex': + if (isNaN(parseInt(r, 10)) || isNaN(parseInt(g, 10)) || isNaN(parseInt(b, 10))) { + return color; + } + rData = '#' + hex(r) + hex(g) + hex(b); + break; + } + return rData; + }, + + toolbarUpdate : function (srcElement) { + var toolbar = this.toolbar, + range = this.getRange(), + isCollapsed = this.rangeCollapsed(range), + sType = GB.selection.text, + bControl = false, bTable = false, ancestorsLen = 0, bNoOff = { 'Link': 1 }, ancestors = [], + i, j, btn, cmd, autoOff, bDisable, el, wrapper, fontAttr, oldName, span, newAttr, defaultAttr, + state, css, node, alignment, pNode; + + pNode = srcElement || this.getRangeElement(range); + switch (pNode.nodeType) { + case GB.node.element: + sType = GB.selection.element; + break; + case GB.node.text: + sType = GB.selection.text; + pNode = pNode.parentNode; + break; + default: + return; + } + + if (sType === GB.selection.element && !isCollapsed) { + bControl = GB.offElementTags[pNode.nodeName.toLowerCase()]; + } else { + node = pNode; + while (node && node.nodeType === GB.node.element && node.nodeName.toLowerCase() !== 'body') { + ancestors.push(node); + if (node.nodeName.toLowerCase() === 'td' || node.nodeName.toLowerCase() === 'th') { + bTable = true; + } + node = node.parentNode; + } + ancestorsLen = ancestors.length; + } + + if (!bTable && sType === GB.selection.element && + (pNode.nodeName.toLowerCase() === 'table' || pNode.nodeName.toLowerCase() === 'td' || + pNode.nodeName.toLowerCase() === 'th')) { + bTable = true; + } + + alignment = { JustifyCenter : 'center', JustifyRight : 'right', JustifyFull : 'justify' }; + + for (i in toolbar) { + if (!toolbar.hasOwnProperty(i)) { + continue; + } + + btn = toolbar[i]; + if (!btn.cmd) { + continue; + } + + cmd = btn.cmd; + autoOff = false; + + if (bControl && sType === GB.selection.element) { + if (btn.group !== 'Alignment') { + autoOff = !(pNode.nodeName.toLowerCase() === 'img' && bNoOff[cmd]); + } + } + + if (btn.name === 'ModifyTable') { + autoOff = !bTable; + } + + bDisable = this.toolbarDisable(btn, autoOff); + + if (btn.name === 'ForeColor' || btn.name === 'BackColor') { + btn.button.lastChild.style.display = bDisable ? 'none' : 'block'; + } + if (btn.autocheck === null) { + continue; + } + + switch (cmd) { + case 'Copy' : + case 'Cut' : + this.toolbarDisable(btn, isCollapsed); + break; + case 'UnLink' : + if (GB.browser.firefox) { + this.toolbarDisable(btn, (pNode.nodeName.toLowerCase() !== 'a' && !pNode.getAttribute('href'))); + } else { + this.toolbarDisable(btn, this.doc.queryCommandEnabled(cmd) === false); + } + break; + case 'FormatBlock' : + wrapper = btn.button.firstChild; + oldName = wrapper.firstChild; + el = false; + span = document.createElement('span'); + for (j = 0; j < ancestorsLen; j++) { + if (GB.formatBlock[ancestors[j].nodeName]) { + span.appendChild(document.createTextNode(ancestors[j].nodeName)); + wrapper.replaceChild(span, oldName); + el = true; + break; + } + } + if (!el) { + span.appendChild(document.createTextNode('스타일')); + wrapper.replaceChild(span, oldName); + } + this.unselectionElement(span); + break; + case 'ForeColor' : + case 'BackColor' : + if (cmd === 'BackColor' && !GB.browser.msie) { + cmd = 'HiliteColor'; + } + fontAttr = this.doc.queryCommandValue(cmd); + if (fontAttr && !/^[rgb|#]/.test(fontAttr)) { + fontAttr = (((fontAttr & 0x0000ff) << 16) | (fontAttr & 0x00ff00) | ((fontAttr & 0xff0000) >>> 16)).toString(16); + fontAttr = '#000000'.slice(0, 7 - fontAttr.length) + fontAttr; + } else { + fontAttr = (cmd === 'ForeColor') ? this.config.editorFontColor : this.config.editorBgColor; + } + btn.button.lastChild.style.backgroundColor = fontAttr; + break; + case 'FontName' : + case 'FontSize' : + fontAttr = this.doc.queryCommandValue(cmd); + wrapper = btn.button.firstChild; + span = this.doc.createElement('span'); + + if (cmd === 'FontSize') { + fontAttr = pNode.style.fontSize; + if (!fontAttr) { + for (i = 0; i < ancestors.length; i++) { + fontAttr = ancestors[i].style.fontSize; + if (fontAttr) { + break; + } + } + } + } + if (fontAttr) { + newAttr = fontAttr; + newAttr = newAttr.replace(/'/g, ''); + span.appendChild(this.doc.createTextNode(newAttr)); + wrapper.replaceChild(span, wrapper.firstChild); + } + if (!span.hasChildNodes()) { + defaultAttr = (cmd === 'FontSize') ? this.config.editorFontSize : this.config.editorFontName; + if (wrapper.hasChildNodes()) { + wrapper.removeChild(wrapper.firstChild); + } + defaultAttr = defaultAttr.replace(/'/g, ''); + span.appendChild(this.doc.createTextNode(defaultAttr)); + wrapper.appendChild(span); + } + this.unselectionElement(span); + break; + case 'LineHeight': + wrapper = btn.button.firstChild; + this.unselectionElement(wrapper.firstChild); + break; + default : + if (!this.doc.queryCommandSupported(cmd)) { + continue; + } + state = this.doc.queryCommandState(cmd); + if (state === null) { + continue; + } + + if (GB.browser.msie && state === false && alignment[cmd]) { + el = pNode; + while (el && el.nodeName.toLowerCase() !== 'body') { + if (GB.lineHeightBlockTags[el.nodeName.toLowerCase()]) { + css = this.getCssValue(el); + if (css) { + for (j = 0; j < css.length; j++) { + if (css[j].name.toLowerCase() === 'text-align' && css[j].value === alignment[cmd]) { + state = true; + break; + } + } + } + } + el = el.parentNode; + } + } + + if (state) { + btn.checked = true; + this.toolbarButtonChecked(btn); + if (btn.type === 'combo' && btn.name === btn.next.node) { + btn.next.active = true; + this.setToolbarBgPosition(btn.next.button, + (~(btn.next.width) + 1) + 'px ' + (~(((btn.next.pos + 1) * btn.next.height)) + 1) + 'px'); + } + } else { + this.toolbarButtonUnchecked(btn); + btn.checked = false; + if (btn.next) { + btn.next.active = false; + if (btn.type === 'combo' && btn.name === btn.next.node) { + this.toolbarButtonUnchecked(btn.next); + } + } + } + + } + } + }, + + createButton : function (name, attr, prev) { + var self = this, + elem, icon, btnIcon, iconPos, method, cmd, check, type, node, btnHeight, btnWidth, text, + span, obj, btnClass, comboOut; + + method = attr.getElementsByTagName('Execution')[0].getAttribute('method'); + cmd = attr.getElementsByTagName('Execution')[0].getAttribute('value'); + check = attr.getAttribute('check'); + type = attr.getAttribute('type'); + node = attr.getAttribute('node'); + + btnClass = attr.getAttribute('class'); + btnWidth = attr.getAttribute('width'); + btnHeight = attr.getAttribute('height'); + + elem = document.createElement('div'); + elem.style.width = btnWidth + 'px'; + elem.setAttribute('name', name); + elem.style.height = btnHeight + 'px'; + elem.style.border = '0px solid transparent'; + + icon = attr.getElementsByTagName('Icon')[0]; + btnIcon = document.createElement('div'); + btnIcon.className = icon.getAttribute('class'); + btnIcon.style.marginLeft = icon.getAttribute('margin') || '3px'; + + iconPos = icon.getAttribute('position'); + if (iconPos) { + btnIcon.style.backgroundImage = 'url(' + self.toolbar.icon + ')'; + btnIcon.style.backgroundRepeat = 'no-repeat'; + self.setToolbarBgPosition(btnIcon, (~iconPos + 1) + 'px center'); + } else { + text = icon.getAttribute('alt'); + if (text) { + span = document.createElement('span'); + span.appendChild(document.createTextNode(text)); + btnIcon.appendChild(span); + } + } + + elem.appendChild(btnIcon); + obj = { 'autocheck': check, + 'button': elem, + 'className': btnClass, + 'checked': false, + 'cmd': cmd, + 'colorNode': {}, + 'disabled': false, + 'group': '', + 'height': btnHeight, + 'method': method, + 'name': name, + 'next': null, + 'node': node, + 'num': 0, + 'pos': 0, + 'prev': prev, + 'type': type, + 'width': btnWidth }; + + if (prev) { + prev.next = obj; + } + + elem.attr = obj; + self.toolbar[name] = obj; + + self.addEvent(elem, 'mouseover', function (ev) { + if (!obj.disabled) { + self.toolbarMouseOverUp(obj); + } + self.stopEvent(ev || window.event); + }); + + self.addEvent(elem, 'mousedown', function (ev) { + if (!obj.checked && !obj.disabled) { + self.toolbarButtonChecked(obj); + self.toolbarMouseDownOut(obj, true); + if (obj.prev && obj.prev.type === 'combo' && !obj.prev.checked) { + self.setToolbarBgPosition(obj.prev.button, + '0 ' + (~((self.getToolbarBgPosition(obj.prev.button) + 1) * obj.prev.height) + 1) + 'px'); + } + } + if (obj.next) { + obj.next.button.style.visibility = 'hidden'; + obj.next.button.style.visibility = 'visible'; + } + self.stopEvent(ev || window.event); + }); + + self.addEvent(elem, 'click', function (ev) { + if (obj.disabled) { + return; + } + switch (obj.method) { + case 'doCmd' : + self.backupRange(); + self.doCmd(obj.cmd, null); + break; + case 'windowOpen' : + self.windowOpen(obj.cmd); + break; + case 'showPulldown' : + if (obj.checked) { + obj.checked = false; + self.boxHideAll(); + self.toolbarButtonUnchecked(obj); + return; + } + obj.checked = true; + self.showPulldown(obj.cmd, obj.button); + self.toolbarButtonChecked(obj); + self.toolbarMouseDownOut(obj, true); + break; + default : + alert('지원하지 않는 명령입니다.'); + } + self.stopEvent(ev || window.event); + }); + + comboOut = function (combo, startPos) { + self.setToolbarBgPosition(combo.button, + startPos + 'px ' + (~(((self.getToolbarBgPosition(combo.button) + (combo.checked ? 2 : 1)) * combo.height)) + 1) + 'px'); + }; + + self.addEvent(elem, 'mouseout', function () { + if (!obj.checked) { + if (obj.type === 'combo') { + if (obj.next) { + if (!obj.next.checked) { + self.toolbarButtonUnchecked(obj.next); + self.toolbarMouseDownOut(obj.next, false); + } else { + return; + } + } + } + if (obj.type === 'combobox' && obj.prev.checked) { + self.setToolbarBgPosition(obj.button, + (~(obj.width) + 1) + 'px ' + (~(((obj.pos + 1) * obj.height)) + 1) + 'px'); + return; + } + self.toolbarButtonUnchecked(obj); + self.toolbarMouseDownOut(obj, false); + } else { + if (obj.node && obj.node === obj.prev.name) { + if (!obj.prev.checked) { + self.setToolbarBgPosition(obj.prev.button, + '0 ' + (~((self.getToolbarBgPosition(obj.prev.button) + 1) * obj.prev.height) + 1) + 'px'); + } + comboOut(obj, 0); + } + } + }); + + return obj; + }, + + showToolbar : function (toolbar, toolbarWrapper) { + var self = this, + i, j, grpName, btn, btnLen, prevObj, attr, btnName, btnObj = null, btnNum, spacer, + currentColor, fullscreen, child, len, + toolbarIcon = toolbar.getElementsByTagName('Image').item(0).getAttribute('file'), + tmpArr = toolbarIcon.split(/\./), + group = toolbar.getElementsByTagName('Group'), + grpNum = group.length, + appendSpaceBlock = function (pNode) { + var split = document.createElement('div'); + split.className = 'cheditor-tb-split'; + pNode.appendChild(split); + }, + onClickEventHandler = function () { + if (self.setFullScreenMode) { + this.className = 'cheditor-tb-fullscreen'; + this.setAttribute('title', '전체 화면'); + } else { + this.className = 'cheditor-tb-fullscreen-actual'; + this.setAttribute('title', '이전 크기로 복원'); + } + self.fullScreenMode(); + }; + + self.toolbar.icon = self.config.iconPath + toolbarIcon; + self.toolbar.iconDisable = self.config.iconPath + tmpArr[0] + '-disable' + '.' + tmpArr[1]; + toolbarWrapper.className = 'cheditor-tb-wrapper'; + + fullscreen = document.createElement('span'); + if (self.config.useFullScreen === true) { + fullscreen.appendChild(document.createTextNode('\u00a0')); + fullscreen.className = 'cheditor-tb-fullscreen'; + fullscreen.setAttribute('title', '전체 화면'); + (function () { + fullscreen.onclick = onClickEventHandler; + })(); + } else { + fullscreen.clsaaName = 'cheditor-tb-fullscreen-disable'; + } + toolbarWrapper.appendChild(fullscreen); + + for (i = 0; i < grpNum; i++) { + grpName = group[i].getAttribute('name'); + if (grpName === 'Split') { + appendSpaceBlock(toolbarWrapper); + continue; + } + + btn = group[i].getElementsByTagName('Button'); + btnLen = btn.length; + btnNum = 0; btnObj = null; + + for (j = 0; j < btnLen; j++) { + attr = btn[j].getElementsByTagName('Attribute')[0]; + btnName = btn[j].getAttribute('name'); + if (!attr.getAttribute('node') && self.config['use' + btnName] !== true) { + continue; + } + if (attr.getAttribute('type') === 'combobox' && self.config['use' + attr.getAttribute('node')] !== true) { + continue; + } + + btnObj = self.createButton(btnName, attr, btnObj); + self.toolbar[btnObj.name].num = btnNum++; + self.toolbar[btnObj.name].group = grpName; + + if (btn[j].getAttribute('tooltip') !== null) { + btnObj.button.setAttribute('title', btn[j].getAttribute('tooltip')); + } + + if (btnObj.name === 'ForeColor' || btnObj.name === 'BackColor') { + currentColor = document.createElement('div'); + currentColor.className = 'cheditor-tb-color-btn'; + currentColor.style.backgroundColor = attr.getAttribute('default'); + btnObj.button.appendChild(currentColor); + } + toolbarWrapper.appendChild(btnObj.button); + } + + if (btnObj === null) { + continue; + } + + prevObj = btnObj.prev; + + if (!prevObj) { + btnObj.button.className = btnObj.className; + if (btnObj.className === 'cheditor-tb-bg') { + btnObj.className = btnObj.className + '-single'; + btnObj.button.className = btnObj.className; + } + btnObj.pos = self.getToolbarBgPosition(btnObj.button); + } else { + btnObj.className = btnObj.className + '-last'; + btnObj.button.className = btnObj.className; + btnObj.pos = self.getToolbarBgPosition(btnObj.button); + while (prevObj) { + prevObj.button.className = prevObj.className; + prevObj.pos = self.getToolbarBgPosition(prevObj.button); + btnObj = prevObj; + prevObj = prevObj.prev; + } + btnObj.className = btnObj.className + '-first'; + btnObj.button.className = btnObj.className; + btnObj.pos = self.getToolbarBgPosition(btnObj.button); + } + spacer = document.createElement('div'); + spacer.className = 'cheditor-tb-button-spacer'; + toolbarWrapper.appendChild(spacer); + } + + appendSpaceBlock(toolbarWrapper); + + if (GB.browser.msie) { + child = toolbarWrapper.getElementsByTagName('div'); + len = child.length; + for (i = 0; i < len; i++) { + self.unselectionElement(child[i]); + } + self.unselectionElement(toolbarWrapper); + } else { + self.unselectionElement(toolbarWrapper); + } + }, + + unselectionElement : function (elem) { + if (!elem || elem.nodeType !== GB.node.element) { + return; + } + if (GB.browser.msie) { + elem.setAttribute('unselectable', 'on'); + elem.setAttribute('contentEditable', 'false'); + } else { + elem.onselectstart = new Function('return false'); + } + }, + + createEditorElement : function (container, toolbar) { + var child = container.firstChild, + self = this, + i, id, tab, tabId, editArea, done = false, frameEl = false, tryScroll, textContent, node, + + onClickEventHandler = function () { + self.switchEditorMode(this.getAttribute('mode')); + }, + onMouseDownEventHandler = function (evt) { + self.resizeStart(evt); + }, + modeOnMouseDownEventHandler = function (evt) { + self.backupRange(); + self.stopEvent(evt); + }, + + pNode = self.cheditor.textarea.parentNode, + nNode = self.cheditor.textarea.nextSibling; + + if (!child) { + return; + } + + do { + id = child.getAttribute('id'); + switch (id) { + case 'toolbar' : + self.showToolbar(toolbar, child); + self.cheditor.toolbarWrapper = child; + break; + case 'viewMode' : + self.cheditor[id] = child; + self.cheditor.mode = 'rich'; + + if (child.hasChildNodes()) { + tab = child.childNodes; + self.cheditor.modetab = {}; + for (i = 0; i < tab.length; i++) { + tabId = tab[i].getAttribute('id'); + if (!tabId) { + continue; + } + if ((tabId === 'code' && self.config.useSource === false) || + (tabId === 'preview' && self.config.usePreview === false)) { + tab[i].style.display = 'none'; + tab[i].removeAttribute('id'); + continue; + } + + tab[i].setAttribute('mode', tabId); + tab[i].onclick = onClickEventHandler; + tab[i].onmousedown = modeOnMouseDownEventHandler; + tab[i].removeAttribute('id'); + self.cheditor.modetab[tabId] = tab[i]; + self.unselectionElement(tab[i]); + } + } + break; + case 'editWrapper' : + node = child.firstChild; + while (node) { + if (node.nodeName.toLowerCase() === 'iframe') { + editArea = node; + } else if (node.nodeName.toLowerCase() === 'textarea') { + textContent = node; + } + node = node.nextSibling; + } + + editArea.style.height = self.config.editorHeight; + editArea.style.backgroundColor = this.config.editorBgColor; + + self.cheditor.editArea = editArea; + self.cheditor.editWrapper = child; + self.cheditor.textContent = textContent; + break; + case 'modifyBlock' : + self.cheditor.editBlock = child; + break; + case 'tagPath' : + if (self.config.showTagPath) { + self.cheditor.tagPath = child.firstChild; + child.style.display = 'block'; + } + break; + case 'resizeBar' : + self.cheditor.resizeBar = child; + child.onmousedown = onMouseDownEventHandler; + self.unselectionElement(child); + break; + default : break; + } + child.removeAttribute('id'); + child = child.nextSibling; + } while (child); + + if (!nNode) { + pNode.appendChild(container); + } else { + pNode.insertBefore(container, nNode); + } + + function ready() { + if (done) { + return; + } + done = true; + } + + if (GB.browser.msie) { + frameEl = window.frameElement !== null; + if (document.documentElement.doScroll && !frameEl) { + tryScroll = function () { + if (done) { + return; + } + try { + document.documentElement.doScroll('left'); + ready(); + } catch (e) { + setTimeout(tryScroll, 10); + } + }; + tryScroll(); + } + self.addEvent(document, 'readystatechange', function () { + if (document.readyState === 'complete') { + ready(); + } + }); + } else { + self.addEvent(document, 'DOMContentLoaded', function () { + ready(); + }); + } + + container.style.width = self.config.editorWidth; + self.cheditor.container = container; + }, + + loadTemplate : function (xmlDoc) { + var self = this, + tmpl = xmlDoc.getElementsByTagName('Template').item(0), + toolbar = tmpl.getElementsByTagName('Toolbar').item(0), + cdata = tmpl.getElementsByTagName('Container').item(0).getElementsByTagName('Html').item(0), + html = self.getCDATASection(cdata), + tmpDiv = document.createElement('div'), + container, popupWindow, modalFrame, dragHandle; + + if (!(tmpl.getElementsByTagName('Image').item(0).getAttribute('file'))) { + throw '툴바 아이콘 이미지 파일 이름이 정의되지 않았습니다.'; + } + + tmpDiv.innerHTML = html; + + container = tmpDiv.firstChild; + self.createEditorElement(container, toolbar); + + cdata = tmpl.getElementsByTagName('PopupWindow').item(0).getElementsByTagName('Html').item(0); + html = self.getCDATASection(cdata); + tmpDiv.innerHTML = html; + + popupWindow = tmpDiv.firstChild; + self.cheditor.popupElem = popupWindow; + + dragHandle = popupWindow.firstChild; + self.cheditor.dragHandle = dragHandle; + self.cheditor.popupTitle = dragHandle.getElementsByTagName('label')[0]; + self.cheditor.popupFrameWrapper = dragHandle.nextSibling; + + container.appendChild(popupWindow); + + modalFrame = document.createElement('div'); + modalFrame.className = 'cheditor-modalPopupTransparent'; + self.cheditor.modalBackground = modalFrame; + self.cheditor.modalBackground.id = 'popupModalBackground'; + self.cheditor.modalBackground.className = 'cheditor-popupModalBackground'; + container.parentNode.insertBefore(modalFrame, container); + + self.cheditor.htmlEditable = document.createElement('iframe'); + self.cheditor.htmlEditable.style.display = 'none'; + self.cheditor.htmlEditable.style.width = '1px'; + self.cheditor.htmlEditable.style.height = '1px'; + self.cheditor.htmlEditable.style.visibility = 'hidden'; + container.appendChild(self.cheditor.htmlEditable); + }, + + imageEvent : function (img, action) { + var self = this, + onMouseUpEventHandler = function () { + self.cheditor.editBlock.style.display = 'block'; + self.modifyImage(this); + }, + onClickEventHandler = function () { + self.cheditor.editBlock.style.display = 'block'; + self.modifyImage(this); + }; + + if (GB.browser.msie) { + if (!action) { + img.onmouseup = null; + return; + } + (function () { + img.onmouseup = onMouseUpEventHandler; + })(); + } else { + if (!action) { + self.removeEvent(img, 'click', onClickEventHandler); + return; + } + this.addEvent(img, 'click', onClickEventHandler); + } + }, + + setImageEvent : function (action) { + var images = this.doc.images, i, + len = images.length; + + for (i = 0; i < len; i++) { + if (/icons\/em\//.test(images[i].src)) { + continue; + } + this.imageEvent(images[i], action); + } + }, + + run : function () { + var self = this, + showEditor = function () { + var grayImage = null; + + if (!self.resetDoc()) { + return; + } + self.editAreaFocus(); + self.setEditorEvent(); + + if (GB.browser.msie && GB.browser.version > 8 || GB.browser.a) { + grayImage = new Image(); + grayImage.onload = function () { + self.cheditor.toolbarGrayscale = self.makeToolbarGrayscale(this); + self.toolbarUpdate(); + }; + grayImage.src = self.toolbar.icon; + grayImage.style.width = '750px'; grayImage.style.height = '16px'; + } else { + self.cheditor.toolbarGrayscale = null; + self.toolbarUpdate(); + } + self.setImageEvent(true); + self.removeEvent(document, self.cheditor.id, showEditor); + }; + + try { + this.setFolderPath(); + this.checkInputForm(); + } + catch (e) { + alert(e.toString()); + return; + } + + self.setDefaultCss({css: 'ui.css', doc: window.document}); + + if (this.W3CRange) { + this.addEvent(document, this.cheditor.id, showEditor); + } else { + document.documentElement.loadEvent = 0; + document.documentElement.attachEvent('onpropertychange', function (evt) { + if (evt.propertyName === 'loadEvent') { + showEditor(); + } + }); + } + + this.initTemplate(); + }, + + fullScreenMode : function () { + var self = this, + container = self.cheditor.container, + windowSize, height, + child = container.firstChild, + except = 0, + editorHeight = parseInt(self.config.editorHeight, 10), + + containerReSize = function () { + windowSize = self.getWindowSize(); + container.style.width = windowSize.width + 'px'; + if (self.cheditor.mode === 'code') { + self.resizeTextContent(); + height = (windowSize.height - except - 6 - parseInt(self.cheditor.textContent.getAttribute('xbar-height'), 10)); + self.cheditor.textContent.style.height = height + 'px'; + } + self.cheditor.editArea.style.height = (windowSize.height - except - 6) + 'px'; + }, + onMouseDownEventHandler = function (evt) { + self.resizeStart(evt); + }; + + self.editAreaFocus(); + self.boxHideAll(); + self.cheditor.editArea.style.visibility = 'hidden'; + + if (!self.setFullScreenMode) { + container.className = 'cheditor-container-fullscreen'; + + if (GB.browser.msie && GB.browser.version < 7) { + self.cheditor.fullScreenFlag = document.createElement('span'); + self.cheditor.fullScreenFlag.style.display = 'none'; + container.parentNode.insertBefore(self.cheditor.fullScreenFlag, container); + document.body.insertBefore(container, document.body.firstChild); + } + + while (child) { + if (child.className !== 'cheditor-editarea-wrapper' && + child.className !== 'cheditor-popup-window' && + child.className !== '') { + except += child.offsetHeight; + } + child = child.nextSibling; + } + + (function () { + window.onresize = containerReSize; + })(); + + containerReSize(); + self.cheditor.resizeBar.onmousedown = null; + self.cheditor.resizeBar.className = 'cheditor-resizebar-off'; + } else { + window.onresize = null; + container.removeAttribute('style'); + container.className = 'cheditor-container'; + container.style.width = self.config.editorWidth; + + if (self.cheditor.mode === 'code') { + height = editorHeight - parseInt(self.cheditor.textContent.getAttribute('xbar-height'), 10); + self.cheditor.textContent.style.height = height + 'px'; + } else { + self.cheditor.editArea.style.height = editorHeight + 'px'; + } + + (function () { + self.cheditor.resizeBar.onmousedown = onMouseDownEventHandler; + })(); + self.cheditor.resizeBar.className = 'cheditor-resizebar'; + + if (GB.browser.msie && GB.browser.version < 7) { + self.cheditor.fullScreenFlag.parentNode.replaceChild(container, self.cheditor.fullScreenFlag); + } + } + + self.cheditor.editArea.style.visibility = 'visible'; + self.setFullScreenMode = !(self.setFullScreenMode); + self.editAreaFocus(); + }, + + showPulldown : function (cmd, btn) { + switch (cmd) { + case 'FontName' : + this.showFontTypeMenu(btn); + break; + case 'FontSize' : + this.showFontSizeMenu(btn); + break; + case 'FormatBlock' : + this.showFormatBlockMenu(btn); + break; + case 'ForeColor' : + case 'BackColor' : + this.showColorMenu(btn); + break; + case 'TextBlock' : + this.showTextBlockMenu(btn); + break; + case 'LineHeight' : + this.showLineHeightMenu(btn); + break; + case 'OrderedList' : + case 'UnOrderedList' : + this.showOrderedListMenu(btn); + } + }, + + setPulldownClassName : function (labels, pNode) { + var i = 0, label; + for (; i < labels.length; i++) { + label = labels[i]; + if (label.getAttribute('name') === pNode.firstChild.firstChild.firstChild.nodeValue) { + label.parentNode.style.backgroundImage = 'url(' + this.config.editorPath + 'icons/checked.png)'; + label.parentNode.style.backgroundPosition = '0 center'; + label.parentNode.style.backgroundRepeat = 'no-repeat'; + } else { + label.parentNode.style.backgroundImage = ''; + } + label.parentNode.className = 'cheditor-pulldown-mouseout'; + } + }, + + showOrderedListMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var cmd = (menu === 'UnOrderedListCombo') ? 'InsertUnOrderedList' : 'InsertOrderedList', + outputHtml = document.createElement('div'), + onClickEventHandler = function () { + self.doCmdPopup(cmd, this.id, self.toolbar[menu].prev.checked); + }, + onMouseOverEventHandler = function () { + self.pulldownMouseOver(this); + }, + onMouseOutEventHandler = function () { + self.pulldownMouseOut(this); + }, + list = (cmd === 'InsertUnOrderedList') ? GB.listStyle.unOrdered : GB.listStyle.ordered, + i, div, label, li, ol; + + for (i in list) { + if (list.hasOwnProperty(i)) { + div = document.createElement('div'); + label = document.createElement('label'); + div.id = i; + + (function () { + div.onclick = onClickEventHandler; + div.onmouseover = onMouseOverEventHandler; + div.onmouseout = onMouseOutEventHandler; + })(); + + self.pulldownMouseOut(div); + + label.style.fontFamily = 'verdana'; + label.style.textAlign = 'center'; + label.style.width = '15px'; + label.setAttribute('name', i); + + li = document.createElement('li'); + li.appendChild(document.createTextNode(list[i])); + + ol = document.createElement('ul'); + ol.style.width = '90px'; + ol.style.padding = '0 15px'; + ol.style.margin = '0px'; + ol.style.listStyleType = i; + ol.style.cursor = 'default'; + ol.style.textAlign = 'left'; + ol.appendChild(li); + label.appendChild(ol); + div.appendChild(label); + outputHtml.appendChild(div); + } + } + self.createWindow(110, outputHtml); + self.createPulldownFrame(outputHtml, menu); + } + })(); + + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + showColorMenu : function (pNode) { + var menu = pNode.getAttribute('name'), + elem = this.pulldown[menu], + selectedColor = this.colorConvert(pNode.lastChild.style.backgroundColor, 'hex'), + i, len, nodes, node, outputHtml; + + if (!elem) { + outputHtml = this.setColorTable(menu); + this.createWindow(220, outputHtml); + this.createPulldownFrame(outputHtml, menu); + elem = this.pulldown[menu]; + elem.firstChild.className = 'cheditor-pulldown-color-container'; + } + + this.toolbar[menu].colorNode.selectedValue.style.backgroundColor = selectedColor; + this.toolbar[menu].colorNode.colorPicker.hidePicker(); + this.toolbar[menu].colorNode.colorPicker.fromString(selectedColor); + this.toolbar[menu].colorNode.showPicker = false; + + nodes = elem.getElementsByTagName('span'); + len = nodes.length; + + for (i = 0; i < len; i++) { + node = nodes[i]; + node.style.backgroundImage = ''; + if (node.id && node.id.toLowerCase() === selectedColor.toLowerCase()) { + node.style.backgroundImage = 'url("' + this.config.iconPath + '/color_picker_tick.png")'; + node.style.backgroundRepeat = 'no-repeat'; + node.style.backgroundPosition = 'center center'; + + } + } + this.toolbar[menu].colorNode.selectedValue.style.backgroundImage = 'url("' + + this.config.iconPath + '/color_picker_tick.png")'; + this.toolbar[menu].colorNode.selectedValue.style.backgroundRepeat = 'no-repeat'; + this.toolbar[menu].colorNode.selectedValue.style.backgroundPosition = 'center center'; + this.windowPos(pNode, menu); + this.displayWindow(pNode, menu); + }, + + showFontTypeMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var fonts = null, type, i, div, label, + outputHtml = self.doc.createElement('div'), + onClickEventHandler = function () { + self.doCmdPopup(menu, this.id); + }, + onMouseOverEventHandler = function () { + self.pulldownMouseOver(this); + }, + onMouseOutEventHandler = function () { + self.pulldownMouseOut(this); + }; + + for (type in GB.fontName) { + if (GB.fontName.hasOwnProperty(type)) { + fonts = GB.fontName[type]; + for (i = 0; i < fonts.length; i++) { + div = self.doc.createElement('div'); + label = self.doc.createElement('label'); + div.id = fonts[i]; + (function () { + div.onclick = onClickEventHandler; + div.onmouseover = onMouseOverEventHandler; + div.onmouseout = onMouseOutEventHandler; + })(); + label.style.fontFamily = fonts[i];//(type !== 'kr') ? fonts[i] : this.config.editorFontName; + label.appendChild(self.doc.createTextNode(fonts[i])); + label.setAttribute('name', fonts[i]); + div.appendChild(label); + outputHtml.appendChild(div); + } + } + } + self.createWindow(155, outputHtml); + self.createPulldownFrame(outputHtml, menu); + elem = self.pulldown[menu]; + } + })(); + + self.setPulldownClassName(elem.firstChild.getElementsByTagName('LABEL'), pNode); + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + showFormatBlockMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var para, label, fontSize, div, + outputHtml = document.createElement('div'), + onClickEventHandler = function () { + self.doCmdPopup('FormatBlock', '<' + this.id + '>'); + }, + onMouseOverEventHandler = function () { + self.pulldownMouseOver(this); + }, + onMouseOutEventHandler = function () { + self.pulldownMouseOut(this); + }; + + for (para in GB.formatBlock) { + if (GB.formatBlock.hasOwnProperty(para)) { + div = document.createElement('div'); + div.id = para; + (function () { + div.onclick = onClickEventHandler; + div.onmouseover = onMouseOverEventHandler; + div.onmouseout = onMouseOutEventHandler; + })(); + label = document.createElement('label'); + if (para.match(/H[123456]/)) { + fontSize = {'H1': '2em','H2': '1.5em','H3': '1.17em','H4': '1em','H5': '0.83em','H6': '0.75em'}; + label.style.fontWeight = 'bold'; + label.style.fontSize = fontSize[para]; + label.style.lineHeight = 1.4; + } else if (para === 'ADDRESS') { + label.style.fontStyle = 'italic'; + } + + label.appendChild(document.createTextNode(GB.formatBlock[para])); + div.appendChild(label); + label.setAttribute('name', GB.formatBlock[para]); + outputHtml.appendChild(div); + + } + } + self.createWindow(150, outputHtml); + self.createPulldownFrame(outputHtml, menu); + elem = self.pulldown[menu]; + } + })(); + + self.setPulldownClassName(elem.firstChild.getElementsByTagName('label'), pNode); + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + showFontSizeMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var size, div, label, text, i, + value = GB.fontSize[self.config.fontSizeValue], + len = value.length, + outputHtml = document.createElement('div'), + onClickEventHandler = function (e) { + self.stopEvent(e); + self.doCmdPopup(menu, this.id); + }, + onMouseOverEventHandler = function () { + self.pulldownMouseOver(this); + }, + onMouseOutEventHandler = function () { + self.pulldownMouseOut(this); + }; + + for (i = 0; i < len; i++) { + size = value[i]; + div = document.createElement('div'); + label = document.createElement('label'); + text = size > 48 ? '가' : (size > 28 ? '가나다' : '가나다라'); + size = size + self.config.fontSizeValue; + div.id = size; + (function () { + div.onclick = onClickEventHandler; + div.onmouseover = onMouseOverEventHandler; + div.onmouseout = onMouseOutEventHandler; + })(); + div.style.fontSize = size; + label.style.fontFamily = self.config.editorFontName; + label.setAttribute('name', size); + label.appendChild(document.createTextNode(text + '(' + size + ')')); + div.appendChild(label); + outputHtml.appendChild(div); + } + self.createWindow(350, outputHtml); + outputHtml.style.height = '300px'; + outputHtml.style.overflow = 'auto'; + self.createPulldownFrame(outputHtml, menu); + elem = self.pulldown[menu]; + } + })(); + + self.setPulldownClassName(elem.firstChild.getElementsByTagName('LABEL'), pNode); + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + showLineHeightMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var i, div, label, text, + outputHtml = document.createElement('div'), + onClickEventHandler = function () { + self.doCmdPopup('LineHeight', this.id); + }, + onMouseOverEventHandler = function () { + self.pulldownMouseOver(this); + }, + onMouseOutEventHandler = function () { + self.pulldownMouseOut(this); + }; + + for (i in GB.lineHeight) { + if (!(GB.lineHeight.hasOwnProperty(i))) { + continue; + } + if (!GB.lineHeight[i]) { + break; + } + div = document.createElement('div'); + label = document.createElement('label'); + text = i; + + div.id = GB.lineHeight[i]; + (function () { + div.onclick = onClickEventHandler; + div.onmouseover = onMouseOverEventHandler; + div.onmouseout = onMouseOutEventHandler; + })(); + + label.style.fontFamily = self.config.editorFontName; + label.setAttribute('name', GB.lineHeight[i]); + label.appendChild(document.createTextNode(text)); + div.appendChild(label); + outputHtml.appendChild(div); + } + self.createWindow(100, outputHtml); + self.createPulldownFrame(outputHtml, menu); + elem = self.pulldown[menu]; + } + })(); + + self.setPulldownClassName(elem.firstChild.getElementsByTagName('LABEL'), pNode); + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + showTextBlockMenu : function (pNode) { + var self = this, + menu = pNode.getAttribute('name'), + elem = self.pulldown[menu]; + + (function () { + if (!elem) { + var i, wrapper, div, label, + outputHtml = document.createElement('div'), + onClickEventHandler = function () { + self.boxStyle(this); + }, + onMouseOverEventHandler = function () { + this.className = 'cheditor-pulldown-textblock-over'; + }, + onMouseOutEventHandler = function () { + this.className = 'cheditor-pulldown-textblock-out'; + }, + quote = GB.textBlock; + + for (i = 0; i < quote.length; i++) { + wrapper = document.createElement('div'); + div = document.createElement('div'); + (function () { + div.onclick = onClickEventHandler; + wrapper.onmouseover = onMouseOverEventHandler; + wrapper.onmouseout = onMouseOutEventHandler; + })(); + wrapper.className = 'cheditor-pulldown-textblock-out'; + div.id = i; + div.style.border = quote[i][0]; + div.style.backgroundColor = quote[i][1]; + div.style.fontFamily = self.config.editorFontName; + + label = document.createElement('label'); + label.appendChild(document.createTextNode('가나다라 ABC')); + div.appendChild(label); + wrapper.appendChild(div); + outputHtml.appendChild(wrapper); + } + self.createWindow(160, outputHtml); + self.createPulldownFrame(outputHtml, menu); + elem = self.pulldown[menu]; + elem.firstChild.className = 'cheditor-pulldown-textblock-container'; + } + })(); + + self.windowPos(pNode, menu); + self.displayWindow(pNode, menu); + }, + + createPulldownFrame : function (contents, id) { + var div = document.createElement('div'); + div.className = 'cheditor-pulldown-frame'; + div.appendChild(contents); + this.pulldown[id] = div; + this.cheditor.container.firstChild.appendChild(div); + }, + + setDefaultCss : function (ar) { + var cssFile, head, found = false, children, i, href, css; + + ar = ar || {css: 'editarea.css', doc: this.doc}; + cssFile = this.config.cssPath + ar.css; + head = ar.doc.getElementsByTagName('head')[0]; + + if (this.undefined(head)) { + return; + } + + if (head.hasChildNodes()) { + children = head.childNodes; + for (i = 0; i < children.length; i++) { + if (children[i].nodeName.toLowerCase() === 'link') { + href = children[i].getAttribute('href'); + if (href && href === cssFile) { + found = true; + break; + } + } + } + } + + if (!found) { + css = head.appendChild(ar.doc.createElement('link')); + css.setAttribute('type', 'text/css'); + css.setAttribute('rel', 'stylesheet'); + css.setAttribute('media', 'all'); + css.setAttribute('href', this.config.cssPath + ar.css); + } + }, + + setEditorEvent : function () { + var self = this, + onKeyDownEventHandler = function (evt) { + if (self.cheditor.mode === 'preview') { + self.stopEvent(evt); + return; + } + self.doOnKeyDown(evt); + }, + onKeyPressEventHandler = function (evt) { + if (self.cheditor.mode === 'preview') { + self.stopEvent(evt); + return; + } + self.doOnKeyPress(evt); + }, + onKeyUpEventHandler = function (evt) { + if (self.cheditor.mode === 'preview') { + self.stopEvent(evt); + return; + } + self.doOnKeyUp(evt); + }, + onMouseUpEventHandler = function (evt) { + if (self.cheditor.mode === 'rich') { + if (evt.clientX <= self.doc.body.offsetWidth) { + self.doEditorEvent(evt); + } else { + self.restoreRange(); + } + return; + } + if (self.cheditor.mode === 'preview') { + self.stopEvent(evt); + } + }, + onMouseDownEventHandler = function (evt) { + if (self.cheditor.mode === 'rich') { + if (evt.clientX <= self.doc.body.offsetWidth) { + // self.clearSelection(); + } else { + self.backupRange(); + } + self.boxHideAll(); + return; + } + if (self.cheditor.mode === 'preview') { + self.stopEvent(evt); + } + }; + + (function () { + self.addEvent(self.doc, 'keydown', onKeyDownEventHandler); + self.addEvent(self.doc, 'keypress', onKeyPressEventHandler); + self.addEvent(self.doc, 'keyup', onKeyUpEventHandler); + self.addEvent(self.doc, 'mouseup', onMouseUpEventHandler); + self.addEvent(self.doc, 'mousedown', onMouseDownEventHandler); + })(); + }, + + addEvent : function (evTarget, evType, evHandler) { + if (evTarget.addEventListener) { + evTarget.addEventListener(evType, evHandler, false); + } else { + evTarget.attachEvent('on' + evType, evHandler); + } + }, + + removeEvent : function (elem, ev, func) { + if (elem.removeEventListener) { + elem.removeEventListener(ev, func, false); + } else { + elem.detachEvent('on' + ev, func); + } + }, + + stopEvent : function (ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + ev.stopPropagation(); + } else { + ev = ev || window.event; + ev.cancelBubble = true; + ev.returnValue = false; + } + }, + + toolbarButtonOut : function (elemButton, nTop) { + elemButton.style.top = -nTop + 'px'; + }, + + toolbarButtonOver : function (elemButton) { + var nTop = elemButton.style.top.substring(0, elemButton.style.top.length - 2); + elemButton.style.top = nTop - 22 + 'px'; + }, + + getElement : function (elem, tag) { + if (!elem || !tag) { + return null; + } + while (elem && elem.nodeName.toLowerCase() !== tag.toLowerCase()) { + if (elem.nodeName.toLowerCase() === 'body') { + break; + } + elem = elem.parentNode; + } + return elem; + }, + + hyperLink : function (href, target, title) { + var self = this, + links = null, i, + createLinks = function () { + var range = self.restoreRange(), + selectedLinks = [], + linkRange = self.createRange(), selection = null, container = null, k; + + self.backupRange(range); + + if (self.W3CRange) { + self.doc.execCommand("CreateLink", false, href); + selection = self.getSelection(); + + for (i = 0; i < selection.rangeCount; ++i) { + range = selection.getRangeAt(i); + container = range.commonAncestorContainer; + + if (self.getSelectionType(range) === GB.selection.text) { + container = container.parentNode; + } + + if (container.nodeName.toLowerCase() === 'a') { + selectedLinks.push(container); + } else { + links = container.getElementsByTagName('a'); + for (k = 0; k < links.length; ++k) { + linkRange.selectNodeContents(links[k]); + if (linkRange.compareBoundaryPoints(range.END_TO_START, range) < 1 && + linkRange.compareBoundaryPoints(range.START_TO_END, range) > -1) + { + selectedLinks.push(links[k]); + } + } + } + } + linkRange.detach(); + } else { + range = self.doc.selection.createRange(); + range.execCommand("UnLink", false); + range.execCommand("CreateLink", false, href); + + switch (self.getSelectionType(range)) { + case GB.selection.text : + container = range.parentElement(); + break; + case GB.selection.element : + container = range.item(0).parentNode; + break; + default : return null; + } + + if (container.nodeName.toLowerCase() === 'a') { + selectedLinks.push(container); + } else { + links = container.getElementsByTagName('a'); + for (i = 0; i < links.length; ++i) { + linkRange.moveToElementText(links[i]); + if (linkRange.compareEndPoints("StartToEnd", range) > -1 && + linkRange.compareEndPoints("EndToStart", range) < 1) + { + selectedLinks.push(links[i]); + } + } + } + } + return selectedLinks; + }; + + this.editArea.focus(); + links = createLinks(); + if (links) { + for (i = 0; i < links.length; ++i) { + if (target) { + links[i].setAttribute("target", target); + } + if (title) { + links[i].setAttribute("title", title); + } + } + } + }, + + getOffsetBox : function (el) { + var box = el.getBoundingClientRect(), + doc = this.doc.documentElement, + body = this.doc.body, + scrollTop = doc.scrollTop || body.scrollTop, + scrollLeft = doc.scrollLeft || body.scrollLeft, + clientTop = doc.clientTop || body.clientTop || 0, + clientLeft = doc.clientLeft || body.clientLeft || 0, + top = box.top + scrollTop - clientTop, + left = box.left + scrollLeft - clientLeft; + + return { top: Math.round(top), left: Math.round(left) }; + }, + + makeSpacerElement : function () { + var elem, + para = this.doc.createElement('p'); + + if (GB.browser.msie && GB.browser.version < 11 && GB.browser.version > 8) { + elem = this.doc.createComment(this.cheditor.bogusSpacerName); + } else if (GB.browser.msie_c) { + elem = this.createNbspTextNode(); + } else { + elem = this.doc.createElement('br'); + elem.className = this.cheditor.bogusSpacerName; + } + + para.appendChild(elem); + return para; + }, + + boxStyle : function (el) { + var range, elem, ctx, textRange, frag, pNode, + blockQuote = this.doc.createElement('blockquote'), + para = null; + + this.editAreaFocus(); + range = this.range || this.getRange() + + blockQuote.style.border = GB.textBlock[el.id][0]; + blockQuote.style.backgroundColor = GB.textBlock[el.id][1]; + blockQuote.style.padding = '5px 10px'; + + if (!this.W3CRange) { + ctx = range.htmlText; + blockQuote.innerHTML = ctx || ' '; + range.select(); + this.insertHTML(blockQuote); + textRange = this.getRange(); + elem = range.parentElement(); + textRange.moveToElementText(elem); + textRange.collapse(false); + textRange.select(); + } else { + try { + frag = range.extractContents(); + if (!frag.firstChild) { + para = this.makeSpacerElement(); + blockQuote.appendChild(para); + } else { + blockQuote.appendChild(frag); + } + + range.insertNode(blockQuote); + pNode = blockQuote.parentNode; + + while (pNode && pNode.nodeName.toLowerCase() !== 'body') { + if (pNode.nodeName.toLowerCase() === 'p' || pNode.nodeName.toLowerCase() === 'div') { + pNode.parentNode.insertBefore(blockQuote, pNode.nextSibling); + break; + } + pNode = pNode.parentNode; + } + this.placeCaretAt(para || blockQuote, false); + } catch (ignore) { + // -- + } + } + this.boxHideAll(); + }, + + insertFlash : function (elem) { + var embed = null, pos, str, obj, child, movieHeight, params = [], movieWidth, i, + div = this.doc.createElement('div'); + + this.editAreaFocus(); + this.restoreRange(); + + if (typeof elem === 'string') { + elem = this.trimSpace(elem); + pos = elem.toLowerCase().indexOf('embed'); + + if (pos !== -1) { + str = elem.substr(pos); + pos = str.indexOf('>'); + div.innerHTML = '<' + str.substr(0, pos) + '>'; + embed = div.firstChild; + } else { + div.innerHTML = elem; + obj = div.getElementsByTagName('object')[0]; + + if (obj && obj.hasChildNodes()) { + child = obj.firstChild; + movieWidth = (isNaN(obj.width) !== true) ? obj.width : 320; + movieHeight = (isNaN(obj.height) !== true) ? obj.height : 240; + do { + if ((child.nodeName.toLowerCase() === 'param') && + (!this.undefined(child.name) && !this.undefined(child.value))) { + params.push({key: (child.name === 'movie') ? 'src' : child.name, val: child.value}); + } + child = child.nextSibling; + } while (child); + + if (params.length > 0) { + embed = this.doc.createElement('embed'); + embed.setAttribute('width', movieWidth); + embed.setAttribute('height', movieHeight); + for (i = 0; i < params.length; i++) { + embed.setAttribute(params[i].key, params[i].val); + } + embed.setAttribute('type', 'application/x-shockwave-flash'); + } + } + } + + if (embed) { + if (this.W3CRange) { + this.insertNodeAtSelection(embed); + } else { + this.doCmdPaste(embed.outerHTML); + } + } + } + }, + + insertHtmlPopup : function (elem) { + this.editAreaFocus(); + this.restoreRange(); + + if (!this.W3CRange) { + this.doCmdPaste((this.toType(elem) === 'string') ? elem : elem.outerHTML); + } else { + this.insertNodeAtSelection(elem); + } + this.clearStoredSelections(); + }, + + insertHTML : function (html) { + if (!this.W3CRange) { + this.getRange().pasteHTML((this.toType(html) === 'string') ? html : html.outerHTML); + } else { + this.insertNodeAtSelection(html); + } + }, + + placeCaretAt : function (elem, az) { + var range = this.createRange(), + selection = this.getSelection(); + + if (this.undefined(az)) { + az = false; + } + + if (this.W3CRange) { + selection.removeAllRanges(); + try { + if (elem.lastChild && elem.lastChild.nodeName.toLowerCase() === 'br') { + az = true; + } + range.selectNodeContents(elem); + } catch (e) { + range.selectNode(elem); + } + + range.collapse(az); + + try { + selection.addRange(range); + } catch (e) { + this.placeCaretAt(this.doc.body, az); + } + } else if (elem.nodeType === GB.node.element) { + range.moveToElementText(elem); + range.collapse(az); + range.select(); + } + }, + + selectNodeContents : function (node, pos) { + var collapsed = !this.undefined(pos), + selection = this.getSelection(), + range = this.getRange(); + + if (node.nodeType === GB.node.element) { + range.selectNode(node); + if (collapsed) { + range.collapse(pos); + } + } + selection.removeAllRanges(); + selection.addRange(range); + return range; + }, + + insertNodeAtSelection : function (insertNode) { + var range = this.getRange(), + selection = this.getSelection(), + frag = this.doc.createDocumentFragment(), + lastNode = null, + elem, commonAncestorContainer, startOffset, pNode, tmpWrapper; + + if (!range.collapsed) { + range.deleteContents(); + range = this.getRange(); + } + + commonAncestorContainer = range.commonAncestorContainer; + startOffset = range.startOffset; + pNode = commonAncestorContainer; + + if (pNode.nodeType === GB.node.text) { + pNode = pNode.parentNode; + } + + this.removeBogusSpacer(pNode); + + if (typeof insertNode === 'string') { + tmpWrapper = this.doc.createElement('div'); + tmpWrapper.innerHTML = insertNode; + + elem = tmpWrapper.firstChild; + while (elem) { + lastNode = frag.appendChild(elem); + elem = tmpWrapper.firstChild; + } + } else { + lastNode = frag.appendChild(insertNode); + } + + if (startOffset < 1 && commonAncestorContainer.nodeType === GB.node.text) { + commonAncestorContainer.parentNode.insertBefore(frag, commonAncestorContainer); + } else { + range.insertNode(frag); + } + + if (lastNode) { + range = range.cloneRange(); + range.setStartAfter(lastNode); + selection.removeAllRanges(); + selection.addRange(range); + } + this.toolbarUpdate(); + return lastNode; + }, + + findBogusSpacer : function (elem, all) { + var self = this, result = []; + (function findBogusSpacer(elem) { + var i = 0, node; + for (; i < elem.childNodes.length; i++) { + node = elem.childNodes[i]; + if ((node.nodeType === GB.node.element && node.className === self.cheditor.bogusSpacerName) || + (node.nodeType === GB.node.comment && node.nodeValue === self.cheditor.bogusSpacerName)) { + result.push(node); + } + if (node.nodeType === GB.node.text && node.nodeValue === '\u00a0' && !node.nextSibling) { + result.push(node); + } + if (all) { + findBogusSpacer(node); + } + } + })(elem); + return result; + }, + + removeBogusSpacer : function (elem, removeEmpty, all) { + var remove = this.findBogusSpacer(elem, all), i = 0; + for (; i < remove.length; i++) { + remove[i].parentNode.removeChild(remove[i]); + } + if (removeEmpty && !(elem.hasChildNodes())) { + elem.parentNode.removeChild(elem); + } + }, + + ieGetRangeAt : function (range) { + var self = this, start = {}, end = {}; + + function convert(result, bStart) { + var point = range.duplicate(), + span = self.doc.createElement('span'), + parent = point.parentElement(), + cursor = self.createRange(), + compareStr = bStart ? 'StartToStart' : 'StartToEnd'; + + point.collapse(bStart); + parent.appendChild(span); + cursor.moveToElementText(span); + + while (cursor.compareEndPoints(compareStr, point) > 0 && span.previousSibling) { + parent.insertBefore(span, span.previousSibling); + cursor.moveToElementText(span); + } + + result.container = span.nextSibling || span.previousSibling; + if (result.container === null) { + result.container = span.parentNode; + } + parent.removeChild(span); + } + + convert(start, true); convert(end, false); + return { startContainer: start.container, endContainer: end.container }; + }, + + applyLineHeight : function (opt) { + var range = this.getRange(), + isBlockElement = function (elem) { + return GB.lineHeightBlockTags[elem.toLowerCase()]; + }, + getNextLeaf = function (elem, endLeaf, value) { + while (!elem.nextSibling) { + elem = elem.parentNode; + if (!elem) { + return elem; + } + } + + if (elem === endLeaf) { + return elem; + } + + var leaf = elem.nextSibling; + if (isBlockElement(leaf.nodeName)) { + leaf.style.lineHeight = value; + } + + while (leaf.firstChild) { + leaf = leaf.firstChild; + if (leaf.nodeType !== GB.node.text && isBlockElement(leaf.nodeName)) { + leaf.style.lineHeight = value; + } + } + return leaf; + }, + applyBlockElement = function (elem) { + while (elem) { + if (elem.nodeName.toLowerCase() === "body") { + para = self.doc.createElement("p"); + para.style.lineHeight = opt; + + if (elem.firstChild) { + elem.insertBefore(para, elem.firstChild); + } else { + elem.appendChild(para); + break; + } + + nextNode = para.nextSibling; + while (nextNode) { + if (isBlockElement(nextNode.nodeName)) { + break; + } + para.appendChild(nextNode); + nextNode = para.nextSibling; + } + break; + } + + if (isBlockElement(elem.nodeName)) { + elem.style.lineHeight = opt; + break; + } + elem = elem.parentNode; + } + }, + ieRange, startContainer, endContainer, para, nextNode, startLeaf, endLeaf, nextLeaf; + + if (!this.W3CRange) { + ieRange = this.ieGetRangeAt(range); + startContainer = ieRange.startContainer; + endContainer = ieRange.endContainer; + } else { + startContainer = range.startContainer; + endContainer = range.endContainer; + } + + if (!this.doc.body.hasChildNodes() || !startContainer || !endContainer) { + throw "Object Error"; + } + + if (startContainer && startContainer.nodeName.toLowerCase() === "body") { + startContainer = startContainer.firstChild; + } + + try { + if (startContainer === endContainer) { + applyBlockElement(startContainer); + } else { + startLeaf = startContainer; + while (startLeaf) { + if (startLeaf.nodeName.toLowerCase() === "body" || isBlockElement(startLeaf.nodeName)) { + break; + } + startLeaf = startLeaf.parentNode; + } + + endLeaf = endContainer; + while (endLeaf) { + if (endLeaf.nodeName.toLowerCase() === "body" || isBlockElement(endLeaf.nodeName)) { + break; + } + endLeaf = endLeaf.parentNode; + } + + if (startLeaf === endLeaf) { + if (isBlockElement(startLeaf.nodeName)) { + startLeaf.style.lineHeight = opt; + } else { + para = this.doc.createElement("p"); + para.style.lineHeight = opt; + startLeaf.insertBefore(para, startLeaf.firstChild); + + nextNode = para.nextSibling; + while (nextNode) { + if (isBlockElement(nextNode.nodeName)) { + break; + } + para.appendChild(nextNode); + nextNode = para.nextSibling; + } + } + } else { + applyBlockElement(startLeaf); + while (startLeaf) { + nextLeaf = getNextLeaf(startLeaf, endLeaf, opt); + if (startLeaf === endLeaf) { + break; + } + startLeaf = nextLeaf; + } + } + } + } catch (ignore) { + // -- + } + }, + + doInsertImage : function (imgs, para, insertSpace) { + var range, i, count = 0, imgAttr, img, space, lastNode = null, pNode, div, selection, + len = imgs.length, self = this, + fragment = this.doc.createDocumentFragment(); + + function checkPara(pNode) { + var result = true, text; + if (!pNode.hasChildNodes()) { + return false; + } + self.getNodeTree(pNode, function (node) { + if (!node.node || node === pNode) { + return; + } + if (node.type === GB.node.text) { + text = self.trimSpace(node.node.nodeValue); + if (!text || text === '\u00a0') { + result = false; + } + } else if (node.type === GB.node.element + && (node.name === 'br' && node.node.className === self.cheditor.bogusSpacerName)) { + result = false; + } + }); + return result; + } + + this.editAreaFocus(); + range = this.restoreRange(); + pNode = this.getRangeElement(range); + if (!pNode) { + return; + } + + if (pNode.nodeName.toLowerCase() === 'body') { + pNode = this.doc.createElement('p'); + if (this.W3CRange) { + range.insertNode(pNode); + } else { + range.pasteHTML(pNode.outerHTML); + } + } + + if (para) { + do { + if (GB.lineHeightBlockTags[pNode.nodeName.toLowerCase()]) { + break; + } + pNode = pNode.parentNode; + } while (pNode && pNode.nodeName.toLowerCase() !== 'body'); + } + + for (i in imgs) { + if (!imgs.hasOwnProperty(i) || this.undefined(imgs[i])) { + continue; + } + imgAttr = imgs[i]; + img = this.doc.createElement('img'); + img.setAttribute('src', imgAttr.fileUrl); + + if (this.config.imgSetAttrWidth === 1) { + img.style.width = imgAttr.width; + img.style.height = imgAttr.height; + } else if (this.config.imgSetAttrWidth === -1) { + img.style.width = '100%'; + img.style.height = 'auto'; + } + + if (this.config.imgSetAttrAlt) { + img.setAttribute('alt', imgAttr.alt || imgAttr.origName); + } else { + img.removeAttribute('alt'); + } + + count++; + if (para) { + lastNode = fragment.appendChild(this.doc.createElement('p')); + if (imgAttr.align !== 'left') { + lastNode.style.textAlign = imgAttr.align; + } + lastNode.appendChild(img); + if (insertSpace && count < len) { + space = this.makeSpacerElement(); + fragment.appendChild(space); + } + } else { + lastNode = fragment.appendChild(img); + if (insertSpace && count < len) { + fragment.appendChild(this.doc.createTextNode('\u00a0')); + } + } + this.images.push(imgAttr); + } + + if (lastNode) { + if (para) { + if (pNode.nodeName.toLowerCase() === 'p') { + if (!checkPara(pNode)) { + pNode.parentNode.replaceChild(fragment, pNode); + } else { + pNode.parentNode.insertBefore(fragment, pNode.nextSibling); + } + } else { + if (!this.W3CRange) { + div = this.doc.createElement('div'); + div.appendChild(fragment); + range.pasteHTML(div.innerHTML); + } else { + range.insertNode(fragment); + } + } + this.placeCaretAt(lastNode.nextSibling ? lastNode.nextSibling : lastNode, false); + } else { + if (!this.W3CRange) { + div = this.doc.createElement('div'); + div.appendChild(fragment); + range.pasteHTML(div.innerHTML); + } else { + range.deleteContents(); + range.insertNode(fragment); + range.setStartAfter(lastNode); + range.setEndAfter(lastNode); + selection = this.getSelection(); + selection.removeAllRanges(); + selection.addRange(range); + } + } + this.setImageEvent(true); + } + }, + + showTagSelector : function (on) { + if (this.config.showTagPath !== true) { + return; + } + this.cheditor.tagPath.style.display = on ? 'block' : 'none'; + }, + + getTextContentSelectionPos : function (newline) { + var textContent = this.cheditor.textContent, + start, end, docRange, startRange, endRange, textContentLength, normalizedText; + + if (typeof textContent.selectionStart === 'number') { + start = textContent.selectionStart; + end = textContent.selectionEnd; + } else { + textContentLength = textContent.value.length; + normalizedText = textContent.value.replace(/\r\n/g, '\n'); + docRange = document.selection.createRange(); + startRange = textContent.createTextRange(); + endRange = startRange.duplicate(); + endRange.collapse(false); + startRange.moveToBookmark(docRange.getBookmark()); + + if (startRange.compareEndPoints('StartToEnd', endRange) > -1) { + start = end = textContentLength; + } else { + start = -startRange.moveStart('character', -textContentLength); + if (newline) { + start += normalizedText.slice(0, start).split('\n').length - 1; + } + if (startRange.compareEndPoints('EndToEnd', endRange) > -1) { + end = textContentLength; + } else { + end = -startRange.moveEnd('character', -textContentLength); + if (newline) { + end += normalizedText.slice(0, end).split('\n').length - 1; + } + } + } + } + return { startPos: start, endPos: end }; + }, + + removeEmptyBogusTag : function (content) { + if (/^<(p|div)([^>]+?)?>( |\s+?)<\/(p|div)>$/g.test(this.trimSpace(content))) { + return ''; + } + if (/^]+?)?>$/g.test(content)) { + return ''; + } + return content; + }, + + setTextContentSelection : function (startPos, endPos, content) { + var textContent = this.cheditor.textContent, range, top; + + content = this.removeEmptyBogusTag(content); + + if (!content) { + textContent.focus(); + return; + } + if (startPos === 0 && endPos === 0) { + textContent.value = content; + textContent.focus(); + return; + } + textContent.select(); + if (typeof textContent.setSelectionRange === 'function') { + textContent.value = content; + textContent.setSelectionRange(startPos, startPos); + textContent.focus(); + if (this.browser.msie || this.browser.edge) { + setTimeout(function () { + top = textContent.scrollTop; + if (top > 0) { + textContent.scrollTop = top + textContent.clientHeight / 2; + } + textContent.selectionEnd = endPos; + }, 0); + } else { + textContent.selectionEnd = endPos; + } + } else { + range = document.selection.createRange(); + textContent.value = content; + range.moveEnd('character', endPos - content.length); + range.moveStart('character', startPos); + range.select(); + top = textContent.scrollTop; + if (top > 0) { + textContent.scrollTop = top + textContent.clientHeight / 2; + } + } + }, + + richMode : function () { + var char, collapsed, cursor, endNode, endPos, endRange, outputHTML = null, pNode, pos, range, + scrollTop, selection, startNode, startPos, startRange, textContent = null, textContentLength; + + if (this.cheditor.mode === 'code' && typeof this.resizeTextContent !== 'undefined') { + this.cheditor.textContent.focus(); + textContent = this.makeHtmlContent(); + textContentLength = textContent.length; + + pos = this.getTextContentSelectionPos(true); + startPos = pos.startPos; + endPos = pos.endPos; + + collapsed = startPos === endPos; + cursor = startPos; + + if (textContent.charAt(startPos) === '>') { + startPos++; + collapsed = true; + } else { + while (cursor > -1) { + char = textContent.charAt(cursor); + if (char === '&' + && textContent.charAt(cursor + 1) === 'n' && textContent.charAt(cursor + 2) === 'b' + && textContent.charAt(cursor + 3) === 's' && textContent.charAt(cursor + 4) === 'p' + && textContent.charAt(cursor + 5) === ';') + { + startPos = cursor; + collapsed = endPos < (startPos + 6); + break; + } + if (char === '>') { + break; + } + if (char === '<') { + startPos = cursor; + collapsed = true; + break; + } + cursor--; + } + } + + if (!collapsed) { + cursor = endPos; + if (textContent.charAt(endPos - 1) === '<' || + (textContent.charAt(endPos) === '\n' && cursor === textContentLength - 1)) { + endPos = startPos; + } else { + while (cursor < textContentLength) { + char = textContent.charAt(cursor); + if (char === '<') { + break; + } + if (char === '>') { + endPos = startPos; + break; + } + cursor++; + } + } + } else { + endPos = startPos; + } + + if (startPos > 0 && endPos < textContentLength - 1) { + outputHTML = textContent.substring(0, startPos); + outputHTML += ''; + outputHTML += textContent.substring(startPos, endPos); + outputHTML += ''; + outputHTML += textContent.substring(endPos, textContent.length); + textContent = outputHTML; + } + + this.cheditor.textContent.value = ''; + this.removeEvent(window, 'resize', this.resizeTextContent); + this.putContents(this.convertContentsSpacer(textContent)); + } + + this.range = null; + this.cheditor.textContent.blur(); + this.cheditor.textContent.removeAttribute('start-pos'); + this.cheditor.textContent.removeAttribute('end-pos'); + this.cheditor.textContent.style.display = 'none'; + this.cheditor.toolbarWrapper.style.display = ''; + this.cheditor.toolbarWrapper.className = 'cheditor-tb-wrapper'; + this.cheditor.editArea.style.visibility = 'hidden'; + + if (!this.setFullScreenMode) { + this.cheditor.editArea.style.height = this.config.editorHeight; + } + + this.cheditor.editArea.style.display = 'block'; + this.cheditor.editArea.style.visibility = 'visible'; + this.setDesignMode(true); + this.editAreaFocus(); + + if (outputHTML) { + startNode = this.doc.getElementById('startBogusNode'); + endNode = this.doc.getElementById('endBogusNode'); + if (startNode && endNode) { + scrollTop = 0; + pNode = startNode; + if (pNode) { + while (pNode.offsetParent) { + scrollTop += pNode.offsetTop; + pNode = pNode.offsetParent; + } + scrollTop -= this.getWindowSize(this.doc).height / 2; + } + + if (this.doc.compatMode === 'CSS1Compat') { + this.doc.documentElement.scrollTop = scrollTop; + } else { + this.doc.body.scrollTop = scrollTop; + } + + if (this.W3CRange) { + selection = this.clearSelection(); + range = this.createRange(); + range.setStartAfter(startNode); + range.setEndBefore(endNode); + try { + selection.addRange(range); + } catch (ignore) { + // display: none? + } + } else { + startRange = this.createRange(); + endRange = startRange.duplicate(); + startRange.moveToElementText(startNode); + endRange.moveToElementText(endNode); + startRange.setEndPoint('StartToEnd', startRange); + startRange.setEndPoint('EndToEnd', endRange); + startRange.select(); + } + + pNode = startNode.parentNode; + pNode.removeChild(startNode); + pNode = endNode.parentNode; + pNode.removeChild(endNode); + } + } + + this.setImageEvent(true); + this.toolbarUpdate(); + }, + + editMode : function () { + var self = this, + editorWidth, scrollBarWidth, scrollBarHeight, resize, content = null, borderWidth = 1, borderHeight = 1, + startPos, endPos, startNode, endNode, startEndNode, + editorHeight = this.cheditor.editWrapper.offsetHeight, + textContent = this.cheditor.textContent, + startNodeValue = 'startBogusNode', endNodeValue = 'endBogusNode', + startNodeCommentTag = '', endNodeCommentTag = '', + range = this.restoreRange(); + + if (this.cheditor.mode === 'preview') { + if (textContent.getAttribute('start-pos')) { + startPos = parseInt(textContent.getAttribute('start-pos'), 10); + textContent.removeAttribute('start-pos'); + + if (textContent.getAttribute('end-pos')) { + endPos = parseInt(textContent.getAttribute('end-pos'), 10); + textContent.removeAttribute('end-pos'); + } else { + endPos = startPos; + } + content = textContent.value.replace(/\r\n/g, '\n'); + } else { + this.placeCaretAt(this.doc.body.firstChild || this.doc.body, true); + range = this.getRange(); + } + } + + if (!content) { + startEndNode = this.insertStartEndNode(range); + startNode = this.doc.createComment(startNodeValue); + endNode = this.doc.createComment(endNodeValue); + startEndNode.startNode.parentNode.replaceChild(startNode, startEndNode.startNode); + startEndNode.endNode.parentNode.replaceChild(endNode, startEndNode.endNode); + startEndNode.startNode = startNode; + startEndNode.endNode = endNode; + + content = this.getContents(startEndNode); + + startPos = content.search(startNodeCommentTag); + endPos = content.search(endNodeCommentTag); + endPos -= endNodeCommentTag.length + 2; + content = content.replace(startNodeCommentTag, '').replace(endNodeCommentTag, ''); + + } + + this.resetDocumentBody(); + this.cheditor.editArea.style.display = 'none'; + this.cheditor.toolbarWrapper.className = 'cheditor-tb-wrapper-code'; + this.cheditor.editBlock.style.display = 'none'; + + textContent.value = ''; + textContent.style.lineHeight = '17px'; + textContent.style.width = '100px'; + textContent.style.height = '100px'; + textContent.style.display = 'block'; + + scrollBarWidth = textContent.offsetWidth - 100; + scrollBarHeight = textContent.offsetHeight - 100; + if (this.browser.msie && this.browser.version < 8) { + scrollBarHeight += 2; + } + + textContent.setAttribute('xbar-height', scrollBarHeight.toString()); + textContent.setAttribute('ybar-width', scrollBarWidth.toString()); + + resize = textContent.offsetHeight + (editorHeight - textContent.offsetHeight) - scrollBarHeight - borderHeight; + textContent.style.height = resize + 'px'; + + this.resizeTextContent = function () { + editorWidth = self.cheditor.editWrapper.offsetWidth; + resize = textContent.offsetWidth + (editorWidth - textContent.offsetWidth) - scrollBarWidth - borderWidth; + self.cheditor.textContent.style.width = resize + 'px'; + }; + + (function () { + self.addEvent(window, 'resize', self.resizeTextContent); + self.resizeTextContent(); + })(); + + this.setTextContentSelection(startPos, endPos, content); + this.setDesignMode(false); + }, + + makeHtmlContent : function () { + var content = this.trimSpace(this.cheditor.textContent.value); + content = this.trimZeroSpace(content); + return content || '

 

'; + }, + + resetStatusBar : function () { + if (this.config.showTagPath) { + this.cheditor.tagPath.innerHTML = '<html> <body> '; + } + }, + + previewMode : function () { + var content, oSheet, pos = this.getTextContentSelectionPos(false); + + if (this.cheditor.mode === 'code' && typeof this.resizeTextContent !== 'undefined') { + this.cheditor.textContent.setAttribute('start-pos', pos.startPos.toString()); + this.cheditor.textContent.setAttribute('end-pos', pos.endPos.toString()); + content = this.makeHtmlContent(); + this.cheditor.textContent.blur(); + this.cheditor.textContent.style.display = 'none'; + this.removeEvent(window, 'resize', this.resizeTextContent); + this.putContents(content); + } + + this.clearSelection(); + this.cheditor.editBlock.style.display = 'none'; + this.cheditor.toolbarWrapper.className = 'cheditor-tb-wrapper-preview'; + if (!this.setFullScreenMode) { + this.cheditor.editArea.style.height = this.config.editorHeight; + } + this.cheditor.editArea.style.display = 'block'; + + if (GB.browser.msie && parseInt(GB.browser.version, 10) === 8) { + try { + oSheet = this.doc.styleSheets[0]; + oSheet.addRule('p:before', 'content:"\u200b"'); + } catch (ignore) { + // ignore + } + } + this.setImageEvent(false); + this.setDesignMode(false); + }, + + convertContentsSpacer : function (content) { + var self = this, bogusBr = true, + excepted = '<\/span><\/span>', + reSpacer = new RegExp('<([^>]+)>(' + excepted + ')?(?: |\s+?|\u00a0)(' + excepted + ')?<\/([^>]+)>', 'g'); + + if (GB.browser.msie && GB.browser.msie_bogus === false) { + bogusBr = false; + } + content = content.replace(/\s{2,}|[\r\n\t]+?/gm, ''); + content = content.replace(reSpacer, + function (all, open, excepted_a, excepted_b, close) { + var tagName = self.trimSpace(open.split(' ')[0]).toLowerCase(), rdata = null; + if (GB.lineHeightBlockTags[tagName] || GB.textFormatTags[tagName]) { + rdata = '<' + open + '>' + (excepted_a || ''); + rdata += bogusBr ? '
' : + ''; + rdata += (excepted_b || '') + ''; + } + return rdata || all; + } + ); + return content; + }, + + putContents : function (content) { + if (this.config.fullHTMLSource) { + content = content.substr(content.search(/') + 1); + content = '' + content; + this.doc.open(); + this.doc.write('' + content + ''); + this.doc.close(); + } else { + content = 'remove_this' + content; + this.doc.body.innerHTML = content; + this.doc.body.removeChild(this.doc.body.firstChild); + } + }, + + getImages : function () { + var img = this.doc.body.getElementsByTagName('img'), + imgLength = this.images.length, + imgs = [], i, imgId, j; + + for (i = 0; i < img.length; i++) { + if (img[i].src) { + imgId = img[i].src; + imgId = imgId.slice(imgId.lastIndexOf('/') + 1); + for (j = 0; j < imgLength; j++) { + if (this.images[j].fileName === imgId) { + imgs.push(this.images[j]); + break; + } + } + } + } + return imgs.length > 0 ? imgs : null; + }, + + getElementStyle : function (elem) { + return (window.getComputedStyle) ? this.doc.defaultView.getComputedStyle(elem, null) : elem.currentStyle; + }, + + getElementDefaultDisplay : function (elem) { + return (window.getComputedStyle ? this.doc.defaultView.getComputedStyle(elem, null) : elem.currentStyle).display; + }, + + tabRepeat : function (count) { + var i = 0, tab = ''; + if (count < 1) { + return tab; + } + for (; i < count; i++) { + tab += this.cheditor.tabSpaces; + } + return tab; + }, + + htmlEncode : function (text) { + //text = text.replace(/\n{2,}$/g, '\n'); + //text = text.replace(/&/g, '&'); + text = text.replace(//g, '>'); + text = text.replace(/\u00a0/g, ' '); + //text = text.replace(/]+)> <\/font>/mgi, ''); + //text = text.replace(/\x22/g, '"'); + return text; + }, + + checkDocLinks : function () { + var links = this.doc.links, + len = links.length, + host = location.host, + i, href; + + this.cheditor.links = []; + + for (i = 0; i < len; i++) { + if (!this.config.includeHostname) { + href = links[i].href; + if (href.indexOf(host) !== -1) { + links[i].setAttribute('href', href.substring(href.indexOf(host) + host.length)); + } + } + if (this.config.linkTarget !== '' && this.config.linkTarget !== null) { + if (!(links[i].getAttribute('target'))) { + links[i].setAttribute('target', this.config.linkTarget); + } + } + if (GB.browser.msie) { + this.cheditor.links.push(links[i]); + } + } + }, + + checkDocImages : function () { + var img = this.doc.images, + len = img.length, + host = location.host, + i = 0, imgUrl; + + for (; i < len; i++) { + if (!this.config.includeHostname) { + imgUrl = img[i].src; + if (imgUrl) { + if (imgUrl.indexOf(host) !== -1) { + img[i].src = imgUrl.substring(imgUrl.indexOf(host) + host.length); + } + } + } + if (img[i].style.width) { + img[i].removeAttribute('width'); + } + if (img[i].style.height) { + img[i].removeAttribute('height'); + } + } + }, + + createNbspTextNode : function () { + return this.doc.createTextNode('\u00a0'); + }, + + getNodeTree : function (pNode, callback) { + function Node(node) { + this.node = node; + this.name = node.nodeName.toLowerCase(); + this.type = node.nodeType; + this.parent = node.parentNode; + this.indent = 0; + } + (function recurse(cNode, indent) { + var i, child, + node = new Node(cNode), + children = cNode.childNodes, + len = children.length; + + node.indent = indent; + + for (i = 0; i < len; i++) { + child = children[i]; + if (child) { + recurse(child, indent + 1); + } + } + + if (node.name !== 'body') { + callback(node); + } + })(pNode, -1); + }, + + getContents : function (startEndNode) { + var self = this, + mydoc, indentNodes = [], i, node, msie_c = typeof this.browser.msie_c !== 'undefined', + allowedIndent = this.getContents.caller !== this.getBodyContents, + insertTabSpace = function (indent) { + return msie_c ? self.doc.createComment('Tab Size:' + indent) : + self.doc.createTextNode('\n' + self.tabRepeat(indent)); + }; + + function checkChildNodes(child) { + if (!child) { + return null; + } + if (!startEndNode) { + return child; + } + do { + if (child !== startEndNode.startNode && child !== startEndNode.endNode) { + break; + } + child = child.nextSibling; + } while (child); + + return child; + } + + this.checkDocLinks(); + this.checkDocImages(); + this.getNodeTree(this.doc.body, function (node) { + if (!node.node) { + return; + } + if (self.config.exceptedElements[node.name]) { + node.parent.replaceChild(self.doc.createTextNode(''), node.node); + return; + } + + switch (node.type) { + case GB.node.text : + if (!self.isTextVisible(node.node.nodeValue)) { + node.parent.replaceChild(self.doc.createTextNode(''), node.node); + } + break; + case GB.node.element : + if (node.node.className === self.cheditor.bogusSpacerName) { + if (node.node.firstChild === null) { + if (node.name === 'br') { + node.parent.removeChild(node.node); + if (!checkChildNodes(node.parent.firstChild)) { + node.parent.appendChild(self.createNbspTextNode()); + } + } else { + node.node.appendChild(self.createNbspTextNode()); + } + } else if (!checkChildNodes(node.node.firstChild)) { + node.node.appendChild(self.createNbspTextNode()); + } + node.node.className = ''; + } + if ((node.name === 'p' || node.name === 'div') && !checkChildNodes(node.node.firstChild)) { + node.node.appendChild(self.createNbspTextNode()); + } + if (GB.newLineBeforeTags[node.name] && allowedIndent) { + if (node.node.firstChild && (node.node.firstChild.nodeType === GB.node.element)) { + node.node.insertBefore(insertTabSpace(node.indent + 1), node.node.firstChild); + node.node.appendChild(insertTabSpace(node.indent)); + } + indentNodes.push(node); + } + if (GB.selfClosingTags[node.name]) { + node.node.setAttribute('self-close-tag', '1'); + } + break; + case GB.node.comment : + if (node.node.nodeValue === self.cheditor.bogusSpacerName) { + node.parent.removeChild(node.node); + if (!checkChildNodes(node.parent.firstChild)) { + node.parent.appendChild(self.createNbspTextNode()); + } else if (node.parent.firstChild.nodeName.toLowerCase() === 'br') { + node.parent.replaceChild(self.createNbspTextNode(), node.node.firstChild); + } + } + } + }); + + for (i in indentNodes) { + if (indentNodes.hasOwnProperty(i)) { + node = indentNodes[i]; + node.parent.insertBefore(insertTabSpace(node.indent), node.node); + + if (node.node.nextSibling) { + node.node.nextSibling.parentNode.insertBefore(insertTabSpace(node.indent), node.node.nextSibling); + } else { + node.parent.appendChild(insertTabSpace(node.indent)); + } + } + } + + indentNodes = []; + mydoc = this.doc.body.innerHTML; + mydoc = mydoc.replace(/^\s*[\r\n]/gm, '').replace(/\u200b/g, ''); + + if (msie_c) { + mydoc = mydoc.replace(/(?:[\r\n]*)/g, + function (a, b) { + return '\n' + self.tabRepeat(b); + }).replace(/<(\/?)([A-Za-z]+)([^>]*)>/g, + function (a, close, tag, attr) { + attr = attr.replace(/\s(\w+)=([^'"\s>]+)/g, + function (a, k, v) { + return ' ' + k.toLowerCase() + '="' + v + '"'; + }).replace(/([A-Za-z\-]+)(?:\s*):\s+?/g, + function (a, k) { + return k.toLowerCase() + ': '; + }); + return '<' + close + tag.toLowerCase() + attr + '>'; + } + ); + } + + mydoc = mydoc.replace(/<[^>]+>/gm, function (match) { + match = match.replace(/\sself-close-tag="1"([^>]+)?/g, '$1 /'); + + if (self.config.allowedOnEvent !== true) { + match = match.replace(/\s+on([A-Za-z]+)=("[^"]*"|'[^']*'|[^\s>]*)/g, ''); + } + + if (self.config.colorToHex) { + match = match.replace(/(background-color|color)\s*([:=])\s*(rgba?)\(\s*(\d+)\s*,\s*(\d+),\s*(\d+)\)/ig, + function (all, p, s, rgb, r, g, b) { + return p + s + ' ' + self.colorConvert(rgb + '(' + r + ',' + g + ',' + b + ')', 'hex'); + }); + } else { + match = match.replace(/(background-color|color)\s*([:=])\s*(#[A-Fa-f0-9]{3,6})/ig, + function (all, p, s, hex) { + return p + s + ' ' + self.colorConvert(hex, 'rgb'); + }); + } + + return match; + }); + + return mydoc; + }, + + returnContents : function (mydoc) { + mydoc = this.removeEmptyBogusTag(mydoc); + this.setDesignMode(true); + this.cheditor.textarea.value = mydoc; + return mydoc; + }, + + makeAmpTag : function (str) { + return str.replace(/</g, '&lt;').replace(/>/g, '&gt;'); + }, + + removeAmpTag : function (str) { + if (this.config.removeIndent) { + str = str.replace(/^[\t]+/gm, ''); + } + return str.replace (/&lt;/g, '<').replace(/&gt;/g, '>'); + }, + + getOutputContents : function () { + this.resetViewHTML(); + return this.removeAmpTag(this.getContents(null)); + }, + + outputHTML : function () { + return '\n' + + '\n' + + ' \n' + + ' ' + this.config.docTitle + '\n' + + ' \n' + + ' \n' + + this.returnContents(this.getOutputContents()) + + ' \n' + + ''; + }, + + getBodyContents : function () { + return (this.cheditor.mode === 'code') ? this.makeHtmlContent() : this.getContents(null); + }, + + outputBodyHTML : function () { + return this.returnContents(this.getOutputContents()); + }, + + outputBodyText : function () { + return this.returnContents(this.getBodyText()); + }, + + getBodyText : function () { + this.resetViewHTML(); + return this.trimSpace(String(GB.browser.msie ? this.doc.body.innerText : this.doc.body.textContent)); + }, + + returnFalse : function () { + var img = this.doc.images, i; + this.editAreaFocus(); + + for (i = 0; i < img.length; i++) { + if (img[i].src) { + if (img[i].getAttribute('onload')) { + img[i].onload = 'true'; + } + } else { + img[i].removeAttribute('onload'); + img[i].removeAttribute('className'); + } + } + return false; + }, + + trimZeroSpace : function (str) { + return str ? str.replace(/[\ufeff\u200b\xa0\u3000]+/gm, '') : ''; + }, + + trimSpace : function (str) { + return str ? str.replace(/^[\s\ufeff\u200b\xa0\u3000]+|[\s\ufeff\u200b\xa0\u3000]+$/g, '') : ''; + }, + + makeRandomString : function () { + var chars = '_-$@!#0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz', + len = 32, + clen = chars.length, + rData = '', i, rnum; + + for (i = 0; i < len; i++) { + rnum = Math.floor(Math.random() * clen); + rData += chars.substring(rnum, rnum + 1); + } + return rData; + }, + + strLength : function (str) { + var len = str.length, mbytes = 0, i, c; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if (c > 128) { + mbytes++; + } + } + return (len - mbytes) + (mbytes * 2); + }, + + resetViewHTML : function () { + if (this.cheditor.mode === 'code') { + this.switchEditorMode('rich'); + } + }, + + contentsLengthAll : function () { + return this.strLength(this.outputHTML()); + }, + + contentsLength : function () { + var content = String(this.trimSpace(this.outputBodyHTML())); + if (!content) { + return 0; + } + return this.strLength(content); + }, + + inputLength : function () { + var content = this.getBodyText(); + if (content === '') { + return 0; + } + return this.strLength(content); + }, + + displayWindow : function (pNode, id) { + var pullDown = this.pulldown[id]; + this.editAreaFocus(); + this.backupRange(); + this.boxHideAll(id); + pullDown.style.visibility = 'visible'; + pullDown.style.zIndex = 10002; + pullDown.focus(); + }, + + pulldownMouseOver : function (el) { + if (el.className === 'cheditor-pulldown-selected') { + return; + } + el.className = 'cheditor-pulldown-mouseover'; + }, + pulldownMouseOut : function (el) { + if (el.className === 'cheditor-pulldown-selected') { + return; + } + el.className = 'cheditor-pulldown-mouseout'; + }, + + windowPos : function (pNode, id) { + var left = pNode.offsetLeft, box = this.pulldown[id]; + + if (this.toolbar[id].type === 'combobox') { + left -= parseInt(this.toolbar[this.toolbar[id].node].width, 10); + } + if (this.toolbar[id].prev && !this.toolbar[id].next) { + left -= 1; + } + box.style.left = left + 'px'; + box.style.top = pNode.offsetTop + parseInt(pNode.style.height, 10) + 'px'; + }, + + boxHideAll : function (showId) { + var menu, box, ishide; + for (menu in this.pulldown) { + if (this.pulldown.hasOwnProperty(menu)) { + box = this.pulldown[menu]; + if (box) { + box.style.visibility = 'hidden'; + ishide = this.undefined(showId) ? true : (menu !== showId); + if (ishide && this.toolbar[menu].checked) { + this.toolbar[menu].checked = false; + this.toolbarButtonUnchecked(this.toolbar[menu]); + } + } + } + } + this.editAreaFocus(); + }, + + createWindow : function (width, elem) { + elem.className = 'cheditor-pulldown-container'; + elem.style.width = width + 'px'; + }, + + setColorTable : function (menu) { + var self = this, + pulldown = document.createElement('div'), + len = GB.colors.length, + container = document.createElement('div'), + selected = document.createElement('input'), + selectedValue = document.createElement('input'), + cellWrapper = document.createElement('div'), + br = document.createElement('div'), + reset = document.createElement('span'), + pickerSwitch = document.createElement('span'), + button = document.createElement('img'), + showTooltip = '더 많은 색 보기', + hideTooltip = '감추기', + i, cell, color = 0, colorPicker, cellBorder, + onMouseOverEventHandler = function () { + colorPicker.fromString(this.id); + this.parentNode.className = 'cheditor-pulldown-color-cell-over'; + }, + onMouseOutEventHandler = function () { + this.parentNode.className = 'cheditor-pulldown-color-cell'; + }, + onClickEventHandler = function () { + self.doCmdPopup(menu, this.id); + }, + onResetEventHandler = function () { + colorPicker.fromString(self.colorConvert(selectedValue.style.backgroundColor, 'hex')); + }, + onPickerEventHandler = function () { + if (self.toolbar[menu].colorNode.showPicker) { + colorPicker.hidePicker(); + self.toolbar[menu].colorNode.showPicker = false; + pickerSwitch.setAttribute('title', showTooltip); + } else { + colorPicker.showPicker(); + self.toolbar[menu].colorNode.showPicker = true; + pickerSwitch.setAttribute('title', hideTooltip); + } + }, + onSubmitEventHandler = function () { + self.doCmdPopup(menu, selected.value); + }; + + selected.setAttribute('type', 'text'); + selected.setAttribute('maxlength', '7'); + selected.className = 'cheditor-pulldown-color-selected'; + + selectedValue.setAttribute('type', 'text'); + selectedValue.onfocus = function () { + selected.focus(); + }; + + selectedValue.style.cursor = 'default'; + selectedValue.className = 'cheditor-pulldown-color-selected'; + selected.style.marginLeft = '-1px'; + selected.style.borderLeft = 'none'; + selected.spellcheck = false; + + cellWrapper.style.margin = '2px'; + cellWrapper.style.position = 'relative'; + container.style.position = 'relative'; + + br.style.clear = 'both'; + br.style.height = '0px'; + colorPicker = new GB.colorDropper(selected, {'iconDir': this.config.iconPath}); + + for (i = 0; i < len; i++) { + if (i % 13 === 0) { + cellWrapper.appendChild(br.cloneNode(true)); + if (i === 26) { + cellWrapper.lastChild.style.height = '4px'; + } + len++; + continue; + } + cellBorder = document.createElement('span'); + cellBorder.className = 'cheditor-pulldown-color-cell'; + cell = document.createElement('span'); + cell.id = GB.colors[color]; + cell.style.backgroundColor = GB.colors[color++]; + cell.appendChild(document.createTextNode('\u00a0')); + cellBorder.appendChild(cell); + cellWrapper.appendChild(cellBorder); + (function () { + cell.onclick = onClickEventHandler; + cell.onmouseover = onMouseOverEventHandler; + cell.onmouseout = onMouseOutEventHandler; + })(); + } + + cellWrapper.appendChild(br); + cellWrapper.appendChild(selectedValue); + cellWrapper.appendChild(selected); + + reset.appendChild(document.createTextNode('\u00a0')); + reset.className = 'cheditor-pulldown-color-reset'; + reset.onclick = onResetEventHandler; + + cellWrapper.appendChild(reset); + + pickerSwitch.appendChild(document.createTextNode('\u00a0')); + pickerSwitch.className = 'cheditor-pulldown-color-show-picker'; + pickerSwitch.setAttribute('title', showTooltip); + pickerSwitch.onclick = onPickerEventHandler; + cellWrapper.appendChild(pickerSwitch); + + button.className = 'cheditor-pulldown-color-submit'; + button.src = this.config.iconPath + 'button/input_color.gif'; + button.onclick = onSubmitEventHandler; + cellWrapper.appendChild(button); + container.appendChild(cellWrapper); + + self.toolbar[menu].colorNode.selectedValue = selectedValue; + self.toolbar[menu].colorNode.colorPicker = colorPicker; + + pulldown.appendChild(container); + return pulldown; + }, + + onKeyPressToolbarUpdate : function () { + var self = this; + if (this.tempTimer) { + clearTimeout(this.tempTimer); + } + this.tempTimer = setTimeout(function () { + if (self.config.showTagPath) { + self.doEditorEvent(); + } else { + self.toolbarUpdate(); + } + self.tempTimer = null; + }, 50); + }, + + doOnKeyDown : function (evt) { + switch (evt.keyCode) { + case 37: case 38: case 39: case 40: case 46: case 8: + this.onKeyPressToolbarUpdate(evt); + } + }, + + doOnKeyUp : function (evt) { + var caretRange, css, enterNode, i, keyCode = evt.keyCode, node, self = this, storedNode, storedRange, + clearBackgroundColor = function (cNode) { + if (cNode.nodeType !== GB.node.element || cNode.hasChildNodes() || !cNode.getAttribute('style')) { + return cNode; + } + if (GB.textFormatTags[cNode.nodeName.toLowerCase()]) { + css = self.checkCssValue(cNode, 'background-color'); + if (css) { + css = self.clearCss(cNode, 'background-color'); + if (cNode.nodeName.toLowerCase() === 'span' && !css) { + node = cNode.parentNode; + node.removeChild(cNode); + return node; + } + } + } + return cNode; + }; + + if (keyCode !== 13 || this.cheditor.mode !== 'rich') { + return; + } + + if (typeof GB.browser.msie_c !== 'undefined') { + node = this.storedSelections[0]; + if (!node) { + return; + } + if (node.className === this.cheditor.bogusSpacerName) { + node.className = ''; + } + while (node.firstChild) { + node = node.firstChild; + } + if (node.nodeType === GB.node.element && node.canHaveChildren) { + node.className = this.cheditor.bogusSpacerName; + } + return; + } + + caretRange = this.getRange(); + enterNode = caretRange.commonAncestorContainer; + + if (GB.browser.msie || GB.browser.edge) { + this.backupRange(caretRange); + if (enterNode.nodeType === GB.node.element) { + enterNode = clearBackgroundColor(enterNode); + enterNode.className = this.cheditor.bogusSpacerName; + } + for (i = 0; i < this.keyPressStoredSelections.length; i++) { + storedRange = this.keyPressStoredSelections[i]; + storedNode = storedRange.commonAncestorContainer; + if (storedNode && storedNode.nodeType === GB.node.element) { + node = storedNode.childNodes[storedRange.startOffset]; + if (!node) { + break; + } + while (node.firstChild) { + node = node.firstChild; + } + node = clearBackgroundColor(node); + node.className = this.cheditor.bogusSpacerName; + } + } + this.restoreRange(); + this.keyPressStoredSelections = []; + } else { + this.applyBogusClassName(caretRange); + } + }, + + doOnKeyPress : function (evt) { + var keyCode = evt.keyCode, caretRange; + if (keyCode && keyCode === 13 && this.cheditor.mode === 'rich') { + caretRange = this.getRange(); + if (typeof this.browser.msie_c !== 'undefined') { + try { + this.storedSelections[0] = caretRange.parentElement(); + } catch (e) { + this.keyPressBackupRange(); + } + } else if (GB.browser.msie || GB.browser.edge) { + this.keyPressBackupRange(); + } else { + this.applyBogusClassName(caretRange); + } + } + }, + + applyBogusClassName : function (range) { + var node = range.commonAncestorContainer; + if (range.startOffset < 1 && (!node.lastChild || node.lastChild.nodeName.toLowerCase() !== 'br')) { + do { + if (node.parentNode.nodeName.toLowerCase() === 'body') { + break; + } + node = node.parentNode; + } while (GB.textFormatTags[node.nodeName.toLowerCase()]); + + node = node.previousSibling; + if (node) { + while (node.firstChild) { + node = node.firstChild; + } + if (node.nodeType === GB.node.element && node.nodeName.toLowerCase() === 'br') { + node.className = this.cheditor.bogusSpacerName; + } + } + } else { + if (!node || node.nodeType !== GB.node.element) { + return; + } + if (node.lastChild + && node.lastChild.nodeName.toLowerCase() === 'br' + && node.lastChild.className !== this.cheditor.bogusSpacerName) + { + node.lastChild.className = this.cheditor.bogusSpacerName; + } + } + }, + + setWinPosition : function (oWin, popupAttr, windowSize) { + oWin.style.width = popupAttr.width + 'px'; + oWin.style.left = Math.round(((this.cheditor.editArea.clientWidth - popupAttr.width) / 2) + + windowSize.offsetLeft) + 'px'; + oWin.style.top = Math.round(windowSize.offsetTop) + 'px'; + }, + + getWindowSize : function (doc) { + var mydoc = doc || document, + docMode = mydoc.compatMode === 'CSS1Compat', + docBody = mydoc.body, + docElem = mydoc.documentElement, + factor, rect, physicalWidth, logicalWidth, + editAreaRect, + rData = { + width: docMode ? docElem.clientWidth : docBody.clientWidth, + height: docMode ? docElem.clientHeight : docBody.clientHeight, + scrollHeight: docMode ? docElem.scrollHeight : docBody.scrollHeight, + scrollWidth: docMode ? docElem.scrollWidth : docBody.scrollWidth + }; + + if (this.undefined(window.pageXOffset)) { + factor = 1; + if (docBody.getBoundingClientRect) { + rect = docBody.getBoundingClientRect(); + physicalWidth = rect.right - rect.left; + logicalWidth = mydoc.body.offsetWidth; + factor = Math.round ((physicalWidth / logicalWidth) * 100) / 100; + } + rData.scrollY = Math.round(docElem.scrollTop / factor); + rData.scrollX = Math.round(docElem.scrollLeft / factor); + } else { + rData.scrollY = window.pageYOffset; + rData.scrollX = window.pageXOffset; + } + + editAreaRect = this.cheditor.editArea.getBoundingClientRect(); + rData.clientTop = docElem.clientTop || docBody.clientTop || 0; + rData.clientLeft = docElem.clientLeft || docBody.clientLeft || 0; + rData.offsetTop = rData.scrollY + (rData.height / 2); + rData.offsetLeft = editAreaRect.left + rData.scrollX - rData.clientLeft; + return rData; + }, + + popupWinLoad : function (popupAttr) { + var self = this, + windowSize = self.getWindowSize(), + iframe = document.createElement('iframe'), + body = document.getElementsByTagName('body')[0], + done = false, + + popWinResizeHeight = function (evt) { + iframe.contentWindow.focus(); + iframe.contentWindow.init.call(self, iframe, popupAttr.argv || null); + + if (self.cheditor.popupElem.style.visibility !== 'visible') { + self.cheditor.popupElem.style.top = Math.ceil(parseInt(self.cheditor.popupElem.style.top, 10) - + Math.ceil(self.cheditor.popupElem.clientHeight / 2)) + 'px'; + self.cheditor.popupElem.style.visibility = 'visible'; + } + + self.stopEvent(evt); + }, + modalResize = function () { + self.cheditor.modalBackground.style.height = (windowSize.scrollHeight > windowSize.height) ? + windowSize.scrollHeight : windowSize.height + 'px'; + + if (window.scrollWidth > window.width) { + self.cheditor.modalBackground.style.width = windowSize.width + + (windowSize.scrollWidth - windowSize.width) + 'px'; + } else { + self.cheditor.modalBackground.style.width = windowSize.width + 'px'; + } + self.cheditor.modalBackground.style.left = windowSize.scrollX + 'px'; + }, + onReadyStateChangeEventHandler = function (evt) { + if (!done && (!this.readyState || this.readyState === 'complete' || this.readyState === 'loaded')) { + popWinResizeHeight(evt); + done = true; + } + }; + + if (self.cheditor.popupTitle.hasChildNodes()) { + self.cheditor.popupTitle.removeChild(self.cheditor.popupTitle.firstChild); + } + + if (self.cheditor.popupFrameWrapper.hasChildNodes()) { + self.cheditor.popupFrameWrapper.removeChild(self.cheditor.popupFrameWrapper.firstChild); + } + + self.cheditor.popupTitle.appendChild(document.createTextNode(popupAttr.title)); + self.cheditor.popupElem.style.zIndex = self.modalElementZIndex + 1; + self.setWinPosition(self.cheditor.popupElem, popupAttr, windowSize); + + iframe.setAttribute('frameBorder', '0'); + iframe.setAttribute('height', '0'); + iframe.setAttribute('width', String(popupAttr.width - 22)); + iframe.setAttribute('name', popupAttr.tmpl); + iframe.setAttribute('src', self.config.popupPath + popupAttr.tmpl); + iframe.id = popupAttr.tmpl; + + self.cheditor.modalBackground.style.zIndex = self.modalElementZIndex; + body.insertBefore(self.cheditor.modalBackground, body.firstChild); + body.insertBefore(self.cheditor.popupElem, body.firstChild); + + self.cheditor.popupFrameWrapper.appendChild(iframe); + self.cheditor.popupElem.style.visibility = 'hidden'; + self.cheditor.popupElem.style.display = 'block'; + self.cheditor.modalBackground.style.display = 'block'; + GB.dragWindow.init(self.cheditor.dragHandle, self.cheditor.popupElem); + + (function () { + if (GB.browser.msie && !(self.undefined(iframe.onreadystatechange))) { + iframe.onreadystatechange = onReadyStateChangeEventHandler; + } else { + iframe.onload = popWinResizeHeight; + } + + if (GB.browser.msie && GB.browser.version < 9) { + window.onresize = function () { + windowSize = self.getWindowSize(); + modalResize(); + }; + modalResize(); + self.cheditor.modalBackground.style.filter = 'alpha(opacity=50)'; + self.cheditor.modalBackground.style.opacity = 0.5; + } else { + self.cheditor.modalBackground.style.opacity = 0.5; + } + self.cheditor.modalBackground.focus(); + })(); + }, + + popupWinCancel : function () { + this.restoreRange(); + this.popupWinClose(); + }, + + popupWinClose : function () { + if (!this.cheditor.popupElem) { + return; + } + this.cheditor.popupElem.style.display = 'none'; + this.cheditor.popupElem.style.zIndex = -1; + this.cheditor.popupFrameWrapper.src = ''; + + if (this.cheditor.popupFrameWrapper.hasChildNodes()) { + this.cheditor.popupFrameWrapper.removeChild(this.cheditor.popupFrameWrapper.firstChild); + } + + this.cheditor.modalBackground.style.display = 'none'; + this.cheditor.modalBackground.style.zIndex = -1; + + if (this.modalReSize !== null) { + if (GB.browser.opera) { + window.removeEventListener('resize', this.modaReSize, false); + } + this.modalReSize = null; + } + this.editAreaFocus(); + }, + + clearStoredSelections : function () { + this.storedSelections.splice(0, this.storedSelections.length); + }, + + restoreRange : function () { + var range = null, selection = null; + if (this.storedSelections[0]) { + if (this.W3CRange) { + selection = this.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + selection.addRange(this.storedSelections[0]); + range = selection.getRangeAt(0); + } else { + range = this.createRange(); + if (this.storedSelections[0]) { + if (typeof this.storedSelections[0] === 'string') { + range.moveToBookmark(this.storedSelections[0]); + } else { + range = this.storedSelections[0]; + } + } + range.select(); + } + } + return range; + }, + + keyPressBackupRange : function (range) { + var selection = null, i; + if (this.W3CRange) { + selection = this.getSelection(); + if (selection) { + for (i = 0; i < selection.rangeCount; i++) { + this.keyPressStoredSelections.push(selection.getRangeAt(i)); + } + } + } else { + range = range || this.getRange(); + switch (this.getSelectionType()) { + case GB.selection.none: + case GB.selection.text: + this.storedSelections[0] = range.getBookmark(); + break; + case GB.selection.element: + this.storedSelections[0] = range; + break; + default: + this.storedSelections[0] = null; + } + } + }, + + backupRange : function (range) { + var selection = null; + if (this.W3CRange) { + selection = this.getSelection(); + if (selection && selection.rangeCount > 0) { + this.storedSelections[0] = selection.getRangeAt(0); + } + } else { + range = range || this.getRange(); + switch (this.getSelectionType()) { + case GB.selection.none: + case GB.selection.text: + this.storedSelections[0] = range.getBookmark(); + break; + case GB.selection.element: + this.storedSelections[0] = range; + break; + default: + this.storedSelections[0] = null; + } + } + }, + + getSelection : function () { + return this.W3CRange ? this.editArea.getSelection() : this.doc.selection; + }, + + clearSelection : function () { + var sel = this.getSelection(); + if (!sel) { + return; + } + if (this.W3CRange) { + sel.removeAllRanges(); + } else { + sel.empty(); + } + return sel; + }, + + getRange : function () { + var selection = this.getSelection(), range = null; + if (this.W3CRange) { + if (selection.getRangeAt) { + range = selection.rangeCount ? selection.getRangeAt(0) : this.doc.createRange(); + } else { + range = this.doc.createRange(); + range.setStart(selection.anchorNode, selection.anchorOffset); + range.setEnd(selection.focusNode, selection.focusOffset); + if (range.collapsed !== selection.isCollapsed) { + range.setStart(selection.focusNode, selection.focusOffset); + range.setEnd(selection.anchorNode, selection.anchorOffset); + } + } + } else { + range = selection.createRange ? selection.createRange() : this.doc.createRange(); + if (!range) { + range = this.doc.body.createTextRange(); + } + } + this.range = range; + return range; + }, + + createRange : function () { + return this.W3CRange ? this.doc.createRange() : this.doc.body.createTextRange(); + }, + + rangeCollapsed : function (range) { + return this.W3CRange ? + range.collapsed : + (!this.undefined(range.text) && range.text.length === 0 && range.boundingWidth === 0); + }, + + getRangeElement : function (range) { + return this.W3CRange ? this.getW3CRangeElement(range) : this.getIeRangeElement(range); + }, + + getIeRangeElement : function (range) { + var sType = this.getSelectionType(), + node; + + if (!range) { + range = this.createRange(); + } + + switch (sType) { + case GB.selection.text : + node = range.parentElement(); + break; + case GB.selection.element : + node = range.item(0); + break; + case GB.selection.none : + if (!this.undefined(range.parentElement)) { + node = range.parentElement(); + } else { + node = range.item(0); + } + } + return node; + }, + + getW3CRangeElement : function (range) { + var ancestorContainer = range.commonAncestorContainer, + startContainer = range.startContainer, + startOffset = range.startOffset, + endContainer = range.endContainer, + endOffset = range.endOffset, + docFragment = null, node = startContainer; + + if (GB.browser.msie || GB.browser.edge) { + if (!range.collapsed && ancestorContainer.nodeType === GB.node.element) { + if (ancestorContainer === endContainer) { + node = ancestorContainer.childNodes[endOffset - 1]; + } else if (ancestorContainer === startContainer) { + node = ancestorContainer.childNodes[startOffset]; + } else { + docFragment = range.cloneContents(); + node = (docFragment.childNodes.length === 1) ? startContainer.nextSibling : ancestorContainer; + } + } + } else { + if (!range.collapsed + && startContainer.nodeType === GB.node.element + && startContainer === endContainer + && endOffset - startOffset === 1 + && startContainer.hasChildNodes()) + { + node = startContainer.childNodes[startOffset]; + } + } + + if (node.nodeType === GB.node.text) { + node = node.parentNode; + } + return node; + }, + + getSelectionType : function () { + var selection = this.getSelection(), type; + + if (this.W3CRange) { + if (!selection) { + type = GB.selection.none; + } else if (selection.rangeCount && !selection.isCollapsed && !selection.toString()) { + type = GB.selection.element; + } else { + type = GB.selection.text; + } + } else { + switch (selection.type) { + case 'Text' : type = GB.selection.text; break; + case 'Control' : type = GB.selection.element; break; + default : type = GB.selection.none; + } + if (selection.createRange().parentElement) { + type = GB.selection.text; + } + } + return type; + }, + + windowOpen : function (popupName) { + this.editAreaFocus(); + this.boxHideAll(); + this.backupRange(); + if (!(this.undefined(GB.popupWindow[popupName]))) { + var popup = GB.popupWindow[popupName]; + if (popupName === 'ImageUpload' && window.File && window.FileReader && window.FileList && window.Blob) { + popup.tmpl = 'image.html5.html'; + } + this.popupWinLoad(popup); + } else { + alert('사용할 수 없는 명령입니다.'); + } + }, + + doCmd : function (cmd, opt) { + var self = this, range = this.range, + i, keyboard = '', command = '', pNode, node, tmpframe, tmpdoc, html, content, + hr, newHr, para, next = null, nNode, tagName, style, id, hRule, nodeType, css, found = false, + isEmpty = false, selectionType, selection, nodeRange, + cleanPaste = function () { + self.editAreaFocus(); + var tmpDoc = self.cheditor.tmpdoc; + tmpDoc.execCommand('SelectAll'); + tmpDoc.execCommand('Paste'); + return self.cleanFromWord(tmpDoc); + }, + isTextVisible = function (elem) { + return (!(elem.firstChild.nodeType === GB.node.text && elem.firstChild === elem.lastChild && + elem.firstChild.nodeValue === '')); + }; + + this.editAreaFocus(); + this.boxHideAll(); + + if (!range) { + return; + } + + if (cmd === 'NewDocument') { + if (confirm('글 내용이 모두 사라집니다. 계속하시겠습니까?')) { + this.doc.body.innerHTML = ''; + } + this.images = []; + this.editImages = {}; + this.editAreaFocus(); + this.toolbarUpdate(); + this.initDefaultParagraphSeparator(); + return; + } + + if (cmd === 'ClearTag') { + if (confirm('모든 HTML 태그를 삭제합니다. 계속하시겠습니까?\n(P, DIV, BR 태그와 텍스트는 삭제하지 않습니다.)')) { + content = this.doc.body.innerHTML; + this.doc.body.innerHTML = content.replace(/<(\/?)([^>]*)>/g, + function (a, b, c) { + var el = c.toLowerCase().split(/ /)[0]; + if (el !== 'p' && el !== 'div' && el !== 'br') { + return ''; + } + return '<' + b + el + '>'; + }); + } + this.editAreaFocus(); + this.toolbarUpdate(); + return; + } + + if (cmd === 'Print') { + this.editArea.print(); + return; + } + + if (cmd === 'PageBreak') { + this.printPageBreak(); + this.editAreaFocus(); + return; + } + + selectionType = this.getSelectionType(); + if (this.W3CRange || selectionType === GB.selection.none) { + range = this.doc; + } + + if (!GB.browser.msie && (cmd === 'Cut' || cmd === 'Copy' || cmd === 'Paste')) { + if ((range.execCommand(cmd, false, opt)) !== true) { + switch (cmd) { + case 'Cut' : keyboard = 'x'; command = '자르기'; break; + case 'Copy' : keyboard = 'c'; command = '복사'; break; + case 'Paste': keyboard = 'v'; command = '붙이기'; break; + } + alert('사용하고 계신 브라우저는 보안 상의 이유로 \'' + command + '\' 명령을 사용하실 수 없습니다. \n\n' + + '키보드 단축키를 이용하여 주십시오.\n단축키: Windows: Ctrl+' + keyboard + ', Mac OS X: Command+' + keyboard); + this.editAreaFocus(); + + } + return; + } + + try { + if (cmd === 'PasteFromWord') { + if (this.undefined(this.cheditor.tmpdoc)) { + tmpframe = this.doc.createElement('iframe'); + tmpframe.setAttribute('contentEditable', 'true'); + tmpframe.style.visibility = 'hidden'; + tmpframe.style.height = tmpframe.style.width = '0px'; + tmpframe.setAttribute('frameBorder', '0'); + this.cheditor.editWrapper.appendChild(tmpframe); + + tmpdoc = tmpframe.contentWindow.document; + tmpdoc.designMode = 'On'; + tmpdoc.open(); + tmpdoc.close(); + this.cheditor.tmpdoc = tmpdoc; + } + + if (this.W3CRange) { + html = cleanPaste(); + // range = this.restoreRange(); + this.insertNodeAtSelection(html); + } else { + range = this.getRange(); + range.pasteHTML(cleanPaste()); + range.select(); + } + } else if (cmd === 'Paste') { + this.cheditor.paste = 'text'; + this.handlePaste(null); + this.cheditor.paste = 'html'; + } else if (cmd === 'InsertHorizontalRule') { + hr = this.doc.createElement('hr'); + hr.style.height = '1px'; + hr.style.backgroundColor = '#999'; + hr.style.border = 'none'; + + this.unselectionElement(hr); + range = this.getRange(); + + if (this.W3CRange) { + range.insertNode(hr); + } else { + nodeType = this.getSelectionType(); + id = this.makeRandomString(); + range.execCommand('InsertHorizontalRule', false, id); + switch (nodeType) { + case GB.selection.none : + case GB.selection.text : + node = range.parentElement(); + break; + case GB.selection.element : + node = range.item(0); + break; + default : + return; + } + newHr = this.$(id); + newHr.parentNode.replaceChild(hr, newHr); + } + + hRule = hr; + pNode = hRule.parentNode; + para = this.makeSpacerElement(); + + while (pNode && GB.textFormatTags[pNode.nodeName.toLowerCase()]) { + pNode = pNode.parentNode; + } + + tagName = pNode.tagName.toLowerCase(); + if (GB.textFormatBlockTags[tagName]) { + if (hr.nextSibling) { + next = this.doc.createElement(tagName); + pNode.parentNode.insertBefore(next, pNode.nextSibling); + while (hr.nextSibling) { + if (hr.nextSibling.nodeType === GB.node.text && hr.nextSibling.nodeValue === '') { + hr = hr.nextSibling; + continue; + } + if (hr.nextSibling.parentNode !== pNode) { + node = hr.nextSibling.parentNode; + while (node !== pNode && GB.textFormatTags[node.nodeName.toLowerCase()]) { + nNode = this.doc.createElement(node.nodeName); + style = this.getCssValue(node); + if (style) { + for (i = 0; i < style.length; i++) { + nNode.style[style[i].name] = style[i].value; + } + } + if (next.hasChildNodes() === false) { + next.appendChild(nNode); + while (hr.nextSibling) { + nNode.appendChild(hr.nextSibling); + } + } else { + next.appendChild(nNode); + nNode.appendChild(next.firstChild); + } + node = node.parentNode; + } + } else { + next.appendChild(hr.nextSibling); + } + } + } + node = hr.parentNode; + pNode.parentNode.insertBefore(hRule, pNode.nextSibling); + + while (node && node !== pNode) { + if (node.hasChildNodes() === false || (isTextVisible(node)) === false) { + nNode = node.parentNode; + node.parentNode.removeChild(node); + node = nNode; + continue; + } + node = node.parentNode; + } + + if (pNode.hasChildNodes() === false || (isTextVisible(pNode)) === false) { + pNode.parentNode.replaceChild(para.cloneNode(true), pNode); + } + if (next === null || next.hasChildNodes() === false) { + hRule.parentNode.insertBefore(para.cloneNode(true), hRule.nextSibling); + } + + node = hRule.nextSibling; + while (node.firstChild) { + node = node.firstChild; + } + if (node && node.nodeType !== GB.node.text) { + node = node.parentNode; + } + this.placeCaretAt(this.W3CRange ? node : hRule.nextSibling, true); + } else { + if (!hRule.previousSibling) { + hRule.parentNode.insertBefore(para.cloneNode(true), hRule); + } + if (!hRule.nextSibling) { + hRule.parentNode.insertBefore(para.cloneNode(true), hRule.nextSibling); + } + this.placeCaretAt(hRule.nextSibling, hRule.nextSibling.nodeType === GB.node.text); + } + } else { + switch (cmd) { + case 'JustifyLeft' : + case 'JustifyCenter' : + case 'JustifyRight' : + case 'JustifyFull' : + pNode = this.getRangeElement(this.range); + node = null; + + if (GB.offElementTags[pNode.nodeName.toLowerCase()]) { + nodeRange = this.createRange(); + selection = this.clearSelection(); + if (this.W3CRange) { + nodeRange.selectNode(pNode); + selection.addRange(nodeRange); + } else { + nodeRange.moveToElementText(pNode); + nodeRange.select(); + range = nodeRange; + } + } + // Caption + if (pNode.nodeName.toLowerCase() === 'img') { + if (pNode.parentNode.nodeName.toLowerCase() === 'figure') { + node = pNode.parentNode; + if (node.parentNode.nodeName.toLowerCase() === 'div') { + node = node.parentNode; + node.style.textAlign = GB.textAlign[cmd]; + break; + } + } + } else if (pNode.nodeName.toLowerCase() === 'figure') { + node = pNode.parentNode; + if (node.nodeName.toLowerCase() === 'div') { + node.style.textAlign = GB.textAlign[cmd]; + break; + } + } + + do { + if (pNode.nodeName.toLowerCase() === 'li') { + node = pNode; + break; + } + pNode = pNode.parentNode; + } while (pNode && pNode.nodeName.toLowerCase() !== 'body'); + + + if (node) { + node.style.textAlign = GB.textAlign[cmd]; + break; + } + + range.execCommand(cmd, false, opt); + pNode = this.getRangeElement(this.W3CRange ? this.getRange() : range); + + while (pNode && pNode.nodeName.toLowerCase() !== 'body') { + if (typeof pNode.getAttribute !== 'undefined' && pNode.getAttribute('align')) { + node = pNode; + break; + } else { + css = this.getCssValue(pNode); + if (css) { + for (i = 0; i < css.length; i++) { + if (css[i].name === 'text-align') { + node = pNode; + break; + } + } + } + } + pNode = pNode.parentNode; + } + + if (node) { + pNode.style.textAlign = GB.textAlign[cmd]; + pNode.removeAttribute('align'); + break; + } + break; + case 'InsertOrderedList' : + case 'InsertUnOrderedList' : + range.execCommand(cmd, false, opt); + if (this.W3CRange) { + range = this.getRange(); + node = range.commonAncestorContainer; + if (node.nodeType === GB.node.element && node.lastChild && + node.lastChild.nodeName.toLowerCase() === 'br') { + node.lastChild.className = this.cheditor.bogusSpacerName; + isEmpty = true; + } + found = false; + while (node) { + if (node.nodeName.toLowerCase() === 'ul' || node.nodeName.toLowerCase() === 'ol') { + found = true; + break; + } + node = node.parentNode; + } + if (found) { + node.style.listStyleType = ''; + if (!GB.browser.msie) { + if (node.parentNode.nodeName.toLowerCase() === 'p' || + node.parentNode.nodeName.toLowerCase() === 'div') { + pNode = node.parentNode; + if (pNode.lastChild && pNode.lastChild.nodeName.toLowerCase() === 'br') { + pNode.removeChild(pNode.lastChild); + } + if (pNode.firstChild === node && pNode.lastChild === node) { + pNode.parentNode.insertBefore(node, pNode); + pNode.parentNode.removeChild(pNode); + this.placeCaretAt(node.lastChild, isEmpty); + } + } + } + } + } + break; + default : + if (range.queryCommandSupported(cmd)) { + range.execCommand(cmd, false, opt); + } + } + } + } catch (e) { + alert(cmd + ': 지원되지 않는 명령입니다. ' + e.toString()); + } + + this.toolbarUpdate(); + }, + + cleanFromWord : function (tmpDoc) { + var doc = tmpDoc.body.innerHTML; + doc = doc.replace(/MsoNormal/g, ''); doc = doc.replace(/<\\?\?xml[^>]*>/g, ''); doc = doc.replace(/<\/?o:p[^>]*>/g, ''); + doc = doc.replace(/<\/?v:[^>]*>/g, ''); doc = doc.replace(/<\/?o:[^>]*>/g, ''); doc = doc.replace(/<\/?st1:[^>]*>/g, ''); + doc = doc.replace(//g, ''); doc = doc.replace(//g, ''); + doc = doc.replace(/<\\?\?xml[^>]*>/g, ''); doc = doc.replace(/<\/?o:p[^>]*>/g, ''); doc = doc.replace(/<\/?v:[^>]*>/g, ''); + doc = doc.replace(/<\/?o:[^>]*>/g, ''); doc = doc.replace(/<\/?st1:[^>]*>/g, ''); //doc = doc.replace(/lang=.?[^' >]*/ig, ''); + doc = doc.replace(/type=.?[^' >]*/g, ''); doc = doc.replace(/href='#[^']*'/g, ''); doc = doc.replace(/href='#[^']*'/g, ''); + doc = doc.replace(/name=.?[^' >]*/g, ''); doc = doc.replace(/ clear='all'/g, ''); doc = doc.replace(/id='[^']*'/g, ''); + doc = doc.replace(/title='[^']*'/g, ''); doc = doc.replace(/\n/g, ''); doc = doc.replace(/\r/g, ''); + doc = doc.replace(/mso\-[^'>;]*/g, ''); doc = doc.replace(/]*/ig, ']*<\/span>/ig, ''); + return doc; + }, + + printPageBreak : function () { + var hr = document.createElement('hr'), + div = this.doc.createElement('div'); + hr.style.pageBreakAfter = 'always'; + hr.style.border = '1px #999 dotted'; + this.insertHTML(hr); + div.appendChild(this.doc.createTextNode('\u00a0')); + this.insertHTML(div); + }, + + doCmdPaste : function (html) { + var range = null; + this.editAreaFocus(); + if (!this.W3CRange) { + if (this.range.item) { + range = this.doc.body.createTextRange(); + if (range) { + range.moveToElementText(this.range.item(0)); + range.select(); + this.range.item(0).outerHTML = html; + } + this.toolbarUpdate(); + } else { + this.range.pasteHTML(html); + this.range.select(); + } + } else { + this.insertNodeAtSelection(html); + } + }, + + getPreviousLeaf : function (node) { + var leaf; + while (!node.previousSibling) { + node = node.parentNode; + if (!node) { + return node; + } + } + leaf = node.previousSibling; + while (leaf.lastChild) { + leaf = leaf.lastChild; + } + return leaf; + }, + + getNextLeaf : function (node, breakNode) { + var leaf; + while (!node.nextSibling) { + node = node.parentNode; + if ((breakNode && breakNode === node) || !node) { + return node; + } + } + leaf = node.nextSibling; + if (breakNode && leaf === breakNode) { + return node; + } + while (leaf.firstChild) { + leaf = leaf.firstChild; + } + return leaf; + }, + + isTextVisible : function (text) { + var i, found = false, len = text.length; + for (i = 0; i < len; i++) { + if (text.charAt(i) !== ' ' && text.charAt(i) !== '\t' && text.charAt(i) !== '\r' && text.charAt(i) !== '\n') { + found = true; + break; + } + } + return found; + }, + + checkCssValue : function (elem, prop) { + var css = this.getCssValue(elem), i; + if (!css) { + return null; + } + for (i = 0; i < css.length; i++) { + if (css[i].name === prop) { + return css[i]; + } + } + return null; + }, + + getCssValue : function (elem) { + var i, q, style = [], len, css; + + css = elem.getAttribute('style'); + if (!css) { + return null; + } + if (typeof css === 'object') { + css = css.cssText; + } + if (this.trimSpace(css) === '') { + return null; + } + + css = css.replace(/;$/, '').split(';'); + len = css.length; + + for (i = 0; i < len; i++) { + q = css[i].split(':'); + style.push({'name': this.trimSpace(q[0]).toLowerCase(), 'value': this.trimSpace(q[1]).toLowerCase()}); + } + return style; + }, + + makeFontCss : function (cmd, opt, elem) { + switch (cmd) { + case 'font-size' : elem.style.fontSize = opt; break; + case 'font-family' : elem.style.fontFamily = opt; break; + case 'color': elem.style.color = opt; break; + case 'background-color': elem.style.backgroundColor = opt; break; + } + }, + + insertStartEndNode : function (range) { + var startNode = this.doc.createElement('span'), + startRange, endRange, endNode, collapsed, node = null; + + startNode.id = 'startNode'; + + if (!this.W3CRange) { + startNode.appendChild(this.doc.createTextNode('\u200b')); + try { + endRange = range.duplicate(); + startRange = range.duplicate(); + endRange.collapse(false); + startRange.collapse(true); + } catch (e) { + node = this.getRangeElement(range); + if (node.nodeType === GB.node.element) { + + } else { + return null; + } + } + + endNode = startNode.cloneNode(true); + endNode.id = 'endNode'; + + if (node) { + node.parentNode.insertBefore(startNode, node); + node.parentNode.insertBefore(endNode, node.nextSibling); + collapsed = false; + } else { + collapsed = startRange.isEqual(endRange); + endRange.pasteHTML(endNode.outerHTML); + endRange.moveStart('character', -1); + endNode = endRange.parentElement(); + + if (collapsed || range.text.length === 0) { + endNode.parentNode.insertBefore(startNode, endNode); + } else { + startNode = endNode.cloneNode(true); + startNode.id = 'startNode'; + startRange.pasteHTML(startNode.outerHTML); + startRange.moveStart('character', -1); + startNode = startRange.parentElement(); + } + } + endRange = null; + startRange = null; + } else { + endRange = range.cloneRange(); + startRange = range.cloneRange(); + startRange.collapse(true); + + endRange.collapse(false); + endNode = startNode.cloneNode(false); + endNode.id = 'endNode'; + + collapsed = range.collapsed; + if (collapsed) { + endRange.insertNode(endNode); + endNode.parentNode.insertBefore(startNode, endNode); + } else { + endRange.insertNode(endNode); + startRange.insertNode(startNode); + } + + if (startNode.previousSibling && startNode.previousSibling.nodeType === GB.node.text && + startNode.previousSibling.nodeValue === '') { + startNode.previousSibling.parentNode.removeChild(startNode.previousSibling); + } + if (endNode.nextSibling && endNode.nextSibling.nodeType === GB.node.text && + endNode.nextSibling.nodeValue === '') { + endNode.nextSibling.parentNode.removeChild(endNode.nextSibling); + } + startRange.detach(); endRange.detach(); + endRange = null; startRange = null; + } + return {startNode: startNode, endNode: endNode, collapsed: collapsed}; + }, + + removeStartEndNode : function (nodes) { + if (nodes.startNode) { + nodes.startNode.parentNode.removeChild(nodes.startNode); + } + if (nodes.endNode) { + nodes.endNode.parentNode.removeChild(nodes.endNode); + } + }, + + clearCss : function (node, name) { + var i, css, styles = []; + + if (!node || node.nodeType !== GB.node.element) { + return null; + } + + css = this.getCssValue(node); + if (!css) { + return null; + } + + node.removeAttribute('style'); + for (i = 0; i < css.length; i++) { + if (css[i].name !== name) { + node.style[css[i].name] = css[i].value; + styles.push(css[i]); + } + } + + return styles.length ? styles : null; + }, + + doCmdPopup : function (cmd, opt, checked) { + var self = this, + range, cursor, selectionType, pNode, node, found, isEmpty, span, endNode, startNode, i, endNodeAncestorRange, + startNodeRange, endNodeRange, compare, tNode, len, selection, child, css, tempNodes, endNodeAncestor, + backupRange, removeNodes = [], spanNodes = [], applyTextNodes = [], tailNodes = [], headNodes = [], rootNode = null, + zeroWidth = this.doc.createTextNode('\u200b'), inRange, + + makeSpanText = function (elem, ancestor) { + if (self.undefined(ancestor)) { + ancestor = elem.parentNode; + } + span = self.doc.createElement('span'); + self.makeFontCss(cmd, opt, span); + ancestor.insertBefore(span, elem); + span.appendChild(elem); + spanNodes.push(span); + return span; + }, + searchTextNode = function (node, match) { + var i = 0, len = node.childNodes.length; + for (; i < len; i++) { + child = node.childNodes[i]; + match = searchTextNode(child, match); + if (child === startNode) { + break; + } + if (child.nodeType === GB.node.text) { + match = true; + break; + } + if (child.nodeType === GB.node.element && child.hasChildNodes() === false && + GB.textFormatTags[child.nodeName.toLowerCase()]) { + removeNodes.push(child); + } + } + return match; + }, + compareBoundaryPoints = function (range, type, source) { + var values = { + 'StartToStart': 0, //Range.START_TO_START, + 'StartToEnd': 1, //Range.START_TO_END, + 'EndToEnd': 2, //Range.END_TO_END, + 'EndToStart': 3 //Range.END_TO_START + }; + + if (self.W3CRange) { + return range.compareBoundaryPoints(values[type], source); + } + + type = type === 'StartToEnd' ? 'EndToStart' : (type === 'EndToStart' ? 'StartToEnd' : type); + return range.compareEndPoints(type, source); + }, + rangeSelectNode = function (range, node) { + if (self.W3CRange) { + range.selectNode(node); + } else { + if (node.nodeType === GB.node.text) { + node = node.parentNode; + } + range.moveToElementText(node); + } + }, + clearPreviousLeaf = function (node) { + var leaf, css = []; + while (!node.previousSibling) { + node = node.parentNode; + if (!node || node.nodeName.toLowerCase() === 'body') { + return null; + } + } + + leaf = node.previousSibling; + + while (leaf.lastChild && leaf.nodeType === GB.node.element && leaf !== startNode) { + rangeSelectNode(cursor, leaf); + compare = compareBoundaryPoints(cursor, 'StartToStart', startNodeRange); + if (compare === 1) { + css = self.clearCss(leaf, cmd); + if (!css && (leaf.nodeName.toLowerCase() === 'span' || leaf.nodeName.toLowerCase() === 'font')) { + while (leaf.firstChild) { + leaf.parentNode.insertBefore(leaf.firstChild, leaf); + } + removeNodes.push(leaf); + break; + } + } else if (compare === 0) { + self.clearCss(leaf, cmd); + if (!rootNode && leaf.nodeName.toLowerCase() === 'span') { + rootNode = leaf; + } + } else { // -1 + node = startNode; + found = false; + while (node) { + if (node.nodeType === GB.node.text) { + found = true; + break; + } + node = checkPreviousLeaf(node, leaf); + } + if (!found) { + self.clearCss(leaf, cmd); + if (!rootNode && leaf.nodeName.toLowerCase() === 'span') { + rootNode = leaf; + } + } + } + + leaf = leaf.lastChild; + } + + if (leaf.nodeType === GB.node.text && self.isTextVisible(leaf.nodeValue)) { + applyTextNodes.push(leaf); + } + + return leaf; + }, + checkPreviousLeaf = function (node, breakNode) { + var leaf; + while (!node.previousSibling) { + node = node.parentNode; + if (node === breakNode || node.nodeName.toLowerCase() === 'body') { + return null; + } + } + leaf = node.previousSibling; + while (leaf.lastChild) { + leaf = leaf.lastChild; + } + return leaf; + }, + checkInRange = function (range, source) { + return (typeof range.inRange !== 'undefined') ? range.inRange(source) : + (compareBoundaryPoints(range, 'StartToStart', source) < 1 + && compareBoundaryPoints(range, 'EndToEnd', source) > -1); + }, + checkNextLeaf = function (node) { + var leaf, inRange; + while (!node.nextSibling) { + node = node.parentNode; + + if (!node || node.nodeName.toLowerCase() === 'body') { + return null; + } + + rangeSelectNode(cursor, node); + inRange = checkInRange(cursor, endNodeRange); + if (inRange) { + inRange = checkInRange(cursor, startNodeRange); + if (!inRange) { + tailNodes.push(node); + } else { + headNodes.push(node); + } + } + + if (node === endNodeAncestor) { + return null; + } + } + + leaf = node.nextSibling; + if (leaf.nodeType === GB.node.text || !endNodeAncestor) { + return null; + } + + rangeSelectNode(cursor, leaf); + inRange = checkInRange(endNodeAncestorRange, cursor); + if (!inRange) { + return null; + } + + while (leaf.firstChild) { + leaf = leaf.firstChild; + } + + if (leaf.nodeType === GB.node.text) { + tailNodes = []; + return null; + } + return leaf; + }, + checkParentSpan = function (node) { + var len = spanNodes.length, i = 0; + for (; i < len; i++) { + if (spanNodes[i] === node) { + return true; + } + } + return false; + }; + + this.editAreaFocus(); + + backupRange = this.restoreRange(); + selectionType = this.getSelectionType(); + + if (this.W3CRange) { + range = this.doc; + } else { + range = (selectionType === GB.selection.none) ? this.doc : backupRange; + } + + try { + if (cmd === 'LineHeight') { + this.applyLineHeight(opt); + } else { + if (cmd === 'InsertOrderedList' || cmd === 'InsertUnOrderedList') { + if (checked !== true) { + range.execCommand(cmd, false, opt); + if (!GB.browser.msie) { + range = this.getRange(); + node = range.commonAncestorContainer; + found = isEmpty = false; + + if (node.nodeType === GB.node.element && node.lastChild && + node.lastChild.nodeName.toLowerCase() === 'br') { + node.lastChild.className = this.cheditor.bogusSpacerName; + isEmpty = true; + } + while (node) { + if (node.nodeName.toLowerCase() === 'ul' || node.nodeName.toLowerCase() === 'ol') { + found = true; + break; + } + node = node.parentNode; + } + + if (found) { + if (node.parentNode.nodeName.toLowerCase() === 'p' || + node.parentNode.nodeName.toLowerCase() === 'div') { + pNode = node.parentNode; + if (pNode.lastChild && pNode.lastChild.nodeName.toLowerCase() === 'br') { + pNode.removeChild(pNode.lastChild); + } + if (pNode.firstChild === node && pNode.lastChild === node) { + pNode.parentNode.insertBefore(node, pNode); + pNode.parentNode.removeChild(pNode); + this.placeCaretAt(node.lastChild, isEmpty); + } + } + } + } + } + cursor = this.getRange(); + pNode = this.W3CRange ? cursor.commonAncestorContainer : cursor.parentElement(); + if (pNode.nodeType === GB.node.text) { + pNode = pNode.parentNode; + } + while (pNode) { + if (pNode.nodeName.toLowerCase() === 'ol' || pNode.nodeName.toLowerCase() === 'ul') { + if (opt === 'desc' || opt === 'decimal') { + opt = ''; + } + pNode.style.listStyleType = opt; + break; + } + pNode = pNode.parentNode; + } + } else if (cmd === 'FontSize' || cmd === 'FontName' || cmd === 'ForeColor' || cmd === 'BackColor') { + if (cmd === 'ForeColor' || cmd === 'BackColor') { + opt = this.colorConvert(opt, 'hex'); + } else if (cmd === 'FontName' && opt === '맑은 고딕') { + opt += ', "Malgun Gothic"'; + } + + cmd = GB.fontStyle[cmd]; + + range = this.getRange(); + tempNodes = this.insertStartEndNode(range); + startNode = tempNodes.startNode; + endNode = tempNodes.endNode; + + cursor = this.createRange(); + startNodeRange = this.createRange(); + rangeSelectNode(startNodeRange, startNode); + + endNodeRange = this.createRange(); + endNodeAncestorRange = this.createRange(); + + if (!tempNodes.collapsed) { + tailNodes = []; + endNodeAncestor = null; + rangeSelectNode(endNodeRange, endNode); + node = endNode.parentNode; + + while (node && node.nodeName.toLowerCase() !== 'body') { + endNodeAncestor = node; + node = node.parentNode; + } + + if (endNodeAncestor) { + rangeSelectNode(endNodeAncestorRange, endNodeAncestor); + } + + node = endNode; + while (node) { + node = checkNextLeaf(node); + } + + for (i = 0; i < tailNodes.length; i++) { + this.clearCss(tailNodes[i], cmd); + } + + node = endNode; + while (node && node !== startNode) { + node = clearPreviousLeaf(node); + } + + if (headNodes.length) { + found = false; + node = startNode; + while (node) { + if (node.nodeType === GB.node.text) { + found = true; + break; + } + node = checkPreviousLeaf(node, endNodeAncestor); + } + if (!found) { + for (i = 0; i < headNodes.length; i++) { + self.clearCss(headNodes[i], cmd); + css = self.getCssValue(headNodes[i]); + if (!css && headNodes[i].nodeName.toLowerCase() === 'span') { + child = headNodes[i]; + while (child.firstChild) { + child.parentNode.insertBefore(child.firstChild, child); + } + child.parentNode.removeChild(child); + headNodes.splice(i); + } + } + } + } + + for (i = 0; i < removeNodes.length; i++) { + removeNodes[i].parentNode.removeChild(removeNodes[i]); + } + removeNodes = []; + + len = applyTextNodes.length; + if (rootNode) { + rangeSelectNode(startNodeRange, rootNode); + } + + for (i = 0; i < len; i++) { + tNode = applyTextNodes[i]; + + if (tNode.previousSibling && tNode.previousSibling.nodeType === GB.node.text) { + if (applyTextNodes[i + 1] && tNode.previousSibling === applyTextNodes[i + 1]) { + applyTextNodes[i + 1].nodeValue += tNode.nodeValue; + tNode.parentNode.removeChild(tNode); + } else { + tNode.nodeValue = tNode.previousSibling.nodeValue + tNode.nodeValue; + tNode.previousSibling.parentNode.removeChild(tNode.previousSibling); + i--; + } + continue; + } + + pNode = tNode.parentNode; + + if (rootNode) { + rangeSelectNode(cursor, pNode); + inRange = checkInRange(startNodeRange, cursor); + if (inRange) { + self.makeFontCss(cmd, '', pNode); + self.makeFontCss(cmd, opt, rootNode); + continue; + } + } + if (pNode.nodeName.toLowerCase() === 'span' + && (pNode.firstChild === tNode || pNode.firstChild === startNode) + && (pNode.lastChild === tNode || pNode.lastChild === endNode)) { + self.makeFontCss(cmd, opt, pNode); + spanNodes.push(pNode); + continue; + } + makeSpanText(tNode); + } + + len = spanNodes.length; + for (i = 0; i < len; i++) { + child = spanNodes[i]; + pNode = child.parentNode; + if (pNode.nodeName.toLowerCase() === 'span') { + if (checkParentSpan(pNode)) { + self.makeFontCss(cmd, '', child); + css = self.getCssValue(child); + if (!css) { + while (child.firstChild) { + pNode.insertBefore(child.firstChild, child); + } + pNode.removeChild(child); + continue; + } + } + while (pNode && pNode.nodeName.toLowerCase() === 'span') { + if (pNode.firstChild === child && pNode.lastChild === child) { + css = self.getCssValue(pNode); + if (css) { + self.makeFontCss(cmd, '', pNode); + css = self.getCssValue(pNode); + if (!css) { + pNode.parentNode.insertBefore(child, pNode); + pNode.parentNode.removeChild(pNode); + pNode = child; + continue; + } + } + } + pNode = pNode.parentNode; + } + } + } + + if (this.W3CRange) { + selection = this.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + range = this.createRange(); + range.setStartAfter(startNode); + range.setEndBefore(endNode); + selection.addRange(range); + } else { + startNodeRange = this.createRange(); + endNodeRange = startNodeRange.duplicate(); + startNodeRange.moveToElementText(startNode); + endNodeRange.moveToElementText(endNode); + startNodeRange.setEndPoint('StartToEnd', startNodeRange); + startNodeRange.setEndPoint('EndToStart', endNodeRange); + startNodeRange.select(); + } + } else { + pNode = startNode.parentNode; + found = false; + while (pNode && pNode.nodeName.toLowerCase() === 'span' && !found) { + css = self.getCssValue(pNode); + if (css) { + len = css.length; + for (i = 0; i < len; i++) { + if (css[i].name === cmd && css[i].value === opt) { + found = true; + break; + } + } + } + pNode = pNode.parentNode; + } + + if (!found) { + span = this.doc.createElement('span'); + this.makeFontCss(cmd, opt, span); + span.appendChild(zeroWidth); + endNode.parentNode.insertBefore(span, endNode); + + if (this.W3CRange) { + selection = this.getSelection(); + selection.collapse(zeroWidth, 1); + } else { + range = this.getRange(); + range.moveToElementText(span); + range.collapse(false); + range.select(); + } + } + } + this.removeStartEndNode(tempNodes); + } else { + range.execCommand(cmd, false, opt); + } + } + } catch (e) { + alert(e.toString()); + } + + this.toolbarUpdate(); + this.boxHideAll(); + }, + + modifyImage : function (img) { + var self = this, + idx, div, ico, inputCaption, wrapTextSpan, wrapTextCheckBox, wrapTextIcon, wrapTextChecked, + width = 0, height = 0, wrapElem, currentCaption = '', caption = null, inputAlt, inputTitle, cssFloat, + wrapperClassName = 'cheditor-caption-wrapper', + figureClassName = 'cheditor-caption', + figCaptionClassName = 'cheditor-caption-text', + imageWidthOpt = { + orig : { size: 'normal', desc: '원본 크기' }, + fitpage : { size: '100%', desc: '페이지 크기에 맞춤' }, + px160 : { size: 160, desc: '썸네일, 160 픽셀' }, + px320 : { size: 320, desc: '작은 크기, 320 픽셀' }, + px640 : { size: 640, desc: '중간 크기, 640 픽셀' }, + px1024 : { size: 1024, desc: '크게, 1024 픽셀' }, + px1600 : { size: 1600, desc: '아주 크게, 1600 픽셀' } + }, + captionAlignOpt = { left: '왼쪽', center: '가운데', right: '오른쪽' }, + imageFloatOpt = { + left : { + value : '왼쪽', + input : null + }, + right : { + value : '오른쪽', + input : null + } + }, + fmSelectWidth = document.createElement('select'), + fmSelectCaptionAlign = document.createElement('select'), + + onChangeEventHandler = function () { + if (self.editImages[img.src] && self.editImages[img.src].width) { + width = self.editImages[img.src].width; + if (self.editImages[img.src] && self.editImages[img.src].height) { + height = self.editImages[img.src].height; + } else { + height = img.height; + } + } else if (img.width) { + width = img.width; + } else { + return; + } + + switch (this.value) { + case 'orig' : + width = width + 'px'; + height = (height || img.height) + 'px'; + break; + case 'fitpage' : + width = '100%'; + height = 'auto'; + break; + default : + width = imageWidthOpt[this.value].size; + if (img.height) { + height = Math.round((img.height * width) / img.width) + 'px'; + } + width += 'px'; + } + + if (width) { + img.style.width = width; + if (caption && caption.figure) { + caption.figure.style.width = width; + } + } + if (height) { + img.style.height = height; + } + }, + setCssFloat = function (elem, css) { + if (typeof elem.style.styleFloat === 'undefined') { + elem.style.cssFloat = css; + } else { + elem.style.styleFloat = css; + } + }, + getCssFloat = function (elem) { + return (typeof elem.style.styleFloat === 'undefined') ? elem.style.cssFloat : elem.style.styleFloat; + }, + clearCssFloat = function (elem) { + setCssFloat(elem, ''); + elem.style.marginLeft = ''; + elem.style.marginRight = ''; + }, + createInputForm = function (type, name, value, classname) { + var input = document.createElement('input'); + input.setAttribute('type', type); + input.setAttribute('name', name); + input.setAttribute('value', value); + input.className = classname; + return input; + }, + applyWrapText = function (elem) { + if (!elem) { + return; + } + wrapElem = (caption && caption.wrapper) ? caption.wrapper : img; + if (elem.checked) { + imageFloatOpt[(elem.name === 'left' ? 'right' : 'left')].input.checked = false; + setCssFloat(wrapElem, elem.name); + if (elem.name === 'left') { + wrapElem.style.marginRight = '1em'; + wrapElem.style.marginLeft = ''; + } else { + wrapElem.style.marginLeft = '1em'; + wrapElem.style.marginRight = ''; + } + if (caption && caption.wrapper) { + clearCssFloat(img); + } + } else { + clearCssFloat(wrapElem); + } + }, + getCaptionNodes = function (img) { + var nodes = { figure: null, figCaption: [], captionText: '', img: null, wrapper: null}, + pNode, node; + pNode = img.parentNode; + if (!pNode || pNode.nodeName.toLowerCase() !== 'figure') { + return null; + } + nodes.figure = pNode; + nodes.figCaption = pNode.getElementsByTagName('figcaption'); + for (idx = 0; idx < nodes.figCaption.length; idx++) { + node = nodes.figCaption[idx].firstChild; + while (node) { + if (node.nodeType === GB.node.text) { + nodes.captionText += self.trimSpace(node.nodeValue); + } + node = node.nextSibling; + } + } + if (pNode.parentNode.nodeName.toLowerCase() === 'div' && pNode.parentNode.className === wrapperClassName) { + nodes.wrapper = pNode.parentNode; + } + nodes.img = img; + return nodes; + }, + applyAlt = function () { + var alt = self.trimSpace(inputAlt.value); + if (alt !== '') { + img.setAttribute('alt', alt); + } + self.removeEvent(inputAlt, 'blur', applyAlt); + self.cheditor.modifyState = false; + }, + applyTitle = function () { + var title = self.trimSpace(inputTitle.value); + if (title !== '') { + img.setAttribute('title', title); + } + self.removeEvent(inputTitle, 'blur', applyTitle); + self.cheditor.modifyState = false; + }, + applyCaption = function () { + var figure = self.doc.createElement('figure'), + figCaption = self.doc.createElement('figcaption'), + wrapper = self.doc.createElement('div'), + pNode = img.parentNode, i, para = self.doc.createElement('p'); + + self.removeEvent(inputCaption, 'blur', applyCaption); + + wrapper.className = wrapperClassName; + figure.className = figureClassName; + figCaption.className = figCaptionClassName; + + this.value = self.trimSpace(inputCaption.value); + if (!self.isTextVisible(this.value) && caption) { + caption.wrapper.parentNode.insertBefore(para, caption.wrapper); + para.appendChild(caption.img); + cssFloat = getCssFloat(caption.wrapper); + caption.wrapper.parentNode.removeChild(caption.wrapper); + caption = getCaptionNodes(img); + if (cssFloat && (cssFloat === 'left' || cssFloat === 'right')) { + applyWrapText(imageFloatOpt[cssFloat].input); + } + self.cheditor.modifyState = false; + return; + } + if (currentCaption === this.value) { + self.cheditor.modifyState = false; + return; + } + + if (caption && caption.figure) { + for (i = 0; i < caption.figCaption.length; i++) { + caption.figure.removeChild(caption.figCaption[i]); + } + figure = caption.figure; + } else { + if (pNode.nodeName.toLowerCase() !== 'body') { + pNode.parentNode.insertBefore(wrapper, pNode.nextSibling); + } else { + pNode.insertBefore(wrapper, img); + } + + if (self.config.imgCaptionWrapper !== '') { + wrapper.setAttribute('style', self.config.imgCaptionWrapper); + } + + wrapper.appendChild(figure); + figure.setAttribute('style', self.config.imgCaptionFigure); + figure.style.display = 'inline-block'; + figure.style.width = img.width; + figure.appendChild(img); + para.appendChild(self.createNbspTextNode()); + wrapper.parentNode.insertBefore(para, wrapper.nextSibling); + } + + figure.appendChild(figCaption); + figCaption.setAttribute('style', self.config.imgCaptionText); + figCaption.appendChild(self.doc.createTextNode(this.value)); + + if (!pNode.hasChildNodes()) { + pNode.parentNode.removeChild(pNode); + } + + caption = getCaptionNodes(img); + cssFloat = getCssFloat(img); + if (cssFloat && (cssFloat === 'left' || cssFloat === 'right')) { + applyWrapText(imageFloatOpt[cssFloat].input); + } + self.cheditor.modifyState = false; + }; + + for (idx in imageWidthOpt) { + if (imageWidthOpt.hasOwnProperty(idx)) { + fmSelectWidth.options[fmSelectWidth.options.length] = new Option(imageWidthOpt[idx].desc, idx); + } + } + + fmSelectWidth.onchange = onChangeEventHandler; + caption = getCaptionNodes(img); + + div = document.createElement('div'); + div.style.textAlign = 'left'; + ico = new Image(); + ico.src = this.config.iconPath + 'image_resize.png'; + ico.className = 'cheditor-ico'; + div.appendChild(ico); + div.appendChild(fmSelectWidth); + + wrapTextChecked = getCssFloat((caption && caption.wrapper) ? caption.wrapper : img); + + for (idx in imageFloatOpt) { + if (imageFloatOpt.hasOwnProperty(idx)) { + wrapTextCheckBox = createInputForm('checkbox', idx, '1', 'wrap-checked'); + wrapTextCheckBox.setAttribute('id', 'idWrapText-' + idx); + wrapTextCheckBox.onclick = function () { + applyWrapText(this); + }; + imageFloatOpt[idx].input = wrapTextCheckBox; + wrapTextSpan = document.createElement('span'); + wrapTextIcon = new Image(); + wrapTextSpan.className = 'wrap-text-desc'; + + if (idx === 'left') { + wrapTextSpan.style.marginLeft = '20px'; + } + if (wrapTextChecked === idx) { + wrapTextCheckBox.checked = 'checked'; + } + wrapTextSpan.appendChild(wrapTextCheckBox); + wrapTextIcon.className = 'cheditor-ico'; + wrapTextIcon.src = this.config.iconPath + 'image_align_' + idx + '_wt.png'; + wrapTextSpan.appendChild(wrapTextIcon); + div.appendChild(wrapTextSpan); + } + } + + if (self.undefined(self.editImages[img.src])) { + self.editImages[img.src] = { width: img.width, height: img.height }; + } + + div.appendChild(document.createTextNode('\u00a0\u00a0Alt:')); + inputAlt = createInputForm('text', 'inputAlt', '', 'user-input-alt'); + inputAlt.onfocus = function () { + self.cheditor.modifyState = true; + self.addEvent(inputAlt, 'blur', applyAlt); + }; + div.appendChild(inputAlt); + if (img.getAttribute('alt')) { + inputAlt.value = img.getAttribute('alt'); + } + + div.appendChild(document.createTextNode('타이틀:')); + inputTitle = createInputForm('text', 'inputTitle', '', 'user-input-alt'); + inputTitle.onfocus = function () { + self.cheditor.modifyState = true; + self.addEvent(inputTitle, 'blur', applyTitle); + }; + div.appendChild(inputTitle); + if (img.getAttribute('title')) { + inputTitle.value = img.getAttribute('title'); + } + + div.appendChild(document.createElement('br')); + div.appendChild(document.createTextNode('사진 캡션:')); + + inputCaption = createInputForm('text', 'inputCaption', '', 'user-input-caption'); + inputCaption.onfocus = function () { + caption = getCaptionNodes(img); + self.cheditor.modifyState = true; + self.addEvent(inputCaption, 'blur', applyCaption); + + }; + div.appendChild(inputCaption); + + div.appendChild(document.createTextNode('캡션 텍스트 정렬:')); + for (idx in captionAlignOpt) { + if (captionAlignOpt.hasOwnProperty(idx)) { + fmSelectCaptionAlign.options[fmSelectCaptionAlign.options.length] = new Option(captionAlignOpt[idx], idx); + if (caption && caption.figCaption[0] && caption.figCaption[0].style.textAlign) { + if (idx === caption.figCaption[0].style.textAlign) { + fmSelectCaptionAlign.options[fmSelectCaptionAlign.options.length - 1].selected = true; + } + } + } + } + + fmSelectCaptionAlign.className = 'caption-align'; + fmSelectCaptionAlign.onchange = function () { + caption = getCaptionNodes(img); + if (!caption) { + return; + } + for (idx = 0; idx < caption.figCaption.length; idx++) { + caption.figCaption[idx].style.textAlign = this.value; + } + }; + div.appendChild(fmSelectCaptionAlign); + + if (caption && caption.captionText) { + currentCaption = self.trimSpace(caption.captionText); + inputCaption.value = currentCaption; + } + + while (self.cheditor.editBlock.firstChild) { + self.cheditor.editBlock.removeChild(self.cheditor.editBlock.firstChild); + } + self.cheditor.editBlock.appendChild(div); + }, + + modifyCell : function (ctd) { + var self = this, + ctb = ctd, + ctr = ctb, + tm = [], i, jr, j, jh, jv, rowIndex = 0, realIndex = 0, newc, newr, nc, tempr, rows, span, icon, + div = document.createElement('div'), + + getCellMatrix = function () { + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('tr'); + for (i = 0; i < rows.length; i++) { + tm[i] = []; + } + for (i = 0; i < rows.length; i++) { + jr = 0; + for (j = 0; j < rows[i].cells.length; j++) { + while (!(self.undefined(tm[i][jr]))) { + jr++; + } + for (jh = jr; jh < jr + (rows[i].cells[j].colSpan || 1); jh++) { + for (jv = i; jv < i + (rows[i].cells[j].rowSpan || 1); jv++) { + tm[jv][jh] = (jv === i) ? rows[i].cells[j].cellIndex : -1; + } + } + } + } + return tm; + }, + insertColumn = function () { + tm = getCellMatrix(); + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('tr'); + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + for (j = 0; j < tm[rowIndex].length; j++) { + if (tm[rowIndex][j] === ctd.cellIndex) { + realIndex = j; + break; + } + } + + for (i = 0; i < rows.length; i++) { + if (tm[i][realIndex] !== -1) { + if (rows[i].cells[tm[i][realIndex]].colSpan > 1) { + rows[i].cells[tm[i][realIndex]].colSpan++; + } else { + newc = rows[i].insertCell(tm[i][realIndex] + 1); + nc = rows[i].cells[tm[i][realIndex]].cloneNode(false); + nc.innerHTML = ' '; + rows[i].replaceChild(nc, newc); + } + } + } + }, + insertRow = function (idx) { + newr = ctb.insertRow(ctr.rowIndex + 1); + for (i = 0; i < ctr.cells.length; i++) { + if (ctr.cells[i].rowSpan > 1) { + ctr.cells[i].rowSpan++; + } else { + newc = ctr.cells[i].cloneNode(false); + newc.innerHTML = ' '; + newr.appendChild(newc); + } + } + + for (i = 0; i < ctr.rowIndex; i++) { + if (ctb.rows && ctb.rows.length > 0) { + tempr = ctb.rows[i]; + } else { + tempr = ctb.getElementsByTagName('tr')[i]; + } + for (j = 0; j < tempr.cells.length; j++) { + if (tempr.cells[j].rowSpan > (ctr.rowIndex - i)) { + tempr.cells[j].rowSpan++; + } + } + } + }, + deleteColumn = function () { + tm = getCellMatrix(ctb); + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('tr'); + rowIndex = 0; realIndex = 0; + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + if (tm[0].length <= 1) { + ctb.parentNode.removeChild(ctb); + } else { + for (j = 0; j < tm[rowIndex].length; j++) { + if (tm[rowIndex][j] === ctd.cellIndex) { + realIndex = j; + break; + } + } + + for (i = 0; i < rows.length; i++) { + if (tm[i][realIndex] !== -1) { + if (rows[i].cells[tm[i][realIndex]].colSpan > 1) { + rows[i].cells[tm[i][realIndex]].colSpan--; + } else { + rows[i].deleteCell(tm[i][realIndex]); + } + } + } + } + }, + deleteRow = function () { + var curCI = -1, prevCI, ni, nrCI, cs, nj; + + tm = getCellMatrix(ctb); + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('TR'); + rowIndex = 0; + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + if (rows.length <= 1) { + ctb.parentNode.removeChild(ctb); + } else { + for (i = 0; i < rowIndex; i++) { + tempr = rows[i]; + for (j = 0; j < tempr.cells.length; j++) { + if (tempr.cells[j].rowSpan > (rowIndex - i)) { + tempr.cells[j].rowSpan--; + } + } + } + + for (i = 0; i < tm[rowIndex].length; i++) { + prevCI = curCI; + curCI = tm[rowIndex][i]; + + if (curCI !== -1 && curCI !== prevCI && ctr.cells[curCI].rowSpan > 1 && (rowIndex + 1) < rows.length) { + ni = i; + nrCI = tm[rowIndex + 1][ni]; + while (nrCI === -1) { + ni++; + nrCI = (ni < rows[rowIndex + 1].cells.length) ? tm[rowIndex + 1][ni] : rows[rowIndex + 1].cells.length; + } + + newc = rows[rowIndex + 1].insertCell(nrCI); + rows[rowIndex].cells[curCI].rowSpan--; + nc = rows[rowIndex].cells[curCI].cloneNode(false); + rows[rowIndex + 1].replaceChild(nc, newc); + + cs = (ctr.cells[curCI].colSpan > 1) ? ctr.cells[curCI].colSpan : 1; + nj = 0; + + for (j = i; j < (i + cs); j++) { + tm[rowIndex + 1][j] = nrCI; + nj = j; + } + for (j = nj; j < tm[rowIndex + 1].length; j++) { + if (tm[rowIndex + 1][j] !== -1) { + tm[rowIndex + 1][j]++; + } + } + } + } + + if (ctb.rows && ctb.rows.length > 0) { + ctb.deleteRow(rowIndex); + } else { + ctb.removeChild(rows[rowIndex]); + } + } + }, + mergeCellRight = function () { + tm = getCellMatrix(ctb); + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('tr'); + rowIndex = 0; realIndex = 0; + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + for (j = 0; j < tm[rowIndex].length; j++) { + if (tm[rowIndex][j] === ctd.cellIndex) { + realIndex = j; + break; + } + } + + if (ctd.cellIndex + 1 < ctr.cells.length) { + var ccrs = ctd.rowSpan || 1, + cccs = ctd.colSpan || 1, + ncrs = ctr.cells[ctd.cellIndex + 1].rowSpan || 1, + nccs = ctr.cells[ctd.cellIndex + 1].colSpan || 1, + html; + + j = realIndex; + + while (tm[rowIndex][j] === ctd.cellIndex) { + j++; + } + + if (tm[rowIndex][j] === ctd.cellIndex + 1) { + if (ccrs === ncrs) { + if (rows.length > 1) { + ctd.colSpan = cccs + nccs; + } + html = self.trimSpace(ctr.cells[ctd.cellIndex + 1].innerHTML); + html = html.replace(/^ /, ''); + ctd.innerHTML += html; + ctr.deleteCell(ctd.cellIndex + 1); + } + } + } + }, + mergeCellDown = function () { + var crealIndex = 0, + ccrs = ctd.rowSpan || 1, + cccs = ctd.colSpan || 1, + ncellIndex, html, ncrs, nccs; + + tm = getCellMatrix(ctb); + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('tr'); + rowIndex = 0; + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + for (i = 0; i < tm[rowIndex].length; i++) { + if (tm[rowIndex][i] === ctd.cellIndex) { + crealIndex = i; + break; + } + } + + if (rowIndex + ccrs < rows.length) { + ncellIndex = tm[rowIndex + ccrs][crealIndex]; + if (ncellIndex !== -1 && + (crealIndex === 0 || (crealIndex > 0 && + (tm[rowIndex + ccrs][crealIndex - 1] !== tm[rowIndex + ccrs][crealIndex])))) + { + ncrs = rows[rowIndex + ccrs].cells[ncellIndex].rowSpan || 1; + nccs = rows[rowIndex + ccrs].cells[ncellIndex].colSpan || 1; + if (cccs === nccs) { + html = self.trimSpace(rows[rowIndex + ccrs].cells[ncellIndex].innerHTML); + html = html.replace(/^ /, ''); + ctd.innerHTML += html; + rows[rowIndex + ccrs].deleteCell(ncellIndex); + ctd.rowSpan = ccrs + ncrs; + } + } + } + }, + splitCellVertical = function () { + var ri, cs; + tm = getCellMatrix(); + rowIndex = 0; realIndex = 0; + + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('TR'); + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (ri = 0; ri < rows.length; ri++) { + if (rows[ri] === ctr) { + rowIndex = ri; + break; + } + } + } + + for (j = 0; j < tm[rowIndex].length; j++) { + if (tm[rowIndex][j] === ctd.cellIndex) { + realIndex = j; + break; + } + } + + if (ctd.colSpan > 1) { + newc = rows[rowIndex].insertCell(ctd.cellIndex + 1); + ctd.colSpan--; + nc = ctd.cloneNode(false); + nc.innerHTML = ' '; + rows[rowIndex].replaceChild(nc, newc); + ctd.colSpan = 1; + ctd.removeAttribute('colSpan'); + } else { + newc = rows[rowIndex].insertCell(ctd.cellIndex + 1); + nc = ctd.cloneNode(false); + nc.innerHTML = ' '; + rows[rowIndex].replaceChild(nc, newc); + for (i = 0; i < tm.length; i++) { + if (i !== rowIndex && tm[i][realIndex] !== -1) { + cs = (rows[i].cells[tm[i][realIndex]].colSpan > 1) ? rows[i].cells[tm[i][realIndex]].colSpan : 1; + rows[i].cells[tm[i][realIndex]].colSpan = cs + 1; + } + } + } + }, + splitCellHorizontal = function () { + var ni, rs; + tm = getCellMatrix(); + rowIndex = 0; realIndex = 0; + rows = (ctb.rows && ctb.rows.length > 0) ? ctb.rows : ctb.getElementsByTagName('TR'); + + if (ctr.rowIndex >= 0) { + rowIndex = ctr.rowIndex; + } else { + for (i = 0; i < rows.length; i++) { + if (rows[i] === ctr) { + rowIndex = i; + break; + } + } + } + + for (j = 0; j < tm[rowIndex].length; j++) { + if (tm[rowIndex][j] === ctd.cellIndex) { + realIndex = j; + break; + } + } + + if (ctd.rowSpan > 1) { + i = realIndex; + while (tm[rowIndex + 1][i] === -1) { + i++; + } + + ni = (i === tm[rowIndex + 1].length) ? rows[rowIndex + 1].cells.length : tm[rowIndex + 1][i]; + + newc = rows[rowIndex + 1].insertCell(ni); + ctd.rowSpan--; + + nc = ctd.cloneNode(false); + nc.innerHTML = ' '; + rows[rowIndex + 1].replaceChild(nc, newc); + ctd.rowSpan = 1; + } else { + if (ctb.rows && ctb.rows.length > 0) { + ctb.insertRow(rowIndex + 1); + } else { + if (rowIndex < (rows.length - 1)) { + ctb.insertBefore(document.createElement('TR'), rows[rowIndex + 1]); + } else { + ctb.appendChild(document.createElement('TR')); + } + } + for (i = 0; i < ctr.cells.length; i++) { + if (i !== ctd.cellIndex) { + rs = ctr.cells[i].rowSpan > 1 ? ctr.cells[i].rowSpan : 1; + ctr.cells[i].rowSpan = rs + 1; + } + } + + for (i = 0; i < rowIndex; i++) { + tempr = rows[i]; + for (j = 0; j < tempr.cells.length; j++) { + if (tempr.cells[j].rowSpan > (rowIndex - i)) { + tempr.cells[j].rowSpan++; + } + } + } + + newc = rows[rowIndex + 1].insertCell(0); + nc = ctd.cloneNode(false); + nc.innerHTML = ' '; + rows[rowIndex + 1].replaceChild(nc, newc); + } + }, + tblReflash = function () { + self.editAreaFocus(); self.doEditorEvent(); + }, + colorPickerEventHandler = function () { + GB.popupWindow.ColorPicker.argv = { + func: function (color) { + ctd.setAttribute('bgColor', color); + document.getElementById('fm_cell_bgcolor').value = color; + }, + selectedCell : ctd + }; + self.windowOpen('ColorPicker'); + }, + editSubmitEventHandler = function () { + var width = self.trimSpace(document.getElementById('fm_cell_width').value), + height = self.trimSpace(document.getElementById('fm_cell_height').value), + bgcolor = self.trimSpace(document.getElementById('fm_cell_bgcolor').value); + if (width) { + ctd.setAttribute('width', width); + } + if (height) { + ctd.setAttribute('height', height); + } + if (bgcolor) { + ctd.setAttribute('bgcolor', bgcolor); + } + }, + deleteSubmitEventHandler = function () { + ctb.parentNode.removeChild(ctb); + self.doEditorEvent(); + }, + funcs = { + add_cols_after: { icon: 'table_insert_column.png', title: '열 삽입', + func: function () { + insertColumn(ctd.cellIndex); tblReflash(); + }}, + add_rows_after: { icon: 'table_insert_row.png', title: '행 삽입', + func: function () { + insertRow(ctr.rowIndex); tblReflash(); + }}, + remove_cols: { icon: 'table_delete_column.png', title: '열 삭제', + func: function () { + deleteColumn(ctd.cellIndex); tblReflash(); + }}, + remove_rows: { icon: 'table_delete_row.png', title: '행 삭제', + func: function () { + deleteRow(); tblReflash(); + }}, + sp1: { icon: 'dot.gif' }, + merge_cell_right: { icon: 'table_join_row.png', title: '오른쪽 셀과 병합', + func: function () { + mergeCellRight(); tblReflash(); + }}, + merge_cell_down: { icon: 'table_join_column.png', title: '아래 셀과 병합', + func: function () { + mergeCellDown(); tblReflash(); + }}, + split_cell_v: { icon: 'table_split_row.png', title: '셀 열로 나누기', + func: function () { + splitCellVertical(); tblReflash(); + }}, + split_cell_h: { icon: 'table_split_column.png', title: '셀 행으로 나누기', + func: function () { + splitCellHorizontal(); tblReflash(); + }} + }, + attrFuncs = { + setWidth: { + txt: '가로폭', + id: 'fm_cell_width', + marginRight: '10px', + value: ctd.getAttribute('width') + }, + setHeight: { + txt: '세로폭', + id: 'fm_cell_height', + marginRight: '10px', + value: ctd.getAttribute('height') + }, + setBgcolor: { + txt: '배경색', + id: 'fm_cell_bgcolor', + marginRight: '2px', + value: ctd.getAttribute('bgcolor') + } + }, + deleteSubmit = new Image(), + spliter = document.createElement('div'), txt, input, + colorPicker = new Image(), + editSubmit = new Image(); + + + while (ctb && ctb.tagName.toLowerCase() !== 'table') { + ctb = ctb.parentNode; + } + while (ctr && ctr.tagName.toLowerCase() !== 'tr') { + ctr = ctr.parentNode; + } + + self.cheditor.editBlock.innerHTML = ''; + div.style.padding = '6px'; + + for (i in funcs) { + if (!funcs.hasOwnProperty(i)) { + continue; + } + span = document.createElement('span'); + icon = document.createElement('img'); + icon.src = self.config.iconPath + funcs[i].icon; + + if (i === 'sp1' || i === 'sp2') { + icon.className = 'edit-table-ico'; + } else { + icon.setAttribute('title', funcs[i].title); + icon.className = 'edit-table-ico'; + icon.setAttribute('alt', ''); + icon.onclick = funcs[i].func; + } + div.appendChild(span.appendChild(icon)); + } + + deleteSubmit.src = this.config.iconPath + 'delete_table.png'; + deleteSubmit.style.marginLeft = '22px'; + deleteSubmit.className = 'edit-table-ico'; + deleteSubmit.setAttribute('title', '테이블 삭제'); + deleteSubmit.onclick = deleteSubmitEventHandler; + div.appendChild(deleteSubmit); + + spliter.style.padding = '10px 0px 0px 0px'; + spliter.style.marginTop = '5px'; + spliter.style.borderTop = '1px solid #ccc'; + spliter.style.textAlign = 'center'; + + for (i in attrFuncs) { + if (!attrFuncs.hasOwnProperty(i)) { + continue; + } + txt = document.createTextNode(attrFuncs[i].txt + ' '); + spliter.appendChild(txt); + input = document.createElement('input'); + input.style.marginRight = attrFuncs[i].marginRight; + input.setAttribute('type', 'text'); + input.setAttribute('name', i); + input.setAttribute('id', attrFuncs[i].id); + input.setAttribute('size', 7); + input.setAttribute('value', attrFuncs[i].value || ''); + spliter.appendChild(input); + } + + colorPicker.src = this.config.iconPath + 'button/color_picker.gif'; + colorPicker.className = 'color-picker'; + colorPicker.onclick = colorPickerEventHandler; + spliter.appendChild(colorPicker); + + editSubmit.src = this.config.iconPath + 'button/edit_cell.gif'; + editSubmit.className = 'input-submit'; + editSubmit.style.verticalAlign = 'top'; + editSubmit.onclick = editSubmitEventHandler; + + spliter.appendChild(editSubmit); + div.appendChild(spliter); + self.cheditor.editBlock.appendChild(div); + }, + + doEditorEvent : function (evt) { + var self = this, + cmd = null, ancestors = [], node, el, pNode, range, sType, links, span, tag, remove, bText, + srcElement = evt.target || evt.srcElement, + block = self.cheditor.editBlock, + status = self.cheditor.tagPath, + linkOnClickEventHandler = function () { + if (bText) { + document.getElementById('removeSelected').style.display = 'inline'; + self.tagSelector(this.el); + } + }, + removeOnClickEventHandler = function () { + self.doc.execCommand('RemoveFormat', false, null); + remove.style.display = 'none'; + self.editAreaFocus(); + self.doEditorEvent(); + }; + + if (!this.undefined(srcElement) && srcElement.nodeType === GB.node.element) { + pNode = srcElement; + } else { + range = self.getRange(); + sType = self.getSelectionType(); + bText = sType === GB.selection.text; + + if (!self.W3CRange) { + switch (sType) { + case GB.selection.none : + case GB.selection.text : + pNode = range.parentElement(); + break; + case GB.selection.element : + pNode = range.item(0); + break; + default : + pNode = self.editArea.document.body; + } + } else { + pNode = range.commonAncestorContainer; + if (!range.collapsed && + range.startContainer === range.endContainer && + range.startOffset - range.endOffset < 2 && + range.startContainer.hasChildNodes()) + { + pNode = range.startContainer.childNodes[range.startOffset]; + } + while (pNode.nodeType === GB.node.text) { + pNode = pNode.parentNode; + } + } + } + + node = pNode; + while (pNode && pNode.nodeType === GB.node.element) { + if (pNode.tagName.toLowerCase() === 'body') { + break; + } + if (pNode.tagName.toLowerCase() === 'img') { + cmd = 'img'; break; + } + if (pNode.tagName.toLowerCase() === 'td' || pNode.tagName.toLowerCase() === 'th') { + cmd = 'cell'; break; + } + pNode = pNode.parentNode; + } + + if (!cmd) { + block.style.display = 'none'; + block.innerHTML = ''; + } else { + if (cmd === 'cell') { + block.style.display = 'block'; + self.modifyCell(pNode); + } + } + + if (self.config.showTagPath) { + while (node && node.nodeType === GB.node.element) { + ancestors.push(node); + if (node.tagName.toLowerCase() === 'body') { + break; + } + node = node.parentNode; + } + + status.innerHTML = ''; + status.appendChild(document.createTextNode(' ')); + el = ancestors.pop(); + + while (el) { + status.appendChild(document.createTextNode('<')); + tag = el.nodeName.toLowerCase(); + + links = document.createElement('a'); + links.el = el; + links.href = 'javascript:void%200'; + links.className = 'cheditor-tag-path-elem'; + links.title = el.style.cssText; + (function () { + links.onclick = linkOnClickEventHandler; + })(); + links.appendChild(document.createTextNode(tag)); + status.appendChild(links); + status.appendChild(document.createTextNode('> ')); + el = ancestors.pop(); + } + + if (bText) { + remove = document.createElement('a'); + remove.href = 'javascript:void%200'; + remove.id = 'removeSelected'; + remove.style.display = 'none'; + remove.className = 'cheditor-tag-path-elem'; + remove.style.color = '#cc3300'; + remove.appendChild(document.createTextNode('')); + (function () { + remove.onclick = removeOnClickEventHandler; + })(); + span = document.createElement('span'); + span.style.marginTop = '2px'; + span.appendChild(remove); + self.cheditor.tagPath.appendChild(span); + } + } + + self.toolbarUpdate(srcElement); + }, + + tagSelector : function (node) { + var rng, selection; + this.editAreaFocus(); + + if (this.W3CRange) { + selection = this.editArea.getSelection(); + if (this.undefined(selection)) { + return; + } + try { + rng = selection.getRangeAt(0); + } catch (e) { + return; + } + rng.selectNodeContents(node); + selection.removeAllRanges(); + selection.addRange(rng); + } else { + rng = this.doc.body.createTextRange(); + if (rng) { + rng.moveToElementText(node); + rng.select(); + } + } + }, + + getBrowser : function () { + return GB.browser; + }, + $ : function (id) { + return this.doc.getElementById(id); + } +}; + +(function () { + var dragWindow = { + obj: null, + init: function (o, oRoot, minX, maxX, minY, maxY) { + o.style.curser = 'default'; + o.onmousedown = dragWindow.start; + o.onmouseover = function () { + this.style.cursor = 'move'; + }; + o.hmode = true; + o.vmode = true; + o.root = (oRoot && oRoot !== null) ? oRoot : o; + o.transId = oRoot.id + '_Trans'; + + if (o.hmode && isNaN(parseInt(o.root.style.left, 10))) { + o.root.style.left = '0px'; + } + if (o.vmode && isNaN(parseInt(o.root.style.top, 10))) { + o.root.style.top = '0px'; + } + if (!o.hmode && isNaN(parseInt(o.root.style.right, 10))) { + o.root.style.right = '0px'; + } + if (!o.vmode && isNaN(parseInt(o.root.style.bottom, 10))) { + o.root.style.bottom = '0px'; + } + + o.minX = minX !== undefined ? minX : null; + o.minY = minY !== undefined ? minY : null; + o.maxX = maxX !== undefined ? maxX : null; + o.maxY = maxY !== undefined ? maxY : null; + o.root.onDragStart = new Function(); + o.root.onDragEnd = new Function(); + o.root.onDrag = new Function(); + }, + start: function (e) { + var o = dragWindow.obj = this, + dragTransBg = document.createElement('div'), + y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10), + x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10); + + e = dragWindow.fixEv(e); + o.root.onDragStart(x, y); + o.lastMouseX = e.clientX; + o.lastMouseY = e.clientY; + + document.onmousemove = dragWindow.drag; + document.onmouseup = dragWindow.end; + + if (o.root.lastChild.id === o.transId) { + return false; + } + + dragTransBg.className = 'cheditor-dragWindowTransparent'; + if (GB.browser.msie && GB.browser.version < 10) { + dragTransBg.style.filter = 'alpha(opacity=0)'; + } else { + dragTransBg.style.opacity = 0; + } + dragTransBg.id = o.transId; + dragTransBg.style.width = o.root.lastChild.firstChild.style.width; + dragTransBg.style.height = o.root.lastChild.firstChild.style.height; + o.root.appendChild(dragTransBg); + return false; + }, + drag: function (e) { + e = dragWindow.fixEv(e); + var o = dragWindow.obj, + ey = e.clientY, + ex = e.clientX, + y = parseInt(o.vmode ? o.root.style.top : o.root.style.bottom, 10), + x = parseInt(o.hmode ? o.root.style.left : o.root.style.right, 10), + nx, ny; + + nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1)); + ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1)); + + dragWindow.obj.root.style.left = nx + 'px'; + dragWindow.obj.root.style.top = ny + 'px'; + dragWindow.obj.lastMouseX = ex; + dragWindow.obj.lastMouseY = ey; + dragWindow.obj.root.onDrag(nx, ny); + return false; + }, + end: function () { + document.onmousemove = null; + document.onmouseup = null; + dragWindow.obj.root.onDragEnd(parseInt(dragWindow.obj.root.style[dragWindow.obj.hmode ? 'left' : 'right'], 10), + parseInt(dragWindow.obj.root.style[dragWindow.obj.vmode ? 'top' : 'bottom'], 10)); + + if (dragWindow.obj.root.lastChild.id === dragWindow.obj.transId) { + dragWindow.obj.root.removeChild(dragWindow.obj.root.lastChild); + } + dragWindow.obj = null; + }, + fixEv: function (e) { + if (e === undefined) { + e = window.event; + } + if (e.layerX === undefined) { + e.layerX = e.offsetX; + } + if (e.layerY === undefined) { + e.layerY = e.offsetY; + } + return e; + } + }; + GB.dragWindow = dragWindow; +})(); + +// -------------------------------------------------------------------------- +// W3C DOM Range +// + +// -------------------------------------------------------------------------- +// Table +// + +// -------------------------------------------------------------------------- +// Color Picker +// +(function () { + var colorDropper = { + images: {pad: [181, 101], sld: [16, 101], cross: [15, 15], arrow: [7, 11]}, + fetchElement: function (mixed) { + return typeof mixed === 'string' ? document.getElementById(mixed) : mixed; + }, + + addEvent: function (el, evnt, func) { + if (el.addEventListener) { + el.addEventListener(evnt, func, false); + } else if (el.attachEvent) { + el.attachEvent('on' + evnt, func); + } + }, + + fireEvent: function (el, evnt) { + if (!el) { + return; + } + var ev; + if (document.createEvent) { + ev = document.createEvent('HTMLEvents'); + ev.initEvent(evnt, true, true); + el.dispatchEvent(ev); + } else if (document.createEventObject) { + ev = document.createEventObject(); + el.fireEvent('on' + evnt, ev); + } else if (el['on' + evnt]) { + el['on' + evnt](); + } + }, + + getElementPos: function (e) { + var e1 = e, e2 = e, x = 0, y = 0; + if (e1.offsetParent) { + do { + x += e1.offsetLeft; + y += e1.offsetTop; + e1 = e1.offsetParent; + } while (e1); + } + + while (e2 && e2.nodeName.toLowerCase() !== 'body') { + x -= e2.scrollLeft; + y -= e2.scrollTop; + e2 = e2.parentNode; + } + return [x, y]; + }, + + getElementSize: function (e) { + return [e.offsetWidth, e.offsetHeight]; + }, + + getRelMousePos: function (e) { + var x = 0, y = 0; + if (!e) { + e = window.event; + } + if (typeof e.offsetX === 'number') { + x = e.offsetX; + y = e.offsetY; + } else if (typeof e.layerX === 'number') { + x = e.layerX; + y = e.layerY; + } + return {x: x, y: y}; + }, + + color: function (target, prop) { + this.required = true; + this.adjust = true; + this.hash = true; + this.caps = false; + this.valueElement = target; + this.styleElement = target; + this.onImmediateChange = null; + this.hsv = [0, 0, 1]; + this.rgb = [1, 1, 1]; + this.minH = 0; + this.maxH = 6; + this.minS = 0; + this.maxS = 1; + this.minV = 0; + this.maxV = 1; + + this.pickerOnfocus = true; + this.pickerMode = 'HSV'; + this.pickerFace = 3; + this.pickerFaceColor = '#fff'; + this.pickerInset = 1; + this.pickerInsetColor = '#999'; + this.pickerZIndex = 10003; + + var p, + self = this, + modeID = this.pickerMode.toLowerCase() === 'hvs' ? 1 : 0, + abortBlur = false, + valueElement = colorDropper.fetchElement(this.valueElement), styleElement = colorDropper.fetchElement(this.styleElement), + holdPad = false, holdSld = false, touchOffset = {}, + leaveValue = 1 << 0, leaveStyle = 1 << 1, leavePad = 1 << 2, leaveSld = 1 << 3, + updateFieldEventHandler = function () { + self.fromString(valueElement.value, leaveValue); + dispatchImmediateChange(); + }; + + colorDropper.addEvent(target, 'blur', function () { + if (!abortBlur) { + window.setTimeout(function () { + abortBlur || blurTarget(); + abortBlur = false; + }, 0); + } else { + abortBlur = false; + } + }); + + for (p in prop) { + if (prop.hasOwnProperty(p)) { + this[p] = prop[p]; + } + } + + this.hidePicker = function () { + if (isPickerOwner()) { + removePicker(); + } + }; + + this.showPicker = function () { + if (!isPickerOwner()) { + drawPicker(); + } + }; + + this.importColor = function () { + if (!valueElement) { + this.exportColor(); + } else { + if (!this.adjust) { + if (!this.fromString(valueElement.value, leaveValue)) { + styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + } + } else if (!this.required && /^\s*$/.test(valueElement.value)) { + valueElement.value = ''; + styleElement.style.backgroundImage = styleElement.jscStyle.backgroundImage; + styleElement.style.backgroundColor = styleElement.jscStyle.backgroundColor; + styleElement.style.color = styleElement.jscStyle.color; + this.exportColor(leaveValue | leaveStyle); + } else if (this.fromString(valueElement.value)) { + // ignore + } else { + this.exportColor(); + } + } + }; + + this.exportColor = function (flags) { + if (!(flags & leaveValue) && valueElement) { + var value = this.toString(); + if (this.caps) { + value = value.toUpperCase(); + } + if (this.hash) { + value = '#' + value; + } + valueElement.value = value; + } + if (!(flags & leaveStyle) && styleElement) { + styleElement.style.backgroundImage = 'none'; + styleElement.style.backgroundColor = '#' + this.toString(); + styleElement.style.color = 0.213 * this.rgb[0] + 0.715 * this.rgb[1] + 0.072 * this.rgb[2] < 0.5 ? '#FFF' : '#000'; + } + if (!(flags & leavePad) && isPickerOwner()) { + redrawPad(); + } + if (!(flags & leaveSld) && isPickerOwner()) { + redrawSld(); + } + }; + + this.fromHSV = function (h, s, v, flags) { + if (h) { + h = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, h)); + } + if (s) { + s = Math.max(0.0, this.minS, Math.min(1.0, this.maxS, s)); + } + if (v) { + v = Math.max(0.0, this.minV, Math.min(1.0, this.maxV, v)); + } + + this.rgb = this.HSV_RGB( + h === null ? this.hsv[0] : (this.hsv[0] = h), + s === null ? this.hsv[1] : (this.hsv[1] = s), + v === null ? this.hsv[2] : (this.hsv[2] = v) + ); + this.exportColor(flags); + }; + + this.fromRGB = function (r, g, b, flags) { + if (r) { + r = Math.max(0.0, Math.min(1.0, r)); + } + if (g) { + g = Math.max(0.0, Math.min(1.0, g)); + } + if (b) { + b = Math.max(0.0, Math.min(1.0, b)); + } + + var hsv = this.RGB_HSV( + r === null ? this.rgb[0] : r, + g === null ? this.rgb[1] : g, + b === null ? this.rgb[2] : b + ); + if (hsv[0] !== null) { + this.hsv[0] = Math.max(0.0, this.minH, Math.min(6.0, this.maxH, hsv[0])); + } + if (hsv[2] !== 0) { + this.hsv[1] = hsv[1] === null ? null : Math.max(0.0, this.minS, Math.min(1.0, this.maxS, hsv[1])); + } + this.hsv[2] = hsv[2] === null ? null : Math.max(0.0, this.minV, Math.min(1.0, this.maxV, hsv[2])); + + var rgb = this.HSV_RGB(this.hsv[0], this.hsv[1], this.hsv[2]); + this.rgb[0] = rgb[0]; + this.rgb[1] = rgb[1]; + this.rgb[2] = rgb[2]; + + this.exportColor(flags); + }; + + this.fromString = function (hex, flags) { + var m = hex.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i); + if (!m) { + return false; + } + if (m[1].length === 6) { + this.fromRGB( + parseInt(m[1].substr(0, 2), 16) / 255, + parseInt(m[1].substr(2, 2), 16) / 255, + parseInt(m[1].substr(4, 2), 16) / 255, + flags + ); + } else { + this.fromRGB( + parseInt(m[1].charAt(0) + m[1].charAt(0), 16) / 255, + parseInt(m[1].charAt(1) + m[1].charAt(1), 16) / 255, + parseInt(m[1].charAt(2) + m[1].charAt(2), 16) / 255, + flags + ); + } + return true; + }; + + this.toString = function () { + return ( + (0x100 | Math.round(255 * this.rgb[0])).toString(16).substr(1) + + (0x100 | Math.round(255 * this.rgb[1])).toString(16).substr(1) + + (0x100 | Math.round(255 * this.rgb[2])).toString(16).substr(1) + ); + }; + + this.RGB_HSV = function (r, g, b) { + var n = Math.min(Math.min(r, g), b), + v = Math.max(Math.max(r, g), b), + m = v - n, h; + + if (m === 0) { + return [null, 0, v]; + } + h = r === n ? 3 + (b - g) / m : (g === n ? 5 + (r - b) / m : 1 + (g - r) / m); + return [h === 6 ? 0 : h, m / v, v]; + }; + + this.HSV_RGB = function (h, s, v) { + if (h === null) { + return [v, v, v]; + } + var i = Math.floor(h), + f = i % 2 ? h - i : 1 - (h - i), + m = v * (1 - s), + n = v * (1 - s * f); + switch (i) { + case 6: + case 0: + return [v, n, m]; + case 1: + return [n, v, m]; + case 2: + return [m, v, n]; + case 3: + return [m, n, v]; + case 4: + return [n, m, v]; + case 5: + return [v, m, n]; + } + }; + + function removePicker() { + delete colorDropper.picker.owner; + colorDropper.picker.boxB.parentNode.removeChild(colorDropper.picker.boxB); + } + + function drawPicker() { + var touchMoveEventHandler = function (e) { + var event = { + 'offsetX': e.touches[0].pageX - touchOffset.X, + 'offsetY': e.touches[0].pageY - touchOffset.Y + }; + if (holdPad || holdSld) { + holdPad && setPad(event); + holdSld && setSld(event); + dispatchImmediateChange(); + } + e.stopPropagation(); + e.preventDefault(); + }, + dims = getPickerDims(self), + padImg = modeID ? 'color_picker_hv.png' : 'color_picker_hs.png', + i, seg, segSize; + + if (!colorDropper.picker) { + colorDropper.picker = { + box: document.createElement('div'), + boxB: document.createElement('div'), + pad: document.createElement('div'), + padB: document.createElement('div'), + padM: document.createElement('div'), + sld: document.createElement('div'), + sldB: document.createElement('div'), + sldM: document.createElement('div') + }; + for (i = 0, segSize = 2; i < colorDropper.images.sld[1]; i += segSize) { + seg = document.createElement('div'); + seg.style.height = segSize + 'px'; + seg.style.fontSize = '1px'; + seg.style.lineHeight = '0px'; + colorDropper.picker.sld.appendChild(seg); + } + colorDropper.picker.sldB.appendChild(colorDropper.picker.sld); + colorDropper.picker.box.appendChild(colorDropper.picker.sldB); + colorDropper.picker.box.appendChild(colorDropper.picker.sldM); + colorDropper.picker.padB.appendChild(colorDropper.picker.pad); + colorDropper.picker.box.appendChild(colorDropper.picker.padB); + colorDropper.picker.box.appendChild(colorDropper.picker.padM); + colorDropper.picker.boxB.appendChild(colorDropper.picker.box); + } + + p = colorDropper.picker; + p.box.onmouseup = p.box.onmouseout = function () { + target.focus(); + }; + p.box.onmousedown = function () { + abortBlur = true; + }; + p.box.onmousemove = function (e) { + if (holdPad || holdSld) { + holdPad && setPad(e); + holdSld && setSld(e); + if (document.selection) { + document.selection.empty(); + } else if (window.getSelection) { + window.getSelection().removeAllRanges(); + } + dispatchImmediateChange(); + } + }; + + if ('ontouchstart' in window) { + p.box.removeEventListener('touchmove', touchMoveEventHandler, false); + p.box.addEventListener('touchmove', touchMoveEventHandler, false); + } + p.padM.onmouseup = p.padM.onmouseout = function () { + if (holdPad) { + holdPad = false; + colorDropper.fireEvent(valueElement, 'change'); + } + }; + p.padM.onmousedown = function (e) { + switch (modeID) { + case 0: + if (self.hsv[2] === 0) { + self.fromHSV(null, null, 1.0); + } + break; + case 1: + if (self.hsv[1] === 0) { + self.fromHSV(null, 1.0, null); + } + break; + } + holdSld = false; + holdPad = true; + setPad(e); + dispatchImmediateChange(); + }; + + if ('ontouchstart' in window) { + p.padM.addEventListener('touchstart', function (e) { + touchOffset = {'X': getOffsetParent(e.target).Left, 'Y': getOffsetParent(e.target).Top}; + this.onmousedown({ + 'offsetX': e.touches[0].pageX - touchOffset.X, + 'offsetY': e.touches[0].pageY - touchOffset.Y + }); + }); + } + p.sldM.onmouseup = p.sldM.onmouseout = function () { + if (holdSld) { + holdSld = false; + colorDropper.fireEvent(valueElement, 'change'); + } + }; + p.sldM.onmousedown = function (e) { + holdPad = false; + holdSld = true; + setSld(e); + dispatchImmediateChange(); + }; + if ('ontouchstart' in window) { + p.sldM.addEventListener('touchstart', function (e) { + touchOffset = {'X': getOffsetParent(e.target).Left, 'Y': getOffsetParent(e.target).Top}; + this.onmousedown({ + 'offsetX': e.touches[0].pageX - touchOffset.X, + 'offsetY': e.touches[0].pageY - touchOffset.Y + }); + }); + } + + p.box.style.width = dims[0] + 'px'; + p.box.style.height = dims[1] + 'px'; + + p.boxB.style.position = 'relative'; + p.boxB.style.clear = 'both'; + p.boxB.style.border = 'none'; + p.boxB.style.background = self.pickerFaceColor; + + p.pad.style.width = colorDropper.images.pad[0] + 'px'; + p.pad.style.height = colorDropper.images.pad[1] + 'px'; + + p.padB.style.position = 'absolute'; + p.padB.style.left = self.pickerFace + 'px'; + p.padB.style.top = self.pickerFace + 'px'; + p.padB.style.border = self.pickerInset + 'px solid'; + p.padB.style.borderColor = self.pickerInsetColor; + + p.padM.style.position = 'absolute'; + p.padM.style.left = '0'; + p.padM.style.top = '0'; + p.padM.style.width = self.pickerFace + 2 * self.pickerInset + colorDropper.images.pad[0] + colorDropper.images.arrow[0] + 'px'; + p.padM.style.height = p.box.style.height; + p.padM.style.cursor = 'crosshair'; + + p.sld.style.overflow = 'hidden'; + p.sld.style.width = '13px'; + p.sld.style.height = colorDropper.images.sld[1] + 'px'; + + p.sldB.style.position = 'absolute'; + p.sldB.style.right = self.pickerFace + 'px'; + p.sldB.style.top = self.pickerFace + 'px'; + p.sldB.style.border = self.pickerInset + 'px solid'; + p.sldB.style.borderColor = self.pickerInsetColor; + + p.sldM.style.position = 'absolute'; + p.sldM.style.right = '0'; + p.sldM.style.top = '0'; + p.sldM.style.width = 14 + colorDropper.images.arrow[0] + self.pickerFace + 2 * self.pickerInset + 'px'; + p.sldM.style.height = p.box.style.height; + + try { + p.sldM.style.cursor = 'pointer'; + } catch (e) { + p.sldM.style.cursor = 'hand'; + } + + p.padM.style.backgroundImage = 'url("' + self.iconDir + '/color_picker_cross.gif")'; + p.padM.style.backgroundRepeat = 'no-repeat'; + p.sldM.style.backgroundImage = 'url("' + self.iconDir + '/color_picker_arrow.gif")'; + p.sldM.style.backgroundRepeat = 'no-repeat'; + p.pad.style.backgroundImage = 'url("' + self.iconDir + '/' + padImg + '")'; + p.pad.style.backgroundRepeat = 'no-repeat'; + p.pad.style.backgroundPosition = '0 0'; + redrawPad(); + redrawSld(); + colorDropper.picker.owner = self; + target.parentNode.parentNode.appendChild(p.boxB); + } + + function getPickerDims(o) { + return [2 * o.pickerInset + 2 * o.pickerFace + colorDropper.images.pad[0] + + 2 * o.pickerInset + 2 * colorDropper.images.arrow[0] + colorDropper.images.sld[0], + 2 * o.pickerInset + 2 * o.pickerFace + colorDropper.images.pad[1]]; + } + + function redrawPad() { + var yComponent, x, y, i = 0, rgb, s, c, f, + seg = colorDropper.picker.sld.childNodes; + + switch (modeID) { + case 0: + yComponent = 1; + break; + case 1: + yComponent = 2; + break; + } + x = Math.round((self.hsv[0] / 6) * (colorDropper.images.pad[0] - 1)); + y = Math.round((1 - self.hsv[yComponent]) * (colorDropper.images.pad[1] - 1)); + colorDropper.picker.padM.style.backgroundPosition = + (self.pickerFace + self.pickerInset + x - Math.floor(colorDropper.images.cross[0] / 2)) + 'px ' + + (self.pickerFace + self.pickerInset + y - Math.floor(colorDropper.images.cross[1] / 2)) + 'px'; + + switch (modeID) { + case 0: + rgb = self.HSV_RGB(self.hsv[0], self.hsv[1], 1); + if (window.File && window.FileReader) { + colorDropper.picker.sld.style.background = 'linear-gradient(rgb(' + + (rgb[0] * (1 - i / seg.length) * 100) + '%,' + + (rgb[1] * (1 - i / seg.length) * 100) + '%,' + + (rgb[2] * (1 - i / seg.length) * 100) + '%), black)'; + } else { + for (i = 0; i < seg.length; i += 1) { + seg[i].style.backgroundColor = 'rgb(' + + (rgb[0] * (1 - i / seg.length) * 100) + '%,' + + (rgb[1] * (1 - i / seg.length) * 100) + '%,' + + (rgb[2] * (1 - i / seg.length) * 100) + '%)'; + } + } + break; + case 1: + c = [self.hsv[2], 0, 0]; + i = Math.floor(self.hsv[0]); + f = i % 2 ? self.hsv[0] - i : 1 - (self.hsv[0] - i); + switch (i) { + case 6: + case 0: + rgb = [0, 1, 2]; + break; + case 1: + rgb = [1, 0, 2]; + break; + case 2: + rgb = [2, 0, 1]; + break; + case 3: + rgb = [2, 1, 0]; + break; + case 4: + rgb = [1, 2, 0]; + break; + case 5: + rgb = [0, 2, 1]; + break; + } + + for (i = 0; i < seg.length; i += 1) { + s = 1 - 1 / (seg.length - 1) * i; + c[1] = c[0] * (1 - s * f); + c[2] = c[0] * (1 - s); + seg[i].style.backgroundColor = 'rgb(' + + (c[rgb[0]] * 100) + '%,' + + (c[rgb[1]] * 100) + '%,' + + (c[rgb[2]] * 100) + '%)'; + } + break; + } + } + + function getOffsetParent(el) { + var parent = el.offsetParent, top = 0, left = 0; + while (parent) { + top += parent.offsetTop; + left += parent.offsetLeft; + parent = parent.offsetParent; + } + return {Left: left, Top: top}; + } + + function redrawSld() { + var yComponent, y; + switch (modeID) { + case 0: + yComponent = 2; + break; + case 1: + yComponent = 1; + break; + } + y = Math.round((1 - self.hsv[yComponent]) * (colorDropper.images.sld[1] - 1)); + colorDropper.picker.sldM.style.backgroundPosition = + '0 ' + (self.pickerFace + self.pickerInset + y - Math.floor(colorDropper.images.arrow[1] / 2)) + 'px'; + } + + function isPickerOwner() { + return colorDropper.picker && colorDropper.picker.owner === self; + } + + function blurTarget() { + if (valueElement === target) { + self.importColor(); + } + } + + function blurValue() { + if (valueElement !== target) { + self.importColor(); + } + } + + function setPad(e) { + var mpos = colorDropper.getRelMousePos(e), + x = mpos.x - self.pickerFace - self.pickerInset, + y = mpos.y - self.pickerFace - self.pickerInset; + switch (modeID) { + case 0: + self.fromHSV(x * (6 / (colorDropper.images.pad[0] - 1)), 1 - y / (colorDropper.images.pad[1] - 1), null, leaveSld); + break; + case 1: + self.fromHSV(x * (6 / (colorDropper.images.pad[0] - 1)), null, 1 - y / (colorDropper.images.pad[1] - 1), leaveSld); + break; + } + } + + function setSld(e) { + var mpos = colorDropper.getRelMousePos(e), + y = mpos.y - self.pickerFace - self.pickerInset; + switch (modeID) { + case 0: + self.fromHSV(null, null, 1 - y / (colorDropper.images.sld[1] - 1), leavePad); + break; + case 1: + self.fromHSV(null, 1 - y / (colorDropper.images.sld[1] - 1), null, leavePad); + break; + } + } + + function dispatchImmediateChange() { + if (self.onImmediateChange) { + var callback; + if (typeof self.onImmediateChange === 'string') { + callback = new Function(self.onImmediateChange); + } else { + callback = self.onImmediateChange; + } + callback.call(self); + } + } + + if (valueElement) { + colorDropper.addEvent(valueElement, 'keyup', updateFieldEventHandler); + colorDropper.addEvent(valueElement, 'input', updateFieldEventHandler); + colorDropper.addEvent(valueElement, 'blur', blurValue); + valueElement.setAttribute('autocomplete', 'off'); + } + + this.importColor(); + } + }; + GB.colorDropper = colorDropper.color; +})(); diff --git a/plugin/editor/cheditor5/css/SourceCodePro.eot b/plugin/editor/cheditor5/css/SourceCodePro.eot new file mode 100644 index 0000000000000000000000000000000000000000..2388fa2d76bdde454f2c1859d3f5621a49878bb0 GIT binary patch literal 83743 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 ir?{?FXP<+xvf6n%P literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/css/SourceCodePro.woff b/plugin/editor/cheditor5/css/SourceCodePro.woff new file mode 100644 index 0000000000000000000000000000000000000000..395436eb8493c7f2b990460567348950d0171c94 GIT binary patch literal 89024 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 n(Q literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/css/dialog.css b/plugin/editor/cheditor5/css/dialog.css new file mode 100644 index 000000000..3c87b0e2c --- /dev/null +++ b/plugin/editor/cheditor5/css/dialog.css @@ -0,0 +1,185 @@ +body { + background-color: #fff; + margin: 0; + border: 0; + padding: 0; + font-size: 9pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + line-height: 1em; + overflow: hidden; +} +td, input { + font-size: 9pt; + vertical-align: middle; + margin: 0; + line-height: 15px; + height: 15px; +} +select { + font-size: 9pt; + vertical-align: middle; + margin: 0; +} +.handCursor { + cursor: pointer; +} +td.hover +{ + background-color : Fuchsia; +} +table.dlg { + border: 0; +} +fieldset { + border: 1px solid #ccc; + padding: 2px; + margin: 0; +} +.content-outline { + border: 1px solid #ccc; + border-radius: 4px; + padding: 5px; + margin: 0; +} +.dlg td { + text-align: left; + height: 20px; +} +form { + display: inline; +} +.dlg input { + border: 2px; +} +.img { + border: 0; + vertical-align: middle; +} +.font-normal { + font-size: 9pt; +} +legend { + font-size: 9pt; + font-weight: bold; +} +.bottom-status { + background-color: #fff; + margin-top: 10px; + padding: 0; + text-align: center; + height: 24px; + vertical-align: middle; +} +.button { + width: 64px; + height: 22px; + margin: 1px 2px; + cursor: pointer; + vertical-align: middle; +} +.button8em { + font-size: 9pt; + padding-top: 2px !important; + height: 21px; + width: 8em; +} +.button10em { + font-size: 9pt; + padding-top: 1px !important; + height: 21px; + width: 10em; +} +.emIcon { + width: 19px; + height: 19px; + cursor: pointer; +} +.schar { + border: 1px solid #ccc; + background-color: #fff; + width: 18px; + height: 17px; + text-align: center; + cursor: pointer; + font-size: 12px; + line-height: 1.2em; +} +.spacer { + margin: 10px 0 0 0; +} +.spacer5 { + margin: 5px 0 0 0; + clear: both; +} +.wrapper { + text-align: center; +} +.clear { + clear: both; +} +.flash-movie-source { + margin: 0 auto; +} +.flash-player-wrapper { + width: 560px; + height: 315px; + border: 1px #a0a0a0 solid; + text-align: center; + overflow: auto; + margin: 0 auto; + background-color: #fff; + display: block; +} +.media-player-wrapper { + height: 200px; + margin-top: 5px; + text-align: center; + overflow-x: auto; + overflow-y: hidden; +} +.hr { + border: 0; + background: #e0e0e0; + height: 1px; +} +.colorCellMouseOver { + line-height: 0; + font-size: 0; + height: 8px; + width: 8px; + border: 1px solid #fff; +} +.colorCellMouseOut { + line-height: 8px; + font-size: 0; + height: 8px; + width: 8px; + border: 1px solid #000; +} +.colorInputBox { + background-color: #000; + text-align: center; + border: 1px solid #000; + height: 16px; +} +.colorWrapper { + border: 1px solid #000; + background-color: #fff; + position: absolute; + padding: 2px; + display: none; +} +.colorPickerButton { + background: url("../icons/button/color_picker.png") no-repeat center center; + width: 24px; + height: 20px; + cursor: pointer; + float: left; +} +.colorPickerButtonGray { + background: url("../icons/button/color_picker_disable.png") no-repeat center center; + width: 24px; + height: 20px; + cursor: pointer; + float: left; +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/css/editarea.css b/plugin/editor/cheditor5/css/editarea.css new file mode 100644 index 000000000..5350c82a6 --- /dev/null +++ b/plugin/editor/cheditor5/css/editarea.css @@ -0,0 +1,23 @@ +html, body { +} + +p { + margin: 0; +} +table, td, th { border:1px dotted #ccc; } +table { border-collapse: collapse } + +/*-------------------------------------------------------------------------------*/ +.ch_bogus_spacer {} +.cheditor-zero-width { font-family: monospace; } +.cheditor-insertpara-pointer { + height: 1px; + display: none; + overflow: hidden; + background-color: red; + position: absolute; +} +.cheditor-add-paragraph { + border: #999 dotted 1px; + margin: 1px 0px; +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/css/imageupload.css b/plugin/editor/cheditor5/css/imageupload.css new file mode 100644 index 000000000..0589dd629 --- /dev/null +++ b/plugin/editor/cheditor5/css/imageupload.css @@ -0,0 +1,136 @@ +#uploadWindow { + display: none; +} + +.clear { clear: both; } + +#container { + padding: 0; +} + +.imageListWrapperHtml5, .imageListWrapper, .dragOver { + background-color: #fff; + position: absolute; + height: 295px; + width: 522px; + overflow-y: scroll; + border-radius: 4px; + border: 1px red solid; +} +.imageListWrapperHtml5 { + border: 2px #66b2ff dashed; +} +.imageListWrapper { + border: 1px #aaa solid; + box-shadow: 0 0 3px #aaa; +} +.dragOver { + border: 2px #ff3399 dashed; +} +#imageInfoBox { + position: absolute; + left: 548px; +} +.imageInfoTitle { + text-align: center; + background-color: #e0e0e0; + width: 130px; + font-family: "Malgun Gothic",gulim; + font-weight: bold; + font-size: 12px; +} +.imageInfoTitle span { + display: inline-block; + margin-top: -1px; + line-height: 22px; +} +.remove-button { + width: 93px; + height: 22px; + cursor: pointer; + vertical-align: middle; +} +.imageBox, .imageBoxHighlighted { + width: 120px; + height: 90px; + margin: 3px 3px; + float: left; +} +.imageBox_theImage,.imageBox_theImage_over { + width: 100%; + height: 100%; + position: relative; + display: block; + background-color: #fff; +} +.imageBox .imageBox_theImage{ + border: 1px solid #e0e0e0; + background-image: url('../icons/dot.gif'); + background-position: center center; + background-repeat: no-repeat; +} +.imageBox .imageBox_theImage_over { + border: 1px solid #a0a0a0; + background-image: url('../icons/dot.gif'); + background-position: center center; + background-repeat: no-repeat; + cursor: pointer; +} +.imageBoxHighlighted .imageBox_theImage { + border: 1px solid #ff6600; +} +.imageBoxHighlighted .imageBox_theImage_over { + border: 1px solid #ff6600; + background-image: url('../icons/dot.gif'); + background-position: center center; + background-repeat: no-repeat; +} + +.removeButton, .removeButton_over { + display: none; + position: absolute; + cursor: pointer; + background-image: url(../icons/imageUpload/cross-small.png); + background-repeat: no-repeat; + background-position: center center; +} +.removeButton { + border: 1px solid #a0a0a0; +} +.removeButton_over { + border: 1px solid #808080; +} +#insertionMarker { + height: 102px; + width: 6px; + position: absolute; + display: none; +} + +#insertionMarker img { + float: left; +} + +#dragDropContent{ + position: absolute; + z-index: 10; + display: none; +} + +.button { + width: 64px; + height: 22px; + margin: 0 2px; + cursor: pointer; + vertical-align: middle; +} + +body { + margin: 0; + padding: 0; + overflow: hidden; + background-color: #fff; + line-height: 1em; + font-family: 'Malgun Gothic', gulim, tahoma, helvetica; + font-size: 12px; +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/css/imageurl.css b/plugin/editor/cheditor5/css/imageurl.css new file mode 100644 index 000000000..7332065a7 --- /dev/null +++ b/plugin/editor/cheditor5/css/imageurl.css @@ -0,0 +1,5 @@ +/* CSS file */ + +Application +{ +} diff --git a/plugin/editor/cheditor5/css/lightbox.css b/plugin/editor/cheditor5/css/lightbox.css new file mode 100644 index 000000000..a45cdfc60 --- /dev/null +++ b/plugin/editor/cheditor5/css/lightbox.css @@ -0,0 +1,95 @@ +/************************************************ + + CHEditor Image Caption Util + +************************************************/ +img.chimg_photo +{ + border: 1px darkgray solid; + padding:10px; +} +div.imgblock +{ +} +div.leftjust +{ +} +div.rightjust +{ +} +div.caption +{ + margin-top: 5px; + margin-left: 0.2em; + color: darkgray; + font-size: 9pt; +} +div.caption-marker +{ + float: left; + margin-right: 0.2em; +} +div.caption-text +{ + float: left; + clear: right; + text-align: left; +} +.imageUtil { + cursor: url(icons/imageutil/zoomin.cur), pointer; + outline: none; +} +.imageUtil img { + border: 2px solid gray; +} +.imageUtil:hover img { + border: 2px solid silver; +} + +.imageUtil-image { + border-bottom: 1px solid white; +} +.imageUtil-image-blur { +} +.imageUtil-caption { + display: none; + border-bottom: 1px solid white; + font-family: gulim, Verdana, Helvetica; + font-size: 9pt; + padding: 5px; + background-color: #fff; +} +.imageUtil-loading { + display: block; + color: white; + font-size: 9px; + font-weight: normal; + text-decoration: none; + padding: 3px; + border-top: 1px solid white; + border-bottom: 1px solid white; + background-color: black; + padding-left: 22px; + background-image: url(icons/imageutil/loader.gif); + background-repeat: no-repeat; + background-position: 3px 1px; +} + +a.imageUtil-credits, +a.imageUtil-credits i { + padding: 2px; + color: silver; + text-decoration: none; + font-size: 10px; +} +a.imageUtil-credits:hover, +a.imageUtil-credits:hover i { + color: white; + background-color: gray; +} +.imageUtil-display-block { + display: block; +} +.imageUtil-display-none { + display: none; +} diff --git a/plugin/editor/cheditor5/css/ui.css b/plugin/editor/cheditor5/css/ui.css new file mode 100644 index 000000000..2273f4034 --- /dev/null +++ b/plugin/editor/cheditor5/css/ui.css @@ -0,0 +1,653 @@ +a.cheditor-tag-path-elem { + text-decoration: none; + color: #0033cc; + font-size: 8pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", dotum, monospace; + cursor: pointer; +} +a.cheditor-tag-path-elem:hover { + color: #0033cc; + text-decoration: underline; + cursor: pointer; +} +.cheditor-container { + border-top: 1px #ccc solid; + position: relative; + text-align: left; +} +.cheditor-tb-wrapper { + border-right: 1px #ccc solid; + border-left: 1px #ccc solid; + border-bottom: 1px #ccc solid; + position: relative; + display: block; + background-color: #f0f0f0; + zoom:1; + height:auto ! important; +} +.cheditor-tb-wrapper:after{display:block;visibility:hidden;clear:both;content:""} +.cheditor-tb-wrapper-readonly { + border-right: 1px #ccc solid; + border-left: 1px #ccc solid; + border-bottom: 1px #ccc solid; + position: relative; + display: block; + background: #f0f0f0 url(../icons/readonlymode.png) no-repeat 10px center; +} +.cheditor-tb-wrapper-code { + border-right: 1px #ccc solid; + border-left: 1px #ccc solid; + border-bottom: 1px #ccc solid; + position: relative; + display: block; + background: #f0f0f0 url(../icons/viewmode_code.png) no-repeat 10px center; +} +.cheditor-tb-wrapper-preview { + border-right: 1px #ccc solid; + border-left: 1px #ccc solid; + border-bottom: 1px #ccc solid; + position: relative; + display: block; + background: #f0f0f0 url(../icons/viewmode_preview.png) no-repeat 10px center; +} +.cheditor-tb-wrapper-readonly div, .cheditor-tb-wrapper-code div, .cheditor-tb-wrapper-preview div { + display: none; +} +.cheditor-tb-fullscreen { + width: 16px; + height: 16px; + float: right; + margin-top: 3px; + cursor: pointer; + background: transparent url(../icons/fullscreen.png) no-repeat center center; +} +.cheditor-tb-fullscreen-disable { + display: none; +} +.cheditor-tb-fullscreen-actual { + width: 16px; + height: 16px; + float: right; + margin-top: 3px; + cursor: pointer; + background: transparent url(../icons/fullscreen_actual.png) no-repeat center center; +} +.cheditor-editarea-wrapper { + border-right: 1px #ccc solid; + border-bottom: 1px #ccc solid; + border-left: 1px #ccc solid; + width: auto; + overflow: hidden; +} +.cheditor-editarea { + width: 100%; + overflow-x: hidden; + overflow-y: auto; + margin: 0; + padding: 0; + display: block; +} +@font-face { + font-family: 'SourceCodePro'; + src: url('SourceCodePro.eot'); + src: url('SourceCodePro.woff') format('woff'); +} +.cheditor-editarea-text-content { + overflow-x: hidden; + overflow-y: scroll; + margin: 0; + border: 1px solid transparent; + padding: 7px 10px; + display: none; + resize: none; + outline: none; + font-family: SourceCodePro, monospace; + font-size: 12px; +} +.cheditor-modify-block .cheditor-ico { + width: 16px; + height: 16px; + vertical-align: middle; + margin-right: 5px; +} +.cheditor-modify-block select { + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + font-size: 9pt; + color: #000; +} +.cheditor-modify-block div { + padding: 5px 10px 5px 10px; + color: #000; + display: block; +} +.cheditor-modify-block div .wrap-text-desc { + line-height: 1em; + color: #000; +} +.cheditor-modify-block div .user-input-alt { + width: 120px; + margin: 3px 10px 0 5px; + height: 15px; + line-height: 15px; + padding-top: 1px; + font-size: 9pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + color: #000; +} +.cheditor-modify-block div .user-input-caption { + width: 350px; + margin: 7px 10px 0 5px; + height: 15px; + line-height: 15px; + padding-top: 1px; + font-size: 9pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + color: #000; +} +.cheditor-modify-block div .caption-align { + margin: 7px 0 0 4px; + font-size: 9pt; + vertical-align: top; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + color: #000; +} +.cheditor-modify-block div .wrap-checked { + vertical-align: middle; + padding: 0; + margin-right: 2px; +} +.cheditor-modify-block div .input-submit { + cursor: pointer; + vertical-align: middle; + margin-top: -2px; + margin-left: 10px; + height: 20px; + width: 64px; +} +.cheditor-modify-block div .color-picker { + cursor: pointer; + vertical-align: middle; + height: 20px; + width: 20px; +} +.cheditor-modify-block div .delete-submit { + cursor: pointer; + vertical-align: middle; + margin-top: -2px; + margin-left: 3px; + height: 20px; + width: 64px; +} +.cheditor-modify-block div .edit-table-ico { + cursor: pointer; + vertical-align: middle; + width: 16px; + height: 16px; + margin: 0 3px; +} +.cheditor-modify-block { + display: none; + border-right: 1px #ccc solid; + border-bottom: 1px #ccc solid; + border-left: 1px #ccc solid; + padding: 2px; + background-color: #eee; + font-size: 9pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + text-align: center; +} +.cheditor-status-bar { + font-size: 8pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", dotum, monospace; + color: #333; +} +.cheditor-tag-path { + border-right: 1px #ccc solid; + border-bottom: 1px #ccc solid; + border-left: 1px #ccc solid; + padding: 0 2px 0 2px; + display: none; + height: 18px; + line-height: 18px; + overflow: hidden; +} +.cheditor-viewmode { + padding: 0 4px 0 4px; + height: 16px; + background: transparent url(../icons/statusbar_bgline.gif) repeat-x 0 0; +} +.cheditor-viewmode div { + width: 24px; + height: 16px; + cursor: pointer; +} +.cheditor-tab-rich { + background: transparent url(../icons/edit_mode_rich_a.png) no-repeat 0 0; + float: left; +} +.cheditor-tab-rich-off { + background: transparent url(../icons/edit_mode_rich_b.png) no-repeat 0 0; + float: left; +} +.cheditor-tab-code { + background: transparent url(../icons/edit_mode_code_a.png) no-repeat 0 0; + float: left; +} +.cheditor-tab-code-off { + background: transparent url(../icons/edit_mode_code_b.png) no-repeat 0 0; + float: left; +} +.cheditor-tab-preview { + background: transparent url(../icons/edit_mode_view_a.png) no-repeat 0 0; + float: left; +} +.cheditor-tab-preview-off { + background: transparent url(../icons/edit_mode_view_b.png) no-repeat 0 0; + float: left; +} +.cheditor-resizebar { + height: 11px; + overflow: hidden; + border-left: 1px #ccc solid; + border-right: 1px #ccc solid; + cursor: s-resize; + background: #eee url(../icons/splitter.gif) no-repeat center top; +} +.cheditor-resizebar-off { + height: 11px; + overflow: hidden; + border-left: 1px #ccc solid; + border-right: 1px #ccc solid; + cursor: default; + background-color: #eee; +} +.cheditor_mode_icon { width: 24px; height: 16px; cursor: pointer; vertical-align: top } +.cheditor-pulldown-container { + border: #7d8db0 1px solid; + background-color: #fff; + padding: 1px; + position: relative; + -moz-box-shadow: 0 0 5px #aaa; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 1px 1px 10px #bbb; +} +.cheditor-pulldown-container div { + padding: 2px 2px 2px 15px; + font-size: 9pt; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + color: #222; + position: relative; + display: block; + line-height: 1.2; + margin: 2px 2px; +} +.cheditor-pulldown-color-container { + border: #7d8db0 1px solid; + -moz-box-shadow: 0 0 5px #aaa; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 1px 1px 10px #bbb; + background-color: #fff; + padding: 2px; +} +.cheditor-pulldown-container div label, .cheditor-pulldown-textblock-container div label { + display: block; +} +.cheditor-pulldown-textblock-container div div { + text-align: center; + padding: 2px; + font-size: 9pt; + color: #000; + line-height: 1.2; +} +.cheditor-pulldown-textblock-container div { + padding: 1px; +} +.cheditor-pulldown-textblock-out { + border: #fff 1px solid; +} +.cheditor-pulldown-textblock-over { + border: #ccc 1px solid; +} +.cheditor-pulldown-textblock-container { + border: #7d8db0 1px solid; + -moz-box-shadow: 0 0 5px #aaa; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 1px 1px 10px #bbb; + background-color: #fff; + padding: 2px; +} +.cheditor-pulldown-mouseout { + border: #fff 1px solid; +} +.cheditor-pulldown-mouseover { + background-color: #f0f0f0; + border: #e0e0e0 1px solid; +} +.cheditor-pulldown-frame { + position: absolute; + visibility: hidden; + z-index: -1; + width: 1px; + height: 1px; + line-height: 12px; +} +.cheditor-pulldown-color-cell-over, .cheditor-pulldown-color-cell { + float: left; + width: 14px; + height: 14px; + margin: 1px; + cursor: pointer; +} +.cheditor-pulldown-color-cell-over { + border: 1px #000 solid; +} +.cheditor-pulldown-color-cell-over span { + width: 12px; + height: 12px; + border: 1px #fff solid; + display: block; +} +.cheditor-pulldown-color-cell { + border: 1px #999 solid; +} +.cheditor-pulldown-color-cell span { + width: 14px; + height: 14px; + display: block; + border: none; +} +.cheditor-pulldown-color-selected { + border: 1px solid #999; + text-align: left; + margin: 4px 0 0 1px; + padding-left: 5px; + height: 15px; + line-height: 15px; + font-size: 11px; + font-family: verdana, monospace; + width: 55px; + vertical-align: -10%; +} +.cheditor-pulldown-color-reset, .cheditor-pulldown-color-show-picker { + height: 19px; + width: 16px; + cursor: pointer; + display: inline-block; + vertical-align: middle; + margin-left: 3px; +} +.cheditor-pulldown-color-reset { + background: #fff url(../icons/color_picker_reset.png) no-repeat center center; +} +.cheditor-pulldown-color-show-picker { + background: #fff url(../icons/color_picker.png) no-repeat center center; +} +.cheditor-pulldown-color-submit { + vertical-align: middle; + margin: 4px 1px 0 0; + height: 19px; + width: 40px; + cursor: pointer; + right: 0; + position: absolute; +} +.cheditor-container-fullscreen { + position: fixed; + left: 0; + top: 0; + _position: absolute; + z-index: 1000; + text-align: left; + background-color: #fff; +} +.cheditor-popupModalBackground { + background-color: #fff; + position: fixed; + _position: absolute; + display: none; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cheditor-popup-window { + border: 1px solid #0078D7; + border-radius: 5px; + background-color: #0078D7; + display: none; + position: absolute; + top: 0; + left: 0; + -moz-box-shadow: 0 0 5px #aaa; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 10px #bbb; + padding: 0; + overflow: hidden; +} +.cheditor-popup-cmd-button { + width: 64px; + height: 22px; + margin: 5px 2px; + cursor: pointer; + vertical-align: middle; +} +.cheditor-popup-cframe { + background-color: #fff; + margin: 0; + padding: 10px; + border: none; + text-align: center; +} + +.cheditor-popup-cframe iframe { + margin: 0; + padding: 0; + overflow: hidden; +} +.cheditor-popup-drag-handle { + height: 31px; +} +.cheditor-popup-titlebar { + padding-left: 10px; + line-height: 30px; +} +.cheditor-popup-title { + font-size: 12px; + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + font-weight: bold; + color: #fff; +} +.cheditor-dragWindowTransparent { + background-color: #fff; + position: absolute; + display: block; + left: 0px; + top: 27px; +} +.cheditor-pulldown-wrapper { + line-height: 1; +} +.cheditor-toolbar-icon-wrapper { + margin: 0 2px 0 0; + float: left; + height: 24px; + overflow: hidden; +} +.cheditor-tb-icon { + height: 22px; + width: 16px; + overflow: hidden; +} +.cheditor-tb-icon-disable { + height: 22px; + width: 16px; + overflow: hidden; + filter: alpha(opacity=40) gray; + opacity: 0.4; +} +.cheditor-tb-text { + padding: 0; + margin: 0; + color: #333; + height: 20px; + line-height: 20px; +} +.cheditor-tb-text-disable { + padding: 0; + margin: 0; + height: 20px; + line-height: 20px; + color: #333; + overflow: hidden; + filter: alpha(opacity=40) gray; + -webkit-filter: grayscale(100%); + opacity: 0.4; +} +.cheditor-tb-text span, .cheditor-tb-text-disable span { + font-family: "Malgun Gothic", "Apple SD Gothic Neo", gulim, monospace; + margin: 0 0 0 1px; + padding: 0; + width: 41px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + display: block; + font-size: 12px; +} +.cheditor-tb-icon23 { + height: 22px; + width: 23px; + margin-left: 3px; + overflow: hidden; +} +.cheditor-tb-icon23-disable { + height: 22px; + width: 23px; + margin-left: 3px; + overflow: hidden; + filter: alpha(opacity=40) gray; + opacity: 0.4; +} +.cheditor-tb-icon36 { + height: 22px; + width: 36px; + overflow: hidden; +} +.cheditor-tb-icon36-disable { + height: 22px; + width: 36px; + overflow: hidden; + filter: alpha(opacity=40) gray; + opacity: 0.4; +} +.cheditor-tb-combo { + height: 22px; + width: 10px; + overflow: hidden; +} +.cheditor-tb-combo-disable { + height: 22px; + width: 10px; + overflow: hidden; + filter: alpha(opacity=40) gray; + opacity: 0.4; +} +.cheditor-tb-bg55 { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -483px; + position: relative; +} +.cheditor-tb-bg40 { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -552px; + position: relative; +} +.cheditor-tb-bg44 { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -621px; + position: relative; +} +.cheditor-tb-bg30-first { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -276px; + position: relative; +} +.cheditor-tb-bg30 { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -345px; + position: relative; +} +.cheditor-tb-bg30-last { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -414px; + position: relative; +} +.cheditor-tb-bgcombo { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -690px; + position: relative; +} +.cheditor-tb-bgcombo-first { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left top; + position: relative; +} +.cheditor-tb-bgcombo-last { + float: left; + overflow: hidden; + background: url(../icons/toolbar-background.png) no-repeat left -759px; + position: relative; +} +.cheditor-tb-bg { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -69px; + position: relative; +} +.cheditor-tb-bg-first { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left top; + position: relative; +} +.cheditor-tb-bg-last { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -138px; + position: relative; + background-clip: border-box; +} +.cheditor-tb-bg-single { + float: left; + overflow: hidden; + background: transparent url(../icons/toolbar-background.png) no-repeat left -207px; + position: relative; +} +.cheditor-tb-color-btn { + width: 16px; + height: 3px; + overflow: hidden; + position: absolute; + top: 16px; + left: 3px; +} +.cheditor-tb-button-spacer { + overflow: hidden; + width: 4px; + height: 4px; + float: left; +} +.cheditor-tb-split { + overflow: hidden; + height: 2px; + width: 3px; + clear: both; +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/editor.lib.php b/plugin/editor/cheditor5/editor.lib.php new file mode 100644 index 000000000..6c0c578d2 --- /dev/null +++ b/plugin/editor/cheditor5/editor.lib.php @@ -0,0 +1,158 @@ +') ) { //textarea로 작성되고, html 내용이 없다면 + $content = nl2br($content); + } + } + + $width = isset($editor_width) ? $editor_width : "100%"; + $height = isset($editor_height) ? $editor_height : "250px"; + if (defined(G5_PUNYCODE)) + $editor_url = G5_PUNYCODE.'/'.G5_EDITOR_DIR.'/'.$config['cf_editor']; + else + $editor_url = G5_EDITOR_URL.'/'.$config['cf_editor']; + + $html = ""; + + if ($is_dhtml_editor) { + if ($js) { + $html .= ""; + } + $html .= "\n"; + $html .= "웹에디터 시작"; + $html .= "\n"; + $html .= "\n웹 에디터 끝"; + $html .= "\n"; + } else { + $html .= "\n"; + } + return $html; +} + + +// textarea 로 값을 넘긴다. javascript 반드시 필요 +function get_editor_js($id, $is_dhtml_editor=true) +{ + if ($is_dhtml_editor) { + return "document.getElementById('tx_{$id}').value = ed_{$id}.outputBodyHTML();\n"; + } else { + return "var {$id}_editor = document.getElementById('{$id}');\n"; + } +} + + +// textarea 의 값이 비어 있는지 검사 +function chk_editor_js($id, $is_dhtml_editor=true) +{ + if ($is_dhtml_editor) { + return "if (document.getElementById('tx_{$id}') && jQuery.inArray(ed_{$id}.outputBodyHTML().toLowerCase().replace(/^\s*|\s*$/g, ''), [' ','

 

','


','

','

','
','']) != -1) { alert(\"내용을 입력해 주십시오.\"); ed_{$id}.returnFalse(); return false; }\n"; + } else { + return "if (!{$id}_editor.value) { alert(\"내용을 입력해 주십시오.\"); {$id}_editor.focus(); return false; }\n"; + } +} + +/* +https://github.com/timostamm/NonceUtil-PHP +*/ + +if (!defined('FT_NONCE_UNIQUE_KEY')) + define( 'FT_NONCE_UNIQUE_KEY' , sha1($_SERVER['SERVER_SOFTWARE'].G5_MYSQL_USER.session_id().G5_TABLE_PREFIX) ); + +if (!defined('FT_NONCE_SESSION_KEY')) + define( 'FT_NONCE_SESSION_KEY' , substr(md5(FT_NONCE_UNIQUE_KEY), 5) ); + +if (!defined('FT_NONCE_DURATION')) + define( 'FT_NONCE_DURATION' , 60 * 30 ); // 300 makes link or form good for 5 minutes from time of generation, 300은 5분간 유효, 60 * 60 은 1시간 + +if (!defined('FT_NONCE_KEY')) + define( 'FT_NONCE_KEY' , '_nonce' ); + +// This method creates a key / value pair for a url string +if(!function_exists('ft_nonce_create_query_string')){ + function ft_nonce_create_query_string( $action = '' , $user = '' ){ + return FT_NONCE_KEY."=".ft_nonce_create( $action , $user ); + } +} + +if(!function_exists('ft_get_secret_key')){ + function ft_get_secret_key($secret){ + return md5(FT_NONCE_UNIQUE_KEY.$secret); + } +} + +// This method creates an nonce. It should be called by one of the previous two functions. +if(!function_exists('ft_nonce_create')){ + function ft_nonce_create( $action = '',$user='', $timeoutSeconds=FT_NONCE_DURATION ){ + + $secret = ft_get_secret_key($action.$user); + + $salt = ft_nonce_generate_hash(); + $time = time(); + $maxTime = $time + $timeoutSeconds; + $nonce = $salt . "|" . $maxTime . "|" . sha1( $salt . $secret . $maxTime ); + + set_session('nonce_'.FT_NONCE_SESSION_KEY, $nonce); + + return $nonce; + + } +} + +// This method validates an nonce +if(!function_exists('ft_nonce_is_valid')){ + function ft_nonce_is_valid( $nonce, $action = '', $user='' ){ + + $secret = ft_get_secret_key($action.$user); + + if (is_string($nonce) == false) { + return false; + } + $a = explode('|', $nonce); + if (count($a) != 3) { + return false; + } + $salt = $a[0]; + $maxTime = intval($a[1]); + $hash = $a[2]; + $back = sha1( $salt . $secret . $maxTime ); + if ($back != $hash) { + return false; + } + if (time() > $maxTime) { + return false; + } + return true; + } +} + +// This method generates the nonce timestamp +if(!function_exists('ft_nonce_generate_hash')){ + function ft_nonce_generate_hash(){ + $length = 10; + $chars='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'; + $ll = strlen($chars)-1; + $o = ''; + while (strlen($o) < $length) { + $o .= $chars[ rand(0, $ll) ]; + } + return $o; + } +} +?> \ No newline at end of file diff --git a/plugin/editor/cheditor5/icons/add_col_after.png b/plugin/editor/cheditor5/icons/add_col_after.png new file mode 100644 index 0000000000000000000000000000000000000000..8a39314556e620d89c2a1f92f8e15d8c8931a3e9 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT+`0{2Ld1uNV@*}2r`YOB*-rqBgnPb zQgJIO;TV&|3BeSlpb4BTC$9HpSqrN%a2Yi*Oi5v2yu`vei!;=}OTo;zlQ*S-ftkVT XDD#vll?--30~kDA{an^LB{Ts5VP!fh literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/add_col_before.png b/plugin/editor/cheditor5/icons/add_col_before.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f3a56ccb1e1583522fd1faad9f6078fb9a0774 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT+`0{2Ld1uNV@*}2r`YOB*-rqB~INa27{-opUXO@geCw!KRoCF literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/add_cols_after.png b/plugin/editor/cheditor5/icons/add_cols_after.png new file mode 100644 index 0000000000000000000000000000000000000000..d177a0418e6698a8fff25c5957928b4de59a5f8f GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT+`0{2Ld1uNV@*}2r`YOB*-rqB0IVk0}ov} PpiTx)S3j3^P6gnPb zQgJIO;TV&|3BeSlpb4BTC$9HpSqrN%a2Yi*aCuHrkTaHaV2HIgY`Sqq#cTp26Ay!Z XIP;YEoTeXv1~7QK`njxgN@xNATTeQC literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/add_row_before.png b/plugin/editor/cheditor5/icons/add_row_before.png new file mode 100644 index 0000000000000000000000000000000000000000..9cff358aeeccef4bb8b0ecdc3f878e10ab0ec9c4 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT+`0{2Ld1uNV@*}2r`YOB*-rqBmdKI;Vst0MT|lYybcN literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/add_rows_after.png b/plugin/editor/cheditor5/icons/add_rows_after.png new file mode 100644 index 0000000000000000000000000000000000000000..579a2db0a153e79e7346d4ba20c58df17ad7ef96 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT>t<7pLXUykOyRBlpL`HvRF!j{DOg81_!N`Ux0j5 zPZ!6Kid#tu$CxBe2&O0nP2glXalJ3gT3C&N%cy}t%d<-%%vjQqp;g6GVD`)-Y(@?Z aj0~#%%w;~pJ6-?{VDNPHb6Mw<&;$S_9y$sD literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/add_rows_before.png b/plugin/editor/cheditor5/icons/add_rows_before.png new file mode 100644 index 0000000000000000000000000000000000000000..45d46b4b02ae3c37321f35384158d028253f0344 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT>t<7pLXUykOyRBlpL`HvRF!j{DOg81_!N`Ux0j5 zPZ!6Kid#tu$CxBe2&O0nP2glXalJ3gT3C&N%czNg%X5-Kn6ab-!&DVlf!Q;Uuo*ct aFfy0~GncjO{@V{UfWgz%&t;ucLK6TiI69sH literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/cancel.gif b/plugin/editor/cheditor5/icons/button/cancel.gif new file mode 100644 index 0000000000000000000000000000000000000000..434323b087503f716f0226d939a1f3d6de8622c6 GIT binary patch literal 2265 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/color_picker_disable.png b/plugin/editor/cheditor5/icons/button/color_picker_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..34d8a22923e97b5000794e4e03f1166f4ed1733e GIT binary patch literal 1783 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS=07?_nZLn2Bde0{8v^Kf6`()~Xj@TAnpKdC8`Lf!&sHg;q@=(~U%$M( zT(8_%FTW^V-_X+15@d#vkuFe$ZgFK^Nn(X=Ua>OF1ees}+T7#d8#0MoBXEYLU9GXQxBrqI_HztY@Xxa#7Ppj3o=u^L<)Qdy9y zACy|0Us{w5jJPyqkW~d%&PAz-CHX}m`T04pPz=b(FUc>?$S+WE4mMNJ2+zz*$uBR~ z1grP;werj>E=kNwPW5!LRRWrzmzkMj}2Nb=4b?@O-)TK zOiavSdR_99OLJ56N?>|Z5PB_f>IEf*+ybD@E~!PCWvMA{Mftf3U@u!`;&zJ}PV=C8 zQ*gV*9H(A=pkwqw5sMVjFd<;-0Wsmp7RZ4o{M0;PYA*sN>$0>{&lngO3j=&YTyNgI zdF$4#zkmPUxpQak+_@JnT)2Jvc6WF8moHzIEnD{U=g)87zCC{Y_~XZq_wL=>v17-z zYuC1H+4BDV`)ALdEnK*8_wLbLQ;Ywd>%)gBvz%c=+()f&~jID=Xi;d9!56k_QhS z1OxF!DJRo|4><@lJZxsU&su{k%)xP0(A&M=?>RR8{Hpf4C%z{CTUol? z5{=-+^}d>1K_b7u?|;K^$-#HM*@f)(vV9C^_+yG29S)QVcDls$mfU(Kb%yyvoYlP3 zv6t6xJT38enup2@9e#nOGg&<+Nj(4ZMeMOfWL(+{g@zLoDomu-nAF(8P1f9BRajVj=S`k1HYVj>_pxp0%IeEB2pf z2v~iC*)=di{qu~2w}j1wZ`iU1BwbuyYvT0&qeW}k`?PeyXr>K%oab%Mb7zOWZn_Y+ z{%VV=HiO>#_Z^EQ-aW98v(uPA?XVHwgd@MQ*qY7QZbS$rEKRuL=w|x%`p)nWgW1nI l^i3b-b2J@@eCOW4$RO8K9e(op+?k-N$kWx&Wt~$(699z*Ia&Y! literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/delete.gif b/plugin/editor/cheditor5/icons/button/delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a03749f68793158cb49b6b4e9b5a860bfa4c175 GIT binary patch literal 2294 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/edit_cell.gif b/plugin/editor/cheditor5/icons/button/edit_cell.gif new file mode 100644 index 0000000000000000000000000000000000000000..6022fc400f490f39a5c890cc37ad76e88b71b18d GIT binary patch literal 2572 zcmeHIXf8E0vmr1PDnWvLpns1S!ygcB~MR2Sm)$CX}MdgaC*}tu~v` zZZ;WBCA|o$hcuz6)Ef;ETAlV>Z zsQm+I_sNpTAkd%aOW^yE$smVYOspRz_#fMBG`JfM#K=xz!QyG*1@KwX3-eiI_ zMjV^-$``t0;xk}a${>-lv$KiWzC?*EokXV7>2?eXg@9@hIarFAM?fYi&6k z2mQ|XzXHn>a-|R{4w6f)|SOK9d|4>R8 zJ%B=`ht1fsCHyQAB!*{f1;5*d&uVKg1(6i>%!Xvb?T~;YlZe2VAv1)ta|xRj@0G1! zb}p=0ZAmB@lKo)+F=xme(JlweS7jmRps$x-+cYouPVxq9yxrdthD6I zFFrr`*@6AVMf>*d*}bc_Z|F*1zYy z?p?37@2v5}dw_4duXbCta>epxZ@sy6$s3Dti(D5jm_N@2>pXXklcNI$06dIN=tu+B z+ixTL|1t!N0G}>c8Ch4=x*NO1dvkGYibpWcbK^n7+L%JW+%@9j;yt($cUZUHOD=<*mDrsZ^B0c2xqe@5YU|13s@Ac}hLy@j?Y#1u#~0;KdTM@Xzym zucnu+2tV75oZZrwn;Vj+2daUTT?*aAAvgCoI99XH)tgpvHTa4nVzyS5>3>l>ra|7lIRi%+8nu@z1vM$77r=L-9I3}z;7_y;C;6{h=ZQ>fsH4b?Qjm$HHW4wbXGDa9FYRw0B#g zdn*bxatL=E_p5|)pvsQm-(SZDBfV-g-O&NhHFsl4El#c& H3=sG)KB5D& literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/edit_image.gif b/plugin/editor/cheditor5/icons/button/edit_image.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bf05a0e8c2f548f4b48ffbf219d48ef02418d0e GIT binary patch literal 2572 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

P%8*K{%2 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/play.gif b/plugin/editor/cheditor5/icons/button/play.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7da138201d506195b80fefe1487bda05729acf2 GIT binary patch literal 2746 zcmd^A`Ck)B7H>?1a0rNiis&=}xU{xa=9Fm%Uf6^z1{!-fL^cD>Gf*0 zx*3MGTAe~6*BkT(1FTReHEOj&iF5^GA(t!EDz#Rlg&>(uuTv>i2#Z#y)o8R*sSN3r zB$f<E_27#@OTkV>i4Xw(Y1v8&YxNU76m5q6zU3mXh7l@f-Vl`54+tV zFaWo(07P7+Rw?9iofgs2snr^lN(}%cnN+G!Dot1|Logh=r40eF005CUz;MLAp6>2$ zxS3^u4TJ-OfustxM#BO~N~L1?(I+H;6;UD~0RV(}3_+xdp~d@pR-SlK-}Q%7CR@_* zx~}7CZu3Ou_4fpcw&waH*42@?c4^G++q4Vs=ne1nI{oqX$E`#1lA)=s>#A?}iTYg{!mdPOTZ%S745UZs*aKlw1zj1lpaP=!#sZ?F*|5%Cm z0k8r^O)V@I_vg{f`VpsV+Q|LCH{Sm<^Xy1=!+VWZbD`&Lz?JdJr+T$U?Ret-JPC~C zDy6!=_})a*qX|eR+xzRpshiK~mF+5(N~hClkloiJ8G-bAy%b4AZQwESsZ0TP9iPrb%w3IAJaQDDNfUDUX zkW4x;{_(@upYPwj9ep$M`qdvVUkpEg_H^jU;NyWu4+Z^yW4%I>-Mc* zZ+8CDA-U21^YymYYc0)9SFc>Y)OfMs!ufM&>(87%b@D{r@!DfGM~@snbnw7W)j$65 zkE;FqDl7h8zIV^=vR$P+cWf`&wzXLN{g%y}HWqCV6|P?=6!6#bxCQxnYjQd492S#7 z&!%N%uKq4#)ylu6uUNh;ZE0#s@{**)#os2x$Hm4(Q==jyDB+93LPN;GL4l+If1;l+ z0gv-pxWL=X(__B7n=94@{AS)<=Q&QZXU%kUu%BT!-PXo>nw6!6ImXO%DjGG#1OQyr zXyhFNEHoaF#`}_jfq}w0r?`tX9osN7yfaFZYrNfSvHW4sqSkY6<_Ja;IhuX5l)UI& zP_npoE8rIXEIl*=R&qHr)eNr2KGC)?0sdcdl%9Mr0Q(WmKqYbUTlj)daDM zZPQ+jQ>?2n6BJ8FN#$*)V#d~ZH^(cs3D%M9>du7N^sJ6eR`#|Dp2^OAk!700khs*Q zo!x;tc4ZuJD5nv`4k#;eu>)CAeG|)a^SuSk%n;X2pP9uo**_~QIbv$PJBMnKP9eMo z0@J38s~l9A`TJIpS=~RePo5b$kk|Bf98R|_44{;mS&JxTC~KZH#eR@^rCh5A7P=@eA5*bajW>?EM*ir5NX$1zRy5Ws+^Xu%~x?Fxk>u zTw<}EAX(OaZ1^Cdb#ckd0S_Ci35ltlb{w!Gh>A^JlY%NsXL@9XHrfzEDRx-fyc#E~ zI+qunrlC+@CNSqvvg|JDD1q8j{z5Xv57(RgqpuPIlw zM(mExxzWo6w#c3qz7U=ot2SS-=h7X|xqGtJ78^xav)6}KeNewSey+FJylTI7>*&eM zMXm2nHc(pWu2ps$y-rksA!98++Qm#?+rLOVcI{D8h`Fn-ylt$*HGGp-w0(+2Qb_39 XZm53+S1%vPY0xVkhBro0fRKLyyPl0& literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/preview.gif b/plugin/editor/cheditor5/icons/button/preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ec331fe81de633ac87bab2a39f5968f65ca3a14 GIT binary patch literal 2136 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/submit.gif b/plugin/editor/cheditor5/icons/button/submit.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e5af8d64dc80b224f6c6e910017f12be7008225 GIT binary patch literal 2249 zcmbVMdt6i39lsI6BY=YArKNg_Q$QslJT4^iNFW3d!gyJ{Odt@LjR(fZ$4w@a!(q2ttr*s4Fd7|pyr5bP6UAvvCZo-U8jVJc7PDHc zMxzPE7aewk-e5AB4LBMHpf=oOG#D*btI3R46N1=KJ8CiG28#``>GV1jwIPUAZ!n;! zy$?0GV(#v)OF1 zAXdcgz(aOmT8+(y*ipOLY_eFaqCQNo(>aw81OkAGi3tLvL2Ndo!O$-PL;!$cT7sy* z83G)b!-`k|077gC&S)?i^m>EQWWqa*w$Fy5S`DPd`WzUBqNv4UF&GRsn++F75Jacb z;b)-N>jwu1@hGOIrT`~1hPVGm3B|lNa`QkoPsPLg#1yrh$1fAAz!ITYB1ikT3RksGSo?Ao&YWp zGVrm}OeKRaA*!+@GRwIDIyKW^g%FIR#6g0DOb!fu!Ty#LLyg5U>WFSA$ximA|HyDJd_vL*c_xs+uRK(kM~R zEzJSB-2V-gN?)UussiE9@%~q0WzjadkXj&A!W9a>5QndDO34{%3L#GgD~e#aeC`zU zN?{eOEQRG@S|J367fWOUxKbJM63^u_vSdmXPsSH!v6IL+14SYcFrau&YC<}lM(40O zG+KHLJvBOwoyz8<<25awMVs?w!~6=VP^Oym75wZQJ+H4b6{K=pnJrXEwh9Ft1uO+$ zZkZvOHynL^G1@p%eHLouf4~FWz*#EfbITM~e&f)8{#V4;5Uns+~U4f@H0dv^# zXTxeSoABRL_u~1pr%!(R@t=<$J)C`Te`flJd;j?R_uB97emnKe-|pPL_4QYifBnnN zKi`+1aU4@ZxD z^6}wA2Rjb5?{91UeM__Ecl-7>?P=WIP+zyJc4y5;)jPI-_`&;C+tig?D^yCwdvaJN zEic<5DHV%^0)7ea-QWJ^*PGvYd(+0^w>A_N7UbvsDwms+y*?{5gOkoqOJy-rl9LkG zG3W{LP+V+GG%bosiCnv8bwqgBs+GT7K@J6%FMBiOjipP1g8~Emf3eulchN#0Z!eOk zhr1im)nx$z079*t->|!JPeY9~o8JtAd<~!3+|hi1 z&n-Wa$9MJgXobRBj`LUfwD4OG_4GDNfifvEm{{yh^uFZn?@!DbB@PYy4+nR8Tq3&W z9=TN>c0Ks&_|SxZ&dBF|Zb1u@#ctDX;-D=-;-`LovrngAJf01Dt}|Or(_&QryzNIq z&)#}}USjR0@m^kV?YdEvnY!1fEwT$-C1}vJjqZww-TpzsV(l3yyztcK>*tT%Xph>^ zbM6kuhZGlm`-GL8R_A{xrGgYtr98pyWb9eG;gY{NH;y=x`SJRIocdteaO)&#HmkL9 z{bfzd+a=RsO0$2`v7I@;9m z)){X?h>u&MEU)fP1A(&Hu(CY(f@s8LpTE|ZnOP0IQL9N#V(rv;5@H`s_VUu&8_Qe4 zhBKYtx=x*!z?Kj3cXWDbLlFDwmL(5Nl?sQoaI|F#%6yzP>RPOsj*qTaFb=cvp)4Lz~)`{{a7e;=@ z9P4TwVm|I#R3jGNlg3suOp6iBYM}%mw`= znIL80!6(^012doA=(#u(*j2Mce~`!VFx>5i{X%bdKf8k6{SF>BBi*ovi+dC7mwq7s dhEG;k=!-A?i_2e-t_6!vzjrN5>+1om`xga!<#hl6 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/button/upload.gif b/plugin/editor/cheditor5/icons/button/upload.gif new file mode 100644 index 0000000000000000000000000000000000000000..1accaba050e3a1def253c134298b529b93583923 GIT binary patch literal 2275 zcmah}d0Z1`8lFIaa0t|bMLar0iWj*c86b$pBt!*6DNvUv@wh#1x7BKOxo`}#b`XTcY%v-jw;Q)ut&qX!a=P4Z z4~E%rFAOu8%r=s2#c(%{*)WU6isNpF-QmJr1YyK+7b)j-IB=KCZnv4tCbPxT2r2D0 zyBl{~Emnf)a5$V!r_1heSTU=`Vs_&=8G^?{IGql=-9aunNr1~~Hkk;IN7+Hx>~;^~ zAppWb?%Qmb)k?z2-bE6ePP@a7yKoOdC;=s5G&r0No88u_1TdRT2>=vjr_)86b6{Yg z5dv&BI|Wc$triGSl41}5K*~-lhLOF+Y9Tt5E*ys-rI`%cY&H@E1u_^6kP;w|fv{LC zULmK`WHRA6ZX>nqcDLJYHk-S&MnVFEL@;!#GDAvRQkW6YV}LBPM-t+8Sj4;*5$22VO9>TLsn?zFbSXJb%pXp zT3Dt>w0Q_pGIEO9MTj2J6(J}n%7wrw3so8gQmUK!950pf=V^3$nMMxJ6Q|Kh1*S@+ z;IqYSi8wIW5ou0s+Elf@n^4RGkTrnbFp@ud35w7A-Zqh5c-cnGb zq-Qa#Rjq^-5-p+zpQp@My*d`|EA?J*6|atk_ew5{42I>s*#EfbktMQvyu+7eOHN)E zKCB_DT}zfVh48p>7x@;Df4aqNdiL~>-+%k{$>T>4hacSk<=)SC@BH-RZQ~FB{KwGu zfB){*-@d&$c;otCuU#Fua{1E5Z~8Cv^`7rJclJzo*XhoVQzuUxKh}Qq>m!HTzB+X9 z!2W$-?%mV6yJgoGpYPo9S##6&ZCkf|y1CJ?siA)3hV|>}YHQZ6sjjN5_~hf&fBC3< zRaxoE6?&a^If`i1CB@5BMTJUOAzvyh`0#`Gmn>fNUjD)b@8;#^yp#QQmUMn*#=N<6 zBRRhdneSIhZ5aXbdZ7LA&eMP+QwIG0~NL^mNW^GMv-MaM~>Z){E zg^i)1g@#YJHoo21$O~F33({(HXLl*mm_;sH< z-xC$plX$3gK%49rH90Zks%YU(}e@FR5?8us*oT0L>% zu=$?Zf;}D%Q=72c=HXuBCRCTPrXaVf{z7edOvZZ;QCVncY%|D44yH>q9xnZ#0JUqB3b63{cF6+a|@Uow- zr^QK^pdX*HH(F`~l36RuL7-6J!hXNq^T{mGljXpk+_)50>#hi(oo3(gQRjzO`kABZ z3aGE0XczdKn+p1Tg1N~pm7{Ztc31lgn`CR9@dbCP)lC(H{!^j{X9xK2Z0}vq&<1wG-X=!X(|bh2w26VSv}GmP3#CPQDma|Cr1}2V zqFbmqQqIl3pI>w!e0`IudFmYBY59+o&FXDe-V&BjK@kvbOrd^J?tk7lESlO96j~Wq zlP{T$wqI+#)&^EbR(jSAhex+%9}L-cq#`>s&2seO{+609$>`Q^YXpJ28X_MrY~|iP zc%Zn&sT%!tLsv~iF{lTC?gd~kB_Qw4^rMmXJHEj)=du^8&v^!flrzT+3yuc>r9g0G z1S%MFYv#DaVSO1DgS5aVO3heC({5(hlenkpK9gE9HK(6^)+h*m7AHWu?T1p4vlv#4 zoS{h#HNC36F@3#(tc_@2;JA`%TA1j})7bvVq#2d{5u%di(a?~ghLI|GcJa!T{cWa! Q_>NyqSEq^EMIey+FRf+=(f|Me literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/checked.png b/plugin/editor/cheditor5/icons/checked.png new file mode 100644 index 0000000000000000000000000000000000000000..029325ef6e3e19ef5b11af4f6844f649b86d7f30 GIT binary patch literal 1081 zcmaJ=U2D@&7|vEVb!@Jp;M|2fWI86SP1BEb4eR=q%ofcUZD9p(Op~)MbjeAR)3qB4 zQxvK{!5dK!CVrscjVS2F7|L#Bcr`&}=!JSA6TF+~$y}!w){x|U@I24^p7(vu)rs*_ zT^+q06h(Dq(n8i5oo`<|`CDH;oF~IkEEaGMP2s9+K`No5A_N&-o`zW{tMlboaD<{< zw3aX6f^>#gknWWojJKwngiTQ+v6?9>C5S;0PHRS#{`&Me4Ky`MPlhC)WTxPZmR_)6 zZecvHER>XpO2a)l>9dB-*P`^cE>GspHbaAL2rfnG-$@mu36Me-1R-z0 zqxe`BaGaM7hB%HL0)8LsXME)4JZz8;alAhab{?8Uv(za*D~#>LBC9ApgR#joOto6| zRs&vSO*3pH5^*&Aeh)!-?0EyrHIHHUHxvYDE0$(r4H>{ul#8f>qcq9%_Yrh+SJtq1 z%0vpr)MS%ky*}qi4WK0bAFAuSXd7qYpM3u*Z0F}q$Yi07DwaYTH`VWiGWnDRWsIym zLbHu3PRt;T>=|T&RE`6KlbWHTs(o@BFG+mHu(50?Fe5~1qTtmul@E%Er05Sv!pTUI zWyL^5WP{1Xu$bV+LXm(dHn;*(DmpZ9gRB1GCYo{`E9fSPEI><}gX)-tbg+G7UTdC9 zxT)R_S8blla8oWrl3|?2{?+Kl7IBX=-L)-Q>>3{$#O)Tbb#KR$TjWaI&j^WpZN0el z^JmO;XR%Fqxw?Aj?&$vdl|uUAxnB3%*7EU3*E!dtfVJ{waJc^cb@EPoeUjSjoHg28D&XDT<(2ro&SgEm z)mA@UUOD7`OtIbWzP61c@u36D`{P@CZVb4W7S}$;pY_$l@1=uj>O=R5rCe-dZ8<%@ b?%L<0)@~n*^}PA~$+^rKaa?$iJa_3AuhUtl literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/color_picker.png b/plugin/editor/cheditor5/icons/color_picker.png new file mode 100644 index 0000000000000000000000000000000000000000..3ed7f55890df78bfffe61dbf356924ad3bc06cf6 GIT binary patch literal 811 zcmV+`1JwM9P)F`GcoXb?vhdsD)-5fm;_(Sfd(&Krc+`1c<&WxPq?LG;mQ>di1Vlfg= zC8O#mavNn2br3@2q75}~0Q<6p?HtvlOYx?Fk%ohH9ld3{TgV^{2?}J^30aom za0I|OJt#9G@&`a(1PV2v%-e-^=)Dbrm;sxLBC;?+w?&~24=;cfMPwNw;{?|KLlTR@ zur&mzKJf)@t=;B!*mh7R4@YRV0>KTS}ZGS*{a7)sGcyK(j&*WdHlfA)5;t$R$Al>rXLW)!~WjMPlDq`q5C8!O+Y zPf}L*~a`L;Z PKCZl?^}@uHk--`OML81Y literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/color_picker_cross.gif b/plugin/editor/cheditor5/icons/color_picker_cross.gif new file mode 100644 index 0000000000000000000000000000000000000000..089b6d1590c90a0a243d73c77dde18bdf5e69e2d GIT binary patch literal 1922 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 YzFqsNg>|5V=vOIWZ|#VBZRvIQe;Bk#LI3~& literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/color_picker_hv.png b/plugin/editor/cheditor5/icons/color_picker_hv.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5e01f8bcecc4cf835e8eeeaa43ef2c06789022 GIT binary patch literal 2865 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 E0LKozl>h($ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/color_picker_reset.png b/plugin/editor/cheditor5/icons/color_picker_reset.png new file mode 100644 index 0000000000000000000000000000000000000000..ba719a74608833a3f6376778dc71e71f143b88b3 GIT binary patch literal 1768 zcmd5-YfMvT7%m`&Ff`6JCcBs%>n>uTS6bFetF=YJP{K-`U|iNidyp1;PB}f;(%Hq! zrjsbnZMdn4&MhilK%Bses}adi333$%lW~{cC@mC<6k6CR0`AAy?|nHZ=X<|A&-1?T z_dVyF<0;A8SA@S6P9P9gBqj*O_;Xd@4hta=f!XxX`&>K3{jE60EVnnsc|-e5Vu*U24&e024p~c6)>0N z`t3dmP{_HYT}%;Gq!vI~iUd6hrRtLT2)dU-W3$--4LUsit(?jU-PEQN)l2$wg)O!DX%wq*8MPC@iANZf>?o2 zK#PfGFh8WnGZwf)M3$?9U~GXaf5l}k$qiURrN%Q0Ayly+l5ay16)@K_N3nD*^doJVJyj|;Kfh^2m6nMURc826PPaA77rGU55c(GQQX#V?^Zm<->l-4BuP9or#SQW z@JEHsJI}Z8ENs|)?rHj^uC+#=yu=RPuxvkGlXR*stFSs2E8Ub=&c5Ro9J&8x{fm=- z&YY-mAHLaI(e2G|^ELOn^mn@T)o%Ov^iTD!XM-bGYI^hUK0i{?U+eInY#6=YYSEf( zhSIJJUDF4P8n4z5UubgcuD9>GH}Z8w2lMWv!{aC3oG9y^z>JpDf6eyT+&A0YhH8gp z%%{BCUe)P7f3Is(ku~i`-;*J~ciMlkWvrmX_syf>V@(qYw;dLzhf(EMms_#o?z6S7 zk|!3_Xg>VJ>+txp%PbE%M+ZlzD?2C5PS2EorrrADtKS`c<1?9MmSYbbcX}o_nEbkm z=V+y^)#<-n)oE<9dP(}%zx@t zmYECNCzFc?c!tXFdS`R1U8k$80~52#3TvI+zpu=!zt;ALZ8GaZk9f;DMw`1*Yd5hGuj-;I)t{`-%y+Y ztum>U>UIURN_nN-yj$a$f^`MFqt2GnmHgW4yycZC7kTDi5`K&iHJmdn&^$WgW-A}%5#j?OaRd6u(2*z#+OqV;am1g2t*#H)jE`@J_ zoy3kuYwA9J$5OnKDBa1DhALBS!!qR!X>d5UyKS&sljHGRK3lFM28FI(?fop=JM=A` uxK>%tI27D$YH&FEOzBg#JCdclehwly=xN0+$)4%Jzb7$1Sy-}FdiZano?hDk literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/color_picker_tick.png b/plugin/editor/cheditor5/icons/color_picker_tick.png new file mode 100644 index 0000000000000000000000000000000000000000..a48d9da7d123fea36afbb49f61e47bc326cc7014 GIT binary patch literal 1096 zcmaJ=PfXKL94-M7AqXc?6U|FGh{m;R86_(#gRPw`VPn~b>|hLC`^K8lzOH?^!U;_b z;bfvw5{Wl2UOaeJqhdlNUOdRfcz^?EH6A_a>)619^QC{@`}O<2-`}oh(${*s&v#Q4 z)tj7>v*g`F?o(au6xH_h^_g{YIER%2&Y=>nsSczjbyS2PX{rk_3srr&x&tE=)lM7v z0xqPcMGcvZ>SGwsvbFsMQ*1LDYmV1yYCXhDtx zg1~U05kcUt0zSy`Y>-?+fD4Hug2<18#-fQgM=yz4InnS%P7+zEB0=}YJL`ztrNu-A z&2mi8PpJt^rTz~!%_Fpnv+y|He+s+#WgD_t=%OV@BaJH!`mSs-?m!hICy&r#vx=EA z!pJQn8^m)07@9LI9o5{+b$lu%CM_4MmIjluL=y$ZFmy2{^GZk%h6O$r<2WT08x=wd z7vy7;qk<9+b4{*{v?UW-xXIOzxuKR^e-uocc$T4K+=6<-K_;lDEE=t2;aci7xO(eY z_?BFj1jG7`{j1SU6PX@=do;G>a5VVPBGc}Wu{O?*Jtn`zmCSTrNhA`LN+lkT&(6-y z%*;rVB#L4>ogNz-i$o%dqC}(7-}UuO{PcpbPUCDkcW7xmDdp|g59G^YQl89vUy6GN z>fXVLF3@?i^WrL1+}q!8>jL1x#_i3A19E#ue>>a9_Fc+6TD!ZpF#uL4=vVXA>*>yf zWm#bJ$pw1rV^9Bl|NV`Pwe^!jTkktR@4VY?E4kGwXaAVk{T}?ey4yzmy4PXe=-wVD OeyOCAmY>Jw@B9I=uVS_U literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/delete_element.png b/plugin/editor/cheditor5/icons/delete_element.png new file mode 100644 index 0000000000000000000000000000000000000000..80e1db21f075cc1831cda800410a4cafda240d39 GIT binary patch literal 543 zcmV+)0^t3LP)1(b3VW z5fQWz5$^8poij6uMMb1DGqw>C*^G>}Gc%|&Gr>hgp%D@4>gw2xjQI2Oy+uXh;^Lr1 zMZJuS`}6azGc)2^TFypBwv3Fv5fQO7Godpxtq~EcGc&j@F6?AvwJR&I7#OP*6w*pc z+uPgC78bq|67FVZo)HnNBO~74-soRnzc)AC-QDKq=BynZ)=o~e5)$ucXXxnY%@q~u zVq(l28=)vDn-LNB_xIRPP|Ze0&d$!D78b`eG{_<%$rTm06cn{4CZQ=Q^lWU-92}n$ z6ZLIveKRxHPfytq5z!G5yE8N6TU-DC|FnjjuK)l5xk*GpRCwB4%*PUfP!L4XCn8`* zL@R$)LS_xja}00I+T zH+9{bcmSZqDg2_W>1zOG*>0GNQM25cZ}JKtQ+j5vYnRhe4~2ReKrnGEGPt7*!xVx5 z?{>g`?ykVH2QMJCOX5za1&&KrQvmmc&<>gqn!~sOv8iGB48xjz3?Q8<54-V90*I>T hZs$=&z+Z0x1_0Z&HUNjKRs#S4002ovPDHLkV1iNB>sJ5( literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/delete_table.png b/plugin/editor/cheditor5/icons/delete_table.png new file mode 100644 index 0000000000000000000000000000000000000000..87805c966de7bdcca872e353d7705dbe8c8e8c87 GIT binary patch literal 1605 zcmcgsZA=q)96lv;MrLGgi^GiMR`?*z+TOKL;6jDcE2G1*rZfS!WT7tyT%dQ|^_0?p zQxRlH!Ur>xO_6Aj@MZ@iQk6FaffNh)HU<2h|;+eyjmL}5iWHOzhrZ7OPBQ+Q()2mZ3 zC8pM8erv{1Bog^<1?F!!_v*3>yH#BTNRhHVvae4VHovBGz<63k$?` zB344M9FiL(SSlW4rm%Q(oJwm>(}w9-5eLC=6T%4SFik2;Yhz;0NAEb98yW!`}*>y+-;8@*#-w2ySqF4 z`)3vwS|2`~aya^|){}mI&Aq)%Jw2xdg3w#DKUP+X+81wjbpSx$~=WV+z|`Ek3w9)^RPUgu7_vd89x%`-NOCHKK3((16D zJzG*;eX*v-J~(*n?szo}pZaqt%l0(9ZGL=i&eT3q$!1@vuP2e>UNC{^4+x6c*mj&p)A1T!mo^ zn_ZQjUYnM7Z)C(gIx{gppL1`bfFyf{hb4Dc-nd*2r}OFTY~F*H$BK$jySu?|cdxF> zyuHkS2r$sfxcD{8|F#2GwdMiidrXFkRi;5zS3-PiBp`hf`<^U6X1XcCTUecRDKYX& ze?$4eM+u8=@+F!*YQJFJ(^FD$p{A(pm$p~huf|OyN3UanKO?$#hV=sE8%#1$n< z_8U}fi7AzZCsS=07?>FXd_r7-ir>9^_v+QFM~@yoeE9Ieg9mr++_`=G_N`mD zZr;3k zIUyk-Ha0dgGBPkQ(8tHe)z#JB-rmH-1Zc%57!85J83HRS+%$nMV=M{s3ubV5b|VeQ zsr7Vm45_#^<-$q6W(N+2fDL_J9l!To{r~@zo4VQ5bB;S5o;fNoE4|hX)L9bWOGIjL1 z<`(;O?~2FVdQ&MBb@05V6H A_5c6? literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/edit_mode_code_b.png b/plugin/editor/cheditor5/icons/edit_mode_code_b.png new file mode 100644 index 0000000000000000000000000000000000000000..2ced606d5758637010aceb7463bda22bd0814360 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS=07?>FXd_r9R|NjqE|NHmvPoF-0{P^+1hYxSwym|fl^~;wp zU%Ytn{Q2`|&z?Pb^5p#a^JmVSS-EoM^5x5yE?v5K@#1;&=FOQiXU2>f_4W02b#+-; zS?THNDJdxl2?^oh;Xy$`US3`?7=4*1`aan$XYwLzPQ>}mhkIzh5JdvsMocHW`W^;MobUKK!Z~DS~ zB5J|eZwl{|6y6o_cFl`#{hh>ps`0ND|5J01>0ka{+djWLOT>Qq##{eZET4KJBs=`< z9EOv3G{O(I%IlfDt21t76KZ{?CG}^jsBEj>7m);peqoNlx4Pv=Kq2Po>gTe~DWM4f DAMc$8 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/edit_mode_rich_a.png b/plugin/editor/cheditor5/icons/edit_mode_rich_a.png new file mode 100644 index 0000000000000000000000000000000000000000..497b4e859b9715481bfd47974be9168fe4480ccd GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>Jis}M-r^P1VV-=9_9xN+mbg9kTn-n@Kv{gh_^ zmoHyFe*F0K>C;CKZ9a8${l+zO4_I3R^}TuX=CQZ;GyLa#Y z|NnnAeWnG_M6Hq_zhEGjIKW`E;zJBjSGK2%V@SoVq=4}22biv0l{DGtogt*HsI1Z$ z+TQI%Nz;XI5;8;1fze{zxk^r7(rlFjOrr=U;;0g9nep z5|XC|J5PQfl$tm>ZR(WgA}WR+6I4yEZe;NFZD3$#`0Hb4r=W1j3TQ2Zr>mdKI;Vst E0E=tSf&c&j literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/edit_mode_rich_b.png b/plugin/editor/cheditor5/icons/edit_mode_rich_b.png new file mode 100644 index 0000000000000000000000000000000000000000..732f8253da04425e5896bc991763cbe43d4d850a GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>JimC&ALR`N;t31Bdd&7LEcP|b+fByXY_wO%XzWngv!-Jc< zUjznz`SNAcrcKu_?S6UT!pHslA3l7zbKbmf-@eVLub(`5@|!nrj@a8jefsp*uV0tW zAGmev7SPla+ZsN9{`|k8VOD48l`B`C?%cU&$BIvHZvOf6=l_?RfB*hHbLPx{F!-oy z#tqbfdDge%f0IN0^k1Yv*ZaH3H`7r z{;+Ol1*dXh1II6|8taB8_u9UeXRl7Ov@F|D!Xhgkt{qTU%pJ4!M2y(mWmPZu@9`AN wN~P_wa|tg{HkRFcr`}JA+i9`zTqYid$(Kxycv&jx0PSS(boFyt=akR{0MBgDTL1t6 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/edit_mode_view_a.png b/plugin/editor/cheditor5/icons/edit_mode_view_a.png new file mode 100644 index 0000000000000000000000000000000000000000..e14add2295260127c09687446bebff0cdacd336a GIT binary patch literal 538 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>Jip~f4gt(r#`SR7PSIy1Mixw?9efso<4I9?3U3>1_xy_q5 z@7c3w=gytiAHSbDbLP{hPoF=3zIgHCqN1WVAHU6+Gw0Zqhj;JZJ$e1{savnkTz`1t z=Buewr|#Hy`2LfZj~_oid-KW0tvhc#`S9|?*Bv|dUBCWh{`~oS4jh|3d-j?&>vkPD zdivU<+mBuzIdbIOy*CFA9Juq~$+c_O9=!Z?;lhRMPd=2EmTua#Y5D4P>o#tF^5)CV zeMd@4N-o}ibMM8crOTGzzJ2@n@k=!|HOrSTzjyE6v$tQ)oH_IE-Mjz)|2r3DeFJ*U zwIs+d7|5j6a(E@1T1Wy;okcwM5=dbcHISRO3ocT5O&fKGS?=Gx<_J2PohoYkI z{p+8DR0TwZ7hSMZH!M^Sf^ULqWpA(Ny7g@4=jK4cGkXv1!=3prm$}H mu(J8H=F*8JUxOPM8D_2z`?>S==OUon7(8A5T-G@yGywpmk4`-R literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/edit_mode_view_b.png b/plugin/editor/cheditor5/icons/edit_mode_view_b.png new file mode 100644 index 0000000000000000000000000000000000000000..29fe9077a28b607deee4a0efba57bd0946240506 GIT binary patch literal 528 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS>JicSXjgt-3t^=s+Ur9C}8M~@!ezkmPk-Meq!zJ21vi5oX= z?A*C?4G65ec=6(sx8E+^d$n`#!J3+y2QS{O+q8Aho;}BpUwZZG)twig&)QD zC(ph4{G+zEcIC>IYuB#5e*H;HOUwCt?-ndraPZifs;a6BcV4`G`}X_y@3&uke*fj? z?dPA*o;`d2@$(lSeq6l$^z-M>_wV0-^!n?&ckdp*czfy5ht+G=ow@b=>C>khH*P$1 z{LIxyAGU1Yb@;@&MT-`F{rdIH-FGiP{5W&w%zrRYaQ*xN=qcxtAirRU2qh$gV-m}I zpmBYkE{-7;w@NNt<#Tf6alIHPerIm??%jUr&;HwUaVRP-eRKWmrQiwmOuC|zugEi8 zKNYF>hoRznkW%o+hNk<1$wwZYT>jwA(bY?w6>~ZjAH9+ZviQbgH~Y4T+RC>)8>>2l zB_wX1&Dhm#Dpqpb*5GpPZJq1aS?+yZyeII1gKXAWY3{6>ycIuoc@_I#|D||<;ZH{B Vo~YMPrUPBZ;OXk;vd$@?2>>yPO7{Q& literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/1.gif b/plugin/editor/cheditor5/icons/em/1.gif new file mode 100644 index 0000000000000000000000000000000000000000..192f26f6a81cf4959932ee521597b4f805dab2f7 GIT binary patch literal 1478 zcmdthYgE%^90%|}17v`5NkzU zKwu2H!~oG5!qgMUWnAPs0cD#wRA5deOwj?;_-|}`{*8Lm3t#u5=hg4cbH3;MIlo_6 z1Z7JgZ8@?W!J3h>Kyn$&V+O<8>QYpFfw&B4M^PNdce)Y{qX2&dG|lKt7mBL^J`D!i z&KZ9P_)`F-0BRrN5HwaX;j5|A+%&Bcz0q2s?*sTtpuYtSDp1JUfe!*)V;&+5O4hU6 zSB>|@4W&tN3e0y#L9N=*1K^wr&M5UgU~UktJevV$#|&*T`T+ok4hgc4h|0O*>g-p2 zl+yg;f66I^Kc~+>pgg-4tDRC#55>;*qo&*ZxjU#xn2o6@-K`hkWRvkphf#KRT)gk` z@Z|&_S6O>mXjcqZ1ABaApij4|O+|!@K;)y?ktvV$#ST4^}O- z?~zo{F-eq&e;B@yH&!Hxi<3>y0n{iO%afqy{>xU1;75i@b4OB1hj)RvDyy>KsICo2 zt_Tbx-(>D1iYvKua#Y_A=7v#dM!RS3_`om@BqFx>LO#|Ki~XU{j-dE3z$bvQC-qf7 zrLmGJlU^Hb+KtbG2}zc$OC%~v#coGIx%t-*xC%`C7T-|){oD`==Yg&*9ZvR4w8X=g zlh_lAvUZO_RiW*Vf%DUq1!)cEPnyPRjU52jf$odnjf=i6WBC{d*oHemE#Ic=`0S?m zLpTadFTg@CPbb+0XTZ2Pa_~|VcdrfB@`b89+<32kp^Kqwrs>)NZUkj4vO&r%Je7{M z(9K(c{O=waw~q>?#s;I&p_>9WT3VP3lJ!>Bbfg*aTP(YHCI}Hn(rroMmxb3ktCK|; z)e$#PP5|fQ?fJctk`y*@Yt;dKZbc=$Mw(rDcA5(-Z5d>H+ zTXtrXFs{ymek<{*KDNu@Ey9uKtJNr*T@iXb$iHR7t}L4~C3agF!lIglsAgqkkGIol z=k+CS;T&NR@p8)8c|BuV>E&saOx`}5#V(bw44b{9F`j?;G1OU|Ck$34SZ(%pKjBOD z`?CJPA+`IjmYK1+2V?SpKG$Vy>VO~et<4VCwXWVV?jyqCI!aigly(I{EZ5~cN<B&Rw6MMEE}eQakTZTTGBL+_J%LU2;jEO#)hJF#X$K0NsTI_Eh1%=7FTZ;G z`_laf`W$!XF={+&GJ-h{PSmXlTRh!gmzuno`oSW&rM(+T%3#}A5L{d`oAPM&Jc0vB z#IJP;IZaxf&t$sW5^~%={RMc={)@Nxy_C(~W^i-ZUXDj68RZo>5L2V`YLi6qSHHTc W=tQYD#0zfny-eTN#{UPUKl%$zN_SuY literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/10.gif b/plugin/editor/cheditor5/icons/em/10.gif new file mode 100644 index 0000000000000000000000000000000000000000..67dabd59f01da19f20b6de9aba2ab9b990096517 GIT binary patch literal 1408 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/12.gif b/plugin/editor/cheditor5/icons/em/12.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcc1c8f640c9ac5d486cda707d471e343d339ea5 GIT binary patch literal 1459 zcmeH`ZA?>V6vrX$rn4DboC8^JOP#QN0W-R9jsz;%T+*YY%dHwn|@QAH#17u5Wa_xogm zv74*DeRfWkpq8Aq-p@7na&3#0)XeU0srd9o;!mAiR;{^@k$RA0-`llSOOx$J?H#OE zIMT=^Hs-n{1xrI!*o|!4Js?aEh!yCn%hag4X9p!+wVCrBDV9DUO|Yu~asdcE5Ie9m zR!{B%frIVYJzNPRZCu+D)Lj4eamyFP&YI+>JiBSatmW+Vb8O0NYv1QXva9xWSeUqj zFVqoR%T_JS_IyHaz}h(1Is@~aDf7K4q?O{SexWd7VPh*-*5(qO&hHVb%GB>7l$X-7M!2 zs>_{CC7RwILIvxS8I^_cCiCv9Zo0DK>zjqg(tMcYULgO+KNIjLX`GmI+z;4^F(GdT zyEsvm{ubALUWgb8a&$Sq34)Rc+ubLwT|6N0*zrp~XBcAhD^ACcC#H`v5*Se#!K?0q z2G?5~eu+~*GE{=-dU;;-u#+I*y<-vIRDPLU#%Evf8J%w79`-&RD>6JXBp-}(9{N?? z5wC6Hd?zp989SKt_+($DYI&Qh<>d6_Y__&AS;x;*u&5-?9Nj$=6= z7c1So6|`)$Jt08pUH{H0UeBTOz^hKe2!nbm&65_*vV9ufA4}sSUVd{QHpGswXw22n z@c!t5XGs2)a{Y9mN7*TCF%;EW!(MeSHF_g4n7Z0ahy-4w>xHZ!XAv6I;WXiXATm+4 z%FxqGP=OVWoD6rlQv3Etx8ll!c^sd>4ByvtQ@e>ee~+!B2hcrYuQ-UgAp4Mm)Irby zgw66sTX_R~^sSRYy!PVvfqwK-NTBSgQov$Ig_bAzW5q9P3`W=)#%cFTw$L^5vrz{k z!T#6YeZIWG9Tc(-XFa5VoT%`L5@hul#O&*0XXlrR{QK#95B*~8|2BP3ghsi=4RNLJ z?ukV48FAP2{d{Nk5fJ6_qF;E*gQ{>rD4U`Csj5w{Lwl(Z2Rs^;a-)(6N_PmLtzrtE J2c6;@`8P&aF-!me literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/13.gif b/plugin/editor/cheditor5/icons/em/13.gif new file mode 100644 index 0000000000000000000000000000000000000000..221e0f2e2af00f217dc4650ef49b7f5b0b0da8a8 GIT binary patch literal 1363 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 Uv?JEh!;DX8Kfcoc3$z}80y3avwEzGB literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/15.gif b/plugin/editor/cheditor5/icons/em/15.gif new file mode 100644 index 0000000000000000000000000000000000000000..adb78d17a092d57f20347e565bee01f49491c756 GIT binary patch literal 1214 zcmchW{WIHl0LQ-(LBn=bSEnB8v347#WlCGm=kY#_nPay*)#J`O+M7^oYqmr@)w;=2 zk4sI1lF1QONmb)nBlXY(8$u}+YIN~Xb8rQ~mjK*bgS*Ruy6Yp|4d^1kHv#@Pfd5RWdH`I{9Te1P6%z{` z34B&6d@F~FNv&cW9|h<_4isNju1|6*(giiCP(Gx3d`Uac9j@`j=6E;;)I&fs1@LVk zx_<@EmJc_7j}4^@YE$9%JiD64siBLwG=5{j0zYA}rC@U`R#=;&nf!5Pkc}+^UVSn4 zDn~lNLAzsCM(YmxqE;krgHM`-oFCxWWft?Mh+ECC&lPg08;@dz4=QmD;8lI26h`5T z0Gn$UvQs$sig#@sH3Q$W7#X{3)7UZ#mE0Zt<2xt^B2F2viK(25T6tOycNXE!OI0_} zD*l370PZef(rWe{3N8b1YaVVdLB(@XO|C}rD>@EDwKsWng>VU|x-+#KETu5}1uuEH zr3PKB#TS6O2cTm5g0K)<&(TPWM9nl@1>gkWlwZY0sLHO`JzrO4SKP)_yR_%-G&fPZ z+z1tOQt>0WH4SIMOy^gcou0@2JI zUa;xc*WbS3p&kQ@_EzqB4}o3VWQ{;$#gnA~@?eA_FVpb-10KA>xwX z(hTYnlO6IyC+x$IXBD$w8y1jrU5}lqx0g1Vcvx23e31Y7&+ZqM&Vdvf$u!v1xtB$^QEll+FV~o0XJqS7C049{h%oy4lG7O?ag~EzUk8DsXJn8> zf0)|qb1pc~KI9rfhooat&+cQi^&BxvkCtiJB z(Lth{5kAp9?&?h_kPsY6(W|ZuB%dAQMm~p3m5iTE9@=%Z(TuB{uVqVfC0$WXAHr@97pK#ON@vxGs9UsUy1H|r zuo-qMo*kLh9`fZO7j?eI#;#6iH(#zJOT>P8p6By9{d9lAy?=WB_?p+u`@kVTubszj zFdIy-!U#4SK|l!-Q7=FgAO`?B0;q9-=7I4!KyQJu6&POt^bdd^Cu*e0bYUUVEiph- zfE)rHjrZZ47HI(e9<(fsnGU!J=!rI3r-ai=ef4lF7Er z{vxjNLHJY`Z%7`kE{}v=an<4&vM~tiUJ#NK^88cu>+)gZs!0XrCe+3*fM$XGUe<6` zC|;69_J0TGG-w2fvjviZbg~r?kM308yJUKrKvtyY7YSS_zIBoA%hT8Ms3%~! zKGd|0Y3c*8EpD+nfa(yo)D*Qel*uKTbU_ByTVQ&2ZSpa%x9M(msmM@w9KVx@dH}60 zg%g0%0(sdjL*u#0J_R{aOm+iPQzShNMmwd(CQwrxBgsh|t`3#t2;heis2hYI-r#v> z_4P;Lt2}*Q0Qw8arB`X4s-`FgbuI}2sC#K>0t2<&(Pw#h%sONMa7NuCyMPyELJc5Q z01X4UI0at;xG)Ll$B+rY+1G|f(EAjJW3@!_3Bwcr(Vj{@5rF3>!Wq!p_L#sgw^WFz zK{?fWW}x<4{Pr1Y6bv+QNpe#tAW6ybh_Lb*7%lDrCg_FCw)Pl2PmvdUO=ilw0tzc$`29Ig7 z&8%-Qrc<<{XZO9#?EIHu4$7*yA9cx^I_;)4u8iMiDI?G4+5^D!ak?d82%SKgmHjzx zxsc;%akJe#D%_@Gzqjp{)DTR%s~>N#OnmSVV_7A!+@p3p6)h9w#Dph*RnS-L}euw zZ18TCX{#hXgC*{-N-;Da7$S3BcMtvKZvS612FAob$1Ikb9mUG+PKVqKlby2kkH?b^ zAK^yZNnLoiABI#PC9-x$iw+<02!50#Q8+#<{5?<>S+shge9$>mkv9Hys7tR&PaT*CkW literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/17.gif b/plugin/editor/cheditor5/icons/em/17.gif new file mode 100644 index 0000000000000000000000000000000000000000..79382ce8a127f29789abd25b20ca394b23dc402c GIT binary patch literal 1241 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/2.gif b/plugin/editor/cheditor5/icons/em/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c83e50cc33b78a6d472e01b2b24609cead00758 GIT binary patch literal 640 zcmZ?wbhEHb6lM@+xT?W$^W@SX364Lv*KA*0_3=jGuQQ$BUthm>EP4H+*1yjV9p5#7 z?!@9h59a=PTJir(+W-IG|DTyTrP}HC_Jldrno*h(Ey*0uE^Rrywsm=f&i6w>>t^OG z?=Zc0%yRGA?DyZl|GnvV?B4f(=X~yM51rCeyu3qaPPO8{XTJZzfPor7@jthpYe=xO zV}PrXo&hr>&`iajEUf$t8Vouh^FiKZV7u)wrNBc+s++4tXrTq4_0pi@ObiZ7kNX{Y zJW*;vjLyeRU+4I#I(Js<>9#Q({pP~CQW#cuE1U2X9Qx=X0QN5z$iK`C zj0}7XfRj*Q{7ev za(-@^+%VgF&ILoo7v+)-yzU@RXt1_xfIOiA^g$~NAIJxjG*mPc6lSU{ny=n09Xfv{ zKYyP*$l;-2hbyV6X{=uaboS((u^RI78xHN#*c~gs>wIh#x75)iN0pelueo#I(%^`7 HWUvMRTdmdg literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/20.gif b/plugin/editor/cheditor5/icons/em/20.gif new file mode 100644 index 0000000000000000000000000000000000000000..e55ec3081d0a522ae1ad617ecc1202e0059f3f92 GIT binary patch literal 1717 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/22.gif b/plugin/editor/cheditor5/icons/em/22.gif new file mode 100644 index 0000000000000000000000000000000000000000..c46dec6cc6c7f401aa85ecedf5c4af1fc6fb1fd4 GIT binary patch literal 2209 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/25.gif b/plugin/editor/cheditor5/icons/em/25.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e26fe05cf2f7d988cc94f4c8a1e5bc3808816dd GIT binary patch literal 2775 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 Vv03%pwj|)NL7SpuI#97y{{Vsye4hXS literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/27.gif b/plugin/editor/cheditor5/icons/em/27.gif new file mode 100644 index 0000000000000000000000000000000000000000..8aae5c5168861340715ad4d1e09278cd61804a54 GIT binary patch literal 2080 zcmd6mc~Dd58pcl+c0`1-ge3%I8_^h$#SNRViS+;>fTFb;ER>>90jmPma!6QGugaPT zWf2JLfDOw95reV>0*DYmK-NZWxl~*rLJ1@}=i;<8&Yii={rA2z-#hOg-!tDc&+mH= zAMx6|FGLs61=d!9jZyH#4g&-R74zNl7sq8&{smXf6+?dB+pvfTl+Bb64i3W0b8s(+ zya3k)Ag_c8OP(vn{hLeU;6K6q^cZ9VL>58h4-gi`toMLb#Vn^iB*kn0<;hyVqppY? z+!#qj-h+r3oZ)>9OT@AnaIG}}nFQBHeaCA~%b$a@O~K7~!r`}5{cUADE~~Mzaec0G zqca+r1OIIIMWmpt&0qAe0C@|pKLn8_@a5yuru=YTX{t;B${&F*hw6|aP%%Vb8%vi@ zr7PZ!@p8{0vmm@QE$@fq6HwRPl!2zw=E88fAab@fc%tRYs@z!F1USo2m9~LZoXGV7 zQ1%2|?*~h=WAZa%_*Fl?>}Gd07cLG2G;y!>J-D;+@U%qe&o2qhyGGo2@--)s1kZyw z9In0ox?&`3jqj^?N0q<02aCY~KO@C>d=>k<^}bVF=EPQLQbu3^e4ilcF+y_=f9b4!;}EVqNYkOEfdqu77j%f7PduN0$f4#R#RmuhEbDC=cP=Eo~@8T|U&a&aTk)+{g($7Y;m zr<}7g)v`6wV_!JHuYzb4T))@GW4{zlTa zi$sFHzpFVb?nG4~Q+T%^FP#({LF2G4!K+l^-NJ@!*Ylx44F~j4k9)t;}=< zH4a@|2Pyw}eY#sifm>It!+I~sx#G7m7-Vm0DlCYQi}D<;O?xYKx- z${f+~^$ZMfr%*i|h$IYZ^Pc%SR_QZf71;Sf^I=T@RRma6Gx4q~?qGz_r4WD;QW(b0 zeAP~_hF;K357QOeD;g1NWnt+idXsZqU1?7>B@I9^RgWmge~Y_y(8)ll9G*` zjhB{=_m39y9&8mO0I(%PXjK&Y@(pdBt(rd>@5i4y@uU@_^vs!9Ot&wY+eY}j0U&k! z43zz3h%#WQU$39qOUQWpT`Tw6e;X(tnC1(VhBz((>r| zUW88m7#bG902-SIP&ES<$CyGg-SwgfyTg#Ikwn1`8#xB2wU=}x=yfPzKc#t`vZ=w& zVoTj2D2cLFvulf?SVV7AR?)(KQu9CG+5Q($^d?TNO>gC!KsB`q8STu~1#L}ei9lfZ zU}1Cb>gNo@cUsON!Mn*Nnkr%4!R?eHzAr|Z^zAcody@OgLX7uzD&7^`qSR38!Yks_ zXA;!QCaRy~5)NJMwCLGWeK0~LdpYM{*>h=ezh~@c-|G);t61q5)Y$aVc)^Dz|LAnr zx zT;%Wmc<+Q)-xLO@1r*h%uAUyT)91~RE=(09t%N-paH1(4*=3w57T3g#{Tw!ZES+o| z5*2MetvU>$B12t_a$SbVCzH=lwqE;^^vkK%OOwrosrT?sjmjfYnyMdJ{+Fd;s_O38 zxu8Ua0G}^Br0+AbuB&4V1aXyK9gsE3!cvWD>&{e;4E-23UEIl1$yU)aDLtI-Zgg9+ z5ORGVSvk{OC3rahu-|FYckfS0UjODr$+S`#T*@)f)2}Zla=*~n7VhIvNBdl0H{n?O zIEdCUVyC;i$nt30+54fD8e8}6J^0mFY)0`fSvb~;Z9f+UKUmUu%Qm+ud@NLqj-Exy}y3&iM7PB;w7d(rL5=h2UDsnumLz0h{(yp^h? uuzq#)5OlwhfW~Cm`>G!!V63{09Sul(HKaP_DV&srQG@@?=l`7Kfqw&(ji}`S literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/28.gif b/plugin/editor/cheditor5/icons/em/28.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3aee8660db7c431c134fd83124335bd6b98d6f2 GIT binary patch literal 1310 zcmds$`A^el0LI^52sB&;4H8DI(@i62BhJCtmV(gp6)4v@oFYd!+~nAPV6u%%m<|>g zXBR+Pgix+=w}9O&*SLm2f#QHNt`Nn60!H}uc)!E_!vC-*d47A6Po5`v*j$#A^G!=& z3HD@wV?i!VcGFBj-O6X$IRQQa(e`4QGhP3W0N23nzZ%faGX5NncC|N&Ge&-^l2#^_ z<|Yh3sz4J7xEkIKH$=@Wz3LmRowu{Dn(Y%yioZbHe`}Nwt#xW=p|&4l4Lpr9r8F-= z-5!YgII8;VXbGZqh_ArX{5#r(YTaYl^zfd%rDSi)bN}&G-7>`ffZF-bB}KRQYkkn> zWRox!4aIbnM(MX^VX8-ZAL$i(kuO_f>d?m$UNqJFYa z-54gXh`@%g$tB-wp7^hhH%rAyO*Q#gEl*kzrD*vPZOv(FgLHGbdo#HkQ>~h@aA|oI zwpi2Gn2C=jZM`ybXHcMDAHaIyhRnC?7DKxLS4S%~%`v*3Zzbg!_!iugd(L)-pr=Lq zt^9ql7us1`n0(Ul@H_o{y;`1yBdBfjLStMs%0bWgNWwycTxP6l}B$d*d0nl8+Db&>&~J)hjR8J2- z-z%=(9v9CuNQ8r$bc{@~12SO$w({GX07D$a8QF50MLi*{w99!DmG?+T+-W1ROz&c* zQ>&d*&+b5;y`zgk(5ZbA&%o4x?9jZtY-Va{VcacDuPY{ys7ajyhWJ>`rsJktul>s3CHh-cM~((GI*0tqsE*AppqbF@$V;*36vpSGg#jJBm0>%30%&MF zz2a6DocQHCn-^~dh&zEq6`UVwaJ`F7eeI#F3vgg`a6S+?iVDLA>#W9=1yLLmCL_Yo zoVny*BY5ERi_*4=Cpr`JEayE22zcMC;o5zgW41TVoz9Ry5B=eCx|b-dDDdbA^=`Y752tk~>?sT)rHJwNTjOci}YbN#hBGKGJ+@CFr zzBwJ8SIi1N`q3RLVQnadO*wnKDs@{`?OtT>-a4K5^GRx+H8&QE_A!D#U80Z=0VF^H zCV+SVumW+D#Q1uVYZ^Jm?Dck9WG!|Rt%`mx{l z-=_!b7qXeTJ_HpJ|}lC_;r5b@7uAzuf+fO z{O01J75~1y{&hC?_noCb4kRAlz5L(%Yu{g7`tjw>qeA2&<_kQ1-|L^1de;;noo>cYo)TGxB&K;Q+ziC>)(P??NS34Y?-+cYZ zf{tL_4nC{-*>kCy3l@X#gt>KXU=Z*JT|}T)QBsjTRB`E^sFj$$rLLyN-TRdSQoLNM ztb%N1FevBtCcetGlYW7+Zrj?IUbaekTR-apTZPmwRk;%uB81HbaCnI0SG zZMR}@>Y9_We93W}>~|?=W)$4mV5@aOP l$%czf>#s0$X(|OQHnqO~k1=H86JOD$M+L7~Iy3|rtO3ocuulL0 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/3.gif b/plugin/editor/cheditor5/icons/em/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..b68cfb128ca840c863b8000973a4f0f44f515aa7 GIT binary patch literal 1939 zcmdUu`&-lZ70181nwS77a)~XnB+`mSX{4?Tmf0j+3i1(xU_qBan6#j?9bmOoWlaL1 zAZ=AZfdVriNR&xZAMOd^8Vdv^s7R}T;i9M@Dq~GTlJB=c+h>o@{(_xf&kyhOI_JDT z3=3iTC$53kKt>Hz?oWMcG$MLXbc|~m1p|tIB2!@RMk?}eVCvXun+KMObC%o3;9mf; z4Ej~)EEB*o2F$&{d>tTjzm9{~{KIe` zfG5igx+=raMcoCSVW@6Ewmo|v!7zBf{Mg3+vhe94rLHEvv1ns^&6ayV3ata8#`Bpb z4M4_$?QR|X0N8GxF{xwWXLsQz!=`pnb}9`q0n4p~vVx;c70K2PfJ}g2IwLH7S!E~F z#v9|zSAnG$Sgrx}xuoUp)Sk;yy`~)b89Z)|9&P!H{Omz^(a>}*`SHyw@+eQsUBR^W zjCC5A2LSx^HlhP+`9F|npt3N{*tXkvGr}?gV1vB{6jeF!5>S*JSRMh!w&?MOI7MZa zxeqi|W*|cVwgB@WXuKd@z9v}wG0N1MIIhkaZ;OM6!L+VQaX#0q0k+4$Itv=hlGT+- z@J~QqoW87yAML4>m!uoplGHyG!_UD$d-dF4w52_2OtDYjEjP6vl2>Heo&am_L3pO6 zr#3`UTL3?eu+6G$^Pk?+9)ahT@C>j_?SU6!t&d`CkDFopFi!`plV$MFz_!qATNu{& zHTS4$dzvb&vmJAz+=fWs%EI)HuY3kBpRp~B4Ah@Ar~@W@0u~?K9yn{q7tJ{+u9f-0i<9NY=m-pUQ3*xg970|c^#5OUgcK1R6CKFm1^f9jF(^9`-HgSp zg*4En6}lBoAOZqq5{Sl0uX6S~t-}%dE$J!rNk(yAA;$GvDuvdW@4}2$KlB&&7Jh*Kip-+OVikPmp>+>~ zw`LcxoyeOjmOt;3@KqP^RN)4PH$q}|h@MERa2Wh%-u%(M-9v8i>H`_9)8X0^*tFwu zdny^DM3Ot!(9TI3rg;!=0~(Y#RDy4#PDj$v8oobXBdI|W1Pb9Q{t_UNVgHqpD(t_A7VqhZs zgzXYU(*M-vLF;1&I-ZgQFW*9~zlxWV@s6C*srz)iX9muj;O^v_!DGMJpVP|z&=3}K zgz)zL@u18+#&cA$B1`k$K?=QlRPKaJTf5}CBXPrPbeeA*ML1Qx^9}Z%DeT5rUn<$n zV=1QJt2)v%pp)5ekcCl;`~-{l>Eg(24Re3Ntf-;hWsv$XHNB-E(g;s~AF}3-*7*9`vzAm;ttJQI-n`ID%o}_(|M`p@`>ILn*2G&n#+#vtW;}v~1 zf5mYVd}3y{P5RJQK#0GApdlxSU_jR3Y+?8ck@G{kI7(8oHS7S5`7+Gq z)vqi4EsT?(a`pr*b20^56{l=DB)#q%^Mhl-iKW$5F8pmrTq(nxKo0k<^j4af6zjMd z$Di?wDlojHANJGcmt#T#=qv+U6yKiSICxm*uBQY!ZQa=>#ziFi`r80_7xDuyK$}8O9`ZaF8tTA1);$DXcL$c42dQbG?#=KXj{U1j-c1IS_ zT~pUxxAA#ezn1)>&AV|&!n$gvqeyu;Vjjb;29fXIAion#`e>Dd-H{#78Eg@1{YTO} z+DnDGlt`Fheg1Z=B7Xa-qVF5_W4y!5x!%O3PTobn%8|WJ*%@8KZ>42kDa>(L|MnmD z%5qEUu$Ts>_s4BB$)tDU|9IfbIJ+ZxtnL32-tf98mXgr$1no)+r#%_#cN!F~V z9xo+IymXr&1FG8JuSO@v(a}|er0(QUXSBzXOM0{?2mgAy$Ys-wT1V=Z_jsqosIS>u Wr0!0MojnQU)!o`ail++&djD6h1~1G2 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/30.gif b/plugin/editor/cheditor5/icons/em/30.gif new file mode 100644 index 0000000000000000000000000000000000000000..51054ede670670c20c2aba836ff2a68051753b8d GIT binary patch literal 2319 zcmd6me>l^N9>>4?X_y(}EOZY2aI}7$$&RL>DMY?%J8}}Lp)fffKRO+BPi>Ppr4tp| zkd0!bD3m0PaFESx*-CU*xt=c7QKy@Y?Ylcp=XuWa+4$b2UVsJwm{Wia z!ffdM^IMe}rDs$1W1%8Jo?#jsxOds02IqRR`|nm5{t3Q&QV)Fu^}o{RM;V6Sj5@cq z-Jt$8!!QRzvedDL*wTX3(sNm=2SS4m)IYuYep1;kJkWmQ;;r)dhMIHjqGMBvo4W2K z=C)yy%~nytM&4O4JCPlYC0$Ju&2t6*+_GUou{w_S9CcbfM zP7iP8@-$D6}-DmF9>&fjAgo`Cax*}BoQhG(F*0~8e{8^*!;Zcy6`>h6PcT`6-N z`#y?y%uB%czc36lpyp2W?8sT|0BCp%LT~5>4LGj?HTTkW&%xQYP|ZD1(*bG+LG7~| z&Ha$swgcKe5c(Hg)4qGQElfX6hu-a&f3$!8>0W8w&)WW|`7y9Liz2D!+!h_zbcM*e zMB?((`ZS`XDr4$)sFd$DCk;~#Pzw)5N~?TiwLYp}sH!{EhQci9C~>4Vs`Dow)pe@k zGF6xCI&djrsA!Y&GIgYdDyd9Rc6iG#dr2$23nQGBcYGDXppklNL5!b5xLMUnRf&z7 zQL1~?!o4I_w|DY(&m@1+$W3ZN9HTJW=TRLsKYE+~<+r`hW@EmvypW$>cGTIhIKW?E zoDJqX{C9gGHvE=7p-3=CVx)S9v6f$+{;kRYmsBfjF2m{Ju;) z(wbRkX+QNLl|hG_e-(1ft5(4AJ>%+^?}g20R$k9^C4FAEnSfsag!;b#p(4vnXOhGK zW_xmyQ>vPMAs*qKY6hs~P4Vv4gIAt-{t6G zjx2jISC1(npyYOeVh_*~X2b7C#USj-wqYcu(+U?07jp50SqDx0)|PV8(VuI3&5esY zZ@(=xj1cj&*YTCBPfgZ0O-QAcVZ}ldMkT)N3g>P8rijlHc5QFv*~BmsS*_{0N~>tT zrPmR-r|A30ADVY>K^_y{$lWR2dUs{;wtrL#kaqj{x{Pmp5!v>PJc30gq4UJ}Z*-zH2yH<&?pyGiBC?WNYvy#b|?(x zmF&3-9!4J}YLm7!c^twIlm#`#NxmIU^T_f`jF3hybFzp@A@Q54e5yjW^1H+)mB=&O zw@xMT$rWg<<_`T4ueo8j>88_hY8h!nX@+J8%N z>9paeQVTn@$LdC#A#tOszCIy`TH!;NH{)I~19pY)zkD|EaG_79JW7 zAOZYh8W{^|pqc#6Y_y5ojWG4335LLLa%`b3=?ccdNPJhC*f$sJizHFZCYp^Q)J65* zT(xE2aAnAfFjmAMs|W2yAxL=cr5k=6)io-ZJ6Vcj_I~z~A=D-5WoQ3aYa@*8FD@(R zlOsr;Nc{4J8o6r_xDQ0Ca=35rDlzhJ4YUnDD~b09%d?Vldt9?{AB`k=i2PFjt7Ddmdxu*-)U zDNBBiSmYsj^%XDh;ue$($*0P3FcE9{|2p`y0`=cdQqeE~ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/31.gif b/plugin/editor/cheditor5/icons/em/31.gif new file mode 100644 index 0000000000000000000000000000000000000000..51e9ab344d45e569b9c4a029d036cf6136f27b80 GIT binary patch literal 1197 zcmeIx?N3{E90l-88G@^9mCX&dWwwqf7&QZ?!P&%iP*&3~)lzg#m{+6=0u$%aJ)mc$ zcoFEOH*f%S+6uI>VC!$!x0TX=Nc_XFK6S(YBQ&au@g2Y`K(=0>7JICHE%+~>+)C^P zJOxY%IHcx1>vBoxxw;Ldy{N`E{RDObwsLbKoBU!_7K0 z4%!-pwx$?+08c^C4d_poUR!!+M7r7|HISd^u3Wfh6zf~^UDvbczL(7zD$%-l$*du3 zPj_EAr*F;=4ugOG8oE0koCUW@i#9xDy#lRGZ}!7nw=6J_P1Y$kev-`Ua%oo?sd-O# z?J}|ytUA97jOLQf71XraZ#|`JtE6YH8*g4TX!9D9l4z%)~)ERkp+p4pn(x(N}1iKK@Q2s>K` zRqPv{h9i74Uv-e1$$Emc*Y1aR55(>cw_FN&C$6e2L@2I}4AcD1Vabie_Jp>)-eF}q zGdZ-(D4$Xg`(lz}PGz(zx9=~1Dk4@`6t9#f)Uo4}d78nhME28h>E4BjaK?wJaL&sf zih4F{OhpY`U~BKMbvMP)n2`!iQ|G>hsP%z=`got{BK<;Y`ID-)`|@`HCL z2|`((dX~f0m*k~aAB~R7+T)Q6${B~6syqKSkE&y%i)1gbJ*o<4d@@&(%W*!wJExFf zr(_XzGf^e=GLN7&^5v5XUOb0Kv@oNNm+&SYg2BkMA4l)a;eVPE9w9v=FW7Jlwf1?( zGRuTm&U;{WXv>O0Y$I62BloRD|5}+3t0I`$8AYrdB}DFh9^$Hr)Qiz!X~(>5)rpjv s*hia6JKC*bjGftqM_E#nh?SVIPgo$=e$Gi;owau5KPiX_We_j@16l;u00000 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/32.gif b/plugin/editor/cheditor5/icons/em/32.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d084cc8b2e32aba04aff07a4dfd7a49657e3b38 GIT binary patch literal 1674 zcmZA0X;f2Z0><$G2~ZV_EFB%KB^|X>Yuliww74J%vLw86*km~cMVnFZfC6HzLM0Fa zC`<(eMWB!XLO^9JOGwxfLP}_W02MGSCG5LMtt7ekzIQmbA7|_! zn-k0l8#n=z=i_~ho;zRSzXNon0z>C&$xT+GS zL|`)=u#JwXbD!c>vp)Y4e6s}CXW*PGR_p>*3~U*o{D|_HU|a`aBLnXNm>_dV%GFgf z@KsRHyNN3SFEbKXGmv^ZoCf#=K%N6^rD3$h4j%(hN=Ih^t^wF&G`ir8w%n`By@V}- zu{uB90D#Zwu!atofUf22(r@x{#nU`na?ZU-9D?+Z|Bg=r_pU&WW1oVG-FBORau<8 zzMw)T{g)66msn$mb^WvRPwIiEvsl)mw!vhfNQ+S7u+< zbOdPH&cj(Cd6qEsOCdHVTAv+kD*c}SFcKMktZDLHZ16(oTG2VsUUsAIabi;`YpNp) z`Sl!Jn}F++?e%$@=3rfatg_|DCLVM8xeytPmW#OBt_XMBn zH*B#%s{n7>+;qL^Xe-dXUY3gr+C`kAG8z52u6(Pe< zu4wc8RYE2lW6V}MG~N$FrJ>kBmQE6`X#{u+BQNplhVaay!a-4yrc)+iwQQX*PStc9 z*1Bv|1Zj(c(WgxK@-(b#w|&`sfpj12r4-{TsEO*untX?Fwgo1`AT*x~q14_)Y!k z`%!1pd~DJ$k?|D(m#W}$6(VqNd=Sy`@6hRN&vd49I@4Px=47T`!*QI9Z*_C@_Hv-Q zJ0AXwVxUJL5Xf30X)ggM9NOHQCov}wjBx_~&K{R4E;as|omkyQ?JxPth-5hV(?^N| zhfLk6ertLP6KRg;m@hzM=d8~3RfWedW zvvX~m!TdyUU#rhgN=Hih57Y$b8AfQF;TPA9v)p83c1 zAMBIdxkvX6NM-kTkXXYW;S&AClloKBft{yHVtrzZYDcUTIn{=RHRv!++7V}6;_<}LaQ}}cyQi~RW#5aoBnR7F)O>Pn?ri+r z@hgw2PZ%a-?c8N|NZdzH+qPRt_oFq?>|`cn+gtERCNbY+?^5!q6p#Hf*5@=Dmv8O9 z#nSEiQ?&y*Feaj7cNCY)wjhOg7;N|EA0Y3#OWE1SA(4px%}U%v-L}bE@|HE6TNY5d z<>0<~M=MVJ_M|jyKE&JvY;50dhjis5< z|D~I~P0u3WSjrHO-NrUHherhNJjso*P{%51uRYDmez}{wRv927Z6(sI!qriF#Z04Jhl>epS?lfXB&XaP?atd{#Wn#|vlLa_Rf7t2)M`1$I>|`pP1l+4w76|1a{N zrP-UMPe`tux24hhDI6N-*+tuV`#!4Vvc)l?cCL%H*I)mSpktlO9~j2HUz1LA3L2#b z8r^&+?*Jv)hJZgfVKH3f%OV^B|BQa6c+qb8sf$Y*S^U=a_+PensYTyj@T2|B=mInN vFj0?`a3SWj?RP;8&Ot}vai%2fZeYWi3!|nrUK7;~)`l_al*x1Ugk%2!!5EPK literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/33.gif b/plugin/editor/cheditor5/icons/em/33.gif new file mode 100644 index 0000000000000000000000000000000000000000..465a8676462299c9f5967818f914913f883b8c76 GIT binary patch literal 1259 zcmZ?wbhEHb6lM@+_&$N*=P94p_fOtCv*zCypTBQ>{(XA*|ANoIFVB8_e)Io_&+mIa z+ZI-y+Pmc637j-(CFo>A}5?;p-Q+{JZG+dt24->pnley!o{# zW#N><-LorZ^%wnnvg7gj4S%2So;|7R|2v<(8>c^-9kXIV$BKE)|KE83+vWLVgZJTW zbN=u3`gz3X-@9AuXJq}J5%T!x)ZdGJFYKH9`oX#X_k31NFZwaZ@B1FV$EO#qUq0#6 zvul4I0~KHTchK|iv!fSIZ2z+)@$R0sp9g&YeSY%ms?YCh)fW$~xPExS*4gPZI|>(0 zF8cTJ-tQwmOB%9&uJby)vi$Crh&{_2{%vyq|H=FRS)YGrGM`-C_5Xm^!Wj)Gch7&d zJ^0Cu!~ed$-ZnS=?^~ZkYg_(2-~aE%)N8Bb{=Pf=>E*3gmp6TXap~UykAJs4|Ghi+ z``-M2n>_xkE&6%J=l^M+e{V0I+`ZucW$#bN1Aoqs`g?oz?_smcEd$4=Ow48q@GS@F^Tfd~^&wihOCp`Xrc<}Gz z{V6@ge_#3hzT>l}-t7PX{|pQa5E9531yl(E#sA!Xt|7tBjsdPldIrplKtmOOvapIU zOkmIfSpdo=3>^O%6gg!)HY{*#GJYVU6mqbi$B3OZ?_f~VL3SB~CYwMZ)<#EB%Mz6+ zqlE{g`4ibXUkWrl=#Y2jE3gb`I4>)g`5|Pd;6hau<+6V^Qe7)pSvZs1?6MXtWn03d zc*dsaNyZ9(1BGQ_v0N`a#MqoyYK01yy;j!X_L&kW^(|0vTd@4jz$G1gcNUhuvol(t z;kkf2s@?9u0)-EYEkZ=TCN56wyTo24V)0?o7oINdu2~F~iOQ_qW-bzz3I+*Wvz&vj ztqC~N=)$A!BxRbkrFqL6VX>+w3pX6-;&%3tVobP_agpKS5!VX_3M-z9tDF!Q?DvcD zn{La@dM0j4!o(c6JA3m51p)*Pese21Ke=CHcEax_Mn*&^F*C3+@G`IhLrIxI(YA_Z z<${Batg^f%Pfjd22S}ehXU&p=hlkoG zNXXS_OnBhZ!pzMW^rgfI?~7@=+z=3z+epk DAVt}< literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/34.gif b/plugin/editor/cheditor5/icons/em/34.gif new file mode 100644 index 0000000000000000000000000000000000000000..b7c2bb6194d5fff59630193309441c84dadc4e9b GIT binary patch literal 1975 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 UPvPhDUWYQ6=2|MFN(v(X2GOc0!2kdN literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/36.gif b/plugin/editor/cheditor5/icons/em/36.gif new file mode 100644 index 0000000000000000000000000000000000000000..779454291fbe8042adfce853445d7d5ad3a58447 GIT binary patch literal 3641 zcmeH}Yf#fy8pe~5kOU$IqzH0%DC`MuBk z%-QTgqu4W-z?Q&fTVXkG)oKXLH3D@TP|E@I224C@fTjnbHzPjA7^MuThd{rips^yS zSa3A$>;Xst)JmY51kj5{NDSsXfO-PV)dKZAP!9m*Q!v*8Zph8#&!I znZnG3xk}BGF6h-0)#x2)xOBccQc(+_sRz(hi>xWDuRIQV-aaP*s;PEW2M-d5$?o%1 zQ=JWWGL?71t=zcjkuGR@Kv6+26r5B|HLFJM7iPslGZT=M2Tk<|&qqM7hoM*fy@f$F zR}Mpxu)bT2*)m^Qt4RF_s9Ql{P6G7uabarst?Ve}=-v6sJ@Pk`69X;7on@-QJm}?s zvNocv@{;-`P>%t51yFPYbw3cKas)pgfTo`+`ZK1-dfKan(A#mwad!U{Is^>k5hkvUnzNj1pGgV&m4}MUM zbrj|&t0qf|vyKXR`xHYvyRPn0JqPp60Yd(PHgU*=b;SLJuN&X%zh%|JDtF2C>JUAntCBV@M2OI``oeLy(~ z=ITIS8AH)q+##SsQlJoXyK5YvcA#wIt474~ii1!qQ1%o;!?n;0FM0Wn*|P2Oicsa4 zpS+5x8V8DAkdk=t;&EbK|7`gWcCakA57bkBw+YQ!Qa7}r{IV5T^ ztQBUpQ0l^(z%Xi92G-PFl<5@X7yiYoA{p(x4I1^;JSi*Mz=*ud7@nQLb#gornL7rc@hS%t-Zw!XmhC{p;8Y%59q)pE(m7W^{nBOsMyE=&vYO~q2{ zBzhU-OTFCNH8dkUBB_s9(HYF z5$XGQpUiLXLFS%Dt3uZ?gHBO^hr( zO8t-M>+rR)C?9lNaUusR3|4qPGmoV8qlq@z&b;U@Wc;FyI(CB2Xv`=A1j9 zq&G&Uce-`icuH-eqy|kXIeJlYy^RpA|vS0Sgq$aIVR9E z#Vj<|ba~jhh5iYZERX46*E9^j2#5Krz%)(ZpgOP+7`u#R4l}8aU!-g6dT4U6CP<9& zS#50%uSTLW^eINRM4KSYX;jb%o_NEr+NuTX{eY0iG(u_11FZ>v75YC{v*B-|T7ZGm zz+ir)W)O%txfEsQLOVx_j&8==t(PZO*(75x+3SXh_++-8zOCoe-S z<694z8S12jdh_huuKA_CVf$vg9RD#T{Czur${P0Xjlkx+L-=fJQiGlWWk$66-3UzQ z#sbOg&sP;c6i19YZD_uj|Ie^lUz5xz|5}W`VArZ z5(Xu9G!6`-^EPi)8B%m|sN1x)5DTfX?^DAyxbYg?k?(i-9v8D@oxj-n=k!>^4T~aN z;vYG)4f`Fr9UML^PBKhMkm)}nvm|NyZ!GY^wlT;vJN-{h8pF9?`u?3HP29PaD`A`A zj-B%)hpf{j1v5naSnlR@%Yjo5b$z2(W|l?C9=Iayx}uWT#b?B&+>t1>CAvXdUDnOG1+z;u1}G%eF>MmL|pWIXvVJ z14H{wWS_J^)>JG_d(2m88Gum{&*78yI5 z1FFklvc`3K+6HqAUhvK6Aa(4jWNGY1;=mWMya;|!a9FJ;2+bl;li3jH=h68lM%Mxd3;@AwLFe z(|0rxzlw{{T?U>N2yVop)9s@uc+UOP`1F8UA)UxcT&WuuQD^lnEkUBAL;Ys@cVNL1 zGJ8FiAJQPiZN`%9^-3vlS8Z}GIBdH-W&jfA9FrSLI z=WXQQrq|89vuV+GTJ+8a%e~JmcGvCLdDg;wW+wNgIr5@*%-n|btEGhtoYw3EM{V+1 z4PMxN?)=w7@YJA)%ao$epRowuq5xVN`7tWL$laql_}boL_)S(|GH#3hid7rRg&Yul z5}}Vk5(1f61N8RGQgUjVF literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/37.gif b/plugin/editor/cheditor5/icons/em/37.gif new file mode 100644 index 0000000000000000000000000000000000000000..e21691762a0a23cf1bb629147eff325952d1ac6b GIT binary patch literal 2215 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 VmY&*j@l`#t^HV9uc%>9y{0CO;q}Bic literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/38.gif b/plugin/editor/cheditor5/icons/em/38.gif new file mode 100644 index 0000000000000000000000000000000000000000..76a9e13b28d83aca487a720d7129882da28a311c GIT binary patch literal 1540 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 P2bd1|B*v0d0z3Tz%TE6! literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/4.gif b/plugin/editor/cheditor5/icons/em/4.gif new file mode 100644 index 0000000000000000000000000000000000000000..99851b3f5e114cc765100fe184da1dd60ba722a5 GIT binary patch literal 2671 zcmeH|ZBUa}8iwCQ5)wcRBtl9NAqEQwC{(Df6cQBVXsP-Pnb92IP3UPCmVJ5P#+6Fc2o_$l&}Tq@9iWq-p6iOv19TjS1$o+m zi21$*!MO~5FVMEdh$`}oQh@5fd`DtS#h!)xbqYRPQUAW-8kp;hkcj?@PJvNHmGOyG zTwQ=n-Jcm#8RU6}_DEC#j6HA}_egW~F=uPmfHyRl%F%g4XiGJL2q=_8v=3?EU*)V!DV|m{2bi2I*bj7=-C@-U zPILCfmp;Gl>FGx!+;jdo*47NCDILG_Iq3}HT~*31qMT8d%X~T;2t$z2Z+pk{=a*f+ zAm?sAqMxY=w}t(^ioLUXPWG0Yk&nC>x@1@l!m8JBks2lE%r7rbTvW~^Y@k^ zX{Cv37_ziGPfDdt6;{|BE?~LXB|2hE@vA1%n2~1!&pNL*aqUtvnWawge81x)oEUw_ z(~quZVle-LhlOyEC4^su=MUv9cr#dh1_y6pN9f$3>CCslc^9Ro{}E1VcgK=S56~cA zYwBDEy&+5vL9~U%5t+0+>5kb6=kZv^zl#i6j9df?GjiJr4zrKLd7gRFBVGqx((if} zntFH}Wx*U-;uj`6rd#V`>D%1wX2U39$%2(`&U9SAiM39v-r6uO;+16QXOI0DXBxeMSA+0?{giN&&?1RYWZnr;>EMcjl4Cv zF>!c^bc0`rUv6!+v%ii<=e)x4bNp{y$|IOh#<$jTio6{*c?@TT3Od1+wMN+MPrPqQ z!b5KruPF>(#7ZMH($_M6DV5;YQdxMky_Ra|l~ls0=GRiiTrgvNNvZ8P`k~Jc`NUK2 zrqS6i9*eBGZW&oW6&@eMuTOL()ut-fMY@p8%`P~)hjuT+=A6Dwot57dgqqvXTj6o6 zOR$;ak6qLFn*^V?5-Z#q^e_%%5s0qJq}{MIr3u?EK7LcG;bj?mH=hakQ!@2da_&@k zDA8s=-gr;_=a@{4{l++NC*?Nv$}Jv~BtgnPoBEIJsRu=ua6wG7ps$XSgoLf8xLpH;a- zvd1c@nr!P}bv(|R%s0>Hr1#Da5$Rn;J|7;M^HzSGO!`CnL08pYg;CdK2AOc(tR+}RW}dB>Qo!E$G{*KCCvY8J zdus}Ylh*j)-=E10N%hzvvLqz)JH6K1e>zpf8c^6`P1@sEH8fnl^w8@a?(=lk(8hf# zY@#339lm|V+y3?iqEFg*5N7QL;Z>}L$F+7Jw$QQPZvI6jk2>=^$ToSFSuK2*5P_V# rVl`XFt#Rxnd9W-I4oS9DNeYGZrr*B{_&*7V`(3~{|AhZmz%Bm(8!%H% literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/40.gif b/plugin/editor/cheditor5/icons/em/40.gif new file mode 100644 index 0000000000000000000000000000000000000000..40f2ac17b0187ceaf129b7900a641c9bac55ae12 GIT binary patch literal 1324 zcmYMzX-t!60KoBADFPZ297AE#Mey3@;)rvKQv(zzr92=a3yydI!W4(77@dlfbD|T2 zawuAk7H}YlML=+Ek)u?(X=OkIEwmgh6ev(s`d-g7zU|xp^Dp^(`>6% zq{x95UTO9@qz1M8YeXxHR&k&LP<_6z2jFj6s+yzZ3r~6$plN`Hednq@0_`p7Xde_E z{Ukkh>80oNNE=?|0b7A-aRwSSaIPJG(6-kXeZ$pGF7#3c!| zp{ta4TTpll8b>9f5>sOsIb2|p9%~a7z{PQW-I3;s6nd%`&h;<#`co5t96E0LFheQ< zoFBs5fq@CK?vez=G2`;S@K}Ghfq8rcrmD&f&K5s!EuKPJtVwbqecfYLR<@z<2DldL~XwgB0iJiI-FHpnHlxlqG}3nTE; zG&D{?qk3E+fpbI9&<$IoO!WYYScJj{wR~1o};gsIx&-c zn?y)cslh6$C7N#VLJchVE|}H>GzDlqm+Z-dyzoMG;OA?&;5UY^7j!z>Yo ztTwPKdG1NqZ0tBqMd@1(TA0TelM5vU`~S*dybO0rZsK^i91AS+F>~+^IUwhUCaRx! zIlF|8^4u-%?aIr#@nAD=!gccwmuI1wQTMryS^m+AP%DqL?dXE%TILpJibHz$?)GNg zy*`G$rTJBP6G({^y|5?bE3F?|N`Lh_Q=NeEoUW>+kF!>T!f)Le6JJWU4kd1-3BNl! zznt~!cIp-XXavTxFf;a++8_BpBzzThAjP=XU*!^S+Z<&${XF=^`47UYZdg){aHTmV z56LrRmmhL6S?P2Fw~CN1%9<@Z?`zM#SmstyzS+jyUJoiLX%*M}e?_{P#tQpyNpwc<1afh9G$nM*E zW$B+N;^3*i_JX$frq06>X@}avM)6ujmc-;X#P@BRWL%K3%&yo{c3<HQ)~&J# dy*#ik$1G-cK50hxeO7SOChPv6>}|09{{h(>9Yz2E literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/41.gif b/plugin/editor/cheditor5/icons/em/41.gif new file mode 100644 index 0000000000000000000000000000000000000000..5af0bb1f47a1bad6dc00b314c1567c2a4f573305 GIT binary patch literal 1702 zcmZ?wbhEHb6krfwc$UrZ=g-gIN9}$eb4;6g=I5i%>l@NOJiB$ESN+4$;NQm_ejT*> z{p0J6#mSJ6(Srvib604 z{dL&>@0-PcPC4IM>-^`_t>*`#fB*dY;rXp!r_=si3cJ6?-#BgN&i?S{mp9(HbaZd0 z^|L)*U$14n+F#OIIg#cFVINM%8)eo$(0erZv1Dp0vH$f^P>=c3fa zlKi5O{QMkPCP(UIa|kjQ{`r{qy_R&mZ5vef{$J)5j0*-@SeF`qj%9&!0Vg^7zri z2lwyYy>t84%^TORUA=Po(!~qs&z(JU`qar2$B!L7a`@1}1N-;w-Lrew&K=vgZQZhY z)5ZeMTG_VdAT{+S(zE>X{jm6Nr?&Zaj`McQIQehVWAmo_rKzE=rmCW>q^KY-Co3Z@ zB`F~;CMqH&FX#K^#)_>%=lW;5u3N*7RR&A|S$A-hRmSy3ZY zLs413sW;nRMUTZM+=fL@#lFu>O3RX8G*y(}QcKFLNkrO5Ff-FM+H{?ukF-d(q=JDr zuZ}~cgAT8^fr4bVjK75;gBwRMhZ}>Tg}+R;ow2Ph1G8+HEHi_yt+8FUk_#iF04LLX zPJ!1hO4(vUTu~By)-l$65@$3fBqaJaa+_S3VEI_9S6m}8BSvEbTW61u?=h9Y!-glP ztEr|aL<%2iX_rn~B;!%+z%@-;&WA-%#f6<&-C3<^$IS)w8w4AubCqm`xr literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/42.gif b/plugin/editor/cheditor5/icons/em/42.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5dfb8dc7c6f4eaeb5a27b9db2c4ab3ed714d615 GIT binary patch literal 1704 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 XY$01Rf|hx5i?Yqjx~rujz+epk+w_~R literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/45.gif b/plugin/editor/cheditor5/icons/em/45.gif new file mode 100644 index 0000000000000000000000000000000000000000..9efbf475232d6af4e09c4baabf4f904d43c088e3 GIT binary patch literal 2114 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 Qq2ge|%B!oJfPS|I0KmMVBme*a literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/47.gif b/plugin/editor/cheditor5/icons/em/47.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fc0b356378cc05620769128a725bce5347ea9fe GIT binary patch literal 1700 zcma)6dt6gh93KYAOC&W*)4WWqG`8J49%F+EvN1rNAfjl#7~35T*zR7)AS)ZDK#7mE zTxG%#P(jBdQ3RQT4OE0gROAs8Fqlv>U%8Ep?ntmdqEF|KbI&>V`~CiYzjMClgoZQx z$SgOE8)iU+F&d3MZPnG8*ryt%dGv)@9q7eX^p}Now>J(AKj`aizunVse$sCo=v1ih zAIr-+e(Gr5(U^)enWN@s=DKk6<*k3 zoXb92xKm#lX;g2mxG`8?#MPHXT*wTu=+<}Ny?R~$$kN0e9Ced{<6!48Wp>s67<0qsno@aNIbyC2y4TZT(XDN5sq8AGUdr-6T&~L~(+{?lJyb{N zo63${>{9CbR3-A$HFav;1#N?>Z=hFmt4C3&l&jh`w|jDn4k`-sh7H|Sw}y&kK9iJAnNp{^Gy|%5@P#blk zVDFXlnQ6t{8LIZ&{C&fQuH*SRrbf1 z0V0#hRt+K%hazy2G=Y>Q!wDpdClu(gge~R?r94CcSQS}uNQ#t-MKk@o1io-mRv^KT zmxE^`e1eQ6BtUr3TG9lN$^369pFfF~NTc9a`Tnc0Bsxt96QW=Vk|JiqD15Osl#oIb z!z?Kxjz*B=iCv6LK%|Hy0TBYUbv{50PryM^CF5u&lM*hFNLd0l98RZVQ9ho><4_nN zkp%fd5JdB(Lr@6lM+be$G|1PFPK3yQ5IDi5BkUADERarcIj^|HDY;f7@P%k(IxObx zfH@2?!Ux6+rtqfB1!PRA_maz*Iu~$CE&)x3U_I7<9P`8y>K*HF(zNJg()O?b^|}}} zwawU{Fa8*{m`%@rfA;jr<44Akhrj(gJoLaYIPlB;{=VLO`ktS=yE;4Ww%@sZtLJr>(EkTvpd!s;RzMb>V#FxgRUa%Su&e&y*COK6SFFu;4_#GB5Y| z568a$?pwvtZ@xZq_^U$)5A4s`_vIJaS($tHe7-wF{@JciKlym)N9k#@)Ey~OiC82= z1pMTrL|#HX7v`|zSh3r;ZQZi@!%Z7wHmr|c7qvDrVhwZks+Hkkp^OkZEqFyx;Bsn! zKZWc^^7ZldBBB=xkMsOs+0ysldv}S)Vyru`=$(ZN-kv}2tvBbsF=zIy*WG5i&Tw&d za&(w(Z)f}3G#d=Y-E52YB8;c?EwR4VnCXMNL~`3@u0aVwuFGuY`$V2}W{5|WM+lGZ znF9vK0b#4yYr=p{fuP(abmgM8tZ+_jeA1$=p)R5TXQal76hm^VL7W3ba~(1E7@Yfh zcic6M<6P0|rNRye?uIQ69m1uNqQqG?6q|*NZH$G3HnWmNOWbBI@Q#=d&)@F7V5Zwj zt;RjLX^%^=eeyiOqu$;VE7UqZRtC8``Nu_Om1P9yOe4s(3b(vayE)TsPX_E#2Jd&6 zZQJZ8(lj`^2*8q3QLok|bVi~Hgp|z=vzI4&3q7vr+~&PgC_4aY?b?br+SyIR`2PiB C_O?p^ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/48.gif b/plugin/editor/cheditor5/icons/em/48.gif new file mode 100644 index 0000000000000000000000000000000000000000..7467a5a1204da8acc4c325c759fda265eb6ff8c1 GIT binary patch literal 1710 zcmZ?wbhEHb6krfwc$UZT=g-ea8?FDGa{m4E>-TdNSC%;M=y3gcEc(S}^KU2ozFds^ zb=dyd{KSv{Qu3&M;pxlznb~?$JhNc({8SHes`|q!~WQ`nP<+-x7lcHe0HYA ztDUYp`@>&tF#EaJ;@3f|`)mBaUC+C{%=YKgji=JmeqM?BebnyIjPR?AObs((6@_TkyBjZMzK&gHy4nfm+3*ZZe8et3TC z;Tn^-XU-f9HU4li1X z8<&p$JmB#;Ie4kD@y|z{9}YNwIh^+Qg3tfg3x6GUI5W@s`U188pVs|ujYTZ$8>!a->P!K9j)^J zo=@N1q4XaN7)S?-|G6W40~A~mOA>*!jeSKyVsdtBi9%9pdS;%j()-=}l@u~lY?Z=I zeGPmIoKrJ0J*tXQgRA^PlB=?lEmM^2?G$V(tSWK~a#KqZ6)JLb@`|l0Y?TsI@{>}n zfNYSkzLEl1NlCV?k|Rh$0c59heo?A|sh)vuvVoa_f|;S7p|Od%xw(#lk%6IszJZax zp^>hkxs|bzm4Sf*6et00D@sYT3UYCS+6Cm|Cs(pQ}JoAc667!N% zJzZ>-fco_^GgGYG%v@bvES;PToy}Yf4P6Z!jZH0_%nXfP+?-t9TrACDdR_99OLJ56 zN?>|Z5PF?)>IEf)+ybD@E~!PCWvMA{Mftf3U=Lem;&zKAPV=C8Q*gV*5vN{#pkwqw z(TWt!Fd<;t0Wsl;7RZ4o`_w#OS}y`7YR3Qn{{H#>>*tT}-@bnN{ORL|_wU}mdHw3; zi|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa;^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#DV9P?1~91%MgXOBD{t{^=I!n_L!|da97HoQOv|m?VNTi@RrJ3C%aaTz4VzpjL ze(Am)nF||T*^Rt!b;K-M%FNBHdxytDv8hwS!05(_4~JSiJA|1PUK%7kVc?OD&pBX` saHOHnKQE)egXz#A32uc+1q&KQg!*KJv!<*xRAld4m2lXJi-o}&00FC=?EnA( literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/49.gif b/plugin/editor/cheditor5/icons/em/49.gif new file mode 100644 index 0000000000000000000000000000000000000000..3baf57d92118a9d295f87019c97b9319938fcb21 GIT binary patch literal 1681 zcmZ?wbhEHb6krfwcoxI(=g-f7?^eCv?{Ij!-_rvz?+$qU`11beUfZ90?B5@B{e3#> z>LQchC%hkTbN+SA_4jedk0%qZ?wt7l<+OKu9e$mN*wtqFe23HaCi5?Q9lzh7|Nr@f zKUbrFpU?fU)#c~S^e=apJl^5<`?%-XDQ5p(ZvXyx!{hZXAI`??of^Nj)9=Tjpbtkp zf1L{bbv*9fZtK54-=xhv^M1eM&#&))9`gGCYSORs85`@&E^eFndav{6bMa3P1phu2 zdvAls&jVh6&bt4-Q-6Mr@vo=tKi^;dbiO^RkDt?_xF;1KL`&s?(bMcpFng2SI z^yhNH@hPUio=p08C-KjDzrQz<-|aU2eZuGW>FD35-2Z>x`tM==uhVJ2&u8uFu=@XU z#_kTK|Ns9p&ls47YguJQ{>uF6ifOi{A8Q?RM9s>m(KO)W`OsL0L9E4HezRZ2|BPfE1{ zvO&W7N(x{lCE2!0jvxsIke$x?MX3s=dIq}524)5dW`=r(#wOnqF1_laHpait7C?(A*$i)q67m#PGlu=SrV5P5LUS6(OZmgGIl&)`RX=w>E z!^lV%s6w~6GOr}DLN~8i8D@e@YH@N=W?$S+WE4mMQ?&&*57FE0kG_Vu;$%quQQ%u7!7 zbg@+e>etK6OtErvakelvGjKC>HghpFbTzOrHZ^rJu&^*Pce4QU%wT$5@{>z*Q}aq- zdQ;$f4GnPW1to;s0-((>*tT}-@bnN{ORL|_wU}mdHw3; zi|5atK6(7;;e-44?%uh5>*kH?*REcZ;0$^0LyB;-bQW{Jh+p?5xa;^t9BJ|cQ;oTXD3GodplbjYb#3&b2C#DV+bm#y8 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/5.gif b/plugin/editor/cheditor5/icons/em/5.gif new file mode 100644 index 0000000000000000000000000000000000000000..50e09671f09a7124b31f042236a5e8d64ad0e1d0 GIT binary patch literal 1407 zcmeIx|8Em@7zglcySiItUDq`_V3>9r%LW5`?JVs;vz1Zj;bznE!`6^U(}tDQEFHJu zNEgzMYvb5lAYNd=A*=BMLe5Od%`e%9tXVu~vYbsY7c}OW)a0gMIze+$6F%OQ-}Ddg z2cMtcPx5|V$@Ah%KDQ@Sg;XKRFe0)+DB-Y(Lj|WNiK3!FfJ2Bw9_N^Z62@3629+XI zWT;3`@CK?;k!OmM0E;4oPzD&4@RDIv3fiE=vdkn$*aW}`fQACe;Y|t%unY-7K#ht5 z2Za~}VMX1Qc_;)~hN2TqfC(36K^B3?vl5L-Y*>*+$P)}rDm-2kIhG=z=qYjmno0mV z3^+;_IF^nxU`fcwf=$&NL&_4bfUwMBP)zVFDG4m(NeKiw zI?U1}6oWiVKq)8-j8c?DK=T}}OokyKc)%zkE(AOZ8JNF%f(_tvm-`_gX&ht20fr=L zieQNtASgucp*5YeGwowLTBB&Ccl>N~seWfRo7!8^+@9&R9VJt_9or)A zczz~FR{C(nYE4-y%!8}>@mmWya@u*PIocg}a`##n+r{f+y`AFct!ef0YXVrG6i2XvSUs*0&@hv2EI+OgXeX#`9q4hm;qsWcJp3YOF#^*nIkZf=` z3tgrHrfscgER0yImP<97{HJT0P2KwQc2_><_h~Za#4+)>gULj8*(2Nhrp&}x#pc=# z4Wu`jrk)-6wx#c3d+K%lVT0q1)7CC&e)9{5;_o-y&0+mBn7?hEPG9#gbhqC*nK9X@ z=ogOJ?84TTmiTIF>yl}E$CN$Z+dpC0Xsl_8+C$_SGlF(Tmri!j=LR>qrxB-cQNR7( z{F=Em`3f=^eN=Lx;M?*#u%!;!qp1`%h9F+4}$h literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/50.gif b/plugin/editor/cheditor5/icons/em/50.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9e49d6446309807fd90e21c3f40426875c4b123 GIT binary patch literal 1695 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 Vem&pr$cXXGsc}^W`9)EH&tIH8FKYk* literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/52.gif b/plugin/editor/cheditor5/icons/em/52.gif new file mode 100644 index 0000000000000000000000000000000000000000..72e7ecdfc463e54f6074c486f00fccbb23c683c9 GIT binary patch literal 1711 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 J*vPCjB5Y@ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/54.gif b/plugin/editor/cheditor5/icons/em/54.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b0b8d3d2abe149bab5a334e8574a201833c41b0 GIT binary patch literal 1703 zcmZ?wbhEHb6krfwc$UrZ=g-ea8?7I%HTiYW>cg{JzkhuF{pr@Pb2;}rq9fb|NZ{@?p(>w{r3OvW$x?`|8yqp?**TqS7Lr0wElI- z?#5#0p9efXo(TH)=j+e?*4H9n^eQ-2+@d4750vSRK-eX73>JN$pM`2VMM|DI3Z)2V!9g3^!U z$?tYrt*$WL(kOALPwn_*)lK!1@AjB3F5q~)+Tho@yzR}>>#9YctTsF|&w6)<(tj{u zpa3ZT=Z^3VP;f~sNd(e1_7w$*$=RtT3Q4KynR&KK?|1K4QpilPRSGxtHSjHPPR+>l zs47YguJQ{>uF6ifOi{A8Q?RM9s>m(KO)W`OsL0L9E4HezRZ2|BPfE1{vO&W7N(x{l zCE2!0jvxsIke$x?MX3s=dIq}524)5dW`=r(#wOnqF z1_laHpait7C?(A*$i)q67m#PGlu=SrV5P5LUS6(OZmgGIl&)`RX=w>E!^lV%s6w~6 zGOr}DLN~8i8D@e@YH@N=W?$S+WE4mMQ?&&*57FE0kG_Vu;$%quQQ%u7!7bg@+e>etK6 zOtCVubagXuF)%iCHgh#JbTzOruyA&Dbuw~xax}JZb#sB~b;(aI%}vcKf$2>_=rzHq z7nBfk3xGDeq!wkCrKY$Q<>xAZJ#3YU+bxDT&4cPq!R;0!oO<VgsyL#pFrHdENpF4Zz^r@34jvqUEVojbN~+qz}* zri~lcuUorj^{SOCmM>enWbvYf3+B(8J7@N+nKPzOn>uCkq=^&y`+9r2yE;4C+ge+i zn;IMH>uPJNt12tX%Sua%iwXi?qaq{1!$L!Xg8~Em z{d|4Ay*xeK-CSLO(dl4sXKQ0^Wocn?vcsXsA`TE$Lb@_#TLVbk!b)DIo3^g^xM2&dDd5lEGG&BvfmBdX1 z95ekh{4*T|OvIJ4J$%ho7+fOcII}C5Ftpyfch!oDKviczCwU>dlc+C_d2HEh{_4LMh-es~}&Lg+OIs bbAz%YtH6{G2aY;(vars}x~rujz+epkur-!( literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/55.gif b/plugin/editor/cheditor5/icons/em/55.gif new file mode 100644 index 0000000000000000000000000000000000000000..28679aae53f6f3075d50b21d1e8a5f3db1d86c46 GIT binary patch literal 1698 zcmZ?wbhEHb6krfwc$UI&>(gBz`1|+og$oyU@7{g;_HCtA#(|d;1*a%|{qc3-n^n%c z{E}}Low#!GXsf`Hp-2bynJhA5F2_<861qx9`;~(?#~4XCf-@x2EkcD0$p8 z^VQFdw0?)yU(R~iLeO|aVQ z<C*7I9_ zm*N7iCQf=aH{n{o_sRgr-9G-;;$zNa6`U-TTdc1*-*DsQ&86FG7r$9!y2ma4XpZ1a zrK(F+cKiHPR-4ZIuwvh#eWn$r|NsAIpf*ta&mG|#px}~Nk_e=2>?;Zqle1Gx6p~WY zGxKbf-tXS8q>!0ns}yePYv5bpoSKp8QB{;0T;&&%T$P<{nWAKGr(jcIRgqhen_7~n zP?4LHS8P>btCX0MpOk6^WP^nDl@!2AO0sR096=HaAUmD&i&7O#^$c{A4a^J_%nbDm zjZMtW&2GK4GRy>*)Z*l#%z~24{5%DaiHS-1 zr6smXK$k+ikXryZHm_I@>>a)2{9OHt!~%UoJp+)JUEg{v+u2}(t{7puX= zA(aKG`a!A1`K3k4sX*n*AgcnUy@&(kzb(T9Bir(o|%`D zUtSDW?dxmhnO9trn3tUD>0+w{)UTJBnPO#ZX6|NgX>MfbZ02fc=xShT=4$NhXy9UL zY-(ZRY-|M6>yn>bnwy$e0@Is<&})oSFDN18765H_NiE7OOHFYr%Fk5*d)O)yw_6Nw zng`XJg4->IIQ8lS9itD5R-|Z#2?5g%hzU=$Kn^_Fr{)3EdJ!;DGyebg_s{QNKYx7x z_Vvr>Pai+LfA{vy>sK#dJb(7|$>T>4AKbrp_s;EGH*Z|OcJ<2TOBXMkKX>-b=~E|9 z96xsS$l*f=5A5H!chBx!J9li~wsp(qO&d3?U$=J6>QyUOEMK;C$>K!|7tEhGch2lt zGiOYnHg(G6NfRgZ_x1L4cXf8Ox3#u3H#IiY*VWckS5;P&mz96TeLf@4rrs0=VO>f8M1M(LVTL{i%K$MMt|%@U zu>i|iDQd2Y(gqxQF?t*Z(u%HXDb6CsW?}pxu_63nX2v4UDN>GpvNi%d@jL=HvVM+I zDK6Gp^1g=b4-9?fwX9uI#DhIdoUGX1TRE9{1dFFANSG=!vi$j{Y--S;@L18QONfa} zB_=}2m4!cL!<-cbtw$TA#o0IP2ztmOW@It#&jck!Z)QW@O&$|IC3EsQ`ZTy$ZaTmr vq0HUq!g%P&L?LUNW3s8=P1=4OLv$cr4hmD%7!&fx#L83ff^h literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/56.gif b/plugin/editor/cheditor5/icons/em/56.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d46e2964525f6202b5c9cb9960cd04bb8876835 GIT binary patch literal 1703 zcmb_cX+RT47!9I=h!qqqT90MHiU_%oTqGp0Ngzr%LNwwXl3j_AY)lr3w6==XiuLNL zv8}CQt;M6#(*w*U;DOd#iU(FIRHPEAShESF8!FfzrN25qW@l#Kd*AoXyqQ#qn8j9x zkU~f;2+3WON6UbCn#wQ0R7bdE3mc zdu1+b+T+tQrz7>rrA4l4R>w)6#f%)?AaY$@&}LOsmO_ZR{^mYj_r>%lcPk%Mr?wpv z;WgR!PZd0EF!p%5TCY@k&O)yHl|AmR4hwYN%sRGJ@$_^C?%+2a%*1V+hH}XJaJRFi z@x~DZcZl7!0{647$LBRJOJa3dB3?7wS(DRZL2ey_+%xyvqTw@5sljox;1JYvSrA+D1Gr)6P_E!R^& z%iCV=?L7RbD&c@Bp{I2_enI!FPK7&C@j3%Af)a z8krV9gUMvZ0(2^kN}rPAL3MynQJIGpVLXt?^zRb1 z`hHoRk=$DjS%qpTCZ(Q2BU61P^#P^Q|AuO{{b(a5gJ0zPufj(8N)D@AyPo{f`PkX<==b)AZ4Z8HZMpwz^Sxj0Hr=^>>t^H64L7b| zyL#pFrHemZIA4G6?3vSbwKb<4cAM35vbyTT@nc7S{NelWzWt{1$k&Gt9XwF+)&4K{ zeX+NE&+gAZ+x6)uAMZ5p*#6OnAH4tGyW6&I*}UnUjb$6&Ucc_GwWVuTzxl?h*Iz4H zX)0b(gc%LX^{7r;Sg=f!zZ8MhsyyYA#fug$m_ILfu42w?d5$bQD>FlyK5M2VEmbTM zLMh1teiDzH$YHaXjD#8SbmBsh<6@`BOpBiS>XfKRFanr7Y2t)e#*YhsdF+_5(W62` zM!qy6czDpTz<{Ac2Kx{4BatFpgNYs?#rhr_-)l_@Xj_exPKowUnV;exJ*9Lrk}Vh& zGHl+kkWqr{Edg0kvXS&$`bb$+RzT^r@o5Sej$9adSdlh<8ZsG}nIR5lsae6|jG4e> zgcmkxv|kQa#m(^>Jt>TbB#oOo)^9@0+?WY|W2cTwLL`AC5}z@sgTa3oC_&QWsDq_J z=R>bBi?VHvPnFzLr z->azKHZhbFs|WUz)`t(>Kf`%>^~N>f;X$mOwv@Wz(-$ACx@gN=ADPT7UC>~K9qRz* Nu4T7lqC-fDe*yWunnC~o literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/57.gif b/plugin/editor/cheditor5/icons/em/57.gif new file mode 100644 index 0000000000000000000000000000000000000000..94540e86b892fa98d122226563bb5a13d087b617 GIT binary patch literal 1703 zcmZ?wbhEHb6krfwc$UTR`>5TYKR@E@{(a2x_orL`-^~1d%;D!D&%bXL|32#Q z>OlCfLpHyThCVwO`TRiihyAf>Gtc}y7X9%=(9cJm9}YPGf4%U-(coVPtv(!f|GD4( z{n7CIr#F6iu<_@WnA^*2-|u(c*yQ}}M)AKtU!NYy{&vFeWGJUnv^>t9t zr!#4PKHd6tI_>eEke&VE`)8(IU!eBuWV~_O%(F8s-t70hvc&n-=+{!?QhJ?+(QNIph8Be(m-axmD$Y zf3GI2DCK{+DPVmS-;d+TH|*_y=jX4l;{SEnVReP+|4-|7w93ERWBUKi;(yPl|NsA= zfij@@pF6@gK*1%kBoRp4*jE%JCTFLXC?ut(XXe=|z2CiGNg*@ERw>-n*TA>HIW;5G zqpB!1xXLdixhgx^GDXSWPQj+asv@@_H?<^Dp&~aYuh^=>Rw*$hKPlA;$OZ}PD=C1L zlw{i~If5hKW)J8<-g=m>KFB8k?A#o9ieT85kPq8yM*u8tEFETNxW! z85k%)ffCTRqLehNAQv~NT|l0#QbtKhft9{~d3m{Bxv^e;QM$gNrKKgv3?n05pbFjM z%Dj@q3f;V7Wta&rsl~}fnFS@8`FRQ;6BCp2OG|8(fG&l2A-4c-Y+kV**gJa3`MLTP zi3R$GdIlgb!4&%X;#ZoR3s+rS5|oN?FIIz#Ln;eW^@CE2^Gl18Q-R8rK~@!5ITxiS zmgEz}4B+$G&eP`1g19yq1P3s zUQj~FEdbi=l3J8mmYU*Ll%J~r_OMkZZnrq$G!Lpb1-DzAaq86vIz}H9tw_-f69T3k z5EGtgfgE_UPt60S^&()RX8ix}@1Nhle*XCW?dzA%pFVzg|L*OZ*RNi_c>e6^lgE!9 zKDdAH?w#AWZr-?l?dp}wmo8p7f9~v=)2B|JIDYKtk;8`$9@xKc@1EVecJA1|ZR?iJ zn>KD(zi#cC)vH#nSiWrOlEsS_E|@=W?wr}PX3m&CZR(WClO|5+@9XX9?&|DlZ)6$BX_?c{>9G`txYxY$|V zvva-n*2pqbl`!Nnw@$V;=SfP?NOV5iDdMuH;H1%lg_62S9ZM`0wz2c_h6wx#5Oh1r z&k|yC;laYT&MEw!QYQqM+&X&LJncLZl|0x5RD_};UM4MVWl?b`v1t0F bBU6{MqlLu*4o5W>9zKhCS$DNG1Q@IV_TrRB literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/58.gif b/plugin/editor/cheditor5/icons/em/58.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f7cefdad761b737fccd8367e3aa98d1f3cbc30a GIT binary patch literal 1704 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 VI;637Gj^A6#DxU!3GSGnzW@n#!e{^h literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/6.gif b/plugin/editor/cheditor5/icons/em/6.gif new file mode 100644 index 0000000000000000000000000000000000000000..e39f4cf222842ad4c203bbad8bd9edd0d7f35f72 GIT binary patch literal 2017 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 S#Vm8fSX!J5>m-l>jPsu}XXFh4 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/61.gif b/plugin/editor/cheditor5/icons/em/61.gif new file mode 100644 index 0000000000000000000000000000000000000000..5c297e3888a2cd1cdcc21c4406b9af3db89b1408 GIT binary patch literal 2107 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/63.gif b/plugin/editor/cheditor5/icons/em/63.gif new file mode 100644 index 0000000000000000000000000000000000000000..a66a51b0343fe3005becb540c5a3d03522503724 GIT binary patch literal 1704 zcmb7EX;>3S7!C?}AP8PyO)KoVfRX)2d5!R_hDmwim9Hf*RC1rDKXZB7<5sFnrKUp#$*`i z(4|?rG{)M{%7P$6C9Az6Mqe8_Y#J~;EoeO-f45Z9-z4d);^=iypB5Urw)EwtI73^R zK^tmlNbBxwGgNU~E0TM((f5yWTCS9J=~6o@Bg=B3+eaAZ^7-ce=7BrXs~VQECfGDM zV9*AcZ!8}+50vjt?JDQ%+nY`O&24oVEvMqmjgY>h`Nj3M?bRy{w^rXe3hC>Uj5=<+ zR#H=(`utL&sex;(294E05=~Rb&9dP~GJlEY#p5!qM)LBWs;@q^bnDE^#s0=x?%6!| zUC*-+EpjA97_~aEIlQ|9S3_W7>^qE4_*}Y_Vy09Y%AXZoK!O| z9-yAj_qOz(F%CR?P**f`d%eYCA^iX5ZE;v3NC0?3Oo)GjL)8kQCS zXo-MK%ps;S1XO_nf~B&kY$cqO9hWT1&JeN1#Ly5RSPiP>3OS4k0kwP+q5{<%qEL*c z!yrDkE>noW2n5UE5W}oL0BcMLRl)#+OeKk^fm9%nMyB}(FqzCH0G&#sQmAwajZUI5 zL4P_(r2?-S5s#)6OTa{4#H(2Nj6;-Sm;$6wva+(sS^i{Hxq(7sv)NV+I-P_gNUALe zCRCFUmCvXG4_1kkG6g0>5x}Y_Oh+>@4iV4v?-JySF zlA;O#N@4)1GDM7KsYcKO0T_*_Fd-s>qj?-6&L_)cVvre5<1-m-77YsI(`bAuiwQAU z;r@IUJB%5?;4w$JJXDk^hY@U)D}K#okIS_hL9W0f^I)ZHGc1l!qHkK>l&Ydmri%0mOUUO{XAUPCgGsi2GkJyEA+-+h# zS9!+TxO2kn5E5g;gvn78`=TayGe}4{5FJBzn2|EWfnGG<#=EZ2-hGzTxpS{wj%E>0 znxH#e?YPg47!#lm&z)A_=NOZpUtM=~qR&D%_tF|kVR67Dw?ou^?w;wcwh@Z3yzPw# rTx?elDvDYgY(1wm%zsRK65$k?D><4|^K_cS!bKA9!^V^ZfDrT-8-S#q literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/64.gif b/plugin/editor/cheditor5/icons/em/64.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5cb6ca0639b47ad66931cf34678c95231ceb6e2 GIT binary patch literal 2114 zcmeHIYamo<7#@YyjX_GSYD~6lF>_`Z#$*^~+|oqY*zK~$%#n$iGtG<)QAA=(_e9&u zZQJflwHqsqJDVXzkuFN1nvqkkjM^fn_srDJF^OIEjKQG!kc$X;cOf5=r z8>`zWf4Es%ikFsoO1p$lFA&Gtc&&w@gCg>yT%0H~R4Q^-bqbn$#uZH)WaR`&8CfYG zl~j4FdNUg`@xuM&ii|)-UtVeIy5ggOPYOIHs!0~NRXhs59A&uk zRQkn&WMxNO|Cpj%6e?}m+SxBr_M91?P+k$>WR;|6*T{XN^4m$vbLx5u<4g)-^gq_p zTeDZG`tn}&_6l1DKRnnjYh=F~7_HC5a?a-+D(xDPD*HrUN~MZ*`RTRdWdD?`gSkgW zABW`%lWy!?+*h>zVx)oc1#{pI?%jw~bd#wXzFx4$pdS zqoSfvQ8p-uy914JaB$FQV6oO}gf%ak&8G>h*}Rog3KWn>=Q25bCd5W)6loz)B%g>> zSNc~AEY7qnn}?cg2StZiXaS9b#-IRAOH)89_1~c^)-;;O_X9uI`;WrBfM^bg_5*oP zB$p1V;VU(%I0P~mr12qc00c!$?V@iO#D{oc5C=i_#~}ilYz7p?n?zHo1TQv^Ph-n7J0$8M$b6F=)-P{_U8jmek(S z45v-2o=n>wWUIZ-RhwE%rBui#WYUl0W1}BNhKD4B1O0vPd*8k7>F#>-y7Se`ju+3L zJ#Bx|*82ESOY_4AP4^oc#P#?7sH?51uBxmkFB9D@y;JgganbGHe!X?`hOn^U`n9W9 zE?>I%%Y~ow^Kx^t&u9H~?#Hv48E4W@pE`Ns__3o$(heW`AvNV-@`0qp{R#2=_Qu8T ziHR0O?T+O0xVtzIn-vkhlNq)n6lBmtXu;oa-?nwjci#pDZvG~~-*1zz&qnG7@AY1u z9`0@wva1Wp*@@`5j^Kc|x5L@mVAU@a%Gzq}ny)QaulmYjCDI(RV)-(&FPAPcUA)L- zp|O!6+(3W9{CRWd=zXE9qdj|;77S)C)mC4VVOE+?k>+m+(^J7_H_ZVmwY8S)W55AS zWmA%?@!7gfBZ;$9%=UBRUrNYc>9COPMRSrmUDD<=u`Po55Pf4b`T{AsGo(z*V4I_v z=}Y8&6H<77kkB|s@2GCjQi-Kexj~lYu3Lo(ISDn%`T>N9>>Mp!GgM?n#3e}r+}y-F zAVcBna(@|itvd|Xl$a7JThxxqpxK)z4lmFeH=b`*X#NPi}YiIbyoQ7jU~a>{Rz!g_SFCY literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/65.gif b/plugin/editor/cheditor5/icons/em/65.gif new file mode 100644 index 0000000000000000000000000000000000000000..027f28edf8997f98ba49a4bcf9404d56c5ee2cea GIT binary patch literal 1704 zcmZ?wbhEHb6krfwc$UU+_wL=lfB#;%aN+jt+q-w~-q|1iXoJOy60W~*7T;X!{P9H4 zhyAe|jg3E@N!!1?^vrylw`b0rooVsu)2G|ZY+vqmzrG>u-MNy>3$0fM8^7A=`sHxi zAqR(V*Yp0}%lvaGY-6Ls#yW}TmpATeSKQUD{pi}>`=>YV=x|+XY<#dw;>8ZTtBXtz zPt^IG9DIL`|LaZWzkhuFaxw14V(0JYDsC*({%|s6Z>RN#=eG{c2><_T=AE_9bF*0f zznQtQ$@$BJjmBv+zn$>=d%@@B9_OD|V)oBW`}h0n(juONp~gR-ZoG1K@BI~K|DI31 zw6p!${ls47YguJQ{>uF6if zOi{A8Q?RM9s>m(KO)W`OsL0L9E4HezRZ2|BPfE1{vO&W7N(x{lCE2!0jvxsIke$x? zMX3s=dIq}524)5dW`=r(#wOnqF1_laHpait7C?(A* z$i)q67m#PGlu=SrV5P5LUS6(OZmgGIl&)`RX=w>E!^lV%s6w~6GOr}DLN~8i8D@e@ zYH@N=W?$S+WE4mMQ?&&*57FE0kG_Vu;$%quQQ%u7!7bg@+e>etK6OtG@CFf=!^baFLx zHgh#JbTx1^bai%dcD6J&GBYqWG;)RMb;(aI%}vcKf$2>_=yk)X7nBfk3xGDeq!wkC zrKY$Q<>xAZJ#3YU+bzyG&4cPq!R;0ooO<Vgs zyL#pFrHdENpF4Zz^r@34jvqUEVojbN~+qz}*ri~lcuUorj^{SOC zmM>enWbvYf3+B(8J7@N+nKPzOn>uCkq=^&y`+9r2yE;4C+ge+in;IMH>uPJNt12tX z%Sua%iwXi?qaq{1!$L!Xg8~Em{d|4Ay*xeK-CSLq zog5wP?QCtVtt>6f%}h;V~xOjJZzNKk;E zkC%s=i<5($jg^I&iIIUp@h1zAOk>ai6*i#Knt}awLt3yvfIDw!Y$&gLfIx8C1RiNO zE`N?h4u38;X`Tsb>N-Z&7C{L?7S={O>JwZfq-6NTyyCsY_+_LdT+(bsWKB3zBa$Lg zIZb3mY}0%U92^7fQm@(tIyxBmq**!{N3um}#%M;dMH)L3DL0Upq}J#bKk$0fu&g=?hK-9Q5hn(6gH$pwPIOK}bHvg(I=;R4*s6 zn%QCWtgBhjQ|-$z{L)e7fy(qB5^30 RyI)Z?&f)GU(I5o|YXD_ak(dAg literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/66.gif b/plugin/editor/cheditor5/icons/em/66.gif new file mode 100644 index 0000000000000000000000000000000000000000..faca98013a37a59761e6b6374ed68fed16e28046 GIT binary patch literal 1704 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/68.gif b/plugin/editor/cheditor5/icons/em/68.gif new file mode 100644 index 0000000000000000000000000000000000000000..2143451805a5776bd7b9cc1b963d6ac68c36224e GIT binary patch literal 1694 zcmZ?wbhEHb6krfwc$UDhyF=;EpP#>v+WkJ}`1_c{?@zaW9klvzH2D9UnSX%nb2-0{ zI(#@8@@#+FhyAfXpKknh$mab%+uuLFzCRlNe!ugF!|ppeTsJm3e>>s#X20jZKVM%R z2>7`SC>1pG#pM4mf{2oB8xe_TEnGzZZP|zFBOX zHuLMXjDNqs-e2SYcu&Z$!}h;Ur(Id%{NdTHpU0wq9kl*;FZ0e?=U<2H9`Ex1c_rrl z>5VVC<25@~&@4`*X(o|EG1w z*46(y>~Qz)-GBFM|G!zhy2A9=(a;~qli$62_v=jRyFI4A4!i$4O(xg&f76kHNZ5`naheMLcHa&~HoLQ-maW}dCm z``!DM6f#q6mBLMZ4SWlnQ!_F>s)|yBtNcQetFn_VQ=?Nk^)#sNw%$$BS=C4WT$g}QL2Keo`G(%fti7VnW3Jcv5C34 zxsHO7fuVuEfswwUk*=Y+m9dePfq?=PC;@FNN=dT{a&d#&1?1T(Wt5Z@Sn2BngG{g7 zSTDaQUEk2s(h_8bk&!M?g>G?WUP)qwZeFo6%mkOz;^d;tf|AVqJOz-6iAnjTCALaH zmqNUdTL3pUuUHT49lhlIT>Xl~0)0b01CWucqiS6q^qmz?V9Vygtyua}vbVrA*-;^b)IVq)lQ=4xo@YG7gPY~X6)X5#4P=HzDT zW(d>klAm0fo0?Yw)0=|OYl>4ZC?Vt)0Bv?jEy^rQO>ryA&s6|>*eVmZTa0j;2i2Q` z+bza8_38s1qYsK!q-cf-0n-kM2~V^@4m{bX<^j`s5in6R{{Q#)&+lJ9e|-P;^~>i^ zA3wZ*_x8=}S1(^YfA;jr<3|r4+`o7C&h1+_Z(P52^~&W-7cZPYclONbQzuUxKX&xU z;X?-x?BBO{&+c72cWmFbb<5^W8#k<9w|33yRV!C4U$%6~;zbJ=%%3-R&g@w;XH1_q zb;{&P6DRcd_4agkb#}D3wYD@jH8#}O)z(y3RaTUjm6jA26&B>@<>q8(WoD$OrKTh& zB__nj#l}QOMMi{&g@yzN1qS&0`TBT!d3w0Jxw<$zIXc+e+1glJSz4HznVJ|I0W*}I zu8y{rriQwjs*19bqJq4ftcs=*(z*#UHfB7Q`f7e^`j$LqHZlpk&YGf(+U$|++Ki%_&b$fcRtkcQ zE+U>HE{uW-R^|zEDojk=EX?m&xL>QtB^XJtnF?4K_!w9SWJw%QVCE6hi``PP^U_hT z>H4usb&*WRyv4gE^u>M}Ej{V%7`LIK^HFQpbp5!Xc_vCPnpqW1k~Az9DX{S>irHDr m`pDeM%^oDP!{K9co3f)&8N*J7r%V%Mh5EeaYH0{CSOWmW6@>%< literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/69.gif b/plugin/editor/cheditor5/icons/em/69.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f9a4de5c708f174ddf9e87087d1d09f983d350a GIT binary patch literal 1704 zcmaJ>X+RT47!3%e)nZdT>IE(VYpsy%5<)^STnRyxAg6etEXiUbB)cYyEcC+AS{08< ztrcx6cu=eg1r)&~goH~45ept1idrR9Z9(x0Xz7Lu_J?$S%+Acd_rC9&c{9NwLXI~~ zrBEr|1m(pGbDL&OyB5}LrVTVD-z^VqDM3$N?9^@XxmPAIX+sBUV+I-$`}A=KYi~a` zh_w5{Dt5-^=+x%c_+7`Bn2jM_ z4aMaZ2dZ@YG`rZQmSVl3@KH@%P0OXc(!$)*!p6F+fkx?Lqo}bmJ^N&n@k&=?-PUqL zuAyvWzg}2fos+Mr>*#8KUN3&6^)ob7n6#qKn;jLc_wqZJuiZww6$ zQQp*?hbAl&g#!W@hso~(KLUfrNeB)kAZuj`9<5iSrvWkvj~2@kfg+5LNM#Gtl}J>2 zShP4jN$f45`S}712rePVEI|_xE;+U=Gibmt1W)480xUlOOH4kh zL;w~YbQgnOAm9bjA*Lsr&2|GkKnP@j9t_CC9b$8t9$XLvUNssSO({v_Mhb+lVv#c* zO^V|fm%&I)O{J$Y>8Nro1M>FvwrF^GxRVHXRhj~a33r9cWkf-MsKiPchRaX|U{Qn< z&=j0UBQyQC1UWV;t5DI0%b|-=IfH;P21ExfC5-?@qW_1=<)dg79*Mlp_l?4;=rjyr zL?S9QMJYx|xQite#^oy!7)O=SD4IO7i{VlfM^#c31Nc!aAXcW3psA{1v`EAaQK)cO zAx1(3JQ~TT%VZL+0AvR8gFM*~-%AKVK_G|4hlHM>m(V)^^kPBK2v>lLQ{;#OAK^+~ zb2(#jEk=-IWMl!Nlx;vHLM18(h70D(#?FN`rrs;AWb9nL#^f@{WEhrX{m(IvERo)^ z3`b2%PDX8yC`hj>NmE-5{r&RA;DGu0v!_oU_dj~r*ZbF>5ANUlqsP>J_s;LPZ{6&= zalNynz3tl7E0+5Q3s*Q#!eWgyTIa5)7y6n`+(vsp|iwaL1 zKlaPff}it`96od~FZaMtKmM?PU(Vj|_k6ee+w5K6?A)<^Th`Vso4?-l)t8y-jTv8j z{@JIWq^A+78&YtUay^DBXh(w$K$FEr(w`%2z<;!B1#zaR&Muaa36NN5b z6tXZ_7$o2a2Kf8=@)r1Ty*X?zmM7DLyijy^xA`B>`)KZmb6j0$&cJLZ$5}IHOrQ3_ z)G3oEIlNDOZ=(IX6UM*uw%uE{Hsh?VC=_S24cQYEH_NkOd95jS_cI7JILE^ Qnkta^Uq2rc4p4ml0f!L15&!@I literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/7.gif b/plugin/editor/cheditor5/icons/em/7.gif new file mode 100644 index 0000000000000000000000000000000000000000..330fc953c5c1f5d8f06ffd0845d7f1967b3d8b9d GIT binary patch literal 2106 zcmd7SSx{418VB$T1Ue98X`-Sci#QmOp%6ra7P2Gg4MSuxLJYg?3Zz9Kh%5;%*bOaV zlK`@VhG7v9h4dsKs|#y`*nwed1+iPSd&o_0Zti59nkj0Y=CRMyc{x?T`k(*zopN_2 z+63tUI)DfTkbB_6``NNzCgAp*C(LX(++Vf~!Y@Fisrw<5B?|^&7H1kf-W(M-SzaXu z{h_WfF^|-hmhry5TMUxWBv3jBb|$4x_0>K$w;ZXduPMnCm->pY`N=+jeVt{fA2>(x z>#RzajZY&pP10%-^7A0X^g`~C(BDBc7K8_xNC%0XLl<8O>kN;PJ>|o*3}NSa3F!Nz zJnT)P--?et96*D)BzTljUzkuDpCG+gh9Y2NL9C?i`bbZ;xF3{7g0f5!)N}4}N+fh6 zy!37g^nij)6iLV+>=Kv9+eny zkN0)gqhp{jBmtsENG^nkLQ}_WPR(V1Uwko4l=yuemDZDRb-ADdib$KI1U&UVFY<|$ zExv`$MZugF+4N7NXZ;}h9hi|01<_|J>yd(5@!bc~67D25WSSO@f?m`4Mbb9GWMpz_ zZv0$N_BgLhw$ioSU(ivV zdWfD*ikb%cTQC}x|9Pz%6XrHy=Nd#GW`opL^YM*N3)+z;G)WHoX0B?b?ez&hfVp|gGz;2)dVl2Dk;*frBU;*l zqymfJwxfIS#;(&%7c|==$bTAEBWT@Z;vBc-u(+uzy9}*o%xOFa4aj=I$R!t__3p2M ziVCCiN)j`RL@6-=XL4o3*-hB|&9Z)jt@DnIKliRGA^O_;rZlhQrs;3qLEbt2WhoU& zl~l*RQEV(lyT-BgukF_+a&0NEU6m>i@3#EBE0BAiOFVIubc`q)?W|k?~bs9SKR(UWD zRex)7TV7ezjMgIpgp4d@oNcmOq?zE;sU60y9vu4&MZR0USsY-$_{`mQr@5MNJ$S6_ z<=4QF`mH4cBFHGwHN;Sz{O|QLH1kK7`YlJSF`2q(sT0!1X=d7k`oPi zi~MbCaZkiCkLO7rB?m175Qcci(bUEOFM}__iE$ci7GWV!G zW%fWNp3sWdND)Xz2Z|{>F}*%Z8wOctd@(ARtxyFyR9y~j`xlfL=cA~ofi=ZbRt@$k zqO``Sj<`T4XGCIi-&%3Njw(nb#9$jM_PHR`x!s4&LQIJ}_HN?vtD_ZZ#;40a6lG{T zIqOF2TTW>XytsF)al^DmLHqD2BzrTzKjf`JW2^ao=mx*AIe1sb+EYcJD3u_1(+KKF z-_E^I=P^g{Om}cqG33_#(qXvsfuCl(CuPYsBag7%8yr8O^^(iSv%8+qi(lFG`y6D7G)znBO{QKGeE`gI< zmVhah*y0IftKwLWQ<_Tx$8y7ec!iP!E6I2z<@ZptR#o10w+GbWw%X@K79k@X_sOs? SKmW&(D2M)M!~Or6ocJg87v0VP literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/70.gif b/plugin/editor/cheditor5/icons/em/70.gif new file mode 100644 index 0000000000000000000000000000000000000000..c107a14af86ce4bfa1f5a8e393a80c6d2abd3049 GIT binary patch literal 1704 zcmb_cX+RT47!9ITxk{-ABI2@mBDo163xULhgb0xcXt3fDk_{Un*)&-s(%MpLTd*Ej zwHkYgSgZAi0 zqX;AglG+fG)0*INIh^(UkOyj+$h5hZ(Qo zHB|~6)v@k}6;&kyd!4xF8q#-1({+-oHrw!8;mzG#*X0Gb4hR}|39jyBJ*XC2w~+f> zJx?wzX=$iBZ;oxhQsrpOw$}*yoIQ`vYr1V}yJfL$2iMiz?CvyoS|rCd$g9iZEN1m1 zo2Jd8c32Ya?alVK=Gtv?{8XH?yBV*I@2HVG>K8d$%W&&_rrO+Pl^-oly193@<9=1g zv7{S^#82*4wd_yp?W}xycCNeC;3Y{6vX0xLJ28~Xm(il`agG^^bOa?@w0nZyqL^G(=P`Xg`JQgwI zf(VA`Au6@7u#i&7q@adeDxJgOcr+LcGJzl)SL!f@iL5h53@8X;qtc+!V;WQkcoY>m zXaU9riA?`4L8~8>)fp-MQ_=uXD*bP$Ry&9`V(IXUeE(J0n7L99 zQ`2E1T3}GZ1U$kMN)HJPumVF3nJAh+u!}MT#ZV)H>H$Fp3y^DcDzwnpkCsXyiOz^A zbV^tv@S>WRog*q~Vft3(D=3-lKZX@<@vdPu$JT-DIIu!iJPiDamrWBtc54=fSh z@eBt|OH2lB59p(M$$$p(y02S&=hmOrJJ&N(2}VOb(kAIx%EI z@c40K$GjT!O5n=@{(inbqeqQ=X~b~vVO}IsxMMicBcv$LGvj%!Nh2Q?BPHR&$mvU` zM+(DB)*)p6s04{Zk}!%-UJp?hQUZcsH|mKQOuOF@iP$d)4g4FPN<^JJ;MX_bAQ`c+?3tZi#$Gk;;Q)bog=LLD!`-@8g W)|S&N8ir4Z2;kj5H(v&j;{F1P-I>7v literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/71.gif b/plugin/editor/cheditor5/icons/em/71.gif new file mode 100644 index 0000000000000000000000000000000000000000..62618d65945b362e01a14cccf7a6ae4c75127f81 GIT binary patch literal 1622 zcmZ?wbhEHb6krfwcoxEN@0!u~uaB=>w7Gt6-kaxV@0`oIek%9MvE+Y$|6Dse>)*e> zn-*HGnrVDyf8NJ;cMoh%e{dmT&$`%63k+{wnE&WX;rA~OUfikv`R(DmyXkKpFMRW4 z#os?auOAP8@nF@<+q&Q0&fU4({_63_&(E7~ob&qlq~^i3&^@b6uAFiI_HO!%+nQG| z+5UVt_0mD@Pfu%4Zr9zp+~M3l?`!9M-`!O{xm|njYNMC86Q5nvxqBh=-qplUuV>!4 z5c2Yl!PV2YKi^J1zu))si`EynG(SIYzIZ_6+nYIiRvF#6;B)0j!2A2!?;h5CdQ$!I zQOU>0r7vz^BXQ!4ZB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy z!KT8hBDWwnwIorYA~z?m*s8)-DKRBKDb)(d1_|pcDS(xfWZNn^f+Q3`b~@)5r7D=} z8R#Y(m>DRT8R{7to0yxM>nIo*7#ips80i}t=^C0_85>y{7$`u26417ylr*a#7dNO~ zK%T8qMoCG5mA-y?dAVM>v0i>ry1t>Mr6tG=BO_g)3fZE`@j@w*YQzUa=n7J9^3ax%w4}1^R}11|ToN6#Dw&SDKp( zS6y5Zl!|aKR)dQ}DhpEegHnt0ON)|Ify$LZRuxz|7o{eaQ# zzd*q`*i<1rGcP5-ycn$7*VoE3uec;JFFDoI#a0QZUoSH=#md~&(Z#~t)Wy)*+{Mt) z)xgrp%*ol<&B@H!$kEln)DouGB|o_|H#M&WrZ)wl*A=H;P(sKp0NU)5T9jFqn&MWJ zpQ`}&uvI2*w>aT652`l>w_BWX>eUB2MjsTdNYM-v0;U}h6P{>+9C)%%%>$o>*T>t-)5G1()y3J#(ZSx% z*2db((!$)#)Wp~bn4$D^b+olKHPqEqRg{$!73Ae)Wu&DfCB(%*k?9`G&P4vO15-#h=_FdiVFyc_jX8$iAhav zVU>4go!KNRqiriA+7Y~BrMb6P(8`sJY>Ji|_Kp$~x}HiNZfuMpT(Wk7DyFKg>Q;UR zvRo~U>=s%~R}I+@bn+@Q+-0!g?UmN|(X^Ix@KuoRWbt=5Q*#M0GGXcD)YIV>7Up&` f7E-BFP;6p$@ z$N`GpX{W7ELg{|)@dQ*1((ChZtdKAH?a6dYTNUu;=R`KC+y=+1QcFTaa-$~e>t`NdEumw>fT%D zu6t-2vH#4OGbR@Ou4yNnVh`Hoeb}|T?e!G^gJMNu(SwG_Re=uMm7byPc zj_?goa7ipl1kyJ46$OdO*{LN8NvY|XdA3ULckfqH$V{%1*XSQL?vFu&J=B$SufCElE_U$j!+swyLmIN=(U5O0@#ALBje<3ScEA*|tiK zAPEJKozD41sS2ig2D-@xW(EpohI)p^Cg$emItoSxh6efuM*4y6>v2->ucCj=wc82M7$xklLP0cHT=}kfCb;hX|ln`ti4*$!dV9LNIy>6iT3ec%8XM~C zYHO;iDl5v%N=u513Jdb{a&xk?GBeWCQd5$X5)DCA|t}XLPLUs0t5X0e0{vV zJU!gqTwR=<93AZKY;CNqEG^8{t;OU7;p+<4hSD zDO>A!g9y_^_9g*MDK+1i5Y-F^Ny#{YCPAA}9Y%Xj&UD5no`OwEk>*)%q@~}yu~2H_ zOEO|&;$~pr{$Xav$71**!PP^6=eL1~c1SDd~-$l z-IZmV8vL#;F1WR#^yZ4PmwP(Do}KmW{H%)$^Di&VyL)=)ot32rdm|R+SR9|4bahGL z&X$0^Gm1}6O?a`p$*Zu6I{P?N#NsR+ZmdQ+a=F<;~?KSNARZd}{jDB}MytqJCak z@M3$z^`%8GceN}pcl&p9*^6E6-!II$y?geN3DIX}ras%zdSPDn$Af)0mli(WJMG@; zif1=YeR=ip?98-{ZP7p8KRq=o^X{6;hnwneEib;ZD1UEv&ox1t2j3&l#hD=EpgRdNJLD1hvA&M!(;Fx4~AO*SwyP%typ zGc-0aH#gT&FfuSS&^IvBH#E{UG`BJ~vNAAGfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz z{qpj1y>er{{GxPyLrY6bkQqisxUThW@d_&g_)D9iHoC!p|iP*p`ojRg@Lh)rManr zrKzcfo28)%Os`9Ra%paAUI|QZ3PP_XPQ9RnkXrz>*(J3ovn(~mttdZN0qkL`Ox$iU z!)YE=ZwhX=nB&x|4|I$^C|Z%C872fwJ0K=J(E>T}WS^P`OzTC!M9ujB-`_vKfBpRN z{oB_spFe&4@c!M~H?Lp4eDVC*(TITuzuazHLF*xT(NxF(j|)*EnF~v-rPB} zXU&{3ecIG1lP67_(BIeF)7{nC(caeD(%jV8P+wPDQ(aYAQC?PBQe0G6ke`>Elbw~B zk)D>ClAM&75FZyC6CD*95gryA5*!p5;P2<_ zVr&G=PT0Sg%1Vj~@^Z2=(o&KV;$osA!a{-q{CvDT++3U->};$o%uI|7 z42nNlfMf%M4ybSf)s_q#Cm9$yWi&RlF$q?4Xo+MvH3~@xi)o24v^%uO39)l!OlWVA z(UfG&onpYiA)zOEH>1<3!BtW;R!pbD@PoG)cRCwS0P}+M^M(y)Yz}-2Lu^RPJB(CmBSdIJ*^gEauXU(B5V literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/74.gif b/plugin/editor/cheditor5/icons/em/74.gif new file mode 100644 index 0000000000000000000000000000000000000000..18d684e765fd20c5bc1967565b704dc758868ae2 GIT binary patch literal 2105 zcmeHIYamo<7#^CIQqgYhsX3jBlWYX3$#H6hV z$*NUKs5XN!(Ahz zZYQTE8m-^MW2~sCe{?jfq$JPK@a6b;UR70ob#+N|b1R+RVr%=t!=rOxU~tEdo{^De zxm>~JP8~cL788>wlbudWD}D5+sk3t`Hg-}hz5#;D(9oKWjH{W?sn1*aJaza{0~D z(pzO^^<7OW-u^9@`=qBQDLp;m+BIcdoKhz1X0dWBDk@uB z8?3FT($k}ok}?YmpK&-j6&3dy8y|LbOmH}FC6egm)s0LBYWfNF=3FiTc0& z_a|Ve)bVn01sF_(sp@Sui(w|)2SflCxQ{2GVuo(t#Q;1G6|>Xa1@8jWK`w7gpb+#3 z+~&y+^kI`Zn9Z928!<)9hxs7F1jKw_fruieVwfC=1yWRF^)e0vOhXVKDu$-s0Ms$* zkPrmSv3OH9-U1I;5U>Q2nWd$r2|&aX@HjjXMg3cf}i3Z~G7AQORvo)F|abBeB92!TXg2nOgL=D<##fCB}HrqM1g z6i0ywVG7uwBZG=j@v%G}hhk+%##>r2hy=PNgFvvulP!q$G&355Ml@qslFaBcTn5DU z=Ys-dhRgZDCC$lI8-Wk2A~QfCZ$HSf7eahsx?l=#?p*M5>b>W3=FWvMCl{wm2B*H( zzg_dplFB>k;jC#@lUdt?0+rW=DpPAHrzYP`yd57Kee-%`_|;3r(BQy}{=VnEe?05y z?vi(Qv_EZYee$^FQFBvc!^8Tz+M4RB2bC4&Wu+ze?-dsn7Tmp)pLaVqC;QgTtjymt zZphNF|90)_m9*59%gL86CS5q6`0Kf|3BSaji8~z|6MZTw^5lu*KOc)YDh&@i5*i{2 z4*Kcvp&t(h9uNoY_eVrRKNu45eSLo5arb$H95#!&_xtbm?B4b5H(oox-r?!t?&i9E zn~Ss4R>v(4_I3>VS2Wwro2WL{6tb12g}E7tsCuEWrY2u*++e)kXx-X17(?KT&sQ6) zTDe01vrm^V`{d)Ldb&#%FVb1KKwImh`RI9?8YqSCYR^$RZr5Or zAKEQZM?*8aw^Qy^t+Sf4C?}+M`+N<}g}{am4c>fBbgDM(lF=f=RpDHNtt73Apme7o z?U)Q(d+BOJbh(#|b$_|3?p441ASwLv|xQ@G0_;1l@%8)MlaJ^a;9#$HUf<{ z&CUcQwvvU*t>iW_9&)>RxWzVk#!&z*!B)55OMJfYWY~IL6HZw{cWJRP!OCDGlByl9 rZ{)0}{R%#&sRcX@QgqtVB9>{LwL#BA1qJsvYOE!gC5IIRp{)M|*wgu1 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/75.gif b/plugin/editor/cheditor5/icons/em/75.gif new file mode 100644 index 0000000000000000000000000000000000000000..18a7b9220d64bd13208645722d86fe444c0caaf8 GIT binary patch literal 2075 zcmeHISwIt46paFkVim2nXweSAtu16@O(23KAXozt!X_?+WP}LG#3Y!Aw1Vtd6f9Ce zK{nZ3KoH7KKu{5+5ky%-5(H&aKqzQcnoz-hlz#QI?_=I}&bjx#cV=dfjg>K$st!|! zO~=5dWtV%(`Lf33)If_Hk(LR3Jy9OBGSOkEuWfYTX}XEaCF>bka&;2vrI0f5;NVE}*^$PG?gHC~*AGui;$L@O zY|pdJi!^B~@{(1#bXEI`@;s%bPI*ygcdl4Vi^vUE?Ou1qi*J)h+s@xfb85WiG9^tM zYKfeD;P$d5A}17|6|!r*En=*e(ptdmFSQew(+Z-k#AO~ip*V3RUs6ndHP^fI!_CN&q{ZZ0=WV8C$#0*f=7#IFm-EFH z$0U_Uddm*gr;~eyg2~Rf{!(&InCX-_@oomCIn%nQl+{*re4;yUN_wfM;zUdSf$_)D z*TPLiw>*a$LI%qAKgzWmZi)~lyUxze!v1gn(FthHs=1KJ0Flb0%6n5Y0h>zm26=!7 z=*eK=;jhZ8;Q)hw4(TpEYL<}n}^pircGK)yUYT%PG)B{10wvMerQt{emn zVj=}pHWH0MDN33Ll1Tp!Wil7gT%JAnDc^q-=2A|wL8Lv%g?u?QP!88tgks|e9FWR` zI1~u-nLkCc7sP|OUJx4~I2ZuV3>F>YbLY?`63&Ljnm(w5Z-kE`9M_j2Go1<;frw*ZQ|>o?nuCM=@M5t$eazdypmfI!A8m zC9@yizx(6uo0;j~rzT%djE}u~IXW^tH2C8AK>xEonN-p%?&}Y@br0sEQ%OlZm z%@3OzA2i&*celRoPHl~_x~j6GysWh3*W#kvg$1|r^KRa_el0gAJ1g^QMtWLm%9Z4# z%a;-p;(v*|82j^unCSE8qJBCX84(^98WJ3ICNSXik3aaI@;fQupYY{zImg)$i|ONi zjN#>Z6r|HUsP0D&A3ErEz}3as$&uno zq(#fBz@>Yl6VT2Ys!in3hg)=hn~KAb@|Sn z&4&)%U$Efn(}S6U%QtqnYw1p%r$H7K7G3J$dN6F4^LUQu4Vf4@9Wpk+pyv0qepwroLRYV-?jVq zFWk7Xe*gaa&!5j+v0~%FgC{OsYMnoS?STVbix)qA{d)QK?a$x6`~Bz7t0PAaUAfXc zd-nGqKVH0jo8Q&7_Ta$@D^_ehcIUo-)&qM- zFF8L~zap_f-%!s0@{(ZdJ#@7=v~`_|1H*RNf@a{1E53+K6ZM z9qnzcEzM1h4fS=kHPuy>73F26CB;RB1^IcoIoVm68R==MDalER3Gs2UG0{ zA;Cd`0selzKHgrQ9`0_gF3wJl4)%7oHr7^_7UpKACdNj<45g>5qphW>p{}N?qO7E- zATK8?BP}H`9&m{A4!PtC-^m4 z8mb8k@^Q0r^9c%@S~Yoa7;!Q&NwP}*Qaxbwg0)*u=#WOt4kxF6M~9p@90AJ~xoR_Z t@Jw2i;>}>B;4H?$pe)Fz7;eK5vGbBMr&^aujD_>&XEV8_*jSkutO4FcuPy)p literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/77.gif b/plugin/editor/cheditor5/icons/em/77.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a996d59e9f3c82f109bb27470b8d2918d3419a8 GIT binary patch literal 1653 zcmZ?wbhEHb6krfwc$UR*!olHZQPCZ5?~`fXpA!u~?25phGeb|Vj9T64yr$FP z!M^Mxi{qc3?RdMxXXU7_@ZcM$j+ILxt-La*KcXlS6TITb7Pw4tSuPg5E|NsAI zpbRMf=Z^3VP;f~sNd(e1_7w$*$=RtT3Q4KynR&KK?|1K4QpilPRSGxtHSjHPPR+>l zs47YguJQ{>uF6ifOi{A8Q?RM9s>m(KO)W`OsL0L9E4HezRZ2|BPfE1{vO&W7N(x{l zCE2!0jvxsIke$x?MX3s=dIq}524)5dW`=r(#wOnqF z1_laHpait7C?(A*$i)q67m#PGlu=SrV5P5LUS6(OZmgGIl&)`RX=w>E!^lV%s6w~6 zGOr}DLN~8i8D@e@YH@N=W?$S+WE4mMQ?&&*57FE0kG_Vu;$%quQQ%u7!7bg@+e>etK6 zOtEq_b27JdayBz`Hg_>JbTx2tax!#sGBPuDGBS5@wKRn3b;(aI%}vcKf$2>_=rzZw z7nBfk3xGDeq!wkCrKY$Q<>xAZJ#3YU+bt$I&4cPq!R;1PoO<VgsyL#pFrHdENpF4Zz^r@34jvqUEVojbN~+qz}* zri~lcuUorj^{SOCmM>enWbvYf3+B(8J7@N+nKPzOn>uCkq=^&y`+9r2yE;4C+ge+i zn;IMH>uPJNt12tX%Sua%iwXi?qaq{1!$L!Xg8~Em z{d|4Ay*xeK-CSLqog5wP?QCtVtt>6f%}h;V~xOjJZzNKk;EkC%s=i<5($jg^I&iIIUp@h1zA%wo_16)>REnt^>sLsnB3KbO3m zJQsg+PnM7rCxHoutG^syuei2GxQ=P4l99T2FOPGEo_>O=VRAH2 zub{D;gI0uRyhVs$udrIAm33N@Pn4Z-FPn#QfMdG3jb#{HuRw6BflE-LnY)TWFE6vE zcc4j}lNU2@kEnvQn5>Mwj8()9hDA*ZTue*?9101IvsgLBxfU!?>viSH(xlmU_E2GB8*J08e3jc>n+a literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/78.gif b/plugin/editor/cheditor5/icons/em/78.gif new file mode 100644 index 0000000000000000000000000000000000000000..972a21d831e2f75b968722d0079a7ea4e4d2f325 GIT binary patch literal 1662 zcmZ?wbhEHb6krfwc$UF%M9}!(pFcMRjUU^@{rmg(p?lg}ubg`(Vdq-9zX_WhQ8Rte zGWk~L)cN-IPv)=s9$R;M#*E!L`5%N#uD4BiH*586tEh(_>EG@=_*Fgiszt~>%c!?L zc~60+*~b6-`D>q$$-DXMA2=nwo3`TL??0cPJ^TOn@9VyWcbpS`Ojvr=H}!jT?OR!! zgJKp(3|)8Y**r80eqx_+Ti*VOec~l4>;KDlJQX&*ZWj8jd*T0OJASs#{uE#PDY5Rd zru#Wr``x-WUmIuK5;8e2V)i_u=%A?iQ6ZDlHo@mr+-~Xz9@BSyrs4jrXW`?(?AKyu zkEN`R=s91rjr>tJ^_Ga)F=^YULMA7SyuMdYe(9h0!Y}uftlcfWfY+&YpYq#p`=orY zn)K8&{dr``*Vfs`jXh3T_`QxQKX2@J-8}S^b>KNc6v-9O7C~?S5nAKu~iB;^)>J6!V;*iRMRQ;gT;{4L0J^^2{qPNz6-5^>ndS0_xYx%uKOzGBvO?F*mj_bT)S} zG;}qvuy8haHgR@wHF7a9b2T-F>2=9ZF3nBND}m`vLFl!_sTY(GatnYqyQCInmZhe+ z73JqDfIV!LiQ6q^IL(9VO~LIJbDVnhfsWA!MJrM?!-Rlo2gHOYS|A6W>{IiAX}t)T zs2TtN`}^njub)4@fBX97^QVs=-oJbM=Jl(WFP=Yp`sDGWhY#-GyL;#Mt(!NlU%Ptc z@}-Lx&YwGb=JctPCypOGdgSn-g9rBS+q-A?uAMu!Z`-%OrteG>WPn$Yr@}!9q`ulo&y1P0%+S^)NnwuIM>g#H2s;eq1%F9Yi zii-*h^7C?Yva>QX($i8?l9Lh>;^SgtqN5@s!oxyCf`bAB{QZ1=yuCa<+}&JVoShsU z?CorAtgS39%*{+qjE#U9N>5iuTT4?zT}@R*SxHerUQSjdetC||CxrGL+LX&!egcg5*sAw#|mV~`}hFq$pG#i_Bypz>V=}ht!HJi9&;v#Kb7+$=HNa1c0cl9<-|NO<#CQZDVFG)X; z=|5A$kp+(y2s9gbW)(azSjs8H*2dwJvC*lCMa@r5z@Vj#fk~WG=!e6GiORDW1VuDD X1P(k=5aN}ZP~geI#M0Nuz+epkL4;jh literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/79.gif b/plugin/editor/cheditor5/icons/em/79.gif new file mode 100644 index 0000000000000000000000000000000000000000..3fa89d82e826904f9391ea63e28f4eac3c402dd5 GIT binary patch literal 1672 zcmZ?wbhEHb6krfwcvi~r@6VrqfB!yoPkZZ?^VlZt-Td|ce*U^@5%Ocg(tDOs4_YRF ze)jDD-@o7PJoqMTazxGaoS^YNldxNzQ+Ma&zniuCtxw+9*4e+Rr_Q&xe=>j7Ro~Qi z(^fpTjX&4Y{qOgm2Tn<+XUw?XHsO18?L&|BJI)FFgiIcZnH|%2J)-CQdiwJ7B4)>p zJ-$~>y66%A^VOSMB4*EB)BZ2p@k-YAwW#SODeFtB4hO|7&Z#-x(hK+=TX$5}?umWE zZatgVQRUA<3$BJ{-POUp-;rHj=$4~LK=Va|)_bt3`9{SKM_-o^g zqhjWFj6?3`HT_?{<8fg2VN+Qr`Vq%h+i#(Mch>H3D2mX;thjEr=FDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_p zOiaozEwNPsx)kDt+yc0Ixnujbty?y4+PGo;y0vRouUffc`Ld-;7B5=3VE(+h zb7s$)Ib-^?sZ%CTnmD1queYbWtFxoMt+l1Osj;EHuC}JSsEZKEj1-MDKQ~FE;c4QDl#HGEHorIC@{d^&)3J>%hSW%&DF)($R2j?$EcLDMHP!OYnG4jEmHq6*;w^%$O16d}fBQ5DzPdqU$jp)r^1^j)WC{4SY5-78#ctQ%+hjsM%B) XFdjJV$Ze1iQ7~D6LqL_8k--`Ox-)gU literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/8.gif b/plugin/editor/cheditor5/icons/em/8.gif new file mode 100644 index 0000000000000000000000000000000000000000..b573e9b3e645d787ffe7f97e5f6fd9ebfd25e95f GIT binary patch literal 1199 zcmd_p|5sCW9LMp`kfjI|#Vp`(I6zRqF%Ln95NQWQah~2HUz1K@ft)Z7r^6SIkywo_ zz9bz*VTl_YxEOdDCkGZw=YWlk?@W*{V!>!IN*#fO9e1~Txu5W-{)k?G!1IU4Ij=*9 z<0JQGx+8aFl_S|XF=hczKorjjF9G`$@DpHZs4Y3XX#xBQYUp>{DPH0p<^2{{f@AoYG`&&b5zSKi(zFF^@L0e*@W6 zX`lRhOrA@3C$V>dT?Xa>utUIZn9NE()qQfghtJ*zH7TU$GP!?1lj6{pZY(N^V*D$xCQvryu#cflns4k%U)J*J zdnN4ZUE|N`RCkfRzrw0M&HSdoMj)<~nhY(Qt6=K^dLCre1;et)uGTW0vcWo)K#$j3 zrfyhO*;Z8wV}_@i1XA*uNnb@ai0y`qm9Z4ez(h|y9tEPNz}|D584)h)_*PY#y)WN3 z1WYd|u2#|ujm#p@Lt^GZuW9rUbt}{ION#FHHM{`iMK|3%?bMh8+G-*XV7fIA) z`FO186G3W_e_wn>z{M=@Q$Gc!$-{Tc&)zb3PJSbTT;G_okXPnHrrFAqoiP)k@HFE`pXINiurl80EH~*w1qhOUmdtwd24&=lDcnr|9+PJtOO* z6M`2H4!U2cO4d9qvP@ST%^JA5?i>8VF3)!aM?y?UBvi$|RCcju*ookJc#spxzCw;e z#ZiuzUQm6>+j-BM_l2z*pV7J%kv)8{)-k2kKkp=GUv*oOTV=g8)_g!Z>*=qFmeg=P zL=FyTB39R*tZStzboz!q&e4bG_8;Fi#6_;iX^SrkrE!pOr$jF1Zr|x0+GL7N<9a$2 q3p$(ot31MU=cz literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/em/80.gif b/plugin/editor/cheditor5/icons/em/80.gif new file mode 100644 index 0000000000000000000000000000000000000000..84e3ca41744e367487844be77d3216861e897ee5 GIT binary patch literal 1390 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 J!Js3%{{uSJqN@M^ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/fullscreen.png b/plugin/editor/cheditor5/icons/fullscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..4111243acd7702883ae5efa39d704c86e0c03b56 GIT binary patch literal 1305 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/imageUpload/cross-small.png b/plugin/editor/cheditor5/icons/imageUpload/cross-small.png new file mode 100644 index 0000000000000000000000000000000000000000..2de4c12037297afcf41ffe8a77f6ce2df813b504 GIT binary patch literal 2938 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/imageUpload/marker_bottom.gif b/plugin/editor/cheditor5/icons/imageUpload/marker_bottom.gif new file mode 100644 index 0000000000000000000000000000000000000000..daa101c00303415ab8f8cbcc4bbbfe972962d982 GIT binary patch literal 43 ucmZ?wbhEHbWMg1tXkcLYpT_Y2|9{1wEQ}050UZV)0Ld^gF}1`qSOWm;KM4l_ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/imageUpload/marker_middle.gif b/plugin/editor/cheditor5/icons/imageUpload/marker_middle.gif new file mode 100644 index 0000000000000000000000000000000000000000..a854393c40338b80606944f8527c5ab0d6965b09 GIT binary patch literal 49 zcmZ?wbhEHbWMg1qX!y@?;J|_ZX$*=#Sr{3BKnFyCWEhw@ScKA6Oh4to$Y2csJ4FjO literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/imageUpload/marker_top.gif b/plugin/editor/cheditor5/icons/imageUpload/marker_top.gif new file mode 100644 index 0000000000000000000000000000000000000000..daa101c00303415ab8f8cbcc4bbbfe972962d982 GIT binary patch literal 43 ucmZ?wbhEHbWMg1tXkcLYpT_Y2|9{1wEQ}050UZV)0Ld^gF}1`qSOWm;KM4l_ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/imageUpload/mouse_drag_img.gif b/plugin/editor/cheditor5/icons/imageUpload/mouse_drag_img.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cd7fe127695565cd1d0cd7f3038578e83756dce GIT binary patch literal 316 zcmZ?wbhEHb6lM@$xcZ;L)Wl@k)Tsv!95{LM}; zG&I!K*4EV2l$Dhg5)$I&<>lhyVq;@tW@cufHc3iccFHXQfd`jp`ulCzt2wGYWK&wzxL;TGtYOM^SB_x7qXtgA+lW zs1T$X)zZR)c>vF1wZf`li^Zzb>I?=HXtdjH$H?Sn3dL%%n2g5D6iOY1GK?S?SY@?X zVSuOC=`1<9JOF@sEeL@89!j=YP*LVK3T4FC@3*F=3lxe@r{75?_ct`a0N|7r_4M?h z()0#B2H*`{xuVl)UkFE)n_U6etoORR?Kb=E>gqAgcYO^FJ!J}&3WdVIH8youRcUp) z?-dF(mG>JPdCkKUDJj1;H962U+3k@kRSk>=0&BG>CrV{=I2^oY1WmEi>1=Cj)9G}B zgM$D7prNDv|J(mO10-ZhR%#l^=Eykc7!xNKb8@$EWnd0>GhY}BJ!|_G0{MBd(7MP} zTB?}E&F3d?lW;S(t;)>Zwk0g3RfmpzmaX`7CP$*@{VKXq7#X!7OWzmDIC8R3 zI{zgDn=8$g@WnE|NC>(ZIXR*tSuBJq{Z|MA@he)Pl=31RO0Gyim2<>YI)&y6>7`+6 z>VG#C2wquBW$E0%^!`U;Y3BQ4E;XGi6%|Qxxv2Skmn$)YCE;>pB1xu5RQNKBY55|V zNSZGagRBe~3|Yq)=81}>i(c5LrZQ55QW-~>%S~a&LMQ`;&(C8-#)r`(;Ux)CNo*FK zo){h##R^Ldi)SUVVK|btB;qBOEy^ttaD}p$*u1~6tk+^)r63Tap4nUpe=9dHNg@(} zFG6PUU#}(VwS0eK^Ioqd{zy6#-(LIXYFq2qEzMswHC}1Btp4)S7Z)#_|GfUQb7$+$oIX{1^2G6D zpB_DO_|U;m4(#7oquRUY7*vO4`UC^B=uk$-NY`9A8B2?}0wqpfxUgW>gMC4_cKPP}pB~)*>y4yo zevzI1WsCOEy^q3y4>LQP#&0`xtp68GQM`w+UQ%yjtq?Bu6S?ly!|*b zs;s zBij-_?b^p|6<)moH-7h$+ky4z6~=vG7|H0KR7EqM5V=_2&3w2T3)dV(I9m z;@yL@+y9U}y1ah#=!M1_)3f{6tB`rCuU)n1#%@zr4B=}$*;FE_X9D`rZZTwQOtrsk z_nP*MG@_W2qgmMf!Q8&PC#PT@fwd)ASW#QzWo({T;@!IZfs%M_-N};rKxm{g=wLpy zi&&Z5ktH1jHoDJG0QOh*oSk*XgIS61SOs}6IY=5foBxnRBpiVXl5rEteXGFQp#7_G zH6MAeN&CDj0Iw-6C*TQ?((Bz>3B!2h)xoobuKv1xX?U>ztk>#HRWLUC_%7fuQ_Rmk zh#&m%vqN}$=>~5caZL!O(!U_zJEgtfJpd=~ub5fsoyNq_Hnu9K&G2P1&mHns^W6`o z1LcxaipPuUqqiSjTtASFw4T3sY1{6jP|Kt9_TZf(Cg zPnm|(cvh}V)+G93I=>Ul5o<6@t`Zbp83#(PSAph`gK6QP5E5>A-pA`##r4KK#0-30 zsOx>Rt$GMdTTU+ep36r%m_7(-6f50DpkE6iXsd#=dsR)4a{Jd=sM)mK`d zQi{c?<3q&Hm1*rtV5!EP611s&@>0&^D0zb4X&Q#S@)UNhrqj2ZxRY8(nz~-j3LNRH zsQMtDzDlGRXpJ#i;{aAJ@A)|t5`&CO-jiM^%v+*$QRA`tyg_))cw literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/image_align_center.png b/plugin/editor/cheditor5/icons/image_align_center.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ee3baad05bcadca8fc39bec512737bbfe5c5e5 GIT binary patch literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h82?0JKt{2vcT3T9KTU*=O+M1i2ySlontE)RZJI|@&baZr- zmzOs+HMO_54>T}vcXzJ{loEmT3R`lW}W@{++`C zo}QkI8jS872{14)5Ed4mU&p1dum9xa>IcPkxPZ@X?H_mfjP_x38kK5KGk zmy)lq@596D5)u;s|Nl=f&H(wwpd`pI7|10BFeEL#Pyy5%5YXiPriQeh1-s?fq|Jp(n!6evH00;pgjzpu6{1-oD!M<>DsKc literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/image_align_left.png b/plugin/editor/cheditor5/icons/image_align_left.png new file mode 100644 index 0000000000000000000000000000000000000000..7195ef77b25df3995c349d6db31ec55db3db698e GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8-T<>lq)RB^hxx;i^MJ32a= znwr|%+pDXqHzi023k&P(>*wd^8yFa@o5=m-lulo+!l%apw|3}noTzJJV)FW7^qpNw z2bO4idU|?!dEGf2aBr{jk@dE|zP=9+tG_;LGPj!3-QE4}Zl!;JG8Q!$&9CDMG%%2m zkT|rKuOf`^|NsA|cV3GFI!wPL$S)YkB>^x*Ew%U#)EedK;uunKE9rtWGfxD|6A1?f zPlp&UU(X0RPX}*jpO9EdPlxH@E{;J`o(;Xet{(2f^K~~Ft$HIf=Z?-9pB|wbp$C@i v{81UPakT)0H}|IvS)VnN!W|tL6b>*{OVy1Top ztE-!un##+|dwF@ysp9nT@bLBZEiEl=N{}!xFnE2|^#A|=zvO&L1iH|uB*-rq$R!Oh@CM9y57eFM>EaktaVyEd zg_$RUB}LNVK!8L4^mqZC1l>|vOLwATY;J_UXj{}_wsrsj literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/image_align_right.png b/plugin/editor/cheditor5/icons/image_align_right.png new file mode 100644 index 0000000000000000000000000000000000000000..2705dcb827db708e0052243a19c7b13945ed2b47 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8-T<>lq)RB^hxx;i^MJ32a= znwr|%+pDXqHzi023k&P(>*wd^8yFa@o5=m-lulo+!l%apw|3}noTzJJV)FW7^qpNw z2bO4idU|?!dEGe@aBr{jk@dE|zP=9+tG_;LGPj!3-QE4}Zl!;JG8Q!$&9CDMG%%2m zkT|rKuOf`^|Ns9F&rIhAI!wPL$S)YkB>^x*Ew%U#)Ee#S;uunKE9rtWGmizUgo6X0 zr$daFuV;jur-Qe%Pe`n!r^EDc7snte&xT%KR}XjL-MX8MR=ts#b4TZlPmj=z&;v_$ w{-})DxLSb0oBPv-tk0T{K6CpqHZU+VEM2SCQG4xbI?x&hPgg&ebxsLQ03u_jRR910 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/image_align_right_wt.png b/plugin/editor/cheditor5/icons/image_align_right_wt.png new file mode 100644 index 0000000000000000000000000000000000000000..16b0cf6d245d39186001536dcdc2e20634a43d07 GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8)d4;st{2vcT3T9KTU(o(o7>vjs;jH}`ue)Mx;i^MJ32br z+uO^_%X@ly`uqFOsp1R{4)*f$GBq`IcXtmoFu1cz>A({0rUZ#6r*!V^RX(!bwjzvA zUtfQI9am^*=)XT18z<@p1Oyyf%XfFT(%fp!`uh5H6S;kSeDd@24GatsL@k|NmdhXT!U% zU$uP?)=qo$>HGKA`LC^G@AfSH^z+Xj)9_t|UGM+?`mN7a3+Q_2Zt*VW&C{feo3 zoI2yw?N@*E7EX?wG}|n5&V<7sa#sHD-}is__5XWs{y%Z=wM=-zhKqkX_Z~AW32xea z#&hcbMOS~vEcn0W%Kxj+zZWjwpqZMx{m!fR-~Qiu{r}Os|4yYVf@l4&UU$#2rX{F# z$LjO{58V16I_LkJFJJ!s|8E?6KA`A2(6yg~)^7*;$f+dAFBr(B3^2HefdZ6as;7%% zNX4y~{!qTd0X!^!51olfOM7Jx8UQhHC2BdUrfHR=Vyv-jZObNHzm>ZwHKFFT6Ji09+Y~Y_x5c` zKBr33-r{}c>+UX# Ud+_U9o*)-`y85}Sb4q9e0L%F)H2?qr literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/image_wrap_text.png b/plugin/editor/cheditor5/icons/image_wrap_text.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc2f5a4bb9d2d9e3405c13c47e0f09104667560 GIT binary patch literal 423 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8X#qYVt{2vc+S=M$TU$FjJ3Bf$+S}Wko1443x>{OVy1Top ztE-!un##+|dwF@ysp9nT@bLBZEiEl=N{}!xFnE2|^#A|=zvO&L1iH|uB*-rq$R!Oh@CM9y57eFM>EaktaVyEd zg_$RUB}LNVK!8L4^mqZC1l>|vOLwATY;J_UXj{}_wsrsj literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/magnifier-zoom.png b/plugin/editor/cheditor5/icons/magnifier-zoom.png new file mode 100644 index 0000000000000000000000000000000000000000..77e03059a6845207f6f79e0285f9c4832d21ae18 GIT binary patch literal 2247 zcmaJ@X;>5I8V#$+q96!}h(nOAl7t`x5`hSrut-8Fi|k-X1_+Q$Ohyx+ECS+!RY0m> zFG?*D&`L!R5L6IBkUXpwYr_>OT(+kQ6}h-v#XGTL`{R1&nVD~S&N=VU;fan;BofgMaIhyj5bV*Hgd;jqoJbT0XW-+5 zMWYEh@svQ&>tif*<%Uf}5CMfi5R1il@eVvJOdt@+WU@lT!2yRNaH3Q`!jjVofyE-*4|pb%;>#ByEIu3Z1>LZy0-np|P(0{#CoeMD!PChRtvY>&2i?ONbae6X zAd%^GM^BGcE(o*t^B_L5%H{mU-SJtj!U{YA8X1Iy+yfBDO9=CT4@ahOKc9>JXZ1dE zIiJsk_*pIiO@^Ro?B5!_x`nz&G5us)bn(gf5Fd5B5ViHPC~F3TQQPSYdIU@4Ps3nF zWQalA!r04`hQ{Sv^rCmoT7l8|#2|~KC+ z_`;D6L3(dj%^IQSfutWs&th?FbvKl1JuQ^BYo+(rS2^J9x;LmlG1@(N+WhLj#&%*` zW%X8;wgGhByA?7gzhPV9HRTstBLnW-mz?+w52=LhO+e8 z7|ojAsDL8t1k3RJV`hB9fv^l})5(%6gNNhW4<^1J1=~E&FZmp$N9gUfk(Ulx8OhzV zy=exEr6rX=9;%3%wdv{AsJiH5d9JH7eyX!?S-W7U?ZR8TBDr$mriqffZ#cv^o%f1K zxp@8D<~%j46_@h2_7ye4O?oYh8ee&u#1V7nCJuLe(^sMf+-q(OJ8qoxA8IjJo}npl zgXra~Bk8XiV`EO3TlTw6oTh+>^~4{#+b&-2d35HE zeq9r6byyL*7})q`w=*_X+ktV&%zP%$OJm?Dj#vJGWDu99YdX?b0@=(j*)D>m>#OBc z$tzJwvO25-t+;a|ByF8wgv%^X8Hyu*JM4@{CTq zc0;XxY~1Pgh!f>zK_hDLm;IgAxpmZ`>t=!9$_meQ?5ypI4*!uy0J~qd^gk~#(+=;j z=vegT-xzw;9V;0*l*-WykFyMDx?`)Z(P4K_8T2Am>G`o`l^0cK8jZrUp4VK8SVv2V z`hKfU{>GgR(}(g|DcNRe<*J;U#fzs}@a{l-))U~iu!4`B{C%rR&;CfdtJP*QL#Uol zTNKY2HQYVlFJEaH+c|M#-_ud&*z~z?-oDLwyi2pMepxl6+PC77VOiz*jLVLM-+HQ} zWU?-LAYeRJO#A2D!zZ*6Oxo;d<;$V;!gb8aNY~se^KH>rLM|bp?r9CR(?8doN|Ze6 zV;|2_+X5G7@FR1s_Ryva{efe{{F}BFsxC_+pQ#ACb@K3-&WQuwRL95ZUmO$G)z{~W zDZhV}kwIeyJxJ)8G8xYUBJuiBNtk5U?SW!K!yPR^Jd z&vL%?G;|N`0^OTa31SzuJ?@@}*|Xbzg^_l4@=TVRF~;45yo=#e*rvEz_|pBsTF<>X F{{?ykq2B-i literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/readonlymode.png b/plugin/editor/cheditor5/icons/readonlymode.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c5c2420b5a716fb057a6f49cdcc8106495778f GIT binary patch literal 1983 zcmaJ?dsGv58jWD((F5p85h!9h*vi8^Ax{a}K!^kh&uAhFlEx0Ru6Z7cMJyO!H?snqNA_lab1PJ#|6Vk8aDMhp@yh~da#DTw7OC40eC zP$JLMTmvI97-s+yiV?9OfhmKPc!>jpH!9UA8-s~t8`Tn-0z|M_VWTFB}5RqVw${dxBX=DK}beZVfu}uK5 zFCd751^kwjSdfg3fwdr(f)B^Zh$Ir0O2v~RC{!wGGnPywkqJcfrs7BuObV4rreR-R z02)mz&t|4_c`sw3D;BU1LDWnF!C)}p4dHlLyO%&>Fc=OEG8u;=aJoDdA~E7rx}YTm zE~t}fAvFTQDy&0MB8Bw`3qUjdtpug|m8?ql@|e&ABN!!W0trual(YmC2>w4*seFaj zA*tZ+`TkE~oiI-g5>i1Otk=rW#$^XNLaCWCT2O+(S|JSQES+NVJ{W;@`(QOTCXI>> z7C|aGY|w?gzzYOSzDkEkR5FmyWdW!H9)jddZZwU@rE`dM5;dAciVdeTC>#!hLL|~C zL{c=FzQpCiGQAR1Axm8O?_AQdT!$5uYBVwz)IzzSoTr7A*cT-;p=EPn#4fA%k}F>} z7Y1)xE&)x3;ArfBHF{|ab&q5E%C_j@mGMCp>UJ$^Yk-p;jKQo7=W{ti<7nGyi}Mye=It_<`j$h$rzTSQl-Dl}DRph^XAR|R67~-@ zx<$0Rz2V$me}53b<$NjpW8g*LPsR5r&o_7*JuIc; zx98^SFPE;zxhSkt1s;ytOzjcbT^KP1Ir9HrU<=O%3H&=^w>!6Fndqfvf#|26dW)HT{>`v}l07;1 zR;N4%LPz`KPdpiE@EvT_eBSDHh8BAM+Wnt25+{G&kqS_ zX%Sf+=hrfeR%qtugIk)5!hnDUPZyw^7c`Oel-E&(_;dTb<$u z!`0ajqwep5x1-;?ohpIHbXAqKFbERnTx>9J*;YAUb$Y5*HQ)0U_m-%R_ z2oC?lv14wTb={V}b8kCq6z}AnW1d{>`&atmAN}7YY?Y=|Zj80z0toy{X~H}FCUFIQ z`roRy0!n2~4`vHxVi;#RY8ly4URo<2j*nzmKR&cOD&L#w6FL%O z)~-h$N6QTQn%UWeu~q#~=)CLf(RCR;DScrB`rOkOn%rgI-|Dey`4WBzp#&GQV&tC7 z8WOESW9#|OZ|b`W9%dK}CMsK>(Q$u2(o5gu`dsPO@i*t*QONQ^^g*O6`n`gzh8-s< z&0bfyVpkt0r;T2L(w*E}WLMdwCO)g6altcLd;I6Vna&>;Qcq+BG!(;LGtWD(7xL2l zZ?v^kmUZ@S+MoE^RQFpOh;!L%Mq53s z#lwfQHA%Iij?J+wmd15~3u2Pej-PpK5&)|`4nXlBOc>}l0o;dI!sVv5UjC)}pKx!G zzrq&%;%iAX?asTT?@oHwB<>h+`VsIO|J5f8)8OZmG=$6A?)athV-vY8(OHH60U7Zd ALjV8( literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/remove_col.png b/plugin/editor/cheditor5/icons/remove_col.png new file mode 100644 index 0000000000000000000000000000000000000000..2193adef84b8c5a1ac8458381ec09155f4c6758d GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT)%Ir|Ns9#kOw3M5?ZGLSu7<%e!(C?2d$M~fP4c_ z7srr_TS*DWm?SbZPp~juF`CRN%)lz?*wD$yl8_U`@^MC|&m@(Ovpz|CIRz3J?6sL^ U98o#F1gMw6)78&qol`;+00410$N&HU literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/remove_cols.png b/plugin/editor/cheditor5/icons/remove_cols.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbfcd914d1f2fdbdbc9cfde53da72269fdb1ec0 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT)%Ir|Ns9#kOw3M5?ZGLSu7<%e!(C?2d$M~fP5`a z7srr_TS*DWm?SbZPp~juF`CRN%)lz?*wD$yl8_U`@-kIz<2@D*0|v{L%$?@bQ=b5J OF?hQAxvX&3JhOsGY&n)z4*}Q$iB}r7=3g literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/remove_rows.png b/plugin/editor/cheditor5/icons/remove_rows.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d9588f2491fc5194d23838f1a9f52fe41a07d2 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQak|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XcmjMvT)%Ir|Ns9#kOw3M5?ZGLSu7<%e!(C?2d$M~fP8&V z7srr_TS*DWm?SbZPp~juF`CRN%)lz?z%W(CRbchZ9)$*{Nh%#@eUkQa3M4RS`7>9& T)>t_KsFlIf)z4*}Q$iB}v}!os literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/splitter.gif b/plugin/editor/cheditor5/icons/splitter.gif new file mode 100644 index 0000000000000000000000000000000000000000..660bb40df62db15bdd09753b2bd662b5bd08ede2 GIT binary patch literal 177 zcmZ?wbhEHb6ky z0Vx65>Aet+9Gow z4x&p0V%#DjIzvKYCM+mIWOR}OX|z26s>>yF)tMqaW@JK94AW}FDK?EJK5WGyeGx(e`A7k3lF*mhJLmuk zOXxX#HK@krNFjQplt8jevvm5>BE1l%A5I6vRuLs&L`Vp*8c&$aBCCYHsVk!P(Q6hR z*o2Tp68e@?xoQm{#|Q-AGeL$POaXxuHj~ZerKYAP100YIvOo@t&0(-pMO=;u1cB{A zr>qgML8Mh=Y}=wv5_%y?;vyEyVzDqSTqZ^ou-HPOFsi}fFen7WY%`INm0>a;h$$!# zvz|b462(kFR1wO@N=ONv@^mW%BfcYRGH<7eN*K!u;Vd>2jD{2gs@4AuH5zx&W>Skh z_V-_f%{m*7u(XI7D{uk!I;Io ziB_vcDwCOnOnOA6kkBbU6GdT>Knj8!p@1(G@C0nO5|j#fpdbaz5K6fqA5>(-xC%^P zVnj@2j0->JrtHd%Hi8kSEGrNKJ&C{>1ZD&_0~VpX`@-E-Z<`D6?h9{ME{k%86)o#O z${f3*dMCQwXUDx@>atM-^-DZ)NRz2ke!3WG<8XT1?mmxaIS{BxO!NnX zU1MYR!NI_>V?X!zFRZOyb2??tjk(p;Zb*){ft-ajP;F_Eag~JU= zNkdapflw&8vC-sk)LgmJ($llLzP=C)Hg|V_*VcA@Xvliww$QOU;PIq({M9`^-pJ+l zdpuJP$Ar(vzy6?EDlMB?IqkaJ#^u_2?wp+ul-~<2K75$o6CC&XI);ZoS$I^}+&tj* zT5m7S-M|06-9F#j>ogc<#>Psgmv2r@!9)J#VDS9N9}}~)!;_Qu0s+V9==}2X)s7Bv zci@zB_RQe?M}59?H-C3|y}fSt$n^A^ee3nDtuRp>KI#?GliIB8t(*UIrdjyU)>7t1RSK!jdMnTA)^=+4D}AqI*1x`* zsL}iYl09(0Up?)vdGWox%KY)K&(!*7e;IjdOGIOjZHb_qhgt(`f|w$5RAg6Im6fnQGHNP5Cz zT3+9e$v?r;gsfYWcKpV`+ojbLyvB;ES6`}2I=WtWP<8ou;WK%~+&i@h=WLGbptF2d z5O@6ZjJ@SeZ=Ads_Fqb5Cd||?MUEEB^6xUF-?oIG+D{XtiQlQdmNF83lU2$r#Z}n{ G=l%vW5yW2r literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_delete_column.png b/plugin/editor/cheditor5/icons/table_delete_column.png new file mode 100644 index 0000000000000000000000000000000000000000..ea515ca894b2c32597aa5f2ac6adb4d5a69b5b79 GIT binary patch literal 1532 zcmcIkeM}o=7_TES%aRFEGnm=ryqdWg+Pn7J(VleB4`7hC!?qKcPAKgG1@5lv9kdXg zk!@xpaWhV*!kp`p>4KA?WQ@<@KIF3y$ASz+M23*bq$5yhX=%LzW&R=l=bOA=Pkz7O z^E~hK z6kMN&X)wL9^iUTT$6|#6CS3-dp;Dp-66flJ7_JRBGi(+sF5YI=8wxQR$iebVgamXp zw}F7kC;`)jDp+NfWBI1NWfn|Zrq&tC3Jqc-7{3RIv!RRtj?sF+h8GbOYLkG=x+rrF znjsKahR}r)a3!b=RT>~CEf^r=!W;v<8wPgsxI9D<8ygz~@L?Vd!F-6v=kQ`tgpa~7 zusT4-o5h%mY7|MUzL=W?%%^EH3PDz@m1{+~q$LmHiN)fe2A|Ji5FDzMp!GHmL9s&$ z3XC#XOlI0d5B?a8PCQDGO&%`_!WYe1=9v2R#6auPL{|&|QH8e$Q zu*dQKt1zW2HDizlqsU^5fhk-rJLt-c$}O0lCM`OWEDF71T0TjWR6c12r8(R#vwr6?pI!{?ezMpP<7FYNh;(C-AHVecF5U&YvAqZei=AfYs{G&aNDBpXi^O z)oA7y7i}ZXlY=ueO66i+UghLm=R?ma1nC$Y>>U_5HsvdA|LvE_N!t%2gZJ+n`&@TN zM-w`|gX81p#(X{;cP1xa0Dyu1{vSt2U74Bk9{+p&4-cO@H8wlj(%Y+W1ezU=!1DOM zJ3-F;99gtRtzEJFUn}c$WmXL1Y9vJ=)!BYlc6S`uAdNV7=M_W^OrE9G<>lgt_s@@> z|Mh?~5LNO{kvnp~_0R_a33uP4rR|e!Mci=T^=~*mO(LfaJgWPY-5hl$z9&5Pb8|&n zD&@s!ukG!U#tgY+f)?^|Sp@~jsQ=1o6o|Len? z^oEyp!ij=sHnc`(PH@=-lyLlTPyNa8jyHTe-+gNTmmlA9M`p8bI%4OFhD4dc|2QR4 Kt*DV@m;Vh$=B+RQ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_delete_row.png b/plugin/editor/cheditor5/icons/table_delete_row.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4083c666c83bfb3db4e651ccc69dc5aced8a88 GIT binary patch literal 1562 zcmcgsYfM{Z7_J!xA%QLXVT4F>?EHa|_MG<6mL4dqw8d2^veF1fWt8?53Tsb2J;;GM zrnu=eCd9>M>yXVXSu~6h76Osm7#9h!!nj&4QfRqM#<&eiDHQ4{xA{Z->6d)BH_!9D z@B6)PzHbu~-U;vz_NUQk0n$@qIkg}2&R335YbfJr614>pk`y8d(-65z9Hj}>SUL(w zb;=A>jw;o8pLU>8G};kBt4JYIWbud!(=nA^43pFuC^n526+;@7s%(@1($Ng9UO->0 zYor5OwSb9D(_^B6C=#IrbSR+&NZnbz5g`Ti9bJSv zd(9vn*ntq)0{U)HDY8UBgyAT_VL}WQ#DxGZi^+n+c|2Yiz=l{52(dvHo5A8CFdKm& zU~kYVZ@5~6$i;DczNnjko=Fe}1O#()bD6m?6T>q=7N5`eYOvW13c)bu=?Nvt&>K(e zD~M5}3fCG4Ev5&&ipq2>hY--INOx1v84hIi#=U2v9tU0Na zBOym$#QU$pMn#?h1?8v_%fVGt;WQ__t_+9>N0kJID=_Tr{wpSCVgzQ)#0-Eai322S z^=d5FxPz9-5UJisDD^5-Di+WwK2xhzBSMJ7m2mkSegquOVo4xj1dA_*MXXqe4YP$X zyw4S5svI4vC-%AO7hLY4TyG=j43uXvifcbZ)p0nc19lQdw1>w6AF8*F~Yjbl$cXz+tezEuIpv|Tqbhi%=U-@(Gd&@Gv zY4y^ayJu+V%Nb|kfacip1xaOU!~F1!0@j%HD7eid^NjK-q=W57az_#&Ua4U zsjluBAGZ$-v{@`-vuDHYUT`>^si~&m;2JjDzOqthHWw5Xd3J^`G2-e)8&KU~y4PN$S(E)%QrmR8r8b0PDzk|K5$3D=&{Hf zrGYnD6=$M;tX`Slet#sbBH6Ft8~g|KLxnx0ps?2*@so$sI#>KU#yx(!+;!vacQ1!k e(S1giz=yPtY9v@z^sQ0vZ!MK1h|6Qs3jYR`@7wGE literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_insert_cell.png b/plugin/editor/cheditor5/icons/table_insert_cell.png new file mode 100644 index 0000000000000000000000000000000000000000..bc70ca07d159e4ea96739b588704f290741e8014 GIT binary patch literal 1526 zcmcIkYfM{Z7(R2+m`;W+M&06%v*Hh?YkS&KN)ME+rQm94)3uEwQRjL&l*&#|cY0V0 zc$srBAu%|^V!9=6Bbn1l7+QzpX2ZY=r7*@o#{JT*z(%;2u25P}fii!H|NN5g_U3t> z_kF+j%~vFoz8yu`LjeFFN_-_UupQJZGl&dHI;_D^x+;vJTTmm(27sgk7Nbg&jS!$3(di9*>P)Sj z3hK3d>Jg3vk{DBvEd8N898u&+m72V44NprwkPIeSU{U}@2o-2Sj~h&|g->16g~@Z+ z%%Fm65F(pTT@NZlA_G$}9056Wh^B$!AuygvXR_nCT<(651u-E8#9}a6G$t2jvtS4U zHwKmThHEonxhQSJ7kT4Tvk1ZnGZ<#GnQms&F&n z#*J`Am?j5B3`B&headBT$qhFGY9u|25L|x}(Wc=T3a%v#>$i>t+EQSblD^nZ0y6hbtb3UKf@2_uf zZ|LkyX$=;3PQ{jUzMKvnex#18n+b+Ow^~|ioX*6?r8&RfZ+}&>A~Wnuu7_J_kKLKkn0%k zcDtKSwDRj@JJE{_$~VU*8v#%VjoOQj@RGU9GD6p}N}g$B=D!s>|)Rj`&>@cbmGq&)j{)Ygjzkyz;rn_fuWn zCr)?4;{ew_Zyi~7^z_^r9BdyP%o~|I)#hn&x1AgCid>=PKwyuR%BmJld%bmSZDR`y zwJz7EB_*M?@zuF&&yoL!ijYec>z4m-1u9NqOww70SR_zd`rdErk>8fRTri51?L9M; z{~P!Y{ywPSfhj-H*@c9a&e z@*mU&M|qd{aM^BI@}H%)!@8r(dABAW&R@2C-HX;#G`=3~5SXvDv`TJz6Zt&YbLGAA zqxEkI3ir1TtQ09YKYn!K`&Vv=&P}QP;~!FXy&)b8>SVmxUnipb&R>XqCQ5c&_xo#w z+e`!B0#_;NKYtK>VQ;aJQo8d-sNmk^slVRb0aw0y48YIA^X!-APlSJBajH~QAv|{a EZ;bfDr2qf` literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_insert_column.png b/plugin/editor/cheditor5/icons/table_insert_column.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f7f5a856d10fce862b3d013efe0b4e9a047381 GIT binary patch literal 1515 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 Gc;au*naoQ7 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_join.png b/plugin/editor/cheditor5/icons/table_join.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c0f9db9ada8025525596fc1f9f866ab30553ef GIT binary patch literal 1352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~NvfxjMVLI2o8389Nyp8oC-gIy)LVyEqy;x*3?5 zSQ?wd^t$9Hm*%GCmB93-AoQB!)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)RnoaRCG zrr>sqDNeomK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNk)@4)nxdOAqw*a3I*N%7p zPu{w9{Kk!=*RJh3d-lM^i(Rv4fBgCL<+pF&|NPl-@SyF{A5Xq~`S<_-pMU>M_Pk%W zfB%k?CpRBCvU<-RbUZnwKdqNuH=KD|arB{R2_fdeEQ$7KY!kR{hHYP(lYv1+od-yXZ}BZ`t;G~&%4i@ zsq63m|NsBe%05sjv&+-PF{I*F$XQpRLkJnwCK z9d5cQzg_26e7l(vW7@WJv0L|hzB#_ofn}+JbGBi)`|cy(1h}RNn9jHv&Bwm_^qX6e z(t$tr@bEjaIH@?ftml8oWGt`u{q1@IH=m7NUQ18eukzyQmC`SSaD%2=bpj<(qH< Z!;ecQ-+Zp}yaD=x!PC{xWt~$(697vHE64x< literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_join_column.png b/plugin/editor/cheditor5/icons/table_join_column.png new file mode 100644 index 0000000000000000000000000000000000000000..830afd95e753e40bb75f7c26cb576bd0ead1ee9e GIT binary patch literal 1419 zcmb_bZA=?w96wz!3ubX~(>dhBc@v$<+PiCMOD_~GJvy4u220IgF2-_wfRpv^xE||^ zo5tzbAnM}Wmw}Fmnkwrv`Ac<@W(=ZIkpg^Hep8{om5I^}O_q_b` z`~Ci}SCM1cy(vB+9zl>zrYzbD&&|F*`9Mr&z09DBe8AGTER87iBWwJ)2*@Y?ylE4WCPAX)ihEgghfaO+bwr1<-AyglUl7ds-aNGAVTKya+2L6<6Jvp3N&yrA}dHN z&!JI8djVf2=`a}SN(xS4O_p=5mI)RN_t*uTloQdEVnDO`zoAa&8rmgU!J~NpRoG?o z3IMkP7hfhauyKVuqOJtWAOgF@i#DF$AFE6LHZOc419+?k^{R0D+dV9x%K|S-w<-WfBcYY0qLX)$z z-GhU=>vI=+dVUWEcUis*FD-=@7gMfGEkz<2eeRp)=JC0?$xtX|@6V?j8eTM>t*Ng+ z)7n~DUES2x)p+gN`S$kFP^jVR)#-(WQ+0LJzAG6$i-CcG+Q!C_>FJkEEoa->@Yin4 zhQrBi6D{4{qcbyOv$LM-Lmxg^P+j`#$n7zGclf>gGgL?LgZ|Of&Y45Q)1ILT_2tQQ z|Ge+sq@y?J?Yisp-#aoEHr!k)zx`+1ty^>;^4rwZ#X#WQzhZ}CtE&h zs%Y9i++0zfl&DF_dOE37#O%`fYcYERTX3~zp>^ZESR`b1+~>#4*lHJVVIP;k5Bu>9^MqQI$_4>)XY2e_}!MNv;ouA2fQ{GqZ Qz$6e;riDJA@z&wL0X6+*!2kdN literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_join_row.png b/plugin/editor/cheditor5/icons/table_join_row.png new file mode 100644 index 0000000000000000000000000000000000000000..c77e75c1009d061476dde3f71038fee3a0489abe GIT binary patch literal 1466 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW`)d{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v&`mZlGf*%y)H5_T zF*i5YQ7|$vG|)FN(l<2HH8i&}HnK7>P=Ep@plwAdX;wilZcw{`JX@uVl9B=|ef{$C za=mh6z5JqdeM3u2OOP2xM!G;1y2X`wC5aWfdBw^w6I@b@lZ!G7N;32F6hI~>Cgqow z*eU^C3h_d20o>TUVrVb{15Cdnu|VHY&j92lm_lD){7Q3k;i`*Ef>IIg#cFVINM%8) zeo$(0erZuMFyhjbK~@!5ITxiSmgEG&eP`1g19yq1P3sUQj~FEdbi=l3J8mmYU*Ll%J~r_OMkZZnrq$G!Lpb z1-DzAaq86vIz}H9tw_-f69T3k5EGtgfgE_UPt60S^&()RPT}EHXJBAt4e$wZ-E;PA z+od;0uU&IK{jcNQ{{t5I!{9TAE?@rn_wUwY$CO<+&fBoz`=3Aa*Q_~nVeq!v$6rkMerP=RyyoPi%47E{?!7;A=T808Z)W>G+8qAY zdg-;*p|7p4|5O~k*Kp=()$s?-7hcw#esbc*4g2H2svdlFJozW(+}D;@zdwHe{_D@5 zcVEA{ocaIg^XJ`X&eZky{|5u_Fn=Ln2@zfrD+`PD7zrkv6R5 z$MRoT1(+5-et$S&)uM}G;&0jZWTrL?GzxSIEZO_Pa_0(T^=0ec7|OI>Zchr*ln|Df zEaAMVBjI^8$GSC3MCK~ITD#k8b>FAp#XaBW_cJgv%y@0m%06vNBhViVp00i_>zopr E00~@+w*UYD literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/table_split_column.png b/plugin/editor/cheditor5/icons/table_split_column.png new file mode 100644 index 0000000000000000000000000000000000000000..f7dc6c154d46a9fb0b9580c7c97ea82f00503366 GIT binary patch literal 1322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2v2cW~I!Kh>{3jAFJg2T)jk)8oi3#0-$aN1{?c|g2d$P)DnfH z)bz|eTc!8A_bVx6rr0WloBA5~7C5J7WO`H;r3P2|g(O#HCtIc{+1n}DR9FEG$W1Lt zRH(?!$t$+1uvG$^YXxM3g!Ppaz)DK8ZIvL7itr6kaLzAERWQ{v)=f4rG*mD%(=#+N zH8V5RQ7|$vG}1Q!A~Rh>6Dw0QDv55FG|-pw6wGYnPFt43sj+7T$xvrSfQI&tPC^3CAB!YD6^m>Ge1uOWMX1cerbuV z640d(FXR@$jm;~D1`{yA^eYkz^bPe4Kwg3=^!3HBG&dKny0|1L72#g21{a4^7NqJ2 zr55Lx79|5CE=?I^Re_arQEFmIeo;t%ehw@Y12XbU@{2R_3lyA#%@j1kGxJjN%ZoL^ z>V18!JoAc667!N%JzZ>-fF|f=W~Nw~yBfF{8Ckj*89Nyp8oC-gnK)WF8M(Q+nK@dR zn46oz^t$9Hm*%GCmB93-AoRN8)C)=qxdlL*T~doO%TiO^it=+6z+Se>#O)R*oaRCG zrr>sqGfutwK*#8VA{Hs4VM4&v17gCHEsz6G_^Elo)LsNi*69ad1GB`F0G|-oj(7ic z{5I(ao=9nXkTtbX|N+qXrVH#?pByY<*HtC$1d zzI{7$bxv*F;ump^}g`ThIdj~|4!+v=s;w(U51a@VO-CVSr3KK@ew z^qcA44^_t>RNQ;t`ub1HtKXH!?mM3RlXC8B#nF4s7ham}`&jkhW9y~Y_Q!vH{Qlkf z^uJ$!{(SxU^WE34ZI|BcIeXUS%>SoPpFaBhdH0z!b^ZPS|NpOGZ&?TQ?>bKx$B>F! zA*XJNH3mquJv?ud?!mFJC1B=r&CLAEfA9C#zg4zekEl* r3$Mo2XGvAfpCEVY+2{Vqf1CykZg=%K1I;G4fJ!eeM}p57(T-vLz2ZUSw`kZavaHI(_TMlkM=^>w6sVWMQp2})9BGV;KF)$yB=%l z=F}+!`9l&lnfuV_HsjbLV-krQFh0h|3WdpsOJxfpTXh`>5@<`Iv|bry{vlrO?)Q=B zdEWQ;zE6H17v#URHRs>=;V`YMd@6 zK)n?!C5!}yR~~W^nE;Rgk>(<<$dHFxXe*4xFtEeQ@N59cR5=*TQciGSF;PlVN@%X7 z9Rf*Q2^Go=A_J2}l#w}3mM}T<%@$|5MS(-AePE^o+1AU%7fk5D7@-&z#f}sQ8VvsrwOTjOHqJ;q z&i6lsZRSdb5E=;^UBO!T#+9VTLNRC-OJE$$nrZrAyov>7G)LRYXa>wOAz)e|N#V5J zwr34*Fra$M#$l9&&})?tuK<%Ij>_d4g-ESKBBF#hW7TeO-*`=i$V`Dy_FI9KN7Yc<|SLGcGn*P;y?=4nM zhaD4hnKuHezGe5_yC44Ss~VZU>G2#JxPR0&g?9PhcYBfR^B)ZTS=sxWtnF`n$nWf% zbWYBzUEz-&t~h!o-tz|LgTdu+*dGeb`u$pW)a&(5EiAOS-N)+cqS2@-Nxz@JF9!5l zwb?OlcE5VKs{qgqKlAD2$PV&QVuP;M)Hz;URq6?E(d>NN71=lawe!k_vz1L{kT^o~5dL?e&iA`n>wwdNY;s zCMP}fYsSh#%L}20aP=#r&oPpcQg_c62QGgzfh7Nhj-=dE*W}gY*6helHEydFoLZS# zDiOYHOgXM~r^!z!3Kb`cpX^Sk)66cJ&n0$mpZU_@RO1ahcYS{C`OhdH+yTHEY0lo> RJW1>x)a&xK4Vrh3{{wn6LfHTS literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/title_bar_bg.gif b/plugin/editor/cheditor5/icons/title_bar_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..13e78660f05a470d14e9baad331f7ac0cb21ca9e GIT binary patch literal 172 zcmZ?wbh9u|lwgoxc+9|X=H8bxx4s+!qHACF0MVs4d(ORCbL`EPM_;Zy`*P>mmoMM` zFdzXP5F4bIfhDovr043nTCdOU{-2;x=9xJ!W7WDfoqGy&&X?rg|H1R7=KcQz3nr9n zNcEpsa`8Zp)%*)-iC$}?*56oDc6zVSz6TpBc;sfBf3cFwhML_WUWzJ5M_{(b?0egQ!NLBWB+AweOb!J%OxVc}sBk>Qb15mC{R(J@gmu`zM+ zG4Tm;2}$vZ$%)CSNhxW`sp-k7X{qU%Dd`!h8JX#s+38u?8Cf}5IeA&Rc{%w73}gWv zkS>s47})+Dm{#DSBh|ZRNzut1v+xTmO1zdXTX$o1*6FuZyH{+e@X?#@|H5R~k-Xja z3wC7st-t+x@g6(>SHJ%^)GIZ&w6?XkD|U7F^!D{BOq?`%%G9ayGiJ`3J!g*G`~?da zEnY0UZ25|nt5(UZUAKP2#*NZjwr<eg)^Y7>7+uPEOVc)QUJ+ zq}nvyAolo8i``TmwywIm zI$|T=jZ<4!Utb^3+9B(`ZB686#!IVWPj6d$dwan{rWxMb*WKM+@%hzNX%+@+0AUL3 A00000 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/toolbar-background.png b/plugin/editor/cheditor5/icons/toolbar-background.png new file mode 100644 index 0000000000000000000000000000000000000000..22de6225b1b6797470833ea5be2f3687017068db GIT binary patch literal 21437 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 HU={LTp8=@F literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/toolbar-wrapper-bg.png b/plugin/editor/cheditor5/icons/toolbar-wrapper-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c1f7530171b596773a70539e8a0e03fae220d1 GIT binary patch literal 1731 zcmbVNeQXnD7(XafWE30D}dLF6f*i0t*ft0_z{R4I_cwSMLfa8s>W&L;oO{_~vqb-uHgL z=l49%`#kAZNA(LCvlq^WASk1k!~RMbOYkkOBO zF}O11S%cMJ9{+}Qr?FB9k_CcJ7v-{7p*}pM^hg+GEEEB32r4a$MLfQGjDo$`nqb(V z;JUw6z(K!3u|jKC+aqSIE?Ch-V6{!vPG3{Kuf(q?TLzcLP~aehQ64xJY6z2P%%GU? zivn9ZRw>{K2vu)TOa|q$J764_6Hy^bwJH>n@|r-C zR1Nk|7!O2~&J7VvRfCauBjE%05y+h)gW5e@NCJXr(B(uBT#Bc`g8LdnSeUA`7!=@( z(jWArMzz&aWVRqh#U`z_5J8N3z1CvXnzhA6I<-b)oAU8MuEh#q>LQc2$cP};!V+7d z#;iA)Z6>qUgxIuG+{!RXdBQ$yN;fF!PI3z$%0`rS z7{Ex2p@G2yHDCiNmId!5P~drv9vc&YUmhGXEXM*VnjYghZfp#&=@f_+M39mK28&@B zUP7`oO$!n&DT?CmUGXRcP0y~h7@e_%*L~CvI%KvgxvHQ3FAIEpR(sIUCJeYUgi2BYOF?D}o|#&d9;V<#O4% zpKq1VEx&sClJkebWscRiGv?gfvGzcBPwn#Xor`tmPnNVDJD+fUwW_^%nJ#nPhsc&Q z-KG7xZ{0Za8rAXWnZxrE_S&wIqr~9T>u;{!f2s@He#uTHHZJLS&at=VN$gPNBvysZ>7>& KZ8>CeZ}}Tzh2~KJ literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/toolbar.png b/plugin/editor/cheditor5/icons/toolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..6c81e88250d02abf6a92fed776a0f7037ef5eba6 GIT binary patch literal 13656 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/viewmode_preview.png b/plugin/editor/cheditor5/icons/viewmode_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6df170c067013bae339ace13d842b33d1bc809 GIT binary patch literal 2236 zcmaJ@d0Z1`8V*-Plm(1hLBt_|D+Q8F2!RA5M?yFxf*cZ76hbnPKqeECNJ8qOB9~>W zfLIU_M6ptofTf5EqNvE(1ziuotD+WBil`hSf*q{b{bSwv&CGZFp67Yr_j{i|zCA%3 zd<+fD3@{jsp`R}+7##)Zw?ZF_{ugU=N6^7k;muWqAh8N1PX=K;1xO48_`$q5C>Y`i zk`vn@Hw;DxFAC)c_ z$@wyoR3Snnz?>p42HB=y;L%L~ECH5&mX*jq9TR$BL={g;1PP?MlIDRN&i{wP@MpAK z5e)s6@Bb8*hbBuQVlX5}w#oQt<6^DmLP_aN8N^c{vQPvO&!1wD5K$m-58cA4k05dJn8k|^f6g1@-n7rAp*fTd_;79tw@~-YO+VWfU3@k^BthLSLv1Y{$d18a^hkaz&rntWaKx4X zb8qv~!+q5aIvuy{Okj^A%Z^f8gtyvs%DoO@t6r6zCKd^`zdB}gyFB$csEhNjYb?yt zD_TP}OEAM7g`Y2IzOlUg#ybxy2W@4!?%AzZCKJsY>KkS=M{HgsE^2Kyu^1_MFL8E# z^YC03GP~NbQ&^O-q}MHasJq$d8xu?2h$^bJzT1U|yFtS4AGD*te{jceI4G+iZ^ziW z{+a5{(;GL|t?!v!Axc`+>t<{(kjTs3j5wLhqiJb=(eR})pFEq6e`GSAso-kp-5#Ix{L#I4gH^fF z*uGPXl}CJw)z(hWj!@56+2XQ1jXxCc*k?Z##R$qL9}qya?@6jXcFm62m+~?vvxbTO zB{|kRZ0p9Se##cDq;To5ux`g62A4a$z zJb1ja2wW9bwo|hb4mliKdS%(}_myLPG@` zj9pmcB(b!s0pgwt)@=4Fvu(t6$Hdep4kTr^#78#wnYQEW^ze?Fo&H-e?9$$+J@L;v z?XB*qFN*`h8?lka+ifZ=m%A@b{q=Zi8nBa;k=_-wGQPpw+4lKZj!>{=X;Sx47_?oF zw_?EJ{NVm@zHhqRXj%}zh!uOUyy9OqukDW2*xh~;y8WbmK-%6C*V?3AR&E0Q|3I*~ zc9bs$JZEc&m4b{+pDr z2KAK!HcZ>Zij9mri$5j4gH1nWz&P>qwUC^a_-`Mdy8o>gftoVtP%*O>7p!CTW6>E_ zAts+&^Oebdz1!-6;fhLZqjN~B`)Y1Vmgbk`n&J%q%Il+I8}M&hr4Mtyvs|xYac6tC zIGarmCsdmi`fSRzp=u`|(%R`!*uuqh`#z$?R3Rlj`RV8G_nnFQdsvu5YPfhy<`eo^ zzc-u;HzH_(YY8)6wIAqu^gwHSRipae>)!)Yo}52{x7c50zUIdnrsq^i+4XT|CF9y5y7gP_0#(87Jz(E06T85eKf;{zP_- zj9jW${D?toI}A@*ak1rxnqc)x#)6?9N>iU>&%kW!t>8+3qbHABPacl@cQKpElvwcJ zuN-@IEjchciSF7gk6Mo(sSQ@YB G)IR`M0Hccl literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/icons/watermark.png b/plugin/editor/cheditor5/icons/watermark.png new file mode 100644 index 0000000000000000000000000000000000000000..071fb3fcc215d51dfb5f597491d599b4d28a63ca GIT binary patch literal 13496 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 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/imageUpload/_common.php b/plugin/editor/cheditor5/imageUpload/_common.php new file mode 100644 index 000000000..6d489dacb --- /dev/null +++ b/plugin/editor/cheditor5/imageUpload/_common.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/imageUpload/config.php b/plugin/editor/cheditor5/imageUpload/config.php new file mode 100644 index 000000000..ac4e4956c --- /dev/null +++ b/plugin/editor/cheditor5/imageUpload/config.php @@ -0,0 +1,71 @@ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/imageUpload/delete.php b/plugin/editor/cheditor5/imageUpload/delete.php new file mode 100644 index 000000000..0da4fc8f3 --- /dev/null +++ b/plugin/editor/cheditor5/imageUpload/delete.php @@ -0,0 +1,49 @@ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/imageUpload/upload.php b/plugin/editor/cheditor5/imageUpload/upload.php new file mode 100644 index 000000000..73e3700a2 --- /dev/null +++ b/plugin/editor/cheditor5/imageUpload/upload.php @@ -0,0 +1,128 @@ + array("imagecreatefromgif", "imagegif"), + "image/jpg" => array("imagecreatefromjpeg", "imagejpeg"), + "image/jpeg" => array("imagecreatefromjpeg", "imagejpeg"), + "image/png" => array("imagecreatefrompng", "imagepng"), + "image/bmp" => array("imagecreatefromwbmp", "imagewbmp") + ); + + // Extracting mime type using getimagesize + try { + $image_info = getimagesize($file_path); + if ($image_info === null) { + //throw new Exception("Invalid image type"); + return false; + } + + $mime_type = $image_info["mime"]; + + if (!array_key_exists($mime_type, $MIME_TYPES_PROCESSORS)) { + //throw new Exception("Invalid image MIME type"); + return false; + } + + $image_from_file = $MIME_TYPES_PROCESSORS[$mime_type][0]; + $image_to_file = $MIME_TYPES_PROCESSORS[$mime_type][1]; + + $reprocessed_image = @$image_from_file($file_path); + + if (!$reprocessed_image) { + //throw new Exception("Unable to create reprocessed image from file"); + return false; + } + + // Calling callback(if set) with path of image as a parameter + if ($callback !== null) { + $callback($reprocessed_image); + } + + // Freeing up memory + imagedestroy($reprocessed_image); + } catch (Exception $e) { + unlink($file_path); + return false; + } + + return true; + } +} + +$is_editor_upload = false; + +$get_nonce = get_session('nonce_'.FT_NONCE_SESSION_KEY); + +if( $get_nonce && ft_nonce_is_valid( $get_nonce, 'cheditor' ) ){ + $is_editor_upload = true; +} + +if( !$is_editor_upload ){ + exit; +} + +//---------------------------------------------------------------------------- +// +// +$tempfile = $_FILES['file']['tmp_name']; +$filename = $_FILES['file']['name']; + +$type = substr($filename, strrpos($filename, ".")+1); +$found = false; +switch ($type) { + case "jpg": + case "jpeg": + case "gif": + case "png": + $found = true; +} + +if ($found != true) { + exit; +} + +// ̸: Ͻú_8 +// 20140327125959_abcdefghi.jpg +// ̸: $_POST["origname"] + +$filename = che_replace_filename($filename); +$savefile = SAVE_DIR . '/' . $filename; + +move_uploaded_file($tempfile, $savefile); +$imgsize = getimagesize($savefile); +$filesize = filesize($savefile); + +if (!$imgsize) { + $filesize = 0; + $random_name = '-ERR'; + unlink($savefile); +}; + +if ( CHE_UPLOAD_IMG_CHECK && ! che_reprocessImage($savefile, null) ){ + $filesize = 0; + $random_name = '-ERR'; + unlink($savefile); +} + +try { + if(defined('G5_FILE_PERMISSION')) chmod($savefile, G5_FILE_PERMISSION); +} catch (Exception $e) { +} + +$rdata = sprintf('{"fileUrl": "%s/%s", "filePath": "%s", "fileName": "%s", "fileSize": "%d" }', + SAVE_URL, + $filename, + $savefile, + $filename, + $filesize ); + +echo $rdata; +?> \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/color_picker.html b/plugin/editor/cheditor5/popup/color_picker.html new file mode 100644 index 000000000..dc972df57 --- /dev/null +++ b/plugin/editor/cheditor5/popup/color_picker.html @@ -0,0 +1,19 @@ + + + +CHEditor + + + + + + + +

+
현재 셀 색상:
+
+ +
+
+ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/flash.html b/plugin/editor/cheditor5/popup/flash.html new file mode 100644 index 000000000..f0e82b894 --- /dev/null +++ b/plugin/editor/cheditor5/popup/flash.html @@ -0,0 +1,22 @@ + + + +CHEditor + + + + + + + +
+
+ <동영상 소스 코드> iframe 또는 object 태그를 입력하세요. +
+ +
+
+
+
+ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/flash/ImagePreview.swf b/plugin/editor/cheditor5/popup/flash/ImagePreview.swf new file mode 100644 index 0000000000000000000000000000000000000000..87e4f7558415857f4c7b9507536eaf19b924bff7 GIT binary patch literal 147221 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�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 z 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�QN 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
ys_faQXjxE@=7{S)C@7i4&kam&u`GN{3_J=^m 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�u92^+f$Z?U2=it6o8S{O2JLc|0Dk$LAUK zv%io3t#?>(bhM~@!$SEEPY``gi@M*m;gQKLp>{`oh* zxcApT{#E)P?j7}w?|kRm-@EO$+rIf-kK!5i!!iFn`Zxc4cly`#>6(fB>R(2U{>4B3 odi1DPjxp+vF{A%gL>~3+TW|Z`t>66icfRGhoyzt90aku9yZOq7fB*mh literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/popup/flash/chximage.swf b/plugin/editor/cheditor5/popup/flash/chximage.swf new file mode 100644 index 0000000000000000000000000000000000000000..f4e11c21c909506561e3a21c651cf5b8c52912bc GIT binary patch literal 63095 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%0Db~~ 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 Op$F>i)L8U8kDejFmPUd+3`QOK z7?2TO2*WZ;1u!<`oktI0Ay6{<02QXULzv8J)1N_5oiXmHYe{`ZsQ`2+T1#3qbXZD{ zYDkf;B~5~yq)emfNt02eQX|QST6qc3Efpvl0u>nU4r|wLZc0w94BD&HBg@{U$qIw+eOkM4m5Q%eE!}w>hDjy#UWBdn}e&sITo)W8ApKBWzVvnZ9&X&^&Sna zc(AZ-8AJU>dsP&U9yMl!cRl#b)MJKvMMXsbVx6WQAErs>eHj6YY|M1``!|23yEuG&a-7*3> z@9t8WUqDIidZj$+DOm9zl;XTG5!GiC*#DSTMAY4oL#YNm4SIFWkb@TJRS~3zbj}ujB-HquHI;oz-5)9| ze@B`Th`2-2V|CoYM~yBH`6iKW5ne?bZDmjEDvpFkr=P{3H`yxBKP`Qms+T8(ulGaS zijgv97OdzzW<+`qPxo5d)A?0qL@f@P*FkA?X*!kBt30ICM-Lrw)tJ#oR|tqkuVxgH z(^jnphl$Y@x%3QA&7cvUh7T!8hssojZ-8u&P^(OcrXn>sY^Y+Nt`oIgBT}yl)m7xT zS88bGvHwk-h6ojw_f$$CbxoHH<5ByWMOCCHSnJhaX@i}*Q(rJ9#eaGTJO5!!jrs&x zS^7=9vUI5mLDO*1pU*n_96Dno03JrDi$NE(?ei+A(TW^W(^0g2R5wD&NvlR*S#}() zn8#O$kyrXxb^a(ujP!!%jLiMpsF5SCz{;xFs_Tf5$4*_FO;F2jMUE<&y0==I3hZCZ zQN_+5I=rTcoc*(d?RG&mb)$36lV{8G<%K|{JkPHU35wc@;n&Vp&pn^&URxEru%_lp z);A}0;l+D|IDNH6MYHLRN4j2r_L*mOLl5@%CoR3|0Zkj?U4^O}K6F@Wv*A7QcDDC= zV%UZjJn#}jvzvxzbUIc>jK)rco`K~x>0R(R9&}=Vsmqq z8f@=^k317c(ksZ;r81D@?}_RlT3gJ2%9GxVYD>K6?6Va82)!AO*`V4vF~f|P`CDM( zsY3dfvb1dh?(6F}m zhw09^+9%R%@uo1%@vh`#UZ6;uaI~j(898ZVK}COm5Q9N2_Mzf#D(jHM>}zZ4yj!mq z*VN^v^HuL1k+QWF>gz8Vb~fPmn0k_>M@E;$u0ro#GkjRv3Vsz8f%s7SF(a-Vfy4fp zw2+k!@*-twSyN`qTbv4g(x;5Zm`28ot~qa1^!SVx(&=S&qoUr$ZQpzi9pM=y)mYZG zHSQ>HSDvN%OD%YRNK51`cKdZ(q-ONrXyNL8oVPn}Cw_(Z*@TMR_M3x_ZOF?SyXKvK24h(W+a9y@(#Ts(Hu%ifl-evK7B<*AE%@<<(UT zbzi3@M&f7oOGRGBHiYhy9C_y1r>VOoZJf8=e9cK;Qzy0T@rU%qb7j-L=eXdLMd>tCx2`d0QkpS$SY3@pPx_oP znqPJ_zbwKpi}A}w@XJQ=%SN*@-nXybw{Ks5*%)>ivsr*;u^i^GOIfv!H7-E+u+h8f z2`@YK=>^tbAdgI;eYO8?y6rt0H*%Dd9uCV(Vxw#*p-V>BQ4hiog;ukFu6WzR^*?wOZ%NO{>u}&MK=nX&Mtb(8 zmtE7hZ|}>lIj*vrjn1IfgT5(|$sCIvnUSmXqFwfg%*v!Y?Q+l2&vDP`m{9`Jb_IF| z%IH<{G4zf`&5%xm$fvi*MynHpk_=n?no;gBgSMT&_S7}COQ&1S-o~ zqLR{*jwPK-jw%hAntf5}6{WQ$LrbqL9bPh`^s17-me!eC$z7~;0V`d|N*A$`yIJWH zR(cOBUCv7HWu+@v=}K0*ij}TrrT4MY`&sD&%+yM^k@FEbUy!qxoSQkE*}U{t`1H?y z4}lJ>NK(`F9mne(uh&Z^=(c5l&r4S7B~R!j&*=7JM#*-=)H+^K z^1M+p)-1WvvR7F4eOAdER>>}_WUL@oI@XfgVQ9zUC5uIezajx*cesmnTmZ&9l0+Rz zq7FxO{D^fdLF@~b*FDgW{igqkzZJjJe{Y{;oP5fFKb-2ER(bjv*=G*?<5_2)Q+4j2 z{(Ro~gT${`b^m_3gPkkbfZG23oV=mVU)YtwVf_k*kFZlAR%mx%Ba5%{jU3a?|=Psu_YK6 zOc%@)TnJ_hJxl1>LJtT%M;Lj61%+84^g>}33sxdn2O*9Sb|=A(6iyeBRVG+SnB7F6 zy9o3UtfyeTM4((4$BKXyMsE?Q5P?1-&{qVG6M^GJ-~28zHRMc^zE zI9mkH5rHZZI9CMzBm#dHf%8P*e8C0@c7b3Qikyo@&LtxIQo$}0foc&LECQE{Kv)D^ z5r~LDR0M{IK#d5*1iM18S`qw<2o4j4BSrBj(P6acFh+E^T6FlE=x~kbaINU@chTV= zqQgIhxK4EVm+0_s(V?D+4r76FzA(zx zXTqNae>QLnFbB95m{ z$Y0LHQRLstL>c)jnCMFWN+ymbe-#tQkiVLV5c&5p(T)83ndlC`cnuRh*8&d$4*?GY z>zL^A2>eHZ^}u7m2HY%d1N7I2Ovv59 z$H?CU{}bR-;4|cX&P2tRz*oT6z&F6Rz<0>|9{vxg^CSG9nCQC?NCNd-^c@R~13;@U z>ay_&UynI80salZM1&{7pA1X^rUEwt(~y1>7spSBk9Llq0e>bJS+js!5T3)uFXzI) z4gNg%w*&LJ2;9NNukJ+nE}#Ke05k#%xo{T2Ukoe(?go|u_W<_-D}hzOYA$|#AN>1) zH3&ZdtOXtf9zxo~9AgYT0z3+=2Oa}90FMJ3fla_>U<>dBuoZX`cna7CYzLkOo&lZ( zo&%l-UI5}i0%!u7ImQ{-0koj)R^TPzW#ARyRp2#XC-6G(2Jj~E7O)F=n~Q$$!~X#I z5cmk#%{wu1!3{8J6ZO1F@J0(ZM)1i9O#yDyott%=0uq@ggG_Li7_XP+VgbBWn$3nx-*}M-GSnF>Z1Q$y7+wq!V7?f zz+zwta5u0F`S-wI4&1AYi&nv34cv$H`++qGKcG8nb>__EO!Rw57yTXv*6Gd$w9#)P z@;4#A8Q7wWi?<^F6tE50u8T{a1)kG|@jT)$z>mXE08I!t>&}ayVeCM>1!x6c0${J$ zPWT&i=XH|f4U~No@ppmufcMcQAHe?*_(*pir!pUd*G~}t6#nPBGnzSLnDYg={tEa8 zCHfyN`hSbe?||=tAAlc$pMbr0VMU>q>s5Cg6^Flm4r4AE~AFcslxhI5m_ zoaw*}gNXq%kv0pM4cvk{bKu_!%r%_bkl!DMvH$I$Hy>$t0Cxg+0S&-X!&wG8%Tdm_ z*AT`Eq^$&20jq)gfct?pzyrWq;342)LsYJV|A-;ZfX1BhDE#$C-o@h54M=_55Y|Tc zn+&0EHiXy$JOOM4o-_o13fN|d%bo_FF@*W7;XG$>arp~|6F0ciMB!$`c@g0q6mBt` zR`OpmoR`Ue#c*Cj-cI0k;0@qSU>EQX@GkHk@B#24@DZ>Z_!#&E_zd_Q_yYJ6_zL(M z_y+hE_zw6U_yPD4_zBnx>;sZOy~#y*oau}=xpO@*0hkC(0wx1ffE$5nz)ir-z;s{+ zFcX*s+ydMR%mr=(ZU^oF?gAD7jle=+5!KhZvjqO#z*4l$mzmBz2;U2=09FF4fYrc# z!2Q4)-~r%4;2~fg@CdLTcnsJ8JPvFGHUXP~Ex;4NR^UnCDPSA09e5ge26z^D4tO4T z0f++$pb2OOUIcakEkG;q67Vwc3h*lM8n6?119%hI1-uQs1H1>k4}1uG1ndSr2KE4- z0G|S%0iOe30AB)M0bc{(0N(*W06zhHfqg&{sJFN?78nPN2d)Pu05<>=fhoXLiwk#} z<=jO6&6YEr{27)r6M3_MIl!&JZNTloe9FJWa_%JmF3V{ke}UyRlE2V$7LmW$a+bgk z-)%WdQD+&2ms=vT(h_H^vPATLOI)-DyUhnI!Eey>)>`7y2d%spEYbgE09LsFEAU?h zUITUll=r$NhP(+1Z&{+|Z7c5`OAJVYNWBoTaoDbohkrdV0k}a3W13bkfD8 zx1q#50fPX{7lPj*gncK{?gAQs1wbRP5DTX;#E3Lcybb`AEcu>H43*kJB@H*fT0o!PcevgSxwqP4YC&yXC zvN~luPq8f6TnB4NK=j+?h<@|+P65Hbc7*edle-qF>|4jt;C=64VF)-sIRR%EkOV&9 z0r7Wi9R5B&OZ@$MU;=OhFfq&dkmYpBbv|b~*gj;5es`jo#w_Q1mgAJ=II}pC*XqtK zJZCJYUn$~@GtH(S*kkHfi*!vxSmP7`$VaB>CzuqmP=qmZOe$>oj#rgY3E?HFvfN9z z$#MJ=T2^L7O477!AV85Ea&mn~wVId83aH=L@+AWohmH)R-6r1qFWXj9~i~3)?#+e=r|h1XE*W z`gvS0EL45xr5Bq2Nw7jcQl#z27LtotQ63lx1XvNW_jB6IfU)M078a=?FsYyPqP8Jvi<6@&r86=*-JcIkOV8G9uYc2O zqx#wVEA}T~UVB0O62%@A85Lps4StZdb99zTq7XyRbv+Q!QaVRXFg@?! z1E4y-G#cy5jy~qdk`7L`#?LGzlW+u-Gb^j(F`Ch-t7aalX`Qt$ns$^{M$&Xe?;85i z$~}e>LMqrzx!s9s4{~~v(~F#PMeSJSO6B%eWh>yCdLOu!-j`|CaZD4(gT)h==KO+b zS-)gj_OF;0_%+jV`Y|o{H%!ax&$Qr)Ow0c*(~5q_wBp}0t>h%8bvT)6rKd3MhyhIN z_y?wSI+bZhp2oD!l}zh$I@69igK1@FGOg=C)&3uucJx_CYsZ{DKnpSLY+dVi&H$}D z)6UVg9#sRho=mIKwO;2A(8`&1uC5*XrvaK|+Mjf-_n!x76-@iHuJt)@fCi?|)3xKy zAE1Hl^L6cnK?5`}K1kPodBFe;tY4sOzrJvQ2Ieo+wclKn=j3YVYZvD^dD=zVC3#N1 zR;^u{=M-qJc3GZNq+Ov^=Q$->Ju4qfx_3D_VY1Nymx2*Ex*mmV=tGnoHKh144HauC zG?bjbP|+(XG>iskIHE!yp{kBlm9B!Do&8r89))yUuVdO@MlZei0Y z-bI_s*bKyPV>2m!ls2ESS%}}kW>dUOYhdga#22tR6z{4nV(eDL7qht(KU!PL*lma} zWAi9}jCL<$wn!VQ8~}5wx0uY+u8GQpJp$>eTK#1KFbnt zpJPpMpJ&Z*Utll7jk6ta6RZWo9IL&^tX4!@*-LO=VlTtp!CoP=roD>r%j`9{Eo>(W z_tsux&g+Q2&fXwawKoxdlf4D^4Yo^Jt+(O6!?br98P4~Rv6Hi0ob!3T)$ zW*@@+gngu%*^TfA>|-U*9+mQmqW&q;-)Em8{5jLUK;&cgCEPviE4ZJrui?JOzF}lu zzeV^%_8r`h*!OThWj`?DqBzevPWzHsKdMqcLFd0=dsRdG5dMnoW4iV=`w8y1EC~)z z(0*WAJs-=RUub)oF^*Hw@z{CnW7l)yYy!eb?C5Ub`8u13^&(F@kxzm@nQK#!cHRYy zybCYkQ{i2DBhNQ3yWE(D0ylB(X0CDW=+m*iz*cbv3WTH9Ol~o@jI&wX;%qr*v$>_S z6`b9I>>+bdzvfn+Z^njdtn1b$vatT%1l2Wu>KQPv;M3EM~Ok~B7?Du*~JFqgV`kp(9)8J>#V;CocW#7qQT@4m!WU#6R%UQx;O%0ZN z4}%poSRU-vJorJ_r}^;nA7rqW1}k`k!Acse@JR;iXlO;4_-o-8zrrxr4XtDs!!$Ou z4xckjM?)*cd?_}xBYtGieM9S5&sjY;v`#oEnJhQ2Fy43YL@wXqJ>{(tHH6)9gA#HTj3Syh#M9k*u!tiq(|0|#8TEu9qe1Wsd zLKchjh6zzKV$DF&h?OXAN+u)b8ML8edBHQ)FByjuyuOK7H*+r#cbj=UR9*Wb+>+WI zJYL<-^%6&L8iHq15S(I;1%q~6-lV%PQ`|6&V8O-lz899a z^sQlu;VfRmhB32aJa$9@Ov35$?zKn6W3TXhY}De_uky0+Ykc6VoV%}ZN<0==|n%tZ0UNiIL@fq9cZ?!K5sayVbyPf z=36|ri&wtMS?q02$%>!YJG{2a3%$#0&-Fs@ae14*oPMmkJ8d|7)Sl<1zrTO_`SEH~ z<$S;^O;$T775z{}FGxi{Qqc?Jv9nclH+Mhg9>qPp_Rqni=!fkS^wah&>Zk3)pYR$! zj8%ThwW`lJ>umGWS;~C{KFG7UY$KKTdO_B_silTtu_??lE=Q{ z1%osVA=!w5I<@L+&V#2O*qB_TQ+u&*c!S?wu!~=cwPy)MQXKJa$N%bE{vEu_#=^sn z+6Z6f~* z40P$@Hr1Ixn$vSQ_XW9F(`ra4xkATWgdoWOpXyC$s2SeNsf#N2Vcwc-%y3?vqy%1> zG}n`Vq@Y4S3_W^rLM3Hk_y zwA^0Q)_DbasV2kOu_=1hRGrhr=^FRSRUOabRsG4N1W2PgVgP-)$FwAxLad?kMxBw+ zu%$UvqEEbU^)!9pG+nEornfZ7Cw2EGy{YSXX??svij<15M!7R6o9dKtgAmjE%Bzx zU$F_T)wA@0v(V-&y`09Z%AKu8jPNabY>w{Us#nj|2hK(AT;!Tf?rnPYJbmCiB+S#J zR`nIIi;39nx-yFM^~x()><%4Vi0Yz&MOuAP)P~wbop@|eNLy7-qtz=SVptbqgH{!6 zr0yFuraYRZ(iXzq!5ha!v%{A}L?kPc9lk6!lULrz4U(%_zN{}V&$mFLS-t`zii30L zk}=Vo>KS?@XW$H-LF)2oZX{5NT{JZvJX_P6<*Ry8CrzuKsSlh9u4kf1UPh5}D)O3M z1Y*_I1FNhfr?>N+hFj0CFw#v;M0YY>i2Ql%p{h85x<>rS1vMc}_n>@J=1DAb@+ zCeB2;SCd*gmA__C=zNTNLo?RUf`}P$+y&ITlUbx7VngTWaoxQODX~VqdZ8}g(&a84 zxs|tZtzqCoos)v5bKlnGJ9;|Rg5ED8AJ%CxwEDMXog#MC5?zZ3Vi1~_M|#x@dUdxx z@NS5IH}opDRQGH2qZ&<~3{}f?GGRel)PD=(ms0iKw6-2K@F=aeOT0~e?$HsAb@A!^ zM%l$!7qCN(=93}+_aP1W?*DN^9Sp?sScP-SU*;xkOElf9zu_N@zb`7i;yP}H3ofguPD@eKiu0y5za zv%JYZ+zwtzrBDGTA*3p#jRFl8va;G0|E*sf=HWP1+%pg~qQkObBgmr)uoEif8ch+& zR@OrCW_xp}S=CM(Qc?v^9;FY%0`g1hhMWfXe)0o;MOX@z`L*t@L8#44lkyD94U?f( zft0CMk;%kMAf_l03jyE6Q09L!G8y^p%nTY%8+_8%VT4>VJW6z!8ES}(jz7!)^D#vx~I#y5`K#wa0WV3yQNr*RrcMY^MVl*vEA(hiMyiEf=G-N!RkwXGNwN zEPhu{nL;{C806ipL)+nR)}h^GA#0dq!)X&Y&+8f(fqBqlbh#evh+S3)(37z%M{--x zcTNLwkd-Db=NXXgbhe4T&vr9XE6Yz!`Zu0nDq*t@1O2%kNP@_Yth9etOH5{Yf$*8f=Xjh~3KcCbV8UHIMHKrXw z{g(^Qv*cn!E-?mXacqh^a-J7F61|E;3RZb6eQ|j=4N=gb0X%`WD4iI}U|u44q;BQ~ zuL6-*^hD(=I-9Vg%~H2CCEQo_CV7wHzNWVs;MV3QSk&ft>|B`O=C-Z!PJQ4`6xc}{ z>G11%>(yoZDbF}Y5sb`tV3_kBGP`#{gf zkuMQT!8lJa%@~N4ic89z~sHgNsDf0OG2QxT1?8Reh*F09|J?SwTLc;m=8?rbOizy5aBJ zx~GYB2az6WBHc5IbU%Pdbvq(G(?oiJNUt=J9+^aX96)4nJ0j(2B0WLm*ff!znM8UX zK;-gvL}Z#sFA(XSCekaDNUsBkgxe9RNE0askv?f6<(Wjv4UBhoibxalL@Ge! z*J&aZnM5iMAX3wgNWV0ZJ|Oa&G?6};MEV>+B-V~df6iF$X>lAg!g+neU+R6sUjbhO z-vHkN-vQqPKL9@hKLH)^|01n(#$Rm-h@D7J%LL+m2T$VRsmz^37gK-BnPKF{dmrKM z)#KrPx|`II`a4QJA}$k#TW`d}V+|z7d${8aIO7cz_&pWKi-)f_+zBXfgW*o3vkuHss{H^Qi3YNT0>r`Ks(4aG852 z%5-t>f_s$PKxGynIp8)Tq0C)~aFM%66<@5}C0+w}Ba-Vbg_z5fw8X(ZNaOBuRqS3Q z-C(*aJpNazmR6~p)kvCZy7w8>zxR7J*QlHakkr*(tEfCkz50;XFAu|;ZMy5=%`x3a zyef|x@jk2%@1yrIE->8nNStT7kHMR7x*Oo#X}XWYYcSo7Ab5A`hGH4&;a27DOI3-Bv`pxi1mLmyLM0ADH`!C*i9Q#tdl}aQ8LUEjy{mI7R1m z6x_z#H@t#xBD=f$meQJCs?oQ-?s$i4yh}p7hYE9;`@X9E0g>z71t>!=eTX#M{RnA2 z+}&Qij}htV?m@=!?k80JQ&sOXFl4!(s}{acDPJl!$m? zm-YjBru!r6^m2dl27E8PcTIO6(#qW=A|IG;y-8y|)+8Rrnejft9dA+t*PA5f1e3b! z1~XpfPE?tbOb9vIR834Vl_pR1VmGR4(-8UAbZ>(9z3JWz??=;}ZbGUVX1v?O9o(5j zU>3q(>F#XR_APKNcMe)Q*1Z*B-JOf^ooTBWD2R zoD`RnESeQ^vPHcRGH81BmZZ+813IBBnp2>;P~|RG?pEc#NM!!tnF)^!;-^yl_o-e* zcMzrC?tIhd!PkTCik?aIys7SuEm9QK(>zn=i9&N@DhX5RS*jGvspQisS;Tu+pfI9m z?8niWo&iL!k>$uzB4jBMvb@FyQh{Ii^r(OCFymoN#Jf~i&rvS4FN{gKK=nIOu)Ml| zq`Jk*xIx@-qvjHsoxJ3590#1?`w> z_I$7Ue{IV6dHtx`h-0~MmnbFsBE#6xB%TZDQGK4}E;Utbndyyx_?{GxTdBEosJRm< zy4>^|2;U0}2-+)6cNM(VuzF@2aj+V`-*nfQUP~ZRrGW&kaOb81fAW`<2TXS@C`^K3 zr2hCbC7%|T_jtOd1_a|y8q!CtSr2)vsk!AVo~Lr0n(bqg*+?ngd6r>V8+x=IymzZ} zBDSl;g&(#3gEyU3d0CO;onBA=t-I4NGpD@Z zSh}Ky2$fhq?&|XVj&!~4Q6gjw+{vkiO@8HilaIT)prd!2N1c8jGifKjK^5&$^|-13 zCovv6q!f^XCxbnL~>4%wdW#@aGWY*+Yu)>|u)W$Dc!t z=ME{xbB8I$SwDvu&mU5Z=MPhivy~VboNP3`Q|~a5uh?wMxZ?in> zgW&vB@PD^Q;)m>!_+j?QIX{tTxVr=LTNmkue$ONS}OpZ{Npak^%2GU);R&8EiJnc5ap)3dcFOwIUM*S4CP zxkuNYG&O6tu03UHB3s*LYBnP0GiI2UdN1L0O&i1+)ALd{*77c5oog>b@&!mWyaxa- zyudJ=SFN^dh29mw#Bf%}m886$w9MmbdzBKWjG2cP;szbqeog z>-*=tZ^;i1p7Wt4KRS5MZcBcA@SHuC{N&&{pIY*>gXes1$uAC`^Q9%fI(W|4mi*@6 zIp13HZhp|5+bsFr!RySog#9cE#Urd7940wPr{CJ%Pr|G}lqT=mqFe9e$M4f(nu zx0v!pLvA(YQ>L6MtPZpse~x!aH*8}ddWpEKoWhD?}pnvh=^@+Kj_G2{+Yerw3@ z4Ecj0Uoz#(rrc-9q#?(f@_JKFFy%y3-Yn!RrhL_uQ%rfIDPJ??bRlO5IaA1K$Tj6o zQ|>b5o2Go*l<%4H9aDa2%2`6rGUaYl&KB}kQ|>Y4TvL8(%3Fl|+?02L8B;DYl;4?hsVRRj>SICX#1%o^j z64Hhn^tg_b@i>|hYc;E0GRcY<8*A9H-qT^~!L(<2adR?xI@_uLs3-NY{AJTF=u zQ~Fg*=|b(IcGLD^&Y51^Hf?$5+Ka=lnd8(`GMBVX-b;m}8xvT(Z}_t6f<){^o`~(> z0}FU{K~polh!HU>Z{H+ng=D?k%R=?9MkJ=F{_LdH3mtJ)% zJwx3@lvHBlf)HQmzHUbBW}>Xhcxi8#5s`@4Wo2dEtKKxNhyY`kSy{UA0HX(F@}mwB z866c=Z*9fj+tpKf#Hr6O&o^Lk6ZQEZWh?2Ya+8>eICH#*=OdzNc`9f(FQ1cNn@mO=Fkjtn z00!@8H}%f7mmv9adbFS{-godcUVRfEcoWy$X?*a_JT%0;nGc@ML(H8{j~j%|6LjN2 zo8C+?dPdEjQLATE^o-g)qmK8k0=;<_ASZ{MTyhG@DGF)PVxWW~9mpv~>9?c8ijJ^(rr}NR}<h&?v z9$u`>i}ge-_MSN=dTb&Qd*7`50PDnuX0(FzE)o049GFjUM)V})rFDXk^BXfg{-ce#19zs0#Eb^FTG(pGNvP^W8~;uQ_~_x z*CE&;(!DX#d%>7!d89)VWIs~%YH$isE+opwfU*PynWkKvrd;f$rzw|2x+=kurA zbZd-AQ0^7!64J_}$B&5`k>l;-5yCK1$bFVaj=*3Azo(Z8OC#kCk)DlXFbEdfv?9eA z*>rN$$|-EBs?RP#t+O!*85S;?7~W<*2-iC=`&B8XE`(i1bN6tPms-LWLO zFA1eEpe=^qRoQ-5jfrNZLrywmQ;2#|b>CdoeWaA=l1^T~T}^2fV5L)}r~!PSV=!;_ zV=hLlH4^uBBqvn5q+60LjflnuYQRBCFeAl@WFf`QNXd$1M{?St*%{J}YbRY8vA$@y zFmfcZ0;RE`Frm`L2ssoAE?$OU76ok;%tmk-bzC8c6h;c0ibw8EMmiwUA=06_*hZvJ zqz`6Hq;J(HCXdilRBk(46xq)f8J%k{MRJsEQ5V>vnOrX8wKMtPSzIpXwX^u(*<7yR zwX?|*4dGljy2kq^!ZW%5{!k)3i!U!gC^3Pa2@TKY6VPUjY3YWH_pQE_Cz_fghQDr@ z)ddj~D?x%*1B7-Vgf#$*3+luS82lwL_)UHZjJnz6msv=PPbwU-FbK_PpI$j34KyPb zS@QCzqejPeNO8+Ftr?6Jm9~}HwO<*qB0_9cc>x*uh%raK)yKvJb@Y)K6R{7KXOHpN zy`o*W)>5|yA@HZB*RN*h+RKnWv~79)i@^;u9~Hn+B9yhT@-vgwMv-wPM@BAsHKgUy zW3`Fe5l9_&Kxzc3!zq;>B2CnW5gnl$X4Ynw@%S)ptIIGpn18+Eu_6BI6pz)EEvGkE zs>fn9#lW!`?i$v8IFDCfp*G@Iu-aHW_SgI%T8hVF>b0^Mta#NwdAzEgY4NImY4O-q z1*P=Z?|6z&fD?;=Ig^sEr=+pujHC3c@>MF8shS9(iB(^k%%h$0<|oni zUgaFd&S0foyAfpunk=YY#W8SLcIl~aH(mz0%W7+Zp}>_OJ2KwA_A2!4UunEbX#n!b ziqf!!h9ugCZ4~#$GZA6|o%CY|24xg7>M%*nlj*U=Ay=0dcmr|O9Pc&jMD5^sQ|;yP z*kIJc$i%yCiiK?&uLkFlA zo6B2jhcwyfs-xxJwUz=q4{;PQ9DyG*_qr)OrclT>E9ve!N z6rs&##B3^Fo=mDy3E8!OiHAh(@OUg-R!A?XLOa8i|7Nu=I_PR6*D&Aq1aN>X0GlD& z3q^C{u`A1pXk3zKBzpH<3Y*=M=zZK$SnAdUvEZ@at)An5BSGj+Zu^`ssEd-g2P9@i43*lJl8vRpX~gP~)!2X)A-l1m4hxe_{Y%^pi{zjz6h!SF z0}*Qlz0w&8fQ?8_UDVucWAPEi|M0&M@HYd4HPw@qwt(Iwt=r*E)AWedhO|~1n&5?C zUX9Ob2vDIrbo8)M`3-HaXtbLnme(!R>AIhw`X?iSL{U*1mPGLb$>e4uVl)*u;v}MJ z*XU66>xiWtA+3dGV^^Au2z2|N`Js^E1;S-TS+pgfl0i#Nmk>vt5wIYFUj7^r5=&c} zLVU3zq%|!IY0DDJRONUqT6F^>YVnwxqN`B=OkAsDIuD}RRuhsc6IoQ+_b}Cb|8kGW zRRuZJo=+jzK}EXN<2<&^`yY=DU*;44I}!g4h#x>j)wn9Nc$#D;cmE&)=X%_wJ13d$ zoNPZJ9}se_XrQS~$$BcE`SM5nM$>fvX`t(Wr|3fMLYk+!Ro|L=NGE0X;tT3jcL$UT z_?0*FrbO{4YW%L#VZpj6B5F$bttR~4jNjD1Oq4nrOWRsxlBvREjmQ2na4j?H*RmZj z4mDK?MkW89S`uS5(AauLhBh~z`Xa(GZ>1c|_S=D2oolO+K912ABpX|hxm+@LF6}qQ zGXYzAhSIR`T&~^#EIL7{QLr0?LQy1#v2zN!{>L^#M>IBIlT`Vg$r?apGfRZZieF47 zQ4Ty^&uEizudb$%dL17~y*;p;Tm$q7)6YftY*@WhCQ71To zwvbN5?m|^>$2qq0c24g!Th;R^GT)2HM+G*wa=mDvcm6RW^QoGpCgEOF4J^$i?1FHz zeR=4O(EYBa+i>A3;B+a?+W>zknaomfsh{x`H_&jh5T5^ zJwkpW z&X(hCdA%(s*zyKjPPFADTTZs+6kATU<&CzSX3Lvwd9y92+j532XWDX>Eoa;E7F*7- z<*l}yYs=egInS22+j71w@37^aw!F)h4Ypih%SKx+wB;gOF1FrYr&;1A5`u`wtU!@>umXmEgw}W>uvd%EjQTmaa(S*NFlBNsVx zu_Ko_@@_{ib>uQf-s8ySj=a~AD;&Afk*gfJ+L8A;@_t9IapVJzT`S@(D+7b>x$de9DpA9O&G3M?USyXB_#g zBcF5R^NxJMk#R>R9NFZ^W=Fp0$Q_Psab&9_UvlKjj(o)#)YI?52M^kV1?a&$sRtj* z=)s5EPg6_v;5ufY2aC~xuR8KINA7gw>&_tVQ-9>3)C)nqfv7*q3@o(sus{rMpyQj{ zzy~kj-M-Y_1$=NL@3vca8~NacyxaS_yO0lF#Jhc~yNmeX#XO{k7x6}SF(15yha31T zcL^VSHxC)^-F)y;y70b~4_?MYL3bG+d=C$?@G`#Gy@wB8&O=%5az6N8N?VS!d->oM zl(vEoUdhAv@bC)0#9he;uTqia6ko8|UBw5lrglR55_dHpd>;>4?tOgl{Y2$HP`RHE zUcGzS?%3S?f(9vP7`;th*6y#GLYfcTV6a?Z`Eg)(hmB+AoH_V6p3l{#SeMgGD`s^0k z2NrvW_Pbd#xC!ZSnu(C!OmyB(Cezm~qErxj)_Myk?u2)BqC6^;Bo@`x;Gk+c%WlhJ z`(-(8S=`H_O}Q=T)J*Np_O_uLnBf@a&3fv@?4Q-u;E;nhy-N>m{*K@=%fNZB zsB5L(ReT$X5NoJw3HJ1dq{$xvkHd%&z)80W<*ihC9R7%(IDLQ1>mq74(OmdXO^bLU z*R@apP5AOts7Z~MM})GO&w-cC{A`}e<}~!_Z0=|4scapIdOBNI*+xVZ{+dqWOBvm5 zOEiSo5=s}IfZhpqDQim5VDhGjQM?C77NagI5_M4Y1hPCL zupD$ifMz|;tUSZqXzVvIq$i|m8N-sk%v6Sxin`7O1-jj_iTPO>2#2iHregORj=FA8aN z=N{&80bTfVf+zV|jTu>uURKD@T9}cw(93dEWRZ#xZ(q~FFc3kXG+=z`8Um*O;#QT! zGLxc)O5^R)%y_f9%Zeqpt|cC^n^d%F4Kp!@s^xe@_=)!;F(=|Qpqp|cxp{QuO!e%7 zx@gX37RmCyq!(h*tVARWd>36pm+m8&!wcC$6tZ!CwZac@gb&`)E$NPK@;kbz>41)g zBC3u~M6!zwrAZr^o^6xo03Nkqpt&7$kuESeqc!8`?zWMdV}_WKP36BzH0tc7&T8{I$z#*0AfN|qmJ zUeFkR1XGBtYygWwz*}~*QURk~J}0E|Rlsb^57PG^>Gnl5N8P{ZZ0C>}&rPu+$~Q&D z|0*jilNIzzN}0gbs{F0{lBe@=>@D`Lx@R?wf6PDQ6w;nxbXVmsbP+UjJx;Bz3EwAv zAN2X5_0&_BM8s-iw=J9di)+I76}Nsilw>P2a}D!NesG(!|Gg1X7+B-bQHyV-b*B!i zQWC0Cr%D*XH`BX2pZA=$d20Ie&&2#Q$)u<4QM;LqncmPDxh!wTNTsmrrhOSj(}@v#L3$UNriUE?w(SiW zd&&;9KB9`_xkPOxZ%Ea2JeN{eaWxENJDyZmsmuLOGrE7!UELko%&J~cw@032Sk-H{uz2^{C%kx~Y6m0f zpJ8;ns55D4OE5>N*+$lc&KhT_dlGw;#e0^S0mFPoS-eAT!XVdHx)Z8e*ve|xGrBLh zo>ew8R=a_^H8E>(?UOz~tfBU)cC3Z8+Gkk2@B0fHj3~`Kc06wTPXTvx(#ieyhIs9gjW67L!)D(sxM_x`#ghx{-8moYhP}d=rmt z@?vN*xLMO^SxlF}Y8qAh6Jr6bY({$bBIwK34(*N?lt;6$*hjK#%v0LYA<@P(%WNjN zUo)4sYoc^5G(KV}wrS2`Owkvy$626vsva~T3yHKG&^Ke-spWCa6O~10}?Z&z(oPY_2X2YCTP1km7wt~`VAEK|B7X; z1F@X47)@#WIo`LQ#hq){QciQmy^|M}wglB}jd(m!`5G8_g$nIZTQ_?8CH4x#P_(Fm zWKR=ewnlxw8i9$Gt&E+K2%BpPu!XO_-a>F<<@FY$0*T5AmNtPN#mJ zxW36GGU%cT&j0K7CBa>jy2FabUs5ytEm1OfkD zGfrX*_g+a;kM@|P>+(CNfg*+yjJ{-gyrJjMP9|w`2QOiox00&2RW6=pT{A8!!Z%rx z4Pem5LA1W$Fm(*h57-7CS$(rrc{5o5!C79O-yM3MO85~8^fl04)zdAx*QuOtVRl!} zu$bKEET?BkXdZg>w>s1Ehb^;DnV+6gn^f=q!s}f*Hj8RE z$Z=WF9c#8lA11wpehg8YV`=(iOS{$5Os37XGz*d2Ec&&GSJGB+o^J(9I@h+4fqON> z3cjY!p{IFPu&MS9Z0z2lTgLA&Ui&tSSG|rSYrOJ(rq%9ZP3T027K2Kpl3k(?b;jOi za#B{+SIYA4Y%`s^$aKE0OlOf=#NK9=KVT)_QTr}S*p&H(%0!EO)n>FldxzIt>|GYy z$HGY#dz=?xswU2e$KGIb%IV|%y)tsQ!OR>>&;K2&5;&WjrE-2^4aA{3VJDP0>SqKF zSu>*z`tGz}@C}x)J|KTU1@F7^Xl_dT=4K?5Wf1gDwIzL8nd=t+VUGi3-EugxZpoB& zYWv2U)!sK<^a)L&Mg>(FifH+yNz{=IZ#dqz{q z(+-||Q~TszUZ1|DlxGF)kC0ndlv2f;l`00$BjGFGWZD_<-cp`NgaY8u_Blj?sy4k{ zBhEq6f*aC8?I5Y1gA`3ZXPTrXj>pJ331QA*h0 zCz!zsFJYsfV9^Utl(5}T5b5R2R?C@fvrYqHEwGA}B$J)n|L>km4)nThSK27d_l-h_ z&b2#f>b{*}6y8w^+k*~}pEEflYXGbL%s=Sup@ZHhYA^jUCeXKx9tnAu>B2DQTS~#b zEs1*Ssk(Szu~uIUUH^`0!490Bol#xq?qdlUHTNfvMDX=g))p^oTwB(bRMu86>q{q{ zwKSFWxR>=+Th_Ex);2F|r=89kmCAbB%lfXZ)`iHDGqd8Ah%{un6IzV42FEzQF!1w#=TFEwp_>NkD z0BpbkFqofU{MFA@#ABbaMCF|pPKt_wyA%W7PMNN;B-B&S|EIBIi;b!Z?w#Ge-Fp|Y zg>95J8-K2RkWDDjZi9&-Vq(;2Nc`ew@0G13rvWtKQXgN|T7LX6F#<+@Sh~g6YN?O# zAq2{+Jp6DU>GsPQ6EqY`Da9Ao?r~<$J-Z75!$;FO_sp4d&YYP!Gjq?`8|4X?$jOiJ zbf+hm)ejLj^}OM6XUwnlN_WdWjY6&S?>l^9Th8xK^1gubS0!&>O$fl83jkLqHSg?^7N znk@8rU2I{YKctJXy3kuJ^j0k1xmil<-I{#ACO@vp(V9G5li$~5kCYpwd{IiQrsOs) zCoUzip;aZ4qU~l)l0;p`odzT72;I7DpH3N5f#slGyoCRAQ!IRS`@-9G>JwfnMjf#d zA98{Q4ax31klFgAK2^fsPsU}A9ICp38jloKymZ&bxZ3n%&$rbmRr*X(Th8v|-P*PN zij#f>Idu<|8HK_FI1)~5pm`n%|KB|ChtmF*LX+kF94+rwBD}vv6Q;*s*o8aH^8@!{ zo$9}EKmBK-CHi7nH8X6MDeLjN`cza#LYY2Zwr|BMbT*aQnXV}32hC2Uj0UEHo4}X2 zS*E^HDn)+Dj1dj%Brn>fHB)Gm)=X4O)yh{0S;y~U`{6x+wE$&CyRJE_OYu+j}ON&w1*Y-2Ao6!$x zOuDjYas8N`NCwn2bxTtxd5AVw8VP3bVa4EMC^GD)*0;p*U`u>bZHZGzO*@&mOJiT! z!_+zntdq!}&ZAPo6H@j|d6XwT%g5q7id}?fHLc%GTtAfqzs5{_fj)9JW9fT#Xe;aB zd;`3J!8dlb`q@C6meEs{`gt^G1aC7PT`jV(TKM3J4eZ5xuwYk8reK;vDkzc#eGww5x?6&fK^G+jup4~ zmCd$dmwOHzDb9g=9?*F{5AGy5hL{BRG&mqmgL@X7us93u32-9f1h^N$F~vo2Pl3}S zPJw$IoR~Nc?gTiNm;m<-IJP(g?n!Xs;v~2iz*#0PP$K-F+fR8f)|oRBjIARnB#rvt zrUP_K2F}Rrpea3PxOp?R7ewAf4h=!EB8G`>4bh_}b76??ImkwNn974d2kIWejz+no zcYyvjcP5i!klJrpxrsl$4k531`xf8#`gUadUh#Snddm0vcKM$F##Ybk>FQ3ePp?aR sJKpsCZT+wMUhlw8|Fxao#sUAWrxp14`gQ4ach6(pAymcCe{`jGtu&kavj6}9 literal 0 HcmV?d00001 diff --git a/plugin/editor/cheditor5/popup/google_map.html b/plugin/editor/cheditor5/popup/google_map.html new file mode 100644 index 000000000..5f7ed0955 --- /dev/null +++ b/plugin/editor/cheditor5/popup/google_map.html @@ -0,0 +1,23 @@ + + + + CHEditor + + + + + + + + +
+ 찾을 주소: + + +
찾으실 도로명 주소, 지번 또는 건물명을 입력하세요.
+
+
+
+
+ + diff --git a/plugin/editor/cheditor5/popup/icon.html b/plugin/editor/cheditor5/popup/icon.html new file mode 100644 index 000000000..5f54f1f8f --- /dev/null +++ b/plugin/editor/cheditor5/popup/icon.html @@ -0,0 +1,15 @@ + + + + CHEditor + + + + + + + +
+
+ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/image.html b/plugin/editor/cheditor5/popup/image.html new file mode 100644 index 000000000..a09bbf75f --- /dev/null +++ b/plugin/editor/cheditor5/popup/image.html @@ -0,0 +1,76 @@ + + + + CHEditor + + + + + + + + +
+
+ + + + + +
+ + +
+  (사진을 드래그하여 순서를 바꿀 수 있습니다.) + 0장 / 최대 장 사진 +
+
+
+
+
사진 정보
+
+
가로: 0
+
세로: 0
+
이름: 없음
+
+
+
+
정렬
+
+ + + + + + +
+
+ +
+
+ +
+
+ +
+
+ 한줄에 한 장씩 넣기 +
+
+ 사진 여백 넣기 +
+
+ (전체 사진에 적용됨) +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/image.html5.html b/plugin/editor/cheditor5/popup/image.html5.html new file mode 100644 index 000000000..c5f0f9b85 --- /dev/null +++ b/plugin/editor/cheditor5/popup/image.html5.html @@ -0,0 +1,82 @@ + + + + CHEditor + + + + + + + +
+
+
+ + + image button + (사진을 점선 안으로 끌어 놓을 수 있습니다.) + 0장 / 최대 장 사진 +
+
+
+
+
크기 줄이기
+
+
+ 가로: + + 픽셀 + +
+
사진 높이는 자동으로 설정됩니다.
+
+
+
+
정렬
+
+ + + + + + +
+
+ +
+
+ +
+
+ +
+
+ 한줄에 한 장씩 넣기 +
+
+ 사진 여백 넣기 +
+
+ (전체 사진에 적용됨) +
+
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/image_url.html b/plugin/editor/cheditor5/popup/image_url.html new file mode 100644 index 000000000..18b76d3db --- /dev/null +++ b/plugin/editor/cheditor5/popup/image_url.html @@ -0,0 +1,34 @@ + + + + CHEditor + + + + + + + + +
+
0 X 0
+
+
사진 URL +
+ +
+
+
+
레이아웃 +
+
+ + + +
+
+
+
+
+ + diff --git a/plugin/editor/cheditor5/popup/js/AC_OETags.js b/plugin/editor/cheditor5/popup/js/AC_OETags.js new file mode 100644 index 000000000..00d0e4405 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/AC_OETags.js @@ -0,0 +1,247 @@ +// Flash Player Version Detection - Rev 1.5 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +// Modified: chna@chcode.com + +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function errMaxFileSize (MaxFileSize) { + alert("선택하신 파일 크기가 너무 큽니다. 최대 전송 크기는 "+MaxFileSize+" MB 입니다."); +} + +function ControlVersion() +{ + var version = 0; + var axo; +// var e; + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) {} + + if (!version) + { + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + version = "WIN 6,0,21,0"; + axo.AllowScriptAccess = "always"; + version = axo.GetVariable("$version"); + + } catch (e) {} + } + + if (!version) + { + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) {} + } + + if (!version) + { + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) {} + } + + if (!version) + { + try { + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +function GetSwfVer(){ + var flashVer = -1; + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + if ( descArray[3] != "" ) { + tempArrayMinor = descArray[3].split("r"); + } else { + tempArrayMinor = descArray[4].split("r"); + } + var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0; + flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } + else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ''; + breakpoint = false; + } + str += ''; + } else { + str += '"); + div.innerHTML = "<" + str.substr(0, pos) + ">"; + embed = div.firstChild; + } else { + div.innerHTML = elem; + object = div.getElementsByTagName('OBJECT')[0]; + if (object && object.hasChildNodes()) { + child = object.firstChild; + movieWidth = (isNaN(object.width) !== true) ? object.width : 320; + movieHeight = (isNaN(object.height) !== true) ? object.height : 240; + + do { + if ((child.nodeName === 'PARAM') && (typeof child.name !== 'undefined') && (typeof child.value !== 'undefined')) { + params.push({key: (child.name == 'movie') ? 'src' : child.name, val: child.value}); + } + child = child.nextSibling; + } while (child); + + if (params.length > 0) { + embed = document.createElement('embed'); + embed.setAttribute("width", movieWidth); + embed.setAttribute("height", movieHeight); + for (i = 0; i < params.length; i++) { + embed.setAttribute(params[i].key, params[i].val); + } + embed.setAttribute("type", "application/x-shockwave-flash"); + } + } + } + + if (embed !== null) { + document.getElementById('fm_player').appendChild(embed); + } +} + +function popupClose() { + document.getElementById('fm_player').innerHTML = ''; + oEditor.popupWinCancel(); +} + +function doSubmit() +{ + var source = String(oEditor.trimSpace(document.getElementById("fm_embed").value)); + if (source === '') { + popupClose(); + } + + if (iframeSource || source.indexOf("iframe") !== -1) { + oEditor.insertHtmlPopup(source); + } else { + oEditor.insertFlash(source); + } + + document.getElementById('fm_player').innerHTML = ''; + oEditor.popupWinClose(); +} diff --git a/plugin/editor/cheditor5/popup/js/google_map.js b/plugin/editor/cheditor5/popup/js/google_map.js new file mode 100644 index 000000000..cf6109076 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/google_map.js @@ -0,0 +1,143 @@ +// ================================================================ +// CHEditor 5 +// ---------------------------------------------------------------- +var oEditor = null, + centerLat = 0, + centerLng = 0, + latlng = 0, + setZoom = 14, + marker_lat = 0, + marker_lng = 0, + mapType = "roadmap", + map, + mapWidth = 512, + mapHeight = 320, + panorama, + panoramaVisible = false; + +function doSubmit() { + var mapImg = document.createElement("img"), + panoramaPitch, panoramaHeading, panoramaZoom, panoramaPosition; + + if (marker_lat === 0) { + marker_lat = centerLat; + } + if (marker_lng === 0) { + marker_lng = centerLng; + } + + mapImg.style.width = mapWidth + 'px'; + mapImg.style.height = mapHeight + 'px'; + mapImg.style.border = '1px #000 solid'; + mapImg.setAttribute("alt", "Google Map"); + mapImg.onload = function () { + oEditor.insertHtmlPopup(mapImg); + oEditor.setImageEvent(true); + oEditor.popupWinClose(); + }; + + if (panoramaVisible) { + panoramaPitch = panorama.getPov().pitch; + panoramaHeading = panorama.getPov().heading; + panoramaZoom = panorama.getPov().zoom; + panoramaPosition = panorama.getPosition(); + + mapImg.src = "http://maps.googleapis.com/maps/api/streetview?location=" + panoramaPosition + + "&pitch=" + panoramaPitch + + "&heading=" + panoramaHeading + + "&size=" + mapWidth + 'x' + mapHeight + + "&zoom=" + panoramaZoom + + "&sensor=false" + + "®ion=KR"; + } else { + mapImg.src = "http://maps.google.com/maps/api/staticmap?center=" + centerLat + ',' + centerLng + + "&zoom=" + setZoom + + "&size=" + mapWidth + 'x' + mapHeight + + "&maptype=" + mapType + + //"&markers=" + marker_lat + ',' + marker_lng + + "&sensor=false" + + "&language=ko" + + "®ion=KR"; + } +} + +function searchAddress() { + var address = document.getElementById('fm_address').value, + geocoder = new google.maps.Geocoder(); + //var results, status; + //var marker = new google.maps.Marker({ 'map': map, 'draggable': true }); + + geocoder.geocode({'address' : address}, + function (results, status) { + if (status === google.maps.GeocoderStatus.OK) { + centerLat = results[0].geometry.location.lat(); + centerLng = results[0].geometry.location.lng(); + latlng = new google.maps.LatLng(centerLat, centerLng); + map.setCenter(latlng); + map.setZoom(setZoom); + } + }); +} + +function initMap(zoom) { + var mapOptions = { + zoom: zoom || setZoom, + panControl: true, + zoomControl: true, + scaleControl: true, + center: new google.maps.LatLng(37.566, 126.977), + disableDefaultUI: false, + streetViewControl: true, + mapTypeId: google.maps.MapTypeId.ROADMAP + }; + + map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); + centerLat = map.getCenter().lat(); + centerLng = map.getCenter().lng(); + + google.maps.event.addListener(map, 'dragend', function () { + centerLat = map.getCenter().lat(); + centerLng = map.getCenter().lng(); + }); + + google.maps.event.addListener(map, 'maptypeid_changed', function () { + mapType = map.getMapTypeId(); + }); + + google.maps.event.addListener(map, 'zoom_changed', function () { + centerLat = map.getCenter().lat(); + centerLng = map.getCenter().lng(); + }); + + panorama = map.getStreetView(); + google.maps.event.addListener(panorama, 'visible_changed', function () { + panoramaVisible = panorama.getVisible(); + }); +} + +function popupClose() { + oEditor.popupWinCancel(); +} + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + var dlg = new Dialog(oEditor), + button = [ + { alt : "", img : 'submit.gif', cmd : doSubmit }, + { alt : "", img : 'cancel.gif', cmd : popupClose } + ], + buttonUrl = oEditor.config.iconPath + 'button/map_address.gif', + search = new Image(); + + dlg.showButton(button); + + search.src = buttonUrl; + search.onclick = function () { + searchAddress(); + }; + search.className = 'button'; + document.getElementById('map_search').appendChild(search); + dlg.setDialogHeight(); +} diff --git a/plugin/editor/cheditor5/popup/js/icon.js b/plugin/editor/cheditor5/popup/js/icon.js new file mode 100644 index 000000000..2ce50fae8 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/icon.js @@ -0,0 +1,54 @@ +// ================================================================ +// CHEditor 5 +// ================================================================ +var oEditor = null; + +function popupClose() { + oEditor.popupWinCancel(); +} + +function insertIcon() { + this.removeAttribute("className"); + this.removeAttribute("class"); + this.style.margin = '1px 4px'; + oEditor.insertHtmlPopup(this.cloneNode(false)); + oEditor.popupWinClose(); +} + +function showContents() { + var block = document.getElementById('iconBlock'), + path = oEditor.config.iconPath + 'em/', + num = 80, i, br, img; + + for (i = 40; i < num; i++) { + if (i > 40 && (i % 10) === 0) { + br = document.createElement('br'); + block.appendChild(br); + } + + img = new Image(); + img.src = path + (i + 1) + ".gif"; + img.style.width = '16px'; + img.style.height = '16px'; + img.style.margin = '5px 4px'; + img.style.verticalAlign = 'middle'; + img.setAttribute('alt', 'Emotion Icon'); + img.setAttribute('border', "0"); + img.className = 'handCursor'; + img.onclick = insertIcon; + block.appendChild(img); + } +} + +function init(dialog) { + var button, dlg; + + oEditor = this; + oEditor.dialog = dialog; + button = [{ alt : "", img : 'cancel.gif', cmd : popupClose }]; + + dlg = new Dialog(oEditor); + showContents(); + dlg.showButton(button); + dlg.setDialogHeight(); +} diff --git a/plugin/editor/cheditor5/popup/js/image.html5.js b/plugin/editor/cheditor5/popup/js/image.html5.js new file mode 100644 index 000000000..b4ed00b0e --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/image.html5.js @@ -0,0 +1,1344 @@ +// ================================================================ +// CHEditor 5 +// ================================================================ +var activeImage = null, + browser = null, + button, + debug = false, + destinationObject = null, + divHeight = [], + divWidth = [], + divXPositions = [], + divYPositions = [], + dragDropDiv, + eventDiff_x = 0, + eventDiff_y = 0, + fileTypeRe = /^image\/(png|jpeg|gif)$/i, + geckoOffsetX_marker = -3, + geckoOffsetY_marker = -1, + imageCompleted = 0, + imageCompletedList = [], + imageListWrapper, + imageResizeInput, + imageResizeWidth = 0, + insertionMarker, + inputFileName = 'file', + modifyImages = [], + moveTimer = -1, + oEditor = null, + offsetX_marker = -3, + offsetY_marker = -3, + readyToMove = false, + selectedFilesNum = 0, + showThumbnailSize = { width: 120, height: 90 }, + tmpLeft = 0, + tmpTop = 0, + uploadImagePath = '', + uploadMaxNumber = 12, + uploadScript; +// deleteScript; + +function createInsertionMaker() { + var wrapper = document.getElementById('insertionMarker'), + topIco = new Image(), + middleIco = new Image(), + bottomIco = new Image(); + + topIco.src = uploadImagePath + '/marker_top.gif'; + topIco.style.width = '6px'; + topIco.style.height = '1px'; + wrapper.appendChild(topIco); + + middleIco.src = uploadImagePath + '/marker_middle.gif'; + middleIco.style.height = '96px'; + middleIco.style.width = '6px'; + wrapper.appendChild(middleIco); + + bottomIco.src = uploadImagePath + '/marker_bottom.gif'; + bottomIco.style.width = '6px'; + bottomIco.style.height = '1px'; + wrapper.appendChild(bottomIco); +} + +function popupClose() { + oEditor.popupWinCancel(); +} + +function showContents() { + var spacer = function (id) { + var clear = document.createElement('div'); + clear.style.height = '0px'; + clear.style.width = '0px'; + clear.className = 'clear'; + clear.id = 'spacer' + id; + return clear; + }, + spacerNo = 1, i, imgBox, theImg, lastSpacer; + + for (i = 0; i < uploadMaxNumber; i++) { + if (i > 0 && ((i % 4) === 0)) { + imageListWrapper.appendChild(spacer(spacerNo++)); + } + + imgBox = document.createElement('div'); + imgBox.id = 'imgBox' + i; + imgBox.className = 'imageBox'; + theImg = document.createElement('div'); + theImg.id = 'img_' + i; + theImg.className = 'imageBox_theImage'; + imgBox.appendChild(theImg); + + imageListWrapper.appendChild(imgBox); + if (i === (uploadMaxNumber - 1)) { + lastSpacer = spacer(spacerNo); + lastSpacer.style.height = "7px"; + imageListWrapper.appendChild(lastSpacer); + } + } + + imageListWrapper.style.padding = '5px 7px 0px 5px'; + document.getElementById('imageInfoBox').style.height = '298px'; + document.getElementById('imageInfoBox').style.width = '130px'; +} + +function setImageCount() { + imageCompleted++; + document.getElementById('imageCount').innerHTML = imageCompleted.toString(); +} + +function getImageCount() { + return imageCompleted; +} + +function allowedMaxImage() { + return uploadMaxNumber - getImageCount(); +} + +function getUploadedCount() { + return imageListWrapper.getElementsByTagName('img').length; +} + +function uploadedImageCount() { + imageCompleted = getUploadedCount(); + document.getElementById('imageCount').innerHTML = imageCompleted.toString(); +} + +function getTopPos(inputObj) { + // ---------------------------------------------------------------------------------- + var returnValue = inputObj.offsetTop; + + inputObj = inputObj.offsetParent; + while (inputObj) { + if (inputObj.tagName.toLowerCase() !== 'html') { + returnValue += (inputObj.offsetTop - inputObj.scrollTop); + if (browser.msie) { + returnValue += inputObj.clientTop; + } + } + inputObj = inputObj.offsetParent; + } + return returnValue; +} + +function getLeftPos(inputObj) { + // ---------------------------------------------------------------------------------- + var returnValue = inputObj.offsetLeft; + + inputObj = inputObj.offsetParent; + while (inputObj) { + if (inputObj.id !== 'imageListWrapper') { + returnValue += inputObj.offsetLeft; + } + inputObj = inputObj.offsetParent; + } + return returnValue; +} + +function getDivCoordinates() { + // ---------------------------------------------------------------------------------- + var imgBox = imageListWrapper.getElementsByTagName('DIV'), + i = 0; + + for (; i < imgBox.length; i++) { + if ((imgBox[i].className === 'imageBox' || imgBox[i].className === 'imageBoxHighlighted') && imgBox[i].id) { + divXPositions[imgBox[i].id] = getLeftPos(imgBox[i]); + divYPositions[imgBox[i].id] = getTopPos(imgBox[i]); + divWidth[imgBox[i].id] = imgBox[i].offsetWidth; + divHeight[imgBox[i].id] = imgBox[i].offsetHeight; + } + } +} + +function reOrder() { + // ---------------------------------------------------------------------------------- + var imgBox = imageListWrapper.getElementsByTagName('div'), + imgNum = 0, i, spacer, breakline = []; + + for (i = 0; i < imgBox.length; i++) { + if (imgBox[i].id.indexOf('imgBox') === -1) { + continue; + } + + imgBox[i].className = 'imageBox'; + imgBox[i].firstChild.className = 'imageBox_theImage'; + + if (imgNum > 0 && (imgNum % 4) === 0) { + breakline.push(imgBox[i].id); + } + + imgNum++; + } + + for (i = 0; i < breakline.length; i++) { + spacer = document.getElementById('spacer' + (i + 1)); + if (i + 1 === breakline.length) { + imageListWrapper.appendChild(spacer); + } else { + imageListWrapper.insertBefore(spacer, document.getElementById(breakline[i])); + } + } +} + +function img_delete_post(el){ + if( el.firstChild.tagName.toLowerCase() === 'img' ){ + var src = el.firstChild.getAttribute('src'), + filesrc = src.replace(/^.*[\\\/]/, ''), + data = "filesrc="+filesrc; + + var xhr = new XMLHttpRequest(); + xhr.open('POST', deleteScript, true); + //Send the proper header information along with the request + xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + + xhr.addEventListener("error", function (evt) { + try { + console.log("파일 전송 중 오류: " + evt.target.error.code); + } catch(ex) { + } + }, false); + + xhr.send(data); + } +} + +function showDelete() { + var self = this, btn; + + if (readyToMove) { + return; + } + + getDivCoordinates(); + self.className = 'imageBox_theImage_over'; + btn = document.getElementById('removeImageButton'); + btn.style.left = (showThumbnailSize.width - parseInt(btn.style.width, 10) - 1) + 'px'; + btn.style.top = '-1px'; + + self.appendChild(btn); + btn.style.display = 'block'; + + btn.onmouseover = function (ev) { + oEditor.stopEvent(ev); + this.style.display = 'block'; + this.className = 'removeButton_over'; + self.className = 'imageBox_theImage_over'; + }; + btn.onmouseout = function () { + this.className = 'removeButton'; + }; + btn.onmousedown = function (ev) { + var images = self.getElementsByTagName('img'), i, moveobj, target; + + for (i = 0; i < images.length; i++) { + img_delete_post(self); + self.removeChild(images[i]); + } + + self.removeChild(self.firstChild); + self.className = 'imageBox_theImage'; + + if (self.parentNode.nextSibling && self.parentNode.nextSibling.id) { + moveobj = self.parentNode.nextSibling; + target = self.parentNode; + + while (moveobj !== null) { + if (moveobj.firstChild && !moveobj.firstChild.firstChild) { + break; + } + if (/^spacer/.test(moveobj.id)) { + moveobj = moveobj.nextSibling; + continue; + } + imageListWrapper.insertBefore(moveobj, target); + moveobj = target.nextSibling; + } + } + + reOrder(); + uploadedImageCount(); + this.style.display = 'none'; + document.body.appendChild(ev.target); + oEditor.removeEvent(self, 'mouseover', showDelete); + }; +} + +function hideDelete() { + // ---------------------------------------------------------------------------------- + document.getElementById('removeImageButton').style.display = 'none'; +} + +function startUpload(list) { + // ---------------------------------------------------------------------------------- + var el = imageListWrapper.getElementsByTagName('div'), i, imgBox, + count = 0, len = list.length; + + for (i = 0; i < el.length; i++) { + imgBox = el[i]; + if (imgBox.className !== 'imageBox_theImage') { + continue; + } + if (count === len) { + break; + } + if (!imgBox.firstChild || imgBox.firstChild.tagName.toLowerCase() !== 'img') { + imgBox.style.backgroundImage = "url('" + uploadImagePath + "/loader.gif')"; + list[count++].boxElem = imgBox; + } + } +} + +function fileFilterError(file) { + alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" + + "gif, png, jpg 사진 파일만 전송할 수 있습니다."); +} + +function imgComplete(img, imgSize, boxId) { + var resizeW, resizeH, M, elem; + img.setAttribute("border", '0'); + + if (imgSize.width > showThumbnailSize.width || imgSize.height > showThumbnailSize.height) { + if (imgSize.width > imgSize.height) { + resizeW = (imgSize.width > showThumbnailSize.width) ? showThumbnailSize.width : imgSize.width; + resizeH = Math.round((imgSize.height * resizeW) / imgSize.width); + } else { + resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height; + resizeW = Math.round((imgSize.width * resizeH) / imgSize.height); + } + + if (resizeH > showThumbnailSize.height) { + resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height; + resizeW = Math.round((imgSize.width * resizeH) / imgSize.height); + } + + } else { + resizeW = imgSize.width; + resizeH = imgSize.height; + } + + img.style.width = resizeW - 2 + 'px'; + img.style.height = resizeH - 2 + 'px'; + img.style.margin = "1px"; + + if (resizeW < showThumbnailSize.width) { + M = showThumbnailSize.width - resizeW; + img.style.marginLeft = Math.round(M / 2) + 'px'; + } + + if (resizeH < showThumbnailSize.height) { + M = showThumbnailSize.height - resizeH; + img.style.marginTop = Math.round(M / 2) + 'px'; + } + + elem = document.getElementById(boxId); + boxId = boxId.replace(/img_/, ''); + + if (boxId % 12 === 0) { + imageListWrapper.scrollTop = elem.offsetTop - 6; + } + + elem.style.backgroundImage = "url('" + uploadImagePath + "/dot.gif')"; + oEditor.addEvent(elem, 'mouseover', showDelete); + elem.onmouseout = function () { + this.className = 'imageBox_theImage'; + hideDelete(); + }; + + setImageCount(); +} + +function showUploadWindow() { + // ---------------------------------------------------------------------------------- + var uploadWindow = document.getElementById("uploadWindow"), + uploadWindowWidth = 700, + winWidth, el, i, j, imgBox, img; + + if (!(oEditor.undefined(window.innerWidth))) { + winWidth = window.innerWidth; + } else if (document.documentElement && + (!(oEditor.undefined(document.documentElement.clientWidth))) && + document.documentElement.clientWidth !== 0) { + winWidth = document.documentElement.clientWidth; + } else if (document.body && (!(oEditor.undefined(document.body.clientWidth)))) { + winWidth = document.body.clientWidth; + } else { + alert('현재 브라우저를 지원하지 않습니다.'); + return; + } + + uploadWindow.style.left = winWidth / 2 - (uploadWindowWidth / 2) + 'px'; + uploadWindow.style.display = "block"; + uploadWindow.style.width = uploadWindowWidth + 'px'; + + if (modifyImages.length > 0) { + el = imageListWrapper.getElementsByTagName('div'); + for (i = 0; i < modifyImages.length; i++) { + if (i > 7) { + break; + } + + for (j = 0; j < el.length; j++) { + imgBox = el[j]; + if (imgBox.className !== 'imageBox_theImage') { + continue; + } + + if (imgBox.firstChild && (imgBox.firstChild.src === modifyImages[i])) { + break; + } + + if (imgBox.firstChild === null) { + img = new Image(); + img.src = modifyImages[i]; + img.border = 0; + img.alt = ''; + img.style.width = '120px'; + img.style.height = '90px'; + imgBox.appendChild(img); + break; + } + } + } + } +} + +function removeImages() { + var images = [], i, j, theImage, img, remove; + document.body.appendChild(document.getElementById('removeImageButton')); + + for (i = 0; i < uploadMaxNumber; i++) { + theImage = document.getElementById('img_' + i); + if (theImage.hasChildNodes() && theImage.firstChild.tagName.toLowerCase() === 'img') { + images.push(theImage); + } + } + + for (i = 0; i < images.length; i++) { + img = images[i]; + if (img.firstChild !== null) { + oEditor.removeEvent(img, 'mouseover', showDelete); + remove = img.getElementsByTagName('img'); + + for (j = 0; j < remove.length; j++) { + img_delete_post(img); + img.removeChild(remove[j]); + } + + img.parentNode.className = 'imageBox'; + oEditor.removeEvent(img, 'mouseover', showDelete); + } + } + uploadedImageCount(); + imageCompletedList = []; +} + +function removeImage() { + // ---------------------------------------------------------------------------------- + var i, theImage, found = false; + + for (i = 0; i < uploadMaxNumber; i++) { + theImage = document.getElementById('img_' + i); + if (theImage.hasChildNodes() && theImage.firstChild.tagName.toLowerCase() === 'img') { + found = true; + break; + } + } + + if (found) { + if (!confirm('추가하신 사진이 있습니다. 사진 넣기를 취소하시겠습니까?')) { + return false; + } + removeImages(); + } + + return true; +} + +function closeWindow() { + // ---------------------------------------------------------------------------------- + if (removeImage()) { + popupClose(); + } +} + +function cancelEvent() { + // ---------------------------------------------------------------------------------- + return false; +} + +function startMoveTimer() { + // ---------------------------------------------------------------------------------- + var subElements, newDiv; + + if (moveTimer >= 0 && moveTimer < 10) { + moveTimer++; + setTimeout('startMoveTimer()', 8); + } + + if (moveTimer === 5) { + getDivCoordinates(); + subElements = dragDropDiv.getElementsByTagName('div'); + if (subElements.length > 0) { + dragDropDiv.removeChild(subElements[0]); + } + + dragDropDiv.style.display = 'block'; + newDiv = activeImage.cloneNode(true); + newDiv.className = 'imageBox'; + newDiv.style.opacity = 0.5; + + newDiv.id = ''; + newDiv.style.padding = '2px'; + dragDropDiv.appendChild(newDiv); + + dragDropDiv.style.top = tmpTop + 'px'; + dragDropDiv.style.left = tmpLeft + 'px'; + } + + return false; +} + +function getMouseButtn(e) { + var code; + e = e || window.event; + code = e.button; + + if (code) { + if (browser.msie && browser.version < 9) { + code = code === 1 ? 0 : (code === 4 ? 1 : code); + } + } + + return code; +} + +function selectImage(e) { + // ---------------------------------------------------------------------------------- + var el = this.parentNode.firstChild.firstChild, obj; + + if (!el) { + return; + } + + e = e || window.event; + if (getMouseButtn(e) === 2) { + return; + } + + obj = this.parentNode; + hideDelete(); + + obj.className = 'imageBoxHighlighted'; + activeImage = obj; + readyToMove = true; + moveTimer = 0; + + tmpLeft = e.clientX + Math.max(document.body.scrollLeft, document.documentElement.scrollLeft); + tmpTop = e.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop); + + startMoveTimer(); + return false; +} + +function dragDropEnd() { + // ---------------------------------------------------------------------------------- + var parentObj, chkObj, turn = false; + + readyToMove = false; + moveTimer = -1; + dragDropDiv.style.display = 'none'; + insertionMarker.style.display = 'none'; + + if (!activeImage) { + return; + } + + if (destinationObject && destinationObject !== activeImage) { + parentObj = destinationObject.parentNode; + chkObj = destinationObject.previousSibling; + turn = false; + + if (chkObj === null) { + chkObj = imageListWrapper.firstChild; + turn = true; + } + + if (chkObj.id.indexOf('spacer') !== -1) { + chkObj = chkObj.previousSibling; + } + + if (chkObj.firstChild.firstChild === null) { + reOrder(); + return; + } + + if (chkObj && chkObj.id !== null) { + while (chkObj) { + if (chkObj.firstChild.firstChild !== null) { + break; + } + chkObj = chkObj.previousSibling; + } + destinationObject = turn ? chkObj : chkObj.nextSibling; + } + + parentObj.insertBefore(activeImage, destinationObject); + reOrder(); + + activeImage = null; + destinationObject = null; + getDivCoordinates(); + + return false; + } + + activeImage.className = "imageBox"; + return true; +} + +function dragDropMove(e) { + // ---------------------------------------------------------------------------------- + var elementFound = false, prop, offsetX, offsetY, leftPos, topPos; + + if (moveTimer === -1 || !readyToMove) { + return; + } + + e = e || window.event; + + leftPos = e.clientX + document.documentElement.scrollLeft - eventDiff_x; + topPos = e.clientY + document.documentElement.scrollTop - eventDiff_y; + + dragDropDiv.style.top = topPos + 'px'; + dragDropDiv.style.left = leftPos + 'px'; + + leftPos = leftPos + eventDiff_x; + topPos = topPos + eventDiff_y; + + if (getMouseButtn(e) !== 0) { + dragDropEnd(); + } + + for (prop in divXPositions) { + if (!divXPositions.hasOwnProperty(prop) || divXPositions[prop].className === 'clear') { + continue; + } + + if (divXPositions[prop] < leftPos && + (divXPositions[prop] + divWidth[prop] * 0.7) > leftPos && + divYPositions[prop] < topPos && + (divYPositions[prop] + divWidth[prop]) > topPos) { + if (browser.msie) { + offsetX = offsetX_marker; + offsetY = offsetY_marker; + } else { + offsetX = geckoOffsetX_marker; + offsetY = geckoOffsetY_marker; + } + + insertionMarker.style.top = divYPositions[prop] + offsetY + 'px'; + insertionMarker.style.left = divXPositions[prop] + offsetX + 'px'; + insertionMarker.style.display = 'block'; + destinationObject = document.getElementById(prop); + elementFound = true; + break; + } + } + + if (!elementFound) { + insertionMarker.style.display = 'none'; + destinationObject = false; + } + + return false; +} + +function initGallery() { + // ---------------------------------------------------------------------------------- + var imgBox = imageListWrapper.getElementsByTagName('div'), + i; + + for (i = 0; i < imgBox.length; i++) { + if (imgBox[i].className === 'imageBox_theImage') { + imgBox[i].onmousedown = selectImage; + } + } + + document.body.onselectstart = cancelEvent; + document.body.ondragstart = cancelEvent; + document.body.onmouseup = dragDropEnd; + document.body.onmousemove = dragDropMove; + + dragDropDiv = document.getElementById('dragDropContent'); + insertionMarker = document.getElementById('insertionMarker'); + getDivCoordinates(); +} + +function doSubmit() { + // ---------------------------------------------------------------------------------- + var el = imageListWrapper.getElementsByTagName('div'), + imageArray = [], + num = 0, + elem = document.getElementById('id_alignment').elements, + imgParagraph = false, + useSpacer = false, + imgAlign = 'top', i, imgBox, input; + + for (i = 0; i < elem.length; i++) { + input = elem[i]; + switch (input.name) { + case "alignment" : + if (input.checked) { + imgAlign = input.value; + } + break; + case "para" : + imgParagraph = input.checked; + break; + case "use_spacer" : + useSpacer = input.checked; + break; + } + } + + for (i = 0; i < el.length; i++) { + imgBox = el[i]; + if (imgBox.className !== "imageBox_theImage") { + continue; + } + + if (imgBox.firstChild !== null) { + imageArray[num] = imageCompletedList[imgBox.id]; + + if (imgAlign === "break") { + imageArray[num].alt = "break"; + } else { + imageArray[num].alt = ''; + imageArray[num].align = imgAlign; + } + + num++; + } + } + + if (imageArray.length > 0) { + oEditor.doInsertImage(imageArray, imgParagraph, useSpacer); + } + oEditor.popupWinClose(); +} + +function selectedFiles(evt) { + var upload = new DoUpload(), + files = evt.target.files || []; + + oEditor.stopEvent(evt); + if (files) { + upload.select(files); + } +} + +function DoUpload() { + this.list = []; + this.reader = new FileReader(); + this.URL = window.URL || window.webkitURL; + + this.reader.onprogress = null; + this.reader.onloadstart = null; + this.reader.onabort = null; + this.reader.onerror = null; + + this.MyBlob = (function () { + var key, blob, self = this; + function MYBLOB(blob) { + var url = null; + this.blob = blob; + blob = null; + + this.getURL = function () { + if (url) { + return url; + } + url = self.URL.createObjectURL(this.blob); + return url; + }; + this.dispose = function () { + if (url) { + url = self.URL.revokeObjectURL(url); + } + if (typeof this.blob.msClose !== 'undefined') { + this.blob.msClose(); + } + this.blob = null; + if (debug) { + console.log("Blob Data Clear"); + } + }; + } + + blob = new Blob(); + for (key in blob) { + if (blob.hasOwnProperty(key)) { + (function (key) { + Object.defineProperty(MYBLOB.prototype, + key, + { + enumerable: true, + configurable: true, + get: function () { + return this.blob[key]; + } + } + ); + }(key)); + } + } + + key = undefined; + return MYBLOB; + }()); + + return this; +} + +DoUpload.prototype = { + select: function (files) { + var self = this, + num = files.length, + i = 0, + file = null; + + if (num > allowedMaxImage()) { + num = allowedMaxImage(); + } + + for (; i < num; i++) { + file = files[i]; + + if (!file.type.match(fileTypeRe)) { + fileFilterError(file.name); + continue; + } + this.list.push(file); + } + + if (this.list.length < 1) { + return; + } + + this.reader.addEventListener("error", function (evt) { + self.onReadDataErrorHandler(evt); + }, false); + + this.reader.onloadend = function (evt) { + self.dataLoadHandler(evt); + }; + + setResizeWidth(); + startUpload(this.list); + + this.load(); + }, + + getDateTime : function () { + var date = new Date(), + year = date.getFullYear(), + month = date.getMonth() + 1, + day = date.getDate(), + hours = date.getHours(), + minutes = date.getMinutes(), + seconds = date.getSeconds(); + + return String(10000 * year + 100 * month + day + + ('0' + hours).slice(-2) + ('0' + minutes).slice(-2) + ('0' + seconds).slice(-2)); + }, + + makeFilename : function (type) { + var chars = "abcdefghiklmnopqrstuvwxyz", + len = 8, clen = chars.length, rData = '', i, rnum; + + for (i = 0; i < len; i++) { + rnum = Math.floor(Math.random() * clen); + rData += chars.substring(rnum, rnum + 1); + } + + if (type !== '') { + rData += type.toLowerCase(); + } + + return this.getDateTime() + '_' + rData; + }, + + getOrientation : function (data) { + var view = new DataView(data), + length = view.byteLength, + offset = 2, + marker, little, tags, i; + + if (view.getUint16(0, false) !== 0xffd8) { + return -2; + } + + while (offset < length) { + marker = view.getUint16(offset, false); + offset += 2; + + if (marker === 0xffe1) { + if (view.getUint32(offset += 2, false) !== 0x45786966) { + return -1; + } + + little = view.getUint16(offset += 6, false) === 0x4949; + offset += view.getUint32(offset + 4, little); + tags = view.getUint16(offset, little); + offset += 2; + + for (i = 0; i < tags; i++) { + if (view.getUint16(offset + (i * 12), little) === 0x0112) { + return view.getUint16(offset + (i * 12) + 8, little); + } + } + } else if ((marker & 0xff00) !== 0xff00) { + break; + } else { + offset += view.getUint16(offset, false); + } + } + + return -1; + }, + + NewBlob : function (data, datatype) { + var blob = null, blobb; + try { + blob = new Blob([data], {type: datatype}); + } catch (e) { + window.BlobBuilder = window.BlobBuilder + || window.WebKitBlobBuilder + || window.MozBlobBuilder + || window.MSBlobBuilder; + + if (e.name === 'TypeError' && window.BlobBuilder) { + blobb = new BlobBuilder(); + blobb.append(data); + blob = blobb.getBlob(datatype); + console.log("TypeError"); + } else if (e.name === "InvalidStateError") { + console.log("InvalidStateError"); + } else { + console.log("Error"); + } + } + return blob; + }, + + imageResize : function (image, filetype, resizeWidth, orientation, addWaterMark) { + var canvas = document.createElement("canvas"), + width = image.width, + height = image.height, + bitmapData, ctx, rotateImg, rotateW, rotateH, angle, step, offcanvas, offctx, dHeight, dWidth; + + + + // 카메라를 돌려서 찍은 경우, 높이를 가로 사이즈로 정한 다음 리사이징 처리. 이 경우, 파일 크기와 처리 속도가 + // 증가한다. + + // if (orientation === 6 || orientation === 8) { + // var ratio = resizeWidth / height; + // dHeight = height * ratio; + // dWidth = width * ratio; + // } else { + dHeight = Math.ceil(resizeWidth / width * height); + dWidth = resizeWidth; + // } + + canvas.width = dWidth; + canvas.height = dHeight; + ctx = canvas.getContext("2d"); + + step = Math.ceil(Math.log(image.width / resizeWidth) / Math.log(2)); + + if (step > 1) { + offcanvas = document.createElement('canvas'); + offctx = offcanvas.getContext('2d'); + offcanvas.width = width / 2; + offcanvas.height = height / 2; + + offctx.drawImage(image, 0, 0, offcanvas.width, offcanvas.height); + offctx.drawImage(offcanvas, 0, 0, offcanvas.width / 2, offcanvas.height / 2); + ctx.drawImage(offcanvas, 0, 0, offcanvas.width / 2, offcanvas.height / 2, 0, 0, dWidth, dHeight); + } else { + ctx.drawImage(image, 0, 0, dWidth, dHeight); + } + + if (orientation === 6 || orientation === 8 || orientation === 3) { + angle = orientation === 6 ? Math.PI / 2 : (orientation === 8 ? -Math.PI / 2 : 180 * Math.PI / 2); + bitmapData = canvas.toDataURL(filetype, oEditor.config.imgJpegQuality); + + rotateImg = new Image(); + rotateImg.src = bitmapData; + rotateW = orientation !== 3 ? dHeight : dWidth; + rotateH = orientation !== 3 ? dWidth : dHeight; + + canvas.width = rotateW; + canvas.height = rotateH; + + ctx.clearRect(0, 0, canvas.width, canvas.height); + ctx.save(); + ctx.translate(canvas.width / 2, canvas.height / 2); + ctx.rotate(angle); + ctx.drawImage(rotateImg, -dWidth / 2, -dHeight / 2); + ctx.restore(); + } + + if (this.reader.watermark && addWaterMark) { + ctx.globalAlpha = oEditor.config.imgWaterMarkAlpha; + ctx.drawImage(this.reader.watermark, + canvas.width - this.reader.watermark.width, canvas.height - this.reader.watermark.height); + } + return canvas.toDataURL(filetype, oEditor.config.imgJpegQuality); + }, + + canvasToBlob : function (bitmapData, mimetype) { + var raw = atob(bitmapData.split(',')[1]), + intArray = [], + len = bitmapData.length, + i = 0; + + for (; i < len; i++) { + intArray.push(raw.charCodeAt(i)); + } + return new Blob([new Uint8Array(intArray)], {type: mimetype}); + }, + + makeThumbnail : function (image, type, name, orientation) { + var canvas = document.createElement("canvas"), + width, + xhr = new XMLHttpRequest(), + data = new FormData(), + bitmapData, file; + + xhr.open('POST', uploadScript, true); + width = oEditor.config.thumbnailWidth; + + bitmapData = this.imageResize(image, type, width, orientation); + file = this.canvasToBlob(bitmapData, type); + + data.append(inputFileName, file, 'thumb_' + name); // RFC Level 2 + + xhr.addEventListener("loadend", function () { + + }, false); + + xhr.addEventListener("error", function () { + alert("Thumbnail 파일 전송 중 오류:"); + }, false); + + xhr.send(data); + }, + + dataLoadHandler: function (evt) { + var self = this, + filename = evt.target.file.name, + filetype = evt.target.file.type, + file = evt.target.file, + blob, image, orientation = 1; + + if (evt.target.readyState === FileReader.DONE) { + blob = new self.MyBlob(self.NewBlob(evt.target.result, filetype)); + orientation = self.getOrientation(evt.target.result.slice(0, 64 * 1024)); + image = new Image(); + + image.onload = function () { + var bitmapData = null, + canvas = document.createElement("canvas"), + data = new FormData(), + fileFormat, + imgBox = file.boxElem, + imgInfo = {}, + randomName, + xhr = new XMLHttpRequest(); + + xhr.open('POST', uploadScript, true); + + if (imageResizeWidth > 0 && this.width > imageResizeWidth) { + bitmapData = self.imageResize(this, filetype, imageResizeWidth, orientation, true); + file = self.canvasToBlob(bitmapData, filetype); + } + + fileFormat = filename.substring(filename.lastIndexOf('.')); + randomName = self.makeFilename(fileFormat); + + data.append('origname', filename); + data.append(inputFileName, file, randomName); // RFC Level 2 + + if (debug) { + console.log('Successed: ' + filename); + } + + xhr.addEventListener("error", function (evt) { + alert("파일 전송 중 오류: " + evt.target.error.code); + }, false); + + xhr.addEventListener("loadend", function onLoadendImageHandler(xhrevt) { + if (xhrevt.target.readyState === xhrevt.target.DONE) { + if (oEditor.config.makeThumbnail) { + self.makeThumbnail(image, filetype, randomName, orientation, false); + } + } + image.src = ''; + image = null; + }, false); + + xhr.addEventListener("load", function (xhrevt) { + var jsonText, jsonData, img, onLoadHandler; + data = null; + + if (xhrevt.target.status === 200) { + jsonText = decodeURI(oEditor.trimSpace(this.responseText)); + jsonText = jsonText.replace(/\+/g, ' ').replace(/\\/g, '\\\\'); + jsonData = JSON.parse(jsonText); + + onLoadHandler = function () { + imgInfo = { + fileName: jsonData.fileName, + filePath: jsonData.filePath, + fileSize: jsonData.fileSize, + fileUrl: jsonData.fileUrl, + origName: filename, + origSize: file.size, + height: img.height, + width: img.width + }; + + imageCompletedList[imgBox.id] = imgInfo; + imgComplete(this, imgInfo, imgBox.id); + imgBox.appendChild(img); + + if (debug) { + console.log('Image URL: ' + img.src + ', size:' + file.size); + } + + setTimeout(function () { + self.load(); + }, 100); + + if (debug) { + console.log('Uploaded'); + } + }; + img = new Image(); + img.onload = onLoadHandler; + img.src = decodeURIComponent(jsonData.fileUrl); + } else { + alert("HTTP 오류: " + xhr.status); + } + }, false); + + blob.dispose(); + blob = null; + xhr.send(data); + }; + + image.src = blob.getURL(); + } + }, + + onReadDataErrorHandler: function (evt) { + var status = ''; + switch (evt.target.error.code) { + case evt.target.error.NOT_FOUND_ERR: + status = "파일을 찾을 수 없습니다."; + break; + case evt.target.error.NOT_READABLE_ERR: + status = "파일을 읽을 수 없습니다."; + break; + case evt.target.error.ABORT_ERR: + status = "파일 읽기가 중지되었습니다."; + break; + case evt.target.error.SECURITY_ERR: + status = "파일이 잠겨 있습니다."; + break; + case evt.target.error.ENCODING_ERR: + status = "data:// URL의 파일 인코딩 길이가 너무 깁니다."; + break; + default: + status = "파일 읽기 오류: " + evt.target.error.code; + } + this.removeEventListener('error', this.onReadDataErrorHandler); + alert("'" + evt.target.filename + "' " + status); + }, + + load: function () { + var file = this.list.shift(), self = this, watermark = null; + + if (file) { + if (debug) { + console.log('File ' + this.index + ', Name: ' + file.name + ', Size: ' + file.size); + } + this.reader.file = file; + this.reader.watermark = null; + + if (oEditor.config.imgWaterMarkUrl !== '' && oEditor.config.imgWaterMarkUrl !== null) { + watermark = new Image(); + watermark.onerror = function () { + alert('워터마크 이미지를 읽을 수 없습니다. (' + oEditor.config.imgWaterMarkUrl + ')'); + self.reader.readAsArrayBuffer(file); + }; + watermark.onload = function () { + self.reader.watermark = this; + self.reader.readAsArrayBuffer(file); + }; + watermark.src = oEditor.config.imgWaterMarkUrl; + } else { + this.reader.readAsArrayBuffer(file); + } + } else { + this.clear(); + } + }, + + clear: function () { + var inputFile = document.getElementById('inputImageUpload'), + theForm = document.createElement('form'), + fileSelectButton = document.getElementById('fileSelectButton'); + + this.list = []; + + theForm.appendChild(inputFile); + theForm.reset(); + fileSelectButton.parentNode.insertBefore(inputFile, fileSelectButton); + fileSelectButton.style.marginLeft = '-1px'; + } +}; + +function fileSelectDrop(evt) { + var files, + upload = new DoUpload(); + + oEditor.stopEvent(evt); + this.className = "imageListWrapperHtml5"; + + files = evt.dataTransfer.files; + upload.select(files); +} + +function dragOver(ev) { + oEditor.stopEvent(ev); + this.className = "dragOver"; +} + +function dragOut(ev) { + oEditor.stopEvent(ev); + this.className = "imageListWrapperHtml5"; +} + +function setResizeWidth() { + var value = oEditor.trimSpace(imageResizeInput.value); + if (value) { + value = Math.ceil(parseInt(value, 10)); + if (!isNaN(value) && value < oEditor.config.imgMaxWidth) { + imageResizeWidth = value; + } else { + imageResizeInput.value = ''; + imageResizeInput.setAttribute('placeholder', oEditor.config.imgMaxWidth.toString()); + } + } +} + +function init(dialog) { + var dlg, i, elem, input, select, value, name; + + oEditor = this; + oEditor.dialog = dialog; + dlg = new Dialog(oEditor); + browser = oEditor.getBrowser(); + + uploadImagePath = oEditor.config.iconPath + 'imageUpload'; + uploadMaxNumber = oEditor.config.imgUploadNumber; + uploadScript = oEditor.config.editorPath + 'imageUpload/upload.php'; + deleteScript = oEditor.config.editorPath + 'imageUpload/delete.php'; + imageListWrapper = document.getElementById("imageListWrapper"); + + imageResizeWidth = oEditor.config.imgMaxWidth; + imageResizeInput = document.getElementById('idResizeWidth'); + select = document.getElementById('idResizeSelectBox'); + + if (imageResizeWidth > 0) { + for (i = 0; i < oEditor.config.imgResizeValue.length; i++) { + name = value = oEditor.config.imgResizeValue[i]; + if (value > oEditor.config.imgMaxWidth) { + continue; + } + if (value === -1) { + name = '<입력>'; + } + select.options[select.options.length] = new Option(name, value, false, value === oEditor.config.imgResizeSelected); + } + select.onchange = function () { + if (this.value < 0) { + document.getElementById('idUserInputWrapper').style.display = ''; + } else { + document.getElementById('idUserInputWrapper').style.display = 'none'; + imageResizeWidth = this.value; + } + }; + imageResizeInput.setAttribute('placeholder', imageResizeWidth.toString()); + imageResizeWidth = select.value; + } else { + select.options[0] = new Option('원본', 0); + select.setAttribute('disabled', 'disabled'); + imageResizeWidth = 0; + } + + document.getElementById("maxImageNum").appendChild(document.createTextNode(uploadMaxNumber.toString())); + + button = [ + { alt: "", img: 'submit.gif', cmd: doSubmit, hspace: 2 }, + { alt: "", img: 'cancel.gif', cmd: closeWindow, hspace: 2 } + ]; + + dlg.setDialogHeight(370); + dlg.showButton(button); + showContents(); + initGallery(); + showUploadWindow(); + createInsertionMaker(); + selectedFilesNum = 0; + + oEditor.addEvent(imageListWrapper, 'dragover', dragOver); + oEditor.addEvent(imageListWrapper, 'dragleave', dragOut); + oEditor.addEvent(imageListWrapper, 'drop', fileSelectDrop); + + elem = document.getElementById('id_alignment').elements; + + for (i = 0; i < elem.length; i++) { + if (elem[i].name === "alignment" && elem[i].value === oEditor.config.imgDefaultAlign) { + elem[i].checked = "checked"; + break; + } + } + + if (browser.mobile) { + input = document.getElementById('inputImageUpload'); + input.setAttribute('capture', 'gallery'); + } +} diff --git a/plugin/editor/cheditor5/popup/js/image.js b/plugin/editor/cheditor5/popup/js/image.js new file mode 100644 index 000000000..7fc7c642f --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/image.js @@ -0,0 +1,890 @@ +// ================================================================ +// CHEditor 5 +// ================================================================ +var uploadScript = '', + deleteScript = '', + AppID = 'chximage', + AppSRC = '', + activeImage = null, + destinationObject = null, + readyToMove = false, + moveTimer = -1, + dragDropDiv, + insertionMarker, + offsetX_marker = -4, + offsetY_marker = -3, + geckoOffsetX_marker = 4, + geckoOffsetY_marker = -2, + divXPositions = [], + divYPositions = [], + divWidth = [], + divHeight = [], + tmpLeft = 0, + tmpTop = 0, + eventDiff_x = 0, + eventDiff_y = 0, + modifyImages = [], + uploadMaxNumber = 12, + imageCompleted = 0, + imageCompletedList = [], + uploadButton = '', + uploadImagePath = '', + showThumbnailSize = { width: 120, height: 90 }, + oEditor = null, + button, + imageResizeWidth = 0, + makeThumbnail = true, + makeThumbnailWidth = 120, + makeThumbnailHeight = 90, + sortOnName = false, + browser = null; + +function createInsertionMaker() { + var wrapper = document.getElementById('insertionMarker'), + topIco = new Image(), + middleIco = new Image(), + bottomIco = new Image(); + + topIco.src = uploadImagePath + '/marker_top.gif'; + topIco.style.width = '6px'; + topIco.style.height = '1px'; + wrapper.appendChild(topIco); + + middleIco.src = uploadImagePath + '/marker_middle.gif'; + middleIco.style.height = '96px'; + middleIco.style.width = '6px'; + wrapper.appendChild(middleIco); + + bottomIco.src = uploadImagePath + '/marker_bottom.gif'; + bottomIco.style.width = '6px'; + bottomIco.style.height = '1px'; + wrapper.appendChild(bottomIco); +} + +function popupClose() { + // ---------------------------------------------------------------------------------- + swfobject.removeSWF(AppID); + oEditor.popupWinCancel(); +} + +function showContents() { + var spacer = function (id) { + var clear = document.createElement('span'); + clear.style.height = '0'; + clear.style.width = '0'; + clear.className = 'clear'; + clear.id = 'spacer' + id; + return clear; + }, spacerNo = 1, i, imgBox, theImg, lastSpacer; + + for (i = 0; i < uploadMaxNumber; i++) { + if (i > 0 && ((i % 4) === 0)) { + document.getElementById('imageListWrapper').appendChild(spacer(spacerNo++)); + } + + imgBox = document.createElement('div'); + imgBox.id = 'imgBox' + i; + imgBox.className = 'imageBox'; + theImg = document.createElement('div'); + theImg.id = 'img_' + i; + theImg.className = 'imageBox_theImage'; + imgBox.appendChild(theImg); + + document.getElementById('imageListWrapper').appendChild(imgBox); + if (i === (uploadMaxNumber - 1)) { + lastSpacer = spacer(spacerNo); + lastSpacer.style.height = "7px"; + document.getElementById('imageListWrapper').appendChild(lastSpacer); + } + } + + if (browser.msie && browser.ver < 7) { + document.getElementById('imageListWrapper').style.padding = '5px 2px 5px 2px'; + document.getElementById('imageInfoBox').style.height = '302px'; + document.getElementById('imageInfoBox').style.width = '124px'; + } else { + document.getElementById('imageListWrapper').style.padding = '5px 7px 0 5px'; + document.getElementById('imageInfoBox').style.height = '298px'; + document.getElementById('imageInfoBox').style.width = '130px'; + } +} + +function openFiles() { + // ---------------------------------------------------------------------------------- + var elem = browser.msie ? document.getElementById(AppID) : document[AppID]; + elem.AddFiles(); +} + +function setImageCount() { + imageCompleted++; + document.getElementById('imageCount').innerHTML = imageCompleted; +} + +function getImageCount() { + return imageCompleted; +} + +function allowedMaxImage() { + return uploadMaxNumber - getImageCount(); +} + +function getUploadedCount() { + return document.getElementById('imageListWrapper').getElementsByTagName('img').length; +} + +function uploadedImageCount() { + imageCompleted = getUploadedCount(); + document.getElementById('imageCount').innerHTML = imageCompleted; +} + +function uploadError(msg) { + alert(msg); +} + +function imageDelete(filePath) { + var chximage = document.getElementById(AppID); + chximage.ImageDelete(encodeURI(filePath)); +} + +function getTopPos(inputObj) { + // ---------------------------------------------------------------------------------- + var returnValue = inputObj.offsetTop; + + inputObj = inputObj.offsetParent; + while (inputObj) { + if (inputObj.tagName.toLowerCase() !== 'html') { + returnValue += (inputObj.offsetTop - inputObj.scrollTop); + if (browser.msie) { + returnValue += inputObj.clientTop; + } + } + inputObj = inputObj.offsetParent; + } + return returnValue; +} + +function getLeftPos(inputObj) { + // ---------------------------------------------------------------------------------- + var returnValue = inputObj.offsetLeft; + + inputObj = inputObj.offsetParent; + while (inputObj) { + if (inputObj.id !== 'imageListWrapper') { + returnValue += inputObj.offsetLeft; + if (browser.msie) { + returnValue += inputObj.clientLeft; + } + } + inputObj = inputObj.offsetParent; + } + return returnValue; +} + +function getDivCoordinates() { + // ---------------------------------------------------------------------------------- + var imgBox = document.getElementById('imageListWrapper').getElementsByTagName('DIV'), + i = 0; + + for (; i < imgBox.length; i++) { + if ((imgBox[i].className === 'imageBox' || imgBox[i].className === 'imageBoxHighlighted') && imgBox[i].id) { + divXPositions[imgBox[i].id] = getLeftPos(imgBox[i]); + divYPositions[imgBox[i].id] = getTopPos(imgBox[i]); + divWidth[imgBox[i].id] = imgBox[i].offsetWidth; + divHeight[imgBox[i].id] = imgBox[i].offsetHeight; + } + } +} + +function reOrder() { + // ---------------------------------------------------------------------------------- + var wrapper = document.getElementById('imageListWrapper'), + imgBox = wrapper.getElementsByTagName('div'), + imgNum = 0, i, spacer, breakline = []; + + for (i = 0; i < imgBox.length; i++) { + if (imgBox[i].id.indexOf('imgBox') === -1) { + continue; + } + + imgBox[i].className = 'imageBox'; + imgBox[i].firstChild.className = 'imageBox_theImage'; + + if (imgNum > 0 && (imgNum % 4) === 0) { + breakline.push(imgBox[i].id); + } + + imgNum++; + } + + for (i = 0; i < breakline.length; i++) { + spacer = document.getElementById('spacer' + (i + 1)); + if (i + 1 === breakline.length) { + wrapper.appendChild(spacer); + } else { + wrapper.insertBefore(spacer, document.getElementById(breakline[i])); + } + } +} + +function setImageInfo(id) { + var elem; + if (!id) { + document.getElementById('selectedImageWidth').innerHTML = '0'; + document.getElementById('selectedImageHeight').innerHTML = '0'; + document.getElementById('selectedImageName').innerHTML = "없음"; + } else { + elem = imageCompletedList[id]; + document.getElementById('selectedImageWidth').innerHTML = elem.width; + document.getElementById('selectedImageHeight').innerHTML = elem.height; + document.getElementById('selectedImageName').innerHTML = elem.origName; + } +} + +function showDelete() { + // ---------------------------------------------------------------------------------- + var self = this, btn; + + if (readyToMove) { + return; + } + + getDivCoordinates(); + self.className = 'imageBox_theImage_over'; + btn = document.getElementById('removeImageButton'); + btn.style.left = (showThumbnailSize.width - parseInt(btn.style.width, 10) - 1) + 'px'; + btn.style.top = '-1px'; + + self.appendChild(btn); + btn.style.display = 'block'; + + btn.onmouseover = function (ev) { + ev = ev || window.event; + ev.cancelBubble = true; + this.style.display = 'block'; + setImageInfo(self.id); + this.className = 'removeButton_over'; + self.className = 'imageBox_theImage_over'; + }; + btn.onmouseout = function () { + this.className = 'removeButton'; + }; + btn.onmousedown = function () { + var images = self.getElementsByTagName('img'), i, wrapper, moveobj, target; + + for (i = 0; i < images.length; i++) { + self.removeChild(images[i]); + } + + self.removeChild(self.firstChild); + self.className = 'imageBox_theImage'; + + if (self.parentNode.nextSibling && self.parentNode.nextSibling.id) { + wrapper = document.getElementById('imageListWrapper'); + moveobj = self.parentNode.nextSibling; + target = self.parentNode; + + while (moveobj !== null) { + if (moveobj.firstChild && !moveobj.firstChild.firstChild) { + break; + } + if (/^spacer/.test(moveobj.id)) { + moveobj = moveobj.nextSibling; + continue; + } + wrapper.insertBefore(moveobj, target); + moveobj = target.nextSibling; + } + } + + reOrder(); + uploadedImageCount(); + setImageInfo(0); + this.style.display = 'none'; + document.body.appendChild(this); + self.onmouseout = self.onmouseover = null; + }; + + setImageInfo(self.id); +} + +function hideDelete() { + // ---------------------------------------------------------------------------------- + document.getElementById('removeImageButton').style.display = 'none'; +} + +function startUpload(count) { + // ---------------------------------------------------------------------------------- + var el = document.getElementById('imageListWrapper').getElementsByTagName('div'), i, imgBox; + + for (i = 0; i < el.length; i++) { + imgBox = el[i]; + if (imgBox.className !== 'imageBox_theImage') { + continue; + } + + if (count === 0) { + break; + } + + if (!imgBox.firstChild || imgBox.firstChild.tagName.toLowerCase() !== 'img') { + imgBox.style.backgroundImage = "url('" + uploadImagePath + "/loader.gif')"; + count--; + } + } +} + +function fileFilterError(file) { + alert("선택하신 '" + file + "' 파일은 전송할 수 없습니다.\n" + + "gif, png, jpg, 그림 파일만 전송할 수 있습니다."); +} + +function imgComplete(img, imgSize, boxId) { + var resizeW, resizeH, M, elem; + img.setAttribute("border", '0'); + + if (imgSize.width > showThumbnailSize.width || imgSize.height > showThumbnailSize.height) { + if (imgSize.width > imgSize.height) { + resizeW = (imgSize.width > showThumbnailSize.width) ? showThumbnailSize.width : imgSize.width; + resizeH = Math.round((imgSize.height * resizeW) / imgSize.width); + } else { + resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height; + resizeW = Math.round((imgSize.width * resizeH) / imgSize.height); + } + + if (resizeH > showThumbnailSize.height) { + resizeH = (imgSize.height > showThumbnailSize.height) ? showThumbnailSize.height : imgSize.height; + resizeW = Math.round((imgSize.width * resizeH) / imgSize.height); + } + + } else { + resizeW = imgSize.width; + resizeH = imgSize.height; + } + + img.style.width = resizeW - 2 + 'px'; + img.style.height = resizeH - 2 + 'px'; + img.style.margin = "1px"; + + if (resizeW < showThumbnailSize.width) { + M = showThumbnailSize.width - resizeW; + img.style.marginLeft = Math.round(M / 2) + 'px'; + } + + if (resizeH < showThumbnailSize.height) { + M = showThumbnailSize.height - resizeH; + img.style.marginTop = Math.round(M / 2) + 'px'; + } + + elem = document.getElementById(boxId); + elem.style.backgroundImage = "url('" + uploadImagePath + "/dot.gif')"; + elem.onmouseover = showDelete; + elem.onmouseout = function() { + this.className = 'imageBox_theImage'; + setImageInfo(0); + hideDelete(); + }; + + setImageCount(); +} + +function uploadComplete(image) { + // ---------------------------------------------------------------------------------- + var el = document.getElementById('imageListWrapper').getElementsByTagName('div'), + imgBox = null, tmpImg, i, imgInfo, + imgOnLoad = function () { + imgInfo = { "width": image.width, "height": image.height, "fileSize": image.fileSize, + "fileUrl": image.fileUrl, "fileName": image.fileName, "filePath": image.filePath, "origName": image.origName }; + + imageCompletedList[imgBox.id] = imgInfo; + imgComplete(this, imgInfo, imgBox.id); + }; + + image.filePath = decodeURI(image.filePath); + image.origName = decodeURI(image.origName); + + for (i = 0; i < el.length; i++) { + imgBox = el[i]; + if (imgBox.className !== 'imageBox_theImage') { + continue; + } + + if (!imgBox.firstChild || imgBox.firstChild.tagName.toLowerCase() !== 'img') { + tmpImg = new Image(); + tmpImg.style.width = "0px"; + tmpImg.style.height = "0px"; + tmpImg.setAttribute("alt", image.origName); + tmpImg.onload = imgOnLoad; + tmpImg.src = image.fileUrl; + imgBox.appendChild(tmpImg); + break; + } + } +} + +function showUploadWindow() { + // ---------------------------------------------------------------------------------- + var uploadWindow = document.getElementById("uploadWindow"), + uploadWindowWidth = 700, + winWidth, el, i, j, imgBox, img; + + if (!(oEditor.undefined(window.innerWidth))) { + winWidth = window.innerWidth; + } else if (document.documentElement && + (!(oEditor.undefined(document.documentElement.clientWidth))) && + document.documentElement.clientWidth !== 0) { + winWidth = document.documentElement.clientWidth; + } else if (document.body && (!(oEditor.undefined(document.body.clientWidth)))) { + winWidth = document.body.clientWidth; + } else { + alert('현재 브라우저를 지원하지 않습니다.'); + return; + } + + uploadWindow.style.left = winWidth / 2 - (uploadWindowWidth / 2) + 'px'; + uploadWindow.style.display = "block"; + uploadWindow.style.width = uploadWindowWidth + 'px'; + + if (modifyImages.length > 0) { + el = document.getElementById('imageListWrapper').getElementsByTagName('div'); + for (i = 0; i < modifyImages.length; i++) { + if (i > 7) { + break; + } + + for (j = 0; j < el.length; j++) { + imgBox = el[j]; + if (imgBox.className !== 'imageBox_theImage') { + continue; + } + + if (imgBox.firstChild && (imgBox.firstChild.src === modifyImages[i])) { + break; + } + + if (imgBox.firstChild === null) { + img = new Image(); + img.src = modifyImages[i]; + img.border = 0; + img.alt = ''; + img.style.width = '120px'; + img.style.height = '90px'; + imgBox.appendChild(img); + break; + } + } + } + } +} + +function removeImages() { + var images = [], i, j, theImage, img, remove; + document.body.appendChild(document.getElementById('removeImageButton')); + + for (i = 0; i < uploadMaxNumber; i++) { + theImage = document.getElementById('img_' + i); + if (theImage.hasChildNodes() && theImage.firstChild.tagName.toLowerCase() === 'img') { + images.push(theImage); + } + } + + for (i = 0; i < images.length; i++) { + img = images[i]; + if (img.firstChild !== null) { + oEditor.removeEvent(img, 'mouseover', showDelete); + remove = img.getElementsByTagName('img'); + + for (j = 0; j < remove.length; j++) { + img.removeChild(remove[j]); + } + + img.parentNode.className = 'imageBox'; + oEditor.removeEvent(img, 'mouseover', showDelete); + } + } + uploadedImageCount(); + imageCompletedList = []; +} + +function removeImage() { + // ---------------------------------------------------------------------------------- + var i, theImage, found = false; + + for (i = 0; i < uploadMaxNumber; i++) { + theImage = document.getElementById('img_' + i); + if (theImage.hasChildNodes() && theImage.firstChild.tagName.toLowerCase() === 'img') { + found = true; + break; + } + } + + if (found) { + if (!confirm('추가하신 사진이 있습니다. 사진 넣기를 취소하시겠습니까?')) { + return false; + } + removeImages(); + } + + return true; +} + +function closeWindow() { + // ---------------------------------------------------------------------------------- + if (removeImage()) { + popupClose(); + } +} + +function cancelEvent() { + // ---------------------------------------------------------------------------------- + return false; +} + +function startMoveTimer() { + // ---------------------------------------------------------------------------------- + var subElements, newDiv; + + if (moveTimer >= 0 && moveTimer < 10) { + moveTimer++; + setTimeout('startMoveTimer()', 8); + } + + if (moveTimer === 5) { + getDivCoordinates(); + subElements = dragDropDiv.getElementsByTagName('div'); + if (subElements.length > 0) { + dragDropDiv.removeChild(subElements[0]); + } + + dragDropDiv.style.display = 'block'; + newDiv = activeImage.cloneNode(true); + newDiv.className = 'imageBox'; + newDiv.style.opacity = 0.5; + + newDiv.id = ''; + newDiv.style.padding = '2px'; + dragDropDiv.appendChild(newDiv); + + dragDropDiv.style.top = tmpTop + 'px'; + dragDropDiv.style.left = tmpLeft + 'px'; + } + + return false; +} + +function getMouseButtn(e) { + var code; + e = e || window.event; + code = e.button; + + if (code) { + if (browser.msie && browser.version < 9) { + code = code === 1 ? 0 : (code === 4 ? 1 : code); + } + } + + return code; +} + +function selectImage(e) { + // ---------------------------------------------------------------------------------- + var el = this.parentNode.firstChild.firstChild, obj; + + if (!el) { + return; + } + + e = e || window.event; + if (getMouseButtn(e) === 2) { + return; + } + + obj = this.parentNode; + hideDelete(); + + obj.className = 'imageBoxHighlighted'; + activeImage = obj; + readyToMove = true; + moveTimer = 0; + + tmpLeft = e.clientX + Math.max(document.body.scrollLeft, document.documentElement.scrollLeft); + tmpTop = e.clientY + Math.max(document.body.scrollTop, document.documentElement.scrollTop); + + startMoveTimer(); + return false; +} + +function dragDropEnd() { + // ---------------------------------------------------------------------------------- + var parentObj, chkObj, turn = false; + + readyToMove = false; + moveTimer = -1; + dragDropDiv.style.display = 'none'; + insertionMarker.style.display = 'none'; + + if (!activeImage) { + return; + } + + if (destinationObject && destinationObject !== activeImage) { + parentObj = destinationObject.parentNode; + chkObj = destinationObject.previousSibling; + turn = false; + + if (chkObj === null) { + chkObj = document.getElementById('imageListWrapper').firstChild; + turn = true; + } + + if (chkObj.id.indexOf('spacer') !== -1) { + chkObj = chkObj.previousSibling; + } + + if (chkObj.firstChild.firstChild === null) { + reOrder(); + return; + } + + if (chkObj && chkObj.id !== null) { + while (chkObj) { + if (chkObj.firstChild.firstChild !== null) { + break; + } + chkObj = chkObj.previousSibling; + } + destinationObject = turn ? chkObj : chkObj.nextSibling; + } + + parentObj.insertBefore(activeImage, destinationObject); + reOrder(); + + activeImage = null; + destinationObject = null; + getDivCoordinates(); + + return false; + } + + activeImage.className = 'imageBox'; + return true; +} + +function dragDropMove(e) { + // ---------------------------------------------------------------------------------- + var elementFound = false, prop, offsetX, offsetY, leftPos, topPos, btnCode; + + if (moveTimer === -1 || !readyToMove) { + return; + } + + e = e || window.event; + + leftPos = e.clientX + document.documentElement.scrollLeft - eventDiff_x; + topPos = e.clientY + document.documentElement.scrollTop - eventDiff_y; + + dragDropDiv.style.top = topPos + 'px'; + dragDropDiv.style.left = leftPos + 'px'; + + leftPos = leftPos + eventDiff_x; + topPos = topPos + eventDiff_y; + + if (getMouseButtn(e) !== 0) { + dragDropEnd(); + } + + for (prop in divXPositions) { + if (!divXPositions.hasOwnProperty(prop) || divXPositions[prop].className === 'clear') { + continue; + } + + if (divXPositions[prop] < leftPos && + (divXPositions[prop] + divWidth[prop] * 0.7) > leftPos && + divYPositions[prop] < topPos && + (divYPositions[prop] + divWidth[prop]) > topPos) { + if (browser.msie) { + offsetX = offsetX_marker; + offsetY = offsetY_marker; + } else { + offsetX = geckoOffsetX_marker; + offsetY = geckoOffsetY_marker; + } + + insertionMarker.style.top = divYPositions[prop] + offsetY + 'px'; + insertionMarker.style.left = divXPositions[prop] + offsetX + 'px'; + insertionMarker.style.display = 'block'; + destinationObject = document.getElementById(prop); + elementFound = true; + break; + } + } + + if (!elementFound) { + insertionMarker.style.display = 'none'; + destinationObject = null; + } + + return false; +} + +function saveImageOrder() { + // ---------------------------------------------------------------------------------- + var rData = [], + objects = document.getElementById('imageListWrapper').getElementsByTagName('div'), + i; + + for (i = 0; i < objects.length; i++) { + if (objects[i].className === 'imageBox' || + objects[i].className === 'imageBoxHighlighted') { + rData.push(objects[i].id); + } + } + + return rData; +} + +function initGallery() { + // ---------------------------------------------------------------------------------- + var imgBox = document.getElementById('imageListWrapper').getElementsByTagName('div'), + i; + + for (i = 0; i < imgBox.length; i++) { + if (imgBox[i].className === 'imageBox_theImage') { + imgBox[i].onmousedown = selectImage; + } + } + + document.body.onselectstart = cancelEvent; + document.body.ondragstart = cancelEvent; + document.body.onmouseup = dragDropEnd; + document.body.onmousemove = dragDropMove; + + dragDropDiv = document.getElementById('dragDropContent'); + insertionMarker = document.getElementById('insertionMarker'); + getDivCoordinates(); +} + +function doSubmit() { + // ---------------------------------------------------------------------------------- + var el = document.getElementById('imageListWrapper').getElementsByTagName('div'), + imageArray = [], + num = 0, + elem = document.getElementById('id_alignment').elements, + imgParagraph = false, + useSpacer = false, + imgAlign = 'top', i, imgBox, input; + + for (i = 0; i < elem.length; i++) { + input = elem[i]; + switch (input.name) { + case "alignment" : + if (input.checked) { + imgAlign = input.value; + } + break; + case "para" : + imgParagraph = input.checked; + break; + case "use_spacer" : + useSpacer = input.checked; + break; + } + } + + for (i = 0; i < el.length; i++) { + imgBox = el[i]; + if (imgBox.className !== "imageBox_theImage") { + continue; + } + + if (imgBox.firstChild !== null) { + imageArray[num] = imageCompletedList[imgBox.id]; + + if (imgAlign === "break") { + imageArray[num].alt = "break"; + } else { + imageArray[num].alt = ''; + imageArray[num].align = imgAlign; + } + + num++; + } + } + + if (imageArray.length > 0) { + oEditor.doInsertImage(imageArray, imgParagraph, useSpacer); + } + oEditor.popupWinClose(); +} + +function initEvent() { + var swfVersionStr = "11.1.0", + xiSwfUrlStr = "http://get.adobe.com/kr/flashplayer/", + flashvars = { + UploadScript: uploadScript, + DeleteScript: deleteScript, + UploadButton: uploadButton, + MakeThumbnail: makeThumbnail, + ThumbnailWidth: makeThumbnailWidth, + ThumbnailHeight: makeThumbnailHeight, + ImageResizeWidth: imageResizeWidth, + loadPolicyFile: true, + SortOnName: sortOnName + }, + params = { + quality: "high", + bgcolor: "#ffffff", + allowscriptaccess: "Always", + allowfullscreen: "false", + //allowNetworking: "all", + wmode: "transparent" + }, + attributes = { id: AppID, name: AppID, align: "middle" }; + + swfobject.embedSWF(AppSRC, "oFlashButton", "93", "22", swfVersionStr, xiSwfUrlStr, flashvars, params, attributes); +} + +function init(dialog) { + var dlg = new Dialog(this), + elem = document.getElementById('id_alignment').elements, + i; + + oEditor = this; + oEditor.dialog = dialog; + + browser = oEditor.getBrowser(); + + uploadImagePath = oEditor.config.iconPath + 'imageUpload'; + uploadButton = '../icons/imageUpload/add.gif'; + AppSRC = oEditor.config.popupPath + 'flash/chximage.swf'; + uploadMaxNumber = oEditor.config.imgUploadNumber; + uploadScript = oEditor.config.editorPath + 'imageUpload/upload.php'; + deleteScript = oEditor.config.editorPath + 'imageUpload/delete.php'; + + imageResizeWidth = oEditor.config.imgMaxWidth; + makeThumbnail = oEditor.config.makeThumbnail; + sortOnName = oEditor.config.imgUploadSortName; + makeThumbnailWidth = oEditor.config.thumbnailWidth; + makeThumbnailHeight = oEditor.config.thumbnailHeight; + + document.getElementById("maxImageNum").appendChild(document.createTextNode(uploadMaxNumber)); + + button = [ + { alt: "", img: 'submit.gif', cmd: doSubmit, hspace: 2 }, + { alt: "", img: 'cancel.gif', cmd: closeWindow, hspace: 2 } + ]; + + dlg.setDialogHeight(370); + dlg.showButton(button); + showContents(); + initGallery(); + showUploadWindow(); + initEvent(); + createInsertionMaker(); + + for (i = 0; i < elem.length; i++) { + if (elem[i].name === "alignment" && elem[i].value === oEditor.config.imgDefaultAlign) { + elem[i].checked = "checked"; + break; + } + } +} diff --git a/plugin/editor/cheditor5/popup/js/image_upload_flash.js b/plugin/editor/cheditor5/popup/js/image_upload_flash.js new file mode 100644 index 000000000..fb70ba021 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/image_upload_flash.js @@ -0,0 +1,279 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version = 0; + var axo; +// var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + if (isIE && isWin && !isOpera) + { + var str = ' '; + str += ''; + document.getElementById("oFlash").innerHTML = str; + } + else { + var oFlash = document.getElementById("oFlash"); + var embed = document.createElement('embed'); + for (var i in embedAttrs) { + embed.setAttribute(i, embedAttrs[i]); + } + oFlash.appendChild(embed); + } +} + +function CHXImageRUN(){ + var ret = + AC_GetArgs + ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" + , "application/x-shockwave-flash" + ); + AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); +} + +function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ + var ret = new Object(); + ret.embedAttrs = new Object(); + ret.params = new Object(); + ret.objAttrs = new Object(); + for (var i=0; i < args.length; i=i+2){ + var currArg = args[i].toLowerCase(); + + switch (currArg){ + case "classid": + break; + case "pluginspage": + ret.embedAttrs[args[i]] = args[i+1]; + break; + case "src": + case "movie": + args[i+1] = AC_AddExtension(args[i+1], ext); + ret.embedAttrs["src"] = args[i+1]; + ret.params[srcParamName] = args[i+1]; + break; + case "onafterupdate": + case "onbeforeupdate": + case "onblur": + case "oncellchange": + case "onclick": + case "ondblClick": + case "ondrag": + case "ondragend": + case "ondragenter": + case "ondragleave": + case "ondragover": + case "ondrop": + case "onfinish": + case "onfocus": + case "onhelp": + case "onmousedown": + case "onmouseup": + case "onmouseover": + case "onmousemove": + case "onmouseout": + case "onkeypress": + case "onkeydown": + case "onkeyup": + case "onload": + case "onlosecapture": + case "onpropertychange": + case "onreadystatechange": + case "onrowsdelete": + case "onrowenter": + case "onrowexit": + case "onrowsinserted": + case "onstart": + case "onscroll": + case "onbeforeeditfocus": + case "onactivate": + case "onbeforedeactivate": + case "ondeactivate": + case "type": + case "codebase": + ret.objAttrs[args[i]] = args[i+1]; + break; + case "id": + case "width": + case "height": + case "align": + case "vspace": + case "hspace": + case "class": + case "title": + case "accesskey": + case "name": + case "tabindex": + ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1]; + break; + default: + ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1]; + } + } + ret.objAttrs["classid"] = classid; + if (mimeType) ret.embedAttrs["type"] = mimeType; + return ret; +} + + diff --git a/plugin/editor/cheditor5/popup/js/image_url.js b/plugin/editor/cheditor5/popup/js/image_url.js new file mode 100644 index 000000000..fa5b85d7d --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/image_url.js @@ -0,0 +1,244 @@ +// ================================================================ +// CHEditor 5 +// ---------------------------------------------------------------- +// Homepage: http://www.chcode.com +// Copyright (c) 1997-2014 CHSOFT +// ================================================================ +var AppWidth = "250"; +var AppHeight = "175"; +var AppID = "cheditorPreview"; +var oEditor = null; +var button = [ { alt : "", img : 'submit.gif', cmd : doSubmit }, + { alt : "", img : 'cancel.gif', cmd : popupClose } ]; +var newImage = null; + +function CHEditorImagePreview () { +// ---------------------------------------------------------------------------------- +// callBack function + + document.getElementById(AppID).CHEditorImagePreview("1", "1"); +} + +function CHXUploadRUN(src) { +// ---------------------------------------------------------------------------------- +// Preview +// + chxupload_RUN("src", src, + "width", AppWidth, + "height", AppHeight, + "align", "middle", + "id", AppID, + "classid", AppID, + "quality", "high", + "bgcolor", "#ebe9ed", + "name", AppID, + "wmode", "transparent", + "allowScriptAccess","Always", + "type", "application/x-shockwave-flash", + "pluginspage", "http://www.adobe.com/go/getflashplayer"); +} + +function getFilename (file) { + while (file.indexOf("/") != -1) { + file = file.slice(file.indexOf("/") + 1); + } + return file; +} + +function popupClose() +{ + oEditor.popupWinCancel(); +} + +function chkImgFormat (url) +{ + var imageName = getFilename(url); + var allowSubmit = false; + var extArray = [".gif", ".jpg", ".jpeg", ".png"]; + + extArray.join(" "); + if (imageName === "") { + return false; + } + + var ext = imageName.slice(imageName.lastIndexOf(".")).toLowerCase(); + var i; + + for (i = 0; i < extArray.length; i++) { + if (extArray[i] == ext) { + allowSubmit = true; + break; + } + } + + if (!allowSubmit) { + alert("사진은 GIF, JPG, PNG 형식만 넣을 수 있습니다."); + return false; + } + + return imageName; +} + +function previewImage (source) { + if (navigator.appName.indexOf("microsoft") != -1) { + window[AppID].CHEditorImagePreview(source, 0, 0); + } + else { + document[AppID].CHEditorImagePreview(source, 0, 0); + } +} + +function checkImageComplete (img) { + if (img.complete != true) { + setTimeout("checkImageComplete(document.getElementById('"+img.id+"'))", 250); + } + else { + document.getElementById('imageSize').innerHTML = ''; + + newImage = new Image(); + newImage.style.width = img.width + 'px'; + newImage.style.height = img.height + 'px'; + newImage.setAttribute("src", img.src); + newImage.setAttribute("alt", getFilename(img.src)); + } +} + +function doPreview () { + var imgurl = document.getElementById('fm_imageUrl').value; + var fileName = chkImgFormat(imgurl); + if (!fileName) { + return; + } + + var img = new Image(); + img.src = imgurl; + img.id = fileName; + + document.getElementById('tmpImage').appendChild(img); + checkImageComplete(img); + previewImage(img.src); +} + +function getElementById(id) { + var el = null; + try { + el = document.getElementById(id); + } + catch (ignore) {} + return el; +} + +function removeObjectInIE(id) { + var obj = getElementById(id); + if (obj) { + var i; + for (i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } +} + +function removeSWF(id) { + var obj = getElementById(id); + if (obj && obj.nodeName == "OBJECT") { + if (oEditor.getBrowser().msie) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + removeObjectInIE(id); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } +} + +function doSubmit () +{ + if (newImage == null) { + alert("미리 보기 버튼을 클릭하여 이미지를 확인해 주십시오."); + return; + } + + if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) { + document.getElementById(AppID).style.display = 'none'; + } + + var fm_align = document.getElementById('fm_align').alignment; + var align = 'center'; + var i; + + for (i=0; i 0) { + datum = ""; + } else { + datum = protocol[0].replace(/^\/\/\//, "//"); + } + } + + document.getElementById("fm_link_value").value = selectedItemValue + datum; + document.getElementById("fm_link_value").focus(); +} + +function returnSelected() { + var text, target = '', title = ''; + + if (document.getElementById("fm_link_value").value !== "") { + text = document.getElementById("fm_link_value").value; + } else { + alert("링크 URL을 입력하여 주십시오."); + return false; + } + + if (document.getElementById("fm_target").value !== "") { + target = document.getElementById("fm_target").value; + } + + if (document.getElementById("fm_title").value !== "") { + title = document.getElementById("fm_title").value; + } + + if ((/^(http|https|file|ftp|mailto|gopher|news|telnet|):\/\//i.test(text)) === false && + (/^(wias|javascript):/i.test(text) === false)) + { + text = "http://" + text; + } + + oEditor.hyperLink(text, target, title); + oEditor.popupWinClose(); +} + +function getSelected() { + var rng = oEditor.range, link = null, protocol, protocolSel, i, oldTarget, targetSel, j; + + if (window.getSelection) { + link = oEditor.getElement(rng.startContainer, "A"); + } else { + link = rng.parentElement ? oEditor.getElement(rng.parentElement(), "A") : oEditor.getElement(rng.item(0), "A"); + } + + if (link === null || link.nodeName.toLowerCase() !== 'a') { + return; + } + + protocol = link.href.split(":"); + + if (protocol[0]) { + protocolSel = document.getElementById("fm_protocol"); + for (i = 0; i < protocolSel.length; i++) { + if (protocolSel[i].value.indexOf(protocol[0].toLowerCase()) !== -1) { + oldTarget = link.target; + targetSel = document.getElementById("fm_target"); + + if (oldTarget) { + for (j = 0; j < targetSel.length; j++) { + if (targetSel[j].value === oldTarget.toLowerCase()) { + targetSel[j].selected = true; + break; + } + } + } else { + targetSel[0].selected = true; + } + + protocolSel[i].selected = true; + + if (link.title) { + document.getElementById("fm_title").value = link.title; + } + break; + } + } + } + document.getElementById("fm_link_value").value = link.href; +} + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + resetValues(); + getSelected(); + + var dlg = new Dialog(oEditor); + dlg.showButton(button); + dlg.setDialogHeight(); +} diff --git a/plugin/editor/cheditor5/popup/js/media.js b/plugin/editor/cheditor5/popup/js/media.js new file mode 100644 index 000000000..e808ee320 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/media.js @@ -0,0 +1,46 @@ +// ================================================================ +// CHEditor 5 +// ---------------------------------------------------------------- +// Homepage: http://www.chcode.com +// Copyright (c) 1997-2014 CHSOFT +// ================================================================ +var button = [ + { alt : "", img : 'play.gif', cmd : play }, + { alt : "", img : 'submit.gif', cmd : doSubmit }, + { alt : "", img : 'cancel.gif', cmd : popupClose } +]; + +var oEditor = null; + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + var dlg = new Dialog(oEditor); + dlg.showButton(button); + + dlg.setDialogHeight(); +} + +function play() +{ + var file = document.getElementById("fm_linkurl"); + if (!file.value) + return; + + var mediaobj = ""; + var obj = document.getElementById("play"); + obj.innerHTML = mediaobj; +} + +function doSubmit() +{ + var file = document.getElementById("fm_linkurl"); + var media = ""; + oEditor.insertHtmlPopup(media); + oEditor.popupWinClose(); +} + +function popupClose() { + oEditor.popupWinCancel(); +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/js/swfobject.js b/plugin/editor/cheditor5/popup/js/swfobject.js new file mode 100644 index 000000000..c8aa31ce3 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/swfobject.js @@ -0,0 +1,779 @@ +/*! SWFObject v2.2 + is released under the MIT License +*/ + +var swfobject = function() { + + var UNDEF = "undefined", + OBJECT = "object", + SHOCKWAVE_FLASH = "Shockwave Flash", + SHOCKWAVE_FLASH_AX = "ShockwaveFlash.ShockwaveFlash", + FLASH_MIME_TYPE = "application/x-shockwave-flash", + EXPRESS_INSTALL_ID = "SWFObjectExprInst", + ON_READY_STATE_CHANGE = "onreadystatechange", + + win = window, + doc = document, + nav = navigator, + + plugin = false, + domLoadFnArr = [main], + regObjArr = [], + objIdArr = [], + listenersArr = [], + storedAltContent, + storedAltContentId, + storedCallbackFn, + storedCallbackObj, + isDomLoaded = false, + isExpressInstallActive = false, + dynamicStylesheet, + dynamicStylesheetMedia, + autoHideShow = true, + + /* Centralized function for browser feature detection + - User agent string detection is only used when no good alternative is possible + - Is executed directly for optimal performance + */ + ua = function() { + var w3cdom = typeof doc.getElementById != UNDEF && typeof doc.getElementsByTagName != UNDEF && typeof doc.createElement != UNDEF, + u = nav.userAgent.toLowerCase(), + p = nav.platform.toLowerCase(), + windows = p ? /win/.test(p) : /win/.test(u), + mac = p ? /mac/.test(p) : /mac/.test(u), + webkit = /webkit/.test(u) ? parseFloat(u.replace(/^.*webkit\/(\d+(\.\d+)?).*$/, "$1")) : false, // returns either the webkit version or false if not webkit + ie = !+"\v1", // feature detection based on Andrea Giammarchi's solution: http://webreflection.blogspot.com/2009/01/32-bytes-to-know-if-your-browser-is-ie.html + playerVersion = [0,0,0], + d = null; + if (typeof nav.plugins != UNDEF && typeof nav.plugins[SHOCKWAVE_FLASH] == OBJECT) { + d = nav.plugins[SHOCKWAVE_FLASH].description; + if (d && !(typeof nav.mimeTypes != UNDEF && nav.mimeTypes[FLASH_MIME_TYPE] && !nav.mimeTypes[FLASH_MIME_TYPE].enabledPlugin)) { // navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin indicates whether plug-ins are enabled or disabled in Safari 3+ + plugin = true; + ie = false; // cascaded feature detection for Internet Explorer + d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); + playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10); + playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10); + playerVersion[2] = /[a-zA-Z]/.test(d) ? parseInt(d.replace(/^.*[a-zA-Z]+(.*)$/, "$1"), 10) : 0; + } + } + else if (typeof win.ActiveXObject != UNDEF) { + try { + var a = new ActiveXObject(SHOCKWAVE_FLASH_AX); + if (a) { // a will return null when ActiveX is disabled + d = a.GetVariable("$version"); + if (d) { + ie = true; // cascaded feature detection for Internet Explorer + d = d.split(" ")[1].split(","); + playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + } + catch(e) {} + } + return { w3:w3cdom, pv:playerVersion, wk:webkit, ie:ie, win:windows, mac:mac }; + }(), + + /* Cross-browser onDomLoad + - Will fire an event as soon as the DOM of a web page is loaded + - Internet Explorer workaround based on Diego Perini's solution: http://javascript.nwbox.com/IEContentLoaded/ + - Regular onload serves as fallback + */ + onDomLoad = function() { + if (!ua.w3) { return; } + if ((typeof doc.readyState != UNDEF && doc.readyState == "complete") || (typeof doc.readyState == UNDEF && (doc.getElementsByTagName("body")[0] || doc.body))) { // function is fired after onload, e.g. when script is inserted dynamically + callDomLoadFunctions(); + } + if (!isDomLoaded) { + if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("DOMContentLoaded", callDomLoadFunctions, false); + } + if (ua.ie && ua.win) { + doc.attachEvent(ON_READY_STATE_CHANGE, function() { + if (doc.readyState == "complete") { + doc.detachEvent(ON_READY_STATE_CHANGE, arguments.callee); + callDomLoadFunctions(); + } + }); + if (win == top) { // if not inside an iframe + (function(){ + if (isDomLoaded) { return; } + try { + doc.documentElement.doScroll("left"); + } + catch(e) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + } + if (ua.wk) { + (function(){ + if (isDomLoaded) { return; } + if (!/loaded|complete/.test(doc.readyState)) { + setTimeout(arguments.callee, 0); + return; + } + callDomLoadFunctions(); + })(); + } + addLoadEvent(callDomLoadFunctions); + } + }(); + + function callDomLoadFunctions() { + if (isDomLoaded) { return; } + try { // test if we can really add/remove elements to/from the DOM; we don't want to fire it too early + var t = doc.getElementsByTagName("body")[0].appendChild(createElement("span")); + t.parentNode.removeChild(t); + } + catch (e) { return; } + isDomLoaded = true; + var dl = domLoadFnArr.length; + for (var i = 0; i < dl; i++) { + domLoadFnArr[i](); + } + } + + function addDomLoadEvent(fn) { + if (isDomLoaded) { + fn(); + } + else { + domLoadFnArr[domLoadFnArr.length] = fn; // Array.push() is only available in IE5.5+ + } + } + + /* Cross-browser onload + - Based on James Edwards' solution: http://brothercake.com/site/resources/scripts/onload/ + - Will fire an event as soon as a web page including all of its assets are loaded + */ + function addLoadEvent(fn) { + if (typeof win.addEventListener != UNDEF) { + win.addEventListener("load", fn, false); + } + else if (typeof doc.addEventListener != UNDEF) { + doc.addEventListener("load", fn, false); + } + else if (typeof win.attachEvent != UNDEF) { + addListener(win, "onload", fn); + } + else if (typeof win.onload == "function") { + var fnOld = win.onload; + win.onload = function() { + fnOld(); + fn(); + }; + } + else { + win.onload = fn; + } + } + + /* Main function + - Will preferably execute onDomLoad, otherwise onload (as a fallback) + */ + function main() { + if (plugin) { + testPlayerVersion(); + } + else { + matchVersions(); + } + } + + /* Detect the Flash Player version for non-Internet Explorer browsers + - Detecting the plug-in version via the object element is more precise than using the plugins collection item's description: + a. Both release and build numbers can be detected + b. Avoid wrong descriptions by corrupt installers provided by Adobe + c. Avoid wrong descriptions by multiple Flash Player entries in the plugin Array, caused by incorrect browser imports + - Disadvantage of this method is that it depends on the availability of the DOM, while the plugins collection is immediately available + */ + function testPlayerVersion() { + var b = doc.getElementsByTagName("body")[0]; + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + var t = b.appendChild(o); + if (t) { + var counter = 0; + (function(){ + if (typeof t.GetVariable != UNDEF) { + var d = t.GetVariable("$version"); + if (d) { + d = d.split(" ")[1].split(","); + ua.pv = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + } + else if (counter < 10) { + counter++; + setTimeout(arguments.callee, 10); + return; + } + b.removeChild(o); + t = null; + matchVersions(); + })(); + } + else { + matchVersions(); + } + } + + /* Perform Flash Player and SWF version matching; static publishing only + */ + function matchVersions() { + var rl = regObjArr.length; + if (rl > 0) { + for (var i = 0; i < rl; i++) { // for each registered object element + var id = regObjArr[i].id; + var cb = regObjArr[i].callbackFn; + var cbObj = {success:false, id:id}; + if (ua.pv[0] > 0) { + var obj = getElementById(id); + if (obj) { + if (hasPlayerVersion(regObjArr[i].swfVersion) && !(ua.wk && ua.wk < 312)) { // Flash Player version >= published SWF version: Houston, we have a match! + setVisibility(id, true); + if (cb) { + cbObj.success = true; + cbObj.ref = getObjectById(id); + cb(cbObj); + } + } + else if (regObjArr[i].expressInstall && canExpressInstall()) { // show the Adobe Express Install dialog if set by the web page author and if supported + var att = {}; + att.data = regObjArr[i].expressInstall; + att.width = obj.getAttribute("width") || "0"; + att.height = obj.getAttribute("height") || "0"; + if (obj.getAttribute("class")) { att.styleclass = obj.getAttribute("class"); } + if (obj.getAttribute("align")) { att.align = obj.getAttribute("align"); } + // parse HTML object param element's name-value pairs + var par = {}; + var p = obj.getElementsByTagName("param"); + var pl = p.length; + for (var j = 0; j < pl; j++) { + if (p[j].getAttribute("name").toLowerCase() != "movie") { + par[p[j].getAttribute("name")] = p[j].getAttribute("value"); + } + } + showExpressInstall(att, par, id, cb); + } + else { // Flash Player and SWF version mismatch or an older Webkit engine that ignores the HTML object element's nested param elements: display alternative content instead of SWF + displayAltContent(obj); + if (cb) { cb(cbObj); } + } + } + } + else { // if no Flash Player is installed or the fp version cannot be detected we let the HTML object element do its job (either show a SWF or alternative content) + setVisibility(id, true); + if (cb) { + var o = getObjectById(id); // test whether there is an HTML object element or not + if (o && typeof o.SetVariable != UNDEF) { + cbObj.success = true; + cbObj.ref = o; + } + cb(cbObj); + } + } + } + } + } + + function getObjectById(objectIdStr) { + var r = null; + var o = getElementById(objectIdStr); + if (o && o.nodeName == "OBJECT") { + if (typeof o.SetVariable != UNDEF) { + r = o; + } + else { + var n = o.getElementsByTagName(OBJECT)[0]; + if (n) { + r = n; + } + } + } + return r; + } + + /* Requirements for Adobe Express Install + - only one instance can be active at a time + - fp 6.0.65 or higher + - Win/Mac OS only + - no Webkit engines older than version 312 + */ + function canExpressInstall() { + return !isExpressInstallActive && hasPlayerVersion("6.0.65") && (ua.win || ua.mac) && !(ua.wk && ua.wk < 312); + } + + /* Show the Adobe Express Install dialog + - Reference: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 + */ + function showExpressInstall(att, par, replaceElemIdStr, callbackFn) { + isExpressInstallActive = true; + storedCallbackFn = callbackFn || null; + storedCallbackObj = {success:false, id:replaceElemIdStr}; + var obj = getElementById(replaceElemIdStr); + if (obj) { + if (obj.nodeName == "OBJECT") { // static publishing + storedAltContent = abstractAltContent(obj); + storedAltContentId = null; + } + else { // dynamic publishing + storedAltContent = obj; + storedAltContentId = replaceElemIdStr; + } + att.id = EXPRESS_INSTALL_ID; + if (typeof att.width == UNDEF || (!/%$/.test(att.width) && parseInt(att.width, 10) < 310)) { att.width = "310"; } + if (typeof att.height == UNDEF || (!/%$/.test(att.height) && parseInt(att.height, 10) < 137)) { att.height = "137"; } + doc.title = doc.title.slice(0, 47) + " - Flash Player Installation"; + var pt = ua.ie && ua.win ? "ActiveX" : "PlugIn", + fv = "MMredirectURL=" + encodeURI(window.location).toString().replace(/&/g,"%26") + "&MMplayerType=" + pt + "&MMdoctitle=" + doc.title; + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + fv; + } + else { + par.flashvars = fv; + } + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + if (ua.ie && ua.win && obj.readyState != 4) { + var newObj = createElement("div"); + replaceElemIdStr += "SWFObjectNew"; + newObj.setAttribute("id", replaceElemIdStr); + obj.parentNode.insertBefore(newObj, obj); // insert placeholder div that will be replaced by the object element that loads expressinstall.swf + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + createSWF(att, par, replaceElemIdStr); + } + } + + /* Functions to abstract and display alternative content + */ + function displayAltContent(obj) { + if (ua.ie && ua.win && obj.readyState != 4) { + // IE only: when a SWF is loading (AND: not available in cache) wait for the readyState of the object element to become 4 before removing it, + // because you cannot properly cancel a loading SWF file without breaking browser load references, also obj.onreadystatechange doesn't work + var el = createElement("div"); + obj.parentNode.insertBefore(el, obj); // insert placeholder div that will be replaced by the alternative content + el.parentNode.replaceChild(abstractAltContent(obj), el); + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + obj.parentNode.removeChild(obj); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.replaceChild(abstractAltContent(obj), obj); + } + } + + function abstractAltContent(obj) { + var ac = createElement("div"); + if (ua.win && ua.ie) { + ac.innerHTML = obj.innerHTML; + } + else { + var nestedObj = obj.getElementsByTagName(OBJECT)[0]; + if (nestedObj) { + var c = nestedObj.childNodes; + if (c) { + var cl = c.length; + for (var i = 0; i < cl; i++) { + if (!(c[i].nodeType == 1 && c[i].nodeName == "PARAM") && !(c[i].nodeType == 8)) { + ac.appendChild(c[i].cloneNode(true)); + } + } + } + } + } + return ac; + } + + /* Cross-browser dynamic SWF creation + */ + function createSWF(attObj, parObj, id) { + var r, el = getElementById(id); + if (ua.wk && ua.wk < 312) { return r; } + if (el) { + if (typeof attObj.id == UNDEF) { // if no 'id' is defined for the object element, it will inherit the 'id' from the alternative content + attObj.id = id; + } + if (ua.ie && ua.win) { // Internet Explorer + the HTML object element + W3C DOM methods do not combine: fall back to outerHTML + var att = ""; + for (var i in attObj) { + if (attObj[i] != Object.prototype[i]) { // filter out prototype additions from other potential libraries + if (i.toLowerCase() == "data") { + parObj.movie = attObj[i]; + } + else if (i.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + att += ' class="' + attObj[i] + '"'; + } + else if (i.toLowerCase() != "classid") { + att += ' ' + i + '="' + attObj[i] + '"'; + } + } + } + var par = ""; + for (var j in parObj) { + if (parObj[j] != Object.prototype[j]) { // filter out prototype additions from other potential libraries + par += ''; + } + } + el.outerHTML = '' + par + ''; + objIdArr[objIdArr.length] = attObj.id; // stored to fix object 'leaks' on unload (dynamic publishing only) + r = getElementById(attObj.id); + } + else { // well-behaving browsers + var o = createElement(OBJECT); + o.setAttribute("type", FLASH_MIME_TYPE); + for (var m in attObj) { + if (attObj[m] != Object.prototype[m]) { // filter out prototype additions from other potential libraries + if (m.toLowerCase() == "styleclass") { // 'class' is an ECMA4 reserved keyword + o.setAttribute("class", attObj[m]); + } + else if (m.toLowerCase() != "classid") { // filter out IE specific attribute + o.setAttribute(m, attObj[m]); + } + } + } + for (var n in parObj) { + if (parObj[n] != Object.prototype[n] && n.toLowerCase() != "movie") { // filter out prototype additions from other potential libraries and IE specific param element + createObjParam(o, n, parObj[n]); + } + } + el.parentNode.replaceChild(o, el); + r = o; + } + } + return r; + } + + function createObjParam(el, pName, pValue) { + var p = createElement("param"); + p.setAttribute("name", pName); + p.setAttribute("value", pValue); + el.appendChild(p); + } + + /* Cross-browser SWF removal + - Especially needed to safely and completely remove a SWF in Internet Explorer + */ + function removeSWF(id) { + var obj = getElementById(id); + if (obj && obj.nodeName == "OBJECT") { + if (ua.ie && ua.win) { + obj.style.display = "none"; + (function(){ + if (obj.readyState == 4) { + removeObjectInIE(id); + } + else { + setTimeout(arguments.callee, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } + } + + function removeObjectInIE(id) { + var obj = getElementById(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } + } + + /* Functions to optimize JavaScript compression + */ + function getElementById(id) { + var el = null; + try { + el = doc.getElementById(id); + } + catch (e) {} + return el; + } + + function createElement(el) { + return doc.createElement(el); + } + + /* Updated attachEvent function for Internet Explorer + - Stores attachEvent information in an Array, so on unload the detachEvent functions can be called to avoid memory leaks + */ + function addListener(target, eventType, fn) { + target.attachEvent(eventType, fn); + listenersArr[listenersArr.length] = [target, eventType, fn]; + } + + /* Flash Player and SWF content version matching + */ + function hasPlayerVersion(rv) { + var pv = ua.pv, v = rv.split("."); + v[0] = parseInt(v[0], 10); + v[1] = parseInt(v[1], 10) || 0; // supports short notation, e.g. "9" instead of "9.0.0" + v[2] = parseInt(v[2], 10) || 0; + return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; + } + + /* Cross-browser dynamic CSS creation + - Based on Bobby van der Sluis' solution: http://www.bobbyvandersluis.com/articles/dynamicCSS.php + */ + function createCSS(sel, decl, media, newStyle) { + if (ua.ie && ua.mac) { return; } + var h = doc.getElementsByTagName("head")[0]; + if (!h) { return; } // to also support badly authored HTML pages that lack a head element + var m = (media && typeof media == "string") ? media : "screen"; + if (newStyle) { + dynamicStylesheet = null; + dynamicStylesheetMedia = null; + } + if (!dynamicStylesheet || dynamicStylesheetMedia != m) { + // create dynamic stylesheet + get a global reference to it + var s = createElement("style"); + s.setAttribute("type", "text/css"); + s.setAttribute("media", m); + dynamicStylesheet = h.appendChild(s); + if (ua.ie && ua.win && typeof doc.styleSheets != UNDEF && doc.styleSheets.length > 0) { + dynamicStylesheet = doc.styleSheets[doc.styleSheets.length - 1]; + } + dynamicStylesheetMedia = m; + } + // add style rule + if (ua.ie && ua.win) { + if (dynamicStylesheet && typeof dynamicStylesheet.addRule == OBJECT) { + dynamicStylesheet.addRule(sel, decl); + } + } + else { + if (dynamicStylesheet && typeof doc.createTextNode != UNDEF) { + dynamicStylesheet.appendChild(doc.createTextNode(sel + " {" + decl + "}")); + } + } + } + + function setVisibility(id, isVisible) { + if (!autoHideShow) { return; } + var v = isVisible ? "visible" : "hidden"; + if (isDomLoaded && getElementById(id)) { + getElementById(id).style.visibility = v; + } + else { + createCSS("#" + id, "visibility:" + v); + } + } + + /* Filter to avoid XSS attacks + */ + function urlEncodeIfNecessary(s) { + var regex = /[\\\"<>\.;]/; + var hasBadChars = regex.exec(s) != null; + return hasBadChars && typeof encodeURIComponent != UNDEF ? encodeURIComponent(s) : s; + } + + /* Release memory to avoid memory leaks caused by closures, fix hanging audio/video threads and force open sockets/NetConnections to disconnect (Internet Explorer only) + */ + var cleanup = function() { + if (ua.ie && ua.win) { + window.attachEvent("onunload", function() { + // remove listeners to avoid memory leaks + var ll = listenersArr.length; + for (var i = 0; i < ll; i++) { + listenersArr[i][0].detachEvent(listenersArr[i][1], listenersArr[i][2]); + } + // cleanup dynamically embedded objects to fix audio/video threads and force open sockets and NetConnections to disconnect + var il = objIdArr.length; + for (var j = 0; j < il; j++) { + removeSWF(objIdArr[j]); + } + // cleanup library's main closures to avoid memory leaks + for (var k in ua) { + ua[k] = null; + } + ua = null; + for (var l in swfobject) { + swfobject[l] = null; + } + swfobject = null; + }); + } + }(); + + return { + /* Public API + - Reference: http://code.google.com/p/swfobject/wiki/documentation + */ + registerObject: function(objectIdStr, swfVersionStr, xiSwfUrlStr, callbackFn) { + if (ua.w3 && objectIdStr && swfVersionStr) { + var regObj = {}; + regObj.id = objectIdStr; + regObj.swfVersion = swfVersionStr; + regObj.expressInstall = xiSwfUrlStr; + regObj.callbackFn = callbackFn; + regObjArr[regObjArr.length] = regObj; + setVisibility(objectIdStr, false); + } + else if (callbackFn) { + callbackFn({success:false, id:objectIdStr}); + } + }, + + getObjectById: function(objectIdStr) { + if (ua.w3) { + return getObjectById(objectIdStr); + } + }, + + embedSWF: function(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj, callbackFn) { + var callbackObj = {success:false, id:replaceElemIdStr}; + if (ua.w3 && !(ua.wk && ua.wk < 312) && swfUrlStr && replaceElemIdStr && widthStr && heightStr && swfVersionStr) { + setVisibility(replaceElemIdStr, false); + addDomLoadEvent(function() { + widthStr += ""; // auto-convert to string + heightStr += ""; + var att = {}; + if (attObj && typeof attObj === OBJECT) { + for (var i in attObj) { // copy object to avoid the use of references, because web authors often reuse attObj for multiple SWFs + att[i] = attObj[i]; + } + } + att.data = swfUrlStr; + att.width = widthStr; + att.height = heightStr; + var par = {}; + if (parObj && typeof parObj === OBJECT) { + for (var j in parObj) { // copy object to avoid the use of references, because web authors often reuse parObj for multiple SWFs + par[j] = parObj[j]; + } + } + if (flashvarsObj && typeof flashvarsObj === OBJECT) { + for (var k in flashvarsObj) { // copy object to avoid the use of references, because web authors often reuse flashvarsObj for multiple SWFs + if (typeof par.flashvars != UNDEF) { + par.flashvars += "&" + k + "=" + flashvarsObj[k]; + } + else { + par.flashvars = k + "=" + flashvarsObj[k]; + } + } + } + if (hasPlayerVersion(swfVersionStr)) { // create SWF + var obj = createSWF(att, par, replaceElemIdStr); + if (att.id == replaceElemIdStr) { + setVisibility(replaceElemIdStr, true); + } + callbackObj.success = true; + callbackObj.ref = obj; + } + else if (xiSwfUrlStr) { // show Adobe Express Install + if (confirm("Adobe Flash Player "+swfVersionStr+" 이상 버전이 필요합니다.\nCHEditor는 자동으로 Flash Player를 설치하지 않습니다.\n" + + "Adobe Flash Player 다운로드 웹사이트를 방문하시겠습니까?")) { + window.open(xiSwfUrlStr); + } + return; + } + else { // show alternative content + setVisibility(replaceElemIdStr, true); + } + if (callbackFn) { callbackFn(callbackObj); } + }); + } + else if (callbackFn) { callbackFn(callbackObj); } + }, + + switchOffAutoHideShow: function() { + autoHideShow = false; + }, + + ua: ua, + + getFlashPlayerVersion: function() { + return { major:ua.pv[0], minor:ua.pv[1], release:ua.pv[2] }; + }, + + hasFlashPlayerVersion: hasPlayerVersion, + + createSWF: function(attObj, parObj, replaceElemIdStr) { + if (ua.w3) { + return createSWF(attObj, parObj, replaceElemIdStr); + } + else { + return undefined; + } + }, + + showExpressInstall: function(att, par, replaceElemIdStr, callbackFn) { + if (ua.w3 && canExpressInstall()) { + showExpressInstall(att, par, replaceElemIdStr, callbackFn); + } + }, + + removeSWF: function(objElemIdStr) { + if (ua.w3) { + removeSWF(objElemIdStr); + } + }, + + createCSS: function(selStr, declStr, mediaStr, newStyleBoolean) { + if (ua.w3) { + createCSS(selStr, declStr, mediaStr, newStyleBoolean); + } + }, + + addDomLoadEvent: addDomLoadEvent, + + addLoadEvent: addLoadEvent, + + getQueryParamValue: function(param) { + var q = doc.location.search || doc.location.hash; + if (q) { + if (/\?/.test(q)) { q = q.split("?")[1]; } // strip question mark + if (param == null) { + return urlEncodeIfNecessary(q); + } + var pairs = q.split("&"); + for (var i = 0; i < pairs.length; i++) { + if (pairs[i].substring(0, pairs[i].indexOf("=")) == param) { + return urlEncodeIfNecessary(pairs[i].substring((pairs[i].indexOf("=") + 1))); + } + } + } + return ""; + }, + + // For internal usage only + expressInstallCallback: function() { + if (isExpressInstallActive) { + var obj = getElementById(EXPRESS_INSTALL_ID); + if (obj && storedAltContent) { + obj.parentNode.replaceChild(storedAltContent, obj); + if (storedAltContentId) { + setVisibility(storedAltContentId, true); + if (ua.ie && ua.win) { storedAltContent.style.display = "block"; } + } + if (storedCallbackFn) { storedCallbackFn(storedCallbackObj); } + } + isExpressInstallActive = false; + } + } + }; +}(); diff --git a/plugin/editor/cheditor5/popup/js/symbol.js b/plugin/editor/cheditor5/popup/js/symbol.js new file mode 100644 index 000000000..e5e510819 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/symbol.js @@ -0,0 +1,167 @@ +// ================================================================ +// CHEditor 5 +// ---------------------------------------------------------------- +// Homepage: http://www.chcode.com +// Copyright (c) 1997-2014 CHSOFT +// ================================================================ +var c = null; +var curView = null; +var S1 = '" ( ) [ ] { } ‘ ’ “ ” 〔 〕 〈 〉 《 》 「 」 『 』 【 】 § ※ ☆ ★ ○ ● ■ △ ▲ ▽ ▼ → 〓 ◁ ◀ ▷ ▶ ♤ ♣ ⊙ ◈ ▣ ◐ ◑ ▧ ▦ ▩ ♨ ☏ ☎ ‡ ㉿ ↕ ↗ ↙ ↖ ↘ ㈜ № ㏇ ™ ㏂ + - < = > ± × ÷ ≠ ≤ ≥ ∞ ∴ ♂ ♀ ∠ ⊥ ⌒ ∂ ∇ ≡ ≒ ≪ ≫ √ ∽ ∝ ∵ ∫ ∬ ∈ ∋ ⊆ ⊇ ⊂ ⊃ ∮ ∪ ∩ ∑ ∏ ∧ ∨ ¬ ⇒ ⇔ ∀ ∃'; +var S2 = '─ │ ┌ ┐ ┘ └ ├ ┬ ┤ ┴ ┼ ━ ┃ ┏ ┓ ┛ ┗ ┣ ┳ ┫ ┻ ╋ ┠ ┯ ┨ ┷ ┿ ┝ ┰ ┥ ┸ ╂ ┒ ┑ ┚ ┙ ┖ ┕ ┎ ┍ ┞ ┟ ┡ ┢ ┦ ┧ ┩ ┪ ┭ ┮ ┱ ┲ ┵ ┶ ┹ ┺ ┽ ┾ ╀ ╁ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊'; +var S3 = '½ ⅓ ⅔ ¼ ¾ ⅛ ⅜ ⅝ ⅞ ¹ ² ³ ⁴ ⁿ ₁ ₂ ₃ ₄ 0 1 2 3 4 5 6 7 8 9 ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ $ % ₩ ° ′ ″ ℃ Å ¢ £ ¥ ¤ ℉ ‰ ㎕ ㎖ ㎗ ℓ ㎘ ㏄ ㎣ ㎤ ㎥ ㎦ ㎙ ㎚ ㎛ ㎜ ㎝ ㎞ ㎟ ㎠ ㎡ ㎢ ㏊ ㎍ ㎎ ㎏ ㏏ ㎈ ㎉ ㏈ ㎧ ㎨ ㎰ ㎱ ㎲ ㎳ ㎴ ㎵ ㎶ ㎷ ㎸ ㎹ ㎀ ㎁ ㎂ ㎃ ㎄ ㎺ ㎻ ㎼ ㎽ ㎾ ㎿ ㎐ ㎑ ㎒ ㎓ ㎔ Ω ㏀ ㏁ ㎊ ㎋ ㎌ ㏖ ㏅ ㎭ ㎮ ㎯ ㏛ ㎩ ㎪ ㎫ ㎬ ㏝ ㏐ ㏓ ㏉ ㏜ ㏆'; +var S4 = 'ㅥ ㅦ ㅧ ㅨ ㅩ ㅪ ㅫ ㅬ ㅭ ㅮ ㅰ ㅯ ㅱ ㅲ ㅳ ㅴ ㅵ ㅶ ㅷ ㅸ ㅹ ㅺ ㅻ ㅼ ㅽ ㅾ ㅿ ㆀ ㆁ ㆂ ㆃ ㆄ ㆅ ㆆ ㆇ ㆈ ㆉ ㆊ ㆋ ㆌ ㆍ ㆎ'; +var S5 = '㉠ ㉡ ㉢ ㉣ ㉤ ㉥ ㉦ ㉧ ㉨ ㉩ ㉪ ㉫ ㉬ ㉭ ㉮ ㉯ ㉰ ㉱ ㉲ ㉳ ㉴ ㉶ ㉶ ㉷ ㉸ ㉹ ㉺ ㉻ ㈀ ㈁ ㈂ ㈃ ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂'; +var japan1 = 'ぁ か さ た ど び ぽ ょ ゑ あ が ざ だ な ぴ ま よ を ぃ き し ち に ふ み ら ん い ぎ じ ぢ ぬ ぶ む り ぅ く す っ ね ぷ め る う ぐ ず つ の へ も れ ぇ け せ づ は べ ゃ ろ え げ ぜ て ば ぺ や ゎ ぉ こ そ で ぱ ほ ゅ わ お ご ぞ と ひ ぼ ゆ ゐ'; +var japan2 = 'ァ カ サ タ ド ビ ポ ョ ヱ ア ガ ザ ダ ナ ピ マ ヨ ヲ ィ キ シ チ ニ フ ミ ラ ン イ ギ ジ ヂ ヌ ブ ム リ ヴ ゥ ク ス ッ ネ プ メ ル ヵ ウ グ ズ ツ ノ ヘ モ レ ヶ ェ ケ セ ヅ ハ ベ ャ ロ エ ゲ ゼ テ バ ペ ヤ ヮ ォ コ ソ デ パ ホ ュ ワ オ ゴ ゾ ト ヒ ボ ユ ヰ'; + +c = S1.split(' '); +var button = [ { alt : "", img : 'input.gif', cmd : inputChar }, + { alt : "", img : 'cancel.gif', cmd : popupClose } ]; + +var oEditor = null; + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + var dlg = new Dialog(oEditor); + dlg.showButton(button); + + setupEvent(); + dlg.setDialogHeight(); +} + +function hover(obj, val) { + obj.style.backgroundColor = val ? "#5579aa" : "#fff"; + obj.style.color = val ? "#fff" : "#000"; +} + +function showTable() { + var k = 0; + var len = c.length; + var w = 9; + var h = 20; + var span, i, j, tr, td; + + var table = document.createElement('table'); + table.border = 0; + table.cellSpacing = 1; + table.cellPadding = 0; + table.align = 'center'; + + var getChar = function() { + document.getElementById('fm_input').value = document.getElementById('fm_input').value + c[this.id]; + }; + var mouseOver = function() { + hover(this, true); + }; + var mouseOut = function() { + hover(this, false); + }; + for (i=0; i < w; i++) { + tr = table.insertRow(i); + for (j = 0; j < h; j++) { + td = tr.insertCell(j); + td.className = 'schar'; + + if ( len < k+1) { + td.appendChild(document.createTextNode('\u00a0')); + } + else { + td.style.cursor = 'pointer'; + td.id = k; + td.onclick = getChar; + td.onmouseover = mouseOver; + td.onmouseout = mouseOut; + span = document.createElement("span"); + span.style.fontSize = "13px"; + span.appendChild(document.createTextNode(c[k])); + td.appendChild(span); + } + k++; + } + } + + var output = document.getElementById('output'); + if (output.hasChildNodes()) { + for (i=0; i 0) { + cell = createHeadCell('col'); + } + else { + cell = document.createElement('td'); + } + } + else if (header === 'row' && j === 0) { + cell = createHeadCell('row'); + } + else { + cell = document.createElement('td'); + } + + if (border) { + cell.style.borderStyle = 'solid'; + cell.style.borderWidth = table.style.borderWidth; + cell.style.borderColor = table.style.borderColor; + } +// cell.setAttribute("width", cellWidth); + cell.appendChild(document.createTextNode('\u00a0')); + row.appendChild(cell); + } + } + + if (oHead.hasChildNodes()) { + table.appendChild(oHead); + } + + table.appendChild(oBody); + + if (summaryValue !== '') { + table.setAttribute('summary', summaryValue); + } + if (width) { + table.style.width = width; + } + if (height) { + table.style.height = height; + } + if (align) { + table.setAttribute("align", align); + } + if (bgcolor) { + table.setAttribute("bgcolor", bgcolor); + } + + table.setAttribute("cellpadding", cellpd); + table.setAttribute("cellspacing", cellsp); + + if (captionValue !== '') { + var hideCaption, tableCaption; + tableCaption = table.createCaption(); + tableCaption.appendChild(document.createTextNode(captionValue)); + + hideCaption = document.getElementById('hideCaption'); + if (hideCaption.checked === true) { + tableCaption.style.visibility = 'hidden'; + tableCaption.style.overFlow = 'hidden'; + tableCaption.style.lineHeight = '0px'; + tableCaption.style.position = 'absolute'; + tableCaption.style.display = 'none'; + } + } + + table.id = oEditor.makeRandomString(); + oEditor.insertHtmlPopup(table.cloneNode(true)); + var newTable = oEditor.$(table.id); + newTable.removeAttribute('id'); + + if (cssclass) { + newTable.className = cssclass; + } + if (cssid) { + newTable.id = cssid; + } + + var focusCell = newTable.getElementsByTagName('th')[0]; + if (oEditor.undefined(focusCell)) { + focusCell = newTable.getElementsByTagName('td')[0]; + } + + if (oEditor.getBrowser().msie) { + var cursor = oEditor.doc.body.createTextRange(); + cursor.moveToElementText(focusCell); + cursor.collapse(false); + cursor.select(); + oEditor.backupRange(oEditor.getRange()); + } + else { + var selection = oEditor.getSelection(); + var range = oEditor.getRange(); + range.selectNodeContents(focusCell); + range.collapse(false); + selection.removeAllRanges(); + selection.addRange(range); + } + + oEditor.popupWinClose(); +} + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + var button = [ { alt : "", img : 'submit.gif', cmd : doSubmit }, + { alt : "", img : 'cancel.gif', cmd : popupClose } ]; + + var dlg = new Dialog(oEditor); + dlg.showButton(button); + dlg.setDialogHeight(); +} diff --git a/plugin/editor/cheditor5/popup/js/table_modify.js b/plugin/editor/cheditor5/popup/js/table_modify.js new file mode 100644 index 000000000..30ff2c575 --- /dev/null +++ b/plugin/editor/cheditor5/popup/js/table_modify.js @@ -0,0 +1,640 @@ +// ================================================================ +// CHEditor 5 +// ---------------------------------------------------------------- +// Homepage: http://www.chcode.com +// Copyright (c) 1997-2014 CHSOFT +// ================================================================ +var oEditor = null; +var button = [ { alt : "", img : 'submit.gif', cmd : doSubmit }, + { alt : "", img : 'cancel.gif', cmd : popupClose } ]; + +var colour = ["ffffcc","ffcc66","ff9900","ffcc99","ff6633","ffcccc","cc9999","ff6699","ff99cc","ff66cc","ffccff","cc99cc","cc66ff","cc99ff","9966cc","ccccff","9999cc","3333ff","6699ff","0066ff","99ccff","66ccff","99cccc","ccffff","99ffcc","66cc99","66ff99","99ff99","ccffcc","33ff33","66ff00","ccff99","99ff00","ccff66","cccc66","ffffff", + "ffff99","ffcc00","ff9933","ff9966","cc3300","ff9999","cc6666","ff3366","ff3399","ff00cc","ff99ff","cc66cc","cc33ff","9933cc","9966ff","9999ff","6666ff","3300ff","3366ff","0066cc","3399ff","33ccff","66cccc","99ffff","66ffcc","33cc99","33ff99","66ff66","99cc99","00ff33","66ff33","99ff66","99ff33","ccff00","cccc33","cccccc", + "ffff66","ffcc33","cc9966","ff6600","ff3300","ff6666","cc3333","ff0066","ff0099","ff33cc","ff66ff","cc00cc","cc00ff","9933ff","6600cc","6633ff","6666cc","3300cc","0000ff","3366cc","0099ff","00ccff","339999","66ffff","33ffcc","00cc99","00ff99","33ff66","66cc66","00ff00","33ff00","66cc00","99cc66","ccff33","999966","999999", + "ffff33","cc9900","cc6600","cc6633","ff0000","ff3333","993333","cc3366","cc0066","cc6699","ff33ff","cc33cc","9900cc","9900ff","6633cc","6600ff","666699","3333cc","0000cc","0033ff","6699cc","3399cc","669999","33ffff","00ffcc","339966","33cc66","00ff66","669966","00cc00","33cc00","66cc33","99cc00","cccc99","999933","666666", + "ffff00","cc9933","996633","993300","cc0000","ff0033","990033","996666","993366","cc0099","ff00ff","990099","996699","660099","663399","330099","333399","000099","0033cc","003399","336699","0099cc","006666","00ffff","33cccc","009966","00cc66","339933","336633","33cc33","339900","669933","99cc33","666633","999900","333333", + "cccc00","996600","663300","660000","990000","cc0033","330000","663333","660033","990066","cc3399","993399","660066","663366","330033","330066","333366","000066","000033","003366","006699","003333","336666","00cccc","009999","006633","009933","006600","003300","00cc33","009900","336600","669900","333300","666600","000000"]; + +var none = '없음'; +var modifyTable; +var beforeHeaderType; +var whichColor = null; + +function popupClose() { + oEditor.popupWinCancel(); +} + +function isError() { + alert('표 정보를 얻을 수 없습니다. 수정하실 표을 다시 한 번 선택해 주십시오.'); + popupClose(); +} + +function init(dialog) { + oEditor = this; + oEditor.dialog = dialog; + + var dlg = new Dialog(oEditor); + dlg.showButton(button); + dlg.setDialogHeight(); + + var rng = oEditor.range, pNode; + + if (oEditor.W3CRange) { + pNode = rng.commonAncestorContainer; + if (!rng.collapsed && + rng.startContainer === rng.endContainer && + rng.startOffset - rng.endOffset < 2 && + rng.startContainer.hasChildNodes()) + { + pNode = rng.startContainer.childNodes[rng.startOffset]; + } + + while (pNode.nodeType === 3) { + pNode = pNode.parentNode; + } + + if (pNode.nodeName !== 'TD' && pNode.nodeName !== 'TH' && pNode.nodeName !== 'CAPTION' && pNode.nodeName !== 'TABLE') + { + isError(); + return; + } + } + else { + if (rng.item) { + pNode = rng.item(0); + if (pNode.nodeName.toLowerCase() !== 'table') { + isError(); + return; + } + } + else { + pNode = rng.parentElement(); + } + } + + while (pNode && pNode.nodeName.toLowerCase() !== 'table') { + pNode = pNode.parentNode; + } + + if (pNode.nodeName.toLowerCase() !== 'table') { + isError(); + return; + } + + modifyTable = pNode; + var border, el_size, fm_size, el_type, fm_type, cellpd, cellsp, bgcolor, idbgcolor, + bordercolor, idbordercolor, captionValue, summaryValue, caption, captionInput, summary; + + border = modifyTable.getAttribute('border'); + if (!border || isNaN(border)) { + border = parseInt(modifyTable.style.borderWidth, 10); + if (!border) { + border = 0; + } + } + document.getElementById("bordersize").value = border; + + if (modifyTable.className !== '') { + document.getElementById('cssClass').value = modifyTable.className; + } + if (modifyTable.id !== '') { + document.getElementById('cssId').value = modifyTable.id; + } + + el_size = modifyTable.getAttribute('width'); + if (!el_size) { + el_size = modifyTable.style.width; + } + + fm_size = document.getElementById("width"); + el_type = 'px'; + fm_type = document.getElementById("widthtype"); + + if (el_size) { + el_type = (/%$/.test(el_size)) ? '%' : 'px'; + el_size = parseInt(el_size, 10); + if (isNaN(el_size)) { + el_size = ''; + } + } + else { + el_size = ''; + } + + fm_size.value = el_size; + fm_type.value = el_type; + + el_size = modifyTable.getAttribute('height'); + if (!el_size) { + el_size = modifyTable.style.height; + } + fm_size = document.getElementById("height"); + el_type = 'px'; + fm_type = document.getElementById("heighttype"); + + if (el_size) { + el_type = (/\%$/.test(el_size)) ? '%' : 'px'; + el_size = parseInt(el_size, 10); + if (isNaN(el_size)) { + el_size = ''; + } + } + else { + el_size = ''; + } + + fm_size.value = el_size; + fm_type.value = el_type; + + fm_type = modifyTable.getAttribute('align'); + if (!fm_type) { + fm_type = 'none'; + } + document.getElementById("talign").value = fm_type; + + cellpd = modifyTable.getAttribute('cellpadding'); + if (isNaN(cellpd)) { + cellpd = 0; + } + document.getElementById("cellpd").value = cellpd || 0; + + cellsp = modifyTable.getAttribute('cellspacing'); + if (isNaN(cellsp)) { + cellsp = 0; + } + document.getElementById("cellsp").value = cellsp || 0; + + bgcolor = modifyTable.getAttribute('bgcolor'); + idbgcolor = document.getElementById("idbgcolor"); + if (bgcolor) { + if (/rgb/.test(bgcolor)) { + bgcolor = oEditor.colorConvert(bgcolor, 'hex'); + } + idbgcolor.value = bgcolor.toLowerCase(); + idbgcolor.style.backgroundColor = idbgcolor.value; + } + else { + idbgcolor.value = none; + } + + bordercolor = modifyTable.getAttribute('bordercolor'); + if (!bordercolor) { + bordercolor = modifyTable.style.borderColor; + if (bordercolor) { + bordercolor = oEditor.colorConvert(bordercolor, 'hex'); + } + else { + bordercolor = null; + } + } + + idbordercolor = document.getElementById("idbordercolor"); + if (bordercolor) { + if (/rgb/.test(bordercolor)) { + bordercolor = oEditor.colorConvert(bordercolor, 'hex'); + } + idbordercolor.value = bordercolor.toLowerCase(); + idbordercolor.style.backgroundColor = idbordercolor.value; + } + else { + idbordercolor.value = none; + } + + caption = modifyTable.getElementsByTagName('caption')[0]; + if (caption) { + captionValue = oEditor.trimSpace(caption.innerHTML); + if (captionValue !== '') { + captionInput = document.getElementById('tableCaption'); + captionInput.value = captionValue; + + if (caption.style.visibility === 'hidden') { + document.getElementById('hideCaption').checked = 'checked'; + } + } + } + + summaryValue = modifyTable.getAttribute('summary'); + if (summaryValue) { + summaryValue = oEditor.trimSpace(summaryValue); + if (summaryValue !== '') { + summary = document.getElementById('tableSummary'); + summary.value = summaryValue; + } + } + + var tableHeader, rows, i, j, cells, headCol, headRow, rowLength, rowCellLength, cellLength, header, headTagName; + headCol = headRow = null; + headTagName = 'th'; + + tableHeader = document.getElementById('tableHeader'); + rows = (modifyTable.rows && modifyTable.rows.length > 0) ? modifyTable.rows : modifyTable.getElementsByTagName('tr'); + rowLength = rows.length; + + document.getElementById('numrows').appendChild(document.createTextNode(rowLength)); + + if (rowLength > 0) { + cells = rows[0].cells; + cellLength = cells.length; + if (cellLength > 0) { + for (j=0; j < cellLength; j++) { + if (cells[j].tagName.toLowerCase() === headTagName) { + headCol = 'col'; + } + else { + headCol = null; + break; + } + } + } + + rowCellLength = 0; + for (i=0; i < rowLength; i++) { + headRow = (rows[i].cells[0] && rows[i].cells[0].tagName.toLowerCase() === headTagName) ? 'row' : null; + if (rowCellLength < rows[i].cells.length) { + rowCellLength = rows[i].cells.length; + } + } + + if (headRow && headCol && cellLength === 1) { + headCol = null; + } + document.getElementById('numcols').appendChild(document.createTextNode(rowCellLength)); + } + + header = (headCol && headRow) ? 'all' : headCol || headRow || 'none'; + tableHeader.value = beforeHeaderType = header; +} + +function getColor() +{ + var color = this.bgColor; + var input = document.getElementById("id"+whichColor); + input.style.backgroundColor = input.value = color; +} + +function drawColor() { + var table, tr, td, insideTable, k = 0, i, j, tr2, td2; + + table = document.createElement('table'); + table.cellPadding = 0; + table.cellSpacing = 0; + table.border = 0; + table.align = 'center'; + tr = table.insertRow(0); + td = tr.insertCell(0); + td.style.backgroundColor = '#fff'; + + insideTable = document.createElement('table'); + insideTable.border = 0; + insideTable.cellSpacing = 1; + insideTable.cellPadding = 0; + insideTable.align = 'center'; + + var onMouseOver = function() { this.className = 'colorCellMouseOver'; }; + var onMouseOut = function() { this.className = 'colorCellMouseOut'; }; + + for (i = 0; i < 6; i++) { + tr2 = insideTable.insertRow(i); + for (j = 0; j < 36; j++) { + td2 = tr2.insertCell(j); + td2.setAttribute('bgColor', '#' + colour[k]); + td2.className = 'colorCellMouseOut'; + td2.onclick = getColor; + td2.appendChild(document.createTextNode('\u00a0')); + td2.onmouseover = onMouseOver; + td2.onmouseout = onMouseOut; + k++; + } + } + + td.appendChild(insideTable); + document.getElementById('colorWrapper').appendChild(table); +} + +function setColor(which) { + whichColor = which; +} + +function doSubmit() +{ + var width, widthType, widthValue, cellWidth, i, j, row, rows, cell; + width = document.getElementById("width"); + widthType = document.getElementById("widthtype").value; + if (width) { + widthValue = parseInt(oEditor.trimSpace(width.value), 10); + if (isNaN(widthValue)) { + cellWidth = widthValue = null; + } + else { + modifyTable.removeAttribute('width'); + modifyTable.style.width = widthValue + widthType; + rows = modifyTable.rows; + if (rows.length > 0) { + for (i=0; i < rows.length; i++) { + row = rows[i]; + for (j=0; j < row.cells.length; j++) { + cellWidth = parseInt(widthValue/row.cells.length, 10) + widthType; + cell = row.cells[j]; + cell.setAttribute("width", cellWidth); + } + } + } + } + } + + var height, heightValue; + height = document.getElementById("height"); + if (height) { + heightValue = parseInt(oEditor.trimSpace(height.value), 10); + if (isNaN(heightValue)) { + heightValue = null; + } + else { + heightValue += document.getElementById("heighttype").value; + modifyTable.removeAttribute('height'); + modifyTable.style.height = heightValue; + } + } + + var cellpadding, cellpaddingValue; + cellpadding = document.getElementById("cellpd"); + if (cellpadding) { + cellpaddingValue = oEditor.trimSpace(cellpadding.value); + if (!cellpaddingValue || isNaN(cellpaddingValue)) { + cellpaddingValue = 0; + } + else { + cellpaddingValue = parseInt(cellpaddingValue, 10); + } + modifyTable.setAttribute('cellpadding', cellpaddingValue); + } + + var cellspacing, cellspacingValue; + cellspacing = document.getElementById("cellsp"); + if (cellspacing) { + cellspacingValue = oEditor.trimSpace(cellspacing.value); + if (!cellspacingValue || isNaN(cellspacingValue)) { + cellspacingValue = 0; + } + else { + cellspacingValue = parseInt(cellspacingValue, 10); + } + modifyTable.setAttribute('cellspacing', cellspacingValue); + } + + var bgcolor, bgcolorValue; + bgcolor = document.getElementById("idbgcolor"); + if (bgcolor) { + bgcolorValue = oEditor.trimSpace(bgcolor.value); + if (bgcolorValue !== '' && bgcolorValue !== none) { + modifyTable.removeAttribute('bgcolor'); + modifyTable.bgColor = bgcolorValue; + } + } + + var align, alignValue; + align = document.getElementById("talign"); + if (align) { + alignValue = align.value; + if (alignValue !== 'none') { + modifyTable.removeAttribute('align'); + modifyTable.setAttribute('align', alignValue); + } + } + + var cssclass, cssclassValue, cssid, cssidValue; + cssclass = document.getElementById('cssClass'); + cssclassValue = oEditor.trimSpace(cssclass.value); + if (cssclassValue !== '') { + modifyTable.className = cssclassValue; + } + else { + modifyTable.removeAttribute('class'); + } + + cssid = document.getElementById('cssId'); + cssidValue = oEditor.trimSpace(cssid.value); + if (cssidValue !== '') { + modifyTable.id = cssidValue; + } + else { + modifyTable.removeAttribute('id'); + } + + var caption = document.getElementById('tableCaption'); + var captionValue = oEditor.trimSpace(caption.value); + var summary = document.getElementById('tableSummary'); + var summaryValue = oEditor.trimSpace(summary.value); + var oCaption; + + if (summaryValue !== '') { + modifyTable.setAttribute('summary', summaryValue); + } + if (captionValue !== '') { + var hideCaption, tableCaption; + tableCaption = modifyTable.createCaption(); + tableCaption.innerHTML = captionValue; + + hideCaption = document.getElementById('hideCaption'); + if (hideCaption.checked === true) { + tableCaption.style.visibility = 'hidden'; + tableCaption.style.overFlow = 'hidden'; + tableCaption.style.lineHeight = '0px'; + tableCaption.style.position = 'absolute'; + tableCaption.style.display = 'none'; + } + else { + tableCaption.removeAttribute('style'); + } + } + else { + oCaption = modifyTable.getElementsByTagName('caption')[0]; + if (oCaption) { + modifyTable.removeChild(oCaption); + } + } + + var copyAttribute = function(target, source) { + var attr, attrValue, nodeName; + attr = source.attributes; + for (i=0; i= 0; j--) { + row.deleteCell(j); + } + + for (j=0; j < newCells.length; j++) { + row.appendChild(newCells[j]); + } + + if (newTagName === 'th') { + oHead = modifyTable.getElementsByTagName('thead')[0]; + if (!oHead) { + oHead = document.createElement('thead'); + modifyTable.insertBefore(oHead, modifyTable.firstChild); + oHead.appendChild(row); + } + } + else if (row.parentNode.nodeName.toLowerCase() === 'thead') { + oHead = row.parentNode; + if (rows[1]) { + rows[1].parentNode.insertBefore(row, rows[1]); + } + else { + modifyTable.insertBefore(row, oHead); + } + modifyTable.removeChild(oHead); + } + }; + + var replaceRow = function (rows, newTagName) { + var len, newCell, sourceCell; + len = rows.length; + for (i=0; i < len; i++) { + row = rows[i]; + sourceCell = row.cells[0]; + newCell = document.createElement(newTagName); + + if (newTagName === 'th') { + newCell.setAttribute('scope', 'row'); + } + else { + sourceCell.removeAttribute('scope'); + } + + row.insertBefore(newCell, sourceCell); + copyAttribute(newCell, sourceCell); + copyChildNodes(newCell, sourceCell); + row.deleteCell(1); + } + }; + + var border, borderValue; + if (beforeHeaderType !== tableHeader) { + rows = (modifyTable.rows && modifyTable.rows.length > 0) ? + modifyTable.rows : + modifyTable.getElementsByTagName('tr'); + + if (tableHeader === 'col') { + replaceRow(rows, 'td'); + replaceCol(rows, 'th'); + } + else if (tableHeader === 'row') { + replaceCol(rows, 'td'); + replaceRow(rows, 'th'); + } + else if (tableHeader === 'all') { + replaceCol(rows, 'th'); + replaceRow(rows, 'th'); + } + else if (tableHeader === 'none') { + replaceCol(rows, 'td'); + replaceRow(rows, 'td'); + } + + oCaption = modifyTable.getElementsByTagName('caption')[0]; + if (oCaption && oCaption !== modifyTable.firstChild) { + modifyTable.insertBefore(oCaption, modifyTable.firstChild); + } + } + + + border = document.getElementById("bordersize"); + if (border) { + borderValue = oEditor.trimSpace(border.value); + if (isNaN(borderValue) === false) { + var borderColor, borderColorValue; + borderValue = parseInt(borderValue, 10); + rows = (modifyTable.rows && modifyTable.rows.length > 0) ? + modifyTable.rows : + modifyTable.getElementsByTagName('tr'); + + if (borderValue) { + borderColor = document.getElementById("idbordercolor"); + if (borderColor) { + borderColorValue = oEditor.trimSpace(borderColor.value); + } + if (!borderColorValue || borderColorValue === none) { + borderColorValue = '#000000'; + } + + borderColorValue = oEditor.colorConvert(borderColorValue, 'rgb'); + + modifyTable.style.border = borderValue + 'px solid ' + borderColorValue; + modifyTable.style.borderCollapse = "collapse"; + modifyTable.removeAttribute('border'); + + for (i=0; i < rows.length; i++) { + row = rows[i]; + for (j=0; j < row.cells.length; j++) { + cell = row.cells[j]; + cell.style.border = borderValue + 'px solid ' + borderColorValue; + } + } + } + else if (borderValue === 0) { + modifyTable.removeAttribute('border'); + modifyTable.style.border = ''; + modifyTable.style.borderCollapse = ''; + for (i=0; i < rows.length; i++) { + row = rows[i]; + for (j=0; j < row.cells.length; j++) { + cell = row.cells[j]; + cell.style.border = ''; + } + } + } + } + } + + oEditor.editArea.focus(); + oEditor.backupRange(oEditor.restoreRange()); + oEditor.clearStoredSelections(); + oEditor.popupWinClose(); +} \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/link.html b/plugin/editor/cheditor5/popup/link.html new file mode 100644 index 000000000..62b45d6b0 --- /dev/null +++ b/plugin/editor/cheditor5/popup/link.html @@ -0,0 +1,70 @@ + + + + CHEditor + + + + + + + +
+
+ + + + + +
+ + + + + + + + + + + + + + + +
유형: + + + 타겟: + + +
URL: + + +
타이틀: + + +
+
+
+
+
+ + diff --git a/plugin/editor/cheditor5/popup/media.html b/plugin/editor/cheditor5/popup/media.html new file mode 100644 index 000000000..a2addd74b --- /dev/null +++ b/plugin/editor/cheditor5/popup/media.html @@ -0,0 +1,40 @@ + + + + CHEditor + + + + + + + +
+
미디어 재생 + + + + +
+
+
+
+
+
미디어 파일 URL + + + + + + + +
+ URL 입력: +
+ +
+
+
+
+ + diff --git a/plugin/editor/cheditor5/popup/symbol.html b/plugin/editor/cheditor5/popup/symbol.html new file mode 100644 index 000000000..039564fe9 --- /dev/null +++ b/plugin/editor/cheditor5/popup/symbol.html @@ -0,0 +1,26 @@ + + + + CHEditor + + + + + + + + | + | + | + | + | + +
+ +
+
+ 선택한 문자: +
+
+ + diff --git a/plugin/editor/cheditor5/popup/table.html b/plugin/editor/cheditor5/popup/table.html new file mode 100644 index 000000000..a35b2584a --- /dev/null +++ b/plugin/editor/cheditor5/popup/table.html @@ -0,0 +1,178 @@ + + + + CHEditor + + + + + + + +
표 속성 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
줄 수: + + 칸 수: + +

너비: + + + + 높이: + + + +
셀 안 여백: + + 셀 간격: + +
테두리 굵기: +  픽셀 + 정렬: + +

표 제목: + + 표 제목 숨김: +
표 요약: + + 표 헤더: + +

CSS class: + + CSS id: + +
+
+
+
+
색 지정 +
+ + + + + + + +
테두리 색: + +
+ +
+
 
+
표 배경색: + +
+ +
+
 
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/plugin/editor/cheditor5/popup/table_modify.html b/plugin/editor/cheditor5/popup/table_modify.html new file mode 100644 index 000000000..4a84260f2 --- /dev/null +++ b/plugin/editor/cheditor5/popup/table_modify.html @@ -0,0 +1,180 @@ + + + + CHEditor + + + + + + + +
표 속성 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
줄 수: + + 칸 수: + +

너비: + + + + 높이: + + + +
셀 안 여백: + + 셀 간격: + +
테두리 굵기: + + 정렬: + +

표 제목: + + 표 제목 숨김: + +
표 요약: + + 표 헤더: + +

CSS class: + + CSS id: + +
+
+
+
+
색 지정 +
+ + + + + + + +
테두리 색: + +
+ +
+
 
+
표 배경색: + +
+ +
+
 
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/plugin/editor/cheditor5/template.xml b/plugin/editor/cheditor5/template.xml new file mode 100644 index 000000000..8aef7b6f0 --- /dev/null +++ b/plugin/editor/cheditor5/template.xml @@ -0,0 +1,368 @@ + + + \ No newline at end of file diff --git a/plugin/editor/cheditor5/utils/crossdomain.xml b/plugin/editor/cheditor5/utils/crossdomain.xml new file mode 100644 index 000000000..786354ea5 --- /dev/null +++ b/plugin/editor/cheditor5/utils/crossdomain.xml @@ -0,0 +1,6 @@ + + + + + + From db32bcfc06953d96e769dee6f9fe98430b0ec33a Mon Sep 17 00:00:00 2001 From: thisgun Date: Wed, 18 Jan 2017 10:44:03 +0900 Subject: [PATCH 3/5] =?UTF-8?q?PHPMailer=205.2.22=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/PHPMailer/VERSION | 2 +- plugin/PHPMailer/class.phpmailer.php | 86 +++++++++++++++---- plugin/PHPMailer/class.pop3.php | 2 +- plugin/PHPMailer/class.smtp.php | 4 +- plugin/PHPMailer/examples/contactform.phps | 71 +++++++++++++++ plugin/PHPMailer/examples/contentsutf8.html | 1 + plugin/PHPMailer/examples/scripts/XRegExp.js | 2 +- .../PHPMailer/examples/send_file_upload.phps | 2 +- .../examples/send_multiple_file_upload.phps | 2 +- plugin/PHPMailer/extras/htmlfilter.php | 6 +- 10 files changed, 153 insertions(+), 25 deletions(-) create mode 100644 plugin/PHPMailer/examples/contactform.phps diff --git a/plugin/PHPMailer/VERSION b/plugin/PHPMailer/VERSION index 1c26b6f22..07b26572f 100644 --- a/plugin/PHPMailer/VERSION +++ b/plugin/PHPMailer/VERSION @@ -1 +1 @@ -5.2.19 \ No newline at end of file +5.2.22 diff --git a/plugin/PHPMailer/class.phpmailer.php b/plugin/PHPMailer/class.phpmailer.php index 6afcf9ae9..477ee826e 100644 --- a/plugin/PHPMailer/class.phpmailer.php +++ b/plugin/PHPMailer/class.phpmailer.php @@ -31,7 +31,7 @@ class PHPMailer * The PHPMailer Version number. * @var string */ - public $Version = '5.2.19'; + public $Version = '5.2.22'; /** * Email priority. @@ -1364,19 +1364,24 @@ class PHPMailer */ protected function sendmailSend($header, $body) { - if (!empty($this->Sender)) { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) and self::isShellSafe($this->Sender)) { if ($this->Mailer == 'qmail') { - $sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + $sendmailFmt = '%s -f%s'; } else { - $sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); + $sendmailFmt = '%s -oi -f%s -t'; } } else { if ($this->Mailer == 'qmail') { - $sendmail = sprintf('%s', escapeshellcmd($this->Sendmail)); + $sendmailFmt = '%s'; } else { - $sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail)); + $sendmailFmt = '%s -oi -t'; } } + + // TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing. + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + if ($this->SingleTo) { foreach ($this->SingleToArray as $toAddr) { if (!@$mail = popen($sendmail, 'w')) { @@ -1422,6 +1427,40 @@ class PHPMailer return true; } + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * @param string $string The string to be validated + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * @access protected + * @return boolean + */ + protected static function isShellSafe($string) + { + // Future-proof + if (escapeshellcmd($string) !== $string + or !in_array(escapeshellarg($string), array("'$string'", "\"$string\"")) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; $i++) { + $c = $string[$i]; + + // All other characters have a special meaning in at least one common shell, including = and +. + // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + // Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + /** * Send mail using the PHP mail() function. * @param string $header The message headers @@ -1442,7 +1481,10 @@ class PHPMailer $params = null; //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { - $params = sprintf('-f%s', escapeshellarg($this->Sender)); + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } } if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) { $old_from = ini_get('sendmail_from'); @@ -2450,6 +2492,7 @@ class PHPMailer /** * Add an attachment from a path on the filesystem. + * Never use a user-supplied path to a file! * Returns false if the file could not be found or read. * @param string $path Path to the attachment. * @param string $name Overrides the attachment name. @@ -2975,6 +3018,7 @@ class PHPMailer * displayed inline with the message, not just attached for download. * This is used in HTML messages that embed the images * the HTML refers to using the $cid value. + * Never use a user-supplied path to a file! * @param string $path Path to the attachment. * @param string $cid Content ID of the attachment; Use this to reference * the content when using an embedded image in HTML. @@ -3338,12 +3382,14 @@ class PHPMailer * Create a message body from an HTML string. * Automatically inlines images and creates a plain-text version by converting the HTML, * overwriting any existing values in Body and AltBody. - * $basedir is used when handling relative image paths, e.g. + * Do not source $message content from user input! + * $basedir is prepended when handling relative URLs, e.g. and must not be empty * will look for an image file in $basedir/images/a.png and convert it to inline. - * If you don't want to apply these transformations to your HTML, just set Body and AltBody yourself. + * If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email) + * If you don't want to apply these transformations to your HTML, just set Body and AltBody directly. * @access public * @param string $message HTML message string - * @param string $basedir base directory for relative paths to images + * @param string $basedir Absolute path to a base directory to prepend to relative paths to images * @param boolean|callable $advanced Whether to use the internal HTML to text converter * or your own custom converter @see PHPMailer::html2text() * @return string $message The transformed message Body @@ -3352,6 +3398,10 @@ class PHPMailer { preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); if (array_key_exists(2, $images)) { + if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { + // Ensure $basedir has a trailing / + $basedir .= '/'; + } foreach ($images[2] as $imgindex => $url) { // Convert data URIs into embedded images if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { @@ -3369,18 +3419,24 @@ class PHPMailer $message ); } - } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) { - // Do not change urls for absolute images (thanks to corvuscorax) + continue; + } + if ( + // Only process relative URLs if a basedir is provided (i.e. no absolute local paths) + !empty($basedir) + // Ignore URLs containing parent dir traversal (..) + && (strpos($url, '..') === false) // Do not change urls that are already inline images + && substr($url, 0, 4) !== 'cid:' + // Do not change absolute URLs, including anonymous protocol + && !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url) + ) { $filename = basename($url); $directory = dirname($url); if ($directory == '.') { $directory = ''; } $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 - if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { - $basedir .= '/'; - } if (strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; } diff --git a/plugin/PHPMailer/class.pop3.php b/plugin/PHPMailer/class.pop3.php index 32d614b35..f10e688e3 100644 --- a/plugin/PHPMailer/class.pop3.php +++ b/plugin/PHPMailer/class.pop3.php @@ -34,7 +34,7 @@ class POP3 * @var string * @access public */ - public $Version = '5.2.19'; + public $Version = '5.2.22'; /** * Default POP3 port number. diff --git a/plugin/PHPMailer/class.smtp.php b/plugin/PHPMailer/class.smtp.php index 04ced6581..89321171b 100644 --- a/plugin/PHPMailer/class.smtp.php +++ b/plugin/PHPMailer/class.smtp.php @@ -30,7 +30,7 @@ class SMTP * The PHPMailer SMTP version number. * @var string */ - const VERSION = '5.2.19'; + const VERSION = '5.2.22'; /** * SMTP line break constant. @@ -81,7 +81,7 @@ class SMTP * @deprecated Use the `VERSION` constant instead * @see SMTP::VERSION */ - public $Version = '5.2.19'; + public $Version = '5.2.22'; /** * SMTP server port number. diff --git a/plugin/PHPMailer/examples/contactform.phps b/plugin/PHPMailer/examples/contactform.phps new file mode 100644 index 000000000..d85e20456 --- /dev/null +++ b/plugin/PHPMailer/examples/contactform.phps @@ -0,0 +1,71 @@ +isSMTP(); + $mail->Host = 'localhost'; + $mail->Port = 25; + + //Use a fixed address in your own domain as the from address + //**DO NOT** use the submitter's address here as it will be forgery + //and will cause your messages to fail SPF checks + $mail->setFrom('from@example.com', 'First Last'); + //Send the message to yourself, or whoever should receive contact for submissions + $mail->addAddress('whoto@example.com', 'John Doe'); + //Put the submitter's address in a reply-to header + //This will fail if the address provided is invalid, + //in which case we should ignore the whole request + if ($mail->addReplyTo($_POST['email'], $_POST['name'])) { + $mail->Subject = 'PHPMailer contact form'; + //Keep it simple - don't use HTML + $mail->isHTML(false); + //Build a simple message body + $mail->Body = <<send()) { + //The reason for failing to send will be in $mail->ErrorInfo + //but you shouldn't display errors to users - process the error, log it on your server. + $msg = 'Sorry, something went wrong. Please try again later.'; + } else { + $msg = 'Message sent! Thanks for contacting us.'; + } + } else { + $msg = 'Invalid email address, message ignored.'; + } +} +?> + + + + + Contact form + + +

Contact us

+$msg"; +} ?> +
+
+
+
+ +
+ + diff --git a/plugin/PHPMailer/examples/contentsutf8.html b/plugin/PHPMailer/examples/contentsutf8.html index 81a202405..035d10c8d 100644 --- a/plugin/PHPMailer/examples/contentsutf8.html +++ b/plugin/PHPMailer/examples/contentsutf8.html @@ -15,6 +15,7 @@

Russian text: Пустое тело сообщения

Armenian text: Հաղորդագրությունը դատարկ է

Czech text: Prázdné tělo zprávy

+

Emoji: 😂 🦄 💥 📤 📧

diff --git a/plugin/PHPMailer/examples/scripts/XRegExp.js b/plugin/PHPMailer/examples/scripts/XRegExp.js index ebdb9c948..feb66798a 100644 --- a/plugin/PHPMailer/examples/scripts/XRegExp.js +++ b/plugin/PHPMailer/examples/scripts/XRegExp.js @@ -259,7 +259,7 @@ if (XRegExp) { //--------------------------------- - // Overriden native methods + // Overridden native methods //--------------------------------- // Adds named capture support (with backreferences returned as `result.name`), and fixes two diff --git a/plugin/PHPMailer/examples/send_file_upload.phps b/plugin/PHPMailer/examples/send_file_upload.phps index 3004c7628..ab60fd104 100644 --- a/plugin/PHPMailer/examples/send_file_upload.phps +++ b/plugin/PHPMailer/examples/send_file_upload.phps @@ -17,7 +17,7 @@ if (array_key_exists('userfile', $_FILES)) { $mail->setFrom('from@example.com', 'First Last'); $mail->addAddress('whoto@example.com', 'John Doe'); $mail->Subject = 'PHPMailer file sender'; - $mail->msgHTML("My message body"); + $mail->Body = 'My message body'; // Attach the uploaded file $mail->addAttachment($uploadfile, 'My uploaded file'); if (!$mail->send()) { diff --git a/plugin/PHPMailer/examples/send_multiple_file_upload.phps b/plugin/PHPMailer/examples/send_multiple_file_upload.phps index ddb761468..72f21153e 100644 --- a/plugin/PHPMailer/examples/send_multiple_file_upload.phps +++ b/plugin/PHPMailer/examples/send_multiple_file_upload.phps @@ -12,7 +12,7 @@ if (array_key_exists('userfile', $_FILES)) { $mail->setFrom('from@example.com', 'First Last'); $mail->addAddress('whoto@example.com', 'John Doe'); $mail->Subject = 'PHPMailer file sender'; - $mail->msgHTML('My message body'); + $mail->Body = 'My message body'; //Attach multiple files one by one for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) { $uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct])); diff --git a/plugin/PHPMailer/extras/htmlfilter.php b/plugin/PHPMailer/extras/htmlfilter.php index 7727487e5..a86ef579d 100644 --- a/plugin/PHPMailer/extras/htmlfilter.php +++ b/plugin/PHPMailer/extras/htmlfilter.php @@ -433,7 +433,7 @@ function tln_getnxtag($body, $offset) * * @param string $attvalue the by-ref value to check. * @param string $regex the regular expression to check against. - * @param boolean $hex whether the entites are hexadecimal. + * @param boolean $hex whether the entities are hexadecimal. * @return boolean True or False depending on whether there were matches. */ function tln_deent(&$attvalue, $regex, $hex = false) @@ -772,7 +772,7 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images) tln_defang($contentTemp); tln_unspace($contentTemp); - $match = Array('/\/\*.*\*\//', + $match = array('/\/\*.*\*\//', '/expression/i', '/behaviou*r/i', '/binding/i', @@ -780,7 +780,7 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images) '/javascript/i', '/script/i', '/position/i'); - $replace = Array('','idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', ''); + $replace = array('','idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', ''); $contentNew = preg_replace($match, $replace, $contentTemp); if ($contentNew !== $contentTemp) { $content = $contentNew; From 5ba87d99333dfd2afc2640b716b37d301574aee0 Mon Sep 17 00:00:00 2001 From: thisgun Date: Wed, 18 Jan 2017 10:56:01 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EA=B8=80=EC=93=B0=EA=B8=B0=EC=8B=9C=20page?= =?UTF-8?q?=20=EC=A4=91=EB=B3=B5=20=EC=86=8C=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bbs/write_update.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bbs/write_update.php b/bbs/write_update.php index 0d52074ba..2dbbddde1 100644 --- a/bbs/write_update.php +++ b/bbs/write_update.php @@ -692,7 +692,7 @@ if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_emai delete_cache_latest($bo_table); if ($file_upload_msg) - alert($file_upload_msg, G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr); + alert($file_upload_msg, G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr); else goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr); ?> From ce03af265e07e0da106eea8d1e34491fae627641 Mon Sep 17 00:00:00 2001 From: thisgun Date: Wed, 18 Jan 2017 18:08:41 +0900 Subject: [PATCH 5/5] =?UTF-8?q?5.2.6=20=EB=B2=84=EC=A0=84=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.php b/config.php index a17b5a387..b55da4742 100644 --- a/config.php +++ b/config.php @@ -5,7 +5,7 @@ ********************/ define('G5_VERSION', '그누보드5'); -define('G5_GNUBOARD_VER', '5.2.5'); +define('G5_GNUBOARD_VER', '5.2.6'); // 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음 define('_GNUBOARD_', true);