From 9d9b17c90f7a6a9c3d63376239b561d225ead638 Mon Sep 17 00:00:00 2001 From: pecesama Date: Wed, 4 Apr 2007 05:02:28 +0000 Subject: [PATCH] Developers preview version --- admin/add.php | 187 + admin/admin.php | 144 + admin/ajax.php | 40 + admin/close.php | 64 + admin/css/style-codice.css | 337 + admin/index.php | 158 + admin/scripts/mootools.js | 2 + admin/scripts/player.swf | Bin 0 -> 5259 bytes admin/scripts/tiny_mce/blank.htm | 9 + admin/scripts/tiny_mce/langs/en.js | 41 + admin/scripts/tiny_mce/langs/readme.txt | 9 + admin/scripts/tiny_mce/license.txt | 504 ++ .../tiny_mce/plugins/advhr/css/advhr.css | 23 + .../tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 90 + .../tiny_mce/plugins/advhr/images/advhr.gif | Bin 0 -> 153 bytes .../tiny_mce/plugins/advhr/jscripts/rule.js | 43 + .../tiny_mce/plugins/advhr/langs/en.js | 8 + .../scripts/tiny_mce/plugins/advhr/readme.txt | 1 + admin/scripts/tiny_mce/plugins/advhr/rule.htm | 61 + .../plugins/advimage/css/advimage.css | 66 + .../plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 148 + .../tiny_mce/plugins/advimage/image.htm | 241 + .../plugins/advimage/images/sample.gif | Bin 0 -> 1624 bytes .../plugins/advimage/jscripts/functions.js | 534 ++ .../tiny_mce/plugins/advimage/langs/en.js | 27 + .../tiny_mce/plugins/advimage/readme.txt | 1 + .../tiny_mce/plugins/advlink/css/advlink.css | 35 + .../tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 88 + .../plugins/advlink/jscripts/functions.js | 568 ++ .../tiny_mce/plugins/advlink/langs/en.js | 46 + .../scripts/tiny_mce/plugins/advlink/link.htm | 337 + .../tiny_mce/plugins/advlink/readme.txt | 1 + .../plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 46 + .../tiny_mce/plugins/autosave/langs/en.js | 5 + .../tiny_mce/plugins/autosave/readme.txt | 1 + .../tiny_mce/plugins/bbcode/editor_plugin.js | 1 + .../plugins/bbcode/editor_plugin_src.js | 102 + .../tiny_mce/plugins/cleanup/editor_plugin.js | 0 .../plugins/cleanup/editor_plugin_src.js | 10 + .../tiny_mce/plugins/cleanup/readme.txt | 1 + .../plugins/contextmenu/css/contextmenu.css | 74 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 357 + .../plugins/contextmenu/images/spacer.gif | Bin 0 -> 43 bytes .../tiny_mce/plugins/contextmenu/readme.txt | 1 + .../tiny_mce/plugins/devkit/css/devkit.css | 117 + .../tiny_mce/plugins/devkit/css/devkit_ui.css | 15 + .../tiny_mce/plugins/devkit/devkit.htm | 140 + .../tiny_mce/plugins/devkit/editor_plugin.js | 1 + .../plugins/devkit/editor_plugin_src.js | 325 + .../plugins/devkit/images/flip_down.gif | Bin 0 -> 179 bytes .../plugins/devkit/images/flip_up.gif | Bin 0 -> 193 bytes .../plugins/devkit/jscripts/devkit.js | 331 + .../tiny_mce/plugins/devkit/jscripts/diff.js | 1192 +++ .../tiny_mce/plugins/devkit/langs/en.js | 23 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 90 + .../plugins/directionality/images/ltr.gif | Bin 0 -> 155 bytes .../plugins/directionality/images/rtl.gif | Bin 0 -> 153 bytes .../plugins/directionality/langs/en.js | 6 + .../plugins/directionality/readme.txt | 1 + .../plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 63 + .../tiny_mce/plugins/emotions/emotions.htm | 40 + .../plugins/emotions/images/emotions.gif | Bin 0 -> 319 bytes .../plugins/emotions/images/readme.txt | 2 + .../plugins/emotions/images/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/images/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/images/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/images/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes .../plugins/emotions/images/smiley-frown.gif | Bin 0 -> 340 bytes .../emotions/images/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/images/smiley-kiss.gif | Bin 0 -> 338 bytes .../emotions/images/smiley-laughing.gif | Bin 0 -> 344 bytes .../emotions/images/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/images/smiley-sealed.gif | Bin 0 -> 325 bytes .../plugins/emotions/images/smiley-smile.gif | Bin 0 -> 345 bytes .../emotions/images/smiley-surprised.gif | Bin 0 -> 342 bytes .../emotions/images/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../emotions/images/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/images/smiley-wink.gif | Bin 0 -> 351 bytes .../plugins/emotions/images/smiley-yell.gif | Bin 0 -> 336 bytes .../plugins/emotions/jscripts/functions.js | 21 + .../tiny_mce/plugins/emotions/langs/en.js | 22 + .../tiny_mce/plugins/emotions/readme.txt | 1 + .../tiny_mce/plugins/flash/css/content.css | 7 + .../tiny_mce/plugins/flash/css/flash.css | 11 + .../tiny_mce/plugins/flash/editor_plugin.js | 1 + .../plugins/flash/editor_plugin_src.js | 285 + .../scripts/tiny_mce/plugins/flash/flash.htm | 70 + .../tiny_mce/plugins/flash/images/flash.gif | Bin 0 -> 241 bytes .../tiny_mce/plugins/flash/jscripts/flash.js | 107 + .../tiny_mce/plugins/flash/langs/en.js | 11 + .../scripts/tiny_mce/plugins/flash/readme.txt | 1 + .../tiny_mce/plugins/fullpage/blank.htm | 9 + .../plugins/fullpage/css/fullpage.css | 172 + .../plugins/fullpage/editor_plugin.js | 1 + .../plugins/fullpage/editor_plugin_src.js | 227 + .../tiny_mce/plugins/fullpage/fullpage.htm | 577 ++ .../tiny_mce/plugins/fullpage/images/add.gif | Bin 0 -> 893 bytes .../plugins/fullpage/images/fullpage.gif | Bin 0 -> 632 bytes .../plugins/fullpage/images/move_down.gif | Bin 0 -> 194 bytes .../plugins/fullpage/images/move_up.gif | Bin 0 -> 200 bytes .../plugins/fullpage/images/remove.gif | Bin 0 -> 180 bytes .../plugins/fullpage/jscripts/fullpage.js | 580 ++ .../tiny_mce/plugins/fullpage/langs/en.js | 92 + .../tiny_mce/plugins/fullscreen/css/page.css | 21 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 230 + .../plugins/fullscreen/fullscreen.htm | 91 + .../plugins/fullscreen/images/fullscreen.gif | Bin 0 -> 198 bytes .../tiny_mce/plugins/fullscreen/langs/en.js | 5 + .../tiny_mce/plugins/fullscreen/readme.txt | 1 + .../tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 58 + .../plugins/iespell/images/iespell.gif | Bin 0 -> 124 bytes .../tiny_mce/plugins/iespell/langs/en.js | 7 + .../tiny_mce/plugins/iespell/readme.txt | 1 + .../plugins/inlinepopups/css/inlinepopup.css | 69 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 814 ++ .../plugins/inlinepopups/images/spacer.gif | Bin 0 -> 43 bytes .../inlinepopups/images/window_close.gif | Bin 0 -> 110 bytes .../inlinepopups/images/window_maximize.gif | Bin 0 -> 111 bytes .../inlinepopups/images/window_minimize.gif | Bin 0 -> 112 bytes .../inlinepopups/images/window_resize.gif | Bin 0 -> 74 bytes .../inlinepopups/jscripts/mcwindows.js | 453 + .../tiny_mce/plugins/inlinepopups/readme.txt | 0 .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 90 + .../insertdatetime/images/insertdate.gif | Bin 0 -> 287 bytes .../insertdatetime/images/inserttime.gif | Bin 0 -> 239 bytes .../plugins/insertdatetime/langs/en.js | 12 + .../plugins/insertdatetime/readme.txt | 1 + .../tiny_mce/plugins/layer/editor_plugin.js | 1 + .../plugins/layer/editor_plugin_src.js | 248 + .../plugins/layer/images/absolute.gif | Bin 0 -> 209 bytes .../plugins/layer/images/backward.gif | Bin 0 -> 360 bytes .../tiny_mce/plugins/layer/images/forward.gif | Bin 0 -> 358 bytes .../plugins/layer/images/insert_layer.gif | Bin 0 -> 264 bytes .../plugins/layer/images/insertlayer.gif | Bin 0 -> 264 bytes .../plugins/layer/images/movebackward.gif | Bin 0 -> 360 bytes .../plugins/layer/images/moveforward.gif | Bin 0 -> 358 bytes .../tiny_mce/plugins/layer/langs/en.js | 9 + .../scripts/tiny_mce/plugins/layer/readme.txt | 1 + .../tiny_mce/plugins/media/css/content.css | 26 + .../tiny_mce/plugins/media/css/media.css | 68 + .../tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 435 + .../tiny_mce/plugins/media/images/flash.gif | Bin 0 -> 241 bytes .../tiny_mce/plugins/media/images/media.gif | Bin 0 -> 280 bytes .../plugins/media/images/quicktime.gif | Bin 0 -> 303 bytes .../plugins/media/images/realmedia.gif | Bin 0 -> 439 bytes .../plugins/media/images/shockwave.gif | Bin 0 -> 387 bytes .../plugins/media/images/windowsmedia.gif | Bin 0 -> 415 bytes .../tiny_mce/plugins/media/jscripts/embed.js | 73 + .../tiny_mce/plugins/media/jscripts/media.js | 572 ++ .../tiny_mce/plugins/media/langs/en.js | 94 + .../scripts/tiny_mce/plugins/media/media.htm | 723 ++ .../plugins/nonbreaking/editor_plugin.js | 1 + .../plugins/nonbreaking/editor_plugin_src.js | 62 + .../nonbreaking/images/nonbreaking.gif | Bin 0 -> 619 bytes .../tiny_mce/plugins/nonbreaking/langs/en.js | 5 + .../plugins/noneditable/css/noneditable.css | 9 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 153 + .../tiny_mce/plugins/noneditable/readme.txt | 1 + .../scripts/tiny_mce/plugins/paste/blank.htm | 19 + .../tiny_mce/plugins/paste/css/blank.css | 13 + .../tiny_mce/plugins/paste/css/pasteword.css | 3 + .../tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 395 + .../plugins/paste/images/pastetext.gif | Bin 0 -> 294 bytes .../plugins/paste/images/pasteword.gif | Bin 0 -> 299 bytes .../plugins/paste/images/selectall.gif | Bin 0 -> 205 bytes .../plugins/paste/jscripts/pastetext.js | 38 + .../plugins/paste/jscripts/pasteword.js | 52 + .../tiny_mce/plugins/paste/langs/en.js | 10 + .../tiny_mce/plugins/paste/pastetext.htm | 34 + .../tiny_mce/plugins/paste/pasteword.htm | 29 + .../scripts/tiny_mce/plugins/paste/readme.txt | 1 + .../tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 205 + .../tiny_mce/plugins/preview/example.html | 14 + .../plugins/preview/images/preview.gif | Bin 0 -> 286 bytes .../plugins/preview/jscripts/embed.js | 73 + .../tiny_mce/plugins/preview/langs/en.js | 5 + .../tiny_mce/plugins/preview/readme.txt | 1 + .../tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 47 + .../tiny_mce/plugins/print/images/print.gif | Bin 0 -> 211 bytes .../tiny_mce/plugins/print/langs/en.js | 5 + .../scripts/tiny_mce/plugins/print/readme.txt | 1 + admin/scripts/tiny_mce/plugins/readme.txt | 1 + .../tiny_mce/plugins/save/editor_plugin.js | 1 + .../plugins/save/editor_plugin_src.js | 115 + .../tiny_mce/plugins/save/images/save.gif | Bin 0 -> 285 bytes .../scripts/tiny_mce/plugins/save/langs/en.js | 5 + .../scripts/tiny_mce/plugins/save/readme.txt | 1 + .../searchreplace/css/searchreplace.css | 20 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 173 + .../plugins/searchreplace/images/replace.gif | Bin 0 -> 125 bytes .../images/replace_all_button_bg.gif | Bin 0 -> 669 bytes .../images/replace_button_bg.gif | Bin 0 -> 669 bytes .../plugins/searchreplace/images/search.gif | Bin 0 -> 191 bytes .../searchreplace/jscripts/searchreplace.js | 86 + .../plugins/searchreplace/langs/en.js | 21 + .../tiny_mce/plugins/searchreplace/readme.txt | 1 + .../plugins/searchreplace/searchreplace.htm | 107 + .../tiny_mce/plugins/style/css/props.css | 62 + .../tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 83 + .../plugins/style/images/apply_button_bg.gif | Bin 0 -> 1096 bytes .../plugins/style/images/style_info.gif | Bin 0 -> 562 bytes .../plugins/style/images/styleprops.gif | Bin 0 -> 562 bytes .../tiny_mce/plugins/style/jscripts/props.js | 633 ++ .../tiny_mce/plugins/style/langs/en.js | 66 + .../scripts/tiny_mce/plugins/style/props.htm | 729 ++ .../scripts/tiny_mce/plugins/style/readme.txt | 1 + admin/scripts/tiny_mce/plugins/table/cell.htm | 182 + .../tiny_mce/plugins/table/css/cell.css | 17 + .../tiny_mce/plugins/table/css/row.css | 25 + .../tiny_mce/plugins/table/css/table.css | 13 + .../tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1073 +++ .../tiny_mce/plugins/table/images/buttons.gif | Bin 0 -> 1765 bytes .../tiny_mce/plugins/table/images/table.gif | Bin 0 -> 287 bytes .../plugins/table/images/table_cell_props.gif | Bin 0 -> 189 bytes .../plugins/table/images/table_delete.gif | Bin 0 -> 372 bytes .../plugins/table/images/table_delete_col.gif | Bin 0 -> 163 bytes .../plugins/table/images/table_delete_row.gif | Bin 0 -> 171 bytes .../table/images/table_insert_col_after.gif | Bin 0 -> 165 bytes .../table/images/table_insert_col_before.gif | Bin 0 -> 165 bytes .../table/images/table_insert_row_after.gif | Bin 0 -> 163 bytes .../table/images/table_insert_row_before.gif | Bin 0 -> 159 bytes .../table/images/table_merge_cells.gif | Bin 0 -> 198 bytes .../plugins/table/images/table_row_props.gif | Bin 0 -> 187 bytes .../table/images/table_split_cells.gif | Bin 0 -> 210 bytes .../tiny_mce/plugins/table/jscripts/cell.js | 249 + .../plugins/table/jscripts/merge_cells.js | 24 + .../tiny_mce/plugins/table/jscripts/row.js | 200 + .../tiny_mce/plugins/table/jscripts/table.js | 364 + .../tiny_mce/plugins/table/langs/en.js | 79 + .../tiny_mce/plugins/table/merge_cells.htm | 38 + .../scripts/tiny_mce/plugins/table/readme.txt | 1 + admin/scripts/tiny_mce/plugins/table/row.htm | 159 + .../scripts/tiny_mce/plugins/table/table.htm | 160 + .../tiny_mce/plugins/template/blank.htm | 23 + .../plugins/template/css/template.css | 23 + .../plugins/template/editor_plugin.js | 1 + .../plugins/template/editor_plugin_src.js | 551 ++ .../plugins/template/images/template.gif | Bin 0 -> 582 bytes .../plugins/template/jscripts/template.js | 143 + .../tiny_mce/plugins/template/langs/en.js | 16 + .../tiny_mce/plugins/template/template.htm | 37 + .../plugins/visualchars/editor_plugin.js | 1 + .../plugins/visualchars/editor_plugin_src.js | 89 + .../visualchars/images/visualchars.gif | Bin 0 -> 134 bytes .../tiny_mce/plugins/visualchars/langs/en.js | 5 + .../tiny_mce/plugins/xhtmlxtras/abbr.htm | 148 + .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 148 + .../plugins/xhtmlxtras/attributes.htm | 153 + .../tiny_mce/plugins/xhtmlxtras/cite.htm | 148 + .../plugins/xhtmlxtras/css/attributes.css | 11 + .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 46 + .../plugins/xhtmlxtras/css/xhtmlxtras.css | 24 + .../tiny_mce/plugins/xhtmlxtras/del.htm | 169 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 199 + .../plugins/xhtmlxtras/images/abbr.gif | Bin 0 -> 144 bytes .../plugins/xhtmlxtras/images/acronym.gif | Bin 0 -> 138 bytes .../plugins/xhtmlxtras/images/attribs.gif | Bin 0 -> 601 bytes .../plugins/xhtmlxtras/images/cite.gif | Bin 0 -> 313 bytes .../plugins/xhtmlxtras/images/date_time.gif | Bin 0 -> 287 bytes .../plugins/xhtmlxtras/images/del.gif | Bin 0 -> 222 bytes .../plugins/xhtmlxtras/images/ins.gif | Bin 0 -> 231 bytes .../xhtmlxtras/images/remove_button_bg.gif | Bin 0 -> 433 bytes .../tiny_mce/plugins/xhtmlxtras/ins.htm | 169 + .../plugins/xhtmlxtras/jscripts/abbr.js | 29 + .../plugins/xhtmlxtras/jscripts/acronym.js | 29 + .../plugins/xhtmlxtras/jscripts/attributes.js | 130 + .../plugins/xhtmlxtras/jscripts/cite.js | 29 + .../plugins/xhtmlxtras/jscripts/del.js | 54 + .../xhtmlxtras/jscripts/element_common.js | 241 + .../plugins/xhtmlxtras/jscripts/ins.js | 53 + .../tiny_mce/plugins/xhtmlxtras/langs/en.js | 42 + .../tiny_mce/plugins/zoom/editor_plugin.js | 1 + .../plugins/zoom/editor_plugin_src.js | 56 + .../scripts/tiny_mce/plugins/zoom/readme.txt | 1 + .../tiny_mce/themes/advanced/about.htm | 52 + .../tiny_mce/themes/advanced/anchor.htm | 33 + .../tiny_mce/themes/advanced/charmap.htm | 53 + .../tiny_mce/themes/advanced/color_picker.htm | 74 + .../themes/advanced/css/colorpicker.css | 53 + .../themes/advanced/css/editor_content.css | 58 + .../themes/advanced/css/editor_popup.css | 331 + .../themes/advanced/css/editor_ui.css | 97 + .../themes/advanced/docs/en/about.htm | 31 + .../advanced/docs/en/common_buttons.htm | 162 + .../docs/en/create_accessible_content.htm | 45 + .../docs/en/images/insert_anchor_window.gif | Bin 0 -> 5189 bytes .../docs/en/images/insert_image_window.gif | Bin 0 -> 7195 bytes .../docs/en/images/insert_link_window.gif | Bin 0 -> 5658 bytes .../docs/en/images/insert_table_window.gif | Bin 0 -> 7094 bytes .../themes/advanced/docs/en/index.htm | 27 + .../advanced/docs/en/insert_anchor_button.htm | 32 + .../advanced/docs/en/insert_image_button.htm | 65 + .../advanced/docs/en/insert_link_button.htm | 33 + .../advanced/docs/en/insert_table_button.htm | 71 + .../themes/advanced/docs/en/style.css | 28 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1574 ++++ .../tiny_mce/themes/advanced/image.htm | 100 + .../themes/advanced/images/anchor.gif | Bin 0 -> 171 bytes .../themes/advanced/images/anchor_symbol.gif | Bin 0 -> 70 bytes .../themes/advanced/images/backcolor.gif | Bin 0 -> 359 bytes .../tiny_mce/themes/advanced/images/bold.gif | Bin 0 -> 76 bytes .../themes/advanced/images/bold_de_se.gif | Bin 0 -> 73 bytes .../themes/advanced/images/bold_es.gif | Bin 0 -> 80 bytes .../themes/advanced/images/bold_fr.gif | Bin 0 -> 78 bytes .../themes/advanced/images/bold_ru.gif | Bin 0 -> 77 bytes .../themes/advanced/images/bold_tw.gif | Bin 0 -> 207 bytes .../themes/advanced/images/browse.gif | Bin 0 -> 113 bytes .../themes/advanced/images/bullist.gif | Bin 0 -> 108 bytes .../themes/advanced/images/button_menu.gif | Bin 0 -> 57 bytes .../themes/advanced/images/buttons.gif | Bin 0 -> 5662 bytes .../advanced/images/cancel_button_bg.gif | Bin 0 -> 677 bytes .../themes/advanced/images/charmap.gif | Bin 0 -> 245 bytes .../themes/advanced/images/cleanup.gif | Bin 0 -> 256 bytes .../tiny_mce/themes/advanced/images/close.gif | Bin 0 -> 102 bytes .../tiny_mce/themes/advanced/images/code.gif | Bin 0 -> 110 bytes .../tiny_mce/themes/advanced/images/color.gif | Bin 0 -> 125 bytes .../themes/advanced/images/colors.jpg | Bin 0 -> 3189 bytes .../tiny_mce/themes/advanced/images/copy.gif | Bin 0 -> 263 bytes .../themes/advanced/images/custom_1.gif | Bin 0 -> 76 bytes .../tiny_mce/themes/advanced/images/cut.gif | Bin 0 -> 187 bytes .../themes/advanced/images/forecolor.gif | Bin 0 -> 342 bytes .../tiny_mce/themes/advanced/images/help.gif | Bin 0 -> 295 bytes .../tiny_mce/themes/advanced/images/hr.gif | Bin 0 -> 63 bytes .../tiny_mce/themes/advanced/images/image.gif | Bin 0 -> 194 bytes .../themes/advanced/images/indent.gif | Bin 0 -> 112 bytes .../advanced/images/insert_button_bg.gif | Bin 0 -> 703 bytes .../themes/advanced/images/italic.gif | Bin 0 -> 79 bytes .../themes/advanced/images/italic_de_se.gif | Bin 0 -> 75 bytes .../themes/advanced/images/italic_es.gif | Bin 0 -> 74 bytes .../themes/advanced/images/italic_ru.gif | Bin 0 -> 78 bytes .../themes/advanced/images/italic_tw.gif | Bin 0 -> 274 bytes .../themes/advanced/images/justifycenter.gif | Bin 0 -> 70 bytes .../themes/advanced/images/justifyfull.gif | Bin 0 -> 71 bytes .../themes/advanced/images/justifyleft.gif | Bin 0 -> 71 bytes .../themes/advanced/images/justifyright.gif | Bin 0 -> 70 bytes .../tiny_mce/themes/advanced/images/link.gif | Bin 0 -> 175 bytes .../themes/advanced/images/menu_check.gif | Bin 0 -> 51 bytes .../themes/advanced/images/newdocument.gif | Bin 0 -> 170 bytes .../themes/advanced/images/numlist.gif | Bin 0 -> 111 bytes .../themes/advanced/images/opacity.png | Bin 0 -> 147 bytes .../themes/advanced/images/outdent.gif | Bin 0 -> 110 bytes .../tiny_mce/themes/advanced/images/paste.gif | Bin 0 -> 286 bytes .../tiny_mce/themes/advanced/images/redo.gif | Bin 0 -> 169 bytes .../themes/advanced/images/removeformat.gif | Bin 0 -> 168 bytes .../themes/advanced/images/separator.gif | Bin 0 -> 57 bytes .../themes/advanced/images/spacer.gif | Bin 0 -> 43 bytes .../advanced/images/statusbar_resize.gif | Bin 0 -> 79 bytes .../themes/advanced/images/strikethrough.gif | Bin 0 -> 83 bytes .../tiny_mce/themes/advanced/images/sub.gif | Bin 0 -> 148 bytes .../tiny_mce/themes/advanced/images/sup.gif | Bin 0 -> 147 bytes .../themes/advanced/images/underline.gif | Bin 0 -> 88 bytes .../themes/advanced/images/underline_es.gif | Bin 0 -> 79 bytes .../themes/advanced/images/underline_fr.gif | Bin 0 -> 79 bytes .../themes/advanced/images/underline_ru.gif | Bin 0 -> 77 bytes .../themes/advanced/images/underline_tw.gif | Bin 0 -> 245 bytes .../tiny_mce/themes/advanced/images/undo.gif | Bin 0 -> 175 bytes .../themes/advanced/images/unlink.gif | Bin 0 -> 190 bytes .../themes/advanced/images/visualaid.gif | Bin 0 -> 206 bytes .../themes/advanced/images/xp/tab_bg.gif | Bin 0 -> 694 bytes .../themes/advanced/images/xp/tab_end.gif | Bin 0 -> 169 bytes .../themes/advanced/images/xp/tab_sel_bg.gif | Bin 0 -> 428 bytes .../themes/advanced/images/xp/tab_sel_end.gif | Bin 0 -> 101 bytes .../themes/advanced/images/xp/tabs_bg.gif | Bin 0 -> 48 bytes .../themes/advanced/jscripts/about.js | 75 + .../themes/advanced/jscripts/anchor.js | 74 + .../themes/advanced/jscripts/charmap.js | 326 + .../themes/advanced/jscripts/color_picker.js | 249 + .../themes/advanced/jscripts/image.js | 81 + .../tiny_mce/themes/advanced/jscripts/link.js | 66 + .../themes/advanced/jscripts/source_editor.js | 59 + .../tiny_mce/themes/advanced/langs/en.js | 91 + .../scripts/tiny_mce/themes/advanced/link.htm | 100 + .../themes/advanced/source_editor.htm | 32 + .../themes/simple/css/editor_content.css | 25 + .../themes/simple/css/editor_popup.css | 41 + .../tiny_mce/themes/simple/css/editor_ui.css | 125 + .../tiny_mce/themes/simple/editor_template.js | 1 + .../themes/simple/editor_template_src.js | 84 + .../tiny_mce/themes/simple/images/bold.gif | Bin 0 -> 76 bytes .../themes/simple/images/bold_de_se.gif | Bin 0 -> 73 bytes .../tiny_mce/themes/simple/images/bold_fr.gif | Bin 0 -> 78 bytes .../tiny_mce/themes/simple/images/bold_ru.gif | Bin 0 -> 77 bytes .../tiny_mce/themes/simple/images/bold_tw.gif | Bin 0 -> 207 bytes .../tiny_mce/themes/simple/images/bullist.gif | Bin 0 -> 108 bytes .../tiny_mce/themes/simple/images/buttons.gif | Bin 0 -> 1054 bytes .../tiny_mce/themes/simple/images/cleanup.gif | Bin 0 -> 256 bytes .../tiny_mce/themes/simple/images/italic.gif | Bin 0 -> 79 bytes .../themes/simple/images/italic_de_se.gif | Bin 0 -> 75 bytes .../themes/simple/images/italic_ru.gif | Bin 0 -> 78 bytes .../themes/simple/images/italic_tw.gif | Bin 0 -> 274 bytes .../tiny_mce/themes/simple/images/numlist.gif | Bin 0 -> 111 bytes .../tiny_mce/themes/simple/images/redo.gif | Bin 0 -> 169 bytes .../themes/simple/images/separator.gif | Bin 0 -> 57 bytes .../tiny_mce/themes/simple/images/spacer.gif | Bin 0 -> 43 bytes .../themes/simple/images/strikethrough.gif | Bin 0 -> 83 bytes .../themes/simple/images/underline.gif | Bin 0 -> 88 bytes .../themes/simple/images/underline_fr.gif | Bin 0 -> 79 bytes .../themes/simple/images/underline_ru.gif | Bin 0 -> 77 bytes .../themes/simple/images/underline_tw.gif | Bin 0 -> 245 bytes .../tiny_mce/themes/simple/images/undo.gif | Bin 0 -> 175 bytes admin/scripts/tiny_mce/tiny_mce.js | 1 + admin/scripts/tiny_mce/tiny_mce_popup.js | 288 + admin/scripts/tiny_mce/tiny_mce_src.js | 7492 +++++++++++++++++ .../tiny_mce/utils/editable_selects.js | 61 + admin/scripts/tiny_mce/utils/form_utils.js | 210 + admin/scripts/tiny_mce/utils/mclayer.js | 210 + admin/scripts/tiny_mce/utils/mctabs.js | 74 + admin/scripts/tiny_mce/utils/validate.js | 219 + admin/scripts/tools.js | 42 + .../admin/template_add_conversation.htm | 21 + admin/themes/admin/template_add_link.htm | 28 + admin/themes/admin/template_add_mp3.htm | 21 + admin/themes/admin/template_add_photo.htm | 37 + admin/themes/admin/template_add_post.htm | 18 + admin/themes/admin/template_add_quote.htm | 18 + admin/themes/admin/template_add_video.htm | 22 + admin/user.php | 246 + classes/configuration.class.php | 49 + classes/functions.php | 147 + classes/gelato.class.php | 122 + classes/mysql_connection.class.php | 264 + classes/pagination.php | 138 + classes/templates.class.php | 139 + classes/user.class.php | 141 + config-sample.php | 30 + db/gelato_db.sql | 41 + images/Thumbs.db | Bin 0 -> 89088 bytes images/cabecera.gif | Bin 0 -> 306 bytes images/cita.gif | Bin 0 -> 2006 bytes images/cont_BG.gif | Bin 0 -> 119 bytes images/conversacion.gif | Bin 0 -> 2954 bytes images/enlace.gif | Bin 0 -> 1687 bytes images/error.png | Bin 0 -> 853 bytes images/footer.gif | Bin 0 -> 303 bytes images/foto.gif | Bin 0 -> 4072 bytes images/icon_info.gif | Bin 0 -> 624 bytes images/information.png | Bin 0 -> 918 bytes images/logo.jpg | Bin 0 -> 24049 bytes images/mp3.gif | Bin 0 -> 2074 bytes images/post.gif | Bin 0 -> 2374 bytes images/proceso.gif | Bin 0 -> 1553 bytes images/quote.gif | Bin 0 -> 635 bytes images/video.gif | Bin 0 -> 4643 bytes index.php | 124 + login.php | 109 + readme.txt | 15 + rss.php | 76 + themes/tumblr/img/Thumbs.db | Bin 0 -> 12800 bytes themes/tumblr/img/bg.gif | Bin 0 -> 70 bytes themes/tumblr/img/link.gif | Bin 0 -> 82 bytes themes/tumblr/img/rss.gif | Bin 0 -> 753 bytes themes/tumblr/style.css | 263 + themes/tumblr/template_conversation.htm | 16 + themes/tumblr/template_footer.htm | 8 + themes/tumblr/template_header.htm | 25 + themes/tumblr/template_mp3.htm | 16 + themes/tumblr/template_photo.htm | 20 + themes/tumblr/template_quote.htm | 18 + themes/tumblr/template_regular_post.htm | 16 + themes/tumblr/template_url.htm | 16 + themes/tumblr/template_video.htm | 16 + uploads/Thumbs.db | Bin 0 -> 13312 bytes 483 files changed, 36875 insertions(+) create mode 100644 admin/add.php create mode 100644 admin/admin.php create mode 100644 admin/ajax.php create mode 100644 admin/close.php create mode 100644 admin/css/style-codice.css create mode 100644 admin/index.php create mode 100644 admin/scripts/mootools.js create mode 100644 admin/scripts/player.swf create mode 100644 admin/scripts/tiny_mce/blank.htm create mode 100644 admin/scripts/tiny_mce/langs/en.js create mode 100644 admin/scripts/tiny_mce/langs/readme.txt create mode 100644 admin/scripts/tiny_mce/license.txt create mode 100644 admin/scripts/tiny_mce/plugins/advhr/css/advhr.css create mode 100644 admin/scripts/tiny_mce/plugins/advhr/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/advhr/images/advhr.gif create mode 100644 admin/scripts/tiny_mce/plugins/advhr/jscripts/rule.js create mode 100644 admin/scripts/tiny_mce/plugins/advhr/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/advhr/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/advhr/rule.htm create mode 100644 admin/scripts/tiny_mce/plugins/advimage/css/advimage.css create mode 100644 admin/scripts/tiny_mce/plugins/advimage/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/advimage/image.htm create mode 100644 admin/scripts/tiny_mce/plugins/advimage/images/sample.gif create mode 100644 admin/scripts/tiny_mce/plugins/advimage/jscripts/functions.js create mode 100644 admin/scripts/tiny_mce/plugins/advimage/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/advimage/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/advlink/css/advlink.css create mode 100644 admin/scripts/tiny_mce/plugins/advlink/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/advlink/jscripts/functions.js create mode 100644 admin/scripts/tiny_mce/plugins/advlink/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/advlink/link.htm create mode 100644 admin/scripts/tiny_mce/plugins/advlink/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/autosave/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/autosave/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/autosave/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/bbcode/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/bbcode/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/cleanup/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/cleanup/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/cleanup/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/contextmenu/css/contextmenu.css create mode 100644 admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/contextmenu/images/spacer.gif create mode 100644 admin/scripts/tiny_mce/plugins/contextmenu/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/devkit/css/devkit.css create mode 100644 admin/scripts/tiny_mce/plugins/devkit/css/devkit_ui.css create mode 100644 admin/scripts/tiny_mce/plugins/devkit/devkit.htm create mode 100644 admin/scripts/tiny_mce/plugins/devkit/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/devkit/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/devkit/images/flip_down.gif create mode 100644 admin/scripts/tiny_mce/plugins/devkit/images/flip_up.gif create mode 100644 admin/scripts/tiny_mce/plugins/devkit/jscripts/devkit.js create mode 100644 admin/scripts/tiny_mce/plugins/devkit/jscripts/diff.js create mode 100644 admin/scripts/tiny_mce/plugins/devkit/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/directionality/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/directionality/images/ltr.gif create mode 100644 admin/scripts/tiny_mce/plugins/directionality/images/rtl.gif create mode 100644 admin/scripts/tiny_mce/plugins/directionality/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/directionality/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/emotions/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/emotions/emotions.htm create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/emotions.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-cool.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-cry.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-frown.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-kiss.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-sealed.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-smile.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-surprised.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-wink.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/images/smiley-yell.gif create mode 100644 admin/scripts/tiny_mce/plugins/emotions/jscripts/functions.js create mode 100644 admin/scripts/tiny_mce/plugins/emotions/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/emotions/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/flash/css/content.css create mode 100644 admin/scripts/tiny_mce/plugins/flash/css/flash.css create mode 100644 admin/scripts/tiny_mce/plugins/flash/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/flash/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/flash/flash.htm create mode 100644 admin/scripts/tiny_mce/plugins/flash/images/flash.gif create mode 100644 admin/scripts/tiny_mce/plugins/flash/jscripts/flash.js create mode 100644 admin/scripts/tiny_mce/plugins/flash/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/flash/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/blank.htm create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/css/fullpage.css create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/fullpage.htm create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/images/add.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/images/fullpage.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/images/move_down.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/images/move_up.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/images/remove.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js create mode 100644 admin/scripts/tiny_mce/plugins/fullpage/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/css/page.css create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/fullscreen/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/iespell/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/iespell/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/iespell/images/iespell.gif create mode 100644 admin/scripts/tiny_mce/plugins/iespell/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/iespell/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/images/spacer.gif create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/images/window_close.gif create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/images/window_maximize.gif create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/images/window_resize.gif create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js create mode 100644 admin/scripts/tiny_mce/plugins/inlinepopups/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/images/insertdate.gif create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/insertdatetime/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/layer/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/layer/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/absolute.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/backward.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/forward.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/insert_layer.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/insertlayer.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/movebackward.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/images/moveforward.gif create mode 100644 admin/scripts/tiny_mce/plugins/layer/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/layer/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/media/css/content.css create mode 100644 admin/scripts/tiny_mce/plugins/media/css/media.css create mode 100644 admin/scripts/tiny_mce/plugins/media/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/media/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/media/images/flash.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/images/media.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/images/quicktime.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/images/realmedia.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/images/shockwave.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/images/windowsmedia.gif create mode 100644 admin/scripts/tiny_mce/plugins/media/jscripts/embed.js create mode 100644 admin/scripts/tiny_mce/plugins/media/jscripts/media.js create mode 100644 admin/scripts/tiny_mce/plugins/media/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/media/media.htm create mode 100644 admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif create mode 100644 admin/scripts/tiny_mce/plugins/nonbreaking/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/noneditable/css/noneditable.css create mode 100644 admin/scripts/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/noneditable/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/paste/blank.htm create mode 100644 admin/scripts/tiny_mce/plugins/paste/css/blank.css create mode 100644 admin/scripts/tiny_mce/plugins/paste/css/pasteword.css create mode 100644 admin/scripts/tiny_mce/plugins/paste/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/paste/images/pastetext.gif create mode 100644 admin/scripts/tiny_mce/plugins/paste/images/pasteword.gif create mode 100644 admin/scripts/tiny_mce/plugins/paste/images/selectall.gif create mode 100644 admin/scripts/tiny_mce/plugins/paste/jscripts/pastetext.js create mode 100644 admin/scripts/tiny_mce/plugins/paste/jscripts/pasteword.js create mode 100644 admin/scripts/tiny_mce/plugins/paste/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/paste/pastetext.htm create mode 100644 admin/scripts/tiny_mce/plugins/paste/pasteword.htm create mode 100644 admin/scripts/tiny_mce/plugins/paste/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/preview/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/preview/example.html create mode 100644 admin/scripts/tiny_mce/plugins/preview/images/preview.gif create mode 100644 admin/scripts/tiny_mce/plugins/preview/jscripts/embed.js create mode 100644 admin/scripts/tiny_mce/plugins/preview/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/preview/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/print/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/print/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/print/images/print.gif create mode 100644 admin/scripts/tiny_mce/plugins/print/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/print/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/save/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/save/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/save/images/save.gif create mode 100644 admin/scripts/tiny_mce/plugins/save/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/save/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/css/searchreplace.css create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/images/replace.gif create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/images/search.gif create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/searchreplace/searchreplace.htm create mode 100644 admin/scripts/tiny_mce/plugins/style/css/props.css create mode 100644 admin/scripts/tiny_mce/plugins/style/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/style/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/style/images/apply_button_bg.gif create mode 100644 admin/scripts/tiny_mce/plugins/style/images/style_info.gif create mode 100644 admin/scripts/tiny_mce/plugins/style/images/styleprops.gif create mode 100644 admin/scripts/tiny_mce/plugins/style/jscripts/props.js create mode 100644 admin/scripts/tiny_mce/plugins/style/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/style/props.htm create mode 100644 admin/scripts/tiny_mce/plugins/style/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/table/cell.htm create mode 100644 admin/scripts/tiny_mce/plugins/table/css/cell.css create mode 100644 admin/scripts/tiny_mce/plugins/table/css/row.css create mode 100644 admin/scripts/tiny_mce/plugins/table/css/table.css create mode 100644 admin/scripts/tiny_mce/plugins/table/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/table/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/table/images/buttons.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_cell_props.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_delete.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_delete_col.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_delete_row.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_insert_col_after.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_insert_col_before.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_insert_row_after.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_insert_row_before.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_merge_cells.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_row_props.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/images/table_split_cells.gif create mode 100644 admin/scripts/tiny_mce/plugins/table/jscripts/cell.js create mode 100644 admin/scripts/tiny_mce/plugins/table/jscripts/merge_cells.js create mode 100644 admin/scripts/tiny_mce/plugins/table/jscripts/row.js create mode 100644 admin/scripts/tiny_mce/plugins/table/jscripts/table.js create mode 100644 admin/scripts/tiny_mce/plugins/table/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/table/merge_cells.htm create mode 100644 admin/scripts/tiny_mce/plugins/table/readme.txt create mode 100644 admin/scripts/tiny_mce/plugins/table/row.htm create mode 100644 admin/scripts/tiny_mce/plugins/table/table.htm create mode 100644 admin/scripts/tiny_mce/plugins/template/blank.htm create mode 100644 admin/scripts/tiny_mce/plugins/template/css/template.css create mode 100644 admin/scripts/tiny_mce/plugins/template/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/template/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/template/images/template.gif create mode 100644 admin/scripts/tiny_mce/plugins/template/jscripts/template.js create mode 100644 admin/scripts/tiny_mce/plugins/template/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/template/template.htm create mode 100644 admin/scripts/tiny_mce/plugins/visualchars/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/visualchars/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/visualchars/images/visualchars.gif create mode 100644 admin/scripts/tiny_mce/plugins/visualchars/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/abbr.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/acronym.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/attributes.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/cite.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/css/popup.css create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/del.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/acronym.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/del.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/ins.htm create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js create mode 100644 admin/scripts/tiny_mce/plugins/xhtmlxtras/langs/en.js create mode 100644 admin/scripts/tiny_mce/plugins/zoom/editor_plugin.js create mode 100644 admin/scripts/tiny_mce/plugins/zoom/editor_plugin_src.js create mode 100644 admin/scripts/tiny_mce/plugins/zoom/readme.txt create mode 100644 admin/scripts/tiny_mce/themes/advanced/about.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/anchor.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/charmap.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/color_picker.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/css/colorpicker.css create mode 100644 admin/scripts/tiny_mce/themes/advanced/css/editor_content.css create mode 100644 admin/scripts/tiny_mce/themes/advanced/css/editor_popup.css create mode 100644 admin/scripts/tiny_mce/themes/advanced/css/editor_ui.css create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/about.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/index.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/docs/en/style.css create mode 100644 admin/scripts/tiny_mce/themes/advanced/editor_template.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/editor_template_src.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/image.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/anchor.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/anchor_symbol.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/backcolor.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold_de_se.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold_es.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold_fr.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bold_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/browse.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/bullist.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/button_menu.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/buttons.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/charmap.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/cleanup.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/close.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/code.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/color.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/colors.jpg create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/copy.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/custom_1.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/cut.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/forecolor.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/help.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/hr.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/image.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/indent.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/insert_button_bg.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/italic.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/italic_de_se.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/italic_es.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/italic_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/italic_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/justifycenter.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/justifyfull.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/justifyleft.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/justifyright.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/link.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/menu_check.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/newdocument.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/numlist.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/opacity.png create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/outdent.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/paste.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/redo.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/removeformat.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/separator.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/spacer.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/statusbar_resize.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/strikethrough.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/sub.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/sup.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/underline.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/underline_es.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/underline_fr.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/underline_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/underline_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/undo.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/unlink.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/visualaid.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/xp/tab_end.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/about.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/anchor.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/charmap.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/color_picker.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/image.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/link.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/jscripts/source_editor.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/langs/en.js create mode 100644 admin/scripts/tiny_mce/themes/advanced/link.htm create mode 100644 admin/scripts/tiny_mce/themes/advanced/source_editor.htm create mode 100644 admin/scripts/tiny_mce/themes/simple/css/editor_content.css create mode 100644 admin/scripts/tiny_mce/themes/simple/css/editor_popup.css create mode 100644 admin/scripts/tiny_mce/themes/simple/css/editor_ui.css create mode 100644 admin/scripts/tiny_mce/themes/simple/editor_template.js create mode 100644 admin/scripts/tiny_mce/themes/simple/editor_template_src.js create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bold.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bold_de_se.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bold_fr.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bold_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bold_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/bullist.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/buttons.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/cleanup.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/italic.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/italic_de_se.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/italic_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/italic_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/numlist.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/redo.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/separator.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/spacer.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/strikethrough.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/underline.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/underline_fr.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/underline_ru.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/underline_tw.gif create mode 100644 admin/scripts/tiny_mce/themes/simple/images/undo.gif create mode 100644 admin/scripts/tiny_mce/tiny_mce.js create mode 100644 admin/scripts/tiny_mce/tiny_mce_popup.js create mode 100644 admin/scripts/tiny_mce/tiny_mce_src.js create mode 100644 admin/scripts/tiny_mce/utils/editable_selects.js create mode 100644 admin/scripts/tiny_mce/utils/form_utils.js create mode 100644 admin/scripts/tiny_mce/utils/mclayer.js create mode 100644 admin/scripts/tiny_mce/utils/mctabs.js create mode 100644 admin/scripts/tiny_mce/utils/validate.js create mode 100644 admin/scripts/tools.js create mode 100644 admin/themes/admin/template_add_conversation.htm create mode 100644 admin/themes/admin/template_add_link.htm create mode 100644 admin/themes/admin/template_add_mp3.htm create mode 100644 admin/themes/admin/template_add_photo.htm create mode 100644 admin/themes/admin/template_add_post.htm create mode 100644 admin/themes/admin/template_add_quote.htm create mode 100644 admin/themes/admin/template_add_video.htm create mode 100644 admin/user.php create mode 100644 classes/configuration.class.php create mode 100644 classes/functions.php create mode 100644 classes/gelato.class.php create mode 100644 classes/mysql_connection.class.php create mode 100644 classes/pagination.php create mode 100644 classes/templates.class.php create mode 100644 classes/user.class.php create mode 100644 config-sample.php create mode 100644 db/gelato_db.sql create mode 100644 images/Thumbs.db create mode 100644 images/cabecera.gif create mode 100644 images/cita.gif create mode 100644 images/cont_BG.gif create mode 100644 images/conversacion.gif create mode 100644 images/enlace.gif create mode 100644 images/error.png create mode 100644 images/footer.gif create mode 100644 images/foto.gif create mode 100644 images/icon_info.gif create mode 100644 images/information.png create mode 100644 images/logo.jpg create mode 100644 images/mp3.gif create mode 100644 images/post.gif create mode 100644 images/proceso.gif create mode 100644 images/quote.gif create mode 100644 images/video.gif create mode 100644 index.php create mode 100644 login.php create mode 100644 readme.txt create mode 100644 rss.php create mode 100644 themes/tumblr/img/Thumbs.db create mode 100644 themes/tumblr/img/bg.gif create mode 100644 themes/tumblr/img/link.gif create mode 100644 themes/tumblr/img/rss.gif create mode 100644 themes/tumblr/style.css create mode 100644 themes/tumblr/template_conversation.htm create mode 100644 themes/tumblr/template_footer.htm create mode 100644 themes/tumblr/template_header.htm create mode 100644 themes/tumblr/template_mp3.htm create mode 100644 themes/tumblr/template_photo.htm create mode 100644 themes/tumblr/template_quote.htm create mode 100644 themes/tumblr/template_regular_post.htm create mode 100644 themes/tumblr/template_url.htm create mode 100644 themes/tumblr/template_video.htm create mode 100644 uploads/Thumbs.db diff --git a/admin/add.php b/admin/add.php new file mode 100644 index 0000000..976712e --- /dev/null +++ b/admin/add.php @@ -0,0 +1,187 @@ + +isAdmin()) { + + if(isset($_POST["btnAdd"])) { + unset($_POST["btnAdd"]); + + + if ($_POST["type"]=="2") { // is Photo type + if (isset($_POST["url"]) && $_POST["url"]!="") { + $photoName = getFileName($_POST["url"]); + if (!$tumble->savePhoto($_POST["url"])) { + header("Location: ".$this->conf->urlGelato."/admin/index.php?photo=false"); + die(); + } + $_POST["url"] = $conf->urlGelato."/uploads/".$photoName; + } + + if ( move_uploaded_file( $_FILES['photo']['tmp_name'], "../uploads/".$_FILES['photo']['name'] ) ) { + $_POST["url"] = $conf->urlGelato."/uploads/".$_FILES['photo']['name']; + } + + unset($_POST["photo"]); + unset($_POST["MAX_FILE_SIZE"]); + } + + if ($_POST["type"]=="7") { // is MP3 type + set_time_limit(300); + $mp3Name = getFileName($_POST["url"]); + if (!$tumble->saveMP3($_POST["url"])) { + header("Location: ".$this->conf->urlGelato."/admin/index.php?mp3=false"); + die(); + } + $_POST["url"] = $conf->urlGelato."/uploads/".$mp3Name; + } + + + if (isset($_POST["id_post"])) { + //$tumble->modifyPost($_POST, $_POST["id_post"]); + } else { + if ($tumble->addPost($_POST)) { + header("Location: ".$this->conf->urlGelato."/admin/index.php?added=true"); + die(); + } else { + header("Location: ".$this->conf->urlGelato."/admin/index.php?error=2&des=".$this->merror); + die(); + } + } + } elseif (isset($_GET["new"])) { +?> + + + + gelato + + + + + + + + + +
+ gelato CMS +
+ + + +
+
+
+

Add content

+
+
name="frmAdd"> +
+cargarPlantilla($input, $output, "template_add_post"); + $template->mostrarPlantilla(); + break; + case "photo": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("2", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_photo"); + $template->mostrarPlantilla(); + break; + case "quote": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("3", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_quote"); + $template->mostrarPlantilla(); + break; + case "url": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("4", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_link"); + $template->mostrarPlantilla(); + break; + case "conversation": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("5", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_conversation"); + $template->mostrarPlantilla(); + break; + case "video": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("6", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_video"); + $template->mostrarPlantilla(); + break; + case "mp3": + $input = array("{type}", "{date}", "{id_user}"); + $output = array("7", time(), $_SESSION['user_id']); + + $template->cargarPlantilla($input, $output, "template_add_mp3"); + $template->mostrarPlantilla(); + break; + default: + echo "
The specified type is not valid.
"; + break; + } +?> +

+    + Cancel +

+
+
+
+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+
+ + +urlGelato."/login.php"); +} +?> \ No newline at end of file diff --git a/admin/admin.php b/admin/admin.php new file mode 100644 index 0000000..b329b4a --- /dev/null +++ b/admin/admin.php @@ -0,0 +1,144 @@ + +isAdmin()) { + +?> + + + + gelato + + + + + + + +
+ gelato CMS +
+ + + +
+
+
+

Manage the user information

+
+The user has been added successfully.
"; + } + } + + if (isset($_GET["delete"])) { + if ($_GET["delete"]=="true") { + echo "
The user has been eliminated successfully.
"; + } + } + + if (isset($_GET["modified"])) { + if ($_GET["modified"]=="true") { + echo "
The user has been modified successfully.
"; + } + } + + if (isset($_GET["error"])) { + if ($_GET["error"]==1) { + echo "
The username is not available.
"; + } elseif ($_GET["error"]==2) { + echo "
Error on the database server: ".$_GET["des"]."
"; + } + } +?> +

+ + + + + + + + + + +getUsers(); + if ($user->contarRegistros()>0) { + while($register = mysql_fetch_array($rs)) { +?> + > + + + + + + + + + + + +
Authors list.
LoginNameActions
+ + + + + ">Edit + + ">Delete +
No users available.
+

+

 

+
+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+ + + +urlGelato."/login.php"); +} +?> \ No newline at end of file diff --git a/admin/ajax.php b/admin/ajax.php new file mode 100644 index 0000000..84ab838 --- /dev/null +++ b/admin/ajax.php @@ -0,0 +1,40 @@ + +isAdmin()) { + if ($_GET["action"]) { + + if ($_GET["action"] == "close") { + session_start(); + if ($user->closeSession()) { + echo " ending session..."; + } else { + echo " failure ending session..."; + } + } // $_GET["action"] == "close" + + if ($_GET["action"] == "verify") { + if ($_GET["login"]=="") { + echo "
Required field cannot be left blank.
"; + } else { + if (!$user->userExist($_GET["login"])) { + echo "
Username available.
"; + } else { + echo "
The username is not available.
"; + } + } + } // $_GET["action"] == "verify" + } // $_GET["action"] + } // $user->isAdmin() +?> \ No newline at end of file diff --git a/admin/close.php b/admin/close.php new file mode 100644 index 0000000..92963a1 --- /dev/null +++ b/admin/close.php @@ -0,0 +1,64 @@ + +closeSession() +?> + + + + gelato + + + + + + + +
+ gelato CMS +
+ +
+
+
+

Closing session

+

+ +

+

Ending session...

+ +

Has happened an error when closing the session.

+ +

+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+
+ + + \ No newline at end of file diff --git a/admin/css/style-codice.css b/admin/css/style-codice.css new file mode 100644 index 0000000..9180358 --- /dev/null +++ b/admin/css/style-codice.css @@ -0,0 +1,337 @@ +/* Estructura */ + +*{ padding:0; margin:0;} + +body { + background-color: #F7F7F7; + color: #333333; + font-family: "Trebuchet MS", Vendana, Arial, sans-serif; + font-size: 10pt; + font-weight: normal; + margin: auto; +} + +#div-process { + padding-left: 22px; + font: normal 14.5px/17px georgia, "times new roman", serif; + background: url(../../images/proceso.gif) no-repeat 0% 10%; + float: right; + height: 20px; + width: 150px; + border: 1px solid #000066; + background-color:#FFFFCC; + color:#011940; +} + +#titulo { + background-color: #FcFcFc; + border:1px solid #FcFcFc; + margin-top: 0; + padding-top: 0; + width: 100%; +} + +#contenido { + background-color: #F7F7F7; + border:1px solid #F7F7F7; +} + .piccola{ width:30%; margin: 0 auto;} + .center{ width:60%; margin: 0 auto;} + .right{ width:40%; float:right;} + .left{ width: 60%; float:left; } + .ventana{ margin:10px; padding:0 0 4px 0; border:1px solid #999; background-color:#DEDEDE;} + .titulo{ background-color:#336699; color:#FFFFFF; font-weight:bold; text-align:center; border-bottom:2px solid #FFF;} + +#contenido h3 { + font: normal 17.5px/17px georgia, "times new roman", serif; + margin-bottom: 0; + padding-bottom: 0; +} + +#pie { + clear: both; + color: #808080; + background: #FFF; + font-size: 0.8em; + text-align: right; + padding: 9px 10px 9px 0; + margin: 10px 5px 10px 5px; + border: 1px solid #ccc; + width:60%; + margin: 0 auto; + margin-top:50px; + text-align:center; +} + +#pie a { + text-decoration: underline; + color: #3A6794; +} + +#pie a:hover { + color: #000; +} + +/* Mensajes para el usuario */ + +.error { + width:80%; + background: #FFF7F2 url('../../images/error.png') 15px center no-repeat; + border-top: 2px solid #CC0000; + border-bottom: 2px solid #CC0000; + margin: 0 auto; + padding: 5px 20px 5px 45px; +} + +.exito { + width:80%; + background: #F4FBF5 url('../../images/information.png') 15px center no-repeat; + border-top: 2px solid #006600; + border-bottom: 2px solid #006600; + margin: 0 auto; + padding: 5px 20px 5px 45px; +} + +.info { + width:80%; + background: #FFF6BF url('../../images/icon_info.gif') 15px center no-repeat; + border-top: 2px solid #FFD324; + border-bottom: 2px solid #FFD324; + margin: 0 auto; + padding: 5px 20px 5px 45px; +} + +/* Formularios */ + +#formulario { + margin: 30px; + padding: 0px; + border: 0px; +} + +#formulario fieldset{ border: none;} +#formulario label{ width:100px; text-align:left;} + label.required { padding-left: 22px; background: url(../../images/required.gif) no-repeat 0% 50%; } + label.problem { padding-left: 22px; background: url(../../images/caution.gif) no-repeat 0% 50%; } + label.completed { padding-left: 22px; background: url(../../images/complete.gif) no-repeat 0% 50%; } +#formulario p{margin: 8px 0 ;} +.input-text{ width: 100%; border: 1px solid #7591B5; background-color:#fff; margin: 1px; padding: 3px; font: 14px Verdana, Arial, Helvetica, sans-serif;} +.input-corto{ width: 200px; border: 1px solid #7591B5; background-color:#fff; padding: 1px 0;} +.check { border: 1px solid #7591B5; background-color:#fff; } +input:hover { + background: #f5f5f5; + color: #000; + } + + +input.submit +{ + width: 200px; + margin-top: 0.5em; + margin-bottom: 0.5em; + text-align: center; + cursor:pointer; + border-bottom:solid 2px #000; + border-right:solid 2px #000; + border-top:solid 1px #336699; + border-left:solid 1px #336699; + background-color:#002255; + color:#fff; + font-size:105%; + text-decoration:none; + padding:.4em; + font-weight:bold; +} + +input.submit:hover +{ + text-decoration:none; + background-color:#003366; + color:#fff; +} + +.submit_naranja { + width: 200px; + margin-top: 0.5em; + margin-bottom: 0.5em; + text-align: center; + cursor:pointer; + border-bottom:solid 2px #E55C00; + border-right:solid 2px #E55C00; + border-top:solid 1px #FF751A; + border-left:solid 1px #FF751A; + background-color:#ff6600; + color:#fff; + font-size:105%; + text-decoration:none; + padding:.4em; + font-weight:bold; +} + +.submit_naranja:hover { + text-decoration:none; + background-color:#FF751A; + color:#fff; +} + +.submit_normal_azul { + border-bottom:solid 2px #000; + border-right:solid 2px #000; + border-top:solid 1px #336699; + border-left:solid 1px #336699; + background-color:#002255; + color:#fff; + margin-left:10px; +} + +.submit_normal_azul:hover { + text-decoration:none; + background-color:#003366; + color:#fff; +} + + +/* Menu */ + +#menuContenedor a { + text-decoration: none; +} + +#menuContenedor ul +{ + padding: 0; + margin: 0; + list-style-type: none; + position: relative; +} + +#menuContenedor ul li { + display: inline; + margin: 0 0 0px; +} + +/*1st level elements*/ +#menuContenedor ul +{ + border-top: 1px solid #FcFcFc; + border-bottom: 1px solid #36c; + background-color: #FcFcFc; + padding: 2px 0; + margin-bottom: 2em; +} + +#menuContenedor ul a, +#menuContenedor ul a:link, +#menuContenedor ul a:visited +{ + background: #900; + border: 1px solid #FFF; + bottom: 2px; + color: #FFF; + height: 1em; + margin:0; + margin-left: 15px; + padding: 2px 4px 2px 4px; + position: relative; + right: 2px; + text-decoration: none; + z-index:1; +} + +#menuContenedor ul a:hover, +#menuContenedor ul a:focus +{ + background: #C00; + bottom: 1px; + color: #FFF; + position: relative; + right: 1px; +} + +/*current Link*/ +#menuContenedor ul a#current, +#menuContenedor ul a#current:link, +#menuContenedor ul a#current:visited { + background: #369; + border-bottom: none; + border-left: 1px solid #9CC; + border-right: 1px solid #9CC; + border-top: 1px solid #9CC; + bottom: 0; + color: #FFF; + cursor: text; + margin: 0; + margin-left: 15px; + padding: 2px 5px 0 5px; + position: relative; + right: 0; + } + +/*Second and subsequent levels*/ +#menuContenedor ul ul +{ + font-size: 80%; + position: absolute; + top: 20px; + left: 0; + width: 100%; + border-top: none; + background-color: #369; + height: 2em; +} + +#menuContenedor ul ul li { display: inline; } + +#menuContenedor ul ul a, +#menuContenedor ul ul a:link, +#menuContenedor ul ul a:visited +{ + background-color: #95B1BB; + border: 1px solid black; + color: black; + top: 12px; +} + +#menuContenedor ul ul a:hover, +#menuContenedor ul ul a:focus +{ + background-color: #9CD4F7; + border: 1px solid #000000; + color: black; +} + +/*current Link*/ +#menuContenedor ul ul a#subcurrent, +#menuContenedor ul ul a#subcurrent:link, +#menuContenedor ul ul a#subcurrent:visited { + background-color: #F7F7F7; + border: 1px solid #F7F7F7; + color: black; + cursor: text; + margin: 0; + margin-left: 15px; + position: relative; + right: 0; +} + +#menu { + display:block; + top:50px; +} + + .opcion { + float: left; + margin-left: 15px; + padding-right: 5px; + } + + .opcion img { + display: block; + margin-left: auto; + margin-right: auto; + border: 0; + } + +h2 {color: #9a4723; margin:0px;} + +legend {color: #9a4723; margin:0px; font-size:large;} \ No newline at end of file diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..060afda --- /dev/null +++ b/admin/index.php @@ -0,0 +1,158 @@ + +isAdmin()) { +?> + + + + gelato :: Control panel + + + + + + + + +
+ gelato CMS +
+ + + +
+
+
+

Manage the posts

+
+The article has been eliminated successfully.
"; + } + } + + if (isset($_GET["modified"])) { + if ($_GET["modified"]=="true") { + echo "
The article has been modified successfully.
"; + } + } + + if (isset($_GET["added"])) { + if ($_GET["added"]=="true") { + echo "
The article has been added successfully.
"; + } + } + + if (isset($_GET["error"])) { + if ($_GET["error"]==2) { + echo "
Error on the database server: ".$_GET["des"]."
"; + } + } + + if (isset($_GET["mp3"])) { + if ($_GET["mp3"]=="false") { + echo "
Not an MP3 file or an upload problem.
"; + } + } + + if (isset($_GET["photo"])) { + if ($_GET["photo"]=="false") { + echo "
Not a photo file or an upload problem.
"; + } + } +?> + +

 

+

Title 1

+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas facilisis scelerisque ligula. Aliquam accumsan. In hac habitasse platea dictumst. Nulla ut urna eget felis tempor pellentesque. Fusce sollicitudin ultricies lacus. Duis felis. Mauris posuere enim ac tortor scelerisque tempus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Fusce porta. Integer odio purus, semper malesuada, eleifend in, volutpat non, quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aliquam pellentesque aliquet turpis. Quisque non enim sed enim ullamcorper aliquet. Integer sit amet arcu.

+

 

+
+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+ + + +urlGelato."/login.php"); +} +?> \ No newline at end of file diff --git a/admin/scripts/mootools.js b/admin/scripts/mootools.js new file mode 100644 index 0000000..1bf6702 --- /dev/null +++ b/admin/scripts/mootools.js @@ -0,0 +1,2 @@ +//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006 Valerio Proietti, , MIT Style License. +eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('n V=k(1t){n 6e=k(){m(9.1e&&1h[0]!=\'8a\')l 9.1e.3M(9,1h);U l 9};P(n G 15 9)6e[G]=9[G];6e.19=1t;l 6e};V.1n=k(){};V.19={Q:k(1t){n 6i=I 9(\'8a\');n 7T=k(2s,1R){m(!2s.3M||!1R.3M)l K;l k(){9.1u=2s;l 1R.3M(9,1h)}};P(n G 15 1t){n 2s=6i[G];n 1R=1t[G];m(2s&&2s!=1R)1R=7T(2s,1R)||1R;6i[G]=1R}l I V(6i)},1P:k(1t){P(n G 15 1t)9.19[G]=1t[G]}};1H.Q=k(){n 1c=1h;1c=(1c[1])?[1c[0],1c[1]]:[9,1c[0]];P(n G 15 1c[1])1c[0][G]=1c[1][G];l 1c[0]};1H.7M=k(){P(n i=0;i<1h.14;i++)1h[i].Q=V.19.1P};I 1H.7M(6u,1L,5Z,9B,V);m(7t 4O==\'3D\'){n 4O=V.1n;4O.19={}}U{4O.19.7l=1f}18.Q=N.Q=1H.Q;n ag=18;k $B(J){m(J===1W||J===3D)l K;n B=7t J;m(B==\'4y\'){m(J.7l)l\'F\';m(J.1v)l\'26\';m(J.ac){2f(J.8M){1a 1:l\'F\';1a 3:l J.ah.1l(/\\S/)?\'ap\':\'5L\'}}}l B};k $2a(J){l!!(J||J===0)};k $aq(J,8C){l($B(J))?J:8C};k $8B(34,1q){l M.8K(M.8B()*(1q-34+1)+34)};k $3H(1r){aj(1r);ak(1r);l 1W};m(18.8m)18.3L=18[18.5T?\'al\':\'6z\']=1f;U m(N.9w&&!N.a0&&!a4.a3)18.3R=1f;U m(N.bi!=1W)18.7f=1f;m(18.6z)7K{N.b2("aZ",K,1f)}7G(e){};1L.19.5r=1L.19.5r||k(W,O){P(n i=0;i<9.14;i++)W.1D(O,9[i],i,9)};1L.19.2J=1L.19.2J||k(W,O){n 44=[];P(n i=0;i<9.14;i++){m(W.1D(O,9[i],i,9))44.1v(9[i])}l 44};1L.19.4A=1L.19.4A||k(W,O){n 44=[];P(n i=0;i<9.14;i++)44[i]=W.1D(O,9[i],i,9);l 44};1L.19.4M=1L.19.4M||k(W,O){P(n i=0;i<9.14;i++){m(!W.1D(O,9[i],i,9))l K}l 1f};1L.19.8H=1L.19.8H||k(W,O){P(n i=0;i<9.14;i++){m(W.1D(O,9[i],i,9))l 1f}l K};1L.19.49=1L.19.49||k(4l,T){T=T||0;m(T<0)T=M.1q(0,9.14+T);3O(T<9.14){m(9[T]===4l)l T;T++}l-1};1L.Q({1j:1L.19.5r,6P:k(17,14){17=17||0;m(17<0)17=9.14+17;14=14||(9.14-17);n 3Z=[];P(n i=0;i<14;i++)3Z[i]=9[17++];l 3Z},3V:k(4l){n i=0;3O(i<9.14){m(9[i]===4l)9.6o(i,1);U i++}l 9},1l:k(4l,T){l 9.49(4l,T)!=-1},Q:k(3Z){P(n i=0;i<3Z.14;i++)9.1v(3Z[i]);l 9},be:k(1S){n J={},14=M.34(9.14,1S.14);P(n i=0;i<14;i++)J[1S[i]]=9[i];l J}});k $A(26,17,14){l 1L.19.6P.1D(26,17,14)};k $1j(7O,W,O){l 1L.19.5r.1D(7O,W,O)};5Z.Q({1l:k(5w,86){l((7t 5w==\'2L\')?I 7o(5w,86):5w).1l(9)},2w:k(){l 7x(9)},9e:k(){l 53(9)},6B:k(){l 9.3l(/-\\D/g,k(2p){l 2p.7v(1).8S()})},9n:k(){l 9.3l(/\\w[A-Z]/g,k(2p){l(2p.7v(0)+\'-\'+2p.7v(1).4R())})},9l:k(){l 9.4R().3l(/\\b[a-z]/g,k(2p){l 2p.8S()})},5I:k(){l 9.3l(/^\\s+|\\s+$/g,\'\')},65:k(){l 9.3l(/\\s{2,}/g,\' \').5I()},5O:k(26){n 1p=9.2p(/\\d{1,3}/g);l(1p)?1p.5O(26):K},52:k(26){n 36=9.2p(/^#?(\\w{1,2})(\\w{1,2})(\\w{1,2})$/);l(36)?36.aL(1).52(26):K}});1L.Q({5O:k(26){m(9.14<3)l K;m(9[3]&&(9[3]==0)&&!26)l\'aJ\';n 36=[];P(n i=0;i<3;i++){n 5z=(9[i]-0).4v(16);36.1v((5z.14==1)?\'0\'+5z:5z)}l 26?36:\'#\'+36.2z(\'\')},52:k(26){m(9.14!=3)l K;n 1p=[];P(n i=0;i<3;i++){1p.1v(7x((9[i].14==1)?9[i]+9[i]:9[i],16))}l 26?1p:\'1p(\'+1p.2z(\',\')+\')\'}});9B.Q({2w:k(){l 7x(9)},9e:k(){l 53(9)}});6u.Q({2c:k(u){n W=9;u=1H.Q({\'O\':W,\'C\':K,\'1h\':1W,\'2n\':K,\'3g\':K,\'5P\':K},u||{});m($2a(u.1h)&&$B(u.1h)!=\'26\')u.1h=[u.1h];l k(C){n 1c;m(u.C){C=C||18.C;1c=[(u.C===1f)?C:I u.C(C)];m(u.1h)1c=1c.aD(u.1h)}U 1c=u.1h||1h;n 3a=k(){l W.3M(u.O,1c)};m(u.2n)l aC(3a,u.2n);m(u.3g)l aS(3a,u.3g);m(u.5P){7K{l 3a()}7G(9g){l 9g}}l 3a()}},bf:k(1c,O){l 9.2c({\'1h\':1c,\'O\':O})},5P:k(1c,O){l 9.2c({\'1h\':1c,\'O\':O,\'5P\':1f})()},O:k(O,1c){l 9.2c({\'O\':O,\'1h\':1c})},b6:k(O,1c){l 9.2c({\'O\':O,\'C\':1f,\'1h\':1c})},2n:k(5R,O,1c){l 9.2c({\'2n\':5R,\'O\':O,\'1h\':1c})()},3g:k(5R,O,1c){l 9.2c({\'3g\':5R,\'O\':O,\'1h\':1c})()}});n 1i=I V({1e:k(o){m($B(o)==\'2L\')o=N.9a(o);l $(o)}});k $(o){m(!o)l K;m(o.9o||[18,N].1l(o))l o;m($B(o)==\'2L\')o=N.64(o);m($B(o)!=\'F\')l K;m([\'4y\',\'b5\'].1l(o.62.4R())||o.Q)l o;o.9o=1f;3G.5y(o);o.Q=1H.Q;m(!(o.7l))o.Q(1i.19);l o};n 2K=I V({});I 1H.7M(2K);N.3C=N.3e;k $$(){m(!1h)l K;m(1h.14==1){m(!1h[0])l K;m(1h[0].9r)l 1h[0]}n 11=[];$1j(1h,k(1x){2f($B(1x)){1a\'F\':11.1v($(1x));2b;1a\'2L\':1x=N.3C(1x);6W:m(1x.14){$1j(1x,k(o){m($(o))11.1v(o)})}}});11.9r=1f;l 1H.Q(11,I 2K)};2K.5v=k(G){l k(){n 1c=1h;n 4P=[];n 11=1f;$1j(9,k(o){n 3a=o[G].3M(o,1c);m($B(3a)!=\'F\')11=K;4P.1v(3a)});m(11)4P=$$(4P);l 4P}};1i.Q=k(1t){P(n G 15 1t){4O.19[G]=1t[G];1i.19[G]=1t[G];2K.19[G]=2K.5v(G)}};1i.Q({4b:k(o,9v){o=$(o)||I 1i(o);2f(9v){1a"9F":$(o.2P).9O(9,o);2b;1a"9x":m(!o.5x())$(o.2P).5C(9);U $(o.2P).9O(9,o.5x());2b;1a"97":o.5C(9)}l 9},9H:k(o){l 9.4b(o,\'9F\')},7w:k(o){l 9.4b(o,\'9x\')},2O:k(o){l 9.4b(o,\'97\')},9D:k(o){9.5C($(o)||I 1i(o));l 9},3V:k(){9.2P.ai(9);l 9},98:k(9q){n o=9.ao(9q!==K);l $(o)},9T:k(o){o=$(o)||I 1i(o);9.2P.an(o,9);l o},am:k(1I){m(18.3L){2f(9.4I()){1a\'1F\':9.a7.9S=1I;l 9;1a\'2W\':9.5M(\'1I\',1I);l 9}}9.5C(N.a5(1I));l 9},5V:k(1s){l 9.1s.1l(\'(?:^|\\\\s)\'+1s+\'(?:\\\\s|$)\')},5a:k(1s){m(!9.5V(1s))9.1s=(9.1s+\' \'+1s).65();l 9},9c:k(1s){9.1s=9.1s.3l(I 7o(\'(^|\\\\s)\'+1s+\'(?:\\\\s|$)\'),\'$1\').65();l 9},a1:k(1s){l 9.5V(1s)?9.9c(1s):9.5a(1s)},1J:k(G,L){m(G==\'21\')9.92(53(L));U 9.1F[G.6B()]=(L.1v)?\'1p(\'+L.2z(\',\')+\')\':L;l 9},4D:k(1B){2f($B(1B)){1a\'4y\':P(n G 15 1B)9.1J(G,1B[G]);2b;1a\'2L\':9.1F.9S=1B}l 9},92:k(21){m(21==0){m(9.1F.3p!="3t")9.1F.3p="3t"}U{m(9.1F.3p!="7m")9.1F.3p="7m"}m(!9.5Q||!9.5Q.b1)9.1F.b3=1;m(18.3L)9.1F.2J="6g(21="+21*2x+")";9.1F.21=9.21=21;l 9},1V:k(G){G=G.6B();n 1F=9.1F[G]||K;m(!$2a(1F)){m(G==\'21\')l $2a(9.21)?9.21:1;m([\'3c\',\'aU\'].1l(G)){l[9.1V(G+\'-1k\')||0,9.1V(G+\'-45\')||0,9.1V(G+\'-3y\')||0,9.1V(G+\'-1m\')||0].2z(\' \')}m(N.94)1F=N.94.aW(9,1W).aY(G.9n());U m(9.5Q)1F=9.5Q[G]}m(1F==\'at\'&&[\'2u\',\'2v\'].1l(G))l 9[\'3P\'+G.9l()]+\'2Q\';l(1F&&G.1l(/1Y/i)&&1F.1l(/1p/))?1F.5O():1F},1d:k(B,W){9.12=9.12||{};9.12[B]=9.12[B]||{\'1S\':[],\'1X\':[]};m(!9.12[B].1S.1l(W)){9.12[B].1S.1v(W);m(9.9h){9.9h((B==\'4r\'&&18.7f)?\'72\':B,W,K)}U{W=W.O(9);9.bh(\'6s\'+B,W);9.12[B].1X.1v(W)}}l 9},bc:k(1B){m(1B){P(n B 15 1B)9.1d(B,1B[B])}l 9},1T:k(B,W){m(9.12&&9.12[B]){n 1N=9.12[B].1S.49(W);m(1N==-1)l 9;n 1E=9.12[B].1S.6o(1N,1)[0];m(9.9t){9.9t((B==\'4r\'&&18.7f)?\'72\':B,1E,K)}U{9.aT(\'6s\'+B,9.12[B].1X.6o(1N,1)[0])}}l 9},4j:k(B){m(9.12){m(B){m(9.12[B]){9.12[B].1S.1j(k(W){9.1T(B,W)},9);9.12[B]=1W}}U{P(n 9f 15 9.12)9.4j(9f);9.12=1W}}l 9},1g:k(B,1c){m(9.12&&9.12[B]){9.12[B].1S.1j(k(W){W.O(9,1c)()},9)}},6l:k(6m){n o=9[6m+\'93\'];3O($B(o)==\'5L\')o=o[6m+\'93\'];l $(o)},90:k(){l 9.6l(\'2s\')},5x:k(){l 9.6l(\'5i\')},aA:k(){n o=9.az;3O($B(o)==\'5L\')o=o.av;l $(o)},au:k(){n o=9.aw;3O($B(o)==\'5L\')o=o.ax;l $(o)},ay:k(){l $(9.2P)},7I:k(){l $$(9.9w)},5M:k(G,L){2f(G){1a\'9z\':9.1s=L;2b;1a\'1F\':9.4D(L);2b;1a\'22\':m(18.6z){n o=$(N.9a(\'<\'+9.4I()+\' 22="\'+L+\'" />\'));$1j(9.aG,k(4g){m(4g.22!=\'22\')o.5M(4g.22,4g.L)});m(9.2P)9.9T(o);l o}6W:9.aR(G,L)}l 9},88:k(1B){P(n G 15 1B)9.5M(G,1B[G]);l 9},4V:k(){9.aI=$A(1h).2z(\'\');l 9},7X:k(G){l(G==\'9z\')?9.1s:9.8A(G)},4I:k(){l 9.62.4R()},2X:k(x,y){9.57=x;9.58=y},3d:k(){2f(9.4I()){1a\'3r\':m(9.9E!=-1){n 74=9.u[9.9E];l 74.L||74.1I}2b;1a\'8g\':m(!(9.aK&&[\'aH\',\'aM\'].1l(9.B))&&![\'3t\',\'1I\',\'aN\'].1l(9.B))2b;1a\'8I\':l 9.L}l K},61:k(){l{\'2i\':{\'x\':9.57,\'y\':9.58},\'3v\':{\'x\':9.2E,\'y\':9.2y},\'5X\':{\'x\':9.5t,\'y\':9.5c}}},3K:k(3h){3h=3h||[];n o=9,1m=0,1k=0;aQ{1m+=o.aP||0;1k+=o.aO||0;o=o.aF}3O(o);3h.1j(k(F){1m-=F.57||0;1k-=F.58||0});l{\'x\':1m,\'y\':1k}},5s:k(){l 9.3K().y},69:k(){l 9.3K().x},3u:k(3h){n 1z=9.3K(3h);n J={\'2v\':9.2E,\'2u\':9.2y,\'1m\':1z.x,\'1k\':1z.y};J.45=J.1m+J.2v;J.3y=J.1k+J.2u;l J}});18.1d=N.1d=1i.19.1d;18.1T=N.1T=1i.19.1T;18.4j=N.4j=1i.19.4j;n 3G={11:[],5y:k(F){3G.11.1v(F)},6f:k(){3G.5y(18);3G.5y(N);3G.11.1j(k(o){o.4j();P(n p 15 1i.19)o[p]=1W;o.Q=1W})}};18.1d(\'aE\',3G.6f);n 4S=I V({1e:k(C){9.C=C||18.C;9.B=9.C.B;9.4Q=9.C.4Q||9.C.aB;m(9.4Q.8M==3)9.4Q=9.4Q.2P;9.8j=9.C.bb;9.ba=9.C.b9;9.b7=9.C.bd;9.bg=9.C.aX;m([\'72\',\'4r\'].1l(9.B)){9.4X=9.C.8v?(9.C.8v/(18.6X?-8w:8w)):-(9.C.aV||0)/ 3} U m (9.B.1l(/1E/)){9.6T=9.C.8E||9.C.b0;P(n 22 15 4S.1S){m(4S.1S[22]==9.6T){9.1E=22;2b}}9.1E=9.1E||5Z.b4(9.6T).4R()}U m(9.B.1l(/2h/)||(9.B==\'6K\')){9.1M={\'x\':9.C.6V||9.C.8p+N.2o.57,\'y\':9.C.6H||9.C.8r+N.2o.58};9.8U={\'x\':9.C.6V?9.C.6V-18.7U:9.C.8p,\'y\':9.C.6H?9.C.6H-18.7P:9.C.8r};9.a2=(9.C.8E==3)||(9.C.a6==2);2f(9.B){1a\'9W\':9.67=9.C.67||9.C.as;2b;1a\'9P\':9.67=9.C.67||9.C.79}}},1A:k(){9.6b();9.66();l 9},6b:k(){m(9.C.6b)9.C.6b();U 9.C.a8=1f;l 9},66:k(){m(9.C.66)9.C.66();U 9.C.ab=K;l 9}});4S.1S={\'aa\':13,\'a9\':38,\'ad\':40,\'1m\':37,\'45\':39,\'af\':27,\'ae\':32,\'b8\':8,\'cX\':46};6u.Q({28:k(O,1c){l 9.2c({\'O\':O,\'1h\':1c,\'C\':4S})}});n 7r=I V({9X:k(W){9.3F=9.3F||[];9.3F.1v(W);l 9},7p:k(){m(9.3F&&9.3F.14)9.3F.8j().2n(10,9)},8F:k(){9.3F=[]}});n 3m=I V({1d:k(B,W){m(W!=V.1n){9.12=9.12||{};9.12[B]=9.12[B]||[];m(!9.12[B].1l(W))9.12[B].1v(W)}l 9},1g:k(B,1c,2n){m(9.12&&9.12[B]){9.12[B].1j(k(W){W.2c({\'O\':9,\'2n\':2n,\'1h\':1c})()},9)}l 9},1T:k(B,W){m(9.12&&9.12[B])9.12[B].3V(W);l 9}});n 33=I V({2q:k(5e,u){9.u=1H.Q(5e,u);m(9.1d){P(n 4N 15 9.u){m(($B(9.u[4N])==\'k\')&&4N.1l(/^6s[A-Z]/))9.1d(4N,9.u[4N])}}l 9}});n cB=I V({1e:k(){9.4H=$A(1h);9.12={};9.4q={}},1d:k(B,W){9.4q[B]=9.4q[B]||{};9.12[B]=9.12[B]||[];m(9.12[B].1l(W))l K;U 9.12[B].1v(W);9.4H.1j(k(4G,i){4G.1d(B,9.7W.O(9,[B,4G,i]))},9);l 9},7W:k(B,4G,i){9.4q[B][i]=1f;n 4M=9.4H.4M(k(1R,j){l 9.4q[B][j]||K},9);m(!4M)l;9.4H.1j(k(1R,j){9.4q[B][j]=K},9);9.12[B].1j(k(C){C.1D(9,9.4H,4G)},9)}});k $E(1x,2J){l($(2J)||N).6h(1x)};k $cL(1x,2J){l($(2J)||N).3C(1x)};1i.Q({4J:k(1x){n 11=[];1x.65().5G(\' \').1j(k(6c,i){n 29=6c.2p(/^(\\w*|\\*)(?:#([\\w-]+)|\\.([\\w-]+))?(?:\\[(\\w+)(?:([*^$]?=)["\']?([^"\'\\]]*)["\']?)?])?$/);m(!29)l;2I.1x=29;29[1]=29[1]||\'*\';m(i==0){m(29[2]){n o=9.64(29[2]);m(!o||((29[1]!=\'*\')&&(1i.19.4I.1D(o)!=29[1])))l;11=[o]}U{11=$A(9.3e(29[1]))}}U{11=2K.19.3e.1D(11,29[1],1f);m(29[2])11=11.2J(2I.3W)}m(29[3])11=11.2J(2I.1s);m(29[4])11=11.2J(2I.4g)},9);l $$(11)},64:k(3W){n o=N.64(3W);m(!o)l K;P(n 1u=o.2P;1u!=9;1u=1u.2P){m(!1u)l K}l o},6h:k(1x){l 9.3C(1x)[0]},3C:k(1x){n 73=[];1x.5G(\',\').1j(k(6c){73.Q(9.4J(6c))},9);l $$(73)}});N.Q({cN:k(1s){l N.4J(\'.\'+1s)},6h:1i.19.6h,4J:1i.19.4J,3C:1i.19.3C});n 2I={1x:[],3W:k(o){l(o.3W==2I.1x[2])},1s:k(o){l(1i.19.5V.1D(o,2I.1x[3]))},4g:k(o){n 1R=o.8A(2I.1x[4]);m(!1R)l K;n 76=2I.1x[5];m(!76)l 1f;n L=2I.1x[6];2f(76){1a\'*=\':l(1R.1l(L));1a\'=\':l(1R==L);1a\'^=\':l(1R.1l(\'^\'+L));1a\'$=\':l(1R.1l(L+\'$\'))}l K}};2K.Q({3e:k(62){n 78=[];9.1j(k(o){78.Q(o.3e(62))});l 78}});n 8y=I V({14:0,J:{},1e:k(J){9.Q(J)},7g:k(1E){l 9.J[1E]},cA:k(1E){l 9.J[1E]!==3D},2e:k(1E,L){m(L===3D)l K;m(9.J[1E]===3D)9.14++;9.J[1E]=L;l 9},3V:k(1E){m(9.J[1E]===3D)l 9;n J={};9.14--;P(n G 15 9.J){m(G!=1E)J[G]=9.J[G]}9.J=J;l 9},1j:k(W,O){P(n G 15 9.J)W.1D(O||9,G,9.J[G])},Q:k(J){P(n G 15 J){m(9.J[G]===3D)9.14++;9.J[G]=J[G]}l 9},1n:k(){l(9.14==0)},1S:k(){n 1S=[];P(n G 15 9.J)1S.1v(G);l 1S},1X:k(){n 1X=[];P(n G 15 9.J)1X.1v(9.J[G]);l 1X}});k $H(J){l I 8y(J)};n 2l=I V({1e:k(1Y,B){m(1Y.8x)l 1Y;1Y.8x=1f;B=B||(1Y.1v?\'1p\':\'36\');n 1p,1Q;2f(B){1a\'1p\':1p=1Y;1Q=1p.6R();2b;1a\'1Q\':1p=1Y.8Y();1Q=1Y;2b;6W:1p=1Y.52(1f);1Q=1p.6R()}1p.1Q=1Q;l 1H.Q(1p,2l.19)},cD:k(){n 4K=$A(1h);n 6g=($B(4K[4K.14-1])==\'9J\')?4K.cY():50;n 1p=9.6P();4K.1j(k(1Y){1Y=I 2l(1Y);P(n i=0;i<3;i++)1p[i]=M.2t((1p[i]/ 2x * (2x - 6g)) + (1Y[i] /2x*6g))});l I 2l(1p,\'1p\')},d5:k(){l I 2l(9.4A(k(L){l 3X-L}))},db:k(L){l I 2l([L,9.1Q[1],9.1Q[2]],\'1Q\')},d6:k(6d){l I 2l([9.1Q[0],6d,9.1Q[2]],\'1Q\')},d4:k(6d){l I 2l([9.1Q[0],9.1Q[1],6d],\'1Q\')}});k $cS(r,g,b){l I 2l([r,g,b],\'1p\')};k $cF(h,s,b){l I 2l([h,s,b],\'1Q\')};1L.Q({6R:k(){n 4U=9[0],55=9[1],5n=9[2];n 2r,5q,6O;n 1q=M.1q(4U,55,5n),34=M.34(4U,55,5n);n 4T=1q-34;6O=1q/3X;5q=(1q!=0)?4T/1q:0;m(5q==0){2r=0}U{n 6U=(1q-4U)/4T;n 6S=(1q-55)/4T;n br=(1q-5n)/4T;m(4U==1q)2r=br-6S;U m(55==1q)2r=2+6U-br;U 2r=4+6S-6U;2r/=6;m(2r<0)2r++}l[M.2t(2r*8X),M.2t(5q*2x),M.2t(6O*2x)]},8Y:k(){n br=M.2t(9[2]/2x*3X);m(9[1]==0){l[br,br,br]}U{n 2r=9[0]%8X;n f=2r%60;n p=M.2t((9[2]*(2x-9[1]))/cx*3X);n q=M.2t((9[2]*(8R-9[1]*f))/8Q*3X);n t=M.2t((9[2]*(8R-9[1]*(60-f)))/8Q*3X);2f(M.8K(2r/60)){1a 0:l[br,t,p];1a 1:l[q,br,p];1a 2:l[p,br,t];1a 3:l[p,q,br];1a 4:l[t,p,br];1a 5:l[br,p,q]}}l K}});18.Q({1d:k(B,W){m(B==\'56\'){m(9.5u)W();U m(!9.12||!9.12.56){n 54=k(){m(9.5u)l;9.5u=1f;m(9.1r)9.1r=$3H(9.1r);1i.19.1g.1D(9,\'56\');9.12.56=1W}.O(9);m(N.4w&&9.3R){9.1r=k(){m([\'5u\',\'8O\'].1l(N.4w))54()}.3g(50)}U m(N.4w&&9.3L){N.cK("<2W 3W=8P cJ 5g=5Y:cI(0)><\\/2W>");$(\'8P\').7h=k(){m(9.4w==\'8O\')54()}}U{9.1d("cM",54);N.1d("cQ",54)}}}1i.19.1d.1D(9,B,W);l 9},cP:k(7S){l 9.1d(\'56\',7S)}});18.Q({7b:k(){m(9.3R)l 9.bj;m(9.6X)l N.3q.80;l N.2o.80},6M:k(){m(9.3R)l 9.cH;m(9.6X)l N.3q.7Z;l N.2o.7Z},8n:k(){m(9.3L)l M.1q(N.2o.2E,N.2o.5t);m(9.3R)l N.3q.5t;l N.2o.5t},8h:k(){m(9.3L)l M.1q(N.2o.2y,N.2o.5c);m(9.3R)l N.3q.5c;l N.2o.5c},6N:k(){l 9.7U||N.2o.57},6I:k(){l 9.7P||N.2o.58},61:k(){l{\'3v\':{\'x\':9.7b(),\'y\':9.6M()},\'5X\':{\'x\':9.8n(),\'y\':9.8h()},\'2i\':{\'x\':9.6N(),\'y\':9.6I()}}},3K:k(){l{\'x\':0,\'y\':0}}});n 1b={};1b.1U=I V({23:k(){l{3k:V.1n,1G:V.1n,70:V.1n,83:1b.47.6j,3s:cG,2k:\'2Q\',2T:1f,8i:50}},1e:k(u){9.F=9.F||1W;9.2q(9.23(),u);m(9.u.1e)9.u.1e.1D(9)},1C:k(){n 43=I 7q().7i();m(43<9.43+9.u.3s){9.8f=43-9.43;9.3I();9.3b()}U{9.1A(1f);9.Y=9.R;9.3b();9.1g(\'1G\',9.F,10);9.7p()}},2e:k(R){9.Y=R;9.3b();l 9},3I:k(){9.Y=9.3N(9.T,9.R)},3N:k(T,R){l 9.u.83(9.8f,T,(R-T),9.u.3s)},17:k(T,R){m(!9.u.2T)9.1A();U m(9.1r)l 9;9.T=T;9.R=R;9.43=I 7q().7i();9.1r=9.1C.3g(M.2t(cy/9.u.8i),9);9.1g(\'3k\',9.F);l 9},1A:k(1Z){m(!9.1r)l 9;9.1r=$3H(9.1r);m(!1Z)9.1g(\'70\',9.F);l 9},cw:k(T,R){l 9.17(T,R)},cE:k(1Z){l 9.1A(1Z)}});1b.1U.1P(I 7r);1b.1U.1P(I 3m);1b.1U.1P(I 33);1b.47={9N:k(t,b,c,d){l c*t/d+b},6j:k(t,b,c,d){l-c/2*(M.6k(M.2A*t/d)-1)+b}};1b.2G={3r:k(G,R){m(G.1l(/1Y/i))l 9.2l;m(R.1l&&R.1l(\' \'))l 9.5v;l 9.8l},2m:k(o,G,4a){m(!4a.1v)4a=[4a];n T=4a[0],R=4a[1];m(!R&&R!=0){R=T;T=o.1V(G)}n 1o=9.3r(G,R);l{T:1o.2m(T),R:1o.2m(R),1o:1o}}};1b.2G.8l={2m:k(L){l 53(L)},4c:k(T,R,2g){l 2g.3N(T,R)},3d:k(L,2k){l L+2k}};1b.2G.5v={2m:k(L){l L.1v?L:L.5G(\' \').4A(k(v){l 53(v)})},4c:k(T,R,2g){n Y=[];P(n i=0;i9.u.3S){N.1T(\'2R\',9.1y.2B);9.1y.2B=9.1y.2j;N.1d(\'2R\',9.1y.2B);9.2j(C);9.1g(\'9s\',9.F)}C.1A()},2j:k(C){9.4t=K;9.2h.Y=C.1M;P(n z 15 9.u.3n){9.L.Y[z]=9.2h.Y[z]-9.2h.1N[z];m(9.1w[z]){m($2a(9.1w[z][1])&&(9.L.Y[z]>9.1w[z][1])){9.L.Y[z]=9.1w[z][1];9.4t=1f}U m($2a(9.1w[z][0])&&(9.L.Y[z]<9.1w[z][0])){9.L.Y[z]=9.1w[z][0];9.4t=1f}}9.F.1J(9.u.3n[z],9.L.Y[z]+9.u.2k)}9.1g(\'7j\',9.F);C.1A()},7N:k(){9.3T.1T(\'5h\',9.1y.17)},1A:k(){N.1T(\'2R\',9.1y.2B);N.1T(\'5W\',9.1y.1A);9.1g(\'1G\',9.F)}});2M.1U.1P(I 3m);2M.1U.1P(I 33);1i.Q({bo:k(u){l I 2M.1U(9,1H.Q(u||{},{3n:{x:\'2v\',y:\'2u\'}}))}});2M.9y=2M.1U.Q({5A:k(){l{4s:[],4u:K,3h:[]}},1e:k(o,u){9.2q(9.5A(),u);9.F=$(o);9.1z=9.F.1V(\'1z\');9.4s=$$(9.u.4s);m(![\'4p\',\'7Q\'].1l(9.1z))9.1z=\'4p\';n 1k=9.F.1V(\'1k\').2w();n 1m=9.F.1V(\'1m\').2w();m(9.1z==\'4p\'){1k=$2a(1k)?1k:9.F.5s();1m=$2a(1m)?1m:9.F.69()}U{1k=$2a(1k)?1k:0;1m=$2a(1m)?1m:0}9.F.4D({\'1k\':1k+\'2Q\',\'1m\':1m+\'2Q\',\'1z\':9.1z});9.1u(9.F,9.u)},17:k(C){9.4u=$(9.u.4u);m(9.4u){n 2S=9.4u.3u();n o=9.F.3u();m(9.1z==\'4p\'){9.u.1w={\'x\':[2S.1m,2S.45-o.2v],\'y\':[2S.1k,2S.3y-o.2u]}}U{n 6r=o.1m-9.F.1V(\'1m\').2w();n 6x=o.1k-9.F.1V(\'1k\').2w();9.u.1w={\'y\':[-(6x)+2S.1k,2S.3y-6x-o.2u],\'x\':[-(6r)+2S.1m,2S.45-6r-o.2v]}}}9.1u(C)},2j:k(C){9.1u(C);m(9.4t)l 9;9.4s.1j(k(2d){m(9.6w($(2d))){m(!2d.5F)2d.1g(\'bk\',[9.F,9]);2d.5F=1f}U{m(2d.5F)2d.1g(\'bl\',[9.F,9]);2d.5F=K}},9);l 9},6w:k(o){o=o.3u(9.u.3h);l(9.2h.Y.x>o.1m&&9.2h.Y.xo.1k)},1A:k(){9.1u();9.1r=$3H(9.1r);m(9.4t)l 9;n 6v=K;9.4s.1j(k(2d){m(9.6w(2d)){2d.1g(\'2d\',[9.F,9]);6v=1f}},9);m(!6v)9.F.1g(\'2d\',9);l 9}});1i.Q({bm:k(u){l I 2M.9y(9,u)}});n 4h=I V({23:k(){l{3f:\'4e\',9Y:1f,9L:V.1n,5K:V.1n,4f:V.1n,5D:V.1n,3B:{},5E:9.5E}},1e:k(u){9.24=18.5T?I 5T():(18.3L?I 8m(\'bt.bu\'):K);9.2q(9.23(),u);m(!9.24)l;9.3B={};m(9.u.1e)9.u.1e.1D(9)},5K:k(){9.1g(\'5K\',9.24);m(9.24.4w!=4)l;n 3J=0;7K{3J=9.24.3J}7G(e){}m(9.u.5E(3J))9.4f();U 9.5D();9.24.7h=V.1n},5E:k(3J){l((3J>=bA)&&(3J]*>([\\s\\S]*?)<\\/2W>/cq;3O((2W=8k.cn(9.2U.1I)))7B(2W[1])}});1H.3Y=k(1B){n 7s=[];P(n G 15 1B)7s.1v(7V(G)+\'=\'+7V(1B[G]));l 7s.2z(\'&\')};1i.Q({4C:k(u){u=1H.Q(u||{},{3U:9.3Y(),3f:\'4e\'});l I 81(9.7X(\'co\'),u).7R()},8V:k(){n J={};$$(9.3e(\'8g\'),9.3e(\'3r\'),9.3e(\'8I\')).1j(k(o){n 22=$(o).22;n L=o.3d();m((L!==K)&&22)J[22]=L});l J},3Y:k(){l 1H.3Y(9.8V())}});n cp={2e:k(1E,L,u){u=1H.Q({5k:K,5m:K,3s:cd},u||{});L=cc(L);m(u.5k)L+="; 5k="+u.5k;m(u.5m)L+="; 5m="+u.5m;m(u.3s){n 5N=I 7q();5N.c1(5N.7i()+(u.3s*c2));L+="; c0="+5N.bZ()}N.8t=1E+"="+L},7g:k(1E){n L=N.8t.2p(\'(?:^|;)\\\\s*\'+1E+\'=([^;]*)\');l L?bW(L[1]):K},3V:k(1E){9.2e(1E,\'\',{3s:-1})}};n 4k={4v:k(J){2f($B(J)){1a\'2L\':l\'"\'+J.3l(I 7o(\'(["\\\\\\\\])\',\'g\'),\'\\\\$1\')+\'"\';1a\'26\':l\'[\'+J.4A(k(ar){l 4k.4v(ar)}).2z(\',\')+\']\';1a\'4y\':n 2L=[];P(n G 15 J)2L.1v(\'"\'+G+\'":\'+4k.4v(J[G]));l\'{\'+2L.2z(\',\')+\'}\'}l 5Z(J)},8J:k(8L){l 7B(\'(\'+8L+\')\')}};4k.c3=4h.Q({1e:k(2D,u){9.2D=2D;9.1d(\'4f\',9.1G);9.1u(u);9.4i(\'X-c4\',\'ca\')},4C:k(J){l 9.1u(9.2D,\'cb=\'+4k.4v(J))},1G:k(){9.1g(\'1G\',4k.8J(9.2U.1I))}});n 5f={5Y:k(1B,1t){l 5f.2c(\'2W\',{\'B\':\'1I/5Y\',\'5g\':1B},1t,1f)},1o:k(1B,1t){l 5f.2c(\'c9\',{\'9k\':\'c8\',\'c5\':\'c6\',\'B\':\'1I/1o\',\'3z\':1B},1t,1f)},3A:k(1B,1t){1t=1H.Q({\'5g\':1B,\'5d\':V.1n,\'7L\':V.1n,\'7H\':V.1n},1t||{});n 3A=I c7();3A.5d=k(){m(1h.7Y.8b)l K;1h.7Y.8b=1f;9.5d=1W;l 1t.5d.1D(9)};3A.7H=1t.7H;3A.7L=1t.7L;3A.5g=1t.5g;l 5f.2c(\'7y\',1t)},5U:k(4o,u){u=1H.Q({1G:V.1n,8z:V.1n},u||{});m(!4o.1v)4o=[4o];n 5U=[];7n=0;4o.1j(k(1B){n 7y=I 5f.3A(1B,{\'5d\':k(){7n++;u.8z();m(7n==4o.14)u.1G()}});5U.1v(7y)});l 5U},2c:k(B,5e,1t,4b){1H.Q(5e,1t||{});n F=I 1i(B).88(5e);m(4b)F.2O($$(\'ct\')[0]);l F}};n 7a=1b.2K.Q({5A:k(){l{6Y:V.1n,9m:V.1n,2Z:0,3j:K,2u:1f,2v:K,21:1f,5S:K,5B:K,2T:K,5j:K}},1e:k(3x,11,u){9.2q(9.5A(),u);9.2s=-1;m(9.u.5j)9.u.2T=1f;m($2a(9.u.3j)){9.u.2Z=K;9.2s=9.u.3j}m(9.u.17){9.u.2Z=K;9.u.3j=K}9.3x=$$(3x);9.11=$$(11);9.3x.1j(k(9Z,i){9Z.1d(\'6K\',9.2Z.O(9,i))},9);9.11.1j(k(o,i){o.9b=1;m(9.u.5B)o.9i=9.u.5B;m(9.u.5S)o.9V=9.u.5S;o.1J(\'99\',\'3t\')},9);9.2V={};m(9.u.21)9.2V.21=\'9b\';m(9.u.2v)9.2V.2v=9.u.5B?\'9i\':\'2E\';m(9.u.2u)9.2V.2u=9.u.5S?\'9V\':\'5c\';9.11.1j(k(o,i){m(9.u.3j===i)9.1g(\'6Y\',[9.3x[i],o]);U P(n 2g 15 9.2V)o.1J(2g,0)},9);9.1u(9.11,9.u);m($2a(9.u.2Z))9.2Z(9.u.2Z)},2Z:k(42){m((9.1r&&9.u.2T)||(42===9.2s&&!9.u.5j))l 9;9.2s=42;n J={};9.11.1j(k(o,i){J[i]={};m((i!=42)||(9.u.5j&&(o.2y>0))){9.1g(\'9m\',[9.3x[i],o]);P(n 2g 15 9.2V)J[i][2g]=0}U{9.1g(\'6Y\',[9.3x[i],o]);P(n 2g 15 9.2V)J[i][2g]=o[9.2V[2g]]}},9);l 9.17(J)},cz:k(42){l 9.2Z(42)}});1b.7a=7a;n 6q=I V({23:k(){l{5b:20,6F:1,68:k(x,y){9.F.2X(x,y)}}},1e:k(F,u){9.2q(9.23(),u);9.F=$(F);9.6J=([18,N].1l(F))?$(N.3q):9.F},17:k(){9.6Q=9.8T.28(9);9.6J.1d(\'2R\',9.6Q)},1A:k(){9.6J.1T(\'2R\',9.6Q);9.1r=$3H(9.1r)},8T:k(C){9.1M=(9.F==18)?C.8U:C.1M;m(!9.1r)9.1r=9.2i.3g(50,9)},2i:k(){n o=9.F.61();n 1N=9.F.3K();n 3w={\'x\':0,\'y\':0};P(n z 15 9.1M){m(9.1M[z]<(9.u.5b+1N[z])&&o.2i[z]!=0)3w[z]=(9.1M[z]-9.u.5b-1N[z])*9.u.6F;U m(9.1M[z]+9.u.5b>(o.3v[z]+1N[z])&&o.2i[z]+o.3v[z]!=o.5X[z])3w[z]=(9.1M[z]-o.3v[z]+9.u.5b-1N[z])*9.u.6F}m(3w.y||3w.x)9.1g(\'68\',[o.2i.x+3w.x,o.2i.y+3w.y])}});6q.1P(I 3m);6q.1P(I 33);n 6L=I V({23:k(){l{68:V.1n,1G:V.1n,6Z:k(1N){9.2C.1J(9.p,1N+\'2Q\')},4E:2x,1K:\'6D\',4X:K}},1e:k(o,2C,u){9.F=$(o);9.2C=$(2C);9.2q(9.23(),u);9.7k=-1;9.7z=-1;9.1C=-1;9.F.1d(\'5h\',9.8W.28(9));m(9.u.4X)9.F.1d(\'4r\',9.8u.28(9));m(9.u.1K==\'6D\'){9.z=\'x\';9.p=\'1m\';9.1q=9.F.2E-9.2C.2E;9.7d=9.2C.2E/2;9.6G=9.F.69.O(9.F)}U m(9.u.1K==\'6t\'){9.z=\'y\';9.p=\'1k\';9.1q=9.F.2y-9.2C.2y;9.7d=9.2C.2y/2;9.6G=9.F.5s.O(9.F)}9.2C.1J(\'1z\',\'7Q\').1J(9.p,0);n 7C={},7D={};7D[9.z]=[0,9.1q];7C[9.z]=9.p;9.2j=I 2M.1U(9.2C,{1w:7D,3S:0,3n:7C,3k:k(){9.5p()}.O(9),7j:k(){9.5p()}.O(9),1G:k(){9.5p();9.1Z()}.O(9)});m(9.u.1e)9.u.1e.1D(9)},2e:k(1C){m(1C>9.u.4E)1C=9.u.4E;U m(1C<0)1C=0;9.1C=1C;9.6a();9.1Z();9.1g(\'6Z\',9.8e(9.1C)+\'\');l 9},8u:k(C){m(C.4X<0)9.2e(9.1C+1);U m(C.4X>0)9.2e(9.1C-1);C.1A()},8W:k(C){n 1z=C.1M[9.z]-9.6G()-9.7d;m(1z>9.1q)1z=9.1q;U m(1z<0)1z=0;9.1C=9.7A(1z);9.6a();9.1Z();9.1g(\'6Z\',1z+\'\')},5p:k(){9.1C=9.7A(9.2j.L.Y[9.z]);9.6a()},6a:k(){m(9.7k!=9.1C){9.7k=9.1C;9.1g(\'68\',9.1C)}},1Z:k(){m(9.7z!==9.1C){9.7z=9.1C;9.1g(\'1G\',9.1C+\'\')}},7A:k(1z){l M.2t(1z/9.1q*9.u.4E)},8e:k(1C){l(9.1q)*1C/9.u.4E}});6L.1P(I 3m);6L.1P(I 33);n bs=1b.9C.Q({1e:k(u){9.1d(\'70\',9.8F);n 4L=18.4L.3z.2p(/^[^#]*/)[0]+\'#\';$1j(N.cO,k(4n){m(4n.3z.49(4L)!=0)l;n 3Q=4n.3z.96(4L.14);m(3Q&&$(3Q))9.82(4n,3Q)},9);9.1u(18,u)},82:k(4n,3Q){4n.1d(\'6K\',k(C){m(!18.3R)9.9X(k(){18.4L.3z=\'#\'+3Q});9.79(3Q);C.1A()}.28(9))}});n 7F=I V({23:k(){l{41:K,3k:V.1n,1G:V.1n,2Y:1f,3S:3,8s:k(F,2Y){2Y.1J(\'21\',0.5)},8Z:k(F,2Y){2Y.3V()}}},1e:k(4m,u){9.2q(9.23(),u);9.4m=$(4m);9.11=9.4m.7I();9.41=$$(9.u.41)||9.11;9.2j=[];9.1y={\'17\':[]};9.11.1j(k(o,i){9.1y.17[i]=9.17.28(9,o);m(9.u.2Y){9.6f=I 1i(\'48\').2O(N.3q);n 1w=9.4m.3u();9.2j[i]=I 2M.1U(o,{3T:9.41[i],3S:9.u.3S,3n:{y:\'1k\'},1w:{y:[1w.1k,1w.3y-o.2y]},6C:k(F){n 4d=F.3K();9.8o=F;9.2j[i].F=9.2Y=F.98().4D({\'1z\':\'4p\',\'1k\':4d.y+\'2Q\',\'1m\':4d.x+\'2Q\'}).2O(9.6f);9.1g(\'8s\',[o,9.2Y])}.O(9),1G:k(F){9.2j[i].F=9.8o;9.1g(\'8Z\',[o,9.2Y])}.O(9)})}9.41[i].1d(\'5h\',9.17.28(9,o))},9);m(9.u.1e)9.u.1e.1D(9)},17:k(C,o){9.1y.2B=9.2B.28(9,o);9.1y.1Z=9.1Z.O(9,o);N.1d(\'2R\',9.1y.2B);N.1d(\'5W\',9.1y.1Z);9.1g(\'3k\',o);C.1A()},2B:k(C,o){n 5o=o.90();n 5i=o.5x();m(5o){n 87=5o.3u();m(C.1M.y<87.3y)o.9H(5o)}m(5i){n 9d=5i.3u();m(C.1M.y>9d.1k)o.7w(5i)}C.1A()},7N:k(){9.11.1j(k(o,i){9.41[i].1T(\'5h\',9.1y.17[i])},9)},bX:k(){n 7J=[];9.4m.7I().1j(k(o,i){7J[i]=9.11.49(o)},9);l 7J},1Z:k(o){N.1T(\'2R\',9.1y.2B);N.1T(\'5W\',9.1y.1Z);9.1g(\'1G\',o)}});7F.1P(I 3m);7F.1P(I 33);n 7E=I V({23:k(){l{8D:k(3o){3o.1J(\'3p\',\'7m\')},8q:k(3o){3o.1J(\'3p\',\'3t\')},6y:30,8c:2x,8d:2x,1s:\'bY\',4d:{\'x\':16,\'y\':16},9U:K}},1e:k(11,u){9.2q(9.23(),u);9.3E=I 1i(\'48\').5a(9.u.1s+\'-3o\').4D({\'1z\':\'4p\',\'1k\':\'0\',\'1m\':\'0\',\'3p\':\'3t\'}).2O(N.3q);9.2F=I 1i(\'48\').2O(9.3E);$1j(11,k(o){9.8N($(o))},9);m(9.u.1e)9.u.1e.1D(9)},8N:k(o){o.3i=o.3z?o.3z.3l(\'cr://\',\'\'):(o.9k||K);m(o.51){n 5H=o.51.5G(\'::\');m(5H.14>1){o.3i=5H[0].5I();o.4F=5H[1].5I()}U{o.4F=o.51}o.bn(\'51\')}U{o.4F=K}m(o.3i&&o.3i.14>9.u.6y)o.3i=o.3i.96(0,9.u.6y-1)+"&bQ;";o.1d(\'9W\',k(C){9.17(o);9.7c(C)}.28(9));m(!9.u.9U)o.1d(\'2R\',9.7c.28(9));o.1d(\'9P\',9.1Z.28(9))},17:k(o){9.2F.4V(\'\');m(o.3i){I 1i(\'9K\').2O(I 1i(\'48\').5a(9.u.1s+\'-51\').2O(9.2F)).4V(o.3i)}m(o.4F){I 1i(\'9K\').2O(I 1i(\'48\').5a(9.u.1s+\'-1I\').2O(9.2F)).4V(o.4F)}$3H(9.1r);9.1r=9.3j.2n(9.u.8c,9)},1Z:k(C){$3H(9.1r);9.1r=9.63.2n(9.u.8d,9);C.1A()},7c:k(C){n 8G={\'x\':18.7b(),\'y\':18.6M()};n 2i={\'x\':18.6N(),\'y\':18.6I()};n 3o={\'x\':9.3E.2E,\'y\':9.3E.2y};n 77={\'x\':\'1m\',\'y\':\'1k\'};P(n z 15 77){n 1N=C.1M[z]+9.u.4d[z];m((1N+3o[z]-2i[z])>8G[z])1N=C.1M[z]-9.u.4d[z]-3o[z];9.3E.1J(77[z],1N+\'2Q\')};C.1A()},3j:k(){9.1g(\'8D\',[9.3E])},63:k(){9.1g(\'8q\',[9.3E])}});7E.1P(I 3m);7E.1P(I 33);',62,819,'|||||||||this|||||||||||function|return|if|var|el||||||options|||||||type|event|||element|property||new|obj|false|value|Math|document|bind|for|extend|to||from|else|Class|fn||now|||elements|events||length|in||start|window|prototype|case|Fx|args|addEvent|initialize|true|fireEvent|arguments|Element|each|top|test|left|empty|css|rgb|max|timer|className|properties|parent|push|limit|selector|bound|position|stop|source|step|call|key|style|onComplete|Object|text|setStyle|mode|Array|page|pos|parsed|implement|hsb|current|keys|removeEvent|Base|getStyle|null|values|color|end||opacity|name|getOptions|transport||array||bindWithEvent|param|chk|break|create|drop|set|switch|fx|mouse|scroll|drag|unit|Color|parse|delay|documentElement|match|setOptions|hue|previous|round|height|width|toInt|100|offsetHeight|join|PI|move|knob|url|offsetWidth|wrapper|CSS|pow|Filters|filter|Elements|string|Drag|data|injectInside|parentNode|px|mousemove|cont|wait|response|effects|script|scrollTo|ghost|display||iCss||Options|min|iTo|hex||||returns|increase|margin|getValue|getElementsByTagName|method|periodical|overflown|myTitle|show|onStart|replace|Events|modifiers|tip|visibility|body|select|duration|hidden|getCoordinates|size|change|togglers|bottom|href|image|headers|getElementsBySelector|undefined|toolTip|chains|Garbage|clear|setNow|status|getPosition|ie|apply|compute|while|offset|anchor|khtml|snap|handle|postBody|remove|id|255|toQueryString|newArray||handles|index|time|results|right||Transitions|div|indexOf|fromTo|inject|getNow|offsets|post|onSuccess|attribute|XHR|setHeader|removeEvents|Json|item|list|lnk|sources|absolute|checker|mousewheel|droppables|out|container|toString|readyState|encoding|object|_method|map|xml|send|setStyles|steps|myText|instance|instances|getTag|getElements|colors|location|every|option|HTMLElement|items|target|toLowerCase|Event|delta|red|setHTML|iFrom|wheel|iNow|sin||title|hexToRgb|parseFloat|domReady|green|domready|scrollLeft|scrollTop|sqrt|addClass|area|scrollHeight|onload|defaults|Asset|src|mousedown|next|alwaysHide|domain|evalScripts|path|blue|prev|draggedKnob|saturation|forEach|getTop|scrollWidth|loaded|Multi|regex|getNext|collect|bit|getExtended|fixedWidth|appendChild|onFailure|isSuccess|overing|split|dual|trim|5625|onStateChange|whitespace|setProperty|date|rgbToHex|attempt|currentStyle|ms|fixedHeight|XMLHttpRequest|images|hasClass|mouseup|scrollSize|javascript|String||getSize|tagName|hide|getElementById|clean|preventDefault|relatedTarget|onChange|getLeft|checkStep|stopPropagation|sel|percent|klass|trash|alpha|getElement|pr0t0typ3|sineInOut|cos|getBrother|what|abs|splice|asin|Scroller|diffx|on|vertical|Function|dropped|checkAgainst|diffy|maxTitleChars|ie6|70158|camelCase|onBeforeStart|horizontal|bounceOut|velocity|getPos|pageY|getScrollTop|mousemover|click|Slider|getHeight|getScrollLeft|brightness|copy|coord|rgbToHsb|gr|code|rr|pageX|default|opera|onActive|onTick|onCancel|iProps|DOMMouseScroll|els|opt||operator|prop|found|toElement|Accordion|getWidth|locate|half|layout|gecko|get|onreadystatechange|getTime|onDrag|previousChange|htmlElement|visible|counter|RegExp|callChain|Date|Chain|queryString|typeof|update|charAt|injectAfter|parseInt|img|previousEnd|toStep|eval|modSlide|limSlide|Tips|Sortables|catch|onerror|getChildren|serial|try|onabort|Native|detach|iterable|pageYOffset|relative|request|init|parentize|pageXOffset|encodeURIComponent|check|getProperty|callee|clientHeight|clientWidth|Ajax|useLink|transition|Styles|Style|params|prevPos|setProperties|iParsed|noinit|done|showDelay|hideDelay|toPosition|cTime|input|getScrollHeight|fps|shift|regexp|Single|ActiveXObject|getScrollWidth|old|clientX|onHide|clientY|onDragStart|cookie|scrolledElement|wheelDelta|120|isColor|Hash|onProgress|getAttribute|random|picked|onShow|which|clearChain|win|some|textarea|evaluate|floor|str|nodeType|build|complete|ie_ready|600000|6000|toUpperCase|getCoords|client|toObject|clickedElement|360|hsbToRgb|onDragComplete|getPrevious|attach|setOpacity|Sibling|defaultView|moreOptions|substr|inside|clone|overflow|createElement|fullOpacity|removeClass|nextPos|toFloat|evType|err|addEventListener|fullWidth|checkAndDrag|rel|capitalize|onBackground|hyphenate|_element_extended_|525|contents|_elements_extended_|onSnap|removeEventListener|distance|where|childNodes|after|Move|class|full|Number|Scroll|adopt|selectedIndex|before|application|injectBefore|evalResponse|number|span|onRequest|bounceIn|linear|insertBefore|mouseout|slideOut|slideIn|cssText|replaceWith|fixed|fullHeight|mouseover|chain|async|tog|all|toggleClass|rightClick|taintEnabled|navigator|createTextNode|button|styleSheet|cancelBubble|up|enter|returnValue|nodeName|down|space|esc|Window|nodeValue|removeChild|clearTimeout|clearInterval|ie7|appendText|replaceChild|cloneNode|textnode|pick||fromElement|auto|getLast|nextSibling|lastChild|previousSibling|getParent|firstChild|getFirst|srcElement|setTimeout|concat|unload|offsetParent|attributes|checkbox|innerHTML|transparent|checked|slice|radio|password|offsetTop|offsetLeft|do|setAttribute|setInterval|detachEvent|padding|detail|getComputedStyle|metaKey|getPropertyValue|BackgroundImageCache|keyCode|hasLayout|execCommand|zoom|fromCharCode|embed|bindAsEventListener|alt|backspace|ctrlKey|control|shiftKey|addEvents|altKey|associate|pass|meta|attachEvent|getBoxObjectFor|innerWidth|over|leave|makeDraggable|removeAttribute|makeResizable|984375|bounceInOut||SmoothScroll|Microsoft|XMLHTTP|open|overrideMimeType|Connection|responseXML|responseText|200|300|625|9375|expoIn|expoOut|expoInOut|sineOut|sineIn|quintOut|quintInOut|circIn|circOut|backIn|backOut|backInOut|hellip|elasticInOut|circInOut|elasticIn|close|setRequestHeader|unescape|serialize|tool|toGMTString|expires|setTime|86400000|Remote|Request|media|screen|Image|stylesheet|link|JSON|json|escape|365|form|urlencoded|Requested|www|Content|utf|charset|With|Accept|exec|action|Cookie|gi|http|html|head|quintIn|elasticOut|custom|10000|1000|showThisHideOpen|hasKey|Group|quartInOut|mix|clearTimer|HSB|500|innerHeight|void|defer|write|ES|load|getElementsByClassName|links|onDomReady|DOMContentLoaded|effect|RGB|quadOut|quadInOut|quadIn|toggle|delete|pop|cubicIn|quartOut|quartIn|cubicInOut|cubicOut|setBrightness|invert|setSaturation|toBottom|toRight|Slide|toTop|setHue|toLeft'.split('|'),0,{})) diff --git a/admin/scripts/player.swf b/admin/scripts/player.swf new file mode 100644 index 0000000000000000000000000000000000000000..135f73b373033d671ecba1839103e8eb8adbd9cc GIT binary patch literal 5259 zcmV;66m;uDS5pQqJpcfBob5Xca9q`O=k02DpFS(gvSfX{l4aufhcPxb1`M`WmSsuU z-d$EU#$b?E+SPik)$X#pvSmKCpa=v0;1H017@Uw4%5+kPOd&0u5ku-k6emO5FeQbF zLzqnHBr`bE)@`Q+^_+X}d+)xtZ?PTvn@KS9_TKZm=bU@)x#wQJmx1yv0Mh{K8==iH zH8r)?`P5>7#}>H%7}iJfG1!?N&gLMK&L#4RbP95@e0Quror>nDxjB&<&c|4@lhMTu zblgD4HS|)*r@QmnL@ExeAeZfjTzWVa-H=Ge03yTrbS@vs=3y_gP%oH?rJz5V&c#B> z$lh3%hUrfy(*&hMu)QzHuI@8^u&|tJ|s^>mv4#0aTc=KbQZ@X znULR^z(5%8?~mnj25@Zdw`~tei@89ERGtR=9cO=)JO=R+`BAFhVsn%q20W1WJ^L#d) zBoXOU80R>WqxG_zA~jEI2chX?GDrZ?9HuF1Pvv9T4OwzThUT{?fs#l{&+bGn(U;V~ zOq7l!easy*zAv8=kiJO&V4OvX1~)@8*>pUMvt(-b4d?S*P&ySN2n^s_$ii?2XED|~ zfGW4|j-~R3sc1|t5sg952%A`%Ok!tIj3LBq;LlBbm7o*R2i^HthJ)KsAruSP?2KU0 zVurv0QxwN}d~A;72Bqm?3xJRt60u|yTYI|L`c9-W!}*@PV1k`|6c|Wn_e8Q$FifWi z(y+-$&Iq;vnhK^2E4KP5t1T2E7;!BFl)AL!$ndm)5W}W( zPa=wDuhZgl$&w{7lt?BMIi4c7Xt}U2j)`O-FMeo3A)AQrB!KwkQN=n2npz^x zpAIETiKE2n2JxQ?{{0Flb>j*+vEk4f&bo02s7fn69lmiFcs_Olch%#-7mijAB*5!KRu^klvN5KyF{-*qAukZqbeGbEM5^dO)3_7K zoK4iNrY`=@KpOO?T4ShQ>u2(6d<36q!0Y@$0WSx&UWZG-20LJ50T73s<&t|om(0*q zz~BM3nMH*JnC)?xMYfnkPBZo9xD;uC3iT=`O|4)q`%*Y)*gMzGUVMJ}q>F$vzyMVQ z=s7R2CP+f(>x|5M^JyeQmJkwV;SvIjau<(tftkx>Ex?GExfc4-QkiU~PKHL!$3a3g z!H1^|r52qm1zhS>>AXhsj_crR9}lK-?C7$YBGX9`9mJ_{9VnhCcH<(DP|>K4y)r|W zl6(|bV8MJJ`&nc$AXbN;ylkE$^#xFKQU#kyoyMPMx2{7q1?W8ZZgip~i zm+E7p_ZtPSIUrlPj9YonC9GU?#a2oqHkn4ej*mE2WW?qG%WMN+$f++ro+A+a0*cKx zDYl#|R;?6w1uB-8^#0$QF?*F}bCr4}mFfe=uB+vg6%2EI*fz;rX~3-HUYf65so(i3 zlk!lU`D?MJyjNZpdVU!f`LjHTd81hhiUvcbPV)IN{C_iZl2SK(G1u9pU)}ajW zNmjM~pdC$soY-0903?%Pw=-Zlg?BOVt%1*FF%I{fd}A?k<}W2EjstQ+>yQ%KCT@Ns zSY58itDI{#bLy6Y-M|#xZ6=<;W$`#nJi*K2Su1#2S?GoeCMU#Bxwo-%kOn|Mgy|Q1 zw*@3%w@W73BGwS^%`k8n|69$Q2Os2i<7~|V+l;d{2i)Otn$>6&YHZcjz~^>u_$U}4 zp3ZoCnZ?{q*uX8785g-Lgaw#_o6e*t7D4BHYIL`q|J?uG76Ho#_5Y)@y*@Lg9)q z{70}Bz(ugqTq+1tS*b9~4z-=3tg4{on5z&rpx#rUa-6GN1BC*_;aH~LS)3XQsS}*~ zV@ncaodHI1PnWnhVX$3+aW|-g*h(^?gD$$9V0M&1kkbt5G_gRnfTbiDmA)InN}DPw zZWbHMZI)YO#cGklaN?1zyVqS}4)MUG%2)mRjqqr(@$a@_ohk7mE zP)dwd0@r|0T6TAXZA~I}^e{a;#m%aInCcRTNiSnG9bmCKR2h_s42f0u2&-krii+0? z4TBt=`l#eorZSr+*4j@kHoEM2tsYua!2f(_z0V~$6R1&!_Ak<>aI=b z0Uy-K6px!J_&$a%nI{Ihj~y#-75;uuSbaY~RkVO+BNSSOLS_iRKFC-@1p1MXw4ce1 zg02fDxJPxZ9u?y}5a=-3qro-Z`OQQFXbzU0j)O(Wk{y>Eque@%)gujHHE_hE^!B z!-!&B0|nTZw2gl=X+pX3FtDh{)hp@MelCqwnW*3GrMXSt4BXVlZ^)D@po$fBHD8wG9) zn8)?l{S8BQ`&U?^da7{OBb6r+V7F!IBWz)wXq6^Yo0zW_PK1)$lmVK^+&w+D4bn&3$+^)vQg7e6LU2N@Nv~ zLKtTJnR8IAGwn7-E336TA}XP;5oNV@%R;aXiVSOFutN%pZE=v;1L^@heiG^c`_r#W zTZ@~(nlSWrxWziD0p_MBd|i}qrJSRqrSxK6l=@#U@i~icxtr})FpAw{6?;oqtFek! zi6W--6=%0~28_Fur&rsY8SbM%`X~4;&4ms4X^E^4i?0z9|nH&r{E{(|lg!GLfBaYkhA1&bD zQH1}fE&nlz|2oFs&#cH4vErDml;cIDq>D&7ZY$-4Bqb_I87d;>gv}gqj$N0_!JsFL zjGHPVJjnFBZ^m(-((!dfv(`p|7^h|-0RbGg^g0r z+A4Lbh?GAnBIT5=l;?^_d9jF;=WL}sUqs4FMWj4$kz$;KgD`<72s$6`gxQM$Hel=G z#fwl?`={e2@mIWey%zYv+o>1ehBzR&U zz2cd*tm(-~A=;&hE)k*`ubX(Wy8yAcSrG4O$NpC;X02>`^7Kzag4d(*x;Zb0sv1<0 zC6=PZ<_mOProj30=Skv-((%gl##e7{{>{s$1#g+gTdMJ1O*=V+VDiDS(+V6vejGVB z{_-b()7`rHUH90DMVao#l{>e;-uq7Xh99{!F%_Daa!s*g`1B%l!d*?CQ_ya2Y}9z4 zaKb%};7+v3c=2$;-H5;e7n(Gwbos&USSr0}S&I0X#N&pot}tTbL#oN&*<{*rRk zWm@$c3Gi1r&e^>7%4d^?nOA}ePEP&859OIL)7!FZE2bm9l4AAtST-6-MObX@D{Tgf zt@Op(uY5XsaMZiB5+-S;r^HUVfc!^VRH5%{e};Rw7KgPjUnq^g@^#b+aY%_j@CLCP&{LStQU~blZj;MopSnH zk@RkNxDFm6))JmER^hW+&KT36@@szMz3&Nk4bQ>Tp~5vPzdA0h>FFrqEw~2P^x*Sn zkFn<9k7U^vtc>~Uv*c~-?QEVxM_Lk zz8WppVDvb6;%SjPqf$p{dD>m+9o4iOKUB@>ub7`SO}Hc|J`Z zMQ$@j?)Fi&o-fTR@6{`&J-Bk}&4)hOetwkm&DQvuWxf`j@7%d_wtRCmz7~ydAwI7{ zzP?elN{m;#IOG{~ym#iqiC1fs(CLSgcVy1LU*=m-C6xY>Cgdtv$Xs0r8@zVIA{Q5N zW2j{dwCuRy;+y-+T;J{$LcXjCnJa{-UYavfKy9RQumlPJ5qtAlUajYO6_Z@y*FqES zW?qjqLD6rFMET`H&()kgJZkz>iI-nkn$3Z;pU$0fE0-p~@m^S)ty97PAys9vYQD;G&q{ zganVZpliezXX492@l~1rMIxPGfF1A@`gQQPfAPo3?%LhpKJGxTQqsc`mVbB_g+p#v zt(NawTx>kjb-V%$$u9KqLAMLfFO}b?^UIzy*lXhYR%||vOdMNxrWUa|8JqFz*x4Tu zcJRz09qa96OP8bP_Y%5aM&EwgKrfj`=pGr}KWU&>TulXVgGe{nqYUt7kT^H_)A{wp!5}Z#2;BUw_w%?vVVt_V3@d z&S_iCWkpHpX9X6%qw7q$>wJFH8 RO9O+Pk_07>{{n_g=nl$4W=sG8 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/blank.htm b/admin/scripts/tiny_mce/blank.htm new file mode 100644 index 0000000..5a4a5a5 --- /dev/null +++ b/admin/scripts/tiny_mce/blank.htm @@ -0,0 +1,9 @@ + + + blank_page + + + + + + diff --git a/admin/scripts/tiny_mce/langs/en.js b/admin/scripts/tiny_mce/langs/en.js new file mode 100644 index 0000000..c093eaf --- /dev/null +++ b/admin/scripts/tiny_mce/langs/en.js @@ -0,0 +1,41 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +bold_desc : 'Bold (Ctrl+B)', +italic_desc : 'Italic (Ctrl+I)', +underline_desc : 'Underline (Ctrl+U)', +striketrough_desc : 'Strikethrough', +justifyleft_desc : 'Align left', +justifycenter_desc : 'Align center', +justifyright_desc : 'Align right', +justifyfull_desc : 'Align full', +bullist_desc : 'Unordered list', +numlist_desc : 'Ordered list', +outdent_desc : 'Outdent', +indent_desc : 'Indent', +undo_desc : 'Undo (Ctrl+Z)', +redo_desc : 'Redo (Ctrl+Y)', +link_desc : 'Insert/edit link', +unlink_desc : 'Unlink', +image_desc : 'Insert/edit image', +cleanup_desc : 'Cleanup messy code', +focus_alert : 'A editor instance must be focused before using this command.', +edit_confirm : 'Do you want to use the WYSIWYG mode for this textarea?', +insert_link_title : 'Insert/edit link', +insert : 'Insert', +update : 'Update', +cancel : 'Cancel', +insert_link_url : 'Link URL', +insert_link_target : 'Target', +insert_link_target_same : 'Open link in the same window', +insert_link_target_blank : 'Open link in a new window', +insert_image_title : 'Insert/edit image', +insert_image_src : 'Image URL', +insert_image_alt : 'Image description', +help_desc : 'Help', +bold_img : "bold.gif", +italic_img : "italic.gif", +underline_img : "underline.gif", +clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?', +popup_blocked : 'Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.' +}); diff --git a/admin/scripts/tiny_mce/langs/readme.txt b/admin/scripts/tiny_mce/langs/readme.txt new file mode 100644 index 0000000..9c3a9d9 --- /dev/null +++ b/admin/scripts/tiny_mce/langs/readme.txt @@ -0,0 +1,9 @@ +Beginning with version 2.0.5 the language packs are no +longer included with the core distribution. +Language packs can be downloaded from the TinyMCE website: +http://tinymce.moxiecode.com/download.php + +The language pack codes are based on ISO-639-1: +http://www.loc.gov/standards/iso639-2/englangn.html + +Plrease try using entities if possible. Like å etc for non a-z characters. diff --git a/admin/scripts/tiny_mce/license.txt b/admin/scripts/tiny_mce/license.txt new file mode 100644 index 0000000..60d6d4c --- /dev/null +++ b/admin/scripts/tiny_mce/license.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/admin/scripts/tiny_mce/plugins/advhr/css/advhr.css b/admin/scripts/tiny_mce/plugins/advhr/css/advhr.css new file mode 100644 index 0000000..7ff36bd --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advhr/css/advhr.css @@ -0,0 +1,23 @@ +input.radio { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +.panel_wrapper div.current { + height: 80px; +} + +#width { + width: 50px; + vertical-align: middle; +} + +#width2 { + width: 50px; + vertical-align: middle; +} + +#size { + width: 100px; +} diff --git a/admin/scripts/tiny_mce/plugins/advhr/editor_plugin.js b/admin/scripts/tiny_mce/plugins/advhr/editor_plugin.js new file mode 100644 index 0000000..ffff3a1 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advhr/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advhr');var TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced HR',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"advhr":return tinyMCE.getButtonHTML(cn,'lang_insert_advhr_desc','{$pluginurl}/images/advhr.gif','mceAdvancedHr')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_advhr_delta_width',0);template['height']+=tinyMCE.getLang('lang_advhr_delta_height',0);var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):""}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'})}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'
')}else{tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",size:size,width:width,noshade:noshade,mceDo:'insert'})}}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="HR"){tinyMCE.switchClass(editor_id+'_advhr','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advhr','mceButtonNormal');return true}};tinyMCE.addPlugin("advhr",TinyMCE_AdvancedHRPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/advhr/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/advhr/editor_plugin_src.js new file mode 100644 index 0000000..1005e05 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advhr/editor_plugin_src.js @@ -0,0 +1,90 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advhr'); + +var TinyMCE_AdvancedHRPlugin = { + getInfo : function() { + return { + longname : 'Advanced HR', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advhr', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + } + }, + + getControlHTML : function(cn) { + switch (cn) { + case "advhr": + return tinyMCE.getButtonHTML(cn, 'lang_insert_advhr_desc', '{$pluginurl}/images/advhr.gif', 'mceAdvancedHr'); + } + + return ""; + }, + + /** + * Executes the mceAdvanceHr command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceAdvancedHr": + var template = new Array(); + + template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme + template['width'] = 250; + template['height'] = 160; + + template['width'] += tinyMCE.getLang('lang_advhr_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advhr_delta_height', 0); + + var size = "", width = "", noshade = ""; + if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr") { + tinyMCE.hrElement = tinyMCE.selectedElement; + + if (tinyMCE.hrElement) { + size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : ""; + width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : ""; + noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : ""; + } + + tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'}); + } else { + if (tinyMCE.isMSIE) { + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'
'); + } else { + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes", size : size, width : width, noshade : noshade, mceDo : 'insert'}); + } + } + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "HR") { + tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_advhr', 'mceButtonNormal'); + + return true; + } +}; + +tinyMCE.addPlugin("advhr", TinyMCE_AdvancedHRPlugin); diff --git a/admin/scripts/tiny_mce/plugins/advhr/images/advhr.gif b/admin/scripts/tiny_mce/plugins/advhr/images/advhr.gif new file mode 100644 index 0000000000000000000000000000000000000000..e2f8658f463e2a260c22ae8affec1ece193886e3 GIT binary patch literal 153 zcmV;K0A~M3Nk%w1VH5xq0K*0VGD>2SnzBNA;8Vse6Vn)2G_{+hP(f{&eIlJZiD z@^XTb!rK0Vs`8@3@&Et;A^8LW000jFEC2ui02BZe000C=@X1N5y*TU5yZ@jS1PDT$ z1fZ?}K?R1v3{E24f>IpLLLoCp!-h*V90LY|vTz&<3Y;K;WW)lL6ibC7lt!VjcuX#v H%Mk!OxywD6 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/advhr/jscripts/rule.js b/admin/scripts/tiny_mce/plugins/advhr/jscripts/rule.js new file mode 100644 index 0000000..ddaacd7 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advhr/jscripts/rule.js @@ -0,0 +1,43 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + formObj.width.value = tinyMCE.getWindowArg('width'); + formObj.size.value = tinyMCE.getWindowArg('size'); + formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'),'Insert',true); + if (tinyMCE.getWindowArg('noshade')) { + formObj.noshade.checked = true; + } + if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) { + formObj.width2.value = "%"; + formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1); + } +} + +function insertHR() { + var formObj = document.forms[0]; + var width = formObj.width.value; + var size = formObj.size.value; + var html = ' + + {$lang_insert_advhr_desc} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + +
+ + +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/advimage/css/advimage.css b/admin/scripts/tiny_mce/plugins/advimage/css/advimage.css new file mode 100644 index 0000000..abf4405 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advimage/css/advimage.css @@ -0,0 +1,66 @@ +/* CSS file for advimage plugin popup */ + +.mceImageList { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.alignPreview { + border: 1px solid black; + width: 140px; + height: 140px; + overflow: hidden; + padding: 5px; +} + +.checkbox { + border: 0; +} + +.panel_wrapper div.current { + height: 305px; +} + +#prev { + margin: 0; + border: 1px + solid black; + width: 99%; + height: 150px; + overflow: auto; +} + +#align, #classlist { + width: 150px; +} + +#width, #height { + vertical-align: middle; + width: 50px; + text-align: center; +} + +#vspace, #hspace, #border { + vertical-align: middle; + width: 30px; + text-align: center; +} + +#classlist { + width: 180px; +} + +input { + width: 280px; +} + +#constrain, #onmousemovecheck { + width: auto; +} + +#id, #dir, #lang, #usemap, #longdesc { + width: 200px; +} diff --git a/admin/scripts/tiny_mce/plugins/advimage/editor_plugin.js b/admin/scripts/tiny_mce/plugins/advimage/editor_plugin.js new file mode 100644 index 0000000..79b1452 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advimage/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advimage');var TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced image',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"image":return tinyMCE.getButtonHTML(cn,'lang_image_desc','{$themeurl}/images/image.gif','mceAdvImage')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvImage":var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=480;template['height']=380;template['width']+=tinyMCE.getLang('lang_advimage_delta_width',0);template['height']+=tinyMCE.getLang('lang_advimage_delta_height',0);var inst=tinyMCE.getInstanceById(editor_id);var elm=inst.getFocusElement();if(elm!=null&&tinyMCE.getAttrib(elm,'class').indexOf('mceItem')!=-1)return true;tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":var imgs=content.getElementsByTagName("img"),src,i;for(i=0;i + + {$lang_insert_image_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_advimage_general} + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
+
+ +
+ {$lang_advimage_preview} + +
+
+ +
+
+ {$lang_advimage_tab_appearance} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ {$lang_advimage_example_img} + Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam + nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum + edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam + erat volutpat. +
+
+ x + px +
  + + + + +
+
+ +
+
+
+ +
+
+ {$lang_advimage_swap_image} + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
+ + + + +
 
 
+
+ +
+ {$lang_advimage_misc} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ + + + +
 
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/advimage/images/sample.gif b/admin/scripts/tiny_mce/plugins/advimage/images/sample.gif new file mode 100644 index 0000000000000000000000000000000000000000..53bf6890b507741c10910c9e2217ad8247b98e8d GIT binary patch literal 1624 zcmV-e2B-N)Nk%w1VJ!eH0OkMy|NsB}{r&v>{Q3F$`1ttq^YifV@ayaA>FMd_=H}w! z;^5%m-rnBb-QC>W+}qpR+S=OL+1c3G*w@$B*4Eb4)YQ|{)zHw=&d$%x&CScp%gV~i z$;rvc$jHXV#>B+L!^6YE!otD9!N9=4zrVk|y}i7=yt})*y1Kf#xw*Hux3;#nwY9ah zw6wFcv$C?Xv9YnRu&}SMudc4Ht*x!BtgNf6tE#H1si~={sjjD|r>3T+rKP2$q@<&x zqobp!qN1Xqp`oFnrJ$goprE6lpP!zdp`MSWoSd7Ro12@UnwpxLnw^=MnV6WE zmzS58mX?*3mz9;3mX?*2l$4W`lai8@l9G~eg|M^H&l zLpBo?51@vfgB2q_TVh*dNP<;cR$Wg!vYsMHR!qvvOis>GNH`+ zJ3B|tqgANiBSy@x>Q#;x7+DuU7&rwlf#S04)VZvA$XoUy8Y&f7)SqP<}Lw@L# zA(@Cohl`6CZyedUu^BlmK|DG5$Kl2f8z@uCc)^k-3m7$G!njf7$;XhOW>^`rV#UFh zEN#eG;bP?tCs>{+)q)ceg9$aDAaTZ{MGK5rU8ty$qz8){MT#gHGX{#XEJHLonBXFa zj+#9GE&^pq!`qG`K5iiC!gq}sRY|1yD8?j++_^oR0g+)NNtZN`)08!0q=}AA4HhIo zFaa9NYu8%97=oos5f?O`lwre~4VfoIei+FyK|urxj@C(-q(sS(!$5uL3j&jg7&XY% zlr17;3GGL;2K8>CB87G97;W(2VZ((D+3Hz;L;bylfhf(kFNV8at)h;hdM z85WX(#*Hq@@BYePt3t_l{ zCL3|YVWydA0Fz{rTl65n00)c^)^-jJn1c zRVXtA6mkUMEDLU|v7{JK&_IJ2ciiCy7BOT1fdUBh8b=yrbYaCAchCU_7?H`b1`}4q zLB|_mI2!;7W4QCq6F1O+MW||6AwmKafUrReUA&QotxQZI8D$G)AuSVV@X<&A9v;~H zKnWjo&;bljq=29aCeV-t5GBYkL=Q}q(S~FLd2t39MyRmC%_GFHkPc7CfIt8P*emqV z0YK2j9A+kmW^!tn(ZmG+L=6DZR99W}8p9?Utr=#t@rE2=zxf3QQ(JBJ&<{Z2>8EUP zeX1B)2w_3gXV)D-0Tt+=#@cV-0f!PU#MglZ3m6b}0e08zK^x;9(u?Tga{%?&nNTXhcEuM_#J>yL>p*a zuZJ2pliCGSp!Ye8>YFq@)ZOW-uT~OrjFQK!)UyVGFt7ni'); + } +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function getImageSrc(str) { + var pos = -1; + + if (!str) + return ""; + + if ((pos = str.indexOf('this.src=')) != -1) { + var src = str.substring(pos + 10); + + src = src.substring(0, src.indexOf('\'')); + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, null, true); + + return src; + } + + return ""; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html = ""; + + // Image list src + html = getImageListHTML('imagelistsrc','src','onSelectMainImage'); + if (html == "") + document.getElementById("imagelistsrcrow").style.display = 'none'; + else + document.getElementById("imagelistsrccontainer").innerHTML = html; + + // Image list oversrc + html = getImageListHTML('imagelistover','onmouseoversrc'); + if (html == "") + document.getElementById("imagelistoverrow").style.display = 'none'; + else + document.getElementById("imagelistovercontainer").innerHTML = html; + + // Image list outsrc + html = getImageListHTML('imagelistout','onmouseoutsrc'); + if (html == "") + document.getElementById("imagelistoutrow").style.display = 'none'; + else + document.getElementById("imagelistoutcontainer").innerHTML = html; + + // Src browser + html = getBrowserHTML('srcbrowser','src','image','advimage'); + document.getElementById("srcbrowsercontainer").innerHTML = html; + + // Over browser + html = getBrowserHTML('oversrcbrowser','onmouseoversrc','image','advimage'); + document.getElementById("onmouseoversrccontainer").innerHTML = html; + + // Out browser + html = getBrowserHTML('outsrcbrowser','onmouseoutsrc','image','advimage'); + document.getElementById("onmouseoutsrccontainer").innerHTML = html; + + // Longdesc browser + html = getBrowserHTML('longdescbrowser','longdesc','file','advimage'); + document.getElementById("longdesccontainer").innerHTML = html; + + // Resize some elements + if (isVisible('srcbrowser')) + document.getElementById('src').style.width = '260px'; + + if (isVisible('oversrcbrowser')) + document.getElementById('onmouseoversrc').style.width = '260px'; + + if (isVisible('outsrcbrowser')) + document.getElementById('onmouseoutsrc').style.width = '260px'; + + if (isVisible('longdescbrowser')) + document.getElementById('longdesc').style.width = '180px'; + + // Check action + if (elm != null && elm.nodeName == "IMG") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + if (action == "update") { + var src = tinyMCE.getAttrib(elm, 'src'); + var onmouseoversrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + var onmouseoutsrc = getImageSrc(tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + + src = convertURL(src, elm, true); + + // Use mce_src if found + var mceRealSrc = tinyMCE.getAttrib(elm, 'mce_src'); + if (mceRealSrc != "") { + src = mceRealSrc; + + if (tinyMCE.getParam('convert_urls')) + src = convertURL(src, elm, true); + } + + if (onmouseoversrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoversrc = convertURL(onmouseoversrc, elm, true); + + if (onmouseoutsrc != "" && tinyMCE.getParam('convert_urls')) + onmouseoutsrc = convertURL(onmouseoutsrc, elm, true); + + // Setup form data + var style = tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")); + + // Store away old size + orgImageWidth = trimSize(getStyle(elm, 'width')) + orgImageHeight = trimSize(getStyle(elm, 'height')); + + formObj.src.value = src; + formObj.alt.value = tinyMCE.getAttrib(elm, 'alt'); + formObj.title.value = tinyMCE.getAttrib(elm, 'title'); + formObj.border.value = trimSize(getStyle(elm, 'border', 'borderWidth')); + formObj.vspace.value = tinyMCE.getAttrib(elm, 'vspace'); + formObj.hspace.value = tinyMCE.getAttrib(elm, 'hspace'); + formObj.width.value = orgImageWidth; + formObj.height.value = orgImageHeight; + formObj.onmouseoversrc.value = onmouseoversrc; + formObj.onmouseoutsrc.value = onmouseoutsrc; + formObj.id.value = tinyMCE.getAttrib(elm, 'id'); + formObj.dir.value = tinyMCE.getAttrib(elm, 'dir'); + formObj.lang.value = tinyMCE.getAttrib(elm, 'lang'); + formObj.longdesc.value = tinyMCE.getAttrib(elm, 'longdesc'); + formObj.usemap.value = tinyMCE.getAttrib(elm, 'usemap'); + formObj.style.value = tinyMCE.serializeStyle(style); + + // Select by the values + if (tinyMCE.isMSIE) + selectByValue(formObj, 'align', getStyle(elm, 'align', 'styleFloat')); + else + selectByValue(formObj, 'align', getStyle(elm, 'align', 'cssFloat')); + + addClassesToList('classlist', 'advimage_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class')); + selectByValue(formObj, 'imagelistsrc', src); + selectByValue(formObj, 'imagelistover', onmouseoversrc); + selectByValue(formObj, 'imagelistout', onmouseoutsrc); + + updateStyle(); + showPreviewImage(src, true); + changeAppearance(); + + window.focus(); + } else + addClassesToList('classlist', 'advimage_styles'); + + // If option enabled default contrain proportions to checked + if (tinyMCE.getParam("advimage_constrain_proportions", true)) + formObj.constrain.checked = true; + + // Check swap image if valid data + if (formObj.onmouseoversrc.value != "" || formObj.onmouseoutsrc.value != "") + setSwapImageDisabled(false); + else + setSwapImageDisabled(true); +} + +function setSwapImageDisabled(state) { + var formObj = document.forms[0]; + + formObj.onmousemovecheck.checked = !state; + + setBrowserDisabled('overbrowser', state); + setBrowserDisabled('outbrowser', state); + + if (formObj.imagelistover) + formObj.imagelistover.disabled = state; + + if (formObj.imagelistout) + formObj.imagelistout.disabled = state; + + formObj.onmouseoversrc.disabled = state; + formObj.onmouseoutsrc.disabled = state; +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + elm.setAttribute(attrib, value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib == "longdesc") + attrib = "longDesc"; + + if (attrib == "width") { + attrib = "style.width"; + value = value + "px"; + value = value.replace(/%px/g, 'px'); + } + + if (attrib == "height") { + attrib = "style.height"; + value = value + "px"; + value = value.replace(/%px/g, 'px'); + } + + if (attrib == "class") + attrib = "className"; + + eval('elm.' + attrib + "=value;"); + } else + elm.removeAttribute(attrib); +} + +function makeAttrib(attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value == "") + return ""; + + // XML encode it + value = value.replace(/&/g, '&'); + value = value.replace(/\"/g, '"'); + value = value.replace(//g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var formObj = document.forms[0]; + var src = formObj.src.value; + var onmouseoversrc = formObj.onmouseoversrc.value; + var onmouseoutsrc = formObj.onmouseoutsrc.value; + + if (!AutoValidator.validate(formObj)) { + alert(tinyMCE.getLang('lang_invalid_data')); + return false; + } + + if (tinyMCE.getParam("accessibility_warnings")) { + if (formObj.alt.value == "" && !confirm(tinyMCE.getLang('lang_advimage_missing_alt', '', true))) + return; + } + + if (onmouseoversrc && onmouseoversrc != "") + onmouseoversrc = "this.src='" + convertURL(onmouseoversrc, tinyMCE.imgElement) + "';"; + + if (onmouseoutsrc && onmouseoutsrc != "") + onmouseoutsrc = "this.src='" + convertURL(onmouseoutsrc, tinyMCE.imgElement) + "';"; + + if (elm != null && elm.nodeName == "IMG") { + setAttrib(elm, 'src', convertURL(src, tinyMCE.imgElement)); + setAttrib(elm, 'mce_src', src); + setAttrib(elm, 'alt'); + setAttrib(elm, 'title'); + setAttrib(elm, 'border'); + setAttrib(elm, 'vspace'); + setAttrib(elm, 'hspace'); + setAttrib(elm, 'width'); + setAttrib(elm, 'height'); + setAttrib(elm, 'onmouseover', onmouseoversrc); + setAttrib(elm, 'onmouseout', onmouseoutsrc); + setAttrib(elm, 'id'); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'longdesc'); + setAttrib(elm, 'usemap'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(formObj, 'classlist')); + setAttrib(elm, 'align', getSelectValue(formObj, 'align')); + + //tinyMCEPopup.execCommand("mceRepaint"); + + // Repaint if dimensions changed + if (formObj.width.value != orgImageWidth || formObj.height.value != orgImageHeight) + inst.repaint(); + + // Refresh in old MSIE + if (tinyMCE.isMSIE5) + elm.outerHTML = elm.outerHTML; + } else { + var html = "' +} + +function updateImageData() { + var formObj = document.forms[0]; + + preloadImg = document.getElementById('previewImg'); + + if (formObj.width.value == "") + formObj.width.value = preloadImg.width; + + if (formObj.height.value == "") + formObj.height.value = preloadImg.height; + + updateStyle(); +} + +function resetImageData() { + var formObj = document.forms[0]; + formObj.width.value = formObj.height.value = ""; +} + +function getSelectValue(form_obj, field_name) { + var elm = form_obj.elements[field_name]; + + if (elm == null || elm.options == null) + return ""; + + return elm.options[elm.selectedIndex].value; +} + +function getImageListHTML(elm_id, target_form_element, onchange_func) { + if (typeof(tinyMCEImageList) == "undefined" || tinyMCEImageList.length == 0) + return ""; + + var html = ""; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +// While loading +preinit(); diff --git a/admin/scripts/tiny_mce/plugins/advimage/langs/en.js b/admin/scripts/tiny_mce/plugins/advimage/langs/en.js new file mode 100644 index 0000000..ffd7e30 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advimage/langs/en.js @@ -0,0 +1,27 @@ +// UK lang variables + +tinyMCE.addToLang('advimage',{ +tab_general : 'General', +tab_appearance : 'Appearance', +tab_advanced : 'Advanced', +general : 'General', +title : 'Title', +preview : 'Preview', +constrain_proportions : 'Constrain proportions', +langdir : 'Language direction', +langcode : 'Language code', +long_desc : 'Long description link', +style : 'Style', +classes : 'Classes', +ltr : 'Left to right', +rtl : 'Right to left', +id : 'Id', +image_map : 'Image map', +swap_image : 'Swap image', +alt_image : 'Alternative image', +mouseover : 'for mouse over', +mouseout : 'for mouse out', +misc : 'Miscellaneous', +example_img : 'Appearance preview image', +missing_alt : 'Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.' +}); diff --git a/admin/scripts/tiny_mce/plugins/advimage/readme.txt b/admin/scripts/tiny_mce/plugins/advimage/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advimage/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/advlink/css/advlink.css b/admin/scripts/tiny_mce/plugins/advlink/css/advlink.css new file mode 100644 index 0000000..0cb37bd --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/css/advlink.css @@ -0,0 +1,35 @@ +/* CSS file for advimage plugin popup */ + +.mceLinkList, .mceAnchorList, #targetlist { + width: 280px; +} + +.mceActionPanel { + margin-top: 7px; +} + +.panel_wrapper div.current { + height: 320px; +} + +#classlist, #title, #href { + width: 280px; +} + +#popupurl, #popupname { + width: 200px; +} + +#popupwidth, #popupheight, #popupleft, #popuptop { + width: 30px; + vertical-align: middle; + text-align: center; +} + +#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/admin/scripts/tiny_mce/plugins/advlink/editor_plugin.js b/admin/scripts/tiny_mce/plugins/advlink/editor_plugin.js new file mode 100644 index 0000000..52120db --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('advlink');var TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced link',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','k','lang_advlink_desc','mceAdvLink')},getControlHTML:function(cn){switch(cn){case"link":return tinyMCE.getButtonHTML(cn,'lang_link_desc','{$themeurl}/images/link.gif','mceAdvLink')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceAdvLink":var anySelection=false;var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var selectedText=inst.selection.getSelectedText();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(anySelection||(focusElm!=null&&focusElm.nodeName=="A")){var template=new Array();template['file']='../../plugins/advlink/link.htm';template['width']=480;template['height']=400;template['width']+=tinyMCE.getLang('lang_advlink_delta_width',0);template['height']+=tinyMCE.getLang('lang_advlink_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"})}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="A"&&tinyMCE.getAttrib(node,'href')!=""){tinyMCE.switchClass(editor_id+'_advlink','mceButtonSelected');return true}}while((node=node.parentNode));if(any_selection){tinyMCE.switchClass(editor_id+'_advlink','mceButtonNormal');return true}tinyMCE.switchClass(editor_id+'_advlink','mceButtonDisabled');return true}};tinyMCE.addPlugin("advlink",TinyMCE_AdvancedLinkPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/advlink/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/advlink/editor_plugin_src.js new file mode 100644 index 0000000..1bf348c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/editor_plugin_src.js @@ -0,0 +1,88 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('advlink'); + +var TinyMCE_AdvancedLinkPlugin = { + getInfo : function() { + return { + longname : 'Advanced link', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + inst.addShortcut('ctrl', 'k', 'lang_advlink_desc', 'mceAdvLink'); + }, + + getControlHTML : function(cn) { + switch (cn) { + case "link": + return tinyMCE.getButtonHTML(cn, 'lang_link_desc', '{$themeurl}/images/link.gif', 'mceAdvLink'); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + switch (command) { + case "mceAdvLink": + var anySelection = false; + var inst = tinyMCE.getInstanceById(editor_id); + var focusElm = inst.getFocusElement(); + var selectedText = inst.selection.getSelectedText(); + + if (tinyMCE.selectedElement) + anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") || (selectedText && selectedText.length > 0); + + if (anySelection || (focusElm != null && focusElm.nodeName == "A")) { + var template = new Array(); + + template['file'] = '../../plugins/advlink/link.htm'; + template['width'] = 480; + template['height'] = 400; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_advlink_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_advlink_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + } + + return true; + } + + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "A" && tinyMCE.getAttrib(node, 'href') != "") { + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + if (any_selection) { + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonNormal'); + return true; + } + + tinyMCE.switchClass(editor_id + '_advlink', 'mceButtonDisabled'); + + return true; + } +}; + +tinyMCE.addPlugin("advlink", TinyMCE_AdvancedLinkPlugin); diff --git a/admin/scripts/tiny_mce/plugins/advlink/jscripts/functions.js b/admin/scripts/tiny_mce/plugins/advlink/jscripts/functions.js new file mode 100644 index 0000000..7da2704 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/jscripts/functions.js @@ -0,0 +1,568 @@ +/* Functions for the advlink plugin popup */ + +var templates = { + "window.open" : "window.open('${url}','${target}','${options}')" +}; + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); + + // Import external list url javascript + var url = tinyMCE.getParam("external_link_list_url"); + if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); + } +} + +function changeClass() { + var formObj = document.forms[0]; + formObj.classes.value = getSelectValue(formObj, 'classlist'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var formObj = document.forms[0]; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + var action = "insert"; + var html; + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); + document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); + document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href'); + document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href'); + document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); + + // Link list + html = getLinkListHTML('linklisthref','href'); + if (html == "") + document.getElementById("linklisthrefrow").style.display = 'none'; + else + document.getElementById("linklisthrefcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '260px'; + + if (isVisible('popupurlbrowser')) + document.getElementById('popupurl').style.width = '180px'; + + elm = tinyMCE.getParentElement(elm, "a"); + if (elm != null && elm.nodeName == "A") + action = "update"; + + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + setPopupControlsDisabled(true); + + if (action == "update") { + var href = tinyMCE.getAttrib(elm, 'href'); + + href = convertURL(href, elm, true); + + // Use mce_href if found + var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href'); + if (mceRealHref != "") { + href = mceRealHref; + + if (tinyMCE.getParam('convert_urls')) + href = convertURL(href, elm, true); + } + + var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); + + // Setup form data + setFormValue('href', href); + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); + setFormValue('rel', tinyMCE.getAttrib(elm, 'rel')); + setFormValue('rev', tinyMCE.getAttrib(elm, 'rev')); + setFormValue('charset', tinyMCE.getAttrib(elm, 'charset')); + setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang')); + setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('type', tinyMCE.getAttrib(elm, 'type')); + setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); + setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); + setFormValue('onclick', onclick); + setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); + setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); + setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); + setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); + setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); + setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); + setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); + setFormValue('target', tinyMCE.getAttrib(elm, 'target')); + setFormValue('classes', tinyMCE.getAttrib(elm, 'class')); + + // Parse onclick data + if (onclick != null && onclick.indexOf('window.open') != -1) + parseWindowOpen(onclick); + else + parseFunction(onclick); + + // Select by the values + selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir')); + selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel')); + selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev')); + selectByValue(formObj, 'linklisthref', href); + + if (href.charAt(0) == '#') + selectByValue(formObj, 'anchorlist', href); + + addClassesToList('classlist', 'advlink_styles'); + + selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true); + selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true); + } else + addClassesToList('classlist', 'advlink_styles'); + + window.focus(); +} + +function setFormValue(name, value) { + document.forms[0].elements[name].value = value; +} + +function convertURL(url, node, on_save) { + return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); +} + +function parseWindowOpen(onclick) { + var formObj = document.forms[0]; + + // Preprocess center code + if (onclick.indexOf('return false;') != -1) { + formObj.popupreturn.checked = true; + onclick = onclick.replace('return false;', ''); + } else + formObj.popupreturn.checked = false; + + var onClickData = parseLink(onclick); + + if (onClickData != null) { + formObj.ispopup.checked = true; + setPopupControlsDisabled(false); + + var onClickWindowOptions = parseOptions(onClickData['options']); + var url = onClickData['url']; + + if (tinyMCE.getParam('convert_urls')) + url = convertURL(url, null, true); + + formObj.popupname.value = onClickData['target']; + formObj.popupurl.value = url; + formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); + formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); + + formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); + formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); + + if (formObj.popupleft.value.indexOf('screen') != -1) + formObj.popupleft.value = "c"; + + if (formObj.popuptop.value.indexOf('screen') != -1) + formObj.popuptop.value = "c"; + + formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; + formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; + formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; + formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; + formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; + formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; + formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; + + buildOnClick(); + } +} + +function parseFunction(onclick) { + var formObj = document.forms[0]; + var onClickData = parseLink(onclick); + + // TODO: Add stuff here +} + +function getOption(opts, name) { + return typeof(opts[name]) == "undefined" ? "" : opts[name]; +} + +function setPopupControlsDisabled(state) { + var formObj = document.forms[0]; + + formObj.popupname.disabled = state; + formObj.popupurl.disabled = state; + formObj.popupwidth.disabled = state; + formObj.popupheight.disabled = state; + formObj.popupleft.disabled = state; + formObj.popuptop.disabled = state; + formObj.popuplocation.disabled = state; + formObj.popupscrollbars.disabled = state; + formObj.popupmenubar.disabled = state; + formObj.popupresizable.disabled = state; + formObj.popuptoolbar.disabled = state; + formObj.popupstatus.disabled = state; + formObj.popupreturn.disabled = state; + formObj.popupdependent.disabled = state; + + setBrowserDisabled('popupurlbrowser', state); +} + +function parseLink(link) { + link = link.replace(new RegExp(''', 'g'), "'"); + + var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); + + // Is function name a template function + var template = templates[fnName]; + if (template) { + // Build regexp + var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); + var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; + var replaceStr = ""; + for (var i=0; i'); + for (var i=0; i'; + html += ''; + + for (var i=0; i' + name + ''; + } + + html += ''; + + return html; +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + elm = tinyMCE.getParentElement(elm, "a"); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + // Create new anchor elements + if (elm == null) { + if (tinyMCE.isSafari) + tinyMCEPopup.execCommand("mceInsertContent", false, '' + inst.selection.getSelectedHTML() + ''); + else + tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#"); + + var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#"); + for (var i=0; i' + tinyMCELinkList[i][0] + ''; + + html += ''; + + return html; + + // tinyMCE.debug('-- image list start --', html, '-- image list end --'); +} + +function getTargetListHTML(elm_id, target_form_element) { + var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';'); + var html = ''; + + html += ''; + + return html; +} + +// While loading +preinit(); diff --git a/admin/scripts/tiny_mce/plugins/advlink/langs/en.js b/admin/scripts/tiny_mce/plugins/advlink/langs/en.js new file mode 100644 index 0000000..0e68e5a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/langs/en.js @@ -0,0 +1,46 @@ +// UK lang variables + +tinyMCE.addToLang('advlink',{ +general_tab : 'General', +popup_tab : 'Popup', +events_tab : 'Events', +advanced_tab : 'Advanced', +general_props : 'General properties', +popup_props : 'Popup properties', +event_props : 'Events', +advanced_props : 'Advanced properties', +popup_opts : 'Options', +anchor_names : 'Anchors', +target_same : 'Open in this window / frame', +target_parent : 'Open in parent window / frame', +target_top : 'Open in top frame (replaces all frames)', +target_blank : 'Open in new window', +popup : 'Javascript popup', +popup_url : 'Popup URL', +popup_name : 'Window name', +popup_return : 'Insert \'return false\'', +popup_scrollbars : 'Show scrollbars', +popup_statusbar : 'Show status bar', +popup_toolbar : 'Show toolbars', +popup_menubar : 'Show menu bar', +popup_location : 'Show location bar', +popup_resizable : 'Make window resizable', +popup_dependent : 'Dependent (Mozilla/Firefox only)', +popup_size : 'Size', +popup_position : 'Position (X/Y)', +id : 'Id', +style: 'Style', +classes : 'Classes', +target_name : 'Target name', +langdir : 'Language direction', +target_langcode : 'Target language', +langcode : 'Language code', +encoding : 'Target character encoding', +mime : 'Target MIME type', +rel : 'Relationship page to target', +rev : 'Relationship target to page', +tabindex : 'Tabindex', +accesskey : 'Accesskey', +ltr : 'Left to right', +rtl : 'Right to left' +}); diff --git a/admin/scripts/tiny_mce/plugins/advlink/link.htm b/admin/scripts/tiny_mce/plugins/advlink/link.htm new file mode 100644 index 0000000..fa97b73 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/link.htm @@ -0,0 +1,337 @@ + + + {$lang_insert_link_title} + + + + + + + + +
+ + +
+
+
+ {$lang_advlink_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
 
 
 
+ +
+
+
+ + + +
+
+ {$lang_advlink_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ +
+
+ {$lang_advlink_event_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/advlink/readme.txt b/admin/scripts/tiny_mce/plugins/advlink/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/advlink/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/autosave/editor_plugin.js b/admin/scripts/tiny_mce/plugins/autosave/editor_plugin.js new file mode 100644 index 0000000..e347646 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/autosave/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('autosave');var TinyMCE_AutoSavePlugin={getInfo:function(){return{longname:'Auto save',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},_beforeUnloadHandler:function(){var n,inst,anyDirty=false,msg=tinyMCE.getLang("lang_autosave_unload_msg");if(tinyMCE.getParam("fullscreen_is_enabled"))return;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(inst.isDirty())return msg}return}};window.onbeforeunload=TinyMCE_AutoSavePlugin._beforeUnloadHandler;tinyMCE.addPlugin("autosave",TinyMCE_AutoSavePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/autosave/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/autosave/editor_plugin_src.js new file mode 100644 index 0000000..f76aeeb --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/autosave/editor_plugin_src.js @@ -0,0 +1,46 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('autosave'); + +var TinyMCE_AutoSavePlugin = { + getInfo : function() { + return { + longname : 'Auto save', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + // Private plugin internal methods + + _beforeUnloadHandler : function() { + var n, inst, anyDirty = false, msg = tinyMCE.getLang("lang_autosave_unload_msg"); + + if (tinyMCE.getParam("fullscreen_is_enabled")) + return; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + if (inst.isDirty()) + return msg; + } + + return; + } +}; + +window.onbeforeunload = TinyMCE_AutoSavePlugin._beforeUnloadHandler; + +tinyMCE.addPlugin("autosave", TinyMCE_AutoSavePlugin); diff --git a/admin/scripts/tiny_mce/plugins/autosave/langs/en.js b/admin/scripts/tiny_mce/plugins/autosave/langs/en.js new file mode 100644 index 0000000..0195133 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/autosave/langs/en.js @@ -0,0 +1,5 @@ +// EN lang variables + +tinyMCE.addToLang('',{ +autosave_unload_msg : 'The changes you made will be lost if you navigate away from this page.' +}); diff --git a/admin/scripts/tiny_mce/plugins/autosave/readme.txt b/admin/scripts/tiny_mce/plugins/autosave/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/autosave/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin.js b/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin.js new file mode 100644 index 0000000..805aaf4 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin.js @@ -0,0 +1 @@ +var TinyMCE_BBCodePlugin={getInfo:function(){return{longname:'BBCode Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},cleanup:function(type,content){var dialect=tinyMCE.getParam('bbcode_dialect','punbb').toLowerCase();switch(type){case"insert_to_editor":content=this['_'+dialect+'_bbcode2html'](content);break;case"get_from_editor":content=this['_'+dialect+'_html2bbcode'](content);break}return content},_punbb_html2bbcode:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/(.*?)<\/a>/gi,"[url]$1[/url]");rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");rep(/(.*?)<\/font>/gi,"$1");rep(//gi,"[img]$1[/img]");rep(/(.*?)<\/span>/gi,"[code]$1[/code]");rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]");rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");rep(/<\/(strong|b)>/gi,"[/b]");rep(/<(strong|b)>/gi,"[b]");rep(/<\/(em|i)>/gi,"[/i]");rep(/<(em|i)>/gi,"[i]");rep(/<\/u>/gi,"[/u]");rep(//gi,"[u]");rep(/
/gi,"\n");rep(//gi,"\n");rep(/
/gi,"\n");rep(/

/gi,"");rep(/<\/p>/gi,"\n");rep(/ /gi," ");rep(/"/gi,"\"");rep(/</gi,"<");rep(/>/gi,">");rep(/&/gi,"&");rep(/&undefined;/gi,"'");return s},_punbb_bbcode2html:function(s){s=tinyMCE.trim(s);function rep(re,str){s=s.replace(re,str)};rep(/\n/gi,"
");rep(/\[b\]/gi,"");rep(/\[\/b\]/gi,"");rep(/\[i\]/gi,"");rep(/\[\/i\]/gi,"");rep(/\[u\]/gi,"");rep(/\[\/u\]/gi,"");rep(/\[url\](.*?)\[\/url\]/gi,"
$1");rep(/\[img\](.*?)\[\/img\]/gi,"");rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2");rep(/\[code\](.*?)\[\/code\]/gi,"$1 ");rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 ");return s}};tinyMCE.addPlugin("bbcode",TinyMCE_BBCodePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin_src.js new file mode 100644 index 0000000..1d38317 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/bbcode/editor_plugin_src.js @@ -0,0 +1,102 @@ +var TinyMCE_BBCodePlugin = { + getInfo : function() { + return { + longname : 'BBCode Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/bbcode', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + cleanup : function(type, content) { + var dialect = tinyMCE.getParam('bbcode_dialect', 'punbb').toLowerCase(); + + switch (type) { + case "insert_to_editor": + content = this['_' + dialect + '_bbcode2html'](content); + break; + + case "get_from_editor": + content = this['_' + dialect + '_html2bbcode'](content); + break; + } + + return content; + }, + + // Private methods + + // HTML -> BBCode in PunBB dialect + _punbb_html2bbcode : function(s) { + s = tinyMCE.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: to [b] + rep(/(.*?)<\/a>/gi,"[url]$1[/url]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"); + rep(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"); + rep(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"); + rep(/(.*?)<\/font>/gi,"$1"); + rep(//gi,"[img]$1[/img]"); + rep(/(.*?)<\/span>/gi,"[code]$1[/code]"); + rep(/(.*?)<\/span>/gi,"[quote]$1[/quote]"); + rep(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"); + rep(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"); + rep(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"); + rep(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"); + rep(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"); + rep(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"); + rep(/<\/(strong|b)>/gi,"[/b]"); + rep(/<(strong|b)>/gi,"[b]"); + rep(/<\/(em|i)>/gi,"[/i]"); + rep(/<(em|i)>/gi,"[i]"); + rep(/<\/u>/gi,"[/u]"); + rep(//gi,"[u]"); + rep(/
/gi,"\n"); + rep(//gi,"\n"); + rep(/
/gi,"\n"); + rep(/

/gi,""); + rep(/<\/p>/gi,"\n"); + rep(/ /gi," "); + rep(/"/gi,"\""); + rep(/</gi,"<"); + rep(/>/gi,">"); + rep(/&/gi,"&"); + rep(/&undefined;/gi,"'"); // quickfix + + return s; + }, + + // BBCode -> HTML from PunBB dialect + _punbb_bbcode2html : function(s) { + s = tinyMCE.trim(s); + + function rep(re, str) { + s = s.replace(re, str); + }; + + // example: [b] to + rep(/\n/gi,"
"); + rep(/\[b\]/gi,""); + rep(/\[\/b\]/gi,""); + rep(/\[i\]/gi,""); + rep(/\[\/i\]/gi,""); + rep(/\[u\]/gi,""); + rep(/\[\/u\]/gi,""); + rep(/\[url\](.*?)\[\/url\]/gi,"
$1"); + rep(/\[img\](.*?)\[\/img\]/gi,""); + rep(/\[color=(.*?)\](.*?)\[\/color\]/gi,"$2"); + rep(/\[code\](.*?)\[\/code\]/gi,"$1 "); + rep(/\[quote.*?\](.*?)\[\/quote\]/gi,"$1 "); + + return s; + } +}; + +tinyMCE.addPlugin("bbcode", TinyMCE_BBCodePlugin); diff --git a/admin/scripts/tiny_mce/plugins/cleanup/editor_plugin.js b/admin/scripts/tiny_mce/plugins/cleanup/editor_plugin.js new file mode 100644 index 0000000..e69de29 diff --git a/admin/scripts/tiny_mce/plugins/cleanup/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/cleanup/editor_plugin_src.js new file mode 100644 index 0000000..8e1312f --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/cleanup/editor_plugin_src.js @@ -0,0 +1,10 @@ +/** + * $Id: editor_plugin_src.js 162 2007-01-03 16:16:52Z spocke $ + * + * Experimental plugin for new Cleanup routine, this logic will be moved into the core ones it's stable enougth. + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Dummy file since cleanup is now moved to core */ diff --git a/admin/scripts/tiny_mce/plugins/cleanup/readme.txt b/admin/scripts/tiny_mce/plugins/cleanup/readme.txt new file mode 100644 index 0000000..d1a6466 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/cleanup/readme.txt @@ -0,0 +1 @@ +Dummy plugin since cleanup is now moved into core. diff --git a/admin/scripts/tiny_mce/plugins/contextmenu/css/contextmenu.css b/admin/scripts/tiny_mce/plugins/contextmenu/css/contextmenu.css new file mode 100644 index 0000000..fb37214 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/contextmenu/css/contextmenu.css @@ -0,0 +1,74 @@ +.contextMenuIEPopup { + padding: 0; + margin: 0; + border: 0; + overflow: hidden; +} + +.contextMenu { + position: absolute; + cursor: default; + z-index: 1000; + border: 1px solid #D4D0C8; + background-color: #FFFFFF; +} + +.contextMenuItem, .contextMenuItemOver { +} + +.contextMenuSeparator { + width: 100%; + background-color: #D4D0C8; + border: 0; +} + +.contextMenuImage, .contextMenuItemDisabled { + border: 0; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemOver .contextMenuIcon { + background-color: #B6BDD2; +} + +.contextMenuIcon { + background-color: #F0F0EE; +} + +.contextMenuItemDisabled img { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; +} + +.contextMenuText { + font-family: Tahoma, Verdana, Arial, Helvetica; + font-size: 11px; + line-height: 20px; +} + +.contextMenuItemDisabled { + color: #AAAAAA; +} + +.contextMenuText a { + display: block; + line-height: 20px; + width: 100%; + text-decoration: none; + color: black; + font-weight: normal; + margin: 0; + padding: 0; +} + +.contextMenuText a:hover { + background-color: #B6BDD2; + text-decoration: none !important; + font-weight: normal; + margin: 0; + padding: 0; +} diff --git a/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin.js b/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin.js new file mode 100644 index 0000000..882c3ed --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin.js @@ -0,0 +1 @@ +if(!tinyMCE.settings['contextmenu_skip_plugin_css']){tinyMCE.loadCSS(tinyMCE.baseURL+"/plugins/contextmenu/css/contextmenu.css")}var TinyMCE_ContextMenuPlugin={_contextMenu:null,getInfo:function(){return{longname:'Context menus',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE5_0&&tinyMCE.isOpera)return;TinyMCE_ContextMenuPlugin._contextMenu=new TinyMCE_ContextMenu({commandhandler:"TinyMCE_ContextMenuPlugin._commandHandler",spacer_image:tinyMCE.baseURL+"/plugins/contextmenu/images/spacer.gif"});tinyMCE.addEvent(inst.getDoc(),"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(inst.getDoc(),"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"click",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keypress",TinyMCE_ContextMenuPlugin._hideContextMenu);tinyMCE.addEvent(document,"keydown",TinyMCE_ContextMenuPlugin._hideContextMenu);if(tinyMCE.isGecko){tinyMCE.addEvent(inst.getDoc(),"contextmenu",function(e){TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?inst.contentWindow.event:e,inst)})}else tinyMCE.addEvent(inst.getDoc(),"contextmenu",TinyMCE_ContextMenuPlugin._onContextMenu)},_onContextMenu:function(e){var elm=tinyMCE.isMSIE?e.srcElement:e.target;var targetInst,body;if((body=tinyMCE.getParentElement(elm,"body"))!=null){for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;if(body==inst.getBody()){targetInst=inst;break}}return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE?targetInst.contentWindow.event:e,targetInst)}},_showContextMenu:function(e,inst){function getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribute(name):""}var x,y,elm,contextMenu;var pos=tinyMCE.getAbsPosition(inst.iframeElement);x=tinyMCE.isMSIE?e.screenX:pos.absLeft+(e.pageX-inst.getBody().scrollLeft);y=tinyMCE.isMSIE?e.screenY:pos.absTop+(e.pageY-inst.getBody().scrollTop);elm=tinyMCE.isMSIE?e.srcElement:e.target;contextMenu=this._contextMenu;contextMenu.inst=inst;window.setTimeout(function(){var theme=tinyMCE.getParam("theme");contextMenu.clearAll();var sel=inst.selection.getSelectedText().length!=0||elm.nodeName=="IMG";contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_cut_desc","Cut","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_copy_desc","Copy","",!sel);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_paste_desc","Paste","",false);if(sel||(elm?(elm.nodeName=='A'&&tinyMCE.getAttrib(elm,'name')=='')||(elm.nodeName=='IMG'):false)){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/link.gif","$lang_link_desc",inst.hasPlugin("advlink")?"mceAdvLink":"mceLink");contextMenu.addItem(tinyMCE.baseURL+"/themes/advanced/images/unlink.gif","$lang_unlink_desc","unlink","",(elm?(elm.nodeName!='A')&&(elm.nodeName!='IMG'):true))}elm=tinyMCE.getParentElement(elm,"img,table,td"+(inst.hasPlugin("advhr")?',hr':''));if(elm){switch(elm.nodeName){case"IMG":contextMenu.addSeparator();if(tinyMCE.hasPlugin('flash')&&tinyMCE.getAttrib(elm,'class').indexOf('mceItemFlash')!=-1)contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_flash_props","mceFlash");else if(tinyMCE.hasPlugin('media')&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm,'class')))contextMenu.addItem(tinyMCE.baseURL+"/plugins/flash/images/flash.gif","$lang_media_title","mceMedia");else contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/image.gif","$lang_image_props_desc",inst.hasPlugin("advimage")?"mceAdvImage":"mceImage");break;case"HR":contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/advhr/images/advhr.gif","$lang_insert_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasPlugin("table")){var colspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"colspan");var rowspan=(elm.nodeName=="TABLE")?"":getAttrib(elm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/cut.gif","$lang_table_cut_row_desc","mceTableCutRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/copy.gif","$lang_table_copy_row_desc","mceTableCopyRow");contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_before_desc","mceTablePasteRowBefore","",inst.tableRowClipboard==null);contextMenu.addItem(tinyMCE.baseURL+"/themes/"+theme+"/images/paste.gif","$lang_table_paste_row_after_desc","mceTablePasteRowAfter","",inst.tableRowClipboard==null);contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_props_desc","mceInsertTable");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_cell_props.gif","$lang_table_cell_desc","mceTableCellProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete.gif","$lang_table_del","mceTableDelete");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_row_props.gif","$lang_table_row_desc","mceTableRowProps");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_before.gif","$lang_table_row_before_desc","mceTableInsertRowBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_row_after.gif","$lang_table_row_after_desc","mceTableInsertRowAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_row.gif","$lang_table_delete_row_desc","mceTableDeleteRow");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_before.gif","$lang_table_col_before_desc","mceTableInsertColBefore");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_insert_col_after.gif","$lang_table_col_after_desc","mceTableInsertColAfter");contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_delete_col.gif","$lang_table_delete_col_desc","mceTableDeleteCol");contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_split_cells.gif","$lang_table_split_cells_desc","mceTableSplitCells","",(colspan=="1"&&rowspan=="1"));contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table_merge_cells.gif","$lang_table_merge_cells_desc","mceTableMergeCells","",false)}break}}else{if(inst.hasPlugin("table")){contextMenu.addSeparator();contextMenu.addItem(tinyMCE.baseURL+"/plugins/table/images/table.gif","$lang_table_desc","mceInsertTable","insert")}}contextMenu.show(x,y)},10);tinyMCE.cancelEvent(e);return false},_hideContextMenu:function(){if(TinyMCE_ContextMenuPlugin._contextMenu)TinyMCE_ContextMenuPlugin._contextMenu.hide()},_commandHandler:function(command,value){var cm=TinyMCE_ContextMenuPlugin._contextMenu;cm.hide();var ui=false;if(command=="mceInsertTable"||command=="mceTableCellProps"||command=="mceTableRowProps"||command=="mceTableMergeCells")ui=true;if(command=="Paste")value=null;if(tinyMCE.getParam("dialog_type")=="modal"&&tinyMCE.isMSIE){window.setTimeout(function(){cm.inst.execCommand(command,ui,value)},100)}else cm.inst.execCommand(command,ui,value)}};tinyMCE.addPlugin("contextmenu",TinyMCE_ContextMenuPlugin);function TinyMCE_ContextMenu(settings){var doc,self=this;function defParam(key,def_val){settings[key]=typeof(settings[key])!="undefined"?settings[key]:def_val}this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.contextMenuDiv=document.createElement("div");this.contextMenuDiv.className="contextMenu";this.contextMenuDiv.setAttribute("class","contextMenu");this.contextMenuDiv.style.display="none";this.contextMenuDiv.style.position='absolute';this.contextMenuDiv.style.zindex=1000;this.contextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.contextMenuDiv.unselectable="on";document.body.appendChild(this.contextMenuDiv);defParam("commandhandler","");defParam("spacer_image","images/spacer.gif");this.items=new Array();this.settings=settings;this.html="";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop=window.createPopup();doc=this.pop.document;doc.open();doc.write('');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+=''},addItem:function(icon,title,command,value,disabled){if(title.charAt(0)=='$')title=tinyMCE.getLang(title.substring(1));var onMouseDown='';var html='';if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0)onMouseDown='contextMenu.execCommand(\''+command+'\', \''+value+'\');return false;';else onMouseDown=this.settings['commandhandler']+'(\''+command+'\', \''+value+'\');return false;';if(icon=="")icon=this.settings['spacer_image'];if(!disabled)html+='';else html+='';html+='';html+='

';html+=' ';html+=title;html+=' ';html+='
';html+='';this.html+=html},show:function(x,y){var vp,width,height,yo;if(this.html=="")return;var html='';html+='';html+=this.html;html+='
';this.contextMenuDiv.innerHTML=html;this.contextMenuDiv.style.display="block";width=this.contextMenuDiv.offsetWidth;height=this.contextMenuDiv.offsetHeight;this.contextMenuDiv.style.display="none";if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera){this.pop.document.body.innerHTML='
'+html+"
";this.pop.document.tinyMCE=tinyMCE;this.pop.document.contextMenu=this;this.pop.show(x,y,width,height)}else{vp=this.getViewPort();yo=tinyMCE.isMSIE5_0?document.body.scrollTop:self.pageYOffset;this.contextMenuDiv.style.left=(x>vp.left+vp.width-width?vp.left+vp.width-width:x)+'px';this.contextMenuDiv.style.top=(y>vp.top+vp.height-height?vp.top+vp.height-height:y)+'px';this.contextMenuDiv.style.display="block"}},getViewPort:function(){return{left:self.pageXOffset||self.document.documentElement.scrollLeft||self.document.body.scrollLeft,top:self.pageYOffset||self.document.documentElement.scrollTop||self.document.body.scrollTop,width:document.documentElement.offsetWidth||document.body.offsetWidth,height:self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},hide:function(){if(tinyMCE.isMSIE&&!tinyMCE.isMSIE5_0&&!tinyMCE.isOpera)this.pop.hide();else this.contextMenuDiv.style.display="none"},execCommand:function(command,value){eval(this.settings['commandhandler']+"(command, value);")}}; \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js new file mode 100644 index 0000000..4426d83 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js @@ -0,0 +1,357 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +if (!tinyMCE.settings['contextmenu_skip_plugin_css']) { + tinyMCE.loadCSS(tinyMCE.baseURL + "/plugins/contextmenu/css/contextmenu.css"); +} + +var TinyMCE_ContextMenuPlugin = { + // Private fields + _contextMenu : null, + + getInfo : function() { + return { + longname : 'Context menus', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + // Is not working on MSIE 5.0 or Opera no contextmenu event + if (tinyMCE.isMSIE5_0 && tinyMCE.isOpera) + return; + + TinyMCE_ContextMenuPlugin._contextMenu = new TinyMCE_ContextMenu({ + commandhandler : "TinyMCE_ContextMenuPlugin._commandHandler", + spacer_image : tinyMCE.baseURL + "/plugins/contextmenu/images/spacer.gif" + }); + + // Add hide event handles + tinyMCE.addEvent(inst.getDoc(), "click", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(inst.getDoc(), "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "click", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "keypress", TinyMCE_ContextMenuPlugin._hideContextMenu); + tinyMCE.addEvent(document, "keydown", TinyMCE_ContextMenuPlugin._hideContextMenu); + + // Attach contextmenu event + if (tinyMCE.isGecko) { + tinyMCE.addEvent(inst.getDoc(), "contextmenu", function(e) {TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? inst.contentWindow.event : e, inst);}); + } else + tinyMCE.addEvent(inst.getDoc(), "contextmenu", TinyMCE_ContextMenuPlugin._onContextMenu); + }, + + // Private plugin internal methods + + _onContextMenu : function(e) { + var elm = tinyMCE.isMSIE ? e.srcElement : e.target; + var targetInst, body; + + // Find instance + if ((body = tinyMCE.getParentElement(elm, "body")) != null) { + for (var n in tinyMCE.instances) { + var inst = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(inst)) + continue; + + if (body == inst.getBody()) { + targetInst = inst; + break; + } + } + + return TinyMCE_ContextMenuPlugin._showContextMenu(tinyMCE.isMSIE ? targetInst.contentWindow.event : e, targetInst); + } + }, + + _showContextMenu : function(e, inst) { + function getAttrib(elm, name) { + return elm.getAttribute(name) ? elm.getAttribute(name) : ""; + } + + var x, y, elm, contextMenu; + var pos = tinyMCE.getAbsPosition(inst.iframeElement); + + x = tinyMCE.isMSIE ? e.screenX : pos.absLeft + (e.pageX - inst.getBody().scrollLeft); + y = tinyMCE.isMSIE ? e.screenY : pos.absTop + (e.pageY - inst.getBody().scrollTop); + elm = tinyMCE.isMSIE ? e.srcElement : e.target; + + contextMenu = this._contextMenu; + contextMenu.inst = inst; + + // Mozilla needs some time + window.setTimeout(function () { + var theme = tinyMCE.getParam("theme"); + + contextMenu.clearAll(); + var sel = inst.selection.getSelectedText().length != 0 || elm.nodeName == "IMG"; + + // Default items + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_cut_desc", "Cut", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_copy_desc", "Copy", "", !sel); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_paste_desc", "Paste", "", false); + + if (sel || (elm ? (elm.nodeName == 'A' && tinyMCE.getAttrib(elm, 'name') == '') || (elm.nodeName == 'IMG') : false)) { + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/link.gif", "$lang_link_desc", inst.hasPlugin("advlink") ? "mceAdvLink" : "mceLink"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/advanced/images/unlink.gif", "$lang_unlink_desc", "unlink", "", (elm ? (elm.nodeName != 'A') && (elm.nodeName != 'IMG') : true)); + } + + // Get element + elm = tinyMCE.getParentElement(elm, "img,table,td" + (inst.hasPlugin("advhr") ? ',hr' : '')); + if (elm) { + switch (elm.nodeName) { + case "IMG": + contextMenu.addSeparator(); + + // If flash + if (tinyMCE.hasPlugin('flash') && tinyMCE.getAttrib(elm, 'class').indexOf('mceItemFlash') != -1) + contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_flash_props", "mceFlash"); + else if (tinyMCE.hasPlugin('media') && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(elm, 'class'))) + contextMenu.addItem(tinyMCE.baseURL + "/plugins/flash/images/flash.gif", "$lang_media_title", "mceMedia"); + else + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/image.gif", "$lang_image_props_desc", inst.hasPlugin("advimage") ? "mceAdvImage" : "mceImage"); + break; + + case "HR": + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/advhr/images/advhr.gif", "$lang_insert_advhr_desc", "mceAdvancedHr"); + break; + + case "TABLE": + case "TD": + // Is table plugin loaded + if (inst.hasPlugin("table")) { + var colspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "colspan"); + var rowspan = (elm.nodeName == "TABLE") ? "" : getAttrib(elm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/cut.gif", "$lang_table_cut_row_desc", "mceTableCutRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/copy.gif", "$lang_table_copy_row_desc", "mceTableCopyRow"); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_before_desc", "mceTablePasteRowBefore", "", inst.tableRowClipboard == null); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/paste.gif", "$lang_table_paste_row_after_desc", "mceTablePasteRowAfter", "", inst.tableRowClipboard == null); + + /* contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyleft.gif", "$lang_justifyleft_desc", "JustifyLeft", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifycenter.gif", "$lang_justifycenter_desc", "JustifyCenter", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyright.gif", "$lang_justifyright_desc", "JustifyRight", "", false); + contextMenu.addItem(tinyMCE.baseURL + "/themes/" + theme + "/images/justifyfull.gif", "$lang_justifyfull_desc", "JustifyFull", "", false);*/ + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_props_desc", "mceInsertTable"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_cell_props.gif", "$lang_table_cell_desc", "mceTableCellProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete.gif", "$lang_table_del", "mceTableDelete"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_row_props.gif", "$lang_table_row_desc", "mceTableRowProps"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_before.gif", "$lang_table_row_before_desc", "mceTableInsertRowBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_row_after.gif", "$lang_table_row_after_desc", "mceTableInsertRowAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_row.gif", "$lang_table_delete_row_desc", "mceTableDeleteRow"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_before.gif", "$lang_table_col_before_desc", "mceTableInsertColBefore"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_insert_col_after.gif", "$lang_table_col_after_desc", "mceTableInsertColAfter"); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_delete_col.gif", "$lang_table_delete_col_desc", "mceTableDeleteCol"); + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_split_cells.gif", "$lang_table_split_cells_desc", "mceTableSplitCells", "", (colspan == "1" && rowspan == "1")); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table_merge_cells.gif", "$lang_table_merge_cells_desc", "mceTableMergeCells", "", false); + } + break; + } + } else { + // Add table specific + if (inst.hasPlugin("table")) { + contextMenu.addSeparator(); + contextMenu.addItem(tinyMCE.baseURL + "/plugins/table/images/table.gif", "$lang_table_desc", "mceInsertTable", "insert"); + } + } + + contextMenu.show(x, y); + }, 10); + + // Cancel default handeling + tinyMCE.cancelEvent(e); + return false; + }, + + _hideContextMenu : function() { + if (TinyMCE_ContextMenuPlugin._contextMenu) + TinyMCE_ContextMenuPlugin._contextMenu.hide(); + }, + + _commandHandler : function(command, value) { + var cm = TinyMCE_ContextMenuPlugin._contextMenu; + + cm.hide(); + + // UI must be true on these + var ui = false; + if (command == "mceInsertTable" || command == "mceTableCellProps" || command == "mceTableRowProps" || command == "mceTableMergeCells") + ui = true; + + if (command == "Paste") + value = null; + + if (tinyMCE.getParam("dialog_type") == "modal" && tinyMCE.isMSIE) { + // Cell properties will generate access denied error is this isn't done?! + window.setTimeout(function() { + cm.inst.execCommand(command, ui, value); + }, 100); + } else + cm.inst.execCommand(command, ui, value); + } +}; + +tinyMCE.addPlugin("contextmenu", TinyMCE_ContextMenuPlugin); + +// Context menu class + +function TinyMCE_ContextMenu(settings) { + var doc, self = this; + + // Default value function + function defParam(key, def_val) { + settings[key] = typeof(settings[key]) != "undefined" ? settings[key] : def_val; + } + + this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + + // Setup contextmenu div + this.contextMenuDiv = document.createElement("div"); + this.contextMenuDiv.className = "contextMenu"; + this.contextMenuDiv.setAttribute("class", "contextMenu"); + this.contextMenuDiv.style.display = "none"; + this.contextMenuDiv.style.position = 'absolute'; + this.contextMenuDiv.style.zindex = 1000; + this.contextMenuDiv.style.left = '0'; + this.contextMenuDiv.style.top = '0'; + this.contextMenuDiv.unselectable = "on"; + + document.body.appendChild(this.contextMenuDiv); + + // Setup default values + defParam("commandhandler", ""); + defParam("spacer_image", "images/spacer.gif"); + + this.items = new Array(); + this.settings = settings; + this.html = ""; + + // IE Popup + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + this.pop = window.createPopup(); + doc = this.pop.document; + doc.open(); + doc.write(''); + doc.close(); + } +}; + +TinyMCE_ContextMenu.prototype = { + clearAll : function() { + this.html = ""; + this.contextMenuDiv.innerHTML = ""; + }, + + addSeparator : function() { + this.html += ''; + }, + + addItem : function(icon, title, command, value, disabled) { + if (title.charAt(0) == '$') + title = tinyMCE.getLang(title.substring(1)); + + var onMouseDown = ''; + var html = ''; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0) + onMouseDown = 'contextMenu.execCommand(\'' + command + '\', \'' + value + '\');return false;'; + else + onMouseDown = this.settings['commandhandler'] + '(\'' + command + '\', \'' + value + '\');return false;'; + + if (icon == "") + icon = this.settings['spacer_image']; + + if (!disabled) + html += ''; + else + html += ''; + + html += ''; + html += ''; + html += ''; + + // Add to main + this.html += html; + }, + + show : function(x, y) { + var vp, width, height, yo; + + if (this.html == "") + return; + + var html = ''; + + html += ''; + html += this.html; + html += '
'; + + this.contextMenuDiv.innerHTML = html; + + // Get dimensions + this.contextMenuDiv.style.display = "block"; + width = this.contextMenuDiv.offsetWidth; + height = this.contextMenuDiv.offsetHeight; + this.contextMenuDiv.style.display = "none"; + + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) { + // Setup popup and show + this.pop.document.body.innerHTML = '
' + html + "
"; + this.pop.document.tinyMCE = tinyMCE; + this.pop.document.contextMenu = this; + this.pop.show(x, y, width, height); + } else { + vp = this.getViewPort(); + yo = tinyMCE.isMSIE5_0 ? document.body.scrollTop : self.pageYOffset; + this.contextMenuDiv.style.left = (x > vp.left + vp.width - width ? vp.left + vp.width - width : x) + 'px'; + this.contextMenuDiv.style.top = (y > vp.top + vp.height - height ? vp.top + vp.height - height : y) + 'px'; + this.contextMenuDiv.style.display = "block"; + } + }, + + getViewPort : function() { + return { + left : self.pageXOffset || self.document.documentElement.scrollLeft || self.document.body.scrollLeft, + top: self.pageYOffset || self.document.documentElement.scrollTop || self.document.body.scrollTop, + width : document.documentElement.offsetWidth || document.body.offsetWidth, + height : self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight + }; + }, + + hide : function() { + if (tinyMCE.isMSIE && !tinyMCE.isMSIE5_0 && !tinyMCE.isOpera) + this.pop.hide(); + else + this.contextMenuDiv.style.display = "none"; + }, + + execCommand : function(command, value) { + eval(this.settings['commandhandler'] + "(command, value);"); + } +}; diff --git a/admin/scripts/tiny_mce/plugins/contextmenu/images/spacer.gif b/admin/scripts/tiny_mce/plugins/contextmenu/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/contextmenu/readme.txt b/admin/scripts/tiny_mce/plugins/contextmenu/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/contextmenu/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/devkit/css/devkit.css b/admin/scripts/tiny_mce/plugins/devkit/css/devkit.css new file mode 100644 index 0000000..27eaac0 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/css/devkit.css @@ -0,0 +1,117 @@ +body { + overflow: hidden; +} + +h1 { + font-size: 14px; + margin: 0 0 10px 0; +} + +h2 { + font-size: 12px; + margin: 3px 0 3px 0; +} + +h3 { + font-size: 11px; + margin: 3px 0 3px 0; +} + +#log { + font-family: Verdana; + border: 1px solid gray; + width: 100%; height: 240px; + overflow: scroll; + white-space: nowrap; +} + +#log span { + display: block; +} + +#log span.msg { + float: left; +} + +#log span.time { + float: left; +} + +#log br { + clear: both; +} + +#logfilter { + width: 350px; +} + +#logenabled { + border: 0; +} + +#settings_panel span, #info_panel span, #content_panel span, #command_states_panel span, #undo_redo_panel span { + display: block; + margin: 5px 0 5px 0; +} + +div.data { + width: 100%; height: 240px; + overflow: scroll; + border: 1px solid gray; +} + +#misc_panel div.data { + height: 270px; +} + +.data input { + width: 265px; + border: 0; +} + +.data h2 { + margin-left: 5px; +} + +.data h3 { + margin-left: 7px; +} + +.data div { + margin-left: 7px; +} + +.data table { + margin: 0 0 15px 15px; +} + +.data p { + margin: 0; padding: 0; + margin-top: 5px; + margin-left: 5px; +} + +table, td { + border: 1px solid gray; + border-collapse: collapse; +} + +#flip { + position: absolute; + left: 295; top: 384px; +} + +.bspec { + color: gray; +} + +.dep { + color: #880000; +} + +.col1 { + width: 265px; +} + +div.undodata { +} diff --git a/admin/scripts/tiny_mce/plugins/devkit/css/devkit_ui.css b/admin/scripts/tiny_mce/plugins/devkit/css/devkit_ui.css new file mode 100644 index 0000000..6713abc --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/css/devkit_ui.css @@ -0,0 +1,15 @@ +#devkit { + position: absolute; + top: -385px; right: 0; + width: 640px; height: 390px; + border: 1px solid black; + z-index: 10000; +} + +.devkitup { + top: -385px !important; +} + +.devkitdown { + top: 0 !important; +} diff --git a/admin/scripts/tiny_mce/plugins/devkit/devkit.htm b/admin/scripts/tiny_mce/plugins/devkit/devkit.htm new file mode 100644 index 0000000..92a339b --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/devkit.htm @@ -0,0 +1,140 @@ + + + {$lang_devkit_title} + + + + + + + + + +
+

{$lang_devkit_title}

+ + + +
+
+
+ {$lang_devkit_log_tab} + +
+ +
+ +
+ +
+ + + +
+ +
+
+ + +
+
+ +
+
+ {$lang_devkit_info_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_info_help}

+
+
+
+ +
+
+ {$lang_devkit_settings_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_settings_help}

+
+
+
+ +
+
+ {$lang_devkit_content_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_content_help}

+
+
+
+ +
+
+ {$lang_devkit_command_states_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_command_states_help}

+
+
+
+ +
+
+ {$lang_devkit_undo_redo_tab} + + [{$lang_devkit_refresh}] + +
+

{$lang_devkit_undo_redo_help}

+
+ + +
+
+ +
+
+ {$lang_devkit_misc_tab} + +
+

{$lang_devkit_misc_help}

+
+

Selection: [Store selection] [Restore selection]

+
+
Insert custom HTML content
+
+ +
+
Eval JS:
+
+ +
+
+
+
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/devkit/editor_plugin.js b/admin/scripts/tiny_mce/plugins/devkit/editor_plugin.js new file mode 100644 index 0000000..8a5d64c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('devkit');var TinyMCE_DevKitPlugin={_logFilter:'\\[(importCSS|execCommand|execInstanceCommand|debug)\\]',_logPadding:'',_startTime:null,_benchMark:false,_winLoaded:false,_isDebugEvents:false,getInfo:function(){return{longname:'Development Kit',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/devkit',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){this._setup()},_setup:function(){if(this._loaded)return;this._loaded=true;document.___TinyMCE=tinyMCE;this._logFilter=tinyMCE.getParam('devkit_log_filter',this._logFilter);this._benchMark=tinyMCE.getParam('devkit_bench_mark',false);var ifr=document.createElement('iframe');ifr.setAttribute("id","devkit");ifr.setAttribute("frameBorder","0");ifr.setAttribute("src",tinyMCE.baseURL+'/plugins/devkit/devkit.htm');document.body.appendChild(ifr);tinyMCE.importCSS(document,tinyMCE.baseURL+'/plugins/devkit/css/devkit_ui.css')},_start:function(){this._logPadding+='\u00a0';return new Date().getTime()},_end:function(st){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);if(this._benchMark)this._log("benchmark","Execution time: "+(new Date().getTime()-st))},_log:function(t){var m,a,i,e=document.getElementById('devkit'),now=new Date().getTime();if(!this._startTime)this._startTime=now;m=(this._logPadding.length>1?this._logPadding:'')+'['+(now-this._startTime)+'] ['+t+'] ';a=this._log.arguments;for(i=1;i1)m+=', ';m+=a[i]}if(!new RegExp(this._logFilter,'gi').test(m)){if(this._logPadding.length>0)this._logPadding=this._logPadding.substring(0,this._logPadding.length-1);return}if(!this._winLoaded)tinyMCE.log[tinyMCE.log.length]=m;else e.contentWindow.debug(m)},_debugEvents:function(s){var i,ld,inst,n,ev=['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive','DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved','RadioStateChange','blur','broadcast','change','click','close','command','commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit','draggesture','dragover','focus','input','keydown','keypress','keyup','load','mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden','popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference','underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate','beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint','beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut','dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave','dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout','help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel','move','moveend','movestart','paste','propertychange','readystatechange','reset','resize','resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll','selectionchange','selectstart','start','stop','submit'];if(TinyMCE_DevKitPlugin._isDebugEvents==s)return;TinyMCE_DevKitPlugin._isDebugEvents=s;for(n in tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst)||inst.getDoc()==ld)continue;ld=inst.getDoc();for(i=0;i0?',':'')+s(o[i]);return v+']'}v='{';for(i in o)v+=typeof o[i]!='function'?(v.length>1?',"':'"')+i+'":'+s(o[i]):'';return v+'}'}return''+o}};tinyMCE.__debug=tinyMCE.debug;tinyMCE.debug=function(){var a,i,m='',now=new Date().getTime(),start=TinyMCE_DevKitPlugin._startTime;if(!start)TinyMCE_DevKitPlugin._startTime=start=now;a=this.debug.arguments;for(i=0;i0)m+=', ';m+=a[i]}TinyMCE_DevKitPlugin._log('debug',m)};tinyMCE.dump=function(o){tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o))};tinyMCE.sleep=function(t){var s=new Date().getTime(),b;while(new Date().getTime()-s 0) + this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); + + if (this._benchMark) + this._log("benchmark", "Execution time: " + (new Date().getTime() - st)); + }, + + _log : function(t) { + var m, a, i, e = document.getElementById('devkit'), now = new Date().getTime(); + + if (!this._startTime) + this._startTime = now; + + m = (this._logPadding.length > 1 ? this._logPadding : '') + '[' + (now - this._startTime) + '] [' + t + '] '; + + a = this._log.arguments; + for (i=1; i 1) + m += ', '; + + m += a[i]; + } + + if (!new RegExp(this._logFilter, 'gi').test(m)) { + if (this._logPadding.length > 0) + this._logPadding = this._logPadding.substring(0, this._logPadding.length - 1); + + return; + } + + if (!this._winLoaded) + tinyMCE.log[tinyMCE.log.length] = m; + else + e.contentWindow.debug(m); + }, + + _debugEvents : function(s) { + var i, ld, inst, n, ev = ['CheckboxStateChange','DOMAttrModified','DOMMenuItemActive', + 'DOMMenuItemInactive','DOMMouseScroll','DOMNodeInserted','DOMNodeRemoved', + 'RadioStateChange','blur','broadcast','change','click','close','command', + 'commandupdate','contextmenu','dblclick','dragdrop','dragenter','dragexit', + 'draggesture','dragover','focus','input','keydown','keypress','keyup','load', + 'mousedown','mouseout','mouseover','mouseup','overflow','overflowchanged','popuphidden', + 'popuphiding','popupshowing','popupshown','select','syncfrompreference','synctopreference', + 'underflow','unload','abort','activate','afterprint','afterupdate','beforeactivate', + 'beforecopy','beforecut','beforedeactivate','beforeeditfocus','beforepaste','beforeprint', + 'beforeunload','beforeupdate','bounce','cellchange','controlselect','copy','cut', + 'dataavailable','datasetchanged','datasetcomplete','deactivate','dragend','dragleave', + 'dragstart','drop','error','errorupdate','filterchange','finish','focusin','focusout', + 'help','layoutcomplete','losecapture','mouseenter','mouseleave','mousewheel', + 'move','moveend','movestart','paste','propertychange','readystatechange','reset','resize', + 'resizeend','resizestart','rowenter','rowexit','rowsdelete','rowsinserted','scroll', + 'selectionchange','selectstart','start','stop','submit']; + // mousemove + + if (TinyMCE_DevKitPlugin._isDebugEvents == s) + return; + + TinyMCE_DevKitPlugin._isDebugEvents = s; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst) || inst.getDoc() == ld) + continue; + + ld = inst.getDoc(); + + for (i=0; i 0 ? ',' : '') + s(o[i]); + + return v + ']'; + } + + v = '{'; + + for (i in o) + v += typeof o[i] != 'function' ? (v.length > 1 ? ',"' : '"') + i + '":' + s(o[i]) : ''; + + return v + '}'; + } + + return '' + o; + } +}; + +// Patch and piggy back functions +tinyMCE.__debug = tinyMCE.debug; +tinyMCE.debug = function() { + var a, i, m = '', now = new Date().getTime(), start = TinyMCE_DevKitPlugin._startTime; + + if (!start) + TinyMCE_DevKitPlugin._startTime = start = now; + + a = this.debug.arguments; + for (i=0; i 0) + m += ', '; + + m += a[i]; + } + + TinyMCE_DevKitPlugin._log('debug', m); +}; + +tinyMCE.dump = function(o) { + tinyMCE.debug(TinyMCE_DevKitPlugin._serialize(o)); +}; + +tinyMCE.sleep = function(t) { + var s = new Date().getTime(), b; + + while (new Date().getTime() - s < t) b=1; +}; + +tinyMCE.__execCommand = tinyMCE.execCommand; +tinyMCE.execCommand = function(command, user_interface, value) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execCommand', command, user_interface, value); + r = tinyMCE.__execCommand(command, user_interface, value); + dk._end(st); + + return r; +}; + +tinyMCE.__execInstanceCommand = tinyMCE.execInstanceCommand; +tinyMCE.execInstanceCommand = function(editor_id, command, user_interface, value, focus) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execInstanceCommand', editor_id, command, user_interface, value); + r = tinyMCE.__execInstanceCommand(editor_id, command, user_interface, value); + dk._end(st); + + return r; +}; + +TinyMCE_Engine.prototype.__handleEvent = TinyMCE_Engine.prototype.handleEvent; +TinyMCE_Engine.prototype.handleEvent = function(e) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('handleEvent', e.type); + r = tinyMCE.__handleEvent(e); + dk._end(st); + + return r; +}; + +tinyMCE.__importCSS = tinyMCE.importCSS; +tinyMCE.importCSS = function(doc, css) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('importCSS', doc, css); + r = tinyMCE.__importCSS(doc, css); + dk._end(st); + + return r; +}; + +tinyMCE.__triggerNodeChange = tinyMCE.triggerNodeChange; +tinyMCE.triggerNodeChange = function(focus, setup_content) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('triggerNodeChange', focus, setup_content); + r = tinyMCE.__triggerNodeChange(focus, setup_content); + dk._end(st); + + return r; +}; + +tinyMCE.__dispatchCallback = tinyMCE.dispatchCallback; +tinyMCE.dispatchCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('dispatchCallback', i, p, n); + r = tinyMCE.__dispatchCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.__executeCallback = tinyMCE.executeCallback; +tinyMCE.executeCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('executeCallback', i, p, n); + r = tinyMCE.__executeCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.__execCommandCallback = tinyMCE.execCommandCallback; +tinyMCE.execCommandCallback = function(i, p, n) { + var r, st, dk = TinyMCE_DevKitPlugin; + + st = dk._start(); + dk._log('execCommandCallback', i, p, n); + r = tinyMCE.__execCommandCallback(i, p, n); + dk._end(st); + + return r; +}; + +tinyMCE.addPlugin("devkit", TinyMCE_DevKitPlugin); diff --git a/admin/scripts/tiny_mce/plugins/devkit/images/flip_down.gif b/admin/scripts/tiny_mce/plugins/devkit/images/flip_down.gif new file mode 100644 index 0000000000000000000000000000000000000000..29a2d746bad9936f08fdde4ab0b944fe28a4652a GIT binary patch literal 179 zcmZ?wbhEHbG-6<9IKsg2`t|Emr%u`1+sDVpzj*N?BqU__?%ik3oO$!+&7nhwva+%c zA3nTi&z{MXC$C+*_W%F?r%#_|AO+}v6oc$yV6|9qsV60KUdF0PT}*ombk3LL9)4RZ r?EhZaDq1gs`G*{XlCD9>xgL+_JufGn;_FxvdM&DQ|AUE2EDY8FRog(y literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/devkit/images/flip_up.gif b/admin/scripts/tiny_mce/plugins/devkit/images/flip_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b9676b6a64e26f16741d18396fadeb72141915d GIT binary patch literal 193 zcmZ?wbhEHbG-6<9IKse?pP&Es?c0Kaf_?k;IXO8!fByXC%a_T?$#34gIdbGkWMt&o zvuDqoIrHk(tCW=z&;MvpvF^Riy-N;Jhm#Dy^zDr=sN@vr>^N<7A|rO)jWuDf cYlN6@e<({7oqax|kcA;)=lu_Y3M>rP02@$OQ2+n{ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/devkit/jscripts/devkit.js b/admin/scripts/tiny_mce/plugins/devkit/jscripts/devkit.js new file mode 100644 index 0000000..0225405 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/jscripts/devkit.js @@ -0,0 +1,331 @@ +var devkit = parent.tinyMCE.plugins['devkit'], logEnabled = true, flip = false, book = null; + +function init() { + var log, i, f = document.forms[0]; + + devkit._winLoaded = true; + + log = tinyMCE.log; + + for (i=0; i'; + h += ''; + + h += addRenderInfo('editorId', inst.editorId); + h += addRenderInfo('visualAid', inst.visualAid); + h += addRenderInfo('foreColor', inst.foreColor); + h += addRenderInfo('backColor', inst.backColor); + h += addRenderInfo('formTargetElementId', inst.formTargetElementId); + h += addRenderInfo('formElement', inst.formElement ? inst.formElement.nodeName : null); + h += addRenderInfo('oldTargetElement', inst.oldTargetElement ? inst.oldTargetElement.nodeName : null); + h += addRenderInfo('linkElement', inst.linkElement ? inst.linkElement.nodeName : null, 'dep'); + h += addRenderInfo('imgElement', inst.imgElement ? inst.imgElement.nodeName : null, 'dep'); + h += addRenderInfo('selectedNode', inst.selectedNode ? inst.selectedNode.nodeName : null, 'dep'); + h += addRenderInfo('targetElement', inst.targetElement ? inst.targetElement.nodeName : null); + h += addRenderInfo('getBody().nodeName', inst.getBody() ? inst.getBody().nodeName : null); + h += addRenderInfo('getBody().getAttribute("id")', inst.getBody() ? inst.getBody().getAttribute("id") : null); + h += addRenderInfo('getDoc().location', inst.getDoc() ? inst.getDoc().location : null); + h += addRenderInfo('startContent', inst.startContent); + h += addRenderInfo('isHidden()', inst.isHidden()); + h += addRenderInfo('isDirty()', inst.isDirty()); + h += addRenderInfo('undoRedo.undoLevels.length', inst.undoRedo.undoLevels.length); + h += addRenderInfo('undoRedo.undoIndex', inst.undoRedo.undoIndex); + h += addRenderInfo('selection.getSelectedHTML()', inst.selection.getSelectedHTML()); + h += addRenderInfo('selection.isCollapsed()', inst.selection.isCollapsed() || 'false'); + h += addRenderInfo('selection.getSelectedText()', inst.selection.getSelectedText()); + h += addRenderInfo('selection.getFocusElement().nodeName', inst.selection.getFocusElement().nodeName); + h += addRenderInfo('selection.getFocusElement().outerHTML', tinyMCE.getOuterHTML(inst.selection.getFocusElement())); + + if ((tinyMCE.isGecko || tinyMCE.isOpera) && sel && rng) { + h += addRenderInfo('selection.getSel().anchorNode.nodeName', sel.anchorNode ? sel.anchorNode.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getSel().anchorOffset', sel.anchorOffset, 'bspec'); + h += addRenderInfo('selection.getSel().focusNode.nodeName', sel.focusNode ? sel.focusNode.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getSel().focusOffset', sel.focusOffset, 'bspec'); + h += addRenderInfo('selection.getRng().startContainer.nodeName', rng.startContainer ? rng.startContainer.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getRng().startOffset', rng.startOffset, 'bspec'); + h += addRenderInfo('selection.getRng().endContainer.nodeName', rng.endContainer ? rng.endContainer.nodeName : null, 'bspec'); + h += addRenderInfo('selection.getRng().endOffset', rng.endOffset, 'bspec'); + } + + if (typeof(rng.item) != 'undefined' || typeof(rng.htmlText) != 'undefined') { + if (!rng.item) { + h += addRenderInfo('selection.getSel().type', sel.type, 'bspec'); + h += addRenderInfo('selection.getRng().htmlText', rng.htmlText, 'bspec'); + h += addRenderInfo('selection.getRng().text', rng.text, 'bspec'); + } else + h += addRenderInfo('selection.getRng().item(0).nodeName', rng.item(0).nodeName, 'bspec'); + } + + h += '
'; + } + + h += '

Fields marked in gray is not cross browser and should be used with care.

'; + h += '

Fields marked red are marked deprecated and will be removed in the future.


'; + + se.innerHTML = h; +} + +function addRenderInfo(n, v, c) { + return '' + n + ''; +} + +function renderSettings() { + var se = document.getElementById('settings'), n, sn, inst, h = '', v; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + + for (sn in inst.settings) { + v = inst.settings[sn]; + + h += ''; + } + + h += '
' + tinyMCE.xmlEncode(sn) + '
'; + } + + se.innerHTML = h; +} + +function renderContent() { + var se = document.getElementById('content'), n, inst, h = ''; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + + h += '

Start content - inst.startContent:

'; + h += '
' + tinyMCE.xmlEncode(inst.startContent) + '
'; + + h += '

Raw content - inst.getBody().innerHTML or inst.getHTML(true):

'; + h += '
' + tinyMCE.xmlEncode(inst.getHTML(true)) + '
'; + + h += '

Cleaned content - inst.getHTML():

'; + h += '
' + tinyMCE.xmlEncode(inst.getHTML()) + '
'; + + if (inst.serializedHTML) { + h += '

Serialized HTML content - inst.serializedHTML:

'; + h += '
' + tinyMCE.xmlEncode(inst.serializedHTML) + '
'; + } + } + + se.innerHTML = h; +} + +function renderCommandStates() { + var se = document.getElementById('command_states'), n, inst, h = '', v, ex; + var cmds = new Array('2D-Position','AbsolutePosition','BackColor','BlockDirLTR','BlockDirRTL','Bold','BrowseMode','Copy','CreateBookmark','CreateLink','Cut','Delete','DirLTR','DirRTL','EditMode','enableInlineTableEditing','enableObjectResizing','FontName','FontSize','ForeColor','FormatBlock','Indent','InsertButton','InsertFieldset','InsertHorizontalRule','InsertIFrame','InsertImage','InsertInputButton','InsertInputCheckbox','InsertInputFileUpload','InsertInputHidden','InsertInputImage','InsertInputPassword','InsertInputRadio','InsertInputReset','InsertInputSubmit','InsertInputText','InsertMarquee','InsertOrderedList','InsertParagraph','InsertSelectDropdown','InsertSelectListbox','InsertTextArea','InsertUnorderedList','Italic','JustifyCenter','JustifyFull','JustifyLeft','JustifyNone','JustifyRight','LiveResize','MultipleSelection','Open','Outdent','OverWrite','Paste','PlayImage','Redo','Refresh','RemoveFormat','SaveAs','SelectAll','SizeToControl','SizeToControlHeight','SizeToControlWidth','Stop','StopImage','StrikeThrough','styleWithCSS','Subscript','Superscript','UnBookmark','Underline','Undo','Unlink','Unselect'), i; + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + + for (i=0; i'; + } + + h += '
'; + } + + se.innerHTML = h; +} + +function renderUndoRedo() { + var se = document.getElementById('undo_redo'), inst, n, h = '', i, le, id, d, ur; + var f = document.forms[0]; + + if (tinyMCE.undoLevels) { + le = tinyMCE.undoLevels; + + h += '

Global undo/redo

'; + h += ''; + h += ''; + h += ''; + h += '
undoLevels.length' + le.length + '
undoIndex' + tinyMCE.undoIndex + '
'; + + for (i=0; i'; + } + + for (n in tinyMCE.instances) { + inst = tinyMCE.instances[n]; + + if (!tinyMCE.isInstance(inst)) + continue; + + ur = inst.undoRedo; + le = ur.undoLevels; + + h += '

Instance id: ' + inst.editorId + '

'; + h += ''; + h += ''; + h += ''; + h += ''; + h += ''; + h += '
undoLevels.length' + le.length + '
undoIndex' + ur.undoIndex + '
typingUndoIndex' + ur.typingUndoIndex + '
undoRedo' + ur.undoRedo + '
'; + + for (i=0; i'; + h += '
' + tinyMCE.xmlEncode(le[i].content) + '
'; + + if (i > 0 && f.undo_diff.checked) { + d = diff_main(i > 0 ? le[i-1].content.replace(/[\r\n]+/g, '') : null, le[i].content.replace(/[\r\n]+/g, ''), false); + diff_cleanup_semantic(d); + h += '

Diff ' + (i-1) + ',' + i + '

' + diff_prettyhtml(d) + '
'; + } + } + } + + se.innerHTML = h; +} + +function clearLog() { + document.getElementById('log').innerHTML = ''; + devkit._startTime = null; +} + +function cancelAction() { + parent.document.getElementById('devkit').style.display = 'none'; +} + +function toggleDebugEvents(s) { + devkit._debugEvents(s); +} + +function storeSelection() { + book = tinyMCE.selectedInstance.selection.getBookmark(); + + return false; +} + +function restoreSelection() { + tinyMCE.selectedInstance.selection.moveToBookmark(book); + + return false; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/devkit/jscripts/diff.js b/admin/scripts/tiny_mce/plugins/devkit/jscripts/diff.js new file mode 100644 index 0000000..87b96cc --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/devkit/jscripts/diff.js @@ -0,0 +1,1192 @@ +// Diff_Match_Patch v1.3 +// Computes the difference between two texts to create a patch. +// Applies the patch onto another text, allowing for errors. +// Copyright (C) 2006 Neil Fraser +// http://neil.fraser.name/software/diff_match_patch/ + +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License (www.gnu.org) for more details. + + +// Constants. +// Redefine these in your program to override the defaults. + +// Number of seconds to map a diff before giving up. (0 for infinity) +var DIFF_TIMEOUT = 1.0; +// Cost of an empty edit operation in terms of edit characters. +var DIFF_EDIT_COST = 4; +// Tweak the relative importance (0.0 = accuracy, 1.0 = proximity) +var MATCH_BALANCE = 0.5; +// At what point is no match declared (0.0 = perfection, 1.0 = very loose) +var MATCH_THRESHOLD = 0.5; +// The min and max cutoffs used when computing text lengths. +var MATCH_MINLENGTH = 100; +var MATCH_MAXLENGTH = 1000; +// Chunk size for context length. +var PATCH_MARGIN = 4; + + + ////////////////////////////////////////////////////////////////////// + // Diff // +////////////////////////////////////////////////////////////////////// + +// The data structure representing a diff is an array of tuples: +// [[-1, "Hello"], [1, "Goodbye"], [0, " world."]] +// which means: delete "Hello", add "Goodbye" and keep " world." + + +function diff_main(text1, text2, checklines) { + // Find the differences between two texts. Return an array of changes. + // If checklines is present and false, then don't run a line-level diff first to identify the changed areas. + // Check for equality (speedup) + if (text1 == text2) + return [[0, text1]]; + + if (typeof checklines == 'undefined') + checklines = true; + + var a; + // Trim off common prefix (speedup) + a = diff_prefix(text1, text2); + text1 = a[0]; + text2 = a[1]; + var commonprefix = a[2]; + + // Trim off common suffix (speedup) + a = diff_suffix(text1, text2); + text1 = a[0]; + text2 = a[1]; + var commonsuffix = a[2]; + + var diff, i; + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + + if (!text1) { // Just add some text (speedup) + diff = [[1, text2]]; + } else if (!text2) { // Just delete some text (speedup) + diff = [[-1, text1]]; + } else if ((i = longtext.indexOf(shorttext)) != -1) { + // Shorter text is inside the longer text (speedup) + diff = [[1, longtext.substring(0, i)], [0, shorttext], [1, longtext.substring(i+shorttext.length)]]; + // Swap insertions for deletions if diff is reversed. + if (text1.length > text2.length) + diff[0][0] = diff[2][0] = -1; + } else { + longtext = shorttext = null; // Garbage collect + // Check to see if the problem can be split in two. + var hm = diff_halfmatch(text1, text2); + if (hm) { + // A half-match was found, sort out the return data. + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + var mid_common = hm[4]; + // Send both pairs off for separate processing. + var diff_a = diff_main(text1_a, text2_a, checklines); + var diff_b = diff_main(text1_b, text2_b, checklines); + // Merge the results. + diff = diff_a.concat([[0, mid_common]], diff_b); + } else { + // Perform a real diff. + if (checklines && text1.length + text2.length < 250) + checklines = false; // Too trivial for the overhead. + if (checklines) { + // Scan the text on a line-by-line basis first. + a = diff_lines2chars(text1, text2); + text1 = a[0]; + text2 = a[1]; + var linearray = a[2]; + } + diff = diff_map(text1, text2); + if (!diff) // No acceptable result. + diff = [[-1, text1], [1, text2]]; + if (checklines) { + diff_chars2lines(diff, linearray); // Convert the diff back to original text. + diff_cleanup_semantic(diff); // Eliminate freak matches (e.g. blank lines) + + // Rediff any replacement blocks, this time on character-by-character basis. + diff.push([0, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + while(pointer < diff.length) { + if (diff[pointer][0] == 1) { + count_insert++; + text_insert += diff[pointer][1]; + } else if (diff[pointer][0] == -1) { + count_delete++; + text_delete += diff[pointer][1]; + } else { // Upon reaching an equality, check for prior redundancies. + if (count_delete >= 1 && count_insert >= 1) { + // Delete the offending records and add the merged ones. + a = diff_main(text_delete, text_insert, false); + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert); + pointer = pointer - count_delete - count_insert; + for (i=a.length-1; i>=0; i--) + diff.splice(pointer, 0, a[i]); + pointer = pointer + a.length; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + } + pointer++; + } + diff.pop(); // Remove the dummy entry at the end. + + } + } + } + + if (commonprefix) + diff.unshift([0, commonprefix]); + if (commonsuffix) + diff.push([0, commonsuffix]); + diff_cleanup_merge(diff); + return diff; +} + + +function diff_lines2chars(text1, text2) { + // Split text into an array of strings. + // Reduce the texts to a string of hashes where each character represents one line. + var linearray = new Array(); // linearray[4] == "Hello\n" + var linehash = new Object(); // linehash["Hello\n"] == 4 + + // "\x00" is a valid JavaScript character, but the Venkman debugger doesn't like it (bug 335098) + // So we'll insert a junk entry to avoid generating a null character. + linearray.push(''); + + function diff_lines2chars_munge(text) { + // My first ever closure! + var i, line; + var chars = ''; + while (text) { + i = text.indexOf('\n'); + if (i == -1) + i = text.length; + line = text.substring(0, i+1); + text = text.substring(i+1); + if (linehash.hasOwnProperty ? linehash.hasOwnProperty(line) : (linehash[line] !== undefined)) { + chars += String.fromCharCode(linehash[line]); + } else { + linearray.push(line); + linehash[line] = linearray.length - 1; + chars += String.fromCharCode(linearray.length - 1); + } + } + return chars; + } + + var chars1 = diff_lines2chars_munge(text1); + var chars2 = diff_lines2chars_munge(text2); + return [chars1, chars2, linearray]; +} + + +function diff_chars2lines(diff, linearray) { + // Rehydrate the text in a diff from a string of line hashes to real lines of text. + var chars, text; + for (var x=0; x 0 && now.getTime() > ms_end) // Timeout reached + return null; + + // Walk the front path one step. + v_map1[d] = new Object(); + for (var k=-d; k<=d; k+=2) { + if (k == -d || k != d && v1[k-1] < v1[k+1]) + x = v1[k+1]; + else + x = v1[k-1]+1; + y = x - k; + footstep = x+","+y; + if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (!front) + footsteps[footstep] = d; + while (!done && x < text1.length && y < text2.length && text1.charAt(x) == text2.charAt(y)) { + x++; y++; + footstep = x+","+y; + if (front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (!front) + footsteps[footstep] = d; + } + v1[k] = x; + v_map1[d][x+","+y] = true; + if (done) { + // Front path ran over reverse path. + v_map2 = v_map2.slice(0, footsteps[footstep]+1); + var a = diff_path1(v_map1, text1.substring(0, x), text2.substring(0, y)); + return a.concat(diff_path2(v_map2, text1.substring(x), text2.substring(y))); + } + } + + // Walk the reverse path one step. + v_map2[d] = new Object(); + for (var k=-d; k<=d; k+=2) { + if (k == -d || k != d && v2[k-1] < v2[k+1]) + x = v2[k+1]; + else + x = v2[k-1]+1; + y = x - k; + footstep = (text1.length-x)+","+(text2.length-y); + if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (front) + footsteps[footstep] = d; + while (!done && x < text1.length && y < text2.length && text1.charAt(text1.length-x-1) == text2.charAt(text2.length-y-1)) { + x++; y++; + footstep = (text1.length-x)+","+(text2.length-y); + if (!front && (hasOwnProperty ? footsteps.hasOwnProperty(footstep) : (footsteps[footstep] !== undefined))) + done = true; + if (front) + footsteps[footstep] = d; + } + v2[k] = x; + v_map2[d][x+","+y] = true; + if (done) { + // Reverse path ran over front path. + v_map1 = v_map1.slice(0, footsteps[footstep]+1); + var a = diff_path1(v_map1, text1.substring(0, text1.length-x), text2.substring(0, text2.length-y)); + return a.concat(diff_path2(v_map2, text1.substring(text1.length-x), text2.substring(text2.length-y))); + } + } + } + // Number of diffs equals number of characters, no commonality at all. + return null; +} + + +function diff_path1(v_map, text1, text2) { + // Work from the middle back to the start to determine the path. + var path = []; + var x = text1.length; + var y = text2.length; + var last_op = null; + for (var d=v_map.length-2; d>=0; d--) { + while(1) { + if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { + x--; + if (last_op === -1) + path[0][1] = text1.charAt(x) + path[0][1]; + else + path.unshift([-1, text1.charAt(x)]); + last_op = -1; + break; + } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { + y--; + if (last_op === 1) + path[0][1] = text2.charAt(y) + path[0][1]; + else + path.unshift([1, text2.charAt(y)]); + last_op = 1; + break; + } else { + x--; + y--; + //if (text1.charAt(x) != text2.charAt(y)) + // return alert("No diagonal. Can't happen. (diff_path1)"); + if (last_op === 0) + path[0][1] = text1.charAt(x) + path[0][1]; + else + path.unshift([0, text1.charAt(x)]); + last_op = 0; + } + } + } + return path; +} + + +function diff_path2(v_map, text1, text2) { + // Work from the middle back to the end to determine the path. + var path = []; + var x = text1.length; + var y = text2.length; + var last_op = null; + for (var d=v_map.length-2; d>=0; d--) { + while(1) { + if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty((x-1)+","+y) : (v_map[d][(x-1)+","+y] !== undefined)) { + x--; + if (last_op === -1) + path[path.length-1][1] += text1.charAt(text1.length-x-1); + else + path.push([-1, text1.charAt(text1.length-x-1)]); + last_op = -1; + break; + } else if (v_map[d].hasOwnProperty ? v_map[d].hasOwnProperty(x+","+(y-1)) : (v_map[d][x+","+(y-1)] !== undefined)) { + y--; + if (last_op === 1) + path[path.length-1][1] += text2.charAt(text2.length-y-1); + else + path.push([1, text2.charAt(text2.length-y-1)]); + last_op = 1; + break; + } else { + x--; + y--; + //if (text1.charAt(text1.length-x-1) != text2.charAt(text2.length-y-1)) + // return alert("No diagonal. Can't happen. (diff_path2)"); + if (last_op === 0) + path[path.length-1][1] += text1.charAt(text1.length-x-1); + else + path.push([0, text1.charAt(text1.length-x-1)]); + last_op = 0; + } + } + } + return path; +} + + +function diff_prefix(text1, text2) { + // Trim off common prefix + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + while(pointermin < pointermid) { + if (text1.substring(0, pointermid) == text2.substring(0, pointermid)) + pointermin = pointermid; + else + pointermax = pointermid; + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + var commonprefix = text1.substring(0, pointermid); + text1 = text1.substring(pointermid); + text2 = text2.substring(pointermid); + return [text1, text2, commonprefix]; +} + + +function diff_suffix(text1, text2) { + // Trim off common suffix + var pointermin = 0; + var pointermax = Math.min(text1.length, text2.length); + var pointermid = pointermax; + while(pointermin < pointermid) { + if (text1.substring(text1.length-pointermid) == text2.substring(text2.length-pointermid)) + pointermin = pointermid; + else + pointermax = pointermid; + pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin); + } + var commonsuffix = text1.substring(text1.length-pointermid); + text1 = text1.substring(0, text1.length-pointermid); + text2 = text2.substring(0, text2.length-pointermid); + return [text1, text2, commonsuffix]; +} + + +function diff_halfmatch(text1, text2) { + // Do the two texts share a substring which is at least half the length of the longer text? + var longtext = text1.length > text2.length ? text1 : text2; + var shorttext = text1.length > text2.length ? text2 : text1; + if (longtext.length < 10 || shorttext.length < 1) + return null; // Pointless. + + function diff_halfmatch_i(longtext, shorttext, i) { + // Start with a 1/4 length substring at position i as a seed. + var seed = longtext.substring(i, i+Math.floor(longtext.length/4)); + var j = -1; + var best_common = ''; + var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b; + while ((j = shorttext.indexOf(seed, j+1)) != -1) { + var my_prefix = diff_prefix(longtext.substring(i), shorttext.substring(j)); + var my_suffix = diff_suffix(longtext.substring(0, i), shorttext.substring(0, j)); + if (best_common.length < (my_suffix[2] + my_prefix[2]).length) { + best_common = my_suffix[2] + my_prefix[2]; + best_longtext_a = my_suffix[0]; + best_longtext_b = my_prefix[0]; + best_shorttext_a = my_suffix[1]; + best_shorttext_b = my_prefix[1]; + } + } + if (best_common.length >= longtext.length/2) + return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common]; + else + return null; + } + + // First check if the second quarter is the seed for a half-match. + var hm1 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/4)); + // Check again based on the third quarter. + var hm2 = diff_halfmatch_i(longtext, shorttext, Math.ceil(longtext.length/2)); + var hm; + if (!hm1 && !hm2) + return null; + else if (!hm2) + hm = hm1; + else if (!hm1) + hm = hm2; + else // Both matched. Select the longest. + hm = hm1[4].length > hm2[4].length ? hm1 : hm2; + + // A half-match was found, sort out the return data. + if (text1.length > text2.length) { + var text1_a = hm[0]; + var text1_b = hm[1]; + var text2_a = hm[2]; + var text2_b = hm[3]; + } else { + var text2_a = hm[0]; + var text2_b = hm[1]; + var text1_a = hm[2]; + var text1_b = hm[3]; + } + var mid_common = hm[4]; + return [text1_a, text1_b, text2_a, text2_b, mid_common]; +} + + +function diff_cleanup_semantic(diff) { + // Reduce the number of edits by eliminating semantically trivial equalities. + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var lastequality = null; // Always equal to equalities[equalities.length-1][1] + var pointer = 0; // Index of current position. + var length_changes1 = 0; // Number of characters that changed prior to the equality. + var length_changes2 = 0; // Number of characters that changed after the equality. + while (pointer < diff.length) { + if (diff[pointer][0] == 0) { // equality found + equalities.push(pointer); + length_changes1 = length_changes2; + length_changes2 = 0; + lastequality = diff[pointer][1]; + } else { // an insertion or deletion + length_changes2 += diff[pointer][1].length; + if (lastequality != null && (lastequality.length <= length_changes1) && (lastequality.length <= length_changes2)) { + //alert("Splitting: '"+lastequality+"'"); + diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record + diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. + equalities.pop(); // Throw away the equality we just deleted; + equalities.pop(); // Throw away the previous equality; + pointer = equalities.length ? equalities[equalities.length-1] : -1; + length_changes1 = 0; // Reset the counters. + length_changes2 = 0; + lastequality = null; + changes = true; + } + } + pointer++; + } + + if (changes) + diff_cleanup_merge(diff); +} + + +function diff_cleanup_efficiency(diff) { + // Reduce the number of edits by eliminating operationally trivial equalities. + var changes = false; + var equalities = []; // Stack of indices where equalities are found. + var lastequality = ''; // Always equal to equalities[equalities.length-1][1] + var pointer = 0; // Index of current position. + var pre_ins = false; // Is there an insertion operation before the last equality. + var pre_del = false; // Is there an deletion operation before the last equality. + var post_ins = false; // Is there an insertion operation after the last equality. + var post_del = false; // Is there an deletion operation after the last equality. + while (pointer < diff.length) { + if (diff[pointer][0] == 0) { // equality found + if (diff[pointer][1].length < DIFF_EDIT_COST && (post_ins || post_del)) { + // Candidate found. + equalities.push(pointer); + pre_ins = post_ins; + pre_del = post_del; + lastequality = diff[pointer][1]; + } else { + // Not a candidate, and can never become one. + equalities = []; + lastequality = ''; + } + post_ins = post_del = false; + } else { // an insertion or deletion + if (diff[pointer][0] == -1) + post_del = true; + else + post_ins = true; + // Five types to be split: + // ABXYCD + // AXCD + // ABXC + // AXCD + // ABXC + if (lastequality && ((pre_ins && pre_del && post_ins && post_del) || ((lastequality.length < DIFF_EDIT_COST/2) && (pre_ins + pre_del + post_ins + post_del) == 3))) { + //alert("Splitting: '"+lastequality+"'"); + diff.splice(equalities[equalities.length-1], 0, [-1, lastequality]); // Duplicate record + diff[equalities[equalities.length-1]+1][0] = 1; // Change second copy to insert. + equalities.pop(); // Throw away the equality we just deleted; + lastequality = ''; + if (pre_ins && pre_del) { + // No changes made which could affect previous entry, keep going. + post_ins = post_del = true; + equalities = []; + } else { + equalities.pop(); // Throw away the previous equality; + pointer = equalities.length ? equalities[equalities.length-1] : -1; + post_ins = post_del = false; + } + changes = true; + } + } + pointer++; + } + + if (changes) + diff_cleanup_merge(diff); +} + + +function diff_cleanup_merge(diff) { + // Reorder and merge like edit sections. Merge equalities. + // Any edit section can move as long as it doesn't cross an equality. + diff.push([0, '']); // Add a dummy entry at the end. + var pointer = 0; + var count_delete = 0; + var count_insert = 0; + var text_delete = ''; + var text_insert = ''; + var record_insert, record_delete; + var my_xfix; + while(pointer < diff.length) { + if (diff[pointer][0] == 1) { + count_insert++; + text_insert += diff[pointer][1]; + pointer++; + } else if (diff[pointer][0] == -1) { + count_delete++; + text_delete += diff[pointer][1]; + pointer++; + } else { // Upon reaching an equality, check for prior redundancies. + if (count_delete > 1 || count_insert > 1) { + if (count_delete > 1 && count_insert > 1) { + // Factor out any common prefixies. + my_xfix = diff_prefix(text_insert, text_delete); + if (my_xfix[2] != '') { + if ((pointer - count_delete - count_insert) > 0 && diff[pointer - count_delete - count_insert - 1][0] == 0) { + text_insert = my_xfix[0]; + text_delete = my_xfix[1]; + diff[pointer - count_delete - count_insert - 1][1] += my_xfix[2]; + } + } + // Factor out any common suffixies. + my_xfix = diff_suffix(text_insert, text_delete); + if (my_xfix[2] != '') { + text_insert = my_xfix[0]; + text_delete = my_xfix[1]; + diff[pointer][1] = my_xfix[2] + diff[pointer][1]; + } + } + // Delete the offending records and add the merged ones. + if (count_delete == 0) + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [1, text_insert]); + else if (count_insert == 0) + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete]); + else + diff.splice(pointer - count_delete - count_insert, count_delete + count_insert, [-1, text_delete], [1, text_insert]); + pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1; + } else if (pointer != 0 && diff[pointer-1][0] == 0) { + // Merge this equality with the previous one. + diff[pointer-1][1] += diff[pointer][1]; + diff.splice(pointer, 1); + } else { + pointer++; + } + count_insert = 0; + count_delete = 0; + text_delete = ''; + text_insert = ''; + } + } + if (diff[diff.length-1][1] == '') + diff.pop(); // Remove the dummy entry at the end. +} + + +function diff_addindex(diff) { + // Add an index to each tuple, represents where the tuple is located in text2. + // e.g. [[-1, 'h', 0], [1, 'c', 0], [0, 'at', 1]] + var i = 0; + for (var x=0; x1, 5->8 + var chars1 = 0; + var chars2 = 0; + var last_chars1 = 0; + var last_chars2 = 0; + for (var x=0; x loc) // Overshot the location. + break; + last_chars1 = chars1; + last_chars2 = chars2; + } + if (diff.length != x && diff[x][0] == -1) // The location was deleted. + return last_chars2; + // Add the remaining character length. + return last_chars2 + (loc - last_chars1); +} + + +function diff_prettyhtml(diff) { + // Convert a diff array into a pretty HTML report. + diff_addindex(diff); + var html = ''; + for (var x=0; x/g, ">"); + t = t.replace(/\n/g, "¶
"); + if (m == -1) + html += ""+t+""; + else if (m == 1) + html += ""+t+""; + else + html += ""+t+""; + } + return html; +} + + + ////////////////////////////////////////////////////////////////////// + // Match // +////////////////////////////////////////////////////////////////////// + + +function match_getmaxbits() { + // Compute the number of bits in an int. + // The normal answer for JavaScript is 32. + var maxbits = 0; + var oldi = 1; + var newi = 2; + while (oldi != newi) { + maxbits++; + oldi = newi; + newi = newi << 1; + } + return maxbits; +} +var MATCH_MAXBITS = match_getmaxbits(); + + +function match_main(text, pattern, loc) { + // Locate the best instance of 'pattern' in 'text' near 'loc'. + loc = Math.max(0, Math.min(loc, text.length-pattern.length)); + if (text == pattern) { + // Shortcut (potentially not guaranteed by the algorithm) + return 0; + } else if (text.length == 0) { + // Nothing to match. + return null; + } else if (text.substring(loc, loc + pattern.length) == pattern) { + // Perfect match at the perfect spot! (Includes case of null pattern) + return loc; + } else { + // Do a fuzzy compare. + var match = match_bitap(text, pattern, loc); + return match; + } +} + + +function match_bitap(text, pattern, loc) { + // Locate the best instance of 'pattern' in 'text' near 'loc' using the Bitap algorithm. + if (pattern.length > MATCH_MAXBITS) + return alert("Pattern too long for this browser."); + + // Initialise the alphabet. + var s = match_alphabet(pattern); + + var score_text_length = text.length; + // Coerce the text length between reasonable maximums and minimums. + score_text_length = Math.max(score_text_length, MATCH_MINLENGTH); + score_text_length = Math.min(score_text_length, MATCH_MAXLENGTH); + + function match_bitap_score (e, x) { + // Compute and return the score for a match with e errors and x location. + var d = Math.abs(loc-x); + return (e / pattern.length / MATCH_BALANCE) + (d / score_text_length / (1.0 - MATCH_BALANCE)); + } + + // Highest score beyond which we give up. + var score_threshold = MATCH_THRESHOLD; + // Is there a nearby exact match? (speedup) + var best_loc = text.indexOf(pattern, loc); + if (best_loc != -1) + score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); + // What about in the other direction? (speedup) + best_loc = text.lastIndexOf(pattern, loc+pattern.length); + if (best_loc != -1) + score_threshold = Math.min(match_bitap_score(0, best_loc), score_threshold); + + // Initialise the bit arrays. + var r = Array(); + var d = -1; + var matchmask = Math.pow(2, pattern.length-1); + best_loc = null; + + var bin_min, bin_mid; + var bin_max = Math.max(loc+loc, text.length); + var last_rd; + for (var d=0; d=start; j--) { + // The alphabet (s) is a sparse hash, so the following lines generate warnings. + if (d == 0) // First pass: exact match. + rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)]; + else // Subsequent passes: fuzzy match. + rd[j] = ((rd[j+1] << 1) | 1) & s[text.charAt(j)] | ((last_rd[j+1] << 1) | 1) | ((last_rd[j] << 1) | 1) | last_rd[j+1]; + if (rd[j] & matchmask) { + var score = match_bitap_score(d, j); + // This match will almost certainly be better than any existing match. But check anyway. + if (score <= score_threshold) { + // Told you so. + score_threshold = score; + best_loc = j; + if (j > loc) { + // When passing loc, don't exceed our current distance from loc. + start = Math.max(0, loc - (j - loc)); + } else { + // Already passed loc, downhill from here on in. + break; + } + } + } + } + if (match_bitap_score(d+1, loc) > score_threshold) // No hope for a (better) match at greater error levels. + break; + last_rd = rd; + } + return best_loc; +} + + +function match_alphabet(pattern) { + // Initialise the alphabet for the Bitap algorithm. + var s = Object(); + for (var i=0; i 2) { + diff_cleanup_semantic(diff); + diff_cleanup_efficiency(diff); + } + } + if (diff.length == 0) + return []; // Get rid of the null case. + var patches = []; + var patch = new patch_obj(); + var char_count1 = 0; // Number of characters into the text1 string. + var char_count2 = 0; // Number of characters into the text2 string. + var last_type = null; + var prepatch_text = text1; // Recreate the patches to determine context info. + var postpatch_text = text1; + for (var x=0; x= 2*PATCH_MARGIN) { + // Time for a new patch. + if (patch.diffs.length != 0) { + patch_addcontext(patch, prepatch_text); + patches.push(patch); + var patch = new patch_obj(); + last_type = null; + prepatch_text = postpatch_text; + } + } + + // Update the current character count. + if (diff_type != 1) + char_count1 += diff_text.length; + if (diff_type != -1) + char_count2 += diff_text.length; + } + // Pick up the leftover patch if not empty. + if (patch.diffs.length != 0) { + patch_addcontext(patch, prepatch_text); + patches.push(patch); + } + + return patches; +} + + +function patch_apply(patches, text) { + // Merge a set of patches onto the text. + // Return a patched text, as well as a list of true/false values indicating which patches were applied. + patch_splitmax(patches); + var results = []; + var delta = 0; + var expected_loc, start_loc; + var text1, text2; + var diff, mod, index1, index2; + for (var x=0; x MATCH_MAXBITS) { + bigpatch = patches[x]; + // Remove the big old patch. + patches.splice(x, 1); + patch_size = MATCH_MAXBITS; + start1 = bigpatch.start1; + start2 = bigpatch.start2; + precontext = ''; + while (bigpatch.diffs.length != 0) { + // Create one of several smaller patches. + patch = new patch_obj(); + empty = true; + patch.start1 = start1 - precontext.length; + patch.start2 = start2 - precontext.length; + if (precontext != '') { + patch.length1 = patch.length2 = precontext.length; + patch.diffs.push([0, precontext]); + } + while (bigpatch.diffs.length != 0 && patch.length1 < patch_size - PATCH_MARGIN) { + diff_type = bigpatch.diffs[0][0]; + diff_text = bigpatch.diffs[0][1]; + if (diff_type == 1) { + // Insertions are harmless. + patch.length2 += diff_text.length; + start2 += diff_text.length; + patch.diffs.push(bigpatch.diffs.shift()); + empty = false; + } else { + // Deletion or equality. Only take as much as we can stomach. + diff_text = diff_text.substring(0, patch_size - patch.length1 - PATCH_MARGIN); + patch.length1 += diff_text.length; + start1 += diff_text.length; + if (diff_type == 0) { + patch.length2 += diff_text.length; + start2 += diff_text.length; + } else { + empty = false; + } + patch.diffs.push([diff_type, diff_text]); + if (diff_text == bigpatch.diffs[0][1]) + bigpatch.diffs.shift(); + else + bigpatch.diffs[0][1] = bigpatch.diffs[0][1].substring(diff_text.length); + } + } + // Compute the head context for the next patch. + precontext = patch.text2(); + precontext = precontext.substring(precontext.length - PATCH_MARGIN); + // Append the end context for this patch. + postcontext = bigpatch.text1().substring(0, PATCH_MARGIN); + if (postcontext != '') { + patch.length1 += postcontext.length; + patch.length2 += postcontext.length; + if (patch.diffs.length > 0 && patch.diffs[patch.diffs.length-1][0] == 0) + patch.diffs[patch.diffs.length-1][1] += postcontext; + else + patch.diffs.push([0, postcontext]); + } + if (!empty) + patches.splice(x++, 0, patch); + } + } + } +} + + +function patch_totext(patches) { + // Take a list of patches and return a textual representation. + var text = ''; + for (var x=0; x#+*g!o%lCtD@cz8l? zx@C{wCodDf2?TZ&Ww46PQZJ;6HbgF) J&uDZ606X)4Hvs?u literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/directionality/images/rtl.gif b/admin/scripts/tiny_mce/plugins/directionality/images/rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..0348f9965669dd9cfba3c69d71d20ea3928e46fe GIT binary patch literal 153 zcmV;K0A~M3Nk%w1VH5xq0K*Lc6&4jPQl5&6in_+zPfbr=jNa1D%1Uy=K0H3Nv#n}w zX?>#YH($5z?CQtO-2eapA^8LW000jFEC2ui02BZe000C=@X1N5y*TU5yU$K@847`% z$mA5FC73`GOG9yB3IYHR|EvoJCQ;(~3X4J@W03VE4#r`rF-`^yYR0P4Vz}3jcuX#v H%@F`Q*OWXP literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/directionality/langs/en.js b/admin/scripts/tiny_mce/plugins/directionality/langs/en.js new file mode 100644 index 0000000..a1db297 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/directionality/langs/en.js @@ -0,0 +1,6 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +directionality_ltr_desc : 'Direction left to right', +directionality_rtl_desc : 'Direction right to left' +}); diff --git a/admin/scripts/tiny_mce/plugins/directionality/readme.txt b/admin/scripts/tiny_mce/plugins/directionality/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/directionality/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/emotions/editor_plugin.js b/admin/scripts/tiny_mce/plugins/emotions/editor_plugin.js new file mode 100644 index 0000000..4d81e5a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/emotions/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('emotions');var TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"emotions":return tinyMCE.getButtonHTML(cn,'lang_emotions_desc','{$pluginurl}/images/emotions.gif','mceEmotion')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=250;template['height']=160;template['width']+=tinyMCE.getLang('lang_emotions_delta_width',0);template['height']+=tinyMCE.getLang('lang_emotions_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true}return false}};tinyMCE.addPlugin('emotions',TinyMCE_EmotionsPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/emotions/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/emotions/editor_plugin_src.js new file mode 100644 index 0000000..c7d60cf --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/emotions/editor_plugin_src.js @@ -0,0 +1,63 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('emotions'); + +// Plucin static class +var TinyMCE_EmotionsPlugin = { + getInfo : function() { + return { + longname : 'Emotions', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + /** + * Returns the HTML contents of the emotions control. + */ + getControlHTML : function(cn) { + switch (cn) { + case "emotions": + return tinyMCE.getButtonHTML(cn, 'lang_emotions_desc', '{$pluginurl}/images/emotions.gif', 'mceEmotion'); + } + + return ""; + }, + + /** + * Executes the mceEmotion command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceEmotion": + var template = new Array(); + + template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme + template['width'] = 250; + template['height'] = 160; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_emotions_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_emotions_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +// Register plugin +tinyMCE.addPlugin('emotions', TinyMCE_EmotionsPlugin); diff --git a/admin/scripts/tiny_mce/plugins/emotions/emotions.htm b/admin/scripts/tiny_mce/plugins/emotions/emotions.htm new file mode 100644 index 0000000..fca8ffa --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/emotions/emotions.htm @@ -0,0 +1,40 @@ + + + {$lang_emotions_title} + + + + + +
+
{$lang_emotions_title}:

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang_emotions_cool}{$lang_emotions_cry}{$lang_emotions_embarassed}{$lang_emotions_foot_in_mouth}
{$lang_emotions_frown}{$lang_emotions_innocent}{$lang_emotions_kiss}{$lang_emotions_laughing}
{$lang_emotions_money_mouth}{$lang_emotions_sealed}{$lang_emotions_smile}{$lang_emotions_surprised}
{$lang_emotions_tongue-out}{$lang_emotions_undecided}{$lang_emotions_wink}{$lang_emotions_yell}
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/emotions.gif b/admin/scripts/tiny_mce/plugins/emotions/images/emotions.gif new file mode 100644 index 0000000000000000000000000000000000000000..a39ed8ec3807e9da5725bfffc1a9e64694156d7a GIT binary patch literal 319 zcmV-F0l@x8Nk%w1VH5xq0K@SR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UVAU=FH^0ssI2A^8LW0018VEC2ui02BZe000HN;3tk`X`W~*8ky&1hAI-vg-8-| zEks&5h|Pq-m~0S^%E^$BOfDB9bRtQ_N((2Wp&)XLl10f-*kCXU#W{W66t1ESVsh>@ z>UYcpks)Qz7z_^&90LO!h#O)fe}agQh=&u4aR>|p9*~G00}m5@BV-I50v!p62^|6) z3~wY94jY3V0JQ)egBuPMV+pbk4gvxWxmG6{2?&9M3>XLr8Yu=21x7*z4sa+G1{w|y R8V0;FA_3+BKx}s1_F$4FCWDA^8LW0018VEC2ui01^Na000Hw;3tYzX_jM3Qpv$_M?zI9i5=0S zX-{-uv=l3%&P0s%m9Ox_a(m_c|u z01g3U0`Wll5)poVdma=N8y<3f0Sf~hXmTC}2oxMW4FdxUj+z4<0}lrX2nP=qkDRIt z9Ge*(qzMrj3jrIOjvI{`5eWzt3`G_T8yChG8w(a19SkK12@M(+799Zr9n=~PzBCmA z5)BU-)YKUd4H5!D9|!^o9kWIe9SH(WDHRk92}DZ?3})2$P@$55g90f0N)ZA8JID5J Aw*UYD literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-cry.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-cry.gif new file mode 100644 index 0000000000000000000000000000000000000000..74d897a4f6d22e814e2b054e98b8a75fb464b4be GIT binary patch literal 329 zcmV-P0k-}}Nk%w1VG;lm0Mr-&E)xPSit@9T3%;vR+|V+?t0A(pllJjXrMl7n=_A_a za^B+Su$LjvyC3@TIQZNZa##w=!k(SO^P#bO*w(eU#;{U83XFCU_V)J5wrb+;g2vkN z#>U24qVoOvY5)KLA^8LW0018VEC2ui01^Na000HX;3tY$X_jM3QUfCh%s^o(nF++< zc?Th6v=oL>*by8K!mhvwelUXuuW&&U9iGO3hM@>Njw{l^#0q9mWpcefdI;O$;efnY zkd~@r-o$*74FCWI1%d((4+jDz0va0>69^fI6%`W{8w!gU1pyL>prH>E0R<%k6Aq%H z4ij+^9TEwM5P}eh2@)L<~6+>@EpxfA0YrcPNsSu literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-embarassed.gif new file mode 100644 index 0000000000000000000000000000000000000000..963a96b8a7593b1d8bcbab073abe5ee4e539dbf6 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VG;lm0MrryDh>j~yq&6%75dW~z^P39(NxsGDE{UkxtkIEq(S-a zRKlwv+S=Lr?>hbYY~sQ?c3T&ZcN_Nh_EU3s(>Io6B&>WW`@bsw**)Ocy1bht z{*G6|uwwqUQ2+n{A^8LW0018VEC2ui01^Na000HZ;3tYwX_jM3YQ!c88=*-m*&&bO zILd=`w3KAC;8hxpif*w9ek6oqV-Z0L77fROK$BSR@5BAv-%C>6y>>#+D4e#&nz^qMDItlpp zTG728+|V&?R13PIEBW(C`uh6d*t-1sZ^XQv;oDD}iYLOV7uVO;{`xl4#4tJ{0;h@! z>)kfFn;iS@Hvj+tA^8LW0018VEC2ui01^Na000Hm;3tYuX_jM3Mo7199TGt*Nf;R= zNmOPKwA8_2Q6MTDP6eT`I1VESVj-zGIG(JdB3U44kcdI@;AAq{Gv^^O%%ltj2GdB) z>vIL;d*~=0a|w1Bf^!cF9R~+vb94;_0}TxWlnMrlj2MuVoSYAreF`3(0|pHS8VLgr zi3bP_qZ;q#>Sw62=mns-On=0wransPVevT^YK{Dy(0YY zH)vE6x0?;Wqb>gZas1^OT0si>`ugD5y87}*#H$s=yq(wA*8cf7{`y+(+9J7|9QfT7 z`ROHiU=Y&6FaQ7mA^8LW0018VEC2ui01^Na000Hi;3tYvX_jM3N`@u~nju9hSuh^r zIEcp-wA7(NL0~2d#RP+(G!CPPA>o*KJjv_CkucCA5=K?AfF#RG2V*8BU@jL304|4P z2;PGRF@bj$et;Jf2pR_mVsIA<85|n}kQ*Bq42Ovqj*yy>6P0=h3X&9Z01yyk~2N4w%7#RW^55W%`0vQ+-6(y_*2pqz~90*;x9}yM}%$UI(7t#$D mK_3Se1{4HKM+6iG7EmeH6$V631{L5n)#CyC0qx-*Apkoyg?w!Q literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-innocent.gif new file mode 100644 index 0000000000000000000000000000000000000000..334d49e0e60f2997c9ba24071764f95d9e08a5cc GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryI4TI-%dP0m5~*+Y`T~ z7Rth){q{I_X%*S48uRZ|(b3V&wIKTX`u+WJzo<^$#wuY;3W|Cf{O29IkTAcaE&lpe z+P*^H)-tknA^-pYA^8LW0018VEC2ui01^Na000He;3tYwX_n)75QgVvNQ`6#5gcMm zEEG~blgXokptKAJgCU?%JT?yos!R6cPtcQWh2siHlNI2L}ifQhgX02^InZ2?-ktkqVRyZJY^Trk|lv zovp437?1~d46O)?2(1i+2NDYk8<+_Kil!K!3njA^!I#dL8x<729}*B65mC=m5gHH@ iDi9P3f*VjB3KS4HDb_qqRul{0DIT=Nk%w1VG;lm0Mrx!QauaC#>Vb6G=_5=^YB^9wrc376Sb5I-qJGf@9vZ# z5WlKU(!eVB+7tfnDXp0zyB`?BZ5IChalob*`uh6d*t+@dKGHcU+L|83yq*5~IoH?L zy`?Gp<{bX|SpWb4A^8LW0018VEC2ui01^Na000Hg;3tYyX_jM3R?Bl7&r(q;SsVx< zNd$5fv{ZsKA$SlL3&KN~a1tZRf*~1Ltkx9~2uL3&z-yb0WJDRY082|tP literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-laughing.gif new file mode 100644 index 0000000000000000000000000000000000000000..1606c119e75678c4031f384e0d50849906e8f533 GIT binary patch literal 344 zcmV-e0jK^)Nk%w1VG;lm0MruzQauf>s;1-69HWK?p_PpF=Pd8~Ygtcnp*fHAL z**;z>w3iC}`fmL6IkKB1N;3zEa}&zKpsu1;_V)HocR5-{J~BcYvE`YXhBnc@CfU=! za(Ec zG>66zv=rqr;2j)}gKqE$ekcSD?}0=WLB?AWp85)qALd+P=4)6X4oXy{bw2>K^d$ z@6ERvva+(4ib~41YUkTEn1&#?rzrOHT>1I=Y*h`+%*@WtPUPg|!@EEI_d5LgZ>^Og z-qyCjsu$J9F8}}lA^8LW0018VEC2ui01^Na000HT;3tYxX_jM37RWXX8&XUv=@{Oj zX@_Sxw3H&!kzgQ?2LvPOL=>Y5VxieY9+_+eqFEql6OKWXd3Ze8Ggf2Zln@U|mI9d9 zGm^(wVUTA5cYs-V1`2#+a})^z6chrF5`~8k5e6@pmkW`GeGw<069yTQaGnH)s0suV zR|pCd0ZtRCsjM9VB^L+~7X%f*zyuc%2p3=#ycf#L%McYo9|{Z&5D^#_78qL%3{WW( X7Xb)FP6z?UH6ODVz!ev-DIowmgll^P literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-smile.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-smile.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6a9e60d5ddd1243fbbf2197b4dc6cd9c1b58b93 GIT binary patch literal 345 zcmV-f0jB;(Nk%w1VG;lm0MrlwCJF+^#>SR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UVAU=FH^0ssI2A^8LW0018VEC2ui01^Na000Hn;3tYuX_jM3Mn>j&nGr!MNh}v4 zNyxPjwA7*EKx`%q#$Vl9SM>N9ReH-cn1&^4jYXf0KotqjT;UWC94U(4-NtX4#i!%9}pHA2?&dg3>XLr r8Wuqx2Nnhn1xrT-4h9xbDb^GQ8V(K`1{C5o)#U;I0p5-K5CQ-@9%ySnDDC*4*{OcpiwransPVevTQacIr@mkQp zCf(06s)_=>r7UYx48o@u`uh6d*t-7rH~ji<`P&oj;5Wp)o!8ga`SV6TA_BIW5#ZWV z{`*+__>9}pJ}3JDSl85wB_3Jn)Q o9|so(4+|I^92g4^1{Y8%(iR3pP6ig=HPPY$`~mLZA3^{CJDB=?L;wH) literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif new file mode 100644 index 0000000000000000000000000000000000000000..2075dc16058f1f17912167675ce5cfb9986fc71d GIT binary patch literal 328 zcmV-O0k{4~Nk%w1VG;lm0Mrx!CJF+^#>SU@3-{U*rx+Q^wrc$ABfqLn@9*x?z8(4X zSW-O=@){bmmI~g|GQXoP);cvj3|f1M8e@{G*!tYaiCEujj1NGxRN#6#tiCETo+{x{Hkzt z5k-kPvcD=V2nbmjCgL6k{uF&2nP-t0s;w<385Nx2oxDb z9T5Pp7qJl?3Kkh9oe2sCr5F$p7zPSlsUH*@54w*83=9Or4;w)r2pcU95(FL|1Th;< aDaRQH4;Tal7#Y$v#?=Au0pHUfApkpvZg^t= literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-undecided.gif new file mode 100644 index 0000000000000000000000000000000000000000..bef7e257303f8243c89787e7a7f9955dd1f112e2 GIT binary patch literal 337 zcmV-X0j~Z>Nk%w1VG;lm0MroxDi#99#>R?y8~4}{%C>6#>?OadPVevTr-=vi@LATn z4rERY-qJF+n+?CCE&B3D{{3Shh?>WT0o%`b%*Voqm`dL;(4F35y zc485^n;g!+Bme*aA^8LW0018VEC2ui01^Na000Hf;3tYvX_jM3N=AnuogqakNi<9X zK?&0kwA8^tNn{?C$|IAYI1ZzT!2>}iuMddFK#NEkRl!7%6brJAnUs;)XcnA}TNBSP zxQ9;SvEfwYeSaGd2^|LqU~(QF1qBxr3Ii7x84ZVt8wCTKoSYAqc?p`G2onnpk`IOl z1`HLGj}riN2p1K12N4z&8IBDc6tEWs859;JtRB6>lf+xO9}yT19toMv8wnl`7(pKg j7zPv!OGgY81{hE&(iR3pP6ig;HPPS!_yOwPA0Yrc)=Yf3 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-wink.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-wink.gif new file mode 100644 index 0000000000000000000000000000000000000000..9faf1aff8f4b28e02f4f414975fe1859c43b6b54 GIT binary patch literal 351 zcmV-l0igazNk%w1VG;lm0MrryC=CL}#>Sn03F^-g-qAA3wransPV?|t@9*x%vmQ`7 z4E*pcw3rOOq%3t@4*K#({N^40{c-yG`rz2Q!KfI-yq*61HrBop*VoqW<}&{JS@_x# zwwfH#!YTdnIsgCwA^8LW0018VEC2ui01^Na000Ht;3tYwX_jM3P6j6koH0o%Sun&A zMF+tYv=pL2IcOdp&qH&dG!P?+ArV0)J)O=Yk}%LD6Go&#@MJn3he8=)%%lWOM*#pN zEDD9iq9J$@90v~;83`GC4i0+{2OJ0pVtacF5E}yn8<`pmkCBv_pqZEtoPY-l0}P>= z3WE6cr`19U7DgF9{F}at6R35*Q5~ x2OgBy9tRx_7(pKh7zPvsOGgA01{hE&-4zBzP6id}HMp@0Krnzkbss_i06S`>cdh^c literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/emotions/images/smiley-yell.gif b/admin/scripts/tiny_mce/plugins/emotions/images/smiley-yell.gif new file mode 100644 index 0000000000000000000000000000000000000000..648e6e879123fe49beebbc1f3635141864a79a9c GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryG8O{K#>IbS7WCB_mWF$+hzY-{PWkp(?(Xf;zbH~P z3jOdj?W+^YwrakfE8fyG&5jTBz!3WS`fgM_;MltQ+c}4GO8)(E`S3`@yq&d~5!ct& z)v79NObo)O7XSbNA^8LW0018VEC2ui01^Na000He;3tYwX_jM3QifI(nn6h_*=Wyk zUB{y}v=qYOIUF#R3dZPhAVv~H;(|a2yN_5FH&J0|$eJ3kw4gj1Y?v5d#>LMV12^6BYy$1)ZKA zga!|m2?POz0R)f>4+aPl8KD{gz`+G_9vLMFQU?RU!8uyH9}*i52|cC+7S0YEK_3Vk i1|APfM-Ltb8&4_H83sg61{vHn(cc000qNZzApkp/g, '>'); + + var html = '' + title + ''; + + tinyMCE.execCommand('mceInsertContent', false, html); + tinyMCEPopup.close(); +} diff --git a/admin/scripts/tiny_mce/plugins/emotions/langs/en.js b/admin/scripts/tiny_mce/plugins/emotions/langs/en.js new file mode 100644 index 0000000..3cdd675 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/emotions/langs/en.js @@ -0,0 +1,22 @@ +// UK lang variables + +tinyMCE.addToLang('emotions',{ +title : 'Insert emotion', +desc : 'Emotions', +cool : 'Cool', +cry : 'Cry', +embarassed : 'Embarassed', +foot_in_mouth : 'Foot in mouth', +frown : 'Frown', +innocent : 'Innocent', +kiss : 'Kiss', +laughing : 'Laughing', +money_mouth : 'Money mouth', +sealed : 'Sealed', +smile : 'Smile', +surprised : 'Surprised', +tongue_out : 'Tongue out', +undecided : 'Undecided', +wink : 'Wink', +yell : 'Yell' +}); diff --git a/admin/scripts/tiny_mce/plugins/emotions/readme.txt b/admin/scripts/tiny_mce/plugins/emotions/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/emotions/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/flash/css/content.css b/admin/scripts/tiny_mce/plugins/flash/css/content.css new file mode 100644 index 0000000..843258b --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/css/content.css @@ -0,0 +1,7 @@ +.mceItemFlash { + border: 1px dotted #cc0000; + background-image: url('../images/flash.gif'); + background-position: center; + background-repeat: no-repeat; + background-color: #ffffcc; +} diff --git a/admin/scripts/tiny_mce/plugins/flash/css/flash.css b/admin/scripts/tiny_mce/plugins/flash/css/flash.css new file mode 100644 index 0000000..d3e88e1 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/css/flash.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current { + height: 100px; +} + +#width, #height { + width: 50px; +} + +#file { + width: 250px; +} diff --git a/admin/scripts/tiny_mce/plugins/flash/editor_plugin.js b/admin/scripts/tiny_mce/plugins/flash/editor_plugin.js new file mode 100644 index 0000000..ddcf35d --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('flash');var TinyMCE_FlashPlugin={getInfo:function(){return{longname:'Flash',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/flash',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(!tinyMCE.settings['flash_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/flash/css/content.css")},getControlHTML:function(cn){switch(cn){case"flash":return tinyMCE.getButtonHTML(cn,'lang_flash_desc','{$pluginurl}/images/flash.gif','mceFlash')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFlash":var name="",swffile="",swfwidth="",swfheight="",action="insert";var template=new Array();var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();template['file']='../../plugins/flash/flash.htm';template['width']=430;template['height']=175;template['width']+=tinyMCE.getLang('lang_flash_delta_width',0);template['height']+=tinyMCE.getLang('lang_flash_delta_height',0);if(focusElm!=null&&focusElm.nodeName.toLowerCase()=="img"){name=tinyMCE.getAttrib(focusElm,'class');if(name.indexOf('mceItemFlash')==-1)return true;swffile=tinyMCE.getAttrib(focusElm,'alt');if(tinyMCE.getParam('convert_urls'))swffile=eval(tinyMCE.settings['urlconverter_callback']+"(swffile, null, true);");swfwidth=tinyMCE.getAttrib(focusElm,'width');swfheight=tinyMCE.getAttrib(focusElm,'height');action="update"}tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes",swffile:swffile,swfwidth:swfwidth,swfheight:swfheight,action:action});return true}return false},cleanup:function(type,content){switch(type){case"insert_to_editor_dom":if(tinyMCE.getParam('convert_urls')){var imgs=content.getElementsByTagName("img");for(var i=0;i','gi'),'');content=content.replace(new RegExp('<[ ]*object','gi'),'','gi'),'');while((startPos=content.indexOf('',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos+6,endPos));embedList[embedList.length]=attribs}var index=0;while((startPos=content.indexOf('=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+=''+content.substring(endPos);content+=contentAfter;index++;startPos++}var index=0;while((startPos=content.indexOf('=embedList.length)break;var attribs=embedList[index];endPos=content.indexOf('>',startPos);endPos+=9;var contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+=''+content.substring(endPos);content+=contentAfter;index++;startPos++}break;case"get_from_editor":var startPos=-1;while((startPos=content.indexOf('',startPos);var attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos+4,endPos));if(attribs['class']!="mceItemFlash")continue;endPos+=2;var embedHTML='';var wmode=tinyMCE.getParam("flash_wmode","");var quality=tinyMCE.getParam("flash_quality","high");var menu=tinyMCE.getParam("flash_menu","false");embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';embedHTML+='';chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&tinyMCE.getAttrib(node,'class').indexOf('mceItemFlash')==0){tinyMCE.switchClass(editor_id+'_flash','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_flash','mceButtonNormal');return true},_parseAttributes:function(attribute_string){var attributeName="";var attributeValue="";var withInName;var withInValue;var attributes=new Array();var whiteSpaceRegExp=new RegExp('^[ \n\r\t]+','g');if(attribute_string==null||attribute_string.length<2)return null;withInName=withInValue=false;for(var i=0;i','gi'),''); + content = content.replace(new RegExp('<[ ]*object','gi'),'','gi'),''); + + // Parse all embed tags + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 6, endPos)); + embedList[embedList.length] = attribs; + } + + // Parse all object tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of object + endPos = content.indexOf('', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + // Parse all embed tags and replace them with images from the embed data + var index = 0; + while ((startPos = content.indexOf('= embedList.length) + break; + + var attribs = embedList[index]; + + // Find end of embed + endPos = content.indexOf('>', startPos); + endPos += 9; + + // Insert image + var contentAfter = content.substring(endPos); + content = content.substring(0, startPos); + content += '' + content.substring(endPos); + content += contentAfter; + index++; + + startPos++; + } + + break; + + case "get_from_editor": + // Parse all img tags and replace them with object+embed + var startPos = -1; + + while ((startPos = content.indexOf('', startPos); + var attribs = TinyMCE_FlashPlugin._parseAttributes(content.substring(startPos + 4, endPos)); + + // Is not flash, skip it + if (attribs['class'] != "mceItemFlash") + continue; + + endPos += 2; + + var embedHTML = ''; + var wmode = tinyMCE.getParam("flash_wmode", ""); + var quality = tinyMCE.getParam("flash_quality", "high"); + var menu = tinyMCE.getParam("flash_menu", "false"); + + // Insert object + embed + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + embedHTML += ''; + + // Insert embed/object chunk + chunkBefore = content.substring(0, startPos); + chunkAfter = content.substring(endPos); + content = chunkBefore + embedHTML + chunkAfter; + } + break; + } + + // Pass through to next handler in chain + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "IMG" && tinyMCE.getAttrib(node, 'class').indexOf('mceItemFlash') == 0) { + tinyMCE.switchClass(editor_id + '_flash', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_flash', 'mceButtonNormal'); + + return true; + }, + + // Private plugin internal functions + + _parseAttributes : function(attribute_string) { + var attributeName = ""; + var attributeValue = ""; + var withInName; + var withInValue; + var attributes = new Array(); + var whiteSpaceRegExp = new RegExp('^[ \n\r\t]+', 'g'); + + if (attribute_string == null || attribute_string.length < 2) + return null; + + withInName = withInValue = false; + + for (var i=0; i +
+ + +
+
+
+ {$lang_flash_general} + + + + + + + + + + + + + + +
+ + + + + +
 
+
 
+ +  x  + +
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/flash/images/flash.gif b/admin/scripts/tiny_mce/plugins/flash/images/flash.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb192e6ceda8d19ad8e7d08dd1cfde0aa72ead2a GIT binary patch literal 241 zcmVOzlLa+Za}7>m0&NpCfJ0FQc3~F7DE)S%o1)Qi1n@vxX46qnD4hRS-NE*Pw!4UvE=#^N( literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/flash/jscripts/flash.js b/admin/scripts/tiny_mce/plugins/flash/jscripts/flash.js new file mode 100644 index 0000000..4f08077 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/jscripts/flash.js @@ -0,0 +1,107 @@ +var url = tinyMCE.getParam("flash_external_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById("filebrowsercontainer").innerHTML = getBrowserHTML('filebrowser','file','flash','flash'); + + // Image list outsrc + var html = getFlashListHTML('filebrowser','file','flash','flash'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + var formObj = document.forms[0]; + var swffile = tinyMCE.getWindowArg('swffile'); + var swfwidth = '' + tinyMCE.getWindowArg('swfwidth'); + var swfheight = '' + tinyMCE.getWindowArg('swfheight'); + + if (swfwidth.indexOf('%')!=-1) { + formObj.width2.value = "%"; + formObj.width.value = swfwidth.substring(0,swfwidth.length-1); + } else { + formObj.width2.value = "px"; + formObj.width.value = swfwidth; + } + + if (swfheight.indexOf('%')!=-1) { + formObj.height2.value = "%"; + formObj.height.value = swfheight.substring(0,swfheight.length-1); + } else { + formObj.height2.value = "px"; + formObj.height.value = swfheight; + } + + formObj.file.value = swffile; + formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('action'), 'Insert', true); + + selectByValue(formObj, 'linklist', swffile); + + // Handle file browser + if (isVisible('filebrowser')) + document.getElementById('file').style.width = '230px'; + + // Auto select flash in list + if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) { + for (var i=0; i 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function insertFlash() { + var formObj = document.forms[0]; + var html = ''; + var file = formObj.file.value; + var width = formObj.width.value; + var height = formObj.height.value; + if (formObj.width2.value=='%') { + width = width + '%'; + } + if (formObj.height2.value=='%') { + height = height + '%'; + } + + if (width == "") + width = 100; + + if (height == "") + height = 100; + + html += '' + + '' + file + ''; + + tinyMCEPopup.execCommand("mceInsertContent", true, html); + tinyMCE.selectedInstance.repaint(); + + tinyMCEPopup.close(); +} diff --git a/admin/scripts/tiny_mce/plugins/flash/langs/en.js b/admin/scripts/tiny_mce/plugins/flash/langs/en.js new file mode 100644 index 0000000..67272bc --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/langs/en.js @@ -0,0 +1,11 @@ +// UK lang variables + +tinyMCE.addToLang('flash',{ +title : 'Insert / edit Flash Movie', +desc : 'Insert / edit Flash Movie', +file : 'Flash-File (.swf)', +size : 'Size', +list : 'Flash files', +props : 'Flash properties', +general : 'General' +}); diff --git a/admin/scripts/tiny_mce/plugins/flash/readme.txt b/admin/scripts/tiny_mce/plugins/flash/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/flash/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/fullpage/blank.htm b/admin/scripts/tiny_mce/plugins/fullpage/blank.htm new file mode 100644 index 0000000..1e5876a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/fullpage/blank.htm @@ -0,0 +1,9 @@ + + + blank_page + + + + + + diff --git a/admin/scripts/tiny_mce/plugins/fullpage/css/fullpage.css b/admin/scripts/tiny_mce/plugins/fullpage/css/fullpage.css new file mode 100644 index 0000000..4bc803f --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/fullpage/css/fullpage.css @@ -0,0 +1,172 @@ +/* Hide the advanced tab */ +#advanced_tab { + display: none; +} + +#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { + width: 280px; +} + +#doctype, #docencoding { + width: 200px; +} + +#langcode { + width: 30px; +} + +#bgimage { + width: 220px; +} + +#fontface { + width: 240px; +} + +#leftmargin, #rightmargin, #topmargin, #bottommargin { + width: 50px; +} + +.panel_wrapper div.current { + height: 400px; +} + +#stylesheet, #style { + width: 240px; +} + +/* Head list classes */ + +.headlistwrapper { + width: 100%; +} + +.addbutton, .removebutton, .moveupbutton, .movedownbutton { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; + display: block; + width: 20px; + height: 20px; +} + +.addbutton:hover, .removebutton:hover, .moveupbutton:hover, .movedownbutton:hover { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.addbutton { + background-image: url('../images/add.gif'); + float: left; + margin-right: 3px; +} + +.removebutton { + background-image: url('../images/remove.gif'); + float: left; +} + +.moveupbutton { + background-image: url('../images/move_up.gif'); + float: left; + margin-right: 3px; +} + +.movedownbutton { + background-image: url('../images/move_down.gif'); + float: left; +} + +.selected { + border: 1px solid #0A246A; + background-color: #B6BDD2; +} + +.toolbar { + width: 100%; +} + +#headlist { + width: 100%; + margin-top: 3px; + font-size: 11px; +} + +#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { + display: none; +} + +#addmenu { + position: absolute; + border: 1px solid gray; + display: none; + z-index: 100; + background-color: white; +} + +#addmenu a { + display: block; + width: 100%; + line-height: 20px; + text-decoration: none; + background-color: white; +} + +#addmenu a:hover { + background-color: #B6BDD2; + color: black; +} + +#addmenu span { + padding-left: 10px; + padding-right: 10px; +} + +#updateElementPanel { + display: none; +} + +#script_element .panel_wrapper div.current { + height: 108px; +} + +#style_element .panel_wrapper div.current { + height: 108px; +} + +#link_element .panel_wrapper div.current { + height: 140px; +} + +#element_script_value { + width: 100%; + height: 100px; +} + +#element_comment_value { + width: 100%; + height: 120px; +} + +#element_style_value { + width: 100%; + height: 100px; +} + +#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { + width: 250px; +} + +.updateElementButton { + margin-top: 3px; +} + +/* MSIE specific styles */ + +* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { + width: 22px; + height: 22px; +} diff --git a/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin.js b/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin.js new file mode 100644 index 0000000..b7faa84 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('fullpage');var TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"fullpage":return tinyMCE.getButtonHTML(cn,'lang_fullpage_desc','{$pluginurl}/images/fullpage.gif','mceFullPageProperties')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullPageProperties":var template=new Array();template['file']='../../plugins/fullpage/fullpage.htm';template['width']=430;template['height']=485+(tinyMCE.isOpera?5:0);template['width']+=tinyMCE.getLang('lang_fullpage_delta_width',0);template['height']+=tinyMCE.getLang('lang_fullpage_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceFullPageUpdate":TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));return true}return false},cleanup:function(type,content,inst){switch(type){case"insert_to_editor":var tmp=content.toLowerCase();var pos=tmp.indexOf('',pos);pos2=tmp.lastIndexOf('');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var docType=tinyMCE.getParam("fullpage_default_doctype",'');var enc=tinyMCE.getParam("fullpage_default_encoding",'utf-8');var title=tinyMCE.getParam("fullpage_default_title",'Untitled document');var lang=tinyMCE.getParam("fullpage_default_langcode",'en');var pi=tinyMCE.getParam("fullpage_default_xml_pi",true);var ff=tinyMCE.getParam("fullpage_default_font_family","");var fz=tinyMCE.getParam("fullpage_default_font_size","");var ds=tinyMCE.getParam("fullpage_default_style","");var dtc=tinyMCE.getParam("fullpage_default_text_color","");title=title.replace(/&/g,'&');title=title.replace(/\"/g,'"');title=title.replace(//g,'>');tmp='';if(pi)tmp+='\n';tmp+=docType+'\n';tmp+='\n';tmp+='\n';tmp+='\t'+title+'\n';tmp+='\t\n';tmp+='\n';tmp+='\n";break}return content},_addToHead:function(inst){var doc=inst.getDoc();var head=doc.getElementsByTagName("head")[0];var body=doc.body;var h=inst.fullpageTopContent;var e=doc.createElement("body");var nl,i,le,tmp;h=h.replace(/(\r|\n)/gi,'');h=h.replace(/<\?[^\>]*\>/gi,'');h=h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi,'');h=h.replace(//gi,'');h=h.replace(//gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/]*)\/>/gi,'
');h=h.replace(/0){body.style.cssText=tinyMCE.getAttrib(nl[0],'style');if((tmp=tinyMCE.getAttrib(nl[0],'leftmargin'))!=''&&body.style.marginLeft=='')body.style.marginLeft=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'rightmargin'))!=''&&body.style.marginRight=='')body.style.marginRight=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'topmargin'))!=''&&body.style.marginTop=='')body.style.marginTop=tmp+"px";if((tmp=tinyMCE.getAttrib(nl[0],'bottommargin'))!=''&&body.style.marginBottom=='')body.style.marginBottom=tmp+"px";body.dir=tinyMCE.getAttrib(nl[0],'dir');body.vLink=tinyMCE.getAttrib(nl[0],'vlink');body.aLink=tinyMCE.getAttrib(nl[0],'alink');body.link=tinyMCE.getAttrib(nl[0],'link');body.text=tinyMCE.getAttrib(nl[0],'text');if((tmp=tinyMCE.getAttrib(nl[0],'background'))!='')body.style.backgroundImage="url('"+tmp+"')";if((tmp=tinyMCE.getAttrib(nl[0],'bgcolor'))!='')body.style.backgroundColor=tmp}}};tinyMCE.addPlugin("fullpage",TinyMCE_FullPagePlugin);
\ No newline at end of file
diff --git a/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
new file mode 100644
index 0000000..846aa33
--- /dev/null
+++ b/admin/scripts/tiny_mce/plugins/fullpage/editor_plugin_src.js
@@ -0,0 +1,227 @@
+/**
+ * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('fullpage');
+
+var TinyMCE_FullPagePlugin = {
+	getInfo : function() {
+		return {
+			longname : 'Fullpage',
+			author : 'Moxiecode Systems AB',
+			authorurl : 'http://tinymce.moxiecode.com',
+			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
+			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+		};
+	},
+
+	getControlHTML : function(cn) {
+		switch (cn) {
+			case "fullpage":
+				return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');
+		}
+
+		return "";
+	},
+
+	execCommand : function(editor_id, element, command, user_interface, value) {
+		// Handle commands
+		switch (command) {
+			case "mceFullPageProperties":
+				var template = new Array();
+
+				template['file']   = '../../plugins/fullpage/fullpage.htm';
+				template['width']  = 430;
+				template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);
+
+				template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);
+				template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);
+
+				tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
+			return true;
+
+			case "mceFullPageUpdate":
+				TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));
+				return true;
+	   }
+
+	   // Pass to next handler in chain
+	   return false;
+	},
+
+	cleanup : function(type, content, inst) {
+		switch (type) {
+			case "insert_to_editor":
+				var tmp = content.toLowerCase();
+				var pos = tmp.indexOf('', pos);
+					pos2 = tmp.lastIndexOf('');
+					inst.fullpageTopContent = content.substring(0, pos + 1);
+					content = content.substring(pos + 1, pos2);
+					// tinyMCE.debug(inst.fullpageTopContent, content);
+				} else {
+					if (!inst.fullpageTopContent) {
+						var docType = tinyMCE.getParam("fullpage_default_doctype", '');
+						var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');
+						var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');
+						var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');
+						var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);
+						var ff = tinyMCE.getParam("fullpage_default_font_family", "");
+						var fz = tinyMCE.getParam("fullpage_default_font_size", "");
+						var ds = tinyMCE.getParam("fullpage_default_style", "");
+						var dtc = tinyMCE.getParam("fullpage_default_text_color", "");
+
+						// Xml encode it
+						title = title.replace(/&/g, '&');
+						title = title.replace(/\"/g, '"');
+						title = title.replace(//g, '>');
+
+						tmp = '';
+
+						// Make default chunk
+						if (pi)
+							tmp += '\n';
+
+						tmp += docType + '\n';
+						tmp += '\n';
+						tmp += '\n';
+						tmp += '\t' + title + '\n';
+						tmp += '\t\n';
+						tmp += '\n';
+						tmp += '\n";
+
+				break;
+		}
+
+		// Pass through to next handler in chain
+		return content;
+	},
+
+	// Private plugin internal methods
+
+	_addToHead : function(inst) {
+		var doc = inst.getDoc();
+		var head = doc.getElementsByTagName("head")[0];
+		var body = doc.body;
+		var h = inst.fullpageTopContent;
+		var e = doc.createElement("body");
+		var nl, i, le, tmp;
+
+		// Remove stuff we don't want
+		h = h.replace(/(\r|\n)/gi, '');
+		h = h.replace(/<\?[^\>]*\>/gi, '');
+		h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');
+		h = h.replace(//gi, '');
+		h = h.replace(//gi, '');
+		h = h.replace(/<(meta|base)[^>]*>/gi, '');
+
+		// Make link and style elements into pre
+		h = h.replace(/]*)\/>/gi, '
');
+		//h = h.replace(/]*)>(.*?)<\/style>/gi, '
$2
'); + + // Make body a div + h = h.replace(/ 0) { + body.style.cssText = tinyMCE.getAttrib(nl[0], 'style'); + + if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '') + body.style.marginLeft = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '') + body.style.marginRight = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '') + body.style.marginTop = tmp + "px"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '') + body.style.marginBottom = tmp + "px"; + + body.dir = tinyMCE.getAttrib(nl[0], 'dir'); + body.vLink = tinyMCE.getAttrib(nl[0], 'vlink'); + body.aLink = tinyMCE.getAttrib(nl[0], 'alink'); + body.link = tinyMCE.getAttrib(nl[0], 'link'); + body.text = tinyMCE.getAttrib(nl[0], 'text'); + + if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '') + body.style.backgroundImage = "url('" + tmp + "')"; + + if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '') + body.style.backgroundColor = tmp; + } + } +}; + +tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin); diff --git a/admin/scripts/tiny_mce/plugins/fullpage/fullpage.htm b/admin/scripts/tiny_mce/plugins/fullpage/fullpage.htm new file mode 100644 index 0000000..bc3708c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/fullpage/fullpage.htm @@ -0,0 +1,577 @@ + + + {$lang_fullpage_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_fullpage_meta_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
 
 
 
 
 
  + +
+
+ +
+ {$lang_fullpage_langprops} + + + + + + + + + + + + + + + + + + + + + + +
+ +
  + +
 
+ +
 
+
+
+ +
+
+ {$lang_fullpage_appearance_textprops} + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+
+ +
+ {$lang_fullpage_appearance_bgprops} + + + + + + + + + + +
+ + + + + +
 
+
+ + + + + +
 
+
+
+ +
+ {$lang_fullpage_appearance_marginprops} + + + + + + + + + + + + + + +
+
+ +
+ {$lang_fullpage_appearance_linkprops} + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
 
+
+ + + + + +
 
+
  
+
+ +
+ {$lang_fullpage_appearance_style} + + + + + + + + + + +
+ + + + +
 
+
+
+ +
+ + +
+ {$lang_fullpage_head_elements} + +
+
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+ {$lang_fullpage_meta_element} + + + + + + + + + + + + + + +
+ + +
+ +
+ {$lang_fullpage_title_element} + + + + + + +
+ + +
+ +
+ {$lang_fullpage_script_element} + + + +
+ +
+
+ + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+ +
+ +
+
+ + +
+ +
+ {$lang_fullpage_style_element} + + + +
+ +
+
+ + + + + + + + + +
+
+ +
+ +
+
+ + +
+ +
+ {$lang_fullpage_base_element} + + + + + + + + + + +
+ + +
+ + + +
+ {$lang_fullpage_comment_element} + + + + +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/fullpage/images/add.gif b/admin/scripts/tiny_mce/plugins/fullpage/images/add.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6291d97d06d183e7c232652ba356c6b842d7d9a GIT binary patch literal 893 zcmZ?wbhEHb6k!ly_|CwP(R)$bbIO7p|Gn}LStTqnh*(fC<3VKG#ej+n2^|-#6P8Ta z@WCKpfmOmL&-6`R`J1gG7AG`ZXjt*VI%Bg{!eWL|Fd70wIRq4cvM@3*h%)GaJORoR z3>;Am+8i<-8x|aF<`CA3Ik92k;YJ1qnFgK@B4Thrp~1JEONix!1>-@#E`E+bXFRs72yEl;u=C*h;@Hr@U=09#B|~@s literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/fullpage/images/fullpage.gif b/admin/scripts/tiny_mce/plugins/fullpage/images/fullpage.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ddefcd1fa10c5be38b06588166fb623e8bb5d5f GIT binary patch literal 632 zcmb7B-AhzK9KCBRTYhD@e$-}e6j{31t+r4ryM?Z6EOgmkww^{1+CHSApf(Vibluie zm`Lmr5d-ybL6AXF*Gw96(LQxv0_mmcgIIc+pa*-JuKfr7;CCL*;c$MOUwcQWv8mIm zd9@$f`Y5Fcp_DRgOEU&hnh={IA~97u;06>REubZltxO~cQ-t!_xtDsJ8wrOO$d)*x z%(MWO1Xw`FXmgSg&&DS8Ffd}!j3Y#tVFFA!vM9D0$#94;eJv0sm{3C5t^WHU4!Mxn za?+{D$(yMWGB$PL>W%sA+xdkhy6W7+C>LBRvMLc}Oe&B-*rse%@SG$KCG;OIFM_OM7d-<$AsiON9CG;5DeZbMt%IrFtIS_975=H_^-?VhMj-hE=}v!0_)E8pJ<+s zsJpi>*`KGm)tIEqSOp{HdjJ*U8U|XZC#WK0l&Ivr8rZEB1@Nuh|+_ceu6ai>s@^YPeJt zx;T*seDw{Xq1Z&*yN3;W?Dx-jcp&NPS_Z$a^$*@D^|vGf!No{Lu(P84^x4o5e;O{! I&(n_n1w5f4^8f$< literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/fullpage/images/move_down.gif b/admin/scripts/tiny_mce/plugins/fullpage/images/move_down.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bec71fffccb6a29968683ff723186351413cca9 GIT binary patch literal 194 zcmZ?wbhEHb6k!lyI3mSRFyVngzygDa4GtLx5;`sv%y>|+;DbZLhJ*1XMf-==d;U!~cMe2L&@eGyoYD7ykeM&wvUP zf3h$#Fi0`zfP_JIGO*e&Q0q&{oR_g`UC!$+H%5UY(K>!#_Z&E+&?U}zd4Wun;Q@U? k3zqPS+(#x!vcxnUIr8fg2iv4|9twK1&%Y?qW?`@f0E6pLT>t<8 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/fullpage/images/move_up.gif b/admin/scripts/tiny_mce/plugins/fullpage/images/move_up.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f489c909e4609157fcfec8474bd018080a5efeb GIT binary patch literal 200 zcmV;(05|_fNk%w1VH5xq0K^^uAV`p4h~S{W|4@M7kg)%7nBXu_pkSErAW)!ipzy@c z{{R30A^8LW0015UEC2ui02BZe000F=peK%GX`X1Ru59a$N CJz1py literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/fullpage/images/remove.gif b/admin/scripts/tiny_mce/plugins/fullpage/images/remove.gif new file mode 100644 index 0000000000000000000000000000000000000000..299c684efcd7acc388fd1ebc6c8155c2154177d5 GIT binary patch literal 180 zcmZ?wbhEHb6k!lyIKsf-P;j7N!h?i{3kDGz3T8YAs5sED;s1df{}X2XcgQ%9&~YK4 z;DAHMh6y|V8zgK904hs35HR8Yh7OT-dZ26F5B_WcZfkc&&|Ee?v!`g~1vCTTVSx literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js b/admin/scripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js new file mode 100644 index 0000000..e457992 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/fullpage/jscripts/fullpage.js @@ -0,0 +1,580 @@ +// + +var defaultDocTypes = + 'XHTML 1.0 Transitional=,' + + 'XHTML 1.0 Frameset=,' + + 'XHTML 1.0 Strict=,' + + 'XHTML 1.1=">,' + + 'HTML 4.01 Transitional=,' + + 'HTML 4.01 Strict=,' + + 'HTML 4.01 Frameset='; + +var defaultEncodings = + 'Western european (iso-8859-1)=iso-8859-1,' + + 'Central European (iso-8859-2)=iso-8859-2,' + + 'Unicode (UTF-8)=utf-8,' + + 'Chinese traditional (Big5)=big5,' + + 'Cyrillic (iso-8859-5)=iso-8859-5,' + + 'Japanese (iso-2022-jp)=iso-2022-jp,' + + 'Greek (iso-8859-7)=iso-8859-7,' + + 'Korean (iso-2022-kr)=iso-2022-kr,' + + 'ASCII (us-ascii)=us-ascii'; + +var defaultMediaTypes = + 'all=all,' + + 'screen=screen,' + + 'print=print,' + + 'tty=tty,' + + 'tv=tv,' + + 'projection=projection,' + + 'handheld=handheld,' + + 'braille=braille,' + + 'aural=aural'; + +var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; +var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; + +var addMenuLayer = new MCLayer("addmenu"); +var lastElementType = null; +var topDoc; + +function init() { + var f = document.forms['fullpage']; + var i, p, doctypes, encodings, mediaTypes, fonts; + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + + // Setup doctype select box + doctypes = tinyMCE.getParam("fullpage_doctypes", defaultDocTypes).split(','); + for (i=0; i 1) + addSelectValue(f, 'doctypes', p[0], p[1]); + } + + // Setup fonts select box + fonts = tinyMCE.getParam("fullpage_fonts", defaultFontNames).split(';'); + for (i=0; i 1) + addSelectValue(f, 'fontface', p[0], p[1]); + } + + // Setup fontsize select box + fonts = tinyMCE.getParam("fullpage_fontsizes", defaultFontSizes).split(','); + for (i=0; i 1) { + addSelectValue(f, 'element_style_media', p[0], p[1]); + addSelectValue(f, 'element_link_media', p[0], p[1]); + } + } + + // Setup encodings select box + encodings = tinyMCE.getParam("fullpage_encodings", defaultEncodings).split(','); + for (i=0; i 1) { + addSelectValue(f, 'docencoding', p[0], p[1]); + addSelectValue(f, 'element_script_charset', p[0], p[1]); + addSelectValue(f, 'element_link_charset', p[0], p[1]); + } + } + + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); + //document.getElementById('hover_color_pickcontainer').innerHTML = getColorPickerHTML('hover_color_pick','hover_color'); + document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); + document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); + document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); + document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); + document.getElementById('link_href_pickcontainer').innerHTML = getBrowserHTML('link_href_browser','element_link_href','file','fullpage'); + document.getElementById('script_src_pickcontainer').innerHTML = getBrowserHTML('script_src_browser','element_script_src','file','fullpage'); + document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); + + // Resize some elements + if (isVisible('stylesheetbrowser')) + document.getElementById('stylesheet').style.width = '220px'; + + if (isVisible('link_href_browser')) + document.getElementById('element_link_href').style.width = '230px'; + + if (isVisible('bgimage_browser')) + document.getElementById('bgimage').style.width = '210px'; + + // Create iframe + var iframe = document.createElement('iframe'); + + iframe.id = 'tempFrame'; + iframe.style.display = 'none'; + iframe.src = tinyMCE.baseURL + "/plugins/fullpage/blank.htm"; + + document.body.appendChild(iframe); + + tinyMCEPopup.resizeToInnerSize(); +} + +function setupIframe(doc) { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var hc = inst.fullpageTopContent; + var f = document.forms[0]; + var xmlVer, xmlEnc, docType; + var nodes, i, x, name, value, tmp, l; + + // Keep it from not loading/executing stuff + hc = hc.replace(/ + + + + +
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif b/admin/scripts/tiny_mce/plugins/fullscreen/images/fullscreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..66fa6d92177f171fd42883474b7dd093bd2d339a GIT binary patch literal 198 zcmV;%06G6hNk%w1VH5xq0K*LcGD>2ivBykw!ot@6bd$)Ew*2Dq{%MuzLU-VNrt;$I z{;0?PSAE;|`To-4{r~^~A^8LW000jFEC2ui02BZe000DY@X1N5y*O(ey8oUPG-PQu zh5=L~;SvlX%mSjURO>jy;xC1Q4L8xD48CAu$Z8M;}RUJf0>sOc_ z4h#giNmy{Z(DeG+E>qDAdHB(q-q8pM40A0>Hb7yGOru0Qdt8t~Pr`|eUN*M-2T$>5EI)1;e(KzB(FM&H4!CkG acb!zU>toUKL&1g`63e=@%dCAF7_0$Ni7k5o literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/iespell/langs/en.js b/admin/scripts/tiny_mce/plugins/iespell/langs/en.js new file mode 100644 index 0000000..c3688e9 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/iespell/langs/en.js @@ -0,0 +1,7 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +iespell_desc : 'Run spell checking', +iespell_download : "ieSpell not detected. Click OK to go to download page." +}); + diff --git a/admin/scripts/tiny_mce/plugins/iespell/readme.txt b/admin/scripts/tiny_mce/plugins/iespell/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/iespell/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css b/admin/scripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css new file mode 100644 index 0000000..43be823 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/inlinepopups/css/inlinepopup.css @@ -0,0 +1,69 @@ +/* Window classes */ + +.mceWindow { + position: absolute; + left: 0; + top: 0; + border: 1px solid black; + background-color: #D4D0C8; +} + +.mceWindowHead { + background-color: #334F8D; + width: 100%; + height: 18px; + cursor: move; + overflow: hidden; +} + +.mceWindowBody { + clear: both; + background-color: white; +} + +.mceWindowStatusbar { + background-color: #D4D0C8; + height: 12px; + border-top: 1px solid black; +} + +.mceWindowTitle { + float: left; + font-family: "MS Sans Serif"; + font-size: 9pt; + font-weight: bold; + line-height: 18px; + color: white; + margin-left: 2px; + overflow: hidden; +} + +.mceWindowHeadTools { + margin-right: 2px; +} + +.mceWindowClose, .mceWindowMinimize, .mceWindowMaximize { + display: block; + float: right; + overflow: hidden; + margin-top: 2px; +} + +.mceWindowClose { + margin-left: 2px; +} + +.mceWindowMinimize { +} + +.mceWindowMaximize { +} + +.mceWindowResize { + display: block; + float: right; + overflow: hidden; + cursor: se-resize; + width: 12px; + height: 12px; +} diff --git a/admin/scripts/tiny_mce/plugins/inlinepopups/editor_plugin.js b/admin/scripts/tiny_mce/plugins/inlinepopups/editor_plugin.js new file mode 100644 index 0000000..be3e3ab --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/inlinepopups/editor_plugin.js @@ -0,0 +1 @@ +var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline Popups',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}}};tinyMCE.addPlugin("inlinepopups",TinyMCE_InlinePopupsPlugin);TinyMCE_Engine.prototype.orgOpenWindow=TinyMCE_Engine.prototype.openWindow;TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.openWindow=function(template,args){if(args['inline']!="yes"||tinyMCE.isOpera||tinyMCE.getParam("plugins").indexOf('inlinepopups')==-1){mcWindows.selectedWindow=null;args['mce_inside_iframe']=false;this.orgOpenWindow(template,args);return}var url,resizable,scrollbars;args['mce_inside_iframe']=true;tinyMCE.windowArgs=args;if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else url=template['file'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(!(minWidth=parseInt(template['minWidth'])))minWidth=100;if(!(minHeight=parseInt(template['minHeight'])))minHeight=100;resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";height+=18;for(var name in args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}var elm=document.getElementById(this.selectedInstance.editorId+'_parent');if(tinyMCE.hasPlugin('fullscreen')&&this.selectedInstance.getData('fullscreen').enabled)pos={absLeft:0,absTop:0};else pos=tinyMCE.getAbsPosition(elm);pos.absLeft+=Math.round((elm.firstChild.clientWidth/ 2) - (width /2));pos.absTop+=Math.round((elm.firstChild.clientHeight/ 2) - (height /2));mcWindows.open(url,mcWindows.idCounter++,"modal=yes,width="+width+",height="+height+",resizable="+resizable+",scrollbars="+scrollbars+",statusbar="+resizable+",left="+pos.absLeft+",top="+pos.absTop+",minWidth="+minWidth+",minHeight="+minHeight)};TinyMCE_Engine.prototype.closeWindow=function(win){var gotit=false,n,w;for(n in mcWindows.windows){w=mcWindows.windows[n];if(typeof(w)=='function')continue;if(win.name==w.id+'_iframe'){w.close();gotit=true}}if(!gotit)this.orgCloseWindow(win);tinyMCE.selectedInstance.getWin().focus()};TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win_ref.name==win.id+"_iframe")window.frames[win.id+"_iframe"].document.getElementById(win.id+'_title').innerHTML=title}};function TinyMCE_Windows(){this.settings=new Array();this.windows=new Array();this.isMSIE=(navigator.appName=="Microsoft Internet Explorer");this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.isSafari=navigator.userAgent.indexOf('Safari')!=-1;this.isMac=navigator.userAgent.indexOf('Mac')!=-1;this.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-1);this.action="none";this.selectedWindow=null;this.lastSelectedWindow=null;this.zindex=1001;this.mouseDownScreenX=0;this.mouseDownScreenY=0;this.mouseDownLayerX=0;this.mouseDownLayerY=0;this.mouseDownWidth=0;this.mouseDownHeight=0;this.idCounter=0};TinyMCE_Windows.prototype.init=function(settings){this.settings=settings;if(this.isMSIE)this.addEvent(document,"mousemove",mcWindows.eventDispatcher);else this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.addEvent(window,"resize",mcWindows.eventDispatcher);this.addEvent(document,"scroll",mcWindows.eventDispatcher);this.doc=document};TinyMCE_Windows.prototype.getBounds=function(){if(!this.bounds){var vp=tinyMCE.getViewPort(window);var top,left,bottom,right,docEl=this.doc.documentElement;top=vp.top;left=vp.left;bottom=vp.height+top-2;right=vp.width+left-22;this.bounds=[left,top,right,bottom]}return this.bounds};TinyMCE_Windows.prototype.clampBoxPosition=function(x,y,w,h,minW,minH){var bounds=this.getBounds();x=Math.max(bounds[0],Math.min(bounds[2],x+w)-w);y=Math.max(bounds[1],Math.min(bounds[3],y+h)-h);return this.clampBoxSize(x,y,w,h,minW,minH)};TinyMCE_Windows.prototype.clampBoxSize=function(x,y,w,h,minW,minH){var bounds=this.getBounds();return[x,y,Math.max(minW,Math.min(bounds[2],x+w)-x),Math.max(minH,Math.min(bounds[3],y+h)-y)]};TinyMCE_Windows.prototype.getParam=function(name,default_value){var value=null;value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=="true"||value=="false")return(value=="true");return value};TinyMCE_Windows.prototype.eventDispatcher=function(e){e=typeof(e)=="undefined"?window.event:e;if(mcWindows.selectedWindow==null)return;if(mcWindows.isGecko&&e.type=="mousedown"){var elm=e.currentTarget;for(var n in mcWindows.windows){var win=mcWindows.windows[n];if(win.headElement==elm||win.resizeElement==elm){win.focus();break}}}switch(e.type){case"mousemove":mcWindows.selectedWindow.onMouseMove(e);break;case"mouseup":mcWindows.selectedWindow.onMouseUp(e);break;case"mousedown":mcWindows.selectedWindow.onMouseDown(e);break;case"focus":mcWindows.selectedWindow.onFocus(e);break;case"scroll":case"resize":if(mcWindows.clampUpdateTimeout)clearTimeout(mcWindows.clampUpdateTimeout);mcWindows.clampEventType=e.type;mcWindows.clampUpdateTimeout=setTimeout(function(){mcWindows.updateClamping()},100);break}};TinyMCE_Windows.prototype.updateClamping=function(){var clamp,oversize,etype=mcWindows.clampEventType;this.bounds=null;this.clampUpdateTimeout=null;for(var n in this.windows){win=this.windows[n];if(typeof(win)=='function'||!win.winElement)continue;clamp=mcWindows.clampBoxPosition(win.left,win.top,win.winElement.scrollWidth,win.winElement.scrollHeight,win.features.minWidth,win.features.minHeight);oversize=(clamp[2]!=win.winElement.scrollWidth||clamp[3]!=win.winElement.scrollHeight)?true:false;if(!oversize||win.features.resizable=="yes"||etype!="scroll")win.moveTo(clamp[0],clamp[1]);if(oversize&&win.features.resizable=="yes")win.resizeTo(clamp[2],clamp[3])}};TinyMCE_Windows.prototype.addEvent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+name,handler);else obj.addEventListener(name,handler,false)};TinyMCE_Windows.prototype.cancelEvent=function(e){if(this.isMSIE){e.returnValue=false;e.cancelBubble=true}else e.preventDefault()};TinyMCE_Windows.prototype.parseFeatures=function(opts){opts=opts.toLowerCase();opts=opts.replace(/;/g,",");opts=opts.replace(/[^0-9a-z=,]/g,"");var optionChunks=opts.split(',');var options=new Array();options['left']="10";options['top']="10";options['width']="300";options['height']="300";options['minwidth']="100";options['minheight']="100";options['resizable']="yes";options['minimizable']="yes";options['maximizable']="yes";options['close']="yes";options['movable']="yes";options['statusbar']="yes";options['scrollbars']="auto";options['modal']="no";if(opts=="")return options;for(var i=0;i';html+='';html+='';html+='Wrapper iframe';html+='';html+='';html+='';html+='';html+='
';html+='
';html+='
';if(features['resizable']=="yes"&&features['maximizable']=="yes")html+=' ';html+='
';html+='
';html+='
';if(features['statusbar']=="yes"){html+='
';if(features['resizable']=="yes"){if(this.isGecko)html+='
';else html+='
'}html+='
'}html+='
';html+='';html+='';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){var elm=document.getElementById('mcWindowEventBlocker');if(state){if(elm==null){elm=document.createElement("div");elm.id="mcWindowEventBlocker";elm.style.position="absolute";elm.style.left="0";elm.style.top="0";document.body.appendChild(elm)}elm.style.display="none";var imgPath=this.getParam("images_path");var width=document.body.clientWidth;var height=document.body.clientHeight;elm.style.width=width;elm.style.height=height;elm.innerHTML='';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else if(elm!=null){if(mcWindows.windows.length==0)elm.parentNode.removeChild(elm);else elm.style.zIndex=mcWindows.zindex-1}};TinyMCE_Windows.prototype.onLoad=function(name){var win=mcWindows.windows[name];var id="mcWindow_"+name;var wrapperIframe=window.frames[id+"_iframe"].frames[0];var wrapperDoc=window.frames[id+"_iframe"].document;var doc=window.frames[id+"_iframe"].document;var winDiv=document.getElementById("mcWindow_"+name+"_div");var realIframe=window.frames[id+"_iframe"].frames[0];win.id="mcWindow_"+name;win.winElement=winDiv;win.bodyElement=doc.getElementById(id+'_body');win.iframeElement=doc.getElementById(id+'_iframe');win.headElement=doc.getElementById(id+'_head');win.titleElement=doc.getElementById(id+'_title');win.resizeElement=doc.getElementById(id+'_resize');win.containerElement=doc.getElementById(id+'_container');win.left=win.features['left'];win.top=win.features['top'];win.frame=window.frames[id+'_iframe'].frames[0];win.wrapperFrame=window.frames[id+'_iframe'];win.wrapperIFrameElement=document.getElementById(id+"_iframe");mcWindows.addEvent(win.headElement,"mousedown",mcWindows.eventDispatcher);if(win.resizeElement!=null)mcWindows.addEvent(win.resizeElement,"mousedown",mcWindows.eventDispatcher);if(mcWindows.isMSIE){mcWindows.addEvent(realIframe.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(realIframe,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(realIframe,"focus",mcWindows.eventDispatcher)}for(var i=0;i'; + html += ''; + html += ''; + + html += '
'; + html += '
'; + html += '
'; + if (features['resizable'] == "yes" && features['maximizable'] == "yes") + html += ' '; + // html += ' '; + html += '
'; + html += '
'; + html += '
'; + + if (features['statusbar'] == "yes") { + html += '
'; + + if (features['resizable'] == "yes") { + if (this.isGecko) + html += '
'; + else + html += '
'; + } + + html += '
'; + } + + html += '
'; + + html += ''; + html += ''; + + // Create iframe + this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); +}; + +// Blocks the document events by placing a image over the whole document +TinyMCE_Windows.prototype.setDocumentLock = function(state) { + var elm = document.getElementById('mcWindowEventBlocker'); + + if (state) { + if (elm == null) { + elm = document.createElement("div"); + + elm.id = "mcWindowEventBlocker"; + elm.style.position = "absolute"; + elm.style.left = "0"; + elm.style.top = "0"; + + document.body.appendChild(elm); + } + + elm.style.display = "none"; + + var imgPath = this.getParam("images_path"); + var width = document.body.clientWidth; + var height = document.body.clientHeight; + + elm.style.width = width; + elm.style.height = height; + elm.innerHTML = ''; + + elm.style.zIndex = mcWindows.zindex-1; + elm.style.display = "block"; + } else if (elm != null) { + if (mcWindows.windows.length == 0) + elm.parentNode.removeChild(elm); + else + elm.style.zIndex = mcWindows.zindex-1; + } +}; + +// Gets called when wrapper iframe is initialized +TinyMCE_Windows.prototype.onLoad = function(name) { + var win = mcWindows.windows[name]; + var id = "mcWindow_" + name; + var wrapperIframe = window.frames[id + "_iframe"].frames[0]; + var wrapperDoc = window.frames[id + "_iframe"].document; + var doc = window.frames[id + "_iframe"].document; + var winDiv = document.getElementById("mcWindow_" + name + "_div"); + var realIframe = window.frames[id + "_iframe"].frames[0]; + + // Set window data + win.id = "mcWindow_" + name; + win.winElement = winDiv; + win.bodyElement = doc.getElementById(id + '_body'); + win.iframeElement = doc.getElementById(id + '_iframe'); + win.headElement = doc.getElementById(id + '_head'); + win.titleElement = doc.getElementById(id + '_title'); + win.resizeElement = doc.getElementById(id + '_resize'); + win.containerElement = doc.getElementById(id + '_container'); + win.left = win.features['left']; + win.top = win.features['top']; + win.frame = window.frames[id + '_iframe'].frames[0]; + win.wrapperFrame = window.frames[id + '_iframe']; + win.wrapperIFrameElement = document.getElementById(id + "_iframe"); + + // Add event handlers + mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); + + if (win.resizeElement != null) + mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); + + if (mcWindows.isMSIE) { + mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); + } else { + mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); + } + + for (var i=0; iutpmhBaYhCPCMFj~25SJyItL8^ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/inlinepopups/images/window_close.gif b/admin/scripts/tiny_mce/plugins/inlinepopups/images/window_close.gif new file mode 100644 index 0000000000000000000000000000000000000000..3469e5aea1d1594aded9b9fe41dbf66f7db66e5d GIT binary patch literal 110 zcmZ?wbhEHb6ky8EpFaMT6=+Em0o-!%GKPcq}sebpyqLVpV!VJ~` DxTYg8 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif b/admin/scripts/tiny_mce/plugins/inlinepopups/images/window_minimize.gif new file mode 100644 index 0000000000000000000000000000000000000000..94f167a4dd150485a7530bdf5d2c9e4dd42f109a GIT binary patch literal 112 zcmZ?wbhEHb6ky'; + + html += '
'; + html += '
'; + html += '
'; +// html += ' '; +// html += ' '; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + html += '
'; + + html += ''; + html += ''; + + // Create iframe + this.createFloatingIFrame(id, features['left'], features['top'], features['width'], features['height'], html); +}; + +// Gets called when wrapper iframe is initialized +MCWindows.prototype.onLoad = function(name) { + var win = mcWindows.windows[name]; + var id = "mcWindow_" + name; + var wrapperIframe = window.frames[id + "_iframe"].frames[0]; + var wrapperDoc = window.frames[id + "_iframe"].document; + var doc = window.frames[id + "_iframe"].document; + var winDiv = document.getElementById("mcWindow_" + name + "_div"); + var realIframe = window.frames[id + "_iframe"].frames[0]; + + // Set window data + win.id = "mcWindow_" + name + "_iframe"; + win.winElement = winDiv; + win.bodyElement = doc.getElementById(id + '_body'); + win.iframeElement = doc.getElementById(id + '_iframe'); + win.headElement = doc.getElementById(id + '_head'); + win.titleElement = doc.getElementById(id + '_title'); + win.resizeElement = doc.getElementById(id + '_resize'); + win.containerElement = doc.getElementById(id + '_container'); + win.left = win.features['left']; + win.top = win.features['top']; + win.frame = window.frames[id + '_iframe'].frames[0]; + win.wrapperFrame = window.frames[id + '_iframe']; + win.wrapperIFrameElement = document.getElementById(id + "_iframe"); + + // Add event handlers + mcWindows.addEvent(win.headElement, "mousedown", mcWindows.eventDispatcher); + mcWindows.addEvent(win.resizeElement, "mousedown", mcWindows.eventDispatcher); + + if (mcWindows.isMSIE) { + mcWindows.addEvent(realIframe.document, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe.document, "mouseup", mcWindows.eventDispatcher); + } else { + mcWindows.addEvent(realIframe, "mousemove", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "mouseup", mcWindows.eventDispatcher); + mcWindows.addEvent(realIframe, "focus", mcWindows.eventDispatcher); + } + + for (var i=0; iB%FNo-)U@-!h1l*#K+sgxG=KdOCpWJH7oK&k{F0QClRxK; zUGY6FBdaM3*DEP01;r*^y7l_cpMSIV{WJ1PdiCl@R#_1PZlL&+g^__loIwYq1Y{=z z>zoIweJPpqGFHv=ysdZmz?n>=yO($C_`KCy7oKxXT2e)*CXcnVec1bGEwlY~SW1Ph9k_!1Zx z0ux!;MFks`CnShAGcoZo@HNcp=UBithl#7ca+x@v$Yzn%>>L$UeQJCwVwdu5(%iJ= N=w|H`C)E@gtO1pRV_^UQ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif b/admin/scripts/tiny_mce/plugins/insertdatetime/images/inserttime.gif new file mode 100644 index 0000000000000000000000000000000000000000..6dad3b36d0a89c68b8410a2c11e00b077dc5ad8a GIT binary patch literal 239 zcmZ?wbhEHb6k!lyxFX76WEC`h)AdV_{w3zMwypWp*gG$8(xo+PwyZn(@6)$mn-1NI zPRt6b+BALc^7grBje?3!pS^tO*1wXPzTJBdJ$n1|-`{@@o)HYVf#OdVMg|6P1|5(R zkev*yIS*9(QZnadtXh}zI_|<15m)1lhEqd0Rb*G)$UEe%!DfCXB|P(m22;Dr)fEw{ z0$i#>8-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else{if(z[ci]>0)nl[ci].style.zIndex=z[ci]-1}}else{for(i=0;iz[ci]){fi=i;break}}if(fi>-1){nl[ci].style.zIndex=z[fi];nl[fi].style.zIndex=z[ci]}else nl[ci].style.zIndex=z[ci]+1}inst.repaint()},_getParentLayer:function(n){return tinyMCE.getParentNode(n,function(n){return n.nodeType==1&&new RegExp('absolute|relative|static','gi').test(n.style.position)})},_insertLayer:function(){var inst=tinyMCE.selectedInstance;var e=tinyMCE.getParentElement(inst.getFocusElement());var p=tinyMCE.getAbsPosition(e);var d=inst.getDoc();var ne=d.createElement('div');var h=inst.selection.getSelectedHTML();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100px';ne.style.height='100px';ne.className='mceVisualAid';if(!h)h=tinyMCE.getLang('lang_layer_content');ne.innerHTML=h;d.body.appendChild(ne)},_toggleAbsolute:function(){var inst=tinyMCE.selectedInstance;var le=this._getParentLayer(inst.getFocusElement());if(le==null)le=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');if(le){if(le.style.position.toLowerCase()=="absolute"){le.style.position="";le.style.left="";le.style.top=""}else{le.style.position="absolute";if(le.style.left=="")le.style.left=20+'px';if(le.style.top=="")le.style.top=20+'px';if(le.style.width=="")le.style.width=le.width?(le.width+'px'):'100px';if(le.style.height=="")le.style.height=le.height?(le.height+'px'):'100px';tinyMCE.handleVisualAid(inst.getBody(),true,inst.visualAid,inst)}inst.repaint();tinyMCE.triggerNodeChange()}}};tinyMCE.addPlugin("layer",TinyMCE_LayerPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/layer/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/layer/editor_plugin_src.js new file mode 100644 index 0000000..28feff2 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/layer/editor_plugin_src.js @@ -0,0 +1,248 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('layer'); + +var TinyMCE_LayerPlugin = { + getInfo : function() { + return { + longname : 'Layer', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/layer', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + if (tinyMCE.isMSIE && !tinyMCE.isOpera) + inst.getDoc().execCommand('2D-Position'); + }, + + handleEvent : function(e) { + var inst = tinyMCE.selectedInstance; + var w = inst.getWin(), le = inst._lastStyleElm, e; + + if (tinyMCE.isGecko) { + e = this._getParentLayer(inst.getFocusElement()); + + if (e) { + if (!inst._lastStyleElm) { + e.style.overflow = 'auto'; + inst._lastStyleElm = e; + } + } else if (le) { + le = inst._lastStyleElm; + le.style.width = le.scrollWidth + 'px'; + le.style.height = le.scrollHeight + 'px'; + le.style.overflow = ''; + inst._lastStyleElm = null; + } + } + + return true; + }, + + handleVisualAid : function(el, deep, state, inst) { + var nl = inst.getDoc().getElementsByTagName("div"), i; + + for (i=0; i -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else { + if (z[ci] > 0) + nl[ci].style.zIndex = z[ci] - 1; + } + } else { + // Move forward + + // Try find a higher one + for (i=0; i z[ci]) { + fi = i; + break; + } + } + + if (fi > -1) { + nl[ci].style.zIndex = z[fi]; + nl[fi].style.zIndex = z[ci]; + } else + nl[ci].style.zIndex = z[ci] + 1; + } + + inst.repaint(); + }, + + _getParentLayer : function(n) { + return tinyMCE.getParentNode(n, function(n) { + return n.nodeType == 1 && new RegExp('absolute|relative|static', 'gi').test(n.style.position); + }); + }, + + _insertLayer : function() { + var inst = tinyMCE.selectedInstance; + var e = tinyMCE.getParentElement(inst.getFocusElement()); + var p = tinyMCE.getAbsPosition(e); + var d = inst.getDoc(); + var ne = d.createElement('div'); + var h = inst.selection.getSelectedHTML(); + + // Move div + ne.style.position = 'absolute'; + ne.style.left = p.absLeft + 'px'; + ne.style.top = (p.absTop > 20 ? p.absTop : 20) + 'px'; + ne.style.width = '100px'; + ne.style.height = '100px'; + ne.className = 'mceVisualAid'; + + if (!h) + h = tinyMCE.getLang('lang_layer_content'); + + ne.innerHTML = h; + + // Add it + d.body.appendChild(ne); + }, + + _toggleAbsolute : function() { + var inst = tinyMCE.selectedInstance; + var le = this._getParentLayer(inst.getFocusElement()); + + if (le == null) + le = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img'); + + if (le) { + if (le.style.position.toLowerCase() == "absolute") { + le.style.position = ""; + le.style.left = ""; + le.style.top = ""; + } else { + le.style.position = "absolute"; + + if (le.style.left == "") + le.style.left = 20 + 'px'; + + if (le.style.top == "") + le.style.top = 20 + 'px'; + + if (le.style.width == "") + le.style.width = le.width ? (le.width + 'px') : '100px'; + + if (le.style.height == "") + le.style.height = le.height ? (le.height + 'px') : '100px'; + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + } + + inst.repaint(); + tinyMCE.triggerNodeChange(); + } + } +}; + +tinyMCE.addPlugin("layer", TinyMCE_LayerPlugin); diff --git a/admin/scripts/tiny_mce/plugins/layer/images/absolute.gif b/admin/scripts/tiny_mce/plugins/layer/images/absolute.gif new file mode 100644 index 0000000000000000000000000000000000000000..72cffddc3246c84e1e93ced3f36539b2c6b5a834 GIT binary patch literal 209 zcmZ?wbhEHb6k!lyIKlt||NsBrvE$~A8$VvW_+c2freNxeg1(Es<>zOtII&{KjT1M1 z1Qx9~&)gH)ez{}Ci5o9|y!i2hk&zLo3#^*}q4<-9k%2*&K?kG`WG4fw-vgDtl+1Y< ztJdjgZGFZ)*+}PZ#a%DA`|^CpyTmobL^~EL3Umr^FtKI7Y;h3cy{71}fp0^UUdjd! ckqEw4rGs^I!ui-1U(~pf{$o#_JQIU804$73O#lD@ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/backward.gif b/admin/scripts/tiny_mce/plugins/layer/images/backward.gif new file mode 100644 index 0000000000000000000000000000000000000000..466b1586561bb96767cd6bd4e40dc525ac9c642b GIT binary patch literal 360 zcmZ?wbhEHb6k!lyxXQrr@mlYS70bWBnRw#FiAx)T@(YV*%;}gpW5$XVJ67!2F}Wpw z!^)OVXM;OBX7|llQIqEfl(=!@MowjadB@a_j*gQPOalS~Uc7jI;>L{=CvJS$mfSI8 zdTFTJ_fHqzY_nf6qvQL#4Lf)4(6I3Nbg}UN|Njis28usf7#SE;7<51egZ#w6*6J{+ zz(Yr>|HP7_lRA20^E0j_1ZarMP7qUJ=;1nbew($F-~ms=={au7M`Pc61Q*I5WvEnY zY_O0L7II@_N>%3J6c?0WR#a4KF5;2n5M=IEfmBzv%Dj+$7k#V*Q7b`!%j2Pbx lMMn1Jp1gfa*+sT^2yfgZBE8#PNa^UYL%t_ZopNNb1_0&MbUFY4 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/forward.gif b/admin/scripts/tiny_mce/plugins/layer/images/forward.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b7a5a11f152a85f78f846a11567f88962823c0 GIT binary patch literal 358 zcmZ?wbhEHb6k!lyxT?hP@mlYS70XXfFnzPl{`;GW`GrN7HU!O>(@~S>H@PK0ATZ$5 z+2ENoW^7p5Vq|QXQ`z4E0<+6IruNNP@nKu?iWNI{_eq{Oal%wfvSY^d@1HJ|hPvsB zi|^dIW5tY)@9#EfSonOpSor_{e+JqB#h)yU3=B#PIw0dgeqvy2c9>Y;p(E9QVoA|S z9W$wU8D9!KG^A(se{*JN;qp4aO`1#cfT!W~95>~ovH2ZJ1@cE3ekLh6_$UeSyRoyR zDpuEUiOb3=G*>ZCWa8@)?Q`W!V`F2QD>j9Zak>j9D+h-(7Z;y|j4UJ1Vo$-Ig**bA aJcQP75RlyI&aZIz$N}HuCr&srSOWm*-)g7; literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/insert_layer.gif b/admin/scripts/tiny_mce/plugins/layer/images/insert_layer.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc29af07663334e74e4ebe5b076302db2bc03ec2 GIT binary patch literal 264 zcmZ?wbhEHb6k!lyI3mw*;l_s#AO1gh@L|D*3kOa-n6O~O{~!M^Jos?n!h;P59xT{# zVZnw22QC2Bd|0sJzyuJw&@kh|h7%7O7F<}c;zB?|!vr8>$Ag552>}rWAAbCQ@Zy7k zM}oAW`+qP{{K>+|z#z|{!vF*zI~iD8AE@`GWX{W2H7_=N+j{G5T}C?IuPx38A6U|u z?xDkHsMfl11t*7*+QUo98C(|2j&8bngF_%9s5^o;=NuCQqlOg!>F3N06B4?)-lxeN zaNs$lQXwT3%T!d$BG91B8WY#f!XhNrU0%$=!pSMlEFvH*I8|3vW~q$svZZBZ@@v*; MZ`im=U6H{W01ozf?f?J) literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/insertlayer.gif b/admin/scripts/tiny_mce/plugins/layer/images/insertlayer.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc29af07663334e74e4ebe5b076302db2bc03ec2 GIT binary patch literal 264 zcmZ?wbhEHb6k!lyI3mw*;l_s#AO1gh@L|D*3kOa-n6O~O{~!M^Jos?n!h;P59xT{# zVZnw22QC2Bd|0sJzyuJw&@kh|h7%7O7F<}c;zB?|!vr8>$Ag552>}rWAAbCQ@Zy7k zM}oAW`+qP{{K>+|z#z|{!vF*zI~iD8AE@`GWX{W2H7_=N+j{G5T}C?IuPx38A6U|u z?xDkHsMfl11t*7*+QUo98C(|2j&8bngF_%9s5^o;=NuCQqlOg!>F3N06B4?)-lxeN zaNs$lQXwT3%T!d$BG91B8WY#f!XhNrU0%$=!pSMlEFvH*I8|3vW~q$svZZBZ@@v*; MZ`im=U6H{W01ozf?f?J) literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/movebackward.gif b/admin/scripts/tiny_mce/plugins/layer/images/movebackward.gif new file mode 100644 index 0000000000000000000000000000000000000000..466b1586561bb96767cd6bd4e40dc525ac9c642b GIT binary patch literal 360 zcmZ?wbhEHb6k!lyxXQrr@mlYS70bWBnRw#FiAx)T@(YV*%;}gpW5$XVJ67!2F}Wpw z!^)OVXM;OBX7|llQIqEfl(=!@MowjadB@a_j*gQPOalS~Uc7jI;>L{=CvJS$mfSI8 zdTFTJ_fHqzY_nf6qvQL#4Lf)4(6I3Nbg}UN|Njis28usf7#SE;7<51egZ#w6*6J{+ zz(Yr>|HP7_lRA20^E0j_1ZarMP7qUJ=;1nbew($F-~ms=={au7M`Pc61Q*I5WvEnY zY_O0L7II@_N>%3J6c?0WR#a4KF5;2n5M=IEfmBzv%Dj+$7k#V*Q7b`!%j2Pbx lMMn1Jp1gfa*+sT^2yfgZBE8#PNa^UYL%t_ZopNNb1_0&MbUFY4 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/images/moveforward.gif b/admin/scripts/tiny_mce/plugins/layer/images/moveforward.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b7a5a11f152a85f78f846a11567f88962823c0 GIT binary patch literal 358 zcmZ?wbhEHb6k!lyxT?hP@mlYS70XXfFnzPl{`;GW`GrN7HU!O>(@~S>H@PK0ATZ$5 z+2ENoW^7p5Vq|QXQ`z4E0<+6IruNNP@nKu?iWNI{_eq{Oal%wfvSY^d@1HJ|hPvsB zi|^dIW5tY)@9#EfSonOpSor_{e+JqB#h)yU3=B#PIw0dgeqvy2c9>Y;p(E9QVoA|S z9W$wU8D9!KG^A(se{*JN;qp4aO`1#cfT!W~95>~ovH2ZJ1@cE3ekLh6_$UeSyRoyR zDpuEUiOb3=G*>ZCWa8@)?Q`W!V`F2QD>j9Zak>j9D+h-(7Z;y|j4UJ1Vo$-Ig**bA aJcQP75RlyI&aZIz$N}HuCr&srSOWm*-)g7; literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/layer/langs/en.js b/admin/scripts/tiny_mce/plugins/layer/langs/en.js new file mode 100644 index 0000000..cdd8c22 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/layer/langs/en.js @@ -0,0 +1,9 @@ +// UK lang variables + +tinyMCE.addToLang('layer',{ +insertlayer_desc : 'Insert new layer', +forward_desc : 'Move forward', +backward_desc : 'Move backward', +absolute_desc : 'Toggle absolute positioning', +content : 'New layer...' +}); diff --git a/admin/scripts/tiny_mce/plugins/layer/readme.txt b/admin/scripts/tiny_mce/plugins/layer/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/layer/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/media/css/content.css b/admin/scripts/tiny_mce/plugins/media/css/content.css new file mode 100644 index 0000000..1f667e6 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/media/css/content.css @@ -0,0 +1,26 @@ +.mceItemFlash, .mceItemShockWave, .mceItemQuickTime, .mceItemWindowsMedia, .mceItemRealMedia { + border: 1px dotted #cc0000; + background-position: center; + background-repeat: no-repeat; + background-color: #ffffcc; +} + +.mceItemShockWave { + background-image: url('../images/shockwave.gif'); +} + +.mceItemFlash { + background-image: url('../images/flash.gif'); +} + +.mceItemQuickTime { + background-image: url('../images/quicktime.gif'); +} + +.mceItemWindowsMedia { + background-image: url('../images/windowsmedia.gif'); +} + +.mceItemRealMedia { + background-image: url('../images/realmedia.gif'); +} diff --git a/admin/scripts/tiny_mce/plugins/media/css/media.css b/admin/scripts/tiny_mce/plugins/media/css/media.css new file mode 100644 index 0000000..89c6bd5 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/media/css/media.css @@ -0,0 +1,68 @@ +#id, #name, #hspace, #vspace, #class_name, #align { + width: 100px; +} + +#hspace, #vspace { + width: 50px; +} + +#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { + width: 100px; +} + +#flash_base, #flash_flashvars { + width: 240px; +} + +#width, #height { + width: 40px; +} + +#src, #media_type { + width: 250px; +} + +#class { + width: 120px; +} + +#prev { + margin: 0; + border: 1px solid black; + width: 99%; + height: 230px; + overflow: auto; +} + +.panel_wrapper div.current { + height: 390px; + overflow: auto; +} + +#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { + display: none; +} + +.mceAddSelectValue { + background-color: #DDDDDD; +} + +#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { + width: 70px; +} + +#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { + width: 70px; +} + +#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { + width: 70px; +} + +#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { + width: 90px; +} + +#qt_qtsrc { + width: 200px; +} diff --git a/admin/scripts/tiny_mce/plugins/media/editor_plugin.js b/admin/scripts/tiny_mce/plugins/media/editor_plugin.js new file mode 100644 index 0000000..18337a6 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/media/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('media');var TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(inst.hasPlugin('flash')&&!tinyMCE.flashWarn){alert('Flash plugin is deprecated and should not be used together with the media plugin.');tinyMCE.flashWarn=true}if(!tinyMCE.settings['media_skip_plugin_css'])tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/media/css/content.css")},getControlHTML:function(cn){switch(cn){case"media":return tinyMCE.getButtonHTML(cn,'lang_media_desc','{$pluginurl}/images/media.gif','mceMedia')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceMedia":tinyMCE.openWindow({file:'../../plugins/media/media.htm',width:430+tinyMCE.getLang('lang_media_delta_width',0),height:470+tinyMCE.getLang('lang_media_delta_height',0)},{editor_id:editor_id,inline:"yes"});return true}return false},cleanup:function(type,content,inst){var nl,img,i,ne,d,s,ci;switch(type){case"insert_to_editor":img=tinyMCE.getParam("theme_href")+'/images/spacer.gif';content=content.replace(/]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'');content=content.replace(/]*)>/gi,'
');content=content.replace(/]*)>/gi,'
');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'
');content=content.replace(/]*)>/gi,'
');content=content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>','gi'),'class="mceItemParam">
');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+=2;at=attribs['title'];if(at){at=at.replace(/&(#39|apos);/g,"'");at=at.replace(/&#quot;/g,'"');try{pl=eval('x={'+at+'};')}catch(ex){pl={}}}if(!tinyMCE.getParam('media_use_script',false)){switch(attribs['class']){case'mceItemFlash':ci='d27cdb6e-ae6d-11cf-96b8-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='application/x-shockwave-flash';break;case'mceItemShockWave':ci='166B1BCA-3F9C-11CF-8075-444553540000';cb='http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';mt='application/x-director';break;case'mceItemWindowsMedia':ci=tinyMCE.getParam('media_wmp6_compatible')?'05589FA1-C356-11CE-BF01-00AA0055595A':'6BF52A52-394A-11D3-B153-00C04F79FAA6';cb='http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';mt='application/x-mplayer2';break;case'mceItemQuickTime':ci='02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';cb='http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';mt='video/quicktime';break;case'mceItemRealMedia':ci='CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';cb='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';mt='audio/x-pn-realaudio-plugin';break}if(!tinyMCE.getParam("relative_urls"))pl.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],pl.src);embedHTML=TinyMCE_MediaPlugin._getEmbed(ci,cb,mt,pl,attribs)}else{switch(attribs['class']){case'mceItemFlash':s='writeFlash';break;case'mceItemShockWave':s='writeShockWave';break;case'mceItemWindowsMedia':s='writeWindowsMedia';break;case'mceItemQuickTime':s='writeQuickTime';break;case'mceItemRealMedia':s='writeRealMedia';break}if(attribs.width)at=at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g,"width:'"+attribs.width+"'");if(attribs.height)at=at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g,"height:'"+attribs.height+"'");if(!tinyMCE.getParam("relative_urls")){pl.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],pl.src);at=at.replace(new RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'")}embedHTML=''}chunkBefore=content.substring(0,startPos);chunkAfter=content.substring(endPos);content=chunkBefore+embedHTML+chunkAfter}break}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;do{if(node.nodeName=="IMG"&&/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node,'class'))){tinyMCE.switchClass(editor_id+'_media','mceButtonSelected');return true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_media','mceButtonNormal');return true},_createImgFromEmbed:function(n,d,cl){var ne,at,i,ti='',an;ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;at=n.attributes;for(i=0;i0?ti.substring(0,ti.length-1):ti;ne.title=ti;n.parentNode.replaceChild(ne,n)},_createImg:function(cl,d,n){var i,nl,ti="",an,av,al=new Array();ne=d.createElement('img');ne.src=tinyMCE.getParam("theme_href")+'/images/spacer.gif';ne.width=tinyMCE.getAttrib(n,'width');ne.height=tinyMCE.getAttrib(n,'height');ne.className=cl;al.id=tinyMCE.getAttrib(n,'id');al.name=tinyMCE.getAttrib(n,'name');al.width=tinyMCE.getAttrib(n,'width');al.height=tinyMCE.getAttrib(n,'height');al.bgcolor=tinyMCE.getAttrib(n,'bgcolor');al.align=tinyMCE.getAttrib(n,'align');al.class_name=tinyMCE.getAttrib(n,'mce_class');nl=n.getElementsByTagName('div');for(i=0;i0?ti.substring(0,ti.length-1):ti;ne.title=ti;return ne},_getEmbed:function(cls,cb,mt,p,at){var h='',n;p.width=at.width?at.width:p.width;p.height=at.height?at.height:p.height;h+='';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+=''}}h+=']*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, ''); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(/<\/(object|embed)([^>]*)>/gi, '
'); + content = content.replace(/]*)>/gi, '
'); + content = content.replace(new RegExp('\\/ class="mceItemParam"><\\/div>', 'gi'), 'class="mceItemParam">
'); + break; + + case "insert_to_editor_dom": + d = inst.getDoc(); + nl = content.getElementsByTagName("img"); + for (i=0; i', startPos); + attribs = TinyMCE_MediaPlugin._parseAttributes(content.substring(startPos + 4, endPos)); + + // Is not flash, skip it + if (!/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(attribs['class'])) + continue; + + endPos += 2; + + // Parse attributes + at = attribs['title']; + if (at) { + at = at.replace(/&(#39|apos);/g, "'"); + at = at.replace(/&#quot;/g, '"'); + + try { + pl = eval('x={' + at + '};'); + } catch (ex) { + pl = {}; + } + } + + // Use object/embed + if (!tinyMCE.getParam('media_use_script', false)) { + switch (attribs['class']) { + case 'mceItemFlash': + ci = 'd27cdb6e-ae6d-11cf-96b8-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'application/x-shockwave-flash'; + break; + + case 'mceItemShockWave': + ci = '166B1BCA-3F9C-11CF-8075-444553540000'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + mt = 'application/x-director'; + break; + + case 'mceItemWindowsMedia': + ci = tinyMCE.getParam('media_wmp6_compatible') ? '05589FA1-C356-11CE-BF01-00AA0055595A' : '6BF52A52-394A-11D3-B153-00C04F79FAA6'; + cb = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + mt = 'application/x-mplayer2'; + break; + + case 'mceItemQuickTime': + ci = '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; + cb = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + mt = 'video/quicktime'; + break; + + case 'mceItemRealMedia': + ci = 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; + cb = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + mt = 'audio/x-pn-realaudio-plugin'; + break; + } + + // Force absolute URL + if (!tinyMCE.getParam("relative_urls")) + pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src); + + embedHTML = TinyMCE_MediaPlugin._getEmbed(ci, cb, mt, pl, attribs); + } else { + // Use script version + switch (attribs['class']) { + case 'mceItemFlash': + s = 'writeFlash'; + break; + + case 'mceItemShockWave': + s = 'writeShockWave'; + break; + + case 'mceItemWindowsMedia': + s = 'writeWindowsMedia'; + break; + + case 'mceItemQuickTime': + s = 'writeQuickTime'; + break; + + case 'mceItemRealMedia': + s = 'writeRealMedia'; + break; + } + + if (attribs.width) + at = at.replace(/width:[^0-9]?[0-9]+%?[^0-9]?/g, "width:'" + attribs.width + "'"); + + if (attribs.height) + at = at.replace(/height:[^0-9]?[0-9]+%?[^0-9]?/g, "height:'" + attribs.height + "'"); + + // Force absolute URL + if (!tinyMCE.getParam("relative_urls")) { + pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src); + at = at.replace(new RegExp("src:'[^']*'", "g"), "src:'" + pl.src + "'"); + } + + embedHTML = ''; + } + + // Insert embed/object chunk + chunkBefore = content.substring(0, startPos); + chunkAfter = content.substring(endPos); + content = chunkBefore + embedHTML + chunkAfter; + } + break; + } + + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node == null) + return; + + do { + if (node.nodeName == "IMG" && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(node, 'class'))) { + tinyMCE.switchClass(editor_id + '_media', 'mceButtonSelected'); + return true; + } + } while ((node = node.parentNode)); + + tinyMCE.switchClass(editor_id + '_media', 'mceButtonNormal'); + + return true; + }, + + _createImgFromEmbed : function(n, d, cl) { + var ne, at, i, ti = '', an; + + ne = d.createElement('img'); + ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; + ne.width = tinyMCE.getAttrib(n, 'width'); + ne.height = tinyMCE.getAttrib(n, 'height'); + ne.className = cl; + + at = n.attributes; + for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; + ne.title = ti; + + n.parentNode.replaceChild(ne, n); + }, + + _createImg : function(cl, d, n) { + var i, nl, ti = "", an, av, al = new Array(); + + ne = d.createElement('img'); + ne.src = tinyMCE.getParam("theme_href") + '/images/spacer.gif'; + ne.width = tinyMCE.getAttrib(n, 'width'); + ne.height = tinyMCE.getAttrib(n, 'height'); + ne.className = cl; + + al.id = tinyMCE.getAttrib(n, 'id'); + al.name = tinyMCE.getAttrib(n, 'name'); + al.width = tinyMCE.getAttrib(n, 'width'); + al.height = tinyMCE.getAttrib(n, 'height'); + al.bgcolor = tinyMCE.getAttrib(n, 'bgcolor'); + al.align = tinyMCE.getAttrib(n, 'align'); + al.class_name = tinyMCE.getAttrib(n, 'mce_class'); + + nl = n.getElementsByTagName('div'); + for (i=0; i 0 ? ti.substring(0, ti.length - 1) : ti; + ne.title = ti; + + return ne; + }, + + _getEmbed : function(cls, cb, mt, p, at) { + var h = '', n; + + p.width = at.width ? at.width : p.width; + p.height = at.height ? at.height : p.height; + + h += ''; + + // Add extra url parameter if it's an absolute URL on WMP + if (n == 'src' && p[n].indexOf('://') != -1 && mt == 'application/x-mplayer2') + h += ''; + } + } + + h += ''; + + h += ''); +} + +function init() { + var pl = "", f, val; + var type = "flash", fe, i; + + tinyMCEPopup.resizeToInnerSize(); + f = document.forms[0] + + fe = tinyMCE.selectedInstance.getFocusElement(); + if (/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { + pl = "x={" + fe.title + "};"; + + switch (tinyMCE.getAttrib(fe, 'class')) { + case 'mceItemFlash': + type = 'flash'; + break; + + case 'mceItemShockWave': + type = 'shockwave'; + break; + + case 'mceItemWindowsMedia': + type = 'wmp'; + break; + + case 'mceItemQuickTime': + type = 'qt'; + break; + + case 'mceItemRealMedia': + type = 'rmp'; + break; + } + + document.forms[0].insert.value = tinyMCE.getLang('lang_update', 'Insert', true); + } + + document.getElementById('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); + document.getElementById('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var html = getMediaListHTML('filebrowser','src','media','media'); + if (html == "") + document.getElementById("linklistrow").style.display = 'none'; + else + document.getElementById("linklistcontainer").innerHTML = html; + + // Resize some elements + if (isVisible('filebrowsercontainer')) + document.getElementById('src').style.width = '230px'; + + // Setup form + if (pl != "") { + pl = eval(pl); + + switch (type) { + case "flash": + setBool(pl, 'flash', 'play'); + setBool(pl, 'flash', 'loop'); + setBool(pl, 'flash', 'menu'); + setBool(pl, 'flash', 'swliveconnect'); + setStr(pl, 'flash', 'quality'); + setStr(pl, 'flash', 'scale'); + setStr(pl, 'flash', 'salign'); + setStr(pl, 'flash', 'wmode'); + setStr(pl, 'flash', 'base'); + setStr(pl, 'flash', 'flashvars'); + break; + + case "qt": + setBool(pl, 'qt', 'loop'); + setBool(pl, 'qt', 'autoplay'); + setBool(pl, 'qt', 'cache'); + setBool(pl, 'qt', 'controller'); + setBool(pl, 'qt', 'correction'); + setBool(pl, 'qt', 'enablejavascript'); + setBool(pl, 'qt', 'kioskmode'); + setBool(pl, 'qt', 'autohref'); + setBool(pl, 'qt', 'playeveryframe'); + setBool(pl, 'qt', 'tarsetcache'); + setStr(pl, 'qt', 'scale'); + setStr(pl, 'qt', 'starttime'); + setStr(pl, 'qt', 'endtime'); + setStr(pl, 'qt', 'tarset'); + setStr(pl, 'qt', 'qtsrcchokespeed'); + setStr(pl, 'qt', 'volume'); + setStr(pl, 'qt', 'qtsrc'); + break; + + case "shockwave": + setBool(pl, 'shockwave', 'sound'); + setBool(pl, 'shockwave', 'progress'); + setBool(pl, 'shockwave', 'autostart'); + setBool(pl, 'shockwave', 'swliveconnect'); + setStr(pl, 'shockwave', 'swvolume'); + setStr(pl, 'shockwave', 'swstretchstyle'); + setStr(pl, 'shockwave', 'swstretchhalign'); + setStr(pl, 'shockwave', 'swstretchvalign'); + break; + + case "wmp": + setBool(pl, 'wmp', 'autostart'); + setBool(pl, 'wmp', 'enabled'); + setBool(pl, 'wmp', 'enablecontextmenu'); + setBool(pl, 'wmp', 'fullscreen'); + setBool(pl, 'wmp', 'invokeurls'); + setBool(pl, 'wmp', 'mute'); + setBool(pl, 'wmp', 'stretchtofit'); + setBool(pl, 'wmp', 'windowlessvideo'); + setStr(pl, 'wmp', 'balance'); + setStr(pl, 'wmp', 'baseurl'); + setStr(pl, 'wmp', 'captioningid'); + setStr(pl, 'wmp', 'currentmarker'); + setStr(pl, 'wmp', 'currentposition'); + setStr(pl, 'wmp', 'defaultframe'); + setStr(pl, 'wmp', 'playcount'); + setStr(pl, 'wmp', 'rate'); + setStr(pl, 'wmp', 'uimode'); + setStr(pl, 'wmp', 'volume'); + break; + + case "rmp": + setBool(pl, 'rmp', 'autostart'); + setBool(pl, 'rmp', 'loop'); + setBool(pl, 'rmp', 'autogotourl'); + setBool(pl, 'rmp', 'center'); + setBool(pl, 'rmp', 'imagestatus'); + setBool(pl, 'rmp', 'maintainaspect'); + setBool(pl, 'rmp', 'nojava'); + setBool(pl, 'rmp', 'prefetch'); + setBool(pl, 'rmp', 'shuffle'); + setStr(pl, 'rmp', 'console'); + setStr(pl, 'rmp', 'controls'); + setStr(pl, 'rmp', 'numloop'); + setStr(pl, 'rmp', 'scriptcallbacks'); + break; + } + + setStr(pl, null, 'src'); + setStr(pl, null, 'id'); + setStr(pl, null, 'name'); + setStr(pl, null, 'vspace'); + setStr(pl, null, 'hspace'); + setStr(pl, null, 'bgcolor'); + setStr(pl, null, 'align'); + setStr(pl, null, 'width'); + setStr(pl, null, 'height'); + + if ((val = tinyMCE.getAttrib(fe, "width")) != "") + pl.width = f.width.value = val; + + if ((val = tinyMCE.getAttrib(fe, "height")) != "") + pl.height = f.height.value = val; + + oldWidth = pl.width ? parseInt(pl.width) : 0; + oldHeight = pl.height ? parseInt(pl.height) : 0; + } else + oldWidth = oldHeight = 0; + + selectByValue(f, 'media_type', type); + changedType(type); + updateColor('bgcolor_pick', 'bgcolor'); + + TinyMCE_EditableSelects.init(); + generatePreview(); +} + +function insertMedia() { + var fe, f = document.forms[0], h; + + if (!AutoValidator.validate(f)) { + alert(tinyMCE.getLang('lang_invalid_data')); + return false; + } + + f.width.value = f.width.value == "" ? 100 : f.width.value; + f.height.value = f.height.value == "" ? 100 : f.height.value; + + fe = tinyMCE.selectedInstance.getFocusElement(); + if (fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(tinyMCE.getAttrib(fe, 'class'))) { + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + fe.className = "mceItemFlash"; + break; + + case "shockwave": + fe.className = "mceItemShockWave"; + break; + + case "qt": + fe.className = "mceItemQuickTime"; + break; + + case "wmp": + fe.className = "mceItemWindowsMedia"; + break; + + case "rmp": + fe.className = "mceItemRealMedia"; + break; + } + + if (fe.width != f.width.value || fe.height != f.width.height) + tinyMCE.selectedInstance.repaint(); + + fe.title = serializeParameters(); + fe.width = f.width.value; + fe.height = f.height.value; + fe.style.width = f.width.value + (f.width.value.indexOf('%') == -1 ? 'px' : ''); + fe.style.height = f.height.value + (f.height.value.indexOf('%') == -1 ? 'px' : ''); + fe.align = f.align.options[f.align.selectedIndex].value; + } else { + h = ' 0) { + var html = ""; + + html += ''; + + return html; + } + + return ""; +} + +function getType(v) { + var fo = tinyMCE.getParam("media_types", "flash=swf;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra,ram").split(';'), i, c, el, x; + + for (i=0; i 0 ? s.substring(0, s.length - 1) : s; + + return s; +} + +function setBool(pl, p, n) { + if (typeof(pl[n]) == "undefined") + return; + + document.forms[0].elements[p + "_" + n].checked = pl[n]; +} + +function setStr(pl, p, n) { + var f = document.forms[0], e = f.elements[(p != null ? p + "_" : '') + n]; + + if (typeof(pl[n]) == "undefined") + return; + + if (e.type == "text") + e.value = pl[n]; + else + selectByValue(f, (p != null ? p + "_" : '') + n, pl[n]); +} + +function getBool(p, n, d, tv, fv) { + var v = document.forms[0].elements[p + "_" + n].checked; + + tv = typeof(tv) == 'undefined' ? 'true' : "'" + jsEncode(tv) + "'"; + fv = typeof(fv) == 'undefined' ? 'false' : "'" + jsEncode(fv) + "'"; + + return (v == d) ? '' : n + (v ? ':' + tv + ',' : ':' + fv + ','); +} + +function getStr(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + return ((n == d || v == '') ? '' : n + ":'" + jsEncode(v) + "',"); +} + +function getInt(p, n, d) { + var e = document.forms[0].elements[(p != null ? p + "_" : "") + n]; + var v = e.type == "text" ? e.value : e.options[e.selectedIndex].value; + + return ((n == d || v == '') ? '' : n + ":" + v.replace(/[^0-9]+/g, '') + ","); +} + +function jsEncode(s) { + s = s.replace(new RegExp('\\\\', 'g'), '\\\\'); + s = s.replace(new RegExp('"', 'g'), '\\"'); + s = s.replace(new RegExp("'", 'g'), "\\'"); + + return s; +} + +function generatePreview(c) { + var f = document.forms[0], p = document.getElementById('prev'), h = '', cls, pl, n, type, codebase, wp, hp, nw, nh; + + p.innerHTML = ''; + + nw = parseInt(f.width.value); + nh = parseInt(f.height.value); + + if (f.width.value != "" && f.height.value != "") { + if (f.constrain.checked) { + if (c == 'width' && oldWidth != 0) { + wp = nw / oldWidth; + nh = Math.round(wp * nh); + f.height.value = nh; + } else if (c == 'height' && oldHeight != 0) { + hp = nh / oldHeight; + nw = Math.round(hp * nw); + f.width.value = nw; + } + } + } + + if (f.width.value != "") + oldWidth = nw; + + if (f.height.value != "") + oldHeight = nh; + + // After constrain + pl = serializeParameters(); + + switch (f.media_type.options[f.media_type.selectedIndex].value) { + case "flash": + cls = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0'; + type = 'application/x-shockwave-flash'; + break; + + case "shockwave": + cls = 'clsid:166B1BCA-3F9C-11CF-8075-444553540000'; + codebase = 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0'; + type = 'application/x-director'; + break; + + case "qt": + cls = 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'; + codebase = 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0'; + type = 'video/quicktime'; + break; + + case "wmp": + cls = tinyMCE.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' : 'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'application/x-mplayer2'; + break; + + case "rmp": + cls = 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA'; + codebase = 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701'; + type = 'audio/x-pn-realaudio-plugin'; + break; + } + + if (pl == '') { + p.innerHTML = ''; + return; + } + + pl = eval('x={' + pl + '};'); + + if (!pl.src) { + p.innerHTML = ''; + return; + } + + pl.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], pl.src); + pl.width = !pl.width ? 100 : pl.width; + pl.height = !pl.height ? 100 : pl.height; + pl.id = !pl.id ? 'obj' : pl.id; + pl.name = !pl.name ? 'eobj' : pl.name; + pl.align = !pl.align ? '' : pl.align; + + h += ''; + + for (n in pl) { + h += ''; + + // Add extra url parameter if it's an absolute URL + if (n == 'src' && pl[n].indexOf('://') != -1) + h += ''; + } + + h += ' + + {$lang_media_title} + + + + + + + + + + +
+ + +
+
+
+ {$lang_media_general} + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
 
+
 
+ + + + + + +
x   
+
+
+ +
+ {$lang_media_preview} + +
+
+ +
+
+ {$lang_media_advanced} + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
 
+
+
+ +
+ {$lang_media_flash_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + + + + + + + +
+
+ +
+ {$lang_media_qt_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+  
+ + + + + +
 
+
+
+ +
+ {$lang_media_wmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ +
+ {$lang_media_rmp_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+   +
+
+ +
+ {$lang_media_shockwave_options} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin.js b/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin.js new file mode 100644 index 0000000..5b12797 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('nonbreaking');var TinyMCE_NonBreakingPlugin={getInfo:function(){return{longname:'Nonbreaking space',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"nonbreaking":return tinyMCE.getButtonHTML(cn,'lang_nonbreaking_desc','{$pluginurl}/images/nonbreaking.gif','mceNonBreaking',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),h;switch(command){case"mceNonBreaking":h=(inst.visualChars&&inst.visualChars.state)?'·':' ';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,h);return true}return false},handleEvent:function(e){var inst,h;if(!tinyMCE.isOpera&&e.type=='keydown'&&e.keyCode==9&&tinyMCE.getParam('nonbreaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'···':'   ';tinyMCE.execInstanceCommand(inst.editorId,'mceInsertContent',false,h);tinyMCE.cancelEvent(e);return false}return true}};tinyMCE.addPlugin("nonbreaking",TinyMCE_NonBreakingPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js new file mode 100644 index 0000000..73d5478 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js @@ -0,0 +1,62 @@ +/** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('nonbreaking'); + +var TinyMCE_NonBreakingPlugin = { + getInfo : function() { + return { + longname : 'Nonbreaking space', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "nonbreaking": + return tinyMCE.getButtonHTML(cn, 'lang_nonbreaking_desc', '{$pluginurl}/images/nonbreaking.gif', 'mceNonBreaking', false); + } + + return ""; + }, + + + execCommand : function(editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id), h; + + switch (command) { + case "mceNonBreaking": + h = (inst.visualChars && inst.visualChars.state) ? '·' : ' '; + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, h); + return true; + } + + return false; + }, + + handleEvent : function(e) { + var inst, h; + + if (!tinyMCE.isOpera && e.type == 'keydown' && e.keyCode == 9 && tinyMCE.getParam('nonbreaking_force_tab', false)) { + inst = tinyMCE.selectedInstance; + + h = (inst.visualChars && inst.visualChars.state) ? '···' : '   '; + tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h); + + tinyMCE.cancelEvent(e); + return false; + } + + return true; + } +}; + +tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin); diff --git a/admin/scripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif b/admin/scripts/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif new file mode 100644 index 0000000000000000000000000000000000000000..a731fc91acc2ddcb8a6ecec7ef1698654d766298 GIT binary patch literal 619 zcmZ?wbhEHb6k!lyc$Up@=+L1v3=F$=?Yb8capugK+qZ9j`t<4fhPAhD-RkPf-o1PO{{06J9%N@{f3aobH4~F5Q>LV) zrQHn1%SuWG3=EGSKdz{#*u%hZ^5n_SH*Y+A`0(o0tJkkzZ)RXvzI^#rZS8&rhI=tF ztgNh`u3lcWXwkE0&tC1?ewLYe_UzfO_wL%s!0`6)f%|cBrx+NXKYxBFAfTLqVG0nH z7SFFNU$tu0yJJV{7#Qw`g-w_+;pNMh8#ZjXs;|GFfuWCqfsKugfq~)w|NnpgKL;|% z28usf7#SF{8FWAR^|#7Hwq>vkPx=d3w%=Y_Wk z`3l9)o5vH_L zoPsA#GjZ@qT)dp5&T^eS^VXd<&nzv)jLb}JMj0kko9H&%tgD#}e;6EPrM>1DnmG2d zD>-m!xCk^m@kw&=xEg*~+%cg}jin^;0Bet;v2Mm0g~v-BnN|Fj?6|=6Z~}*_yTXed V1qYk@xkPnzZk^nme%^t>8UW+Z`J4a% literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/nonbreaking/langs/en.js b/admin/scripts/tiny_mce/plugins/nonbreaking/langs/en.js new file mode 100644 index 0000000..fd49a64 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/nonbreaking/langs/en.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('nonbreaking',{ +desc : 'Insert non-breaking space character' +}); diff --git a/admin/scripts/tiny_mce/plugins/noneditable/css/noneditable.css b/admin/scripts/tiny_mce/plugins/noneditable/css/noneditable.css new file mode 100644 index 0000000..be0ab65 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/noneditable/css/noneditable.css @@ -0,0 +1,9 @@ +/* This is the CSS file for the noneditable elements plugin */ + +.mceEditable { + /*border: 1px dotted #0000cc;*/ +} + +.mceNonEditable { + /*border: 1px dotted #cc0000;*/ +} diff --git a/admin/scripts/tiny_mce/plugins/noneditable/editor_plugin.js b/admin/scripts/tiny_mce/plugins/noneditable/editor_plugin.js new file mode 100644 index 0000000..6060981 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/noneditable/editor_plugin.js @@ -0,0 +1 @@ +var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable elements',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/noneditable/css/noneditable.css");if(tinyMCE.isMSIE5_0)tinyMCE.settings['plugins']=tinyMCE.settings['plugins'].replace(/noneditable/gi,'Noneditable')},handleEvent:function(e){return this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){switch(type){case"insert_to_editor_dom":var nodes,i,editClass,nonEditClass,editable,elm;if(tinyMCE.isGecko)return content;nodes=tinyMCE.getNodeTree(content,[],1);editClass=tinyMCE.getParam("noneditable_editable_class","mceEditable");nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceNonEditable");for(i=0;i + + blank_page + + + + + + + + + diff --git a/admin/scripts/tiny_mce/plugins/paste/css/blank.css b/admin/scripts/tiny_mce/plugins/paste/css/blank.css new file mode 100644 index 0000000..eca411a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/css/blank.css @@ -0,0 +1,13 @@ +body { + background-color: #FFFFFF; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/admin/scripts/tiny_mce/plugins/paste/css/pasteword.css b/admin/scripts/tiny_mce/plugins/paste/css/pasteword.css new file mode 100644 index 0000000..b3be627 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/css/pasteword.css @@ -0,0 +1,3 @@ +.sourceIframe { + border: 1px solid #808080; +} diff --git a/admin/scripts/tiny_mce/plugins/paste/editor_plugin.js b/admin/scripts/tiny_mce/plugins/paste/editor_plugin.js new file mode 100644 index 0000000..ed901bb --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('paste');var TinyMCE_PastePlugin={getInfo:function(){return{longname:'Paste text/word',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isMSIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false))tinyMCE.addEvent(inst.getBody(),"paste",TinyMCE_PastePlugin._handlePasteEvent)},handleEvent:function(e){if(!tinyMCE.isRealIE&&tinyMCE.getParam("paste_auto_cleanup_on_paste",false)&&e.ctrlKey&&e.keyCode==86&&e.type=="keydown"){window.setTimeout('tinyMCE.selectedInstance.execCommand("mcePasteText",true)',1);return tinyMCE.cancelEvent(e)}return true},getControlHTML:function(cn){switch(cn){case"pastetext":return tinyMCE.getButtonHTML(cn,'lang_paste_text_desc','{$pluginurl}/images/pastetext.gif','mcePasteText',true);case"pasteword":return tinyMCE.getButtonHTML(cn,'lang_paste_word_desc','{$pluginurl}/images/pasteword.gif','mcePasteWord',true);case"selectall":return tinyMCE.getButtonHTML(cn,'lang_selectall_desc','{$pluginurl}/images/selectall.gif','mceSelectAll',true)}return''},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePasteText":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false))TinyMCE_PastePlugin._insertText(clipboardData.getData("Text"),true);else{var template=new Array();template['file']='../../plugins/paste/pastetext.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertText(value['html'],value['linebreaks']);return true;case"mcePasteWord":if(user_interface){if((tinyMCE.isMSIE&&!tinyMCE.isOpera)&&!tinyMCE.getParam('paste_use_dialog',false)){TinyMCE_PastePlugin._insertWordContent(TinyMCE_PastePlugin._clipboardHTML())}else{var template=new Array();template['file']='../../plugins/paste/pasteword.htm';template['width']=450;template['height']=400;var plain_text="";tinyMCE.openWindow(template,{editor_id:editor_id,plain_text:plain_text,resizable:"yes",scrollbars:"no",inline:"yes",mceDo:'insert'})}}else TinyMCE_PastePlugin._insertWordContent(value);return true;case"mceSelectAll":tinyMCE.execInstanceCommand(editor_id,'selectall');return true}return false},_handlePasteEvent:function(e){switch(e.type){case"paste":var html=TinyMCE_PastePlugin._clipboardHTML();var r,inst=tinyMCE.selectedInstance;if(inst&&(r=inst.getRng())&&r.text.length>0)tinyMCE.execCommand('delete');if(html&&html.length>0)tinyMCE.execCommand('mcePasteWord',false,html);tinyMCE.cancelEvent(e);return false}return true},_insertText:function(content,bLinebreaks){if(content&&content.length>0){if(bLinebreaks){if(tinyMCE.getParam("paste_create_paragraphs",true)){var rl=tinyMCE.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i

","gi");content=tinyMCE.regexpReplace(content,"\r\r","

","gi");content=tinyMCE.regexpReplace(content,"\n\n","

","gi");if((pos=content.indexOf('

'))!=-1){tinyMCE.execCommand("Delete");var node=tinyMCE.selectedInstance.getFocusElement();var breakElms=new Array();do{if(node.nodeType==1){if(node.nodeName=="TD"||node.nodeName=="BODY")break;breakElms[breakElms.length]=node}}while(node=node.parentNode);var before="",after="

";before+=content.substring(0,pos);for(var i=0;i";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="

";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","
","gi");content=tinyMCE.regexpReplace(content,"\r","
","gi");content=tinyMCE.regexpReplace(content,"\n","
","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var bull=String.fromCharCode(8226);var middot=String.fromCharCode(183);var cb;if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('before', content)");var rl=tinyMCE.getParam("paste_replace_list",'\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var i=0;i(.*?)<\/p>','gi'),'

$1

')}content=content.replace(new RegExp('tab-stops: list [0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new RegExp(bull+"(.*?)
","gi"),"

"+middot+"$1

");content=content.replace(new RegExp('','gi'),""+bull);content=content.replace(/<\/o:p>/gi,"");content=content.replace(new RegExp('
]*>/gi,"");if(tinyMCE.getParam("paste_remove_styles",true))content=content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)','gi'),"<$1$3");content=content.replace(/<\/?font[^>]*>/gi,"");switch(tinyMCE.getParam("paste_strip_class_attributes","all")){case"all":content=content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi,"<$1$3");break;case"mso":content=content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)','gi'),"<$1$3");break}content=content.replace(new RegExp('href="?'+TinyMCE_PastePlugin._reEscape(""+document.location)+'','gi'),'href="'+tinyMCE.settings['document_base_url']);content=content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi,"<$1$3");content=content.replace(/<\\?\?xml[^>]*>/gi,"");content=content.replace(/<\/?\w+:[^>]*>/gi,"");content=content.replace(/-- page break --\s*

 <\/p>/gi,"");content=content.replace(/-- page break --/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.replace('','','gi');content=content.replace('

','

','gi')}if(!tinyMCE.isMSIE&&!tinyMCE.settings['force_p_newlines']){content=content.replace(/<\/?p[^>]*>/gi,"")}content=content.replace(/<\/?div[^>]*>/gi,"");if(tinyMCE.getParam("paste_convert_middot_lists",true)){var div=document.createElement("div");div.innerHTML=content;var className=tinyMCE.getParam("paste_unindented_list_class","unIndentedList");while(TinyMCE_PastePlugin._convertMiddots(div,"--list--"));while(TinyMCE_PastePlugin._convertMiddots(div,middot,className));while(TinyMCE_PastePlugin._convertMiddots(div,bull));content=div.innerHTML}if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(/ <\/h[1-6]>/gi,'

  

');content=content.replace(//gi,'

');content=content.replace(/<\/h[1-6]>/gi,'

');content=content.replace(/ <\/b>/gi,'  ');content=content.replace(/^( )*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callback",""))!="")content=eval(cb+"('after', content)");tinyMCE.execCommand("mceInsertContent",false,content);if(tinyMCE.getParam('paste_force_cleanup_wordpaste',true))window.setTimeout('tinyMCE.execCommand("mceCleanup");',1);}},_reEscape:function(s){var l="?.\\*[](){}+^$:";var o="";for(var i=0;i 0) + tinyMCE.execCommand('delete'); + + if (html && html.length > 0) + tinyMCE.execCommand('mcePasteWord', false, html); + + tinyMCE.cancelEvent(e); + return false; + } + + return true; + }, + + _insertText : function(content, bLinebreaks) { + if (content && content.length > 0) { + if (bLinebreaks) { + // Special paragraph treatment + if (tinyMCE.getParam("paste_create_paragraphs", true)) { + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i

", "gi"); + content = tinyMCE.regexpReplace(content, "\r\r", "

", "gi"); + content = tinyMCE.regexpReplace(content, "\n\n", "

", "gi"); + + // Has paragraphs + if ((pos = content.indexOf('

')) != -1) { + tinyMCE.execCommand("Delete"); + + var node = tinyMCE.selectedInstance.getFocusElement(); + + // Get list of elements to break + var breakElms = new Array(); + + do { + if (node.nodeType == 1) { + // Don't break tables and break at body + if (node.nodeName == "TD" || node.nodeName == "BODY") + break; + + breakElms[breakElms.length] = node; + } + } while(node = node.parentNode); + + var before = "", after = "

"; + before += content.substring(0, pos); + + for (var i=0; i"; + after += "<" + breakElms[(breakElms.length-1)-i].nodeName + ">"; + } + + before += "

"; + content = before + content.substring(pos+7) + after; + } + } + + if (tinyMCE.getParam("paste_create_linebreaks", true)) { + content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); + } + } + + tinyMCE.execCommand("mceInsertRawHTML", false, content); + } + }, + + _insertWordContent : function(content) { + if (content && content.length > 0) { + // Cleanup Word content + var bull = String.fromCharCode(8226); + var middot = String.fromCharCode(183); + var cb; + + if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") + content = eval(cb + "('before', content)"); + + var rl = tinyMCE.getParam("paste_replace_list", '\u2122,TM,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(','); + for (var i=0; i(.*?)<\/p>', 'gi'), '

$1

'); + } + + content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">', 'gi'), '">' + "--list--"); + content = content.replace(new RegExp(bull + "(.*?)
", "gi"), "

" + middot + "$1

"); + content = content.replace(new RegExp('', 'gi'), "" + bull); // Covert to bull list + content = content.replace(/<\/o:p>/gi, ""); + content = content.replace(new RegExp('
]*>/gi, ""); + + if (tinyMCE.getParam("paste_remove_styles", true)) + content = content.replace(new RegExp('<(\\w[^>]*) style="([^"]*)"([^>]*)', 'gi'), "<$1$3"); + + content = content.replace(/<\/?font[^>]*>/gi, ""); + + // Strips class attributes. + switch (tinyMCE.getParam("paste_strip_class_attributes", "all")) { + case "all": + content = content.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3"); + break; + + case "mso": + content = content.replace(new RegExp('<(\\w[^>]*) class="?mso([^ |>]*)([^>]*)', 'gi'), "<$1$3"); + break; + } + + content = content.replace(new RegExp('href="?' + TinyMCE_PastePlugin._reEscape("" + document.location) + '', 'gi'), 'href="' + tinyMCE.settings['document_base_url']); + content = content.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3"); + content = content.replace(/<\\?\?xml[^>]*>/gi, ""); + content = content.replace(/<\/?\w+:[^>]*>/gi, ""); + content = content.replace(/-- page break --\s*

 <\/p>/gi, ""); // Remove pagebreaks + content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks + + // content = content.replace(/\/? */gi, "");   + // content = content.replace(/

 <\/p>/gi, ''); + + if (!tinyMCE.settings['force_p_newlines']) { + content = content.replace('', '' ,'gi'); + content = content.replace('

', '

' ,'gi'); + } + + if (!tinyMCE.isMSIE && !tinyMCE.settings['force_p_newlines']) { + content = content.replace(/<\/?p[^>]*>/gi, ""); + } + + content = content.replace(/<\/?div[^>]*>/gi, ""); + + // Convert all middlot lists to UL lists + if (tinyMCE.getParam("paste_convert_middot_lists", true)) { + var div = document.createElement("div"); + div.innerHTML = content; + + // Convert all middot paragraphs to li elements + var className = tinyMCE.getParam("paste_unindented_list_class", "unIndentedList"); + + while (TinyMCE_PastePlugin._convertMiddots(div, "--list--")) ; // bull + while (TinyMCE_PastePlugin._convertMiddots(div, middot, className)) ; // Middot + while (TinyMCE_PastePlugin._convertMiddots(div, bull)) ; // bull + + content = div.innerHTML; + } + + // Replace all headers with strong and fix some other issues + if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) { + content = content.replace(/ <\/h[1-6]>/gi, '

  

'); + content = content.replace(//gi, '

'); + content = content.replace(/<\/h[1-6]>/gi, '

'); + content = content.replace(/ <\/b>/gi, '  '); + content = content.replace(/^( )*/gi, ''); + } + + content = content.replace(/--list--/gi, ""); // Remove --list-- + + if ((cb = tinyMCE.getParam("paste_insert_word_content_callback", "")) != "") + content = eval(cb + "('after', content)"); + + // Insert cleaned content + tinyMCE.execCommand("mceInsertContent", false, content); + + if (tinyMCE.getParam('paste_force_cleanup_wordpaste', true)) + window.setTimeout('tinyMCE.execCommand("mceCleanup");', 1); // Do normal cleanup detached from this thread + } + }, + + _reEscape : function(s) { + var l = "?.\\*[](){}+^$:"; + var o = ""; + + for (var i=0; i0ondXNk%w1VH5xq0Mrx!1_B0_axV75Hbzor!NSXCdX{^Irr^|uM>8k3npWTE z_STXHS!s#*>!gx|Yo@ZsW>!X~or(6f8HSR!`Stns%~QLpkDHB#_S}MbXH&+{=9Zzh z?#yQR^0wxx1^@s6A^8LW0018VEC2ui02BZe000G};3tk`X`X1RuAgN^Z0kBrb7aot zpjKB$4aY6Okz`JhPDhA2R1%QD;%Mpx9h=D{J24ar3{>0WqA)oAG#Wz^+%kwxLXub< z?1lt;BzPh$atCz>8V3d!dm?>*9R(B<6dDo(2@MAWZAKl9j~5yS02%-jm?It;n*|UH x69x?u000uCBpwzJxT_PPyBcT!B@7V}4-dX-X}~EO7|jFE1FA&_VoEyR91$H zhF*o+yUXv_-t_+d{r~^~A^8LW000jFEC2ui02BZe000Df@X1N5y*TU5>o7+Heg`=$ zM>Vb`J5+6XI1YlG<>HNl6DSIVBbTDA90dXakZ|A{FcP9bO8^|GhK^#QC9Oj(LshaR z2ng_D!6;5z$V3ouMKH9x8G>#F1jS?n3^ffjGze^C6ft%K2nKhF0(nntVhjR`9h;n; H5)lA9u4PUG literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/paste/jscripts/pastetext.js b/admin/scripts/tiny_mce/plugins/paste/jscripts/pastetext.js new file mode 100644 index 0000000..4c07691 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/jscripts/pastetext.js @@ -0,0 +1,38 @@ +function saveContent() { + if (document.forms[0].htmlSource.value == '') { + tinyMCEPopup.close(); + return false; + } + + tinyMCEPopup.execCommand('mcePasteText', false, { + html : document.forms[0].htmlSource.value, + linebreaks : document.forms[0].linebreaks.checked + }); + + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Remove Gecko spellchecking + if (tinyMCE.isGecko) + document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck"); + + resizeInputs(); +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function resizeInputs() { + if (!tinyMCE.isMSIE) { + wHeight = self.innerHeight-80; + wWidth = self.innerWidth-17; + } else { + wHeight = document.body.clientHeight-80; + wWidth = document.body.clientWidth-17; + } + + document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px'; + document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px'; +} diff --git a/admin/scripts/tiny_mce/plugins/paste/jscripts/pasteword.js b/admin/scripts/tiny_mce/plugins/paste/jscripts/pasteword.js new file mode 100644 index 0000000..b243a10 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/jscripts/pasteword.js @@ -0,0 +1,52 @@ +function saveContent() { + var html = document.getElementById("frmData").contentWindow.document.body.innerHTML; + + if (html == ''){ + tinyMCEPopup.close(); + return false; + } + + tinyMCEPopup.execCommand('mcePasteWord', false, html); + tinyMCEPopup.close(); +} + +function onLoadInit() { + tinyMCEPopup.resizeToInnerSize(); + + // Fix for endless reloading in FF + window.setTimeout('createIFrame();', 10); +} + +function createIFrame() { + document.getElementById('iframecontainer').innerHTML = ''; +} + +var wHeight=0, wWidth=0, owHeight=0, owWidth=0; + +function initIframe(doc) { + var dir = tinyMCE.selectedInstance.settings['directionality']; + + doc.body.dir = dir; + + // Remove Gecko spellchecking + if (tinyMCE.isGecko) + doc.body.spellcheck = tinyMCE.getParam("gecko_spellcheck"); + + resizeInputs(); +} + +function resizeInputs() { + if (!tinyMCE.isMSIE) { + wHeight = self.innerHeight - 80; + wWidth = self.innerWidth - 18; + } else { + wHeight = document.body.clientHeight - 80; + wWidth = document.body.clientWidth - 18; + } + + var elm = document.getElementById('frmData'); + if (elm) { + elm.style.height = Math.abs(wHeight) + 'px'; + elm.style.width = Math.abs(wWidth) + 'px'; + } +} diff --git a/admin/scripts/tiny_mce/plugins/paste/langs/en.js b/admin/scripts/tiny_mce/plugins/paste/langs/en.js new file mode 100644 index 0000000..b125d51 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/langs/en.js @@ -0,0 +1,10 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +paste_text_desc : 'Paste as Plain Text', +paste_text_title : 'Use CTRL+V on your keyboard to paste the text into the window.', +paste_text_linebreaks : 'Keep linebreaks', +paste_word_desc : 'Paste from Word', +paste_word_title : 'Use CTRL+V on your keyboard to paste the text into the window.', +selectall_desc : 'Select All' +}); diff --git a/admin/scripts/tiny_mce/plugins/paste/pastetext.htm b/admin/scripts/tiny_mce/plugins/paste/pastetext.htm new file mode 100644 index 0000000..63ff000 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/pastetext.htm @@ -0,0 +1,34 @@ + + + {$lang_paste_text_desc} + + + + + + +
+
{$lang_paste_text_desc}
+ +
+ +
+ +
+ +
{$lang_paste_text_title}
+ + + +
+
+ +
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/paste/pasteword.htm b/admin/scripts/tiny_mce/plugins/paste/pasteword.htm new file mode 100644 index 0000000..7acc7f7 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/pasteword.htm @@ -0,0 +1,29 @@ + + + + {$lang_paste_word_desc} + + + + + + +
+
{$lang_paste_word_desc}
+ +
{$lang_paste_word_title}
+ +
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/paste/readme.txt b/admin/scripts/tiny_mce/plugins/paste/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/paste/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/preview/editor_plugin.js b/admin/scripts/tiny_mce/plugins/preview/editor_plugin.js new file mode 100644 index 0000000..5409610 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/preview/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('preview');var TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"preview":return tinyMCE.getButtonHTML(cn,'lang_preview_desc','{$pluginurl}/images/preview.gif','mcePreview')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",inline:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")})}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="",i;var c=tinyMCE.getContent();var pos=c.indexOf('',pos);pos2=c.lastIndexOf('');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='';html+='';html+=''+tinyMCE.getLang('lang_preview_desc')+'';html+='';html+='';for(i=0;i';html+='';html+='';html+='';html+=c;html+='';html+='';win.document.write(html);win.document.close()}return true}return false},_setDoc:function(d){TinyMCE_PreviewPlugin._doc=d;d._embeds=new Array()},_setWin:function(d){TinyMCE_PreviewPlugin._win=d},_onLoad:function(){var nl,i,el=new Array(),d=TinyMCE_PreviewPlugin._doc,sv,ne;nl=d.getElementsByTagName("script");for(i=0;i';for(n in p)h+='';h+='', pos); + pos2 = c.lastIndexOf(''); + c = c.substring(pos + 1, pos2); + } + + html += tinyMCE.getParam('doctype'); + html += ''; + html += ''; + html += '' + tinyMCE.getLang('lang_preview_desc') + ''; + html += ''; + html += ''; + + for (i=0; i'; + + html += ''; + html += ''; + html += ''; + html += c; + html += ''; + html += ''; + + win.document.write(html); + win.document.close(); + } + + return true; + } + + return false; + }, + + _setDoc : function(d) { + TinyMCE_PreviewPlugin._doc = d; + d._embeds = new Array(); + }, + + _setWin : function(d) { + TinyMCE_PreviewPlugin._win = d; + }, + + _onLoad : function() { + var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne; + + nl = d.getElementsByTagName("script"); + for (i=0; i'; + + h += ' + + + +Example of a custom preview page + + + + +Editor contents:
+{$content} + + + diff --git a/admin/scripts/tiny_mce/plugins/preview/images/preview.gif b/admin/scripts/tiny_mce/plugins/preview/images/preview.gif new file mode 100644 index 0000000000000000000000000000000000000000..318936eaac98edd0d40334abcd2f7c1c10abaec9 GIT binary patch literal 286 zcmV+(0pb2fNk%w1VH5xq0MrctLNX#=n%>{t-ZHm6e~^^jl|5qG(t>VEt(9$;rn0=h z!9sF^Hceyu{Qa@O*@D`dO0sseucF4-?uW03pRULFzFJ~vZ(3SX#mU#gdO|Xil9ZX3 zZ+Cy;3tk`X`blmtgJ&}spvFxO)+pf z*Yu0)Jeq<*Oi>zw$YY{tU??18WAZRSAc+luBS5_%gFt}U=_CkVMPL9SG->9@i6RJS z282$nbL>vSb9vQ6%F(nbX9-_S>5dgx&$jBi8JKA7wKL7v# literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/preview/jscripts/embed.js b/admin/scripts/tiny_mce/plugins/preview/jscripts/embed.js new file mode 100644 index 0000000..f8dc810 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/preview/jscripts/embed.js @@ -0,0 +1,73 @@ +/** + * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. + */ + +function writeFlash(p) { + writeEmbed( + 'D27CDB6E-AE6D-11cf-96B8-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'application/x-shockwave-flash', + p + ); +} + +function writeShockWave(p) { + writeEmbed( + '166B1BCA-3F9C-11CF-8075-444553540000', + 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', + 'application/x-director', + p + ); +} + +function writeQuickTime(p) { + writeEmbed( + '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', + 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', + 'video/quicktime', + p + ); +} + +function writeRealMedia(p) { + writeEmbed( + 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', + 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', + 'audio/x-pn-realaudio-plugin', + p + ); +} + +function writeWindowsMedia(p) { + p.url = p.src; + writeEmbed( + '6BF52A52-394A-11D3-B153-00C04F79FAA6', + 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', + 'application/x-mplayer2', + p + ); +} + +function writeEmbed(cls, cb, mt, p) { + var h = '', n; + + h += ''; + + h += 'Gg7ing9R*A^8LW000jFEC2ui02BZe000Dl@X1N5y*TUrMEc;T3BqBT z4PgiwVSWT5C`y(zC#n*d;5M+t%)nq+5`;vqkun5Sl>{S3U<4crgF(S?7%GgM_|OPs zD*y!E|{0<7#0>aHWEL6BndDU8;y+&e4jmm66%_}QC6xvn4h#bW3={_x jpoxPV4gmok9t#w=ts@#{Ko1AM7r_@1E5*jg#vuSZ^a*OP literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/save/langs/en.js b/admin/scripts/tiny_mce/plugins/save/langs/en.js new file mode 100644 index 0000000..2c56b4b --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/save/langs/en.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +save_desc : 'Save' +}); diff --git a/admin/scripts/tiny_mce/plugins/save/readme.txt b/admin/scripts/tiny_mce/plugins/save/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/save/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/css/searchreplace.css b/admin/scripts/tiny_mce/plugins/searchreplace/css/searchreplace.css new file mode 100644 index 0000000..4c7bd13 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/css/searchreplace.css @@ -0,0 +1,20 @@ +/* stylesheet for advsearchreplace plugin*/ + +.panel_wrapper { height: 85px; } +.panel_wrapper div.current { height: 85px; } + +/* MS IE only styles */ +* html .panel_wrapper { height: 100px; } +* html .panel_wrapper div.current { height: 100px; } + +#replaceBtn, #replaceAllBtn { + padding-bottom: 2px; + font-weight: bold; + width: 90px; + height: 21px; + border: 0; + cursor: pointer; +} + +#replaceBtn { background: url(../images/replace_button_bg.gif); } +#replaceAllBtn { background: url(../images/replace_all_button_bg.gif); } diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin.js b/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin.js new file mode 100644 index 0000000..959e9cc --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('searchreplace');var TinyMCE_SearchReplacePlugin={getInfo:function(){return{longname:'Search/Replace',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.addShortcut('ctrl','f','lang_searchreplace_search_desc','mceSearch',true);},getControlHTML:function(cn){switch(cn){case"search":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_search_desc','{$pluginurl}/images/search.gif','mceSearch',true);case"replace":return tinyMCE.getButtonHTML(cn,'lang_searchreplace_replace_desc','{$pluginurl}/images/replace.gif','mceSearchReplace',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id),selectedText=inst.selection.getSelectedText(),rng;function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key]}function replaceSel(search_str,str,back){if(!inst.selection.isCollapsed()){if(tinyMCE.isRealIE)inst.selection.getRng().duplicate().pasteHTML(str);else inst.execCommand('mceInsertContent',false,str)}}if(!value)value=[];defValue("editor_id",editor_id);defValue("searchstring",selectedText);defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);defValue("inline","yes");defValue("resizable","no");switch(command){case"mceSearch":if(user_interface){var template=new Array();template['file']='../../plugins/searchreplace/searchreplace.htm';template['width']=380;template['height']=155+(tinyMCE.isNS7?20:0)+(tinyMCE.isMSIE?15:0);template['width']+=tinyMCE.getLang('lang_searchreplace_delta_width',0);template['height']+=tinyMCE.getLang('lang_searchreplace_delta_height',0);inst.selection.collapse(true);tinyMCE.openWindow(template,value)}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;var body=tinyMCE.getInstanceById(editor_id).contentWindow.document.body;var awin=value.win,found;if(body.innerHTML==""){awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring'],value['backwards']);value['replacemode']="none";}inst.selection.collapse(value['backwards']);if(tinyMCE.isMSIE){var rng=inst.selection.getRng();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){awin.alert('This operation is currently not supported by this browser.');return true}if(value['replacemode']=="all"){found=false;while(rng.findText(value['string'],value['backwards']?-1:1,flags)){found=true;rng.scrollIntoView();rng.select();replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select()}else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){found=false;while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false)){found=true;replaceSel(value['string'],value['replacestring'],value['backwards'])}if(found)awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));else awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'));return true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))awin.alert(tinyMCE.getLang('lang_searchreplace_notfound'))}}return true;case"mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true}return false}};tinyMCE.addPlugin("searchreplace",TinyMCE_SearchReplacePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js new file mode 100644 index 0000000..cd2f3a8 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js @@ -0,0 +1,173 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +tinyMCE.importPluginLanguagePack('searchreplace'); + +var TinyMCE_SearchReplacePlugin = { + getInfo : function() { + return { + longname : 'Search/Replace', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function (inst) { + inst.addShortcut('ctrl', 'f', 'lang_searchreplace_search_desc', 'mceSearch', true); + // No CTRL+R for "replace" because browsers will reload page instead of executing plugin + }, + + getControlHTML : function (cn) { + switch (cn) { + case "search" : + return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_search_desc', '{$pluginurl}/images/search.gif','mceSearch', true); + + case "replace" : + return tinyMCE.getButtonHTML(cn, 'lang_searchreplace_replace_desc', '{$pluginurl}/images/replace.gif', 'mceSearchReplace', true); + } + + return ""; + }, + + execCommand : function (editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id), selectedText = inst.selection.getSelectedText(), rng; + + function defValue(key, default_value) { + value[key] = typeof(value[key]) == "undefined" ? default_value : value[key]; + } + + function replaceSel(search_str, str, back) { + if (!inst.selection.isCollapsed()) { + if (tinyMCE.isRealIE) + inst.selection.getRng().duplicate().pasteHTML(str); // Needs to be duplicated due to selection bug in IE + else + inst.execCommand('mceInsertContent', false, str); + } + } + + if (!value) + value = []; + + defValue("editor_id", editor_id); + defValue("searchstring", selectedText); + defValue("replacestring", null); + defValue("replacemode", "none"); + defValue("casesensitive", false); + defValue("backwards", false); + defValue("wrap", false); + defValue("wholeword", false); + defValue("inline", "yes"); + defValue("resizable", "no"); + + switch (command) { + case "mceSearch" : + if (user_interface) { + var template = new Array(); + + template['file'] = '../../plugins/searchreplace/searchreplace.htm'; + template['width'] = 380; + template['height'] = 155 + (tinyMCE.isNS7 ? 20 : 0) + (tinyMCE.isMSIE ? 15 : 0); + template['width'] += tinyMCE.getLang('lang_searchreplace_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_searchreplace_delta_height', 0); + + inst.selection.collapse(true); + + tinyMCE.openWindow(template, value); + } else { + var win = tinyMCE.getInstanceById(editor_id).contentWindow; + var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document; + var body = tinyMCE.getInstanceById(editor_id).contentWindow.document.body; + var awin = value.win, found; + + if (body.innerHTML == "") { + awin.alert(tinyMCE.getLang('lang_searchreplace_notfound')); + return true; + } + + if (value['replacemode'] == "current") { + replaceSel(value['string'], value['replacestring'], value['backwards']); + value['replacemode'] = "none"; + //tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value); + //return true; + } + + inst.selection.collapse(value['backwards']); + + if (tinyMCE.isMSIE) { + var rng = inst.selection.getRng(); + var flags = 0; + if (value['wholeword']) + flags = flags | 2; + + if (value['casesensitive']) + flags = flags | 4; + + if (!rng.findText) { + awin.alert('This operation is currently not supported by this browser.'); + return true; + } + + if (value['replacemode'] == "all") { + found = false; + + while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) { + found = true; + rng.scrollIntoView(); + rng.select(); + replaceSel(value['string'], value['replacestring'], value['backwards']); + } + + if (found) + awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced')); + else + awin.alert(tinyMCE.getLang('lang_searchreplace_notfound')); + + return true; + } + + if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) { + rng.scrollIntoView(); + rng.select(); + } else + awin.alert(tinyMCE.getLang('lang_searchreplace_notfound')); + } else { + if (value['replacemode'] == "all") { + found = false; + + while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) { + found = true; + replaceSel(value['string'], value['replacestring'], value['backwards']); + } + + if (found) + awin.alert(tinyMCE.getLang('lang_searchreplace_allreplaced')); + else + awin.alert(tinyMCE.getLang('lang_searchreplace_notfound')); + + return true; + } + + if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false)) + awin.alert(tinyMCE.getLang('lang_searchreplace_notfound')); + } + } + + return true; + + case "mceSearchReplace" : + value['replacestring'] = ""; + tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false); + return true; + } + + return false; + } +}; + +tinyMCE.addPlugin("searchreplace", TinyMCE_SearchReplacePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/images/replace.gif b/admin/scripts/tiny_mce/plugins/searchreplace/images/replace.gif new file mode 100644 index 0000000000000000000000000000000000000000..784c73e2a9bb6cf369146a5ea6b1300262376eed GIT binary patch literal 125 zcmZ?wbhEHb6k!ly*u=`<>+5Tf@nG4qWeF2LOxW<@_Kk}SV4(Pug^_`QjX?**1F2&esZ(%10T+40)k^4<3K z_V@Sq_xShs`1ttv_xSku`T6_ z{r>&_{{8;`{{R2~EC2ui09pVQ000I4ARvxpX`X1Ru56pUa4gSsZQpo)i%9SPz@TtQ zEEy4Vn*|44@944Gj*do28nr zt)Ho_r=Ab6x39enz^k93a1OYomjDC=4-n1I&Ca=}($Ln>)ezOw+_}=<+2GjQ)Dz1h z%McP05!wu=gon41E6r&OkWuV8VwFBSs9kv0uiC6BiC_crRbPBJgJDpdrHs4xm4C z=-jyjXwVrreAcjm@aPR1R1C}*s)i?zFa_n58I(vAO9S@2k_g`n^*5Vy?OEB-=jZ2zyA2}=kt5O;9W$3 z@9G68;D7`cXyAbe9whjmfB!Y;;DZoGDB*+@R%juG3|^?=h8%WSVGAIJDB_4Bh5!IN D&VOW| literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif b/admin/scripts/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc2c56e61177a614580b61e367fab32c2da31320 GIT binary patch literal 669 zcmV;O0%H9~Nk%w1VOjtc0E8a^0001(__ z{r>&_{{8;`{{R2~EC2ui09pVQ000I4ARvxpX`X1Ru56pUa4gSsZQpo)i%9SPz@TtQ zEEy4Vn*|44@944Gj*do28nr zt)Ho_r=Ab6x39enz^k93a1OYomjDC=4-n1I&Ca=}($Ln>)ezOw+_}=<+2GjQ)Dz1h z%McP05!wu=gon41E6r&OkWuV8VwFBSs9kv0uiC6BiC_crRbPBJgJDpdrHs4xm4C z=-jyjXwVrreAcjm@aPR1R1C}*s)i?zFa_n58I(vAO9S@2k_g`n^*5Vy?OEB-=jZ2zyA2}=kt5O;9W$3 z@9G68;D7`cXyAbe9whjmfB!Y;;DZoGDB*+@R%juG3|^?=h8%WSVGAIJDB_4Bh5!IN Du3Thj{dMSt5;y`fuDmH}Uz$g$9N~Xo| no need to copy any values! + + // copy values from one panel to the other (if they exist there) + var from_panel_name = tab.id.match(/^search/i) ? "replace_panel" : "search_panel"; + var to_panel_name = (from_panel_name == "search_panel") ? "replace_panel" : "search_panel"; + + // find all elements with IDs to copy their values + var elms = document.getElementById(from_panel_name).getElementsByTagName("*"); + for (var i = 0; i < elms.length; i++) { + if (elms[i].id && elms[i].id != "") { + var checked = "undefined"; + if (elms[i].type.toLowerCase() == "checkbox" || elms[i].type.toLowerCase() == "radio") + checked = elms[i].checked; + + // copy values if element exists in other panel + var to_elm_name = to_panel_name + elms[i].id.substring(from_panel_name.length, elms[i].id.length); + var to_elm = document.getElementById(to_elm_name); + if (to_elm) { + if (checked != "undefined") + to_elm.checked = checked; + else + to_elm.value = elms[i].value; + } + } + } + + return false; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/langs/en.js b/admin/scripts/tiny_mce/plugins/searchreplace/langs/en.js new file mode 100644 index 0000000..32af828 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/langs/en.js @@ -0,0 +1,21 @@ +// UK lang variables + +tinyMCE.addToLang('',{ +searchreplace_search_desc : 'Find', +searchreplace_searchnext_desc : 'Find again', +searchreplace_replace_desc : 'Find/Replace', +searchreplace_notfound : 'The search has been completed. The search string could not be found.', +searchreplace_search_title : 'Find', +searchreplace_replace_title : 'Find/Replace', +searchreplace_allreplaced : 'All occurrences of the search string were replaced.', +searchreplace_findwhat : 'Find what', +searchreplace_replacewith : 'Replace with', +searchreplace_direction : 'Direction', +searchreplace_up : 'Up', +searchreplace_down : 'Down', +searchreplace_case : 'Match case', +searchreplace_findnext : 'Find next', +searchreplace_replace : 'Replace', +searchreplace_replaceall : 'Replace all', +searchreplace_cancel : 'Cancel' +}); diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/readme.txt b/admin/scripts/tiny_mce/plugins/searchreplace/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/searchreplace/searchreplace.htm b/admin/scripts/tiny_mce/plugins/searchreplace/searchreplace.htm new file mode 100644 index 0000000..192e0cb --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/searchreplace/searchreplace.htm @@ -0,0 +1,107 @@ + + + {$lang_searchreplace_replace_title} + + + + + + + + +
+ + +
+ +
+ + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + +
+ + + + + + + + +
+
+ + + + + +
+
+
+ +
+ +
+
+ + + + + +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/style/css/props.css b/admin/scripts/tiny_mce/plugins/style/css/props.css new file mode 100644 index 0000000..b159b5f --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/css/props.css @@ -0,0 +1,62 @@ +#text_font { + width: 250px; +} + +#text_size { + width: 70px; +} + +.mceAddSelectValue { + background-color: #DDDDDD; +} + +select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left { + width: 70px; +} + +#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex { + width: 70px; +} + +#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left { + width: 70px; +} + +#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left { + width: 70px; +} + +.panel_wrapper div.current { + padding-top: 10px; + height: 230px; +} + +.delim { + border-left: 1px solid gray; +} + +.tdelim { + border-bottom: 1px solid gray; +} + +#block_display { + width: 145px; +} + +#list_type { + width: 115px; +} + +.disabled { + background-color: #EEEEEE; +} + +#apply { + font-weight: bold; + width: 78px; + height: 21px; + border: 0; + background-image: url('../images/apply_button_bg.gif'); + cursor: pointer; +} + diff --git a/admin/scripts/tiny_mce/plugins/style/editor_plugin.js b/admin/scripts/tiny_mce/plugins/style/editor_plugin.js new file mode 100644 index 0000000..89f5b07 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('style');var TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},getControlHTML:function(cn){switch(cn){case"styleprops":return tinyMCE.getButtonHTML(cn,'lang_style_styleinfo_desc','{$pluginurl}/images/styleprops.gif','mceStyleProps',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var e,inst;switch(command){case"mceStyleProps":TinyMCE_StylePlugin._styleProps();return true;case"mceSetElementStyle":inst=tinyMCE.getInstanceById(editor_id);e=inst.selection.getFocusElement();if(e){e.style.cssText=value;inst.repaint()}return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node.nodeName=='BODY')tinyMCE.switchClass(editor_id+'_styleprops','mceButtonDisabled');else tinyMCE.switchClass(editor_id+'_styleprops','mceButtonNormal')},_styleProps:function(){var e=tinyMCE.selectedInstance.selection.getFocusElement();if(!e||e.nodeName=='BODY')return;tinyMCE.openWindow({file:'../../plugins/style/props.htm',width:480+tinyMCE.getLang('lang_style_props_delta_width',0),height:320+tinyMCE.getLang('lang_style_props_delta_height',0)},{editor_id:tinyMCE.selectedInstance.editorId,inline:"yes",style_text:e.style.cssText})}};tinyMCE.addPlugin("style",TinyMCE_StylePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/style/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/style/editor_plugin_src.js new file mode 100644 index 0000000..4fa8aaa --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/editor_plugin_src.js @@ -0,0 +1,83 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('style'); + +var TinyMCE_StylePlugin = { + getInfo : function() { + return { + longname : 'Style', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + getControlHTML : function(cn) { + switch (cn) { + case "styleprops": + return tinyMCE.getButtonHTML(cn, 'lang_style_styleinfo_desc', '{$pluginurl}/images/styleprops.gif', 'mceStyleProps', true); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + var e, inst; + + // Handle commands + switch (command) { + case "mceStyleProps": + TinyMCE_StylePlugin._styleProps(); + return true; + + case "mceSetElementStyle": + inst = tinyMCE.getInstanceById(editor_id); + e = inst.selection.getFocusElement(); + + if (e) { + e.style.cssText = value; + inst.repaint(); + } + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + if (node.nodeName == 'BODY') + tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonDisabled'); + else + tinyMCE.switchClass(editor_id + '_styleprops', 'mceButtonNormal'); + }, + + // Private plugin specific methods + + _styleProps : function() { + var e = tinyMCE.selectedInstance.selection.getFocusElement(); + + if (!e || e.nodeName == 'BODY') + return; + + tinyMCE.openWindow({ + file : '../../plugins/style/props.htm', + width : 480 + tinyMCE.getLang('lang_style_props_delta_width', 0), + height : 320 + tinyMCE.getLang('lang_style_props_delta_height', 0) + }, { + editor_id : tinyMCE.selectedInstance.editorId, + inline : "yes", + style_text : e.style.cssText + }); + } +}; + +tinyMCE.addPlugin("style", TinyMCE_StylePlugin); diff --git a/admin/scripts/tiny_mce/plugins/style/images/apply_button_bg.gif b/admin/scripts/tiny_mce/plugins/style/images/apply_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..979e868abb3562f59ac89b3d24bbd47b7aeab075 GIT binary patch literal 1096 zcmbVJ>rYc>7(b;zfmJ-?wr()j!YnFv3Ye{gec-Zik*muxba8BjW=sl1wz)XMNNKs0 zDIgZ1Fu57Ta+9J26^MZ%r9mvzs1d4apDL` zD&mW*A_&|v*=ajY5IBy}G;Oy-2my{^w4G)!k|OOi4Yo`GP&mQBINUZ7H~|5qND^+% z0SIvn2M}O5W`}mLHiqFiqd^h`u;{3TPH2ZT?I1{koT+x~=+n@4pM2a3Z8Koy7HPUj z&eQ;_o-nG2$x^@wQh+q69S)jViXy3{UVg!h^cb0 zIZZJ}E5qRBEy~CyrNQ7^~bsM`KM|x)Lm59Uuvk&Y;3MoaD5K>AY8PAi~OlZ zQKYZGucNQ`5Zcv+MhQQx?NdZ0JzRKZ{&sQp zScXFMB}c~L@Yph*>_?f^V6z!sTX(bl{r}kwH~iR~J;%km7pw}->Z42HxMdtU^0(;t zQ(auv9TvM?hjvD@n``;8CB?*GOG2G6t>@&4FzL~T4_&VEVuUPjmNf8-sF(8K4_NNG z9>_EGY+8#{?wK+ku1^n3SNff?94S@yMth5^M|`D6`{uacfu^tm z$8t=0WMje7XyLl`c}T`5%cG~2XVI@F-WLVfRzy%%mkV5rwd zhW5K?MOo-d)nKOFYa?g5lqJ-*7u(zu_7r^+AW(UPp6187N~CfDhv$dJ@v`KEgyo`o zAy5TZ91E;k>EKx^`NP^Q)!~Y>SE>asPONwtL*6U@^fVVuC})28W0R0R|Hi92Rt@TyRKOkUHsIbJ&FfhYbM* z2Mi)6q;|iX)O29!tczha2j}(Pm{M_}X%TkuRk78abfk^(@VG9TDj)r zyxLn`bvrs2U5s(;Y*_Ga!R(^}6$jjMH%;$6wR*)xgMbME4G(54KbarCa^?1`i#A>f zE#FoXzHRoJ+W`gz`4e9icx+g`;z~ong`}1XCGMM+Z#r8u|7OF2CrdY9Pq0`}5O83{ zvU3wwJ`FHvDDXJ&|Nno6p$rs%vM@3*I56mdJOPRm2KN32ho*6U@^fVVuC})28W0R0R|Hi92Rt@TyRKOkUHsIbJ&FfhYbM* z2Mi)6q;|iX)O29!tczha2j}(Pm{M_}X%TkuRk78abfk^(@VG9TDj)r zyxLn`bvrs2U5s(;Y*_Ga!R(^}6$jjMH%;$6wR*)xgMbME4G(54KbarCa^?1`i#A>f zE#FoXzHRoJ+W`gz`4e9icx+g`;z~ong`}1XCGMM+Z#r8u|7OF2CrdY9Pq0`}5O83{ zvU3wwJ`FHvDDXJ&|Nno6p$rs%vM@3*I56mdJOPRm2KN32ho 1) + return a[i]; + + return ""; +} + +function setValue(f, n, v) { + if (f.elements[n].type == "text") + f.elements[n].value = v; + else + selectByValue(f, n, v, true, true); +} + +function setupBox(f, ce, fp, pr, sf, b) { + if (typeof(b) == "undefined") + b = new Array('Top', 'Right', 'Bottom', 'Left'); + + if (isSame(ce, pr, sf, b)) { + f.elements[fp + "_same"].checked = true; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + f.elements[fp + "_right"].value = ""; + f.elements[fp + "_right"].disabled = true; + f.elements[fp + "_bottom"].value = ""; + f.elements[fp + "_bottom"].disabled = true; + f.elements[fp + "_left"].value = ""; + f.elements[fp + "_left"].disabled = true; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + f.elements[fp + "_left_measurement"].disabled = true; + f.elements[fp + "_bottom_measurement"].disabled = true; + f.elements[fp + "_right_measurement"].disabled = true; + } + } else { + f.elements[fp + "_same"].checked = false; + + setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); + f.elements[fp + "_top"].disabled = false; + + setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); + f.elements[fp + "_right"].disabled = false; + + setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); + f.elements[fp + "_bottom"].disabled = false; + + setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left"].disabled = false; + + if (f.elements[fp + "_top_measurement"]) { + selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); + selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); + selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); + selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); + f.elements[fp + "_left_measurement"].disabled = false; + f.elements[fp + "_bottom_measurement"].disabled = false; + f.elements[fp + "_right_measurement"].disabled = false; + } + } +} + +function isSame(e, pr, sf, b) { + var a = new Array(), i, x; + + if (typeof(b) == "undefined") + b = new Array('Top', 'Right', 'Bottom', 'Left'); + + if (typeof(sf) == "undefined" || sf == null) + sf = ""; + + a[0] = e.style[pr + b[0] + sf]; + a[1] = e.style[pr + b[1] + sf]; + a[2] = e.style[pr + b[2] + sf]; + a[3] = e.style[pr + b[3] + sf]; + + for (i=0; i 0 ? s.substring(1) : s; + + if (f.text_none.checked) + s = "none"; + + ce.style.textDecoration = s; + + // Build background styles + + ce.style.backgroundColor = f.background_color.value; + ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; + ce.style.backgroundRepeat = f.background_repeat.value; + ce.style.backgroundAttachment = f.background_attachment.value; + + if (f.background_hpos.value != "") { + s = ""; + s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; + s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); + ce.style.backgroundPosition = s; + } + + // Build block styles + + ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); + ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); + ce.style.verticalAlign = f.block_vertical_alignment.value; + ce.style.textAlign = f.block_text_align.value; + ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); + ce.style.whiteSpace = f.block_whitespace.value; + ce.style.display = f.block_display.value; + + // Build box styles + + ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); + ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); + ce.style.styleFloat = f.box_float.value; + + if (tinyMCE.isGecko) + ce.style.cssFloat = f.box_float.value; + + ce.style.clear = f.box_clear.value; + + if (!f.box_padding_same.checked) { + ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); + ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); + ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); + } else + ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); + + if (!f.box_margin_same.checked) { + ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); + ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); + ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); + } else + ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); + + // Build border styles + + if (!f.border_style_same.checked) { + ce.style.borderTopStyle = f.border_style_top.value; + ce.style.borderRightStyle = f.border_style_right.value; + ce.style.borderBottomStyle = f.border_style_bottom.value; + ce.style.borderLeftStyle = f.border_style_left.value; + } else + ce.style.borderStyle = f.border_style_top.value; + + if (!f.border_width_same.checked) { + ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); + ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); + ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); + ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); + } else + ce.style.borderWidth = f.border_width_top.value; + + if (!f.border_color_same.checked) { + ce.style.borderTopColor = f.border_color_top.value; + ce.style.borderRightColor = f.border_color_right.value; + ce.style.borderBottomColor = f.border_color_bottom.value; + ce.style.borderLeftColor = f.border_color_left.value; + } else + ce.style.borderColor = f.border_color_top.value; + + // Build list styles + + ce.style.listStyleType = f.list_type.value; + ce.style.listStylePosition = f.list_position.value; + ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; + + // Build positioning styles + + ce.style.position = f.positioning_type.value; + ce.style.visibility = f.positioning_visibility.value; + + if (ce.style.width == "") + ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); + + if (ce.style.height == "") + ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); + + ce.style.zIndex = f.positioning_zindex.value; + ce.style.overflow = f.positioning_overflow.value; + + if (!f.positioning_placement_same.checked) { + ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); + ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); + ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); + } else { + s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); + ce.style.top = s; + ce.style.right = s; + ce.style.bottom = s; + ce.style.left = s; + } + + if (!f.positioning_clip_same.checked) { + s = "rect("; + s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; + s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); + s += ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } else { + s = "rect("; + t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; + s += t + " "; + s += t + " "; + s += t + " "; + s += t + ")"; + + if (s != "rect(auto auto auto auto)") + ce.style.clip = s; + } + + ce.style.cssText = tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)); +} + +function isNum(s) { + return new RegExp('[0-9]+', 'g').test(s); +} + +function showDisabledControls() { + var f = document.forms, i, a; + + for (i=0; i 1) { + addSelectValue(f, s, p[0], p[1]); + + if (se) + selectByValue(f, s, p[1]); + } else { + addSelectValue(f, s, p[0], p[0]); + + if (se) + selectByValue(f, s, p[0]); + } + } +} + +function toggleSame(ce, pre) { + var el = document.forms[0].elements, i; + + if (ce.checked) { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = true; + el[pre + "_bottom"].disabled = true; + el[pre + "_left"].disabled = true; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = true; + el[pre + "_bottom_measurement"].disabled = true; + el[pre + "_left_measurement"].disabled = true; + } + } else { + el[pre + "_top"].disabled = false; + el[pre + "_right"].disabled = false; + el[pre + "_bottom"].disabled = false; + el[pre + "_left"].disabled = false; + + if (el[pre + "_top_measurement"]) { + el[pre + "_top_measurement"].disabled = false; + el[pre + "_right_measurement"].disabled = false; + el[pre + "_bottom_measurement"].disabled = false; + el[pre + "_left_measurement"].disabled = false; + } + } + + showDisabledControls(); +} + +function synch(fr, to) { + var f = document.forms[0]; + + f.elements[to].value = f.elements[fr].value; + + if (f.elements[fr + "_measurement"]) + selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); +} diff --git a/admin/scripts/tiny_mce/plugins/style/langs/en.js b/admin/scripts/tiny_mce/plugins/style/langs/en.js new file mode 100644 index 0000000..6bed70f --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/langs/en.js @@ -0,0 +1,66 @@ +// UK lang variables + +tinyMCE.addToLang('style',{ +title : 'Edit CSS Style', +styleinfo_desc : 'Edit CSS Style', +apply : 'Apply', +text_tab : 'Text', +background_tab : 'Background', +block_tab : 'Block', +box_tab : 'Box', +border_tab : 'Border', +list_tab : 'List', +positioning_tab : 'Positioning', +text_props : 'Text', +text_font : 'Font', +text_size : 'Size', +text_weight : 'Weight', +text_style : 'Style', +text_variant : 'Variant', +text_lineheight : 'Line height', +text_case : 'Case', +text_color : 'Color', +text_decoration : 'Decoration', +text_overline : 'overline', +text_underline : 'underline', +text_striketrough : 'strikethrough', +text_blink : 'blink', +text_none : 'none', +background_color : 'Background color', +background_image : 'Background image', +background_repeat : 'Repeat', +background_attachment : 'Attachment', +background_hpos : 'Horizontal position', +background_vpos : 'Vertical position', +block_wordspacing : 'Word spacing', +block_letterspacing : 'Letter spacing', +block_vertical_alignment : 'Vertical alignment', +block_text_align : 'Text align', +block_text_indent : 'Text indent', +block_whitespace : 'Whitespace', +block_display : 'Display', +box_width : 'Width', +box_height : 'Height', +box_float : 'Float', +box_clear : 'Clear', +padding : 'Padding', +same : 'Same for all', +top : 'Top', +right : 'Right', +bottom : 'Bottom', +left : 'Left', +margin : 'Margin', +style : 'Style', +width : 'Width', +height : 'Height', +color : 'Color', +list_type : 'Type', +bullet_image : 'Bullet image', +position : 'Position', +positioning_type : 'Type', +visibility : 'Visibility', +zindex : 'Z-index', +overflow : 'Overflow', +placement : 'Placement', +clip : 'Clip' +}); diff --git a/admin/scripts/tiny_mce/plugins/style/props.htm b/admin/scripts/tiny_mce/plugins/style/props.htm new file mode 100644 index 0000000..8bbd3db --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/props.htm @@ -0,0 +1,729 @@ + + + {$lang_style_title} + + + + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
 
+
+ +
+ + + +
+ + + + + + +
+ +  
+
+ +
+ + + + + +
 
+
{$lang_style_text_decoration} + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
 
+
+ + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + +
+ + + + + + +
 
+
   
+ + + + + + +
 
+
   
+
+
+ {$lang_style_padding} + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+
+ +
+
+ {$lang_style_margin} + + + + + + + + + + + + + + + + + + + + + + +
 
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+ + + + + + +
 
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  {$lang_style_style} {$lang_style_width} {$lang_style_color}
      
{$lang_style_top}   + + + + + + +
 
+
  + + + + + +
 
+
{$lang_style_right}   + + + + + + +
 
+
  + + + + + +
 
+
{$lang_style_bottom}   + + + + + + +
 
+
  + + + + + +
 
+
{$lang_style_left}   + + + + + + +
 
+
  + + + + + +
 
+
+
+ +
+ + + + + + + + + + + + + + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + +
   
+ + + + + + +
 
+
   
+ + + + + + +
 
+
   
+ +
+
+ {$lang_style_placement} + + + + + + + + + + + + + + + + + + + + + + +
 
{$lang_style_top} + + + + + + +
 
+
{$lang_style_right} + + + + + + +
 
+
{$lang_style_bottom} + + + + + + +
 
+
{$lang_style_left} + + + + + + +
 
+
+
+
+ +
+
+ {$lang_style_clip} + + + + + + + + + + + + + + + + + + + + + + +
 
{$lang_style_top} + + + + + + +
 
+
{$lang_style_right} + + + + + + +
 
+
{$lang_style_bottom} + + + + + + +
 
+
{$lang_style_left} + + + + + + +
 
+
+
+
+
+
+
+ +
+
+
+ +
 
+
+
+ +
+ +
+
+
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/style/readme.txt b/admin/scripts/tiny_mce/plugins/style/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/style/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/table/cell.htm b/admin/scripts/tiny_mce/plugins/table/cell.htm new file mode 100644 index 0000000..7171d4f --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/cell.htm @@ -0,0 +1,182 @@ + + + {$lang_table_cell_title} + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + +
+ +
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/table/css/cell.css b/admin/scripts/tiny_mce/plugins/table/css/cell.css new file mode 100644 index 0000000..a067ecd --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/css/cell.css @@ -0,0 +1,17 @@ +/* CSS file for cell dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#class { + width: 150px; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/table/css/row.css b/admin/scripts/tiny_mce/plugins/table/css/row.css new file mode 100644 index 0000000..1f7755d --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/css/row.css @@ -0,0 +1,25 @@ +/* CSS file for row dialog in the table plugin */ + +.panel_wrapper div.current { + height: 200px; +} + +.advfield { + width: 200px; +} + +#action { + margin-bottom: 3px; +} + +#rowtype,#align,#valign,#class,#height { + width: 150px; +} + +#height { + width: 50px; +} + +.col2 { + padding-left: 20px; +} diff --git a/admin/scripts/tiny_mce/plugins/table/css/table.css b/admin/scripts/tiny_mce/plugins/table/css/table.css new file mode 100644 index 0000000..804f766 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/css/table.css @@ -0,0 +1,13 @@ +/* CSS file for table dialog in the table plugin */ + +.panel_wrapper div.current { + height: 220px; +} + +.advfield { + width: 200px; +} + +#class { + width: 150px; +} diff --git a/admin/scripts/tiny_mce/plugins/table/editor_plugin.js b/admin/scripts/tiny_mce/plugins/table/editor_plugin.js new file mode 100644 index 0000000..2f308f8 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('table');var TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){if(tinyMCE.isGecko){var doc=inst.getDoc();tinyMCE.addEvent(doc,"mouseup",TinyMCE_TablePlugin._mouseDownHandler)}inst.tableRowClipboard=null},getControlHTML:function(control_name){var controls=new Array(['table','table.gif','lang_table_desc','mceInsertTable',true],['delete_table','table_delete.gif','lang_table_del','mceTableDelete'],['delete_col','table_delete_col.gif','lang_table_delete_col_desc','mceTableDeleteCol'],['delete_row','table_delete_row.gif','lang_table_delete_row_desc','mceTableDeleteRow'],['col_after','table_insert_col_after.gif','lang_table_col_after_desc','mceTableInsertColAfter'],['col_before','table_insert_col_before.gif','lang_table_col_before_desc','mceTableInsertColBefore'],['row_after','table_insert_row_after.gif','lang_table_row_after_desc','mceTableInsertRowAfter'],['row_before','table_insert_row_before.gif','lang_table_row_before_desc','mceTableInsertRowBefore'],['row_props','table_row_props.gif','lang_table_row_desc','mceTableRowProps',true],['cell_props','table_cell_props.gif','lang_table_cell_desc','mceTableCellProps',true],['split_cells','table_split_cells.gif','lang_table_split_cells_desc','mceTableSplitCells',true],['merge_cells','table_merge_cells.gif','lang_table_merge_cells_desc','mceTableMergeCells',true]);for(var i=0;i4?but[4]:false)+(but.length>5?', \''+but[5]+'\'':'')+');return false;';if(but[0]==control_name)return tinyMCE.getButtonHTML(control_name,but[2],'{$pluginurl}/images/'+but[1],but[3],(but.length>4?but[4]:false))}if(control_name=="tablecontrols"){var html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_props");html+=tinyMCE.getControlHTML("cell_props");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("row_before");html+=tinyMCE.getControlHTML("row_after");html+=tinyMCE.getControlHTML("delete_row");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("col_before");html+=tinyMCE.getControlHTML("col_after");html+=tinyMCE.getControlHTML("delete_col");html+=tinyMCE.getControlHTML("separator");html+=tinyMCE.getControlHTML("split_cells");html+=tinyMCE.getControlHTML("merge_cells");return html}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertTable":case"mceTableRowProps":case"mceTableCellProps":case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteRowAfter":case"mceTableDelete":var inst=tinyMCE.getInstanceById(editor_id);inst.execCommand('mceBeginUndoLevel');TinyMCE_TablePlugin._doExecCommand(editor_id,element,command,user_interface,value);inst.execCommand('mceEndUndoLevel');return true}return false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var colspan="1",rowspan="1",tdElm;var inst=tinyMCE.getInstanceById(editor_id);tinyMCE.switchClass(editor_id+'_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_cell_props','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_row_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_before','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_split_cells','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonDisabled');if(tdElm=tinyMCE.getParentElement(node,"td,th")){tinyMCE.switchClass(editor_id+'_cell_props','mceButtonSelected');tinyMCE.switchClass(editor_id+'_delete_table','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_row_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_row','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_before','mceButtonNormal');tinyMCE.switchClass(editor_id+'_col_after','mceButtonNormal');tinyMCE.switchClass(editor_id+'_delete_col','mceButtonNormal');colspan=tinyMCE.getAttrib(tdElm,"colspan");rowspan=tinyMCE.getAttrib(tdElm,"rowspan");colspan=colspan==""?"1":colspan;rowspan=rowspan==""?"1":rowspan;if(colspan!="1"||rowspan!="1")tinyMCE.switchClass(editor_id+'_split_cells','mceButtonNormal')}if(tinyMCE.getParentElement(node,"tr"))tinyMCE.switchClass(editor_id+'_row_props','mceButtonSelected');if(tinyMCE.getParentElement(node,"table")){tinyMCE.switchClass(editor_id+'_table','mceButtonSelected');tinyMCE.switchClass(editor_id+'_merge_cells','mceButtonNormal')}},_mouseDownHandler:function(e){var elm=tinyMCE.isMSIE?event.srcElement:e.target;var focusElm=tinyMCE.selectedInstance.getFocusElement();if(elm.nodeName=="BODY"&&(focusElm.nodeName=="TD"||focusElm.nodeName=="TH"||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TD")||(focusElm.parentNode&&focusElm.parentNode.nodeName=="TH"))){window.setTimeout(function(){var tableElm=tinyMCE.getParentElement(focusElm,"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance)},10)}},_doExecCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);var focusElm=inst.getFocusElement();var trElm=tinyMCE.getParentElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"td,th");var tableElm=tinyMCE.getParentElement(focusElm,"table");var doc=inst.contentWindow.document;var tableBorder=tableElm?tableElm.getAttribute("border"):"";if(trElm&&tdElm==null)tdElm=trElm.cells[0];function inArray(ar,v){for(var i=0;i0&&inArray(ar[i],v))return true;if(ar[i]==v)return true}return false}function makeTD(){var newTD=doc.createElement("td");newTD.innerHTML=" "}function getColRowSpan(td){var colspan=tinyMCE.getAttrib(td,"colspan");var rowspan=tinyMCE.getAttrib(td,"rowspan");colspan=colspan==""?1:parseInt(colspan);rowspan=rowspan==""?1:parseInt(rowspan);return{colspan:colspan,rowspan:rowspan}}function getCellPos(grid,td){var x,y;for(y=0;y1){for(var i=x;i1)td.rowSpan=sd.rowspan+1;lastElm=td}deleteMarked(tableElm)}}function prevElm(node,name){while((node=node.previousSibling)!=null){if(node.nodeName==name)return node}return null}function nextElm(node,names){var namesAr=names.split(',');while((node=node.nextSibling)!=null){for(var i=0;i1){do{var nexttd=nextElm(td,"TD,TH");if(td._delete)td.parentNode.removeChild(td)}while((td=nexttd)!=null)}}while((tr=next)!=null)}function addRows(td_elm,tr_elm,rowspan){td_elm.rowSpan=1;var trNext=nextElm(tr_elm,"TR");for(var i=1;i1){var newTD=cells[x].cloneNode(true);var sd=getColRowSpan(cells[x]);newTD.rowSpan=sd.rowspan-1;var nextTD=nextTR.cells[x];if(nextTD==null)nextTR.appendChild(newTD);else nextTR.insertBefore(newTD,nextTD)}}var lastTDElm=null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd.rowspan>1){tdElm.rowSpan=sd.rowspan-1}else{trElm=tdElm.parentNode;if(trElm.parentNode)trElm._delete=true}lastTDElm=tdElm}}deleteMarked(tableElm);cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableInsertColBefore":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;tdElm.parentNode.insertBefore(newTD,tdElm)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex+1),tinyMCE.isGecko,true);break;case"mceTableInsertColAfter":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']==1){var newTD=doc.createElement(tdElm.nodeName);newTD.innerHTML=" ";newTD.rowSpan=tdElm.rowSpan;var nextTD=nextElm(tdElm,"TD,TH");if(nextTD==null)tdElm.parentNode.appendChild(newTD);else nextTD.parentNode.insertBefore(newTD,nextTD)}else tdElm.colSpan++;lastTDElm=tdElm}}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteCol":if(!trElm||!tdElm)return true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var lastTDElm=null;if(grid.length>1&&grid[0].length<=1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return true}for(var y=0;tdElm=getCell(grid,y,cpos.cellindex);y++){if(tdElm!=lastTDElm){var sd=getColRowSpan(tdElm);if(sd['colspan']>1)tdElm.colSpan=sd['colspan']-1;else{if(tdElm.parentNode)tdElm.parentNode.removeChild(tdElm)}lastTDElm=tdElm}}cpos.cellindex--;if(cpos.cellindex<0)cpos.cellindex=0;grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,0),tinyMCE.isGecko,true);break;case"mceTableSplitCells":if(!trElm||!tdElm)return true;var spandata=getColRowSpan(tdElm);var colspan=spandata["colspan"];var rowspan=spandata["rowspan"];if(colspan>1||rowspan>1){tdElm.colSpan=1;for(var i=1;i1)addRows(newTD,trElm,rowspan)}addRows(tdElm,trElm,rowspan)}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");break;case"mceTableMergeCells":var rows=new Array();var sel=inst.getSel();var grid=getTableGrid(tableElm);if(tinyMCE.isMSIE||sel.rangeCount==1){if(user_interface){var template=new Array();var sp=getColRowSpan(tdElm);template['file']='../../plugins/table/merge_cells.htm';template['width']=250;template['height']=105+(tinyMCE.isNS7?25:0);template['width']+=tinyMCE.getLang('lang_table_merge_cells_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_merge_cells_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:"update",numcols:sp.colspan,numrows:sp.rowspan});return true}else{var numRows=parseInt(value['numrows']);var numCols=parseInt(value['numcols']);var cpos=getCellPos(grid,tdElm);if((""+numRows)=="NaN")numRows=1;if((""+numCols)=="NaN")numCols=1;var tRows=tableElm.rows;for(var y=cpos.rowindex;y0)rows[rows.length]=rowCells}}}else{var cells=new Array();var sel=inst.getSel();var lastTR=null;var curRow=null;var x1=-1,y1=-1,x2,y2;if(sel.rangeCount<2)return true;for(var i=0;i0)rows[rows.length]=rowCells}var curRow=new Array();var lastTR=null;for(var y=0;ycolSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var x=0;xrowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var y=0;y0))tdElm.innerHTML+=html;if(rows[y][x]!=tdElm&&!rows[y][x]._deleted){var cpos=getCellPos(grid,rows[y][x]);var tr=rows[y][x].parentNode;tr.removeChild(rows[y][x]);rows[y][x]._deleted=true;if(!tr.hasChildNodes()){tr.parentNode.removeChild(tr);var lastCell=null;for(var x=0;cellElm=getCell(grid,cpos.rowindex,x);x++){if(cellElm!=lastCell&&cellElm.rowSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.rowSpan--}}}}break}tableElm=tinyMCE.getParentElement(inst.getFocusElement(),"table");tinyMCE.handleVisualAid(tableElm,true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);tinyMCE.triggerNodeChange();inst.repaint()}return true}return false}};tinyMCE.addPlugin("table",TinyMCE_TablePlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/table/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/table/editor_plugin_src.js new file mode 100644 index 0000000..75aaa4d --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/editor_plugin_src.js @@ -0,0 +1,1073 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('table'); + +var TinyMCE_TablePlugin = { + getInfo : function() { + return { + longname : 'Tables', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/table', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + if (tinyMCE.isGecko) { + var doc = inst.getDoc(); + tinyMCE.addEvent(doc, "mouseup", TinyMCE_TablePlugin._mouseDownHandler); + } + + inst.tableRowClipboard = null; + }, + + /** + * Returns the HTML contents of the table control. + */ + getControlHTML : function(control_name) { + var controls = new Array( + ['table', 'table.gif', 'lang_table_desc', 'mceInsertTable', true], + ['delete_table', 'table_delete.gif', 'lang_table_del', 'mceTableDelete'], + ['delete_col', 'table_delete_col.gif', 'lang_table_delete_col_desc', 'mceTableDeleteCol'], + ['delete_row', 'table_delete_row.gif', 'lang_table_delete_row_desc', 'mceTableDeleteRow'], + ['col_after', 'table_insert_col_after.gif', 'lang_table_col_after_desc', 'mceTableInsertColAfter'], + ['col_before', 'table_insert_col_before.gif', 'lang_table_col_before_desc', 'mceTableInsertColBefore'], + ['row_after', 'table_insert_row_after.gif', 'lang_table_row_after_desc', 'mceTableInsertRowAfter'], + ['row_before', 'table_insert_row_before.gif', 'lang_table_row_before_desc', 'mceTableInsertRowBefore'], + ['row_props', 'table_row_props.gif', 'lang_table_row_desc', 'mceTableRowProps', true], + ['cell_props', 'table_cell_props.gif', 'lang_table_cell_desc', 'mceTableCellProps', true], + ['split_cells', 'table_split_cells.gif', 'lang_table_split_cells_desc', 'mceTableSplitCells', true], + ['merge_cells', 'table_merge_cells.gif', 'lang_table_merge_cells_desc', 'mceTableMergeCells', true]); + + // Render table control + for (var i=0; i 4 ? but[4] : false) + (but.length > 5 ? ', \'' + but[5] + '\'' : '') + ');return false;'; + + if (but[0] == control_name) + return tinyMCE.getButtonHTML(control_name, but[2], '{$pluginurl}/images/'+ but[1], but[3], (but.length > 4 ? but[4] : false)); + } + + // Special tablecontrols + if (control_name == "tablecontrols") { + var html = ""; + + html += tinyMCE.getControlHTML("table"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_props"); + html += tinyMCE.getControlHTML("cell_props"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("row_before"); + html += tinyMCE.getControlHTML("row_after"); + html += tinyMCE.getControlHTML("delete_row"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("col_before"); + html += tinyMCE.getControlHTML("col_after"); + html += tinyMCE.getControlHTML("delete_col"); + html += tinyMCE.getControlHTML("separator"); + html += tinyMCE.getControlHTML("split_cells"); + html += tinyMCE.getControlHTML("merge_cells"); + + return html; + } + + return ""; + }, + + /** + * Executes the table commands. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Is table command + switch (command) { + case "mceInsertTable": + case "mceTableRowProps": + case "mceTableCellProps": + case "mceTableSplitCells": + case "mceTableMergeCells": + case "mceTableInsertRowBefore": + case "mceTableInsertRowAfter": + case "mceTableDeleteRow": + case "mceTableInsertColBefore": + case "mceTableInsertColAfter": + case "mceTableDeleteCol": + case "mceTableCutRow": + case "mceTableCopyRow": + case "mceTablePasteRowBefore": + case "mceTablePasteRowAfter": + case "mceTableDelete": + var inst = tinyMCE.getInstanceById(editor_id); + + inst.execCommand('mceBeginUndoLevel'); + TinyMCE_TablePlugin._doExecCommand(editor_id, element, command, user_interface, value); + inst.execCommand('mceEndUndoLevel'); + + return true; + } + + // Pass to next handler in chain + return false; + }, + + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + var colspan = "1", rowspan = "1", tdElm; + + var inst = tinyMCE.getInstanceById(editor_id); + + // Reset table controls + tinyMCE.switchClass(editor_id + '_table', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonDisabled'); + + // Within a td element + if (tdElm = tinyMCE.getParentElement(node, "td,th")) { + tinyMCE.switchClass(editor_id + '_cell_props', 'mceButtonSelected'); + tinyMCE.switchClass(editor_id + '_delete_table', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_row_before', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_row_after', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_row', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_col_before', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_col_after', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_delete_col', 'mceButtonNormal'); + + colspan = tinyMCE.getAttrib(tdElm, "colspan"); + rowspan = tinyMCE.getAttrib(tdElm, "rowspan"); + + colspan = colspan == "" ? "1" : colspan; + rowspan = rowspan == "" ? "1" : rowspan; + + if (colspan != "1" || rowspan != "1") + tinyMCE.switchClass(editor_id + '_split_cells', 'mceButtonNormal'); + } + + // Within a tr element + if (tinyMCE.getParentElement(node, "tr")) + tinyMCE.switchClass(editor_id + '_row_props', 'mceButtonSelected'); + + // Within table + if (tinyMCE.getParentElement(node, "table")) { + tinyMCE.switchClass(editor_id + '_table', 'mceButtonSelected'); + tinyMCE.switchClass(editor_id + '_merge_cells', 'mceButtonNormal'); + } + }, + + // Private plugin internal methods + + _mouseDownHandler : function(e) { + var elm = tinyMCE.isMSIE ? event.srcElement : e.target; + var focusElm = tinyMCE.selectedInstance.getFocusElement(); + + // If press on special Mozilla create TD/TR thingie + if (elm.nodeName == "BODY" && (focusElm.nodeName == "TD" || focusElm.nodeName == "TH" || (focusElm.parentNode && focusElm.parentNode.nodeName == "TD") ||(focusElm.parentNode && focusElm.parentNode.nodeName == "TH") )) { + window.setTimeout(function() { + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + }, 10); + } + }, + + /** + * Executes the table commands. + */ + _doExecCommand : function(editor_id, element, command, user_interface, value) { + var inst = tinyMCE.getInstanceById(editor_id); + var focusElm = inst.getFocusElement(); + var trElm = tinyMCE.getParentElement(focusElm, "tr"); + var tdElm = tinyMCE.getParentElement(focusElm, "td,th"); + var tableElm = tinyMCE.getParentElement(focusElm, "table"); + var doc = inst.contentWindow.document; + var tableBorder = tableElm ? tableElm.getAttribute("border") : ""; + + // Get first TD if no TD found + if (trElm && tdElm == null) + tdElm = trElm.cells[0]; + + // ------- Inner functions --------- + function inArray(ar, v) { + for (var i=0; i 0 && inArray(ar[i], v)) + return true; + + // Found value + if (ar[i] == v) + return true; + } + + return false; + } + + function makeTD() { + var newTD = doc.createElement("td"); + newTD.innerHTML = " "; + } + + function getColRowSpan(td) { + var colspan = tinyMCE.getAttrib(td, "colspan"); + var rowspan = tinyMCE.getAttrib(td, "rowspan"); + + colspan = colspan == "" ? 1 : parseInt(colspan); + rowspan = rowspan == "" ? 1 : parseInt(rowspan); + + return {colspan : colspan, rowspan : rowspan}; + } + + function getCellPos(grid, td) { + var x, y; + + for (y=0; y 1) { // Remove due to colspan + for (var i=x; i 1) + td.rowSpan = sd.rowspan + 1; + + lastElm = td; + } + + deleteMarked(tableElm); + } + } + + function prevElm(node, name) { + while ((node = node.previousSibling) != null) { + if (node.nodeName == name) + return node; + } + + return null; + } + + function nextElm(node, names) { + var namesAr = names.split(','); + + while ((node = node.nextSibling) != null) { + for (var i=0; i 1) { + do { + var nexttd = nextElm(td, "TD,TH"); + + if (td._delete) + td.parentNode.removeChild(td); + } while ((td = nexttd) != null); + } + } while ((tr = next) != null); + } + + function addRows(td_elm, tr_elm, rowspan) { + // Add rows + td_elm.rowSpan = 1; + var trNext = nextElm(tr_elm, "TR"); + for (var i=1; i 1) { + var newTD = cells[x].cloneNode(true); + var sd = getColRowSpan(cells[x]); + + newTD.rowSpan = sd.rowspan - 1; + + var nextTD = nextTR.cells[x]; + + if (nextTD == null) + nextTR.appendChild(newTD); + else + nextTR.insertBefore(newTD, nextTD); + } + } + + // Delete cells + var lastTDElm = null; + for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd.rowspan > 1) { + tdElm.rowSpan = sd.rowspan - 1; + } else { + trElm = tdElm.parentNode; + + if (trElm.parentNode) + trElm._delete = true; + } + + lastTDElm = tdElm; + } + } + + deleteMarked(tableElm); + + cpos.rowindex--; + if (cpos.rowindex < 0) + cpos.rowindex = 0; + + // Recalculate grid and select + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableInsertColBefore": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + tdElm.parentNode.insertBefore(newTD, tdElm); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex + 1), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableInsertColAfter": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] == 1) { + var newTD = doc.createElement(tdElm.nodeName); + + newTD.innerHTML = " "; + newTD.rowSpan = tdElm.rowSpan; + + var nextTD = nextElm(tdElm, "TD,TH"); + if (nextTD == null) + tdElm.parentNode.appendChild(newTD); + else + nextTD.parentNode.insertBefore(newTD, nextTD); + } else + tdElm.colSpan++; + + lastTDElm = tdElm; + } + } + + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableDeleteCol": + if (!trElm || !tdElm) + return true; + + var grid = getTableGrid(tableElm); + var cpos = getCellPos(grid, tdElm); + var lastTDElm = null; + + // Only one col, remove whole table + if (grid.length > 1 && grid[0].length <= 1) { + tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for table instead of tbody + tableElm.parentNode.removeChild(tableElm); + return true; + } + + // Delete cells + for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++) { + if (tdElm != lastTDElm) { + var sd = getColRowSpan(tdElm); + + if (sd['colspan'] > 1) + tdElm.colSpan = sd['colspan'] - 1; + else { + if (tdElm.parentNode) + tdElm.parentNode.removeChild(tdElm); + } + + lastTDElm = tdElm; + } + } + + cpos.cellindex--; + if (cpos.cellindex < 0) + cpos.cellindex = 0; + + // Recalculate grid and select + grid = getTableGrid(tableElm); + inst.selection.selectNode(getCell(grid, cpos.rowindex, 0), tinyMCE.isGecko, true); // Only collape on gecko + break; + + case "mceTableSplitCells": + if (!trElm || !tdElm) + return true; + + var spandata = getColRowSpan(tdElm); + + var colspan = spandata["colspan"]; + var rowspan = spandata["rowspan"]; + + // Needs splitting + if (colspan > 1 || rowspan > 1) { + // Generate cols + tdElm.colSpan = 1; + for (var i=1; i 1) + addRows(newTD, trElm, rowspan); + } + + addRows(tdElm, trElm, rowspan); + } + + // Apply visual aids + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + break; + + case "mceTableMergeCells": + var rows = new Array(); + var sel = inst.getSel(); + var grid = getTableGrid(tableElm); + + if (tinyMCE.isMSIE || sel.rangeCount == 1) { + if (user_interface) { + // Setup template + var template = new Array(); + var sp = getColRowSpan(tdElm); + + template['file'] = '../../plugins/table/merge_cells.htm'; + template['width'] = 250; + template['height'] = 105 + (tinyMCE.isNS7 ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_table_merge_cells_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_table_merge_cells_delta_height', 0); + + // Open window + tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes", action : "update", numcols : sp.colspan, numrows : sp.rowspan}); + + return true; + } else { + var numRows = parseInt(value['numrows']); + var numCols = parseInt(value['numcols']); + var cpos = getCellPos(grid, tdElm); + + if (("" + numRows) == "NaN") + numRows = 1; + + if (("" + numCols) == "NaN") + numCols = 1; + + // Get rows and cells + var tRows = tableElm.rows; + for (var y=cpos.rowindex; y 0) + rows[rows.length] = rowCells; + } + + //return true; + } + } else { + var cells = new Array(); + var sel = inst.getSel(); + var lastTR = null; + var curRow = null; + var x1 = -1, y1 = -1, x2, y2; + + // Only one cell selected, whats the point? + if (sel.rangeCount < 2) + return true; + + // Get all selected cells + for (var i=0; i 0) + rows[rows.length] = rowCells; + } + + // Find selected cells in grid and box + var curRow = new Array(); + var lastTR = null; + for (var y=0; y colSpan) + colSpan = rowColSpan; + + lastRowSpan = -1; + } + + // Validate vertical and get total rowspan + var lastColSpan = -1; + for (var x=0; x rowSpan) + rowSpan = colRowSpan; + + lastColSpan = -1; + } + + // Setup td + tdElm = rows[0][0]; + tdElm.rowSpan = rowSpan; + tdElm.colSpan = colSpan; + + // Merge cells + for (var y=0; y 0)) + tdElm.innerHTML += html; + + // Not current cell + if (rows[y][x] != tdElm && !rows[y][x]._deleted) { + var cpos = getCellPos(grid, rows[y][x]); + var tr = rows[y][x].parentNode; + + tr.removeChild(rows[y][x]); + rows[y][x]._deleted = true; + + // Empty TR, remove it + if (!tr.hasChildNodes()) { + tr.parentNode.removeChild(tr); + + var lastCell = null; + for (var x=0; cellElm = getCell(grid, cpos.rowindex, x); x++) { + if (cellElm != lastCell && cellElm.rowSpan > 1) + cellElm.rowSpan--; + + lastCell = cellElm; + } + + if (tdElm.rowSpan > 1) + tdElm.rowSpan--; + } + } + } + } + + break; + } + + tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + tinyMCE.handleVisualAid(tableElm, true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + tinyMCE.triggerNodeChange(); + inst.repaint(); + } + + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +tinyMCE.addPlugin("table", TinyMCE_TablePlugin); diff --git a/admin/scripts/tiny_mce/plugins/table/images/buttons.gif b/admin/scripts/tiny_mce/plugins/table/images/buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c09ff952c4b7108367bc11ba2bd70ca1ed104cb GIT binary patch literal 1765 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 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_cell_props.gif b/admin/scripts/tiny_mce/plugins/table/images/table_cell_props.gif new file mode 100644 index 0000000000000000000000000000000000000000..bee7ed652f83476471ca0c0cfa5f2b72c6f98fc8 GIT binary patch literal 189 zcmV;u07CyqNk%w1VH5xq0K*6XGD>2SrMS}4+=8g`!qMXL>f*A!(w4mb{r>)O6%hbCQiN7b literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_delete.gif b/admin/scripts/tiny_mce/plugins/table/images/table_delete.gif new file mode 100644 index 0000000000000000000000000000000000000000..2a00e6ad66aa907381ff742dfcb6aa2e2ec3df17 GIT binary patch literal 372 zcmZ?wbhEHb6k!lyxXJ(m|NsC0^y%lMRiD=FywtS()2v-TmLL0b@8#d4r!Jkk_37m0 zM~gQcGWJTIwCYe$T-JmI8#W!fv~uABRt5$QCMID*=gj%{@86?GkAPN#oj^XJ z_>+Z^fkBHw2V?}uPYi4m9i|p|=t%XSSWnQADz=v_wHnRY+F7p1ZrJmz#y(t)Zk*lZk_e*Nv}? zvvK;2S*`-yoScFy1X+02@GWu?C=+Cw&cngQwa#s0G0Os;9qa<@otLayy@rR6PvG!w R-U}BmUG%+r&B>9$8UT)8gMR=3 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_delete_col.gif b/admin/scripts/tiny_mce/plugins/table/images/table_delete_col.gif new file mode 100644 index 0000000000000000000000000000000000000000..91f53af02aacbe33b04f782efb164560887d3bfe GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Fa0s;azZ{ony{xV8pTyKn*qO$Jn>V2Z^b%c^$j^>)S z^85Syjgq3Ovcf`IasU7TA^8LW000jFEC2ui02BZe000C~@X1N5y*TU5Yg=F;j03m~ z*9S7AQZ5E+6`;WiE*xJ4;S4OrVLD zq^HC5lAo_~pYs0x{r~^~A^8LW000jFEC2ui02BZe000D7@X1N5y*TU5>G|Nna879^ z3V9~RxRnWO7y-xJIHT+-78`=#Vo@mc9)Jo^FeDZl1O#9@r7(*PC}E43Bq@Wics$6M ZU5s;*CQxUf_d3_{csz*D~813(lGjTD@2z{n9^mxAJO7)Ys5OF}UnY`dU@qbmky T#N$E3kp`{PZ$%b~i~s;TfG0;) literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_insert_row_after.gif b/admin/scripts/tiny_mce/plugins/table/images/table_insert_row_after.gif new file mode 100644 index 0000000000000000000000000000000000000000..b9c14466138007454958671320914d9a7d8a6db5 GIT binary patch literal 163 zcmV;U09^k^Nk%w1VH5xq0K*Od0s;b3hwZ}J{xV8pU2lbto3eVM^5XCQa(@5FN<(eWPqQV3Ig1XGua#QiUNM~QhRb*u41x>1^iLw6v{&bt_E>x1D!Tyq@xq`0#T6LwOvdL|b z(z4F}lDPhYn!-Y4ng9R*A^8LW000jFEC2ui02BZe000DY@X1N5y*TU5Y5HK87$oTl zLW8cziUMcq3atxINz(*;fcy>zVR(}yP=SSVxhOap#m7;QWHz6J=oGb%7 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_row_props.gif b/admin/scripts/tiny_mce/plugins/table/images/table_row_props.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5c7cc37aaded685d68a6f1d0f5f204415258489 GIT binary patch literal 187 zcmV;s07U;sNk%w1VH5xq0K*CZGD>2SrMS}5-GZj_!qMXH@&2N=(w4mbqOihJVuJnt z{^sQ3lB)8xz|uleasU7TA^8LW000jFEC2ui02BZe000DN@X1N5y*TU5EBnkKj-9KxjG%0%ik9LBwDPfF*DxWw(Ncc#J3` p0@_Nzrf3x2h<5?KWxL^Wx|%>X2mX2#XaIzThJ+o7ii;Hy06QxAQu6=+ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/images/table_split_cells.gif b/admin/scripts/tiny_mce/plugins/table/images/table_split_cells.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ccb1b5f89d35619c9fe7a81957305c93f3ed8fc GIT binary patch literal 210 zcmV;@04@JVNk%w1VH5xq0K)FI0=7!2VKkqmrb#i?scsvdKbY znlMRZVtuQCnZ&Zr{r~^~A^8LW000jFEC2ui02BZe000Dk@X1N5y*TU5Y5HK893<%p zLW8c%iY{mB3dRgiNz(*8!x#pIfU#7qN5Q2I~2E2l>h($ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/table/jscripts/cell.js b/admin/scripts/tiny_mce/plugins/table/jscripts/cell.js new file mode 100644 index 0000000..436eaad --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/jscripts/cell.js @@ -0,0 +1,249 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') + + var inst = tinyMCE.selectedInstance; + var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(tinyMCE.getAttrib(tdElm, "style")); + + // Get table cell data + var celltype = tdElm.nodeName.toLowerCase(); + var align = tinyMCE.getAttrib(tdElm, 'align'); + var valign = tinyMCE.getAttrib(tdElm, 'valign'); + var width = trimSize(getStyle(tdElm, 'width', 'width')); + var height = trimSize(getStyle(tdElm, 'height', 'height')); + var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); + var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tdElm, 'class'), false); + var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");; + var id = tinyMCE.getAttrib(tdElm, 'id'); + var lang = tinyMCE.getAttrib(tdElm, 'lang'); + var dir = tinyMCE.getAttrib(tdElm, 'dir'); + var scope = tinyMCE.getAttrib(tdElm, 'scope'); + + // Setup form + addClassesToList('class', 'table_cell_styles'); + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.backgroundimage.value = backgroundimage; + formObj.width.value = width; + formObj.height.value = height; + formObj.id.value = id; + formObj.lang.value = lang; + formObj.style.value = tinyMCE.serializeStyle(st); + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'valign', valign); + selectByValue(formObj, 'class', className); + selectByValue(formObj, 'celltype', celltype); + selectByValue(formObj, 'dir', dir); + selectByValue(formObj, 'scope', scope); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); +} + +function updateAction() { + tinyMCEPopup.restoreSelection(); + + var inst = tinyMCE.selectedInstance; + var tdElm = tinyMCE.getParentElement(inst.getFocusElement(), "td,th"); + var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr"); + var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + var formObj = document.forms[0]; + + inst.execCommand('mceBeginUndoLevel'); + + switch (getSelectValue(formObj, 'action')) { + case "cell": + var celltype = getSelectValue(formObj, 'celltype'); + var scope = getSelectValue(formObj, 'scope'); + + if (tinyMCE.getParam("accessibility_warnings")) { + if (celltype == "th" && scope == "") + var answer = confirm(tinyMCE.getLang('lang_table_missing_scope', '', true)); + else + var answer = true; + + if (!answer) + return; + } + + updateCell(tdElm); + break; + + case "row": + var cell = trElm.firstChild; + + if (cell.nodeName != "TD" && cell.nodeName != "TH") + cell = nextCell(cell); + + do { + cell = updateCell(cell, true); + } while ((cell = nextCell(cell)) != null); + + break; + + case "all": + var rows = tableElm.getElementsByTagName("tr"); + + for (var i=0; i colLimit) { + alert(tinyMCE.getLang('lang_table_col_limit', '', true, {cols : colLimit})); + return false; + } else if (rowLimit && rows > rowLimit) { + alert(tinyMCE.getLang('lang_table_row_limit', '', true, {rows : rowLimit})); + return false; + } else if (cellLimit && cols * rows > cellLimit) { + alert(tinyMCE.getLang('lang_table_cell_limit', '', true, {cells : cellLimit})); + return false; + } + + // Update table + if (action == "update") { + inst.execCommand('mceBeginUndoLevel'); + + tinyMCE.setAttrib(elm, 'cellPadding', cellpadding, true); + tinyMCE.setAttrib(elm, 'cellSpacing', cellspacing, true); + tinyMCE.setAttrib(elm, 'border', border, true); + tinyMCE.setAttrib(elm, 'align', align); + tinyMCE.setAttrib(elm, 'class', className); + tinyMCE.setAttrib(elm, 'style', style); + tinyMCE.setAttrib(elm, 'id', id); + tinyMCE.setAttrib(elm, 'summary', summary); + tinyMCE.setAttrib(elm, 'dir', dir); + tinyMCE.setAttrib(elm, 'lang', lang); + + capEl = elm.getElementsByTagName('caption')[0]; + + if (capEl && !caption) + capEl.parentNode.removeChild(capEl); + + if (!capEl && caption) { + capEl = elm.ownerDocument.createElement('caption'); + capEl.innerHTML = ' '; + elm.insertBefore(capEl, elm.firstChild); + } + + // Not inline styles + if (!tinyMCE.getParam("inline_styles")) + tinyMCE.setAttrib(elm, 'width', width, true); + + // Remove these since they are not valid XHTML + tinyMCE.setAttrib(elm, 'borderColor', ''); + tinyMCE.setAttrib(elm, 'bgColor', ''); + tinyMCE.setAttrib(elm, 'background', ''); + tinyMCE.setAttrib(elm, 'height', ''); + + if (background != '') + elm.style.backgroundImage = "url('" + background + "')"; + else + elm.style.backgroundImage = ''; + + if (tinyMCE.getParam("inline_styles")) + elm.style.borderWidth = border + "px"; + + if (tinyMCE.getParam("inline_styles")) { + if (width != '') + elm.style.width = getCSSSize(width); + } + + if (bordercolor != "") { + elm.style.borderColor = bordercolor; + elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; + elm.style.borderWidth = border == "" ? "1px" : border; + } else + elm.style.borderColor = ''; + + elm.style.backgroundColor = bgcolor; + elm.style.height = getCSSSize(height); + + tinyMCE.handleVisualAid(tinyMCE.tableElm, false, inst.visualAid, inst); + + // Fix for stange MSIE align bug + tinyMCE.tableElm.outerHTML = tinyMCE.tableElm.outerHTML; + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + tinyMCE.triggerNodeChange(); + inst.execCommand('mceEndUndoLevel'); + + // Repaint if dimensions changed + if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) + inst.repaint(); + + tinyMCEPopup.close(); + return true; + } + + // Create new table + html += '/g, '>'); + + return ' ' + attrib + '="' + value + '"'; +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); + document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); + document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); + + var cols = 2, rows = 2, border = tinyMCE.getParam('table_default_border', '0'), cellpadding = tinyMCE.getParam('table_default_cellpadding', ''), cellspacing = tinyMCE.getParam('table_default_cellspacing', ''); + var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; + var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = ""; + var inst = tinyMCE.selectedInstance; + var formObj = document.forms[0]; + var elm = tinyMCE.getParentElement(inst.getFocusElement(), "table"); + + tinyMCE.tableElm = elm; + action = tinyMCE.getWindowArg('action'); + if (action == null) + action = tinyMCE.tableElm ? "update" : "insert"; + + if (tinyMCE.tableElm && action != "insert") { + var rowsAr = tinyMCE.tableElm.rows; + var cols = 0; + for (var i=0; i cols) + cols = rowsAr[i].cells.length; + + cols = cols; + rows = rowsAr.length; + + st = tinyMCE.parseStyle(tinyMCE.getAttrib(tinyMCE.tableElm, "style")); + border = trimSize(getStyle(elm, 'border', 'borderWidth')); + cellpadding = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellpadding', ""); + cellspacing = tinyMCE.getAttrib(tinyMCE.tableElm, 'cellspacing', ""); + width = trimSize(getStyle(elm, 'width', 'width')); + height = trimSize(getStyle(elm, 'height', 'height')); + bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); + bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); + align = tinyMCE.getAttrib(tinyMCE.tableElm, 'align', align); + className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(tinyMCE.tableElm, 'class'), false); + id = tinyMCE.getAttrib(tinyMCE.tableElm, 'id'); + summary = tinyMCE.getAttrib(tinyMCE.tableElm, 'summary'); + style = tinyMCE.serializeStyle(st); + dir = tinyMCE.getAttrib(tinyMCE.tableElm, 'dir'); + lang = tinyMCE.getAttrib(tinyMCE.tableElm, 'lang'); + background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + formObj.caption.checked = tinyMCE.tableElm.getElementsByTagName('caption').length > 0; + + orgTableWidth = width; + orgTableHeight = height; + + action = "update"; + } + + addClassesToList('class', "table_styles"); + + // Update form + selectByValue(formObj, 'align', align); + selectByValue(formObj, 'class', className); + formObj.cols.value = cols; + formObj.rows.value = rows; + formObj.border.value = border; + formObj.cellpadding.value = cellpadding; + formObj.cellspacing.value = cellspacing; + formObj.width.value = width; + formObj.height.value = height; + formObj.bordercolor.value = bordercolor; + formObj.bgcolor.value = bgcolor; + formObj.id.value = id; + formObj.summary.value = summary; + formObj.style.value = style; + formObj.dir.value = dir; + formObj.lang.value = lang; + formObj.backgroundimage.value = background; + formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); + + updateColor('bordercolor_pick', 'bordercolor'); + updateColor('bgcolor_pick', 'bgcolor'); + + // Resize some elements + if (isVisible('backgroundimagebrowser')) + document.getElementById('backgroundimage').style.width = '180px'; + + // Disable some fields in update mode + if (action == "update") { + formObj.cols.disabled = true; + formObj.rows.disabled = true; + } +} + +function changedSize() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + var width = formObj.width.value; + if (width != "") + st['width'] = tinyMCE.getParam("inline_styles") ? getCSSSize(width) : ""; + else + st['width'] = ""; + + var height = formObj.height.value; + if (height != "") + st['height'] = getCSSSize(height); + else + st['height'] = ""; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBackgroundImage() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedBorder() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + // Update border width if the element has a color + if (formObj.border.value != "" && formObj.bordercolor.value != "") + st['border-width'] = formObj.border.value + "px"; + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedColor() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + st['background-color'] = formObj.bgcolor.value; + + if (formObj.bordercolor.value != "") { + st['border-color'] = formObj.bordercolor.value; + + // Add border-width if it's missing + if (!st['border-width']) + st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px"; + } + + formObj.style.value = tinyMCE.serializeStyle(st); +} + +function changedStyle() { + var formObj = document.forms[0]; + var st = tinyMCE.parseStyle(formObj.style.value); + + if (st['background-image']) + formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); + else + formObj.backgroundimage.value = ''; + + if (st['width']) + formObj.width.value = trimSize(st['width']); + + if (st['height']) + formObj.height.value = trimSize(st['height']); + + if (st['background-color']) { + formObj.bgcolor.value = st['background-color']; + updateColor('bgcolor_pick','bgcolor'); + } + + if (st['border-color']) { + formObj.bordercolor.value = st['border-color']; + updateColor('bordercolor_pick','bordercolor'); + } +} diff --git a/admin/scripts/tiny_mce/plugins/table/langs/en.js b/admin/scripts/tiny_mce/plugins/table/langs/en.js new file mode 100644 index 0000000..7597b3c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/langs/en.js @@ -0,0 +1,79 @@ +// UK lang variables + +tinyMCE.addToLang('table',{ +general_tab : 'General', +advanced_tab : 'Advanced', +general_props : 'General properties', +advanced_props : 'Advanced properties', +desc : 'Inserts a new table', +row_before_desc : 'Insert row before', +row_after_desc : 'Insert row after', +delete_row_desc : 'Delete row', +col_before_desc : 'Insert column before', +col_after_desc : 'Insert column after', +delete_col_desc : 'Remove column', +rowtype : 'Row in table part', +title : 'Insert/Modify table', +width : 'Width', +height : 'Height', +cols : 'Columns', +rows : 'Rows', +cellspacing : 'Cellspacing', +cellpadding : 'Cellpadding', +border : 'Border', +align : 'Alignment', +align_default : 'Default', +align_left : 'Left', +align_right : 'Right', +align_middle : 'Center', +row_title : 'Table row properties', +cell_title : 'Table cell properties', +cell_type : 'Cell type', +row_desc : 'Table row properties', +cell_desc : 'Table cell properties', +valign : 'Vertical alignment', +align_top : 'Top', +align_bottom : 'Bottom', +props_desc : 'Table properties', +bordercolor : 'Border color', +bgcolor : 'Background color', +merge_cells_title : 'Merge table cells', +split_cells_desc : 'Split table cells', +merge_cells_desc : 'Merge table cells', +cut_row_desc : 'Cut table row', +copy_row_desc : 'Copy table row', +paste_row_before_desc : 'Paste table row before', +paste_row_after_desc : 'Paste table row after', +id : 'Id', +style: 'Style', +langdir : 'Language direction', +langcode : 'Language code', +mime : 'Target MIME type', +ltr : 'Left to right', +rtl : 'Right to left', +bgimage : 'Background image', +summary : 'Summary', +td : "Data", +th : "Header", +cell_cell : 'Update current cell', +cell_row : 'Update all cells in row', +cell_all : 'Update all cells in table', +row_row : 'Update current row', +row_odd : 'Update odd rows in table', +row_even : 'Update even rows in table', +row_all : 'Update all rows in table', +thead : 'Table Head', +tbody : 'Table Body', +tfoot : 'Table Foot', +del : 'Delete table', +scope : 'Scope', +row : 'Row', +col : 'Col', +rowgroup : 'Row Group', +colgroup : 'Col Group', +col_limit : 'You\'ve exceeded the maximum number of columns of {$cols}.', +row_limit : 'You\'ve exceeded the maximum number of rows of {$rows}.', +cell_limit : 'You\'ve exceeded the maximum number of cells of {$cells}.', +missing_scope: 'Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.', +caption : 'Table caption' +}); diff --git a/admin/scripts/tiny_mce/plugins/table/merge_cells.htm b/admin/scripts/tiny_mce/plugins/table/merge_cells.htm new file mode 100644 index 0000000..10896bf --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/merge_cells.htm @@ -0,0 +1,38 @@ + + + {$lang_table_merge_cells_title} + + + + + + + +
+
+ {$lang_table_merge_cells_title} + + + + + + + + + +
{$lang_table_cols}: +
{$lang_table_rows}:
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/table/readme.txt b/admin/scripts/tiny_mce/plugins/table/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/plugins/table/row.htm b/admin/scripts/tiny_mce/plugins/table/row.htm new file mode 100644 index 0000000..64f2afc --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/row.htm @@ -0,0 +1,159 @@ + + + {$lang_table_row_title} + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/table/table.htm b/admin/scripts/tiny_mce/plugins/table/table.htm new file mode 100644 index 0000000..6c722db --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/table/table.htm @@ -0,0 +1,160 @@ + + + {$lang_table_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_table_general_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+
+ {$lang_table_advanced_props} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+ + + + + +
 
+
+ + + + + +
 
+
+ + + + + +
 
+
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/template/blank.htm b/admin/scripts/tiny_mce/plugins/template/blank.htm new file mode 100644 index 0000000..7d2f992 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/blank.htm @@ -0,0 +1,23 @@ + + + blank_page + + + + + + + diff --git a/admin/scripts/tiny_mce/plugins/template/css/template.css b/admin/scripts/tiny_mce/plugins/template/css/template.css new file mode 100644 index 0000000..2d23a49 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/css/template.css @@ -0,0 +1,23 @@ +#frmbody { + padding: 10px; + background-color: #FFF; + border: 1px solid #CCC; +} + +.frmRow { + margin-bottom: 10px; +} + +#templatesrc { + border: none; + width: 320px; + height: 240px; +} + +.title { + padding-bottom: 5px; +} + +.mceActionPanel { + padding-top: 5px; +} diff --git a/admin/scripts/tiny_mce/plugins/template/editor_plugin.js b/admin/scripts/tiny_mce/plugins/template/editor_plugin.js new file mode 100644 index 0000000..7621af3 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('template');var TinyMCE_TemplatePlugin={getInfo:function(){return{longname:'Template plugin',author:'Moxiecode Systems AB',authorurl:'http://www.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){var cdate,mdate,content,x=0,key,value,rvals,ds=inst.getData('template');cdate=tinyMCE.getParam("template_cdate_classes",'').split(/\s+/);mdate=tinyMCE.getParam("template_mdate_classes",'').split(/\s+/);content=tinyMCE.getParam("template_selected_content_classes",'').split(/\s+/);for(x=0;x0?nodeArray[0]:null;nodeArray=[];if(ds.currentAction=="insert"){if(telm){tinyMCE.execCommand('mceBeginUndoLevel');ds.currentAction="insert-new";TinyMCE_TemplatePlugin._insertTemplate(editor_id,telm,value.title,value.tsrc,true);ds.currentAction=="insert";tinyMCE.execCommand('mceEndUndoLevel');tinyMCE.execInstanceCommand(editor_id,'mceCleanup',false)}else tinyMCE.execCommand('mceInsertContent',false,this._replaceValues(value.body))}else{nodeArray=TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode);current=[];newTmpl=[];tinyMCE.getNodeTree(telm,newTmpl);for(x=0;x','gi'),'');content=content.replace(new RegExp('
(\s| | )?(|\s)?
','gi'),'');content=content.replace(new RegExp('','gi'),'');break;case"insert_to_editor":content=content.replace(new RegExp('','gi'),'
');content=content.replace(new RegExp('','gi'),'
');break;case"get_from_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break;case"insert_to_editor_dom":nodes=tinyMCE.selectNodes(content,function(n){return tinyMCE.hasCSSClass(n,TinyMCE_TemplatePlugin.TMPL_ELEMENT)});TinyMCE_TemplatePlugin._applyFunctions(nodes,type);break}return content},_convertToNode:function(html){var elm=document.createElement('div');elm.innerHTML=html;return elm},_prepareTemplateContent:function(elms){var x,n,nodes=[];if(!elms)return{};if(!elms.length)elms=[elms];for(x=0;x';html+=elm.innerHTML;html+='';tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,html)},functions:{blank:function(elm,editor_event){},cdate:function(elm,editor_event){var d,dsrc;if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;d=new Date();dsrc=elm.innerHTML.match(new RegExp("","gi"));if(dsrc)d=new Date(RegExp.$1);elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_cdate_format",tinyMCE.getLang("lang_template_def_date_format")));elm.innerHTML+=""},mdate:function(elm,editor_event){var d=new Date();elm.innerHTML=TinyMCE_TemplatePlugin._getDateTime(d,tinyMCE.getParam("template_mdate_format",tinyMCE.getLang("lang_template_def_date_format")))},selectedContent:function(elm,editor_event){var ds=tinyMCE.selectedInstance.getData('template');if(editor_event!=TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT)return;if(ds.currentAction=="insert-new"&&!tinyMCE.hasCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)){elm.innerHTML=tinyMCE.selectedInstance.selection.getSelectedHTML();tinyMCE.addCSSClass(elm,TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)}},generateReplacer:function(s){return function(elm,editor_event){elm.innerHTML=""+s}}},_getDateTime:function(d,fmt){if(!fmt)return"";function addZeros(value,len){var i;value=""+value;if(value.length 0 ? nodeArray[0] : null; + nodeArray = []; + + if (ds.currentAction == "insert") { + //insert new template after applying all the template content functions + + // Is it a template or snippet + if (telm) { + tinyMCE.execCommand('mceBeginUndoLevel'); + ds.currentAction = "insert-new"; + TinyMCE_TemplatePlugin._insertTemplate(editor_id, telm, value.title, value.tsrc, true); + ds.currentAction == "insert"; + tinyMCE.execCommand('mceEndUndoLevel'); + tinyMCE.execInstanceCommand(editor_id, 'mceCleanup', false); + } else + tinyMCE.execCommand('mceInsertContent', false, this._replaceValues(value.body)); + } else { + // First collect the selected template in the editor + nodeArray = TinyMCE_TemplatePlugin._collectTemplateElements(ds.currentTmplNode); + current = []; + newTmpl = []; + tinyMCE.getNodeTree(telm, newTmpl); + + for (x=0; x', 'gi'), + '' + ); + + // delete any empty template wrappers + content = content.replace( + new RegExp('
(\s| | )?(|\s)?
', 'gi'), + '' + ); + + // replace the closing wrapper tag + content = content.replace( + new RegExp('', 'gi'), + '' + ); + + break; + + case "insert_to_editor": + // replace HTML comment with DIV wrapper + content = content.replace( + new RegExp('', 'gi'), + '
' + ); + + content = content.replace( + new RegExp('', 'gi'), + '
' + ); + + break; + + case "get_from_editor_dom": + // apply template content replacement functions + nodes = tinyMCE.selectNodes(content, function(n) { + return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); + } + ); + + TinyMCE_TemplatePlugin._applyFunctions(nodes, type); + + break; + + case "insert_to_editor_dom": + // apply template content replacement functions + nodes = tinyMCE.selectNodes(content, function(n) { + return tinyMCE.hasCSSClass(n, TinyMCE_TemplatePlugin.TMPL_ELEMENT); + } + ); + + TinyMCE_TemplatePlugin._applyFunctions(nodes, type); + + break; + } + + return content; + }, + + // Private plugin internal methods + + /** + * Creates a HTML DIV element and sets the innerHTML to equal the temlate innerHTML so that the template can be manipulated as DOM nodes. + * + * @param {string} Template innerHTML + * @return a HTML Element + * @type HTMLElement + */ + _convertToNode : function(html) { + var elm = document.createElement('div'); + + elm.innerHTML = html; + + return elm; + }, + + /** + * pass an array of template html elements and they will have the template class name added and any template functions applied + * + * @param {array} template HTML elements + * @return array of template HTML elements + * @type array + */ + _prepareTemplateContent : function(elms) { + var x, n, nodes = []; + + if (!elms) + return {}; + + if (!elms.length) + elms = [elms]; + + for (x = 0; x'; + html += elm.innerHTML; + html += ''; + + tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, html); + }, + + /** + * template functions - functions for modifying template content + */ + functions : { + blank : function(elm, editor_event) {}, + + cdate : function(elm, editor_event) { + var d, dsrc; + + if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) + return; + + d = new Date(); + // find out if the creation date was previously stored + dsrc = elm.innerHTML.match(new RegExp("", "gi")); + + if (dsrc) + d = new Date(RegExp.$1); + + elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_cdate_format", tinyMCE.getLang("lang_template_def_date_format"))); + //now we have to store the date value in a format easily read again, in case a future template change changes the date format... + elm.innerHTML += ""; + }, + + mdate : function(elm, editor_event) { + var d = new Date(); + elm.innerHTML = TinyMCE_TemplatePlugin._getDateTime(d, tinyMCE.getParam("template_mdate_format", tinyMCE.getLang("lang_template_def_date_format"))); + }, + + /** + * This will insert the currently selected editor content into the template element. + * It only does this if the template inserted is a new one and if the element does not have the special class. + * The special class name prevents this from happening more than once. + */ + selectedContent : function(elm, editor_event) { + var ds = tinyMCE.selectedInstance.getData('template'); + + if (editor_event != TinyMCE_TemplatePlugin.TMPL_TEMPLATE_EVENT) + return; + + if (ds.currentAction == "insert-new" && !tinyMCE.hasCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE)) { + elm.innerHTML = tinyMCE.selectedInstance.selection.getSelectedHTML(); + tinyMCE.addCSSClass(elm, TinyMCE_TemplatePlugin.TMPL_SEL_HTML_DONE); + } + }, + + /** + * When the plugin is initialised this generates the functions that insert configured strings into template elements. + */ + generateReplacer : function(s) { + return function(elm, editor_event) {elm.innerHTML = "" + s;}; + } + }, + + /** + * formats a date according to the format string - straight from the 'insert date/time' plugin + * + * @param {Date} date object + * @param {string} format string + * @return formatted date + * @type string + */ + _getDateTime : function(d,fmt) { + if (!fmt) + return ""; + + function addZeros(value, len) { + var i; + + value = "" + value; + + if (value.length < len) { + for (i=0; i<(len-value.length); i++) + value = "0" + value; + } + + return value; + } + + fmt = fmt.replace("%D", "%m/%d/%y"); + fmt = fmt.replace("%r", "%I:%M:%S %p"); + fmt = fmt.replace("%Y", "" + d.getFullYear()); + fmt = fmt.replace("%y", "" + d.getYear()); + fmt = fmt.replace("%m", addZeros(d.getMonth()+1, 2)); + fmt = fmt.replace("%d", addZeros(d.getDate(), 2)); + fmt = fmt.replace("%H", "" + addZeros(d.getHours(), 2)); + fmt = fmt.replace("%M", "" + addZeros(d.getMinutes(), 2)); + fmt = fmt.replace("%S", "" + addZeros(d.getSeconds(), 2)); + fmt = fmt.replace("%I", "" + ((d.getHours() + 11) % 12 + 1)); + fmt = fmt.replace("%p", "" + (d.getHours() < 12 ? "AM" : "PM")); + fmt = fmt.replace("%B", "" + tinyMCE.getLang("lang_template_months_long")[d.getMonth()]); + fmt = fmt.replace("%b", "" + tinyMCE.getLang("lang_template_months_short")[d.getMonth()]); + fmt = fmt.replace("%A", "" + tinyMCE.getLang("lang_template_day_long")[d.getDay()]); + fmt = fmt.replace("%a", "" + tinyMCE.getLang("lang_template_day_short")[d.getDay()]); + fmt = fmt.replace("%%", "%"); + + return fmt; + }, + + TMPL_ELEMENT : 'mceTmplElm', + TMPL : 'mceTmpl', + TMPL_BEGINS : 'mceTmplBegins', + TMPL_SEL_HTML_DONE : 'mceSelHTMLDone', + TMPL_ENDS : 'mceTmplEnds', + TMPL_DATE_SRC_ATTR : 'mcetmpldtesrc', + TMPL_TEMPLATE_EVENT : 'prepare_template' +}; + +tinyMCE.addPlugin("template", TinyMCE_TemplatePlugin); diff --git a/admin/scripts/tiny_mce/plugins/template/images/template.gif b/admin/scripts/tiny_mce/plugins/template/images/template.gif new file mode 100644 index 0000000000000000000000000000000000000000..58c6610fab0db28cbad9f01bfa94976365354b2e GIT binary patch literal 582 zcmZ?wbhEHb6k!lyc*ek>owD}Xo3C?@ywyoxfAH3q#7Sp;YIjAq9bK^Pc3j_Szx)+m zHM`;`pNpS#HoS3PaK*Ox31=*dw>2-j7+AI`rstG@(b}krHJMY-WluP<6QYZAXGDcg@@TFtz_g{mL7mb$k5smj#w>G0xl4z2^yY)%j@^wW*>Qb@9BsCV8AdGfZ|UUMg|5C1|5)N zL2<&szPQ1oskx=Kt-YhOt3y)Lh)080fK^LZ+(Fj7&A@%`y!mr=+LYXxmbtE2>FRFS zCbN`<#d-6V)z)pS?yGjM=4<0zaM0bjO~l=XjoaPr%vpD*HaT~BA;HrwH(cD@`P(er z%@pjfGcw+C7j9#BXI5r-^6a*Do8B9>_ii_zJGLplVfZo2(0b890k*^iIucF|i;s5; Ynfiq&EOcP!m6sOFymO*3S%JYC0Pfnus{jB1 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/template/jscripts/template.js b/admin/scripts/tiny_mce/plugins/template/jscripts/template.js new file mode 100644 index 0000000..3c91615 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/jscripts/template.js @@ -0,0 +1,143 @@ +// Import external list url javascript +var url = tinyMCE.getParam("template_external_list_url"); +if (url != null) { + // Fix relative + if (url.charAt(0) != '/' && url.indexOf('://') == -1) + url = tinyMCE.documentBasePath + "/" + url; + + document.write(''); +} + +var TPU = { //Template Popup Utils + currentTemplateHTML : null, + templates : [], + inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')), + plugin : tinyMCE.getWindowArg('pluginObj'), + data : tinyMCE.selectedInstance.getData('template'), + + init : function() { + document.forms[0].insert.value = tinyMCE.getLang('lang_' + this.data.currentAction, 'Insert', true); + TPU.loadTemplatePaths(); + + if (this.data.currentAction == "update") + document.getElementById('warning').innerHTML = tinyMCE.getLang('lang_template_warning'); + + this.resizeInputs(); + }, + + loadTemplatePaths : function() { + var tsrc, sel, x, u; + + tsrc = tinyMCE.getParam("template_templates", false); + sel = document.getElementById('tpath'); + + // Setup external template list + if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { + for (x=0, tsrc = []; x' + + 'blank_page' + + '' + + '' + + '' + + this.currentTemplateHTML + + '' + + ''; + } + + // Write HTML to preview iframe + d.body.innerHTML = this.currentTemplateHTML; + + // Display description + for (x = 0; x < TPU.templates.length; x++) { + if (TPU.templates[x].src == o.value) { + document.getElementById('tmpldesc').innerHTML = TPU.templates[x].description; + break; + } + } + }, + + insertTemplate : function() { + var sel, opt; + + sel = document.getElementById('tpath'); + opt = sel.options[sel.selectedIndex]; + + // Is it a template or snippet + if (TPU.currentTemplateHTML.indexOf('mceTmpl')) + tinyMCEPopup.execCommand('mceTemplate', false, {title : opt.text, tsrc : opt.value, body : TPU.currentTemplateHTML}); + else + tinyMCEPopup.execCommand('mceInsertContent', false, TPU.currentTemplateHTML); + + tinyMCEPopup.close(); + }, + + getFileContents : function(u) { + var x, d, t = 'text/plain'; + + function g(s) { + x = 0; + + try { + x = new ActiveXObject(s); + } catch (s) { + } + + return x; + }; + + x = window.ActiveXObject ? g('Msxml2.XMLHTTP') || g('Microsoft.XMLHTTP') : new XMLHttpRequest(); + + // Synchronous AJAX load file + x.overrideMimeType && x.overrideMimeType(t); + x.open("GET", u, false); + x.send(null); + + return x.responseText; + }, + + resizeInputs : function() { + var wHeight, wWidth, elm; + + if (!self.innerWidth) { + wHeight = document.body.clientHeight - 160; + wWidth = document.body.clientWidth - 40; + } else { + wHeight = self.innerHeight - 160; + wWidth = self.innerWidth - 40; + } + + elm = document.getElementById('templatesrc'); + + if (elm) { + elm.style.height = Math.abs(wHeight) + 'px'; + elm.style.width = Math.abs(wWidth - 5) + 'px'; + } + } +}; diff --git a/admin/scripts/tiny_mce/plugins/template/langs/en.js b/admin/scripts/tiny_mce/plugins/template/langs/en.js new file mode 100644 index 0000000..bdbf3ff --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/langs/en.js @@ -0,0 +1,16 @@ +// UK lang variables + +tinyMCE.addToLang('template',{ +title : 'Templates', +label : 'Template', +desc_label : 'Description', +desc : 'Insert predefined template content', +select : 'Select a template', +preview : 'Preview', +warning : 'Warning: Updating a template with a different one may cause data loss.', +def_date_format : '%Y-%m-%d %H:%M:%S', +months_long : new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"), +months_short : new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), +day_long : new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"), +day_short : new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") +}); diff --git a/admin/scripts/tiny_mce/plugins/template/template.htm b/admin/scripts/tiny_mce/plugins/template/template.htm new file mode 100644 index 0000000..1e4a98a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/template/template.htm @@ -0,0 +1,37 @@ + + + {$lang_template_title} + + + + + + +
+
+
{$lang_template_desc}
+
+ +
+
+
+
+ {$lang_template_preview} + +
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/plugins/visualchars/editor_plugin.js b/admin/scripts/tiny_mce/plugins/visualchars/editor_plugin.js new file mode 100644 index 0000000..a358754 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/visualchars/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('visualchars');var TinyMCE_VisualCharsPlugin={getInfo:function(){return{longname:'Visual characters',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){inst.visualChars={state:false}},getControlHTML:function(cn){switch(cn){case"visualchars":return tinyMCE.getButtonHTML(cn,'lang_visualchars_desc','{$pluginurl}/images/visualchars.gif','mceVisualChars',false)}return""},execCommand:function(editor_id,element,command,user_interface,value){var inst=tinyMCE.getInstanceById(editor_id);switch(command){case"mceVisualChars":this._toggleVisualChars(editor_id,inst);return true}return false},cleanup:function(type,content,inst){if(type=="insert_to_editor_dom"||type=="get_from_editor_dom"){inst.visualChars.state=true;this._toggleVisualChars(inst.editorId,inst)}return content},_toggleVisualChars:function(editor_id,inst){var nl,i,h,d=inst.getDoc(),b=inst.getBody(),nv,s=inst.selection,bo;inst.visualChars.state=!inst.visualChars.state;bo=s.getBookmark(true);tinyMCE.switchClass(editor_id+'_visualchars',inst.visualChars.state?'mceButtonSelected':'mceButtonNormal');if(inst.visualChars.state){nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==3&&n.nodeValue&&n.nodeValue.indexOf('\u00a0')!=-1});for(i=0;i$1');nv=nv.replace(/\u00a0/g,'\u00b7');tinyMCE.setOuterHTML(nl[i],nv,d)}}else{nl=tinyMCE.selectNodes(b,function(n){return n.nodeType==1&&n.nodeName=='SPAN'&&n.className=='mceItemHiddenVisualChar'});for(i=0;i$1'); + nv = nv.replace(/\u00a0/g, '\u00b7'); + tinyMCE.setOuterHTML(nl[i], nv, d); + } + } else { + nl = tinyMCE.selectNodes(b, function(n) {return n.nodeType == 1 && n.nodeName == 'SPAN' && n.className == 'mceItemHiddenVisualChar';}); + + for (i=0; i69tt_pqET>MMXlZG|z`*eT|9>Ef z3>1H|FfuT3G3bB + + {$lang_xhtmlxtras_title_abbr_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/acronym.htm b/admin/scripts/tiny_mce/plugins/xhtmlxtras/acronym.htm new file mode 100644 index 0000000..193760e --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/acronym.htm @@ -0,0 +1,148 @@ + + + {$lang_xhtmlxtras_title_acronym_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/attributes.htm b/admin/scripts/tiny_mce/plugins/xhtmlxtras/attributes.htm new file mode 100644 index 0000000..aaf1dee --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/attributes.htm @@ -0,0 +1,153 @@ + + + {$lang_xhtmlxtras_attribs_title} + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_attribute_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
+ +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_attribute_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/cite.htm b/admin/scripts/tiny_mce/plugins/xhtmlxtras/cite.htm new file mode 100644 index 0000000..c72538c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/cite.htm @@ -0,0 +1,148 @@ + + + {$lang_xhtmlxtras_title_cite_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css new file mode 100644 index 0000000..9a6a235 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css @@ -0,0 +1,11 @@ +.panel_wrapper div.current { + height: 290px; +} + +#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { + width: 200px; +} + +#events_panel input { + width: 200px; +} diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/popup.css b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/popup.css new file mode 100644 index 0000000..ecdc370 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/popup.css @@ -0,0 +1,46 @@ +a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} + +img { + border: 0; +} + +input.field, select.field { + width: 200px; +} + +input.picker { + width: 179px; + margin-left: 5px; +} + +input.disabled { + border-color: #F2F2F2; +} + +img.picker { + vertical-align: text-bottom; + cursor: pointer; +} + +h1 { + padding: 0 0 5px 0; +} + +#remove { + font-weight: bold; + width: 90px; + height: 21px; + border: 0px; + background-image: url('../images/remove_button_bg.gif'); + cursor: pointer; + margin-left: 3px; +} + +.panel_wrapper div.current { + height: 160px; +} + +#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current { + height: 220px; +} diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css new file mode 100644 index 0000000..6838d90 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css @@ -0,0 +1,24 @@ +ins { + border-bottom: 1px solid green; + text-decoration: none; + color: green; +} + +del { + color: Red; + text-decoration: line-through; +} + +cite { + border-bottom: 1px dashed blue; +} + +acronym { + border-bottom: 1px dotted #CCC; + cursor: help; +} + +abbr, html\:abbr { + border-bottom: 1px dashed #CCC; + cursor: help; +} diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/del.htm b/admin/scripts/tiny_mce/plugins/xhtmlxtras/del.htm new file mode 100644 index 0000000..11a4d18 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/del.htm @@ -0,0 +1,169 @@ + + + {$lang_xhtmlxtras_title_del_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_general_tab} + + + + + + + + + +
: + + + + + +
{$lang_xhtmlxtras_insert_date}
+
:
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js new file mode 100644 index 0000000..8fa8055 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js @@ -0,0 +1 @@ +tinyMCE.importPluginLanguagePack('xhtmlxtras');var TinyMCE_XHTMLXtrasPlugin={getInfo:function(){return{longname:'XHTML Xtras Plugin',author:'Moxiecode Systems AB',authorurl:'http://tinymce.moxiecode.com',infourl:'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras',version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion}},initInstance:function(inst){tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/plugins/xhtmlxtras/css/xhtmlxtras.css")},getControlHTML:function(cn){switch(cn){case"cite":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_cite_desc','{$pluginurl}/images/cite.gif','mceCite',true);case"acronym":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_acronym_desc','{$pluginurl}/images/acronym.gif','mceAcronym',true);case"abbr":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_abbr_desc','{$pluginurl}/images/abbr.gif','mceAbbr',true);case"del":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_del_desc','{$pluginurl}/images/del.gif','mceDel',true);case"ins":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true);case"attribs":return tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_attribs_desc','{$pluginurl}/images/attribs.gif','mceAttributes',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var template,inst,elm;switch(command){case"mceCite":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/cite.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAcronym":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/acronym.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAbbr":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/abbr.htm';template['width']=350;template['height']=250;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceIns":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/ins.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceDel":if(!this._anySel(editor_id))return true;template=new Array();template['file']='../../plugins/xhtmlxtras/del.htm';template['width']=350;template['height']=310;tinyMCE.openWindow(template,{editor_id:editor_id});return true;case"mceAttributes":inst=tinyMCE.getInstanceById(editor_id);elm=inst.getFocusElement();if(elm&&elm.nodeName!=='BODY'&&elm.className.indexOf('mceItem')==-1){tinyMCE.openWindow({file:'../../plugins/xhtmlxtras/attributes.htm',width:380,height:370},{editor_id:editor_id})}return true}return false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/]+)>/gi,'');content=content.replace(/<\/abbr>/gi,'')}return content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var elm=tinyMCE.getParentElement(node);if(node==null)return;tinyMCE.switchClass(editor_id+'_attribs','mceButtonDisabled');if(!any_selection){tinyMCE.switchClass(editor_id+'_cite','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_acronym','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_abbr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_del','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_ins','mceButtonDisabled')}else{tinyMCE.switchClass(editor_id+'_cite','mceButtonNormal');tinyMCE.switchClass(editor_id+'_acronym','mceButtonNormal');tinyMCE.switchClass(editor_id+'_abbr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_del','mceButtonNormal');tinyMCE.switchClass(editor_id+'_ins','mceButtonNormal')}if(elm&&elm.nodeName!='BODY'&&elm.className.indexOf('mceItem')==-1)tinyMCE.switchClass(editor_id+'_attribs','mceButtonNormal');switch(node.nodeName){case"CITE":tinyMCE.switchClass(editor_id+'_cite','mceButtonSelected');return true;case"ACRONYM":tinyMCE.switchClass(editor_id+'_acronym','mceButtonSelected');return true;case"abbr":case"HTML:ABBR":case"ABBR":tinyMCE.switchClass(editor_id+'_abbr','mceButtonSelected');return true;case"DEL":tinyMCE.switchClass(editor_id+'_del','mceButtonSelected');return true;case"INS":tinyMCE.switchClass(editor_id+'_ins','mceButtonSelected');return true}return true},_anySel:function(editor_id){var inst=tinyMCE.getInstanceById(editor_id),t=inst.selection.getSelectedText(),pe;pe=tinyMCE.getParentElement(inst.getFocusElement(),'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS');return pe||inst.getFocusElement().nodeName=="IMG"||(t&&t.length>0)}};tinyMCE.addPlugin("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js new file mode 100644 index 0000000..7e73466 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js @@ -0,0 +1,199 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +/* Import plugin specific language pack */ +tinyMCE.importPluginLanguagePack('xhtmlxtras'); + +var TinyMCE_XHTMLXtrasPlugin = { + getInfo : function() { + return { + longname : 'XHTML Xtras Plugin', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + initInstance : function(inst) { + tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/plugins/xhtmlxtras/css/xhtmlxtras.css"); + }, + + getControlHTML : function(cn) { + switch (cn) { + case "cite": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_cite_desc', '{$pluginurl}/images/cite.gif', 'mceCite', true); + + case "acronym": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_acronym_desc', '{$pluginurl}/images/acronym.gif', 'mceAcronym', true); + + case "abbr": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_abbr_desc', '{$pluginurl}/images/abbr.gif', 'mceAbbr', true); + + case "del": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_del_desc', '{$pluginurl}/images/del.gif', 'mceDel', true); + + case "ins": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_ins_desc', '{$pluginurl}/images/ins.gif', 'mceIns', true); + + case "attribs": + return tinyMCE.getButtonHTML(cn, 'lang_xhtmlxtras_attribs_desc', '{$pluginurl}/images/attribs.gif', 'mceAttributes', true); + } + + return ""; + }, + + execCommand : function(editor_id, element, command, user_interface, value) { + var template, inst, elm; + + switch (command) { + case "mceCite": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/cite.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAcronym": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/acronym.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAbbr": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/abbr.htm'; + template['width'] = 350; + template['height'] = 250; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceIns": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/ins.htm'; + template['width'] = 350; + template['height'] = 310; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceDel": + if (!this._anySel(editor_id)) + return true; + + template = new Array(); + template['file'] = '../../plugins/xhtmlxtras/del.htm'; + template['width'] = 350; + template['height'] = 310; + tinyMCE.openWindow(template, {editor_id : editor_id}); + return true; + + case "mceAttributes": + inst = tinyMCE.getInstanceById(editor_id); + elm = inst.getFocusElement(); + + if (elm && elm.nodeName !== 'BODY' && elm.className.indexOf('mceItem') == -1) { + tinyMCE.openWindow({ + file : '../../plugins/xhtmlxtras/attributes.htm', + width : 380, + height : 370 + }, {editor_id : editor_id}); + } + + return true; + } + + return false; + }, + + cleanup : function(type, content, inst) { + if (type == 'insert_to_editor' && tinyMCE.isIE && !tinyMCE.isOpera) { + content = content.replace(/]+)>/gi, ''); + content = content.replace(/<\/abbr>/gi, ''); + } + + return content; + }, + + handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid, any_selection) { + var elm = tinyMCE.getParentElement(node); + + if (node == null) + return; + + tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonDisabled'); + + if (!any_selection) { + // Disable the buttons + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_del', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonDisabled'); + } else { + // A selection means the buttons should be active. + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_del', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonNormal'); + } + + if (elm && elm.nodeName != 'BODY' && elm.className.indexOf('mceItem') == -1) + tinyMCE.switchClass(editor_id + '_attribs', 'mceButtonNormal'); + + switch (node.nodeName) { + case "CITE": + tinyMCE.switchClass(editor_id + '_cite', 'mceButtonSelected'); + return true; + + case "ACRONYM": + tinyMCE.switchClass(editor_id + '_acronym', 'mceButtonSelected'); + return true; + + case "abbr": // IE + case "HTML:ABBR": // FF + case "ABBR": + tinyMCE.switchClass(editor_id + '_abbr', 'mceButtonSelected'); + return true; + + case "DEL": + tinyMCE.switchClass(editor_id + '_del', 'mceButtonSelected'); + return true; + + case "INS": + tinyMCE.switchClass(editor_id + '_ins', 'mceButtonSelected'); + return true; + } + + return true; + }, + + _anySel : function(editor_id) { + var inst = tinyMCE.getInstanceById(editor_id), t = inst.selection.getSelectedText(), pe; + + pe = tinyMCE.getParentElement(inst.getFocusElement(), 'CITE,ACRONYM,ABBR,HTML:ABBR,DEL,INS'); + + return pe || inst.getFocusElement().nodeName == "IMG" || (t && t.length > 0); + } +}; + +tinyMCE.addPlugin("xhtmlxtras", TinyMCE_XHTMLXtrasPlugin); diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/abbr.gif new file mode 100644 index 0000000000000000000000000000000000000000..d00d83017ffb2281edf45b1165ef4b961b2be99e GIT binary patch literal 144 zcmZ?wbhEHb6k!ly*v!k|U%gi+V3KX>ay5@GMW>dqmSYB?)19){1~(isiJGJA+U{1c zDW?1E|Ns9Pz(DaQ3nK#qFM|$<2Qq_!#dgC<&((V^UZ36lKS86YOGIK)fd@m9;Mof- tzLz-8USjYK6y&<8x%Jl0x{Z-Hq)#3^1VhlZBCifrmi{BmgplfyI2nNzc`LEnc79{XapYh@F)uv@wKH*@q$7=ZL7x j`jVinSD*FV@VS({Q=&_uYvY6!5}gxEyw)};F<1itEOIa5 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/attribs.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe4a3b68ec90c8c2ef2e997d9cb2273664098c00 GIT binary patch literal 601 zcmd7PyH6BB90%~(z2k8bV8!(jJYWwDo(j6+>kxy34_K~o3kzd4CTC2H#gpBaw@3gM_Z@;}3DdV5%>Q{qD^@YX9VdKfuper|V?&`I^QbPAW>&)>{{fb^3I5u$kNV(qe zbs9S-^-CAJXM>|BemGlO`QiTdJwJny&EI*WP3_%YY;~@8x7QFhQ10QvztWc%H>UEf p2aTTXdva}lzGc)Y-VBx}!vjkX%x^=D_2=c8vD@n(?=E9Bu>+$a$R+>) literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/cite.gif new file mode 100644 index 0000000000000000000000000000000000000000..585bcd1ee2be031a09af278c58028a04ad68bf44 GIT binary patch literal 313 zcmZ?wbhEHb6k!lyxT?-z964LZf1-8r(&WA~F1hOq+t+Z^fkB-? z2V@?|PYi5f2PPMI=t%XSSWZZ@gDK678!stn`YI(o7YwT7lYDe=lZ>E- zGaqA9KpsoQNzP{Rib<*rO$>Zo%?#Y0jNMXB3f+v}tgJ4=oB=at&YB(I$Y2cs;JIsj literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/date_time.gif new file mode 100644 index 0000000000000000000000000000000000000000..8ad424d3d19b07b05a9a5e6828325dba602bf0ac GIT binary patch literal 287 zcmZ?wbhEHb6k!lyxFW>B%FNo-)U@-!h1l*#K+sgxG=KdOCpWJH7oK&k{F0QClRxK; zUGY6FBdaM3*DEP01;r*^y7l_cpMSIV{WJ1PdiCl@R#_1PZlL&+g^__loIwYq1Y{=z z>zoIweJPpqGFHv=ysdZmz?n>=yO($C_`KCy7oKxXT2e)*CXcnVec1bGEwlY~SW1Ph9k_!1Zx z0ux!;MFks`CnShAGcoZo@HNcp=UBithl#7ca+x@v$Yzn%>>L$UeQJCwVwdu5(%iJ= N=w|H`C)E@gtO1pRV_^UQ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/del.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/del.gif new file mode 100644 index 0000000000000000000000000000000000000000..ba494082d4b25fa73e1187f88c427d74db369577 GIT binary patch literal 222 zcmZ?wbhEHb6k!lyI3mkn5HMlgwzEnOg`tJZW-i$`W8u!MmhCRd3r(XY1r%&hvdUVs z<aiyLdox@}$ATHGEp3PuDox-^Icas*9hOfg=xgSG3Z W<_84=E_6{9I25SH}zF5=% literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/ins.gif new file mode 100644 index 0000000000000000000000000000000000000000..277a364b26545defce337729f806cb0b154b4ee9 GIT binary patch literal 231 zcmVuei^Bjjcvqb#REl zqpZb1SfBua0RR90A^8LW0018VEC2ui02BZe000GK;3tk`X`X1RuI&08ZMh{^EMiH5 z*xzv=0*MV_U1{y2qvw;L*#U@EFDIK5m*#BtIB`?flw9zYswHXkSYa0$}(7J hMwvLEpg0*Q1Oy`r1Pz9LBp!;3jE#yskdZ1O06TIDUCICe literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif b/admin/scripts/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a069a8ce0da45f32363fb590f02e9eb8dcd3da0 GIT binary patch literal 433 zcmZ?wbhEHbjA9UFIKsg2|NsAg|Ni~`3nG9N82|kP0>6KQ@b6#0e*FZ2Utsw22MB!s z4#Yt6`}c3(zJ31u`Q5vBuV24@`t<382M?}XxpL;rnVBOPrKVYqt@TZ z`P?L!xGJhEVvX+XcCml&P)#O8q>u=ggfqf5E~W4q?J~2?cKNk zz`;X@j~qRA{NSqH(wt|{vR}A(>GGAU*Dmb4e(UyC{!?-?GOTy5vORnL;^nK?&n`ZH z_vYi(he{7$vi|t_>-V3(|Nj5D!YkpiVZp&>wwH~M1r{tk+%BN(HOFJ)qNCk{qD3!& z9zWJD>)a*dY4qgyBn@A^pgS6in2%2}NIo^kbMms&)AWj8-8s2=`T6+{&0MTq#Val@ T_L$6;dvMFj%gg + + {$lang_xhtmlxtras_title_ins_element} + + + + + + + + + + +
+ + +
+
+
+ {$lang_xhtmlxtras_fieldset_general_tab} + + + + + + + + + +
: + + + + + +
{$lang_xhtmlxtras_insert_date}
+
:
+
+
+ {$lang_xhtmlxtras_fieldset_attrib_tab} + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
: + +
:
: + +
: + +
+
+
+
+
+ {$lang_xhtmlxtras_fieldset_events_tab} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
:
:
:
:
:
:
:
:
:
:
:
:
+
+
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+ + + diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js new file mode 100644 index 0000000..3f6853c --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js @@ -0,0 +1,29 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('abbr'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAbbr() { + SXE.insertElement(tinyMCE.isIE && !tinyMCE.isOpera ? 'html:ABBR' : 'abbr'); + tinyMCEPopup.close(); +} + +function removeAbbr() { + SXE.removeElement('abbr'); + tinyMCEPopup.close(); +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js new file mode 100644 index 0000000..36d76ee --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js @@ -0,0 +1,29 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('acronym'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertAcronym() { + SXE.insertElement('acronym'); + tinyMCEPopup.close(); +} + +function removeAcronym() { + SXE.removeElement('acronym'); + tinyMCEPopup.close(); +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js new file mode 100644 index 0000000..ad886e5 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/attributes.js @@ -0,0 +1,130 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2006, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + var f = document.forms[0]; + + var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick')); + + setFormValue('title', tinyMCE.getAttrib(elm, 'title')); + setFormValue('id', tinyMCE.getAttrib(elm, 'id')); + setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style")))); + setFormValue('dir', tinyMCE.getAttrib(elm, 'dir')); + setFormValue('lang', tinyMCE.getAttrib(elm, 'lang')); + setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); + setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); + setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus'))); + setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur'))); + setFormValue('onclick', onclick); + setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick'))); + setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown'))); + setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup'))); + setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover'))); + setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove'))); + setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout'))); + setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress'))); + setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown'))); + setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup'))); + + className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(elm, 'class'), false); + + addClassesToList('classlist', 'advlink_styles'); + selectByValue(f, 'classlist', className, true); + + TinyMCE_EditableSelects.init(); +} + +function setFormValue(name, value) { + if(value && document.forms[0].elements[name]){ + document.forms[0].elements[name].value = value; + } +} + +function insertAction() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var elm = inst.getFocusElement(); + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + tinyMCEPopup.restoreSelection(); + + setAllAttribs(elm); + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + tinyMCE._setEventsEnabled(inst.getBody(), false); + tinyMCEPopup.execCommand("mceEndUndoLevel"); + tinyMCEPopup.close(); +} + +function setAttrib(elm, attrib, value) { + var formObj = document.forms[0]; + var valueElm = formObj.elements[attrib.toLowerCase()]; + + if (typeof(value) == "undefined" || value == null) { + value = ""; + + if (valueElm) + value = valueElm.value; + } + + if (value != "") { + tinyMCE.setAttrib(elm, attrib.toLowerCase(), value); + + if (attrib == "style") + attrib = "style.cssText"; + + if (attrib.substring(0, 2) == 'on') + value = 'return true;' + value; + + if (attrib == "class") + attrib = "className"; + + eval('elm.' + attrib + "=value;"); + } else + elm.removeAttribute(attrib); +} + +function setAllAttribs(elm) { + var f = document.forms[0]; + + setAttrib(elm, 'title'); + setAttrib(elm, 'id'); + setAttrib(elm, 'style'); + setAttrib(elm, 'class', getSelectValue(f, 'classlist')); + setAttrib(elm, 'dir'); + setAttrib(elm, 'lang'); + setAttrib(elm, 'tabindex'); + setAttrib(elm, 'accesskey'); + setAttrib(elm, 'onfocus'); + setAttrib(elm, 'onblur'); + setAttrib(elm, 'onclick'); + setAttrib(elm, 'ondblclick'); + setAttrib(elm, 'onmousedown'); + setAttrib(elm, 'onmouseup'); + setAttrib(elm, 'onmouseover'); + setAttrib(elm, 'onmousemove'); + setAttrib(elm, 'onmouseout'); + setAttrib(elm, 'onkeypress'); + setAttrib(elm, 'onkeydown'); + setAttrib(elm, 'onkeyup'); + + // Refresh in old MSIE + if (tinyMCE.isMSIE5) + elm.outerHTML = elm.outerHTML; +} + +function insertAttribute() { + tinyMCEPopup.close(); +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js new file mode 100644 index 0000000..4804db4 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js @@ -0,0 +1,29 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('cite'); + if (SXE.currentAction == "update") { + SXE.showRemoveButton(); + } +} + +function insertCite() { + SXE.insertElement('cite'); + tinyMCEPopup.close(); +} + +function removeCite() { + SXE.removeElement('cite'); + tinyMCEPopup.close(); +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js new file mode 100644 index 0000000..08e2f16 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/del.js @@ -0,0 +1,54 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('del'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); +} + +function insertDel() { + var elm = tinyMCE.getParentElement(SXE.focusElement, 'del'); + + tinyMCEPopup.execCommand('mceBeginUndoLevel'); + if (elm == null) { + var s = SXE.inst.selection.getSelectedHTML(); + if(s.length > 0) { + tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'del', 'id', '#sxe_temp_del#'); + for (var i=0; i 0) { + tagName = element_name; + + if (tinyMCE.isIE && !tinyMCE.isOpera && element_name.indexOf('html:') == 0) + element_name = element_name.substring(5).toLowerCase(); + + h = '<' + tagName + ' id="#sxe_temp_' + element_name + '#">' + s + ''; + + tinyMCEPopup.execCommand('mceInsertContent', false, h); + + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), element_name, 'id', '#sxe_temp_' + element_name + '#'); + for (var i=0; i -1) ? true : false; +} + +SXE.removeClass = function(elm,cl) { + if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { + return true; + } + var classNames = elm.className.split(" "); + var newClassNames = ""; + for (var x = 0, cnl = classNames.length; x < cnl; x++) { + if (classNames[x] != cl) { + newClassNames += (classNames[x] + " "); + } + } + elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end +} + +SXE.addClass = function(elm,cl) { + if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; + return true; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js new file mode 100644 index 0000000..8fdc364 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js @@ -0,0 +1,53 @@ + /** + * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $ + * + * @author Moxiecode - based on work by Andrew Tetlaw + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +function preinit() { + // Initialize + tinyMCE.setWindowArg('mce_windowresize', false); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + SXE.initElementDialog('ins'); + if (SXE.currentAction == "update") { + setFormValue('datetime', tinyMCE.getAttrib(SXE.updateElement, 'datetime')); + setFormValue('cite', tinyMCE.getAttrib(SXE.updateElement, 'cite')); + SXE.showRemoveButton(); + } +} + +function setElementAttribs(elm) { + setAllCommonAttribs(elm); + setAttrib(elm, 'datetime'); + setAttrib(elm, 'cite'); +} + +function insertIns() { + var elm = tinyMCE.getParentElement(SXE.focusElement, 'ins'); + tinyMCEPopup.execCommand('mceBeginUndoLevel'); + if (elm == null) { + var s = SXE.inst.selection.getSelectedHTML(); + if(s.length > 0) { + tinyMCEPopup.execCommand('mceInsertContent', false, '' + s + ''); + var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(), 'ins', 'id', '#sxe_temp_ins#'); + for (var i=0; i'+''+''+''+''+''}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceZoom":tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom=value;tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom=value;return true}return false}};tinyMCE.addPlugin("zoom",TinyMCE_ZoomPlugin); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/plugins/zoom/editor_plugin_src.js b/admin/scripts/tiny_mce/plugins/zoom/editor_plugin_src.js new file mode 100644 index 0000000..cd09872 --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/zoom/editor_plugin_src.js @@ -0,0 +1,56 @@ +/** + * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +var TinyMCE_ZoomPlugin = { + getInfo : function() { + return { + longname : 'Zoom', + author : 'Moxiecode Systems AB', + authorurl : 'http://tinymce.moxiecode.com', + infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/zoom', + version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion + }; + }, + + /** + * Returns the HTML contents of the zoom control. + */ + getControlHTML : function(control_name) { + if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0 || tinyMCE.isOpera) + return ""; + + switch (control_name) { + case "zoom": + return ''; + } + + return ""; + }, + + /** + * Executes the mceZoom command. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceZoom": + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value; + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; + return true; + } + + // Pass to next handler in chain + return false; + } +}; + +tinyMCE.addPlugin("zoom", TinyMCE_ZoomPlugin); diff --git a/admin/scripts/tiny_mce/plugins/zoom/readme.txt b/admin/scripts/tiny_mce/plugins/zoom/readme.txt new file mode 100644 index 0000000..4fdb78a --- /dev/null +++ b/admin/scripts/tiny_mce/plugins/zoom/readme.txt @@ -0,0 +1 @@ +Check the TinyMCE documentation for details on this plugin. diff --git a/admin/scripts/tiny_mce/themes/advanced/about.htm b/admin/scripts/tiny_mce/themes/advanced/about.htm new file mode 100644 index 0000000..6918488 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/about.htm @@ -0,0 +1,52 @@ + + + {$lang_about_title} + + + + + + + + +
+
+

{$lang_about_title}

+

Version: {$tinymce_version} ({$tinymce_releasedate})

+

TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL + by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

+

Copyright © 2003-2007, Moxiecode Systems AB, All rights reserved.

+

For more information about this software visit the TinyMCE website.

+ +
+
+ +
+
+

{$lang_loaded_plugins}

+ +
+
+ +

 

+
+
+ +
+
+
+
+ +
+
+ +
+
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/anchor.htm b/admin/scripts/tiny_mce/themes/advanced/anchor.htm new file mode 100644 index 0000000..53d7969 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/anchor.htm @@ -0,0 +1,33 @@ + + + {$lang_insert_anchor_title} + + + + + +
+ + + + + + + + + +
{$lang_insert_anchor_title}
{$lang_insert_anchor_name}:
+ +
+
+ +
+ +
+ +
+
+ +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/charmap.htm b/admin/scripts/tiny_mce/themes/advanced/charmap.htm new file mode 100644 index 0000000..9aed1d4 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/charmap.htm @@ -0,0 +1,53 @@ + + + {$lang_theme_charmap_title} + + + + + + + + + + + + + + + + + +
{$lang_theme_charmap_title}
+ + + + + + + + + +
 
 
+
+ + + + + + + + + + + + + + + + +
HTML-Code
 
 
NUM-Code
 
+
+ + + diff --git a/admin/scripts/tiny_mce/themes/advanced/color_picker.htm b/admin/scripts/tiny_mce/themes/advanced/color_picker.htm new file mode 100644 index 0000000..668d744 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/color_picker.htm @@ -0,0 +1,74 @@ + + + {$lang_theme_colorpicker_title} + + + + + + + + + +
+
+
+ {$lang_color_picker} +
+ + +
+ +
+ +
+
+
+
+ +
+
+ {$lang_web_colors} +
+ +
+ +
+
+
+ +
+
+ {$lang_named_colors} +
+ +
+ +
+ +
+ {$lang_color_name} +
+
+
+
+ +
+
+ +
+ +
+ +
+ +
+
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/css/colorpicker.css b/admin/scripts/tiny_mce/themes/advanced/css/colorpicker.css new file mode 100644 index 0000000..4b0360b --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/css/colorpicker.css @@ -0,0 +1,53 @@ +/* Colorpicker dialog specific CSS */ + +#preview { + float: right; + width: 50px; + height: 14px; + line-height: 1px; + border: 1px solid black; + margin-left: 5px; +} + +#colorpicker { + float: left; + cursor: crosshair; +} + +#light { + border: 1px solid gray; + margin-left: 5px; + float: left; + width: 15px; + cursor: crosshair; +} + +#light div { + overflow: hidden; +} + +#previewblock { + float: right; + padding-left: 10px; + height: 20px; +} + +.panel_wrapper div.current { + height: 175px; +} + +#namedcolors { + width: 150px; +} + +#namedcolors a { + display: block; + float: left; + width: 10px; height: 10px; + margin: 1px 1px 0 0; + overflow: hidden; +} + +#colornamecontainer { + margin-top: 5px; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/themes/advanced/css/editor_content.css b/admin/scripts/tiny_mce/themes/advanced/css/editor_content.css new file mode 100644 index 0000000..182e791 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/css/editor_content.css @@ -0,0 +1,58 @@ +/* This file contains the CSS data for the editable area(iframe) of TinyMCE */ +/* You can extend this CSS by adding your own CSS file with the the content_css option */ + +body, td, pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +body { + background-color: #FFFFFF; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB !important; +} + +div.mceVisualAid { + background-image:url('../images/spacer.gif'); + visibility: visible !important; +} + +.mceItemAnchor { + width: 12px; + line-height: 6px; + overflow: hidden; + padding-left: 12px; + background-image: url('../images/anchor_symbol.gif'); + background-position: bottom; + background-repeat: no-repeat; +} + +/* Important is needed in Gecko browsers inorder to style links */ +/* +a { + color: green !important; +} +*/ + +/* Style selection range colors in Gecko browsers */ +/* +::-moz-selection { + background-color: red; + color: green; +} +*/ + +/* MSIE specific */ + +* html body { + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/admin/scripts/tiny_mce/themes/advanced/css/editor_popup.css b/admin/scripts/tiny_mce/themes/advanced/css/editor_popup.css new file mode 100644 index 0000000..f8d3550 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/css/editor_popup.css @@ -0,0 +1,331 @@ +/* This file contains the CSS data for all popups in TinyMCE */ + +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; + margin: 8px; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0; +} + +#insert, .updateButton { + font-weight: bold; + width: 90px; + height: 21px; + border: 0; + background-image: url('../images/insert_button_bg.gif'); + cursor: pointer; +} + +#cancel { + font-weight: bold; + width: 90px; + height: 21px; + border: 0; + background-image: url('../images/cancel_button_bg.gif'); + cursor: pointer; +} + +/* Mozilla only style */ +html>body #insert, html>body #cancel { + padding-bottom: 2px; +} + +.title { + font-size: 12px; + font-weight: bold; + color: #2B6FB6; +} + +table.charmap { + border-style: solid; + border-width: 1px; + border-color: #AAAAAA; +} + +td.charmap, td.charmapOver { + color: #000000; + border-color: #AAAAAA; + border-style: solid; + border-width: 1px; + text-align: center; + font-size: 12px; +} + +td.charmapOver { + background-color: #CCCCCC; + cursor: default; +} + +a.charmap { + color: #000000; + text-decoration: none +} + +.wordWrapCode { + vertical-align: middle; + border: 1px none #000000; + background-color: transparent; +} + +input.radio { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +input.checkbox { + border: 1px none #000000; + background-color: transparent; + vertical-align: middle; +} + +.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected { + margin-left: 1px; +} + +.mceButtonNormal { + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; +} + +.mceButtonOver { + border: 1px solid #0A246A; + cursor: default; + background-color: #B6BDD2; +} + +.mceButtonDown { + cursor: default; + border: 1px solid #0A246A; + background-color: #8592B5; +} + +.mceButtonDisabled { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity:0.3; + opacity: 0.3; + border-top: 1px solid; + border-left: 1px solid; + border-bottom: 1px solid; + border-right: 1px solid; + border-color: #F0F0EE; + cursor: default; +} + +.mceActionPanel { + margin-top: 5px; +} + +/* Tabs classes */ + +.tabs { + float: left; + width: 100%; + line-height: normal; + background-image: url("../images/xp/tabs_bg.gif"); +} + +.tabs ul { + margin: 0; + padding: 0 0 0; + list-style: none; +} + +.tabs li { + float: left; + background: url("../images/xp/tab_bg.gif") no-repeat left top; + margin: 0; + margin-left: 0; + margin-right: 2px; + padding: 0 0 0 10px; + line-height: 18px; +} + +.tabs li.current { + background: url("../images/xp/tab_sel_bg.gif") no-repeat left top; + margin-right: 2px; +} + +.tabs span { + float: left; + display: block; + background: url("../images/xp/tab_end.gif") no-repeat right top; + padding: 0px 10px 0 0; +} + +.tabs .current span { + background: url("../images/xp/tab_sel_end.gif") no-repeat right top; +} + +.tabs a { + text-decoration: none; + font-family: Verdana, Arial; + font-size: 10px; +} + +.tabs a:link, .tabs a:visited, .tabs a:hover { + color: black; +} + +.tabs a:hover { +} + +.tabs .current { +} + +.tabs .current a, .tabs .current a:link, .tabs .current a:visited { +} + +.panel_wrapper div.panel { + display: none; +} + +.panel_wrapper div.current { + display: block; + width: 100%; + height: 300px; + overflow: visible; /* Should be auto but that breaks Safari */ +} + +.panel_wrapper { + border: 1px solid #919B9C; + border-top: 0px; + padding: 10px; + padding-top: 5px; + clear: both; + background-color: white; +} + +fieldset { + border: 1px solid #919B9C; + font-family: Verdana, Arial; + font-size: 10px; + padding: 0; + margin: 0; + padding: 4px; +} + +legend { + color: #2B6FB6; + font-weight: bold; +} + +.properties { + width: 100%; +} + +.properties .column1 { +} + +.properties .column2 { + text-align: left; +} + +a:link, a:visited { + color: black; +} + +a:hover { + color: #2B6FB6; +} + +#plugintable thead { + font-weight: bold; + background-color: #DDDDDD; +} + +#plugintable, #about #plugintable td { + border: 1px solid #919B9C; +} + +#plugintable { + width: 99%; + margin-top: 10px; +} + +#pluginscontainer { + height: 290px; + overflow: auto; +} + +/* MSIE Specific styles */ + +* html .panel_wrapper { + width: 100%; +} + +.column { + float: left; +} + +h1, h2, h3, h4 { + color: #2B6FB6; + margin: 0; + padding: 0; + padding-top: 5px; +} + +h3 { + font-size: 14px; +} + +#link .panel_wrapper, #link div.current { + height: 125px; +} + +#image .panel_wrapper, #image div.current { + height: 190px; +} + +label.msg { display: none; } +label.invalid { color: #EE0000; display: inline; } +input.invalid { border: 1px solid #EE0000; } + +/* Disables the advanced tab in the table plugin. */ +/* +#table #advanced_tab { + display: none; +} +*/ + +/* Disables the border input field and label in the table plugin. */ +/* +#table #border, #table #borderlabel { + display: none; +} +*/ diff --git a/admin/scripts/tiny_mce/themes/advanced/css/editor_ui.css b/admin/scripts/tiny_mce/themes/advanced/css/editor_ui.css new file mode 100644 index 0000000..851837d --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/css/editor_ui.css @@ -0,0 +1,97 @@ +/* This file contains the CSS data for the editor UI of TinyMCE instances */ + +.mceToolbarTop a, .mceToolbarTop a:visited, .mceToolbarTop a:hover, .mceToolbarBottom a, .mceToolbarBottom a:visited, .mceToolbarBottom a:hover {border: 0; margin: 0; padding: 0; background: transparent;} +.mceSeparatorLine {border: 0; padding: 0; margin-left: 4px; margin-right: 2px;} +.mceSelectList {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 7pt !important; font-weight: normal; margin-top: 3px; padding: 0; display: inline; vertical-align: top; background-color: #F0F0EE;} +.mceLabel, .mceLabelDisabled {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt;} +.mceLabel {color: #000000;} +.mceLabelDisabled {cursor: text; color: #999999;} +.mceEditor {background: #F0F0EE; border: 1px solid #cccccc; padding: 0; margin: 0;} +.mceEditorArea { font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; background: #FFFFFF; padding: 0; margin: 0; } +.mceToolbarTop, .mceToolbarBottom {background: #F0F0EE; line-height: 1px; font-size: 1px;} +.mceToolbarTop {border-bottom: 1px solid #cccccc; padding-bottom: 1px;} +.mceToolbarBottom {border-top: 1px solid #cccccc;} +.mceToolbarContainer {display: block; position: relative; left: 0; top: 0; width: 100%;} +.mceStatusbarTop, .mceStatusbarBottom, .mceStatusbar {height: 20px;} +.mceStatusbarTop .mceStatusbarPathText, .mceStatusbarBottom .mceStatusbarPathText, .mceStatusbar .mceStatusbarPathText {font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; padding: 2px; line-height: 16px; overflow: visible;} +.mceStatusbarTop {border-bottom: 1px solid #cccccc;} +.mceStatusbarBottom {border-top: 1px solid #cccccc;} +.mceStatusbar {border-bottom: 1px solid #cccccc;} +.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover {text-decoration: none; font-family: 'MS Sans Serif', sans-serif, Verdana, Arial; font-size: 9pt; color: #000000;} +.mcePathItem:hover {text-decoration: underline;} +.mceStatusbarPathText {float: left;} +.mceStatusbarResize {float: right; background-image: url('../images/statusbar_resize.gif'); background-repeat: no-repeat; width: 11px; height: 20px; cursor: se-resize;} +.mceResizeBox {width: 10px; height: 10px; display: none; border: 1px dotted gray; margin: 0; padding: 0;} +.mceEditorIframe {border: 0;} + +/* Button CSS rules */ + +a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img {width: 20px; height: 20px; cursor: default; margin-top: 1px; margin-left: 1px;} +a.mceButtonDisabled img {border: 0 !important;} +a.mceButtonNormal img, a.mceButtonSelected img {border: 1px solid #F0F0EE !important;} +a.mceButtonSelected img {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover {border: 1px solid #0A246A !important; cursor: default; background-color: #B6BDD2;} +a.mceButtonDisabled img {-moz-opacity:0.3; opacity: 0.3; border: 1px solid #F0F0EE !important; cursor: default;} +a.mceTiledButton img {background-image: url('../images/buttons.gif'); background-repeat: no-repeat;} + +/* Menu button CSS rules */ + +span.mceMenuButton img, span.mceMenuButtonSelected img {border: 1px solid #F0F0EE; margin-left: 1px;} +span.mceMenuButtonSelected img {border: 1px solid #6779AA; background-color: #B6BDD2;} +span.mceMenuButtonSelected img.mceMenuButton {border: 1px solid #F0F0EE; background-color: transparent;} +span.mceMenuButton img.mceMenuButton, span.mceMenuButtonSelected img.mceMenuButton {border-left: 0; margin-left: 0;} +span.mceMenuButton:hover img, span.mceMenuButtonSelected:hover img {border: 1px solid #0A246A; background-color: #B6BDD2;} +span.mceMenuButton:hover img.mceMenuButton, span.mceMenuButtonSelected:hover img.mceMenuButton {border-left: 0;} +span.mceMenuButtonFocus img {border: 1px solid gray; border-right: 0; margin-left: 1px; background-color: #F5F4F2;} +span.mceMenuButtonFocus img.mceMenuButton {border: 1px solid gray; border-left: 1px solid #F5F4F2; margin-left: 0;} +span.mceMenuHover img {border: 1px solid #0A246A; background-color: #B6BDD2;} +span.mceMenuButtonSelected.mceMenuHover img.mceMenuButton {border: 1px solid #0A246A; background-color: #B6BDD2; border-left: 0;} + +/* Menu */ + +.mceMenu {position: absolute; left: 0; top: 0; display: none; z-index: 1000; background-color: white; border: 1px solid gray; font-weight: normal;} +.mceMenu a, .mceMenuTitle, .mceMenuDisabled {display: block; width: 100%; text-decoration: none; background-color: white; font-family: Tahoma, Verdana, Arial, Helvetica; font-size: 11px; line-height: 20px; color: black;} +.mceMenu a:hover {background-color: #B6BDD2; color: black; text-decoration: none !important;} +.mceMenu span {padding-left: 10px; padding-right: 10px; display: block; line-height: 20px;} +.mceMenuSeparator {border-bottom: 1px solid gray; background-color: gray; height: 1px;} +.mceMenuTitle span {padding-left: 5px;} +.mceMenuTitle {background-color: #DDDDDD; font-weight: bold;} +.mceMenuDisabled {color: gray;} +span.mceMenuSelectedItem {background-image: url('../images/menu_check.gif'); background-repeat: no-repeat; background-position: 5px 8px; padding-left: 20px;} +span.mceMenuCheckItem {padding-left: 20px;} +span.mceMenuLine {display: block; position: absolute; left: 0; top: -1px; background-color: #F5F4F2; width: 30px; height: 1px; overflow: hidden; padding-left: 0; padding-right: 0;} +.mceColors table, .mceColors td {margin: 0; padding: 2px;} +a.mceMoreColors {width: auto; padding: 0; margin: 0 3px 3px 3px; text-align: center; border: 1px solid white; text-decoration: none !important;} +.mceColorPreview {position: absolute; overflow:hidden; left: 0; top: 0; margin-left: 3px; margin-top: 15px; width: 16px; height: 4px; background-color: red;} +a.mceMoreColors:hover {border: 1px solid #0A246A;} +.mceColors td a {width: 9px; height: 9px; overflow: hidden; border: 1px solid #808080;} + +/* MSIE 6 specific rules */ + +* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} +* html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} +* html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} +* html a.mceButtonNormal, * html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} +* html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} +* html .mceSelectList {margin-top: 2px;} +* html span.mceMenuButton, * html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} +* html span.mceMenuButton img, * html span.mceMenuButtonSelected img, * html span.mceMenuButtonFocus img {position: relative; top: 1px;} +* html a.mceMoreColors {width: auto;} +* html .mceColors td a {width: 10px; height: 10px;} +* html .mceColorPreview {margin-left: 2px; margin-top: 14px;} + +/* MSIE 7 specific rules */ + +*:first-child+html a.mceButtonNormal img, *:first-child+html a.mceButtonSelected img, *:first-child+html a.mceButtonDisabled img {border: 0 !important; margin-top: 2px; margin-bottom: 1px;} +*:first-child+html a.mceButtonDisabled img {filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); border: 0 !important;} +*:first-child+html a.mceButtonDisabled {border: 1px solid #F0F0EE !important;} +*:first-child+html a.mceButtonNormal, *:first-child+html a.mceButtonSelected {border: 1px solid #F0F0EE !important; cursor: default;} +*:first-child+html a.mceButtonSelected {border: 1px solid #6779AA !important; background-color: #D4D5D8;} +*:first-child+html a.mceButtonNormal:hover, *:first-child+html a.mceButtonSelected:hover {border: 1px solid #0A246A !important; background-color: #B6BDD2; cursor: default;} +*:first-child+html .mceSelectList {margin-top: 2px;} +*:first-child+html span.mceMenuButton, *:first-child+html span.mceMenuButtonFocus {position: relative; left: 0; top: 0;} +*:first-child+html span.mceMenuButton img, *:first-child+html span.mceMenuButtonSelected img, *:first-child+html span.mceMenuButtonFocus img {position: relative; top: 1px;} +*:first-child+html a.mceMoreColors {width: 137px;} +*:first-child+html .mceColors td a {width: 10px; height: 10px;} +*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px; width: 14px;} diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/about.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/about.htm new file mode 100644 index 0000000..a6957a6 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/about.htm @@ -0,0 +1,31 @@ + + +About TinyMCE + + + + + + + + + + + +
+
+TinyMCE is a small WYSIWYG editor control for web browsers such as MSIE or Mozilla +that enables you to edit HTML contents in a more user friendly way. It has common +features that are found in most word processors and should not be difficult to +use.
+
+
+ + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm new file mode 100644 index 0000000..518b285 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm @@ -0,0 +1,162 @@ + + +Common buttons + + + + + + + + + + + +
+
+Below is a short description about each button. +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Bold text iconBold text style (Ctrl+B).
Italic text iconItalic text style (Ctrl+I).
Underline text icon.Underline text style (Ctrl+U).
Strikethrough text icon.Strikethrough text style.
Align left icon.Align left.
Align center icon.Align center.
Align right icon.Align right.
Align full icon.Align full.
Unordered list/bullet list icon.Unordered list/bullet list.
Ordered list/numbered list icon.Ordered list/numbered list
Outdent/decrease indentation icon.Outdent/decrease indentation.
Indent/increase indentation icon.Indent/increase indentation.
Undo the last operation.Undo the last operation (Ctrl+Z).
Redo the last operation icon.Redo the last operation (Ctrl+Y).
Insert a new link icon.Insert a new link, read more about this function in the Insert + link section.
Unlinks the current selection icon.Unlinks the current selection/removes all selected links.
Insert a new anchor icon.Insert a new anchor, read more about this function in the Insert anchor section.
Insert a new image icon.Insert a new image, read more about this function in the Insert + image section.
Cleanup code icon.Cleanup code/Removes unwanted formating. This function is useful when + you copy contents from for example a office product.
Show help icon.Shows this help window.
Source code editor icon.Opens HTML source code editor.
Insert table icon.Inserts a new table at the current location.
Adds a row above icon.Adds a row above the current one.
Adds a row under icon.Adds a row under the current one.
Remove row icon.Removes the row.
Add column before icon.Adds a column before the current one.
Add column after icon.Adds a column after the current one.
Remove column icon.Removes the current column.
Insert horizontal ruler icon.Inserts a new horizontal ruler
Remove formatting icon.Removes formatting from the selection.
Subscript icon.Makes the selection to be subscript.
Superscript icon.Makes the selection to be superscripted.
+
+
+ + + + + + + + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm new file mode 100644 index 0000000..f4070a3 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm @@ -0,0 +1,45 @@ + + +Insert table button + + + + + + + + + + + +
+

TinyMCE can create HTML content that will be accessible to all users, including those with disabilities using assistive technologies, as well as those using text-based browsers, or those browsing the Web with images turned off.

+ +

Things you can do to make your content accessible:

+
    +
  1. Include an Image Description: Blind users, or others who are unable to view images, will rely on the Image Description (or Alt text) to take the place of the image. If an image contains no meaning, such as a decoration or a spacer image, leave the Image Description empty. TinyMCE will then insert an empty Alt text attribute that will force assistive technologies to ignore the image.

  2. + +
  3. Add Scope to data table header cells: In the table cell editor dialog window, choose a Scope when creating Header cells so the column or row label in that cell becomes explicitely associated with its data cells. Table cell headers will then be announced with each data cell, making it easier for blind users using a screen reader to understand what the content of each cell represents.

  4. + +
  5. Structure content with properly nested headings: In the format selection menu choose Heading 1 to Heading 6 to represent headings in your content, rather than using other font formating options. Blind users using a screen reader can then extract the headings from the page to generate a summary of the content it contains, and use those headings to navigate quickly to subsections within the page.

  6. + +
  7. Include alternate content: Create an alternate page for non-HTML content such as Flash, Java applets, or embedded movies. This might be a static image, with a description of the image, and a description of the content that would have appeared in its place. An alternate HTML page could also be created, and a link to it included next to the non-HTML object. This will ensure that the content will be accessible to users of assistive technologies that can not view or play the content, and ensure the content will be available to those who do not have the appropriate plugin or helper application installed.

  8. + +
  9. Check accessbility: When the AChecker plugin is installed with TinyMCE, click on the Check Accessibility button to generate a report of potential accessibility problems.

  10. + +
+ +

See the AChecker Web Site for further details about creating content that will be accessible to all users.
+

+ +
+ + + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif b/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b5f528dd57cae8e062919a66b0ff7fcf8f3bc42 GIT binary patch literal 5189 zcmV-L6uRq2Nk%w1VM+mu0QUd@H&l@lEO0qilOsNVFindaHh4i^nHDj05GrpUI(!r_ za}OzQrpoXNBx(yKYi5SIC`5!jS(O+wc1dTTm%8JFrP7M5*m|4FS$M8BQjd0*$5mBT z=;+h``|#@O>def{hpE;xP>o@MwWZ1MmAK&!C~YJ_fOC|^AUu7Ow%}WOucF57OlzZ* zw&0}4?rx62QE;bCYowvX>r85*c$vv8NQW{`j8k!_FH4CuP>z71&z->NKwX$paj0pE zye&zHq{#21$L&sRq?EVen7rhKrqiFo>V2NfQE#UjHF%J+-E@`3GEa?lmc|`9dpK2* zrOEF^Vw{Vv*__V48cJ%W#pxN@<~n zsMJnvrBH9C0A|c`lfyqtRHdBxl zFm#Qu+mEu`CPIROqtR4yshGRuX^FcMEpd*p+f{U`Cqjd5kGv^Gg(pLU88mmC!01S3 zpJ<4>VuH3?day-fos6#9fTGZuyya?&y^pcnB|w2?g}6OhmVBMeXNS5IE^=vtn#p8@xFtb?7czBwoy$gJoo$W3h^p6Mf3qq^g%B%mTzjybzvr605p*>rcFHDMBd9Qt+&3AWqElP-Sk;0I( z-5xo6E=q}UlEZhH$d{pUziytuto-k+j}!kHAxMsSGA;4JT}sxZ;L}hHsC- zGc(Nb@$mp=nVFfH004k9Gc%x*O#}o4z`(%&%$Wc)nKNe0UteD{=KnxIK!AXN)X>NP z00960|M2kcA^8LV00000EC2ui07?Oi000R80Qm_VNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGZNIt&!5MSAVZ2ANwTELlPFWFT*BcR3xlMp%jWXM1X0Dva~1XRJ|EJ6fX z)6SqV!^1$9EM216ilWLFAvnuSO_(4J%%B-8Vh9n#Mavi@FnZiDrzz5>J8v9`1BU@a zH5I9dDOzM_%CTTq_=rHIY>gaUu^v4CpmpjNCm*h!;VJa%#fx(5AbrW!t&E-%OQffv2Za)dSExbcS$tRR!gBo$Op1T)Zt(FO>~0JDV!7T_YqD$Q8p$t#yA zp$$269Fjr{Ly(ZpHxy8?2@$Or1Bf8Sl(NGfMi{|H95OUw$O=KY00a~xFreg;Og8D{ zlTbz(B|k>##MCwFWT~Z=PC+FVRaRl86<1z?B^Fs`p`{jEZowrNU3TH67hiq>CKzFc zA*L8(jzK0FWtL&48E2k>CK_p`p{5#ZuE8c7ZMNa28*jb=CmeCcA*UR3&Os*~b=G00 z9e3V=Cmwm`p{E{u?!hM?efHu1ryqa*0Vp7W1|p~+gAPI{A%zxVs3C_Qf+!-1CZeb! zi!Q<_BaJrVs3VU)0x2YsMj|QYw%m3LC6zfLwbV5vy|aN*PenCVRaa%TRaakyHC9rnq8@FUB}yjW_1FV~;-uIb@MXCdt4``k<|(+6;hu)Rq2p zAotuIywkzC4W#=eyJEioTc*5d*1IOYZtfeWzjOwCC&79i+^52THasZAhEANQ#f)bB zD94h1T&c*Imb@v-o~|6K%cRD9D$T0i+^Wv7_B<=lwho=E(Yz-8E7QV0U98l|R=q6N z&Tbv8*VKl6E!oxStrnem=UubTI^ zsV|)V$oX%b0(+FF!F(qCC&Pk1T&TpP@ra@>)+miZs$-J^nWaXSDU)$3WuIc1s9sho znW3s?tHN11J`y`w{j63(!&T9Cg*0C+Em%$?R@9C~HDz6`Sz3cu*QNzFYmF^iW{ciJ zpeK-h`0$56?4kAloF}~@VozL3fk*ec*MV`gqXQp!$2HF70FZ#GU1NfmndX%yd$GkM zg@d2`5@)AG*v}(4@JRmrw6H)qj8G9f6b}T5IgB}KW0CS0r9vhgk2KH`9>IV|N(ZWz zjS6O_npvuB#;O;1L_QvgmCry@I}v(>guPN4u$ne3s2OW&O7Mu)m=zKkO6zOY5*xP4 zM!h0N4~VeT$@GZGkAC!nAhs0Z^{Rx#2EZc}eqaYX@?5R8Ss^Ewx

E zb&Y)F7a}SDyZv}1XtyHTC6AWL-J!6Pzhhx2{V~cGc_fBhJ7w~0xXR|~P$4{|(n$6p z%OPGgm$kg5F5AY-q@V*H@~DURIxx&)dcXr5_<%A!GL?{w2_#_w$yq#N1%EgJByX~2 zzd%x_ko*9RAbDILKysOo6bdAB1j)rfA{&o@!5`~XpvXXS2apKTAJ75G6g+YTe{2UN zG6M;EK;oW{?DHcY)WAP!5E27{gh3#YkVnGc4-kZ;SRg48NM88RXL;mC9zmt@Zpcbn zVl-_%yl7;>)yjd`5~L$NqEfC=k8vz5_se)9_fTf{^k*~cq9oR`Kdp` z=#M!6d1Nmhfq+K@b4Gup(I0Ds93?#R1dnXSBN6b39O>whD0t*G9+?10vii9`Y62vH z^v73K;1Sb-LW>Y1 zL<$}ekw+HVP!g2#u!2bJL{-VW99Hj@lGP|>9V-ybX11ga*oQps;aRyo(F5(^08C{% zKAM`=AE@<*YCi%Nk-*j;)12-5YI_%v=++;+^~X_t>rJJGq`3Y#u0N9NkL8-P3(b8l z9HMJg1PTEp?JSN*k`u^5b{AA+)lPWjFkXNURN#Iy2OgmeagB=w)!!a&@u{UVn(!AL3Cfn8m!_x4PG#{`gOPy)fVU-q(bC zy-=Jj@ZSJ~Qj~Wt?AG?ISc*0n&t1@_1+F5g$z3AL?cAwdI;^x}KTaY4)~1bmwL`_m|vrHaD`+P1rme)*p!V z#|}JV1dqtTBNcUUg%6Era0!~;9j&Z|L8@;IH-H@tn8!Ta!S;cRmc+~S$camIYLE%^IryI@q2=d9nY9?67`htS}!HTFLv7 znz1$K^MUImKjL#VALt`^1xeAxef0mXqR!g*NYg(;1Oz9R>Q=}4yJ^YwuFD&iKMXsC z5mI(VD}^28GA2x6`gUci>xz9t-xdSMJ~rhG1^$2&HYr|4JQZwDuil^k8z=WaIbLp2 zb~GU8^r+QKseE*ulBWbwhe!*uj*%LK9na!QyATphR|G|Lo76ih^hv?vLd=pi&k|9{ zQ$q~)XTx_88PyRaQE1h(OUAcZFU5S!*L>sie0+00S_C-j<3)rM7um-zW28+2<9&@2 zT;eA={u4)*Q!(gQK$`=3>;yXRcQWx8L8o&_6|_2wltHiaD*NX%v;t7JGeQAqLIapW zo&-ECRA35dJTug857=1#0DN8uJzofX9ueEGo z<32%kIN3x$i*rBVr&MhugX0816mw4LmxE5WgYNf7J_tdkV@MSLq&kX(L9UZCNVs$T z7f`o@Ndm|_QkYPnBs?#4g{IViea2YLqYtQ^oa;aJP>s}e70Cw=PmFUk5h7nO;L|Yp*PJGeIq!B(qw&M zq=JaUf_wOVj-x-y_(sfVem3}w>9l^rhH{~!Db^@|LHLOFbbm%jiQd>xOIS(&hdU*t zN#*D}=XiitSUjWHj_wA5^4OB{ctk`IlQKDzG+C22d6V(~7A|DClRVjzKKYYC8I(df zltfvSMtPJ-nUqQylpS>xI1!6b8I@8wl~h@kR(X|JnUz|(m0a1CUip<^xr$Dyllt%v zW_gxqnU-p~mTcLUZuypQ8JBW7mvmW|c6pb0nU{LGmwbtrV>y<68JL1On1orFhIyEX znV5a~mmQ^;j`^678JUtfnUo2aj0rB4nVFionVi{~oOziz;hCa2nxt8prumkjS(c}{ znylHHu9=vr`I@pho3vS*ZW)`lnVY(~o27}Hy!o5J8Jv#ko5ER~#(A7~Nu0>JoXpvr zW~rRc8J*I}o6tF()_I+-S)JIqo!se}+S#4p8J>~<`JLifp5{rI7gSkqFmRa3L2qiX`sC) zq6uoFGCHF&N~1YSp_k>OKMJHE`l3SWqc^IeyUC(Ps-sMLq%GQ{FKVJLI;2zzrB&*d z7;2>y>ZDo9r9FzIw5g;`>ZN0UnF?yvp zI;A^`qc)nRy=SIu`lM^Br-CY{e@dreYNx9IiKkPFrh{6h3<{@-8mDM_sAjsPmYSxD zx~TNosC1d9kgBJKI;npeqnOI6smi7qx~Y-csj?}ieQKqqDylGgsXgkZeA=e7dZxXa zr?v{Kp2|yidYW@8tjNliVk()(nyk)xmdpCA(n^}qI<40FnT&d^+B&Rcxvkz>r=R+* z;(D6ZIbjWOx~}d@nd$nj@=BNS%A8AiulSm;`ns=2S(o*?oE&8n0z0q- zTd)Re6Z_z=?HZo}d$11sun-%u2&=H+DxVE2u^5}N8oRLxORo!?n2G9|7rU_}Te2og z6CFF3(HgQAYMUc_vM?L7GP_X}ORS*(I+v}Avo1TcJlnG}o3e7btU0TrwYsN%>Y@qy zp+!ryt-7=`>Xt9-vr;>?4hyt#DXUwWv`?$GTdTE5tEyi+qFwv7Vau{+8MRcKwrV>Q zR%@9bd!Rd-wKyubblav`YqVo4w_njt9ce|E-OS!1~x0c(M|B9Tao4T+| zwX3VFgsYyf8@ss6v$MOFt$Uoeo4de!vb(F6y=$EOdc4S+yvm!DHQTN8`n<4NyU;tm zd|ABIJH6I>z0aGy+AFWz+r94p`n}+*uHrks=32hyE3QhqykVHWh{?V_*}Q;Bm%n?k z!|T3yS-%o{zi7F>!i&F#slO4+ztAeZk!!L948U_Kz!00j|7pN%$-o2azzPhP5=;~Q zKoSn@zanv2Hj%+JTfu^Px*j~RAS@Ca48f*L5+{to8Z5#iToNbT!Y&-bDyzb3iMBIb z!XClHKI{)%hr%!%m^#eDw)7E)1`;Lw!!{hWIGmP6+`~vL#Y#NIKn%h({1Fs9#49`! zSsW5rY{e}+!&EH99*enh8O1g1#Zb(`MtsC@498>q#$Vip^820( zY{z9x!(j}@Y%IrgyqA6dOU8Lz$a-AGhTOzg`^0D&wM#6jI~mKx>de=RzSNAQ)_lzzn$6lQpxoTe{`t+|%%9>s&i7f) z<}9D+oX+sM&g{IN?)=W@8PD=up7dPL14_yG{H*u9&)nJ1{_LRo9MHlF&;&i527S=c zna~Q|oDAL2%lXg{eVh_K(ZyNO79E@zozcI!(Hxzmc8ZfCJ<=py(k6YA`Wd_`z0xdQ zurPVjFdfq}J<~KIos(1o%{ZOYI=$08-P1f7mOvfULOs+(UDQT>)JScW0RaFzRjCd| literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif b/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..cdc617eab3be256173af047822671023c41d53c7 GIT binary patch literal 7195 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 AEdT%j literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif b/admin/scripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a032c5ae8dfcf3fad7ed65c814c2b1a1e88d25d GIT binary patch literal 7094 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 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/index.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/index.htm new file mode 100644 index 0000000..9810a93 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/index.htm @@ -0,0 +1,27 @@ + + +Help Index + + + + + + + + + +


+
+Click the links below to go to the different help sections. + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm new file mode 100644 index 0000000..332cbc6 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm @@ -0,0 +1,32 @@ + + +Insert anchor button + + + + + + + + + + + +
+
+This button opens a new window with the insert/edit anchor function.
+
+Anchor dialog/window
+
+There are one field in this window, this is where you enter the name of you anchor point. Remember the anchor name needs to be unique.
+
+
+ + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm new file mode 100644 index 0000000..1529648 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm @@ -0,0 +1,65 @@ + + +Insert image button + + + + + + + + + + + +
+
+The insert image button opens the window shown below.
+
+Insert image dialog/window
+
+You simply enter a URL to the image you want to link to and enter a image description, +this is then displayed as an alternative text descripton of the image on the page.
+
+Field descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Image URL URL/path to the image.
Image description Alternative description of image contents.
DimentionsImage width/height.
AlignmentImage alignment, useful when wrapping text around images.
BorderBorder thickness.
VSpaceVertical space, useful when wrapping text around images.
HSpaceHorizontal space, useful when wrapping text around images.
+
+
+ + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm new file mode 100644 index 0000000..4f64450 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm @@ -0,0 +1,33 @@ + + +Insert link button + + + + + + + + + + + +
+
+This button opens a new window with the insert/edit link function.
+
+Insert link dialog/window
+
+There are two fields in this window the first one "Link URL" is the +URL of the link. The target enables you to select how the link is to be opened.
+
+
+ + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm new file mode 100644 index 0000000..f352a05 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm @@ -0,0 +1,71 @@ + + +Insert table button + + + + + + + + + + + +
+
+The insert table button opens the window shown below. This action enables you to create tables.
+
+Image of table window
+
+Field descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColumnsNumber of columns in the table.
RowsNumber of rows in the new table.
CellpaddingCellpadding of the table .
CellspacingCellspacing of the table .
AlignmentTable alignment .
BorderBorder thinkness of table.
WidthWidth in pixels of table .
HeightHeight in pixels of table.
ClassStyle or CSS class of table.
+
+
+
+ + + + + + +
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/docs/en/style.css b/admin/scripts/tiny_mce/themes/advanced/docs/en/style.css new file mode 100644 index 0000000..ebc0538 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/docs/en/style.css @@ -0,0 +1,28 @@ +body { background-color: #FFFFFF; } +body, td, .content { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 12px; } +.title { font-family: Verdana, Arial, helvetica, sans-serif; font-size: 16px; font-weight: bold; } +.subtitle { font-size: 12px; font-weight: bold; } + +.toc_ul, .toc_li { margin-left: 8px; line-height: 16px; } +.step_ol, .step_li { margin-left: 11px; line-height: 16px; } +img { border: #000000 solid 1px; } + +a:visited { color: #666666; text-decoration: underline; } +a:active { color: #666666; text-decoration: underline; } +a:hover { color: #666666; text-decoration: underline; } +a { color: #666666; text-decoration: underline; } + +.pageheader { border: #E0E0E0 solid 1px; } +.pagefooter { border: #E0E0E0 solid 1px; } +.sample { background-color: #FFFFFF; border: #000000 solid 1px; } +.samplecontent { font-size: 10px; } + +.code { background-color: #FFFFFF; border: #000000 solid 1px; } +.codecontent { font-size: 10px; } +.codecontent a:visited { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:active { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a:hover { color: #666666; text-decoration: none; font-weight: bold } +.codecontent a { color: #666666; text-decoration: none; font-weight: bold } + +hr { height: 1px; } + diff --git a/admin/scripts/tiny_mce/themes/advanced/editor_template.js b/admin/scripts/tiny_mce/themes/advanced/editor_template.js new file mode 100644 index 0000000..9f965da --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/editor_template.js @@ -0,0 +1 @@ +tinyMCE.importThemeLanguagePack('advanced');var TinyMCE_AdvancedTheme={_defColors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",_autoImportCSSClasses:true,_resizer:{},_buttons:[['bold','{$lang_bold_img}','lang_bold_desc','Bold'],['italic','{$lang_italic_img}','lang_italic_desc','Italic'],['underline','{$lang_underline_img}','lang_underline_desc','Underline'],['strikethrough','strikethrough.gif','lang_striketrough_desc','Strikethrough'],['justifyleft','justifyleft.gif','lang_justifyleft_desc','JustifyLeft'],['justifycenter','justifycenter.gif','lang_justifycenter_desc','JustifyCenter'],['justifyright','justifyright.gif','lang_justifyright_desc','JustifyRight'],['justifyfull','justifyfull.gif','lang_justifyfull_desc','JustifyFull'],['bullist','bullist.gif','lang_bullist_desc','InsertUnorderedList'],['numlist','numlist.gif','lang_numlist_desc','InsertOrderedList'],['outdent','outdent.gif','lang_outdent_desc','Outdent'],['indent','indent.gif','lang_indent_desc','Indent'],['cut','cut.gif','lang_cut_desc','Cut'],['copy','copy.gif','lang_copy_desc','Copy'],['paste','paste.gif','lang_paste_desc','Paste'],['undo','undo.gif','lang_undo_desc','Undo'],['redo','redo.gif','lang_redo_desc','Redo'],['link','link.gif','lang_link_desc','mceLink',true],['unlink','unlink.gif','lang_unlink_desc','unlink'],['image','image.gif','lang_image_desc','mceImage',true],['cleanup','cleanup.gif','lang_cleanup_desc','mceCleanup'],['help','help.gif','lang_help_desc','mceHelp'],['code','code.gif','lang_theme_code_desc','mceCodeEditor'],['hr','hr.gif','lang_theme_hr_desc','inserthorizontalrule'],['removeformat','removeformat.gif','lang_theme_removeformat_desc','removeformat'],['sub','sub.gif','lang_theme_sub_desc','subscript'],['sup','sup.gif','lang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_theme_forecolor_desc','forecolor',true],['forecolorpicker','forecolor.gif','lang_theme_forecolor_desc','forecolorpicker',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',true],['backcolorpicker','backcolor.gif','lang_theme_backcolor_desc','backcolorpicker',true],['charmap','charmap.gif','lang_theme_charmap_desc','mceCharMap'],['visualaid','visualaid.gif','lang_theme_visualaid_desc','mceToggleVisualAid'],['anchor','anchor.gif','lang_theme_anchor_desc','mceInsertAnchor'],['newdocument','newdocument.gif','lang_newdocument_desc','mceNewDocument']],_buttonMap:'anchor,backcolor,bold,bullist,charmap,cleanup,code,copy,cut,forecolor,help,hr,image,indent,italic,justifycenter,justifyfull,justifyleft,justifyright,link,newdocument,numlist,outdent,paste,redo,removeformat,strikethrough,sub,sup,underline,undo,unlink,visualaid,advhr,ltr,rtl,emotions,flash,fullpage,fullscreen,iespell,insertdate,inserttime,pastetext,pasteword,selectall,preview,print,save,replace,search,table,cell_props,delete_col,delete_row,col_after,col_before,row_after,row_before,merge_cells,row_props,split_cells,delete_table',getControlHTML:function(button_name){var i,x,but;for(i=0;i4?but[4]:false),(but.length>5?but[5]:null));if(but[0]==button_name)return tinyMCE.getButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3],(but.length>4?but[4]:false),(but.length>5?but[5]:null))}switch(button_name){case"formatselect":var html='';return html;case"styleselect":return'';case"fontselect":var fontHTML='';return fontHTML;case"fontsizeselect":return'';case"|":case"separator":return'';case"spacer":return'';case"rowseparator":return'
'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case'mceHelp':tinyMCE.openWindow({file:'about.htm',width:480,height:380},{tinymce_version:tinyMCE.majorVersion+"."+tinyMCE.minorVersion,tinymce_releasedate:tinyMCE.releaseDate,inline:"yes"});return true;case"mceLink":var inst=tinyMCE.getInstanceById(editor_id);var doc=inst.getDoc();var selectedText="";if(tinyMCE.isMSIE){var rng=doc.selection.createRange();selectedText=rng.text}else selectedText=inst.getSel().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return true}var href="",target="",title="",onclick="",action="insert",style_class="";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&tinyMCE.getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=tinyMCE.getAttrib(tinyMCE.linkElement,'href');target=tinyMCE.getAttrib(tinyMCE.linkElement,'target');title=tinyMCE.getAttrib(tinyMCE.linkElement,'title');onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');style_class=tinyMCE.getAttrib(tinyMCE.linkElement,'class');if(onclick=="")onclick=tinyMCE.getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);");mceRealHref=tinyMCE.getAttrib(tinyMCE.linkElement,'mce_href');if(mceRealHref!=""){href=mceRealHref;if(tinyMCE.getParam('convert_urls'))href=eval(tinyMCE.settings['urlconverter_callback']+"(href, tinyMCE.linkElement, true);")}action="update"}var template=new Array();template['file']='link.htm';template['width']=310;template['height']=200;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);if(inst.settings['insertlink_callback']){var returnVal=eval(inst.settings['insertlink_callback']+"(href, target, title, onclick, action, style_class);");if(returnVal&&returnVal['href'])TinyMCE_AdvancedTheme._insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick'],returnVal['style_class'])}else{tinyMCE.openWindow(template,{href:href,target:target,title:title,onclick:onclick,action:action,className:style_class,inline:"yes"})}return true;case"mceImage":var src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var title="",onmouseover="",onmouseout="",action="insert";var img=tinyMCE.imgElement;var inst=tinyMCE.getInstanceById(editor_id);if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){img=tinyMCE.selectedElement;tinyMCE.imgElement=img}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return true;src=tinyMCE.getAttrib(img,'src');alt=tinyMCE.getAttrib(img,'alt');if(alt=="")alt=tinyMCE.getAttrib(img,'title');if(tinyMCE.isGecko){var w=img.style.width;if(w!=null&&w!="")img.setAttribute("width",w);var h=img.style.height;if(h!=null&&h!="")img.setAttribute("height",h)}border=tinyMCE.getAttrib(img,'border');hspace=tinyMCE.getAttrib(img,'hspace');vspace=tinyMCE.getAttrib(img,'vspace');width=tinyMCE.getAttrib(img,'width');height=tinyMCE.getAttrib(img,'height');align=tinyMCE.getAttrib(img,'align');onmouseover=tinyMCE.getAttrib(img,'onmouseover');onmouseout=tinyMCE.getAttrib(img,'onmouseout');title=tinyMCE.getAttrib(img,'title');if(tinyMCE.isMSIE){width=img.attributes['width'].specified?width:"";height=img.attributes['height'].specified?height:""}src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);");mceRealSrc=tinyMCE.getAttrib(img,'mce_src');if(mceRealSrc!=""){src=mceRealSrc;if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src, img, true);")}action="update"}var template=new Array();template['file']='image.htm?src={$src}';template['width']=355;template['height']=265+(tinyMCE.isMSIE?25:0);template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);if(inst.settings['insertimage_callback']){var returnVal=eval(inst.settings['insertimage_callback']+"(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);");if(returnVal&&returnVal['src'])TinyMCE_AdvancedTheme._insertImage(returnVal['src'],returnVal['alt'],returnVal['border'],returnVal['hspace'],returnVal['vspace'],returnVal['width'],returnVal['height'],returnVal['align'],returnVal['title'],returnVal['onmouseover'],returnVal['onmouseout'])}else tinyMCE.openWindow(template,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action,inline:"yes"});return true;case"forecolor":var fcp=new TinyMCE_Layer(editor_id+'_fcPreview',false),p,img,elm;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!fcp.exists()){fcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=fcp.getElement();elm._editor_id=editor_id;elm._command="forecolor";elm._switchId=editor_id+"_forecolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_forecolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));fcp.moveTo(p.absLeft,p.absTop);fcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).foreColor;fcp.show();return false;case"forecolorpicker":this._pickColor(editor_id,'forecolor');return true;case"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_text_colors','forecolor'));tinyMCE.switchClass(editor_id+'_forecolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_forecolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"HiliteColor":var bcp=new TinyMCE_Layer(editor_id+'_bcPreview',false),p,img;TinyMCE_AdvancedTheme._hideMenus(editor_id);if(!bcp.exists()){bcp.create('div','mceColorPreview',document.getElementById(editor_id+'_toolbar'));elm=bcp.getElement();elm._editor_id=editor_id;elm._command="HiliteColor";elm._switchId=editor_id+"_backcolor";tinyMCE.addEvent(elm,'click',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseover',TinyMCE_AdvancedTheme._handleMenuEvent);tinyMCE.addEvent(elm,'mouseout',TinyMCE_AdvancedTheme._handleMenuEvent)}img=tinyMCE.selectNodes(document.getElementById(editor_id+"_backcolor"),function(n){return n.nodeName=="IMG"})[0];p=tinyMCE.getAbsPosition(img,document.getElementById(editor_id+'_toolbar'));bcp.moveTo(p.absLeft,p.absTop);bcp.getElement().style.backgroundColor=value!=null?value:tinyMCE.getInstanceById(editor_id).backColor;bcp.show();return false;case"HiliteColorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new TinyMCE_Layer(editor_id+'_bcMenu');if(!ml.exists())ml.create('div','mceMenu',document.body,TinyMCE_AdvancedTheme._getColorHTML(editor_id,'theme_advanced_background_colors','HiliteColor'));tinyMCE.switchClass(editor_id+'_backcolor','mceMenuButtonFocus');ml.moveRelativeTo(document.getElementById(editor_id+"_backcolor"),'bl');ml.moveBy(tinyMCE.isMSIE&&!tinyMCE.isOpera?-1:1,-1);if(tinyMCE.isOpera)ml.moveBy(0,-2);ml.show();return true;case"backcolorpicker":this._pickColor(editor_id,'HiliteColor');return true;case"mceColorPicker":if(user_interface){var template=[];if(!value['callback']&&!value['color'])value['color']=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=380;template['height']=250;template['close_previous']="no";template['width']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height',0);if(typeof(value['store_selection'])=="undefined")value['store_selection']=true;tinyMCE.lastColorPickerValue=value;tinyMCE.openWindow(template,{editor_id:editor_id,mce_store_selection:value['store_selection'],inline:"yes",command:"mceColorPicker",input_color:value['color']})}else{var savedVal=tinyMCE.lastColorPickerValue,elm;if(savedVal['callback']){savedVal['callback'](value);return true}elm=savedVal['document'].getElementById(savedVal['element_id']);elm.value=value;if(elm.onchange!=null&&elm.onchange!='')eval('elm.onchange();')}return true;case"mceCodeEditor":var template=new Array();template['file']='source_editor.htm';template['width']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_width",720));template['height']=parseInt(tinyMCE.getParam("theme_advanced_source_editor_height",580));tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no",inline:"yes"});return true;case"mceCharMap":var template=new Array();template['file']='charmap.htm';template['width']=550+(tinyMCE.isOpera?40:0);template['height']=250;template['width']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_charmap_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceInsertAnchor":var template=new Array();template['file']='anchor.htm';template['width']=320;template['height']=90+(tinyMCE.isNS7?30:0);template['width']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_width',0);template['height']+=tinyMCE.getLang('lang_theme_advanced_anchor_delta_height',0);tinyMCE.openWindow(template,{editor_id:editor_id,inline:"yes"});return true;case"mceNewDocument":if(confirm(tinyMCE.getLang('lang_newdocument')))tinyMCE.execInstanceCommand(editor_id,'mceSetContent',false,' ');return true}return false},getEditorTemplate:function(settings,editorId){function removeFromArray(in_array,remove_array){var outArray=new Array(),skip;for(var i=0;i 

';var layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var styleSelectHTML='';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i'+key+''}TinyMCE_AdvancedTheme._autoImportCSSClasses=false}switch(layoutManager){case"SimpleLayout":var toolbarHTML="";var toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var toolbarAlign=tinyMCE.getParam("theme_advanced_toolbar_align","center");var pathLocation=tinyMCE.getParam("theme_advanced_path_location","none");var statusbarLocation=tinyMCE.getParam("theme_advanced_statusbar_location",pathLocation);var defVals={theme_advanced_buttons1:"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,separator,sub,sup,separator,charmap"};toolbarHTML+='0){toolbarHTML+="
";deltaHeight-=23}}toolbarHTML+='
';template['html']='';if(toolbarLocation=="top")template['html']+='';if(statusbarLocation=="top"){template['html']+='';deltaHeight-=23}template['html']+='';if(toolbarLocation=="bottom")template['html']+='';if(toolbarLocation=="external"){var bod=document.body;var elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(toolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='
'+toolbarHTML+'
'+statusbarHTML+'
'+toolbarHTML+'
'+toolbarHTML+'
';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+=''+statusbarHTML+'';deltaHeight-=23}template['html']+='';break;case"RowLayout":template['html']='';var containers=tinyMCE.getParam("theme_advanced_containers","",true,",");var defaultContainerCSS=tinyMCE.getParam("theme_advanced_containers_default_class","container");var defaultContainerAlign=tinyMCE.getParam("theme_advanced_containers_default_align","center");for(var i=0;i';else if(containers[i]=="mceElementpath"||containers[i]=="mceStatusbar"){var pathClass="mceStatusbar";if(i==containers.length-1){pathClass="mceStatusbarBottom"}else if(i==0){pathClass="mceStatusbar"}else{deltaHeight-=2}template['html']+='';deltaHeight-=22}else{var curContainer=tinyMCE.getParam("theme_advanced_container_"+containers[i],"",true,',');var curContainerHTML="";var curAlign=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align",defaultContainerAlign);var curCSS=tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class",defaultContainerCSS);curContainer=removeFromArray(curContainer,tinyMCE.getParam("theme_advanced_disable","",true,','));for(var j=0;j0){curContainerHTML+="
";deltaHeight-=23}template['html']+='
'}}template['html']+='
'+statusbarHTML+'
'+curContainerHTML+'
';break;case"CustomLayout":var customLayout=tinyMCE.getParam("theme_advanced_custom_layout","");if(customLayout!=""&&eval("typeof("+customLayout+")")!="undefined"){template=eval(customLayout+"(template);")}break}if(resizing)template['html']+='';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);if(!template['delta_width'])template['delta_width']=0;if(!template['delta_height'])template['delta_height']=deltaHeight;return template},initInstance:function(inst){if(tinyMCE.getParam("theme_advanced_resizing",false)){if(tinyMCE.getParam("theme_advanced_resizing_use_cookie",true)){var w=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_width");var h=TinyMCE_AdvancedTheme._getCookie("TinyMCE_"+inst.editorId+"_height");TinyMCE_AdvancedTheme._resizeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",true))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},removeInstance:function(inst){new TinyMCE_Layer(inst.editorId+'_fcMenu').remove();new TinyMCE_Layer(inst.editorId+'_bcMenu').remove()},hideInstance:function(inst){TinyMCE_AdvancedTheme._hideMenus(inst.editorId)},_handleMenuEvent:function(e){var te=tinyMCE.isMSIE?window.event.srcElement:e.target;tinyMCE._menuButtonEvent(e.type=="mouseover"?"over":"out",document.getElementById(te._switchId));if(e.type=="click")tinyMCE.execInstanceCommand(te._editor_id,te._command)},_hideMenus:function(id){var fcml=new TinyMCE_Layer(id+'_fcMenu'),bcml=new TinyMCE_Layer(id+'_bcMenu');if(fcml.exists()&&fcml.isVisible()){tinyMCE.switchClass(id+'_forecolor','mceMenuButton');fcml.hide()}if(bcml.exists()&&bcml.isVisible()){tinyMCE.switchClass(id+'_backcolor','mceMenuButton');bcml.hide()}},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection,setup_content){var alignNode,breakOut,classNode;function selectByValue(select_elm,value,first_index){first_index=typeof(first_index)=="undefined"?false:true;if(select_elm){for(var i=0;i=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName.indexOf("html:")==0)nodeName=nodeName.substring(5);if(nodeName=="b"){nodeName="strong"}if(nodeName=="i"){nodeName="em"}if(nodeName=="span"){var cn=tinyMCE.getAttrib(path[i],"class");if(cn!=""&&cn.indexOf('mceItem')==-1)nodeData+="class: "+cn+" ";var st=tinyMCE.getAttrib(path[i],"style");if(st!=""){st=tinyMCE.serializeStyle(tinyMCE.parseStyle(st));nodeData+="style: "+tinyMCE.xmlEncode(st)+" "}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font: "+tinyMCE.xmlEncode(face)+" ";var size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size: "+tinyMCE.xmlEncode(size)+" ";var color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color: "+tinyMCE.xmlEncode(color)+" "}if(tinyMCE.getAttrib(path[i],'id')!=""){nodeData+="id: "+path[i].getAttribute('id')+" "}var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1)nodeData+="class: "+className+" ";if(tinyMCE.getAttrib(path[i],'src')!=""){var src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src: "+tinyMCE.xmlEncode(src)+" "}if(path[i].nodeName=='A'&&tinyMCE.getAttrib(path[i],'href')!=""){var href=tinyMCE.getAttrib(path[i],"mce_href");if(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href: "+tinyMCE.xmlEncode(href)+" "}className=tinyMCE.getAttrib(path[i],"class");if((nodeName=="img"||nodeName=="span")&&className.indexOf('mceItem')!=-1){nodeName=className.replace(/mceItem([a-z]+)/gi,'$1').toLowerCase();nodeData=path[i].getAttribute('title')}if(nodeName=="a"&&(anchor=tinyMCE.getAttrib(path[i],"name"))!=""){nodeName="a";nodeName+="#"+tinyMCE.xmlEncode(anchor);nodeData=""}if(tinyMCE.getAttrib(path[i],'name').indexOf("mce_")!=0){var className=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i],"class"),false);if(className!=""&&className.indexOf('mceItem')==-1){nodeName+="."+className}}var cmd='tinyMCE.execInstanceCommand(\''+editor_id+'\',\'mceSelectNodeDepth\',false,\''+i+'\');';html+=''+nodeName+'';if(i>0){html+=" » "}}pathElm.innerHTML=''+tinyMCE.getLang('lang_theme_path')+": "+html+' '}tinyMCE.switchClass(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClass(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClass(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClass(editor_id+'_link','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_unlink','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_outdent','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_image','mceButtonNormal');tinyMCE.switchClass(editor_id+'_hr','mceButtonNormal');if(node.nodeName=="A"&&tinyMCE.getAttrib(node,"class").indexOf('mceItemAnchor')!=-1)tinyMCE.switchClass(editor_id+'_anchor','mceButtonSelected');var anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClass(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal');tinyMCE.switchClass(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal')}tinyMCE.switchClass(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal');if(undo_levels!=-1){tinyMCE.switchClass(editor_id+'_undo','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_redo','mceButtonDisabled')}if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClass(editor_id+'_outdent','mceButtonNormal');if(undo_index!=-1&&(undo_index0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);classNode=node;breakOut=false;var index=0;do{if(classNode&&classNode.className){for(var i=0;i");else selectByValue(selectElm,"")}var selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){if(!tinyMCE.isSafari&&!(tinyMCE.isMSIE&&!tinyMCE.isOpera)){var face=inst.queryCommandValue('FontName');face=face==null||face==""?"":face;selectByValue(selectElm,face,face!="")}else{var elm=tinyMCE.getParentElement(node,"font","face");if(elm){var family=tinyMCE.getAttrib(elm,"face");if(family=='')family=''+elm.style.fontFamily;if(!selectByValue(selectElm,family,family!=""))selectByValue(selectElm,"")}else selectByValue(selectElm,"")}}var selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){if(!tinyMCE.isSafari&&!tinyMCE.isOpera){var size=inst.queryCommandValue('FontSize');selectByValue(selectElm,size==null||size==""?"0":size)}else{var elm=tinyMCE.getParentElement(node,"font","size");if(elm){var size=tinyMCE.getAttrib(elm,"size");if(size==''){var sizes=new Array('','8px','10px','12px','14px','18px','24px','36px');size=''+elm.style.fontSize;for(var i=0;i0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var curCookie=name+"="+escape(value)+((expires)?"; expires="+expires.toGMTString():"")+((path)?"; path="+escape(path):"")+((domain)?"; domain="+domain:"")+((secure)?"; secure":"");document.cookie=curCookie},_getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0)return null}else begin+=2;var end=document.cookie.indexOf(";",begin);if(end==-1)end=dc.length;return unescape(dc.substring(begin+prefix.length,end))},_resizeTo:function(inst,w,h,set_w){var editorContainer=document.getElementById(inst.editorId+'_parent');var tableElm=editorContainer.firstChild;var iframe=inst.iframeElement;if(w==null||w=="null"){set_w=false;w=0}if(h==null||h=="null")return;w=parseInt(w);h=parseInt(h);if(tinyMCE.isGecko){w+=2;h+=2}var dx=w-tableElm.clientWidth;var dy=h-tableElm.clientHeight;w=w<1?30:w;h=h<1?30:h;if(set_w)tableElm.style.width=w+"px";tableElm.style.height=h+"px";iw=iframe.clientWidth+dx;ih=iframe.clientHeight+dy;iw=iw<1?30:iw;ih=ih<1?30:ih;if(tinyMCE.isGecko){iw-=2;ih-=2}if(set_w)iframe.style.width=iw+"px";iframe.style.height=ih+"px";if(set_w){var tableBodyElm=tableElm.firstChild;var minIframeWidth=tableBodyElm.scrollWidth;if(inst.iframeElement.clientWidth';for(i=0;i';if((i+1)%8==0)h+=''}h+='';if(tinyMCE.getParam("theme_advanced_more_colors",true))h+=''+tinyMCE.getLang('lang_more_colors')+'';return h},_pickColor:function(id,cm){var inputColor,inst=tinyMCE.selectedInstance;if(cm=='forecolor'&&inst)inputColor=inst.foreColor;if((cm=='backcolor'||cm=='HiliteColor')&&inst)inputColor=inst.backColor;tinyMCE.execCommand('mceColorPicker',true,{color:inputColor,callback:function(c){tinyMCE.execInstanceCommand(id,cm,false,c)}})},_insertImage:function(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){tinyMCE.execCommand('mceBeginUndoLevel');if(src=="")return;if(!tinyMCE.imgElement&&tinyMCE.isSafari){var html="";html+=''+alt+'';tinyMCE.execCommand("mceInsertContent",false,html)}else{if(!tinyMCE.imgElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'');else tinyMCE.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"img","src",tinyMCE.uniqueURL)}}if(tinyMCE.imgElement){var needsRepaint=false;var msrc=src;src=eval(tinyMCE.settings['urlconverter_callback']+"(src, tinyMCE.imgElement);");if(tinyMCE.getParam('convert_urls'))msrc=src;if(onmouseover&&onmouseover!="")onmouseover="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseover, tinyMCE.imgElement);")+"';";if(onmouseout&&onmouseout!="")onmouseout="this.src='"+eval(tinyMCE.settings['urlconverter_callback']+"(onmouseout, tinyMCE.imgElement);")+"';";if(typeof(title)=="undefined")title=alt;if(width!=tinyMCE.imgElement.getAttribute("width")||height!=tinyMCE.imgElement.getAttribute("height")||align!=tinyMCE.imgElement.getAttribute("align"))needsRepaint=true;tinyMCE.setAttrib(tinyMCE.imgElement,'src',src);tinyMCE.setAttrib(tinyMCE.imgElement,'mce_src',msrc);tinyMCE.setAttrib(tinyMCE.imgElement,'alt',alt);tinyMCE.setAttrib(tinyMCE.imgElement,'title',title);tinyMCE.setAttrib(tinyMCE.imgElement,'align',align);tinyMCE.setAttrib(tinyMCE.imgElement,'border',border,true);tinyMCE.setAttrib(tinyMCE.imgElement,'hspace',hspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'vspace',vspace,true);tinyMCE.setAttrib(tinyMCE.imgElement,'width',width,true);tinyMCE.setAttrib(tinyMCE.imgElement,'height',height,true);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseover',onmouseover);tinyMCE.setAttrib(tinyMCE.imgElement,'onmouseout',onmouseout);if(width&&width!="")tinyMCE.imgElement.style.pixelWidth=width;if(height&&height!="")tinyMCE.imgElement.style.pixelHeight=height;if(needsRepaint)tinyMCE.selectedInstance.repaint()}tinyMCE.execCommand('mceEndUndoLevel')},_insertLink:function(href,target,title,onclick,style_class){tinyMCE.execCommand('mceBeginUndoLevel');if(tinyMCE.selectedInstance&&tinyMCE.selectedElement&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img"){var doc=tinyMCE.selectedInstance.getDoc();var linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");var newLink=false;if(!linkElement){linkElement=doc.createElement("a");newLink=true}var mhref=href;var thref=eval(tinyMCE.settings['urlconverter_callback']+"(href, linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(linkElement,'href',thref);tinyMCE.setAttrib(linkElement,'mce_href',mhref);tinyMCE.setAttrib(linkElement,'target',target);tinyMCE.setAttrib(linkElement,'title',title);tinyMCE.setAttrib(linkElement,'onclick',onclick);tinyMCE.setAttrib(linkElement,'class',style_class);if(newLink){linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true));tinyMCE.selectedElement.parentNode.replaceChild(linkElement,tinyMCE.selectedElement)}return}if(!tinyMCE.linkElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari){tinyMCE.execCommand("mceInsertContent",false,''+tinyMCE.selectedInstance.selection.getSelectedHTML()+'')}else tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);var elementArray=tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var i=0;i 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); + + if (but[0] == button_name) + return tinyMCE.getButtonHTML(but[0], but[2], '{$themeurl}/images/' + but[1], but[3], (but.length > 4 ? but[4] : false), (but.length > 5 ? but[5] : null)); + } + + // Custom controlls other than buttons + switch (button_name) { + case "formatselect": + var html = ''; + + return html; + + case "styleselect": + return ''; + + case "fontselect": + var fontHTML = ''; + return fontHTML; + + case "fontsizeselect": + return ''; + + case "|": + case "separator": + return ''; + + case "spacer": + return ''; + + case "rowseparator": + return '
'; + } + + return ""; + }, + + /** + * Theme specific execcommand handling. + */ + execCommand : function(editor_id, element, command, user_interface, value) { + switch (command) { + case 'mceHelp': + tinyMCE.openWindow({ + file : 'about.htm', + width : 480, + height : 380 + }, { + tinymce_version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion, + tinymce_releasedate : tinyMCE.releaseDate, + inline : "yes" + }); + return true; + + case "mceLink": + var inst = tinyMCE.getInstanceById(editor_id); + var doc = inst.getDoc(); + var selectedText = ""; + + if (tinyMCE.isMSIE) { + var rng = doc.selection.createRange(); + selectedText = rng.text; + } else + selectedText = inst.getSel().toString(); + + if (!tinyMCE.linkElement) { + if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") && (selectedText.length <= 0)) + return true; + } + + var href = "", target = "", title = "", onclick = "", action = "insert", style_class = ""; + + if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a") + tinyMCE.linkElement = tinyMCE.selectedElement; + + // Is anchor not a link + if (tinyMCE.linkElement != null && tinyMCE.getAttrib(tinyMCE.linkElement, 'href') == "") + tinyMCE.linkElement = null; + + if (tinyMCE.linkElement) { + href = tinyMCE.getAttrib(tinyMCE.linkElement, 'href'); + target = tinyMCE.getAttrib(tinyMCE.linkElement, 'target'); + title = tinyMCE.getAttrib(tinyMCE.linkElement, 'title'); + onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); + style_class = tinyMCE.getAttrib(tinyMCE.linkElement, 'class'); + + // Try old onclick to if copy/pasted content + if (onclick == "") + onclick = tinyMCE.getAttrib(tinyMCE.linkElement, 'onclick'); + + onclick = tinyMCE.cleanupEventStr(onclick); + + href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); + + // Use mce_href if defined + mceRealHref = tinyMCE.getAttrib(tinyMCE.linkElement, 'mce_href'); + if (mceRealHref != "") { + href = mceRealHref; + + if (tinyMCE.getParam('convert_urls')) + href = eval(tinyMCE.settings['urlconverter_callback'] + "(href, tinyMCE.linkElement, true);"); + } + + action = "update"; + } + + var template = new Array(); + + template['file'] = 'link.htm'; + template['width'] = 310; + template['height'] = 200; + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0); + + if (inst.settings['insertlink_callback']) { + var returnVal = eval(inst.settings['insertlink_callback'] + "(href, target, title, onclick, action, style_class);"); + if (returnVal && returnVal['href']) + TinyMCE_AdvancedTheme._insertLink(returnVal['href'], returnVal['target'], returnVal['title'], returnVal['onclick'], returnVal['style_class']); + } else { + tinyMCE.openWindow(template, {href : href, target : target, title : title, onclick : onclick, action : action, className : style_class, inline : "yes"}); + } + + return true; + + case "mceImage": + var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = ""; + var title = "", onmouseover = "", onmouseout = "", action = "insert"; + var img = tinyMCE.imgElement; + var inst = tinyMCE.getInstanceById(editor_id); + + if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { + img = tinyMCE.selectedElement; + tinyMCE.imgElement = img; + } + + if (img) { + // Is it a internal MCE visual aid image, then skip this one. + if (tinyMCE.getAttrib(img, 'name').indexOf('mce_') == 0) + return true; + + src = tinyMCE.getAttrib(img, 'src'); + alt = tinyMCE.getAttrib(img, 'alt'); + + // Try polling out the title + if (alt == "") + alt = tinyMCE.getAttrib(img, 'title'); + + // Fix width/height attributes if the styles is specified + if (tinyMCE.isGecko) { + var w = img.style.width; + if (w != null && w != "") + img.setAttribute("width", w); + + var h = img.style.height; + if (h != null && h != "") + img.setAttribute("height", h); + } + + border = tinyMCE.getAttrib(img, 'border'); + hspace = tinyMCE.getAttrib(img, 'hspace'); + vspace = tinyMCE.getAttrib(img, 'vspace'); + width = tinyMCE.getAttrib(img, 'width'); + height = tinyMCE.getAttrib(img, 'height'); + align = tinyMCE.getAttrib(img, 'align'); + onmouseover = tinyMCE.getAttrib(img, 'onmouseover'); + onmouseout = tinyMCE.getAttrib(img, 'onmouseout'); + title = tinyMCE.getAttrib(img, 'title'); + + // Is realy specified? + if (tinyMCE.isMSIE) { + width = img.attributes['width'].specified ? width : ""; + height = img.attributes['height'].specified ? height : ""; + } + + //onmouseover = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseover)); + //onmouseout = tinyMCE.getImageSrc(tinyMCE.cleanupEventStr(onmouseout)); + + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); + + // Use mce_src if defined + mceRealSrc = tinyMCE.getAttrib(img, 'mce_src'); + if (mceRealSrc != "") { + src = mceRealSrc; + + if (tinyMCE.getParam('convert_urls')) + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, img, true);"); + } + + //if (onmouseover != "") + // onmouseover = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, img, true);"); + + //if (onmouseout != "") + // onmouseout = eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, img, true);"); + + action = "update"; + } + + var template = new Array(); + + template['file'] = 'image.htm?src={$src}'; + template['width'] = 355; + template['height'] = 265 + (tinyMCE.isMSIE ? 25 : 0); + + // Language specific width and height addons + template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0); + + if (inst.settings['insertimage_callback']) { + var returnVal = eval(inst.settings['insertimage_callback'] + "(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout, action);"); + if (returnVal && returnVal['src']) + TinyMCE_AdvancedTheme._insertImage(returnVal['src'], returnVal['alt'], returnVal['border'], returnVal['hspace'], returnVal['vspace'], returnVal['width'], returnVal['height'], returnVal['align'], returnVal['title'], returnVal['onmouseover'], returnVal['onmouseout']); + } else + tinyMCE.openWindow(template, {src : src, alt : alt, border : border, hspace : hspace, vspace : vspace, width : width, height : height, align : align, title : title, onmouseover : onmouseover, onmouseout : onmouseout, action : action, inline : "yes"}); + + return true; + + case "forecolor": + var fcp = new TinyMCE_Layer(editor_id + '_fcPreview', false), p, img, elm; + + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + if (!fcp.exists()) { + fcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); + elm = fcp.getElement(); + elm._editor_id = editor_id; + elm._command = "forecolor"; + elm._switchId = editor_id + "_forecolor"; + tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); + } + + img = tinyMCE.selectNodes(document.getElementById(editor_id + "_forecolor"), function(n) {return n.nodeName == "IMG";})[0]; + p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); + + fcp.moveTo(p.absLeft, p.absTop); + fcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).foreColor; + fcp.show(); + + return false; + + case "forecolorpicker": + this._pickColor(editor_id, 'forecolor'); + return true; + + case "forecolorMenu": + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + // Create color layer + var ml = new TinyMCE_Layer(editor_id + '_fcMenu'); + + if (!ml.exists()) + ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_text_colors', 'forecolor')); + + tinyMCE.switchClass(editor_id + '_forecolor', 'mceMenuButtonFocus'); + ml.moveRelativeTo(document.getElementById(editor_id + "_forecolor"), 'bl'); + + ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); + + if (tinyMCE.isOpera) + ml.moveBy(0, -2); + + ml.show(); + return true; + + case "HiliteColor": + var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img; + + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + if (!bcp.exists()) { + bcp.create('div', 'mceColorPreview', document.getElementById(editor_id + '_toolbar')); + elm = bcp.getElement(); + elm._editor_id = editor_id; + elm._command = "HiliteColor"; + elm._switchId = editor_id + "_backcolor"; + tinyMCE.addEvent(elm, 'click', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseover', TinyMCE_AdvancedTheme._handleMenuEvent); + tinyMCE.addEvent(elm, 'mouseout', TinyMCE_AdvancedTheme._handleMenuEvent); + } + + img = tinyMCE.selectNodes(document.getElementById(editor_id + "_backcolor"), function(n) {return n.nodeName == "IMG";})[0]; + p = tinyMCE.getAbsPosition(img, document.getElementById(editor_id + '_toolbar')); + + bcp.moveTo(p.absLeft, p.absTop); + bcp.getElement().style.backgroundColor = value != null ? value : tinyMCE.getInstanceById(editor_id).backColor; + bcp.show(); + + return false; + + case "HiliteColorMenu": + TinyMCE_AdvancedTheme._hideMenus(editor_id); + + // Create color layer + var ml = new TinyMCE_Layer(editor_id + '_bcMenu'); + + if (!ml.exists()) + ml.create('div', 'mceMenu', document.body, TinyMCE_AdvancedTheme._getColorHTML(editor_id, 'theme_advanced_background_colors', 'HiliteColor')); + + tinyMCE.switchClass(editor_id + '_backcolor', 'mceMenuButtonFocus'); + ml.moveRelativeTo(document.getElementById(editor_id + "_backcolor"), 'bl'); + + ml.moveBy(tinyMCE.isMSIE && !tinyMCE.isOpera ? -1 : 1, -1); + + if (tinyMCE.isOpera) + ml.moveBy(0, -2); + + ml.show(); + return true; + + case "backcolorpicker": + this._pickColor(editor_id, 'HiliteColor'); + return true; + + case "mceColorPicker": + if (user_interface) { + var template = []; + + if (!value['callback'] && !value['color']) + value['color'] = value['document'].getElementById(value['element_id']).value; + + template['file'] = 'color_picker.htm'; + template['width'] = 380; + template['height'] = 250; + template['close_previous'] = "no"; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_colorpicker_delta_height', 0); + + if (typeof(value['store_selection']) == "undefined") + value['store_selection'] = true; + + tinyMCE.lastColorPickerValue = value; + tinyMCE.openWindow(template, {editor_id : editor_id, mce_store_selection : value['store_selection'], inline : "yes", command : "mceColorPicker", input_color : value['color']}); + } else { + var savedVal = tinyMCE.lastColorPickerValue, elm; + + if (savedVal['callback']) { + savedVal['callback'](value); + return true; + } + + elm = savedVal['document'].getElementById(savedVal['element_id']); + elm.value = value; + + if (elm.onchange != null && elm.onchange != '') + eval('elm.onchange();'); + } + return true; + + case "mceCodeEditor": + var template = new Array(); + + template['file'] = 'source_editor.htm'; + template['width'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_width", 720)); + template['height'] = parseInt(tinyMCE.getParam("theme_advanced_source_editor_height", 580)); + + tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "no", inline : "yes"}); + return true; + + case "mceCharMap": + var template = new Array(); + + template['file'] = 'charmap.htm'; + template['width'] = 550 + (tinyMCE.isOpera ? 40 : 0); + template['height'] = 250; + + template['width'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_charmap_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceInsertAnchor": + var template = new Array(); + + template['file'] = 'anchor.htm'; + template['width'] = 320; + template['height'] = 90 + (tinyMCE.isNS7 ? 30 : 0); + + template['width'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_width', 0); + template['height'] += tinyMCE.getLang('lang_theme_advanced_anchor_delta_height', 0); + + tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"}); + return true; + + case "mceNewDocument": + if (confirm(tinyMCE.getLang('lang_newdocument'))) + tinyMCE.execInstanceCommand(editor_id, 'mceSetContent', false, ' '); + + return true; + } + + return false; + }, + + /** + * Editor instance template function. + */ + getEditorTemplate : function(settings, editorId) { + function removeFromArray(in_array, remove_array) { + var outArray = new Array(), skip; + + for (var i=0; i 

'; + var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout"); + + // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY! + var styleSelectHTML = ''; + if (settings['theme_advanced_styles']) { + var stylesAr = settings['theme_advanced_styles'].split(';'); + + for (var i=0; i' + key + ''; + } + + TinyMCE_AdvancedTheme._autoImportCSSClasses = false; + } + + switch(layoutManager) { + case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)... + var toolbarHTML = ""; + var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom"); + var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center"); + var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none"); // Compatiblity + var statusbarLocation = tinyMCE.getParam("theme_advanced_statusbar_location", pathLocation); + var defVals = { + theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", + theme_advanced_buttons2 : "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", + theme_advanced_buttons3 : "hr,removeformat,visualaid,separator,sub,sup,separator,charmap" + }; + + // Add accessibility control + toolbarHTML += ' 0) { + toolbarHTML += "
"; + deltaHeight -= 23; + } + } + + // Add accessibility control + toolbarHTML += '
'; + + // Setup template html + template['html'] = ''; + + if (toolbarLocation == "top") + template['html'] += ''; + + if (statusbarLocation == "top") { + template['html'] += ''; + deltaHeight -= 23; + } + + template['html'] += ''; + + if (toolbarLocation == "bottom") + template['html'] += ''; + + // External toolbar changes + if (toolbarLocation == "external") { + var bod = document.body; + var elm = document.createElement ("div"); + + toolbarHTML = tinyMCE.replaceVar(toolbarHTML, 'style_select_options', styleSelectHTML); + toolbarHTML = tinyMCE.applyTemplate(toolbarHTML, {editor_id : editorId}); + + elm.className = "mceToolbarExternal"; + elm.id = editorId+"_toolbar"; + elm.innerHTML = '
' + toolbarHTML + '
' + statusbarHTML + '
' + toolbarHTML + '
'+toolbarHTML+'
'; + bod.appendChild (elm); + // bod.style.marginTop = elm.offsetHeight + "px"; + + deltaHeight = 0; + tinyMCE.getInstanceById(editorId).toolbarElement = elm; + + //template['html'] = '
'+toolbarHTML+'
' + template["html"]; + } else { + tinyMCE.getInstanceById(editorId).toolbarElement = null; + } + + if (statusbarLocation == "bottom") { + template['html'] += '' + statusbarHTML + ''; + deltaHeight -= 23; + } + + template['html'] += ''; + //"SimpleLayout" + break; + + case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom. + template['html'] = ''; + + var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ","); + var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container"); + var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center"); + + //Render Containers: + for (var i = 0; i < containers.length; i++) + { + if (containers[i] == "mceEditor") //Exceptions for mceEditor and ... + template['html'] += ''; + else if (containers[i] == "mceElementpath" || containers[i] == "mceStatusbar") // ... mceElementpath: + { + var pathClass = "mceStatusbar"; + + if (i == containers.length-1) + { + pathClass = "mceStatusbarBottom"; + } + else if (i == 0) + { + pathClass = "mceStatusbar"; + } + else + { + deltaHeight-=2; + } + + template['html'] += ''; + deltaHeight -= 22; + } else { // Render normal Container + var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ','); + var curContainerHTML = ""; + var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign); + var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS); + + curContainer = removeFromArray(curContainer, tinyMCE.getParam("theme_advanced_disable", "", true, ',')); + + for (var j=0; j 0) { + curContainerHTML += "
"; + deltaHeight -= 23; + } + + template['html'] += '
'; + } + } + + template['html'] += '
' + statusbarHTML + '
' + curContainerHTML + '
'; + //RowLayout + break; + + case "CustomLayout" : //User defined layout callback... + var customLayout = tinyMCE.getParam("theme_advanced_custom_layout",""); + + if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined") { + template = eval(customLayout + "(template);"); + } + break; + } + + if (resizing) + template['html'] += ''; + + template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML); + + // Set to default values + if (!template['delta_width']) + template['delta_width'] = 0; + + if (!template['delta_height']) + template['delta_height'] = deltaHeight; + + return template; + }, + + initInstance : function(inst) { + if (tinyMCE.getParam("theme_advanced_resizing", false)) { + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var w = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_width"); + var h = TinyMCE_AdvancedTheme._getCookie("TinyMCE_" + inst.editorId + "_height"); + + TinyMCE_AdvancedTheme._resizeTo(inst, w, h, tinyMCE.getParam("theme_advanced_resize_horizontal", true)); + } + } + + inst.addShortcut('ctrl', 'k', 'lang_link_desc', 'mceLink'); + }, + + removeInstance : function(inst) { + new TinyMCE_Layer(inst.editorId + '_fcMenu').remove(); + new TinyMCE_Layer(inst.editorId + '_bcMenu').remove(); + }, + + hideInstance : function(inst) { + TinyMCE_AdvancedTheme._hideMenus(inst.editorId); + }, + + _handleMenuEvent : function(e) { + var te = tinyMCE.isMSIE ? window.event.srcElement : e.target; + tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" : "out", document.getElementById(te._switchId)); + + if (e.type == "click") + tinyMCE.execInstanceCommand(te._editor_id, te._command); + }, + + _hideMenus : function(id) { + var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id + '_bcMenu'); + + if (fcml.exists() && fcml.isVisible()) { + tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton'); + fcml.hide(); + } + + if (bcml.exists() && bcml.isVisible()) { + tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton'); + bcml.hide(); + } + }, + + /** + * Node change handler. + */ + handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid, any_selection, setup_content) { + var alignNode, breakOut, classNode; + + function selectByValue(select_elm, value, first_index) { + first_index = typeof(first_index) == "undefined" ? false : true; + + if (select_elm) { + for (var i=0; i=0; i--) { + var nodeName = path[i].nodeName.toLowerCase(); + var nodeData = ""; + + if (nodeName.indexOf("html:") == 0) + nodeName = nodeName.substring(5); + + if (nodeName == "b") { + nodeName = "strong"; + } + + if (nodeName == "i") { + nodeName = "em"; + } + + if (nodeName == "span") { + var cn = tinyMCE.getAttrib(path[i], "class"); + if (cn != "" && cn.indexOf('mceItem') == -1) + nodeData += "class: " + cn + " "; + + var st = tinyMCE.getAttrib(path[i], "style"); + if (st != "") { + st = tinyMCE.serializeStyle(tinyMCE.parseStyle(st)); + nodeData += "style: " + tinyMCE.xmlEncode(st) + " "; + } + } + + if (nodeName == "font") { + if (tinyMCE.getParam("convert_fonts_to_spans")) + nodeName = "span"; + + var face = tinyMCE.getAttrib(path[i], "face"); + if (face != "") + nodeData += "font: " + tinyMCE.xmlEncode(face) + " "; + + var size = tinyMCE.getAttrib(path[i], "size"); + if (size != "") + nodeData += "size: " + tinyMCE.xmlEncode(size) + " "; + + var color = tinyMCE.getAttrib(path[i], "color"); + if (color != "") + nodeData += "color: " + tinyMCE.xmlEncode(color) + " "; + } + + if (tinyMCE.getAttrib(path[i], 'id') != "") { + nodeData += "id: " + path[i].getAttribute('id') + " "; + } + + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) + nodeData += "class: " + className + " "; + + if (tinyMCE.getAttrib(path[i], 'src') != "") { + var src = tinyMCE.getAttrib(path[i], "mce_src"); + + if (src == "") + src = tinyMCE.getAttrib(path[i], "src"); + + nodeData += "src: " + tinyMCE.xmlEncode(src) + " "; + } + + if (path[i].nodeName == 'A' && tinyMCE.getAttrib(path[i], 'href') != "") { + var href = tinyMCE.getAttrib(path[i], "mce_href"); + + if (href == "") + href = tinyMCE.getAttrib(path[i], "href"); + + nodeData += "href: " + tinyMCE.xmlEncode(href) + " "; + } + + className = tinyMCE.getAttrib(path[i], "class"); + if ((nodeName == "img" || nodeName == "span") && className.indexOf('mceItem') != -1) { + nodeName = className.replace(/mceItem([a-z]+)/gi, '$1').toLowerCase(); + nodeData = path[i].getAttribute('title'); + } + + if (nodeName == "a" && (anchor = tinyMCE.getAttrib(path[i], "name")) != "") { + nodeName = "a"; + nodeName += "#" + tinyMCE.xmlEncode(anchor); + nodeData = ""; + } + + if (tinyMCE.getAttrib(path[i], 'name').indexOf("mce_") != 0) { + var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(path[i], "class"), false); + if (className != "" && className.indexOf('mceItem') == -1) { + nodeName += "." + className; + } + } + + var cmd = 'tinyMCE.execInstanceCommand(\'' + editor_id + '\',\'mceSelectNodeDepth\',false,\'' + i + '\');'; + html += '' + nodeName + ''; + + if (i > 0) { + html += " » "; + } + } + + pathElm.innerHTML = '' + tinyMCE.getLang('lang_theme_path') + ": " + html + ' '; + } + + // Reset old states + tinyMCE.switchClass(editor_id + '_justifyleft', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyright', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifycenter', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_justifyfull', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_sub', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_sup', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_link', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_unlink', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_image', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_hr', 'mceButtonNormal'); + + if (node.nodeName == "A" && tinyMCE.getAttrib(node, "class").indexOf('mceItemAnchor') != -1) + tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected'); + + // Get link + var anchorLink = tinyMCE.getParentElement(node, "a", "href"); + + if (anchorLink || any_selection) { + tinyMCE.switchClass(editor_id + '_link', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_unlink', anchorLink ? 'mceButtonSelected' : 'mceButtonNormal'); + } + + // Handle visual aid + tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ? 'mceButtonSelected' : 'mceButtonNormal'); + + if (undo_levels != -1) { + tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled'); + tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled'); + } + + // Within li, blockquote + if (tinyMCE.getParentElement(node, "li,blockquote")) + tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal'); + + // Has redo levels + if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels > 0)) + tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal'); + + // Has undo levels + if (undo_index != -1 && (undo_index > 0 && undo_levels > 0)) + tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal'); + + // Select class in select box + var selectElm = document.getElementById(editor_id + "_styleSelect"); + + if (selectElm) { + TinyMCE_AdvancedTheme._setupCSSClasses(editor_id); + + classNode = node; + breakOut = false; + var index = 0; + + do { + if (classNode && classNode.className) { + for (var i=0; i"); + else + selectByValue(selectElm, ""); + } + + // Select fontselect + var selectElm = document.getElementById(editor_id + "_fontNameSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !(tinyMCE.isMSIE && !tinyMCE.isOpera)) { + var face = inst.queryCommandValue('FontName'); + + face = face == null || face == "" ? "" : face; + + selectByValue(selectElm, face, face != ""); + } else { + var elm = tinyMCE.getParentElement(node, "font", "face"); + + if (elm) { + var family = tinyMCE.getAttrib(elm, "face"); + + if (family == '') + family = '' + elm.style.fontFamily; + + if (!selectByValue(selectElm, family, family != "")) + selectByValue(selectElm, ""); + } else + selectByValue(selectElm, ""); + } + } + + // Select fontsize + var selectElm = document.getElementById(editor_id + "_fontSizeSelect"); + if (selectElm) { + if (!tinyMCE.isSafari && !tinyMCE.isOpera) { + var size = inst.queryCommandValue('FontSize'); + selectByValue(selectElm, size == null || size == "" ? "0" : size); + } else { + var elm = tinyMCE.getParentElement(node, "font", "size"); + if (elm) { + var size = tinyMCE.getAttrib(elm, "size"); + + if (size == '') { + var sizes = new Array('', '8px', '10px', '12px', '14px', '18px', '24px', '36px'); + + size = '' + elm.style.fontSize; + + for (var i=0; i 0) + selectElm.setAttribute('cssImported', 'true'); + } + }, + + _setCookie : function(name, value, expires, path, domain, secure) { + var curCookie = name + "=" + escape(value) + + ((expires) ? "; expires=" + expires.toGMTString() : "") + + ((path) ? "; path=" + escape(path) : "") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); + + document.cookie = curCookie; + }, + + _getCookie : function(name) { + var dc = document.cookie; + var prefix = name + "="; + var begin = dc.indexOf("; " + prefix); + + if (begin == -1) { + begin = dc.indexOf(prefix); + + if (begin != 0) + return null; + } else + begin += 2; + + var end = document.cookie.indexOf(";", begin); + + if (end == -1) + end = dc.length; + + return unescape(dc.substring(begin + prefix.length, end)); + }, + + _resizeTo : function(inst, w, h, set_w) { + var editorContainer = document.getElementById(inst.editorId + '_parent'); + var tableElm = editorContainer.firstChild; + var iframe = inst.iframeElement; + + if (w == null || w == "null") { + set_w = false; + w = 0; + } + + if (h == null || h == "null") + return; + + w = parseInt(w); + h = parseInt(h); + + if (tinyMCE.isGecko) { + w += 2; + h += 2; + } + + var dx = w - tableElm.clientWidth; + var dy = h - tableElm.clientHeight; + + w = w < 1 ? 30 : w; + h = h < 1 ? 30 : h; + + if (set_w) + tableElm.style.width = w + "px"; + + tableElm.style.height = h + "px"; + + iw = iframe.clientWidth + dx; + ih = iframe.clientHeight + dy; + + iw = iw < 1 ? 30 : iw; + ih = ih < 1 ? 30 : ih; + + if (tinyMCE.isGecko) { + iw -= 2; + ih -= 2; + } + + if (set_w) + iframe.style.width = iw + "px"; + + iframe.style.height = ih + "px"; + + // Is it to small, make it bigger again + if (set_w) { + var tableBodyElm = tableElm.firstChild; + var minIframeWidth = tableBodyElm.scrollWidth; + if (inst.iframeElement.clientWidth < minIframeWidth) { + dx = minIframeWidth - inst.iframeElement.clientWidth; + + inst.iframeElement.style.width = (iw + dx) + "px"; + } + } + + // Remove pesky table controls + inst.useCSS = false; + }, + + /** + * Handles resizing events. + */ + _resizeEventHandler : function(e) { + var resizer = TinyMCE_AdvancedTheme._resizer; + + // Do nothing + if (!resizer.resizing) + return; + + e = typeof(e) == "undefined" ? window.event : e; + + var dx = e.screenX - resizer.downX; + var dy = e.screenY - resizer.downY; + var resizeBox = resizer.resizeBox; + var editorId = resizer.editorId; + + switch (e.type) { + case "mousemove": + var w, h; + + w = resizer.width + dx; + h = resizer.height + dy; + + w = w < 1 ? 1 : w; + h = h < 1 ? 1 : h; + + if (resizer.horizontal) + resizeBox.style.width = w + "px"; + + resizeBox.style.height = h + "px"; + break; + + case "mouseup": + TinyMCE_AdvancedTheme._setResizing(e, editorId, false); + TinyMCE_AdvancedTheme._resizeTo(tinyMCE.getInstanceById(editorId), resizer.width + dx, resizer.height + dy, resizer.horizontal); + + // Expire in a month + if (tinyMCE.getParam("theme_advanced_resizing_use_cookie", true)) { + var expires = new Date(); + expires.setTime(expires.getTime() + 3600000 * 24 * 30); + + // Set the cookies + TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_width", "" + (resizer.horizontal ? resizer.width + dx : ""), expires); + TinyMCE_AdvancedTheme._setCookie("TinyMCE_" + editorId + "_height", "" + (resizer.height + dy), expires); + } + break; + } + }, + + /** + * Starts/stops the editor resizing. + */ + _setResizing : function(e, editor_id, state) { + e = typeof(e) == "undefined" ? window.event : e; + + var resizer = TinyMCE_AdvancedTheme._resizer; + var editorContainer = document.getElementById(editor_id + '_parent'); + var editorArea = document.getElementById(editor_id + '_parent').firstChild; + var resizeBox = document.getElementById(editor_id + '_resize_box'); + var inst = tinyMCE.getInstanceById(editor_id); + + if (state) { + // Place box over editor area + var width = editorArea.clientWidth; + var height = editorArea.clientHeight; + + resizeBox.style.width = width + "px"; + resizeBox.style.height = height + "px"; + + resizer.iframeWidth = inst.iframeElement.clientWidth; + resizer.iframeHeight = inst.iframeElement.clientHeight; + + // Hide editor and show resize box + editorArea.style.display = "none"; + resizeBox.style.display = "block"; + + // Add event handlers, only once + if (!resizer.eventHandlers) { + if (tinyMCE.isMSIE) + tinyMCE.addEvent(document, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); + else + tinyMCE.addEvent(window, "mousemove", TinyMCE_AdvancedTheme._resizeEventHandler); + + tinyMCE.addEvent(document, "mouseup", TinyMCE_AdvancedTheme._resizeEventHandler); + + resizer.eventHandlers = true; + } + + resizer.resizing = true; + resizer.downX = e.screenX; + resizer.downY = e.screenY; + resizer.width = parseInt(resizeBox.style.width); + resizer.height = parseInt(resizeBox.style.height); + resizer.editorId = editor_id; + resizer.resizeBox = resizeBox; + resizer.horizontal = tinyMCE.getParam("theme_advanced_resize_horizontal", true); + } else { + resizer.resizing = false; + resizeBox.style.display = "none"; + editorArea.style.display = tinyMCE.isMSIE && !tinyMCE.isOpera ? "block" : "table"; + tinyMCE.execCommand('mceResetDesignMode'); + } + }, + + _getColorHTML : function(id, n, cm) { + var i, h, cl; + + h = ''; + cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(','); + + h += ''; + for (i=0; i'; + + if ((i+1) % 8 == 0) + h += ''; + } + + h += '
'; + + if (tinyMCE.getParam("theme_advanced_more_colors", true)) + h += '' + tinyMCE.getLang('lang_more_colors') + ''; + + return h; + }, + + _pickColor : function(id, cm) { + var inputColor, inst = tinyMCE.selectedInstance; + + if (cm == 'forecolor' && inst) + inputColor = inst.foreColor; + + if ((cm == 'backcolor' || cm == 'HiliteColor') && inst) + inputColor = inst.backColor; + + tinyMCE.execCommand('mceColorPicker', true, {color : inputColor, callback : function(c) { + tinyMCE.execInstanceCommand(id, cm, false, c); + }}); + }, + + _insertImage : function(src, alt, border, hspace, vspace, width, height, align, title, onmouseover, onmouseout) { + tinyMCE.execCommand('mceBeginUndoLevel'); + + if (src == "") + return; + + if (!tinyMCE.imgElement && tinyMCE.isSafari) { + var html = ""; + + html += '' + alt + ''; + + tinyMCE.execCommand("mceInsertContent", false, html); + } else { + if (!tinyMCE.imgElement && tinyMCE.selectedInstance) { + if (tinyMCE.isSafari) + tinyMCE.execCommand("mceInsertContent", false, ''); + else + tinyMCE.selectedInstance.contentDocument.execCommand("insertimage", false, tinyMCE.uniqueURL); + + tinyMCE.imgElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "img", "src", tinyMCE.uniqueURL); + } + } + + if (tinyMCE.imgElement) { + var needsRepaint = false; + var msrc = src; + + src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, tinyMCE.imgElement);"); + + if (tinyMCE.getParam('convert_urls')) + msrc = src; + + if (onmouseover && onmouseover != "") + onmouseover = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseover, tinyMCE.imgElement);") + "';"; + + if (onmouseout && onmouseout != "") + onmouseout = "this.src='" + eval(tinyMCE.settings['urlconverter_callback'] + "(onmouseout, tinyMCE.imgElement);") + "';"; + + // Use alt as title if it's undefined + if (typeof(title) == "undefined") + title = alt; + + if (width != tinyMCE.imgElement.getAttribute("width") || height != tinyMCE.imgElement.getAttribute("height") || align != tinyMCE.imgElement.getAttribute("align")) + needsRepaint = true; + + tinyMCE.setAttrib(tinyMCE.imgElement, 'src', src); + tinyMCE.setAttrib(tinyMCE.imgElement, 'mce_src', msrc); + tinyMCE.setAttrib(tinyMCE.imgElement, 'alt', alt); + tinyMCE.setAttrib(tinyMCE.imgElement, 'title', title); + tinyMCE.setAttrib(tinyMCE.imgElement, 'align', align); + tinyMCE.setAttrib(tinyMCE.imgElement, 'border', border, true); + tinyMCE.setAttrib(tinyMCE.imgElement, 'hspace', hspace, true); + tinyMCE.setAttrib(tinyMCE.imgElement, 'vspace', vspace, true); + tinyMCE.setAttrib(tinyMCE.imgElement, 'width', width, true); + tinyMCE.setAttrib(tinyMCE.imgElement, 'height', height, true); + tinyMCE.setAttrib(tinyMCE.imgElement, 'onmouseover', onmouseover); + tinyMCE.setAttrib(tinyMCE.imgElement, 'onmouseout', onmouseout); + + // Fix for bug #989846 - Image resize bug + if (width && width != "") + tinyMCE.imgElement.style.pixelWidth = width; + + if (height && height != "") + tinyMCE.imgElement.style.pixelHeight = height; + + if (needsRepaint) + tinyMCE.selectedInstance.repaint(); + } + + tinyMCE.execCommand('mceEndUndoLevel'); + }, + + _insertLink : function(href, target, title, onclick, style_class) { + tinyMCE.execCommand('mceBeginUndoLevel'); + + if (tinyMCE.selectedInstance && tinyMCE.selectedElement && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") { + var doc = tinyMCE.selectedInstance.getDoc(); + var linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement, "a"); + var newLink = false; + + if (!linkElement) { + linkElement = doc.createElement("a"); + newLink = true; + } + + var mhref = href; + var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href, linkElement);"); + mhref = tinyMCE.getParam('convert_urls') ? href : mhref; + + tinyMCE.setAttrib(linkElement, 'href', thref); + tinyMCE.setAttrib(linkElement, 'mce_href', mhref); + tinyMCE.setAttrib(linkElement, 'target', target); + tinyMCE.setAttrib(linkElement, 'title', title); + tinyMCE.setAttrib(linkElement, 'onclick', onclick); + tinyMCE.setAttrib(linkElement, 'class', style_class); + + if (newLink) { + linkElement.appendChild(tinyMCE.selectedElement.cloneNode(true)); + tinyMCE.selectedElement.parentNode.replaceChild(linkElement, tinyMCE.selectedElement); + } + + return; + } + + if (!tinyMCE.linkElement && tinyMCE.selectedInstance) { + if (tinyMCE.isSafari) { + tinyMCE.execCommand("mceInsertContent", false, '' + tinyMCE.selectedInstance.selection.getSelectedHTML() + ''); + } else + tinyMCE.selectedInstance.contentDocument.execCommand("createlink", false, tinyMCE.uniqueURL); + + tinyMCE.linkElement = tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + var elementArray = tinyMCE.getElementsByAttributeValue(tinyMCE.selectedInstance.contentDocument.body, "a", "href", tinyMCE.uniqueURL); + + for (var i=0; i + + {$lang_insert_image_title} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+ x +
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/images/anchor.gif b/admin/scripts/tiny_mce/themes/advanced/images/anchor.gif new file mode 100644 index 0000000000000000000000000000000000000000..34ab71534b74e1f8eb01a822d2073cde4cd878cb GIT binary patch literal 171 zcmV;c095}+Nk%w1VH5xq0K*0VDLrY1lc!y3io(UtI8lV8tiaOK*PC=h8YL;9lhufQV@{Qv1;Q^ z1CN9aCpLWeabVHPfD1Po9zQKUa3H|IK=i|h0tE$u0|yFDoLI16K|_GA>4F&r|37SK zt%&~c;lqUs7iP|!2{asR39SglpDc_F3@91(378K)^W9w}6@)4Ah7U!&=7r01TP(pNhpv(qI;dOyqUFCP|+_hWY WWzYVd`wr|sba?l+6DOS=8LR=)wsG75 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bold.gif b/admin/scripts/tiny_mce/themes/advanced/images/bold.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6a9cc2cd4117526156fa29c06156ba5971823c4 GIT binary patch literal 76 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*&Mzw-23{>3a?E=Bm(Rqw7V Z4AWqey4jFcx$b3$*C(Ir-+DzDtN~+a79aos literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bold_de_se.gif b/admin/scripts/tiny_mce/themes/advanced/images/bold_de_se.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b129de25e916946792c89f08a7b30b2f9dc8b72 GIT binary patch literal 73 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*UAzw-23e#sdnZdC`i8W!&j Xl@)6cxHjEB<6*$FFxbIg;(p2 i&djr5P5jX#dNVh}IZO5VUiUMXvRj`2I%m$xU=0AHn;dum literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bold_fr.gif b/admin/scripts/tiny_mce/themes/advanced/images/bold_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..2816454515a2b3d031ee1762f9308db99e9d3940 GIT binary patch literal 78 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*yKzw-23e%TquY+VNzx0~n3 bPUX;xQ|oohT$M9BQ$Xt4x8CPfj11NQWJeUX literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bold_ru.gif b/admin/scripts/tiny_mce/themes/advanced/images/bold_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..e000d461c96188c26fe081920ba332593e5b60ca GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNeI`y fv!S2m6KACKPM+Zyy|O9RI8W2_`nTTOtPIuwq8S!> literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bold_tw.gif b/admin/scripts/tiny_mce/themes/advanced/images/bold_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..82085432c622fb9b195d45480ce0c00f80d24027 GIT binary patch literal 207 zcmV;=05JbYNk%w1VH5xq0J9DNySuyH-QDi)?jj;0%*@PHRaKdpnGq2YcXxM0L_~;) zh%+-YW@csp00960{{R30A^8LW000gEEC2ui02BZe000Dh(8)=wy*N7}G;WM{HHkzh zs6t%9fi%d0HcQepm#{3&(I_#A0+$;m0FJ}}WxKp?w}cH!tRNB$k|H1#RxPhVL6BGg z09nkC_M1X4*#RtJD4)}o#(?mXbR9t%Fa-%dPzMPG0V6gC3@He52a9TEFU_>xB^?a&6>B~^ R#bfrS$(b43?=Ue~0{~-MC*lAA literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/bullist.gif b/admin/scripts/tiny_mce/themes/advanced/images/bullist.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e19467c70e337bbfb2a3fe3eff1bc3acab0eaec GIT binary patch literal 108 zcmZ?wbhEHb6k!ly*u>1h#Kfdz)l@%W&!*iMf|{-?85Jc}En;9`Q2fcl$iTqPpaWzB zRf;e$FdJ6vy7SNAl;>@M#YT=zObHxz&I%bBUa^s_ M6r5P1!pL9^0IPo@`~Uy| literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/button_menu.gif b/admin/scripts/tiny_mce/themes/advanced/images/button_menu.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3d8fa23117f9a5630277071a6e07cd04264173f GIT binary patch literal 57 zcmZ?wbhEHbjEB<5wG8q|kKzxu41Cu~c|H{*E`Gsc$hp{fYx2K(n G!5RQ}Dh{In literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/buttons.gif b/admin/scripts/tiny_mce/themes/advanced/images/buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..5ad99a7c4321610124833ba05bdf0df236f5d5a9 GIT binary patch literal 5662 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 QlBM{BrF;@f1^~nV1AeuLF8}}l literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif b/admin/scripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b4aeefcbbba8ed33383d99e3ad38a2b9683044e GIT binary patch literal 677 zcmV;W0$Tk?Nk%w1VOjtc0K@)fLs#+_}=< z+2GjQ)C|ia%M}g|2-*$|4jAv++6)X8?f3NB2<-a^7%Bu**N)yjcm?$#=+|zcKYj)I zIjF!OVTE%a3KYO_;R1$_A3cH`Nit-~lPFRDiUhfmW6G2Q3W(6yv1UzC}*s)i?z8nAt58I(vAO9Tu2JqX_n^*5Vy?OEB-=jZ2zyA2} z=ksr%;9UfV@9G68;D7`cXyAbe9{8UkfB!Y;;DZoGDB*+@R%juG3|^?=h8%WSVGAIJ LDB_4Bh5!IN$Y@?j literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/charmap.gif b/admin/scripts/tiny_mce/themes/advanced/images/charmap.gif new file mode 100644 index 0000000000000000000000000000000000000000..3cdc4ac9134258a9a1a83b6afd5c7055bebbcbf9 GIT binary patch literal 245 zcmVJ7UM8qsvB8x<;Dr zSg7=Nn%Hi7)&KwiA^8LW0018VEC2ui02BZe000GY;3tk`X`X1RuI#x~)x&X5LaDKL zBuP+gmjjC8P!LL;h9PruTqdW2VQ_jhm?kOJM8RlI0sywOkQfrBgdlP}Q6Q310n$b# v>y*a!grF>@BLxiv8314c77P(14Hy;xh9(V(3=AWV77>droSmMZC?Nnljc8>f literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/cleanup.gif b/admin/scripts/tiny_mce/themes/advanced/images/cleanup.gif new file mode 100644 index 0000000000000000000000000000000000000000..16491f6cfcf3e1123f08352c895f8010f791c469 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VH5xq0MrlwMm#2xdP3^ge4>(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/close.gif b/admin/scripts/tiny_mce/themes/advanced/images/close.gif new file mode 100644 index 0000000000000000000000000000000000000000..679ca2aa47644793fc7096142233af6d18cfc9ac GIT binary patch literal 102 zcmZ?wbhEHb6ky1B=+vSZwA88iSX|!)1|*>PlZBCifrUW_BnDE;z-;WX>&`!e zQ=Y5$?qJ;7tnMTs#JpKBeE~;8w4TG9b-KTcEEZl{H}m}(h0KD}68$HZ6lMA_FjxZs D>4hO7 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/color.gif b/admin/scripts/tiny_mce/themes/advanced/images/color.gif new file mode 100644 index 0000000000000000000000000000000000000000..1ecd5743b64464068d80fe0c306375bc0f36a3f9 GIT binary patch literal 125 zcmZ?wbhEHb6k!lxSi}GV|NsBLa^b|RS+g7*9Dr=F7=z+Z7DfgJRt6mq7o?Vf*~wzp z9Utctp08V)UYxZ)DHzz35?MDRW1X_prZuwmzXRH=pKYwZWOr?gDO&r}E WQznT77&6ApIg)ei@KZGg25SKIc`;M~ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/colors.jpg b/admin/scripts/tiny_mce/themes/advanced/images/colors.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4c542d107b25f68a9d4f9d7a109d0565d1f1437 GIT binary patch literal 3189 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 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/copy.gif b/admin/scripts/tiny_mce/themes/advanced/images/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc146865c5952aa48b82fc54677db621322465b9 GIT binary patch literal 263 zcmV+i0r>t$Nk%w1VH5xq0MrKnGD>2SrMb<|)0(p4GF`Q=%=coD-uwLia-!n0ztXb8 z>SB7D(cbRC&Eb``_99D}N_N7cveI&z@*+Zl!qxWT>hhwp!g8A0g0kXLg3_YG@}jE3 za+1=5r|rPV)BpegA^8LW0018VEC2ui02BZe000Gq;3tk`X`X1Rt}Ll2NgN5Sa@>ct z&})Jp0ne^?pcEK^!b{_DFiw_VrSR(z8m7&Gi9u+7k^;d~3fw9c#^BIo7zl(%`OrmN z*0>5KA}5&{3=It(2OS6o85w+K0F8|tI1CgD7JVrO2Z)Io8#2N9wc8v&jt5O5Ex Ns}n7+u(2f}06RB$bN>JU literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/custom_1.gif b/admin/scripts/tiny_mce/themes/advanced/images/custom_1.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cbccdadf60dfccaf532fd56a567c47b131f80a8 GIT binary patch literal 76 zcmZ?wbhEHb6k!lySjfQ8(7@2Zz`(%B2qYALvH&S21|1+9C@TVF%TDQEdHOB?;yGKQ b7!RD8^=Ve+T!9>q%7xRawyuk2V6X-NXyp|c literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/cut.gif b/admin/scripts/tiny_mce/themes/advanced/images/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e9a70b6e297cfa0744d581c42868b35b0a7a204 GIT binary patch literal 187 zcmV;s07U;sNk%w1VH5xq0K*3W0z;>dm7`y6hp@H0TzRe{O`Us&m(k6|m7uZ$S-vl0 zv81W9YJ#%8z`z1cvH$=8A^8LW000jFEC2ui02BZe000DN@X1N5y*RH`2hYzS9F#DC z&mja;FrrU@G*7b_@UslKvE>g#z<@B2axx(c_%I2W2u49rARu4_N5ZktItZW!fI&z+ p0E8?Jvj7|jibsJV{#*tC#rVODXii?U706WgML@)pV literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/forecolor.gif b/admin/scripts/tiny_mce/themes/advanced/images/forecolor.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b703616081fa7e20cb176d77a750ef15006d390 GIT binary patch literal 342 zcmZ?wbhEHb6k!lyxXJ(m|NsAYh*&Ub?(TUjPtI9(XvV^wi`N`ox9#kjEvEvKCobQ3 zYW=89Y{dsA6nN-J^`B6g*bt~B zFW$NN#Eux9U?sNXl?9uexSfIv8!TrB90~4BF=tVXHjL#k;p<)QXlbD+EzHc!$}3yq z$sxz#A|N8`$t}$*?=0CbE5hl{!7425%qh&aWVVaKij}KYD=c5Le#N>CYc_3Om9Qhy Hk--`Oc8y|F literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/help.gif b/admin/scripts/tiny_mce/themes/advanced/images/help.gif new file mode 100644 index 0000000000000000000000000000000000000000..51a1ee42073402ce787b60d151219ef7ce367615 GIT binary patch literal 295 zcmV+?0oeXWNk%w1VH5xq0Mrfu6i>3FyW3udp6K!Ub&;kbTH+f8tqUysbN$lQ^w;v!hW z!pq(wXY{hj_W%F@A^8LW0018VEC2ui02BZe000G~;3tk`X`X1Ru1KI+h83(|W>rq^ zR7RF&f!#zRnN$X{6T;$HBo?`WVllvQOo2)zp>TL49!J8HVVDe#NumhpbS0R9z=Ux~ zAoz}Cx7j!jCJ$n5dR`j5{)+~RJ$w}+Xh M?UBc{1V#pH0B+0Sa+3=zxSlW-zei2b}a=z4u4c+1=|M6#AZUG%OY1V6F^WxI(BULHv>RQKq-j zt7NjCDogO`gJ_lySi|J(sDATCUOUsGgu4xU7+ORVU(d1bXgSWKeMyMJ iI-K#xts6OY)eP+JZLJ;d&BZ;{lKm4VP7)Gium%8};6e`o literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/indent.gif b/admin/scripts/tiny_mce/themes/advanced/images/indent.gif new file mode 100644 index 0000000000000000000000000000000000000000..acd315bb16c47c2f1679bdf440b511497f9d633b GIT binary patch literal 112 zcmV-$0FVDiNk%w1VH5xq0I~!C0s;a%TAPZd(ouxs%G2Opda$m#$^ZZWA^8LW000L7 zEC2ui02BZe0009uc)HyFFv__Ay%A`;yT;Qn5S6zzgeZ{axrjp`gM=IyhY1x0spz0f SC)ctBGpEmS`C~dK2>?4to+ugs literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/insert_button_bg.gif b/admin/scripts/tiny_mce/themes/advanced/images/insert_button_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..69c131ce2992df593b0f4299bca3b823819bfafa GIT binary patch literal 703 zcmV;w0zmyoNk%w1VOjtc0K@s=_xSkz{{8#>`}z9$_xShz{{8*^{QUg;`}_L%`1kks_WJqx{r&y?{QUd-`}+F& z`T6KpoHUDH@N+q;kn@I-kkc5K66DuS_Z6KrDKY7RyI09*;fWvU%-gtB;niQErU0 zm*isj!{r@5Xn}%*gn@BrfQ5mHij9PfUyfe}2OBRWtq`cJq8+WUnh>9$sjjjey0H)tuAaQc9f1|Fwgs1#2OS*J)Y8+b*w@wD)!H1| z*x};Wufcfgl`*#qaLw)i7 z zoH>KW+zFGYhMgLD9zY-h0fGes24t9!p{j-j6DCB>;GpUR4OAyM=(>QbRjLa#3_uGO z>HrN@Gf0g)AZ^&Gar5dmTXybOr%e$Eh>L-6)xsGhB#tWqL*v4b9V>pE7=z`>iZc|> ztl2VQ$DKVp7OfcZVa0#}IK>dbvVaB+6ueeo*>VKfu`$SQfI)y|-o6|7?%lifYXPr$ z!>-Mob%f^%8bpZhntE^Fvsq(UkUGIr1<%7n7f-%?_yFe9t6xtZ{rU9?5{QT&pnm=7 z5zyOrUtfX!=lcb?pMU?kmmhlI6)505fd}4aAAtcXfPj1e&?n%97-p#9h8%WyVSMw& lC*p`CmT2OMD5j|5iYbQ3;)^iGD5Huk)M(?4INlfn06R=DYYYGY literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/italic.gif b/admin/scripts/tiny_mce/themes/advanced/images/italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bb330bd0bbf61fdb5ce86388ecbeae16465bc17 GIT binary patch literal 79 zcmZ?wbhEHb6k!lySjfl#1T8Hs)z#IEjEssuS%3n}3_2iDkURsE!kqq_+b+wcJF`jEB<5wG8q|kK!gZ`FaraVVo(3d({K5uXIu`5a6TsH a;#+zDYvZ#Uy^qv#6FHB6^105+U=0A})fi&{ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/italic_ru.gif b/admin/scripts/tiny_mce/themes/advanced/images/italic_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2bb69a725e823b8e671f0640098c4fa80939b2f GIT binary patch literal 78 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgh1^shYqmVdFy0;Z@$ hzTc5`u943p7fMVz+n$-ed(#4|tKWK`2QxBQ0|3J`7vul{ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/italic_tw.gif b/admin/scripts/tiny_mce/themes/advanced/images/italic_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f6eeaa2b2111e9995584a66644dacd01ebf33e4 GIT binary patch literal 274 zcmZ?wbhEHb6k!lyI3mCxFE7u}&!3;4KY#xG^XJd|`}?n7zdk-bUSD7T{rmU(_wT=d z|9*dee|>$uy}dmH1H=FS|A8d&K=CIFBLjl~gAPaw$W8{sAA<=#Bx}ZV~!Miqw UgwLW=vT`Q(s%`JMrCAxQ0qpY;qW}N^ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/justifyright.gif b/admin/scripts/tiny_mce/themes/advanced/images/justifyright.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4cea971489cf2526bd45b5044e6d3435741f830 GIT binary patch literal 70 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz$Dw#zw-23e&HEgu66Wp{rQ%^ UM8cwz_vB2umD}FE7Gtmm0QJ%n+yDRo literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/link.gif b/admin/scripts/tiny_mce/themes/advanced/images/link.gif new file mode 100644 index 0000000000000000000000000000000000000000..1accf426260eabe2f3113bab599ee26991407576 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K)|U7cWe7jH1WO&q7mgq_fHP{QhovkA|48(BJg3yUmlM zwNqn#%+lYo$Ksc#!~g&QA^8LW000jFEC2ui02BZe000DB@X1N5y*TU5yZ;lDIEo`Y zBB>;nh!jN=5Xl<{ELAJRLi`OvPeCwL9EE`(0V^O727v-Gs1O*6fC9h;473EtqJph4 d4hzK!aZXzV=z)RofG^|jEB<5wG8q|kKzxu40~1#dfBJzLcf(v(F)&yI02q@C APXGV_ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/newdocument.gif b/admin/scripts/tiny_mce/themes/advanced/images/newdocument.gif new file mode 100644 index 0000000000000000000000000000000000000000..a9d293842354bade04fc9607e55763fd0ea9efec GIT binary patch literal 170 zcmV;b09F4-Nk%w1VH5xq0K*0VGD>2SqO#J~;-aN z((?HJ(%tf+t-`|0-T(jqA^8LW000jFEC2ui02BZe000D6@X1N5y*TTfdRNNeY>8o> z4KQZPc^-wzx@G{}*+AEJzAuCxrm-U+gcqV~fj9y(hozB$v;>w-LA7!<0TB$xmeMs$ Y1>z^>8fd%Q>Wl40uW#=7ygmW|J7pwMu>b%7 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/numlist.gif b/admin/scripts/tiny_mce/themes/advanced/images/numlist.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2683522f4fbca7c59cdce63c7ac20211e006f49 GIT binary patch literal 111 zcmV-#0FeJjNk%w1VH5xq0I~%D0s;a&S(>c5(MoQ;hMLOK*yvJx*8l(jA^8LW000L7 zEC2ui02BZe0009tc)HyFFv>|=F}0bofd8LU3_`XHL13_jZKS5jZLdL qklCGA#V($?Eohv$~E=l}o!A^8LW000L7 zEC2ui02BZe0009sc)HyFFv__Ay%A`;yT+FxC|=hX#Xykdw-jk0V}u~DM=9B?30|g_ Q>jw#1h)7a$IY|HjJN(2Zp#T5? literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/paste.gif b/admin/scripts/tiny_mce/themes/advanced/images/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..1b45000a0140b8f9e04c933154c915f4322d7533 GIT binary patch literal 286 zcmV+(0pb2fNk%w1VH5xq0Mr}+LNg;3tk`X`X1Rt{>*It?NM0VL6(E zVp#@75XZ#A7$__!UdC~NbOwn>K!P;!f|hLd!H_&o5ubBI-bl_Ku=A;)xD5t@Ks^{# z+MN7ifk2od9Tj&Q6dVnQ7YGCeB^rSW3L6F-dlv)<1qEp%4jqtY1`CG`6a;PnBn}E^ kX95eB1O$f^sHqkY9smLtZoQ`}2mr#v!!X9j$Rr^EJMbBDr~m)} literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/redo.gif b/admin/scripts/tiny_mce/themes/advanced/images/redo.gif new file mode 100644 index 0000000000000000000000000000000000000000..3af90697f0b74d0b6b07b585614a6dc67ff87f1d GIT binary patch literal 169 zcmV;a09OA;Nk%w1VH5xq0K*FaEl-kjqwqa)*O$8QUUsNeit)O{)H!9gj;!cSf8=SD z@4U+CH(H=qeZQ%{>Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/removeformat.gif b/admin/scripts/tiny_mce/themes/advanced/images/removeformat.gif new file mode 100644 index 0000000000000000000000000000000000000000..0fa3cb79734b6ddadaded7a30dbbab4cdf7ee11a GIT binary patch literal 168 zcmV;Z09XG3d^!9RvqL!@E;^*>mjX*~6o0ZXGB7YP=m6P3N(4x7O<|q5`t188u7e^B F)&TE55J&(3 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/spacer.gif b/admin/scripts/tiny_mce/themes/advanced/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/statusbar_resize.gif b/admin/scripts/tiny_mce/themes/advanced/images/statusbar_resize.gif new file mode 100644 index 0000000000000000000000000000000000000000..af89d803f8f0eeb965d9443473d5be009641cacf GIT binary patch literal 79 zcmZ?wbhEHbX*~6o0ZXGB7YP=m6OaAbAERg(>|jPrv0~%%#ha d_MXKm)lqT2YSDtso)?w9Z@gz^T^C`n1_07v8bkm9 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/strikethrough.gif b/admin/scripts/tiny_mce/themes/advanced/images/strikethrough.gif new file mode 100644 index 0000000000000000000000000000000000000000..3264635918e2237257811a745f3a7e31b4369432 GIT binary patch literal 83 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*jFzw-23{>5`RB^ury^=8j) h^eUTr??>*V8C&%_D;C}?e9svC>)iK$`!yICtN}048)X0h literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/sub.gif b/admin/scripts/tiny_mce/themes/advanced/images/sub.gif new file mode 100644 index 0000000000000000000000000000000000000000..4d7ce30ff9147412d24dafd5ebeef67479edfa58 GIT binary patch literal 148 zcmV;F0Biq8Nk%w1VH5xq0K*9Y0|NsxQi79`kcOJVNJU7aqM%ZC%4un5GBq-gVG=Kt8X#(^7ugLSm;_S64DJ zGIDZqhMK}68X{71!TeAXEkg0%mX10Jt7ez-i0vdcUU#06Sc5 BF?Rp} literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/underline.gif b/admin/scripts/tiny_mce/themes/advanced/images/underline.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfeb5f6d06e21a25615a9eb0cbd2a74ab0efa42 GIT binary patch literal 88 zcmZ?wbhEHb6k!lySjfl#1l85mjEo?b;!hSJ#l)Zk5(UXKFlkQdUwQg1zxWJ?3%{OS koDe;yao*!zU(QKMRZNWnGjv6-o@%}Q>)iK!0SpY*0G3P}*Z=?k literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/underline_es.gif b/admin/scripts/tiny_mce/themes/advanced/images/underline_es.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/underline_fr.gif b/admin/scripts/tiny_mce/themes/advanced/images/underline_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/underline_ru.gif b/admin/scripts/tiny_mce/themes/advanced/images/underline_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..b78e2a498fb9406ef378d7c543756db552d87cba GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNK2Ny ft@O9qnGc`Wq;$3l?I>E+zBOCw^tWDnRt9STq^=gR literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/underline_tw.gif b/admin/scripts/tiny_mce/themes/advanced/images/underline_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..b715390484c95c3d3311012dd541e2b46a2f4a78 GIT binary patch literal 245 zcmZ?wbhEHb6k!lyI3mihYSpUH(9n19-U$i{mY0{GIdf*_%$df<#%XD3=g*&4Qc`;V z{=J%-nvai9ety1-i;KOzeMd*f{{8!R@7~S8!0`Y7e;|nmDE?$&WMB|w&;h9d*~!3K zl%U#|k~uHKi*I6=T}Ytl*F$OTQv9tdV6_n`zCQJ Ua|%tL!OK2l4tMK(4MhfP08!6P_5c6? literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/undo.gif b/admin/scripts/tiny_mce/themes/advanced/images/undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk2euEN*a>RflBvc=VMi?aIs{*Scsi=V=*#PZ+j z{;astf|jzv(Biz+@&Et;A^8LW000jFEC2ui02BZe000Dg@X1N5y*TU5Y5N}`E=ypZ zo?#$r>naM6uI>xVQ-d%k;xmkbaDbB#Q~{NMWoQ&&iQ?mEND2guCgGWgQWh%TE;t;R zrC?g~sYnb2jsrT}bhh1bIVEWT3JYd|XL~9PPy-4A2LldqQhZ!)ii>%V0GF7VnjM^- Io)i%PJHdZeUH||9 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif b/admin/scripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..897a01f2baea1ae5f61f642f508c27f356b35260 GIT binary patch literal 694 zcmV;n0!jTxNk%w1VUPh50K@Fo9O z^8Eb#`uh6u@89F;?DO;Q@$v2O@aq2l{`U6r`uh3s@ay>a_VV)W^z`ua^X~Tc^Y!)d z@$u}Dr?mh7{{R30A^8LV00000EC2ui0FVI^000I5U_%&PX`X1Ru59bRa4gSsZQppV z?|kpu1Vq9^EE3jl(HgoTEOh>41ejE#aB*8r|OC z;Njxq>Ry;kxw7TUm@{kM z%(=7Y&!9t#9!C>oFt6t5TbcX>0AjqCgySDAyxO3~?&AYen-@t=y!-i+yC*K5ef#nAwj*aBzkGe++J%)n_rHGi z_~ZNgpFh5P|L(<$r}sa8c>VI(gJ+NLe*5z2!~0iHAKiNQ_Sx$f58u3gI&t|H25dm_ zCkt3u2SkGGWMEZW;Gomm$lxyIF~cPBOsnm+7=M9lPo_41opD-0LNQ51q(`+gvyFkl F8UVy~RVDxc literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif b/admin/scripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..9dc8abe1a4f20643367ea9548fa2d93be7f0fb0b GIT binary patch literal 428 zcmV;d0aN}*Nk%w1VJrbC0J8u9k(-?1#*X>8IO~@#-Jw(NpE2?8-}$*X|HwS%i!A@g zJpcdy{QUj^0000000000A^8LV00000EC2ui04xD0000F4(1ekyy*TU5yZ>M)j$~<` zXsV(?aUgIk&vb3yc&_h!@BhG{a7Zi;2?B+3$!t2G(5Q4uty-_xtai)odcR%(V@xia z&uH^v&2GEj@VIuMl4*~XmY0~BntqX! zo@AS$qNAjxdYzx1rmL*2u8ydwlCQM2wzqGwvV^$3zQ3WmyOhAi#>ard!)M6N&d+hm z%Vp5j*2mJ*W7pi>w%OX=;^U>@)8y#sm*(2-?(gvN^7Hid)9m*7`uqI-{{IZ{0USuM zpuvOl1R`9>u%W|(3Li?GNU@@fG5cC(oZi'; + html += '' + tinyMCE.getLang('lang_author') + ''; + html += '' + tinyMCE.getLang('lang_version') + ''; + html += ''; + html += ''; + html += ''; + + for (var i=0; i' + info.longname + ''; + else + html += '' + info.longname + ''; + + if (info.authorurl != null && info.authorurl != '') + html += '' + info.author + ''; + else + html += '' + info.author + ''; + + html += '' + info.version + ''; + html += ''; + } + + html += ''; + html += ''; + + tcont.innerHTML = html; +} + +function getPluginInfo(name) { + if (tinyMCE.plugins[name].getInfo) + return tinyMCE.plugins[name].getInfo(); + + return { + longname : name, + authorurl : '', + infourl : '', + author : '--', + version : '--' + }; +} + +function insertHelpIFrame() { + var html = ''; + + document.getElementById('iframecontainer').innerHTML = html; + + html = ''; + html += 'Got Moxie? '; + html += 'Hosted By Sourceforge '; + html += 'Also on freshmeat '; + + document.getElementById('buttoncontainer').innerHTML = html; +} diff --git a/admin/scripts/tiny_mce/themes/advanced/jscripts/anchor.js b/admin/scripts/tiny_mce/themes/advanced/jscripts/anchor.js new file mode 100644 index 0000000..e7c1c62 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/jscripts/anchor.js @@ -0,0 +1,74 @@ +var action, element; + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var anchor = tinyMCE.getParentElement(inst.getFocusElement(), "a", "name"); + var img = inst.getFocusElement(); + action = 'insert'; + + if (anchor != null) { + element = anchor; + action = "update"; + } + + if (tinyMCE.getAttrib(img, "class") == "mceItemAnchor") { + element = img; + action = "update"; + } + + if (action == "update") + document.forms[0].anchorName.value = element.nodeName == "IMG" ? element.getAttribute("title") : element.getAttribute("name"); + + document.forms[0].insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true); +} + +function insertAnchor() { + var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')); + var name = document.forms[0].anchorName.value, e; + + tinyMCEPopup.execCommand("mceBeginUndoLevel"); + + if (action == "update") { + if (element.nodeName == "IMG") + element.setAttribute("title", name); + else + element.setAttribute("name", name); + } else { + var rng = inst.getRng(); + + if (rng.collapse) + rng.collapse(false); + + name = name.replace(/&/g, '&'); + name = name.replace(/\"/g, '"'); + name = name.replace(//g, '>'); + + // Fix for bug #1447335 + if (tinyMCE.isGecko) + html = ''; + else + html = ''; + + tinyMCEPopup.execCommand("mceInsertContent", false, html); + + // Fix for bug #1447335 force cursor after the anchor element + if (tinyMCE.isGecko) { + e = inst.getDoc().getElementById('mceNewAnchor'); + + if (e) { + inst.selection.selectNode(e, true, false, false); + e.removeAttribute('id'); + } + } + + tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst); + } + + tinyMCEPopup.execCommand("mceEndUndoLevel"); + + tinyMCE.triggerNodeChange(); + tinyMCEPopup.close(); +} diff --git a/admin/scripts/tiny_mce/themes/advanced/jscripts/charmap.js b/admin/scripts/tiny_mce/themes/advanced/jscripts/charmap.js new file mode 100644 index 0000000..eaa6a94 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/jscripts/charmap.js @@ -0,0 +1,326 @@ +function init() { + tinyMCEPopup.resizeToInnerSize(); +} + +var charmap = new Array(); + +// for mor details please see w3c.org +// now here is the complete list ;) + +charmap = [ + [' ', ' ', true, 'no-break space'], + ['&', '&', true, 'ampersand'], + ['"', '"', true, 'quotation mark'], +// finance + ['¢', '¢', true, 'cent sign'], + ['€', '€', true, 'euro sign'], + ['£', '£', true, 'pound sign'], + ['¥', '¥', true, 'yen sign'], +// signs + ['©', '©', true, 'copyright sign'], + ['®', '®', true, 'registered sign'], + ['™', '™', true, 'trade mark sign'], + ['‰', '‰', true, 'per mille sign'], + ['µ', 'µ', true, 'micro sign'], + ['·', '·', true, 'middle dot'], + ['•', '•', true, 'bullet'], + ['…', '…', true, 'three dot leader'], + ['′', '′', true, 'minutes / feet'], + ['″', '″', true, 'seconds / inches'], + ['§', '§', true, 'section sign'], + ['¶', '¶', true, 'paragraph sign'], + ['ß', 'ß', true, 'sharp s / ess-zed'], +// quotations + ['‹', '‹', true, 'single left-pointing angle quotation mark'], + ['›', '›', true, 'single right-pointing angle quotation mark'], + ['«', '«', true, 'left pointing guillemet'], + ['»', '»', true, 'right pointing guillemet'], + ['‘', '‘', true, 'left single quotation mark'], + ['’', '’', true, 'right single quotation mark'], + ['“', '“', true, 'left double quotation mark'], + ['”', '”', true, 'right double quotation mark'], + ['‚', '‚', true, 'single low-9 quotation mark'], + ['„', '„', true, 'double low-9 quotation mark'], + ['<', '<', true, 'less-than sign'], + ['>', '>', true, 'greater-than sign'], + ['≤', '≤', true, 'less-than or equal to'], + ['≥', '≥', true, 'greater-than or equal to'], + ['–', '–', true, 'en dash'], + ['—', '—', true, 'em dash'], + ['¯', '¯', true, 'macron'], + ['‾', '‾', true, 'overline'], + ['¤', '¤', true, 'currency sign'], + ['¦', '¦', true, 'broken bar'], + ['¨', '¨', true, 'diaeresis'], + ['¡', '¡', true, 'inverted exclamation mark'], + ['¿', '¿', true, 'turned question mark'], + ['ˆ', 'ˆ', true, 'circumflex accent'], + ['˜', '˜', true, 'small tilde'], + ['°', '°', true, 'degree sign'], + ['−', '−', true, 'minus sign'], + ['±', '±', true, 'plus-minus sign'], + ['÷', '÷', true, 'division sign'], + ['⁄', '⁄', true, 'fraction slash'], + ['×', '×', true, 'multiplication sign'], + ['¹', '¹', true, 'superscript one'], + ['²', '²', true, 'superscript two'], + ['³', '³', true, 'superscript three'], + ['¼', '¼', true, 'fraction one quarter'], + ['½', '½', true, 'fraction one half'], + ['¾', '¾', true, 'fraction three quarters'], +// math / logical + ['ƒ', 'ƒ', true, 'function / florin'], + ['∫', '∫', true, 'integral'], + ['∑', '∑', true, 'n-ary sumation'], + ['∞', '∞', true, 'infinity'], + ['√', '√', true, 'square root'], + ['∼', '∼', false,'similar to'], + ['≅', '≅', false,'approximately equal to'], + ['≈', '≈', true, 'almost equal to'], + ['≠', '≠', true, 'not equal to'], + ['≡', '≡', true, 'identical to'], + ['∈', '∈', false,'element of'], + ['∉', '∉', false,'not an element of'], + ['∋', '∋', false,'contains as member'], + ['∏', '∏', true, 'n-ary product'], + ['∧', '∧', false,'logical and'], + ['∨', '∨', false,'logical or'], + ['¬', '¬', true, 'not sign'], + ['∩', '∩', true, 'intersection'], + ['∪', '∪', false,'union'], + ['∂', '∂', true, 'partial differential'], + ['∀', '∀', false,'for all'], + ['∃', '∃', false,'there exists'], + ['∅', '∅', false,'diameter'], + ['∇', '∇', false,'backward difference'], + ['∗', '∗', false,'asterisk operator'], + ['∝', '∝', false,'proportional to'], + ['∠', '∠', false,'angle'], +// undefined + ['´', '´', true, 'acute accent'], + ['¸', '¸', true, 'cedilla'], + ['ª', 'ª', true, 'feminine ordinal indicator'], + ['º', 'º', true, 'masculine ordinal indicator'], + ['†', '†', true, 'dagger'], + ['‡', '‡', true, 'double dagger'], +// alphabetical special chars + ['À', 'À', true, 'A - grave'], + ['Á', 'Á', true, 'A - acute'], + ['Â', 'Â', true, 'A - circumflex'], + ['Ã', 'Ã', true, 'A - tilde'], + ['Ä', 'Ä', true, 'A - diaeresis'], + ['Å', 'Å', true, 'A - ring above'], + ['Æ', 'Æ', true, 'ligature AE'], + ['Ç', 'Ç', true, 'C - cedilla'], + ['È', 'È', true, 'E - grave'], + ['É', 'É', true, 'E - acute'], + ['Ê', 'Ê', true, 'E - circumflex'], + ['Ë', 'Ë', true, 'E - diaeresis'], + ['Ì', 'Ì', true, 'I - grave'], + ['Í', 'Í', true, 'I - acute'], + ['Î', 'Î', true, 'I - circumflex'], + ['Ï', 'Ï', true, 'I - diaeresis'], + ['Ð', 'Ð', true, 'ETH'], + ['Ñ', 'Ñ', true, 'N - tilde'], + ['Ò', 'Ò', true, 'O - grave'], + ['Ó', 'Ó', true, 'O - acute'], + ['Ô', 'Ô', true, 'O - circumflex'], + ['Õ', 'Õ', true, 'O - tilde'], + ['Ö', 'Ö', true, 'O - diaeresis'], + ['Ø', 'Ø', true, 'O - slash'], + ['Œ', 'Œ', true, 'ligature OE'], + ['Š', 'Š', true, 'S - caron'], + ['Ù', 'Ù', true, 'U - grave'], + ['Ú', 'Ú', true, 'U - acute'], + ['Û', 'Û', true, 'U - circumflex'], + ['Ü', 'Ü', true, 'U - diaeresis'], + ['Ý', 'Ý', true, 'Y - acute'], + ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], + ['Þ', 'Þ', true, 'THORN'], + ['à', 'à', true, 'a - grave'], + ['á', 'á', true, 'a - acute'], + ['â', 'â', true, 'a - circumflex'], + ['ã', 'ã', true, 'a - tilde'], + ['ä', 'ä', true, 'a - diaeresis'], + ['å', 'å', true, 'a - ring above'], + ['æ', 'æ', true, 'ligature ae'], + ['ç', 'ç', true, 'c - cedilla'], + ['è', 'è', true, 'e - grave'], + ['é', 'é', true, 'e - acute'], + ['ê', 'ê', true, 'e - circumflex'], + ['ë', 'ë', true, 'e - diaeresis'], + ['ì', 'ì', true, 'i - grave'], + ['í', 'í', true, 'i - acute'], + ['î', 'î', true, 'i - circumflex'], + ['ï', 'ï', true, 'i - diaeresis'], + ['ð', 'ð', true, 'eth'], + ['ñ', 'ñ', true, 'n - tilde'], + ['ò', 'ò', true, 'o - grave'], + ['ó', 'ó', true, 'o - acute'], + ['ô', 'ô', true, 'o - circumflex'], + ['õ', 'õ', true, 'o - tilde'], + ['ö', 'ö', true, 'o - diaeresis'], + ['ø', 'ø', true, 'o slash'], + ['œ', 'œ', true, 'ligature oe'], + ['š', 'š', true, 's - caron'], + ['ù', 'ù', true, 'u - grave'], + ['ú', 'ú', true, 'u - acute'], + ['û', 'û', true, 'u - circumflex'], + ['ü', 'ü', true, 'u - diaeresis'], + ['ý', 'ý', true, 'y - acute'], + ['þ', 'þ', true, 'thorn'], + ['ÿ', 'ÿ', true, 'y - diaeresis'], + ['Α', 'Α', true, 'Alpha'], + ['Β', 'Β', true, 'Beta'], + ['Γ', 'Γ', true, 'Gamma'], + ['Δ', 'Δ', true, 'Delta'], + ['Ε', 'Ε', true, 'Epsilon'], + ['Ζ', 'Ζ', true, 'Zeta'], + ['Η', 'Η', true, 'Eta'], + ['Θ', 'Θ', true, 'Theta'], + ['Ι', 'Ι', true, 'Iota'], + ['Κ', 'Κ', true, 'Kappa'], + ['Λ', 'Λ', true, 'Lambda'], + ['Μ', 'Μ', true, 'Mu'], + ['Ν', 'Ν', true, 'Nu'], + ['Ξ', 'Ξ', true, 'Xi'], + ['Ο', 'Ο', true, 'Omicron'], + ['Π', 'Π', true, 'Pi'], + ['Ρ', 'Ρ', true, 'Rho'], + ['Σ', 'Σ', true, 'Sigma'], + ['Τ', 'Τ', true, 'Tau'], + ['Υ', 'Υ', true, 'Upsilon'], + ['Φ', 'Φ', true, 'Phi'], + ['Χ', 'Χ', true, 'Chi'], + ['Ψ', 'Ψ', true, 'Psi'], + ['Ω', 'Ω', true, 'Omega'], + ['α', 'α', true, 'alpha'], + ['β', 'β', true, 'beta'], + ['γ', 'γ', true, 'gamma'], + ['δ', 'δ', true, 'delta'], + ['ε', 'ε', true, 'epsilon'], + ['ζ', 'ζ', true, 'zeta'], + ['η', 'η', true, 'eta'], + ['θ', 'θ', true, 'theta'], + ['ι', 'ι', true, 'iota'], + ['κ', 'κ', true, 'kappa'], + ['λ', 'λ', true, 'lambda'], + ['μ', 'μ', true, 'mu'], + ['ν', 'ν', true, 'nu'], + ['ξ', 'ξ', true, 'xi'], + ['ο', 'ο', true, 'omicron'], + ['π', 'π', true, 'pi'], + ['ρ', 'ρ', true, 'rho'], + ['ς', 'ς', true, 'final sigma'], + ['σ', 'σ', true, 'sigma'], + ['τ', 'τ', true, 'tau'], + ['υ', 'υ', true, 'upsilon'], + ['φ', 'φ', true, 'phi'], + ['χ', 'χ', true, 'chi'], + ['ψ', 'ψ', true, 'psi'], + ['ω', 'ω', true, 'omega'], +// symbols + ['ℵ', 'ℵ', false,'alef symbol'], + ['ϖ', 'ϖ', false,'pi symbol'], + ['ℜ', 'ℜ', false,'real part symbol'], + ['ϑ','ϑ', false,'theta symbol'], + ['ϒ', 'ϒ', false,'upsilon - hook symbol'], + ['℘', '℘', false,'Weierstrass p'], + ['ℑ', 'ℑ', false,'imaginary part'], +// arrows + ['←', '←', true, 'leftwards arrow'], + ['↑', '↑', true, 'upwards arrow'], + ['→', '→', true, 'rightwards arrow'], + ['↓', '↓', true, 'downwards arrow'], + ['↔', '↔', true, 'left right arrow'], + ['↵', '↵', false,'carriage return'], + ['⇐', '⇐', false,'leftwards double arrow'], + ['⇑', '⇑', false,'upwards double arrow'], + ['⇒', '⇒', false,'rightwards double arrow'], + ['⇓', '⇓', false,'downwards double arrow'], + ['⇔', '⇔', false,'left right double arrow'], + ['∴', '∴', false,'therefore'], + ['⊂', '⊂', false,'subset of'], + ['⊃', '⊃', false,'superset of'], + ['⊄', '⊄', false,'not a subset of'], + ['⊆', '⊆', false,'subset of or equal to'], + ['⊇', '⊇', false,'superset of or equal to'], + ['⊕', '⊕', false,'circled plus'], + ['⊗', '⊗', false,'circled times'], + ['⊥', '⊥', false,'perpendicular'], + ['⋅', '⋅', false,'dot operator'], + ['⌈', '⌈', false,'left ceiling'], + ['⌉', '⌉', false,'right ceiling'], + ['⌊', '⌊', false,'left floor'], + ['⌋', '⌋', false,'right floor'], + ['⟨', '〈', false,'left-pointing angle bracket'], + ['⟩', '〉', false,'right-pointing angle bracket'], + ['◊', '◊', true,'lozenge'], + ['♠', '♠', false,'black spade suit'], + ['♣', '♣', true, 'black club suit'], + ['♥', '♥', true, 'black heart suit'], + ['♦', '♦', true, 'black diamond suit'], + [' ', ' ', false,'en space'], + [' ', ' ', false,'em space'], + [' ', ' ', false,'thin space'], + ['‌', '‌', false,'zero width non-joiner'], + ['‍', '‍', false,'zero width joiner'], + ['‎', '‎', false,'left-to-right mark'], + ['‏', '‏', false,'right-to-left mark'], + ['­', '­', false,'soft hyphen'] +]; + +function renderCharMapHTML() { + var charsPerRow = 20, tdWidth=20, tdHeight=20; + var html = ''; + var cols=-1; + for (var i=0; i' + + charmap[i][1] + + ''; + if ((cols+1) % charsPerRow == 0) + html += ''; + } + } + if (cols % charsPerRow > 0) { + var padd = charsPerRow - (cols % charsPerRow); + for (var i=0; i '; + } + html += '
'; + document.write(html); +} + +function insertChar(chr) { + tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); + + // Refocus in window + if (tinyMCEPopup.isWindow) + window.focus(); + + tinyMCEPopup.close(); +} + +function previewChar(codeA, codeB, codeN) { + var elmA = document.getElementById('codeA'); + var elmB = document.getElementById('codeB'); + var elmV = document.getElementById('codeV'); + var elmN = document.getElementById('codeN'); + + if (codeA=='#160;') { + elmV.innerHTML = '__'; + } else { + elmV.innerHTML = '&' + codeA; + } + + elmB.innerHTML = '&' + codeA; + elmA.innerHTML = '&' + codeB; + elmN.innerHTML = codeN; +} diff --git a/admin/scripts/tiny_mce/themes/advanced/jscripts/color_picker.js b/admin/scripts/tiny_mce/themes/advanced/jscripts/color_picker.js new file mode 100644 index 0000000..358d6d7 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/jscripts/color_picker.js @@ -0,0 +1,249 @@ +var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; + +var colors = new Array( + "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", + "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", + "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", + "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", + "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", + "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", + "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", + "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", + "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", + "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", + "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", + "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", + "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", + "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", + "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", + "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", + "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", + "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", + "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", + "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", + "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", + "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", + "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", + "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", + "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", + "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", + "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" +); + +var named = { + '#F0F8FF':'AliceBlue','#FAEBD7':'AntiqueWhite','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', + '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'BlanchedAlmond','#0000FF':'Blue','#8A2BE2':'BlueViolet','#A52A2A':'Brown', + '#DEB887':'BurlyWood','#5F9EA0':'CadetBlue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'CornflowerBlue', + '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'DarkBlue','#008B8B':'DarkCyan','#B8860B':'DarkGoldenRod', + '#A9A9A9':'DarkGray','#A9A9A9':'DarkGrey','#006400':'DarkGreen','#BDB76B':'DarkKhaki','#8B008B':'DarkMagenta','#556B2F':'DarkOliveGreen', + '#FF8C00':'Darkorange','#9932CC':'DarkOrchid','#8B0000':'DarkRed','#E9967A':'DarkSalmon','#8FBC8F':'DarkSeaGreen','#483D8B':'DarkSlateBlue', + '#2F4F4F':'DarkSlateGray','#2F4F4F':'DarkSlateGrey','#00CED1':'DarkTurquoise','#9400D3':'DarkViolet','#FF1493':'DeepPink','#00BFFF':'DeepSkyBlue', + '#696969':'DimGray','#696969':'DimGrey','#1E90FF':'DodgerBlue','#B22222':'FireBrick','#FFFAF0':'FloralWhite','#228B22':'ForestGreen', + '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'GhostWhite','#FFD700':'Gold','#DAA520':'GoldenRod','#808080':'Gray','#808080':'Grey', + '#008000':'Green','#ADFF2F':'GreenYellow','#F0FFF0':'HoneyDew','#FF69B4':'HotPink','#CD5C5C':'IndianRed','#4B0082':'Indigo','#FFFFF0':'Ivory', + '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'LavenderBlush','#7CFC00':'LawnGreen','#FFFACD':'LemonChiffon','#ADD8E6':'LightBlue', + '#F08080':'LightCoral','#E0FFFF':'LightCyan','#FAFAD2':'LightGoldenRodYellow','#D3D3D3':'LightGray','#D3D3D3':'LightGrey','#90EE90':'LightGreen', + '#FFB6C1':'LightPink','#FFA07A':'LightSalmon','#20B2AA':'LightSeaGreen','#87CEFA':'LightSkyBlue','#778899':'LightSlateGray','#778899':'LightSlateGrey', + '#B0C4DE':'LightSteelBlue','#FFFFE0':'LightYellow','#00FF00':'Lime','#32CD32':'LimeGreen','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', + '#66CDAA':'MediumAquaMarine','#0000CD':'MediumBlue','#BA55D3':'MediumOrchid','#9370D8':'MediumPurple','#3CB371':'MediumSeaGreen','#7B68EE':'MediumSlateBlue', + '#00FA9A':'MediumSpringGreen','#48D1CC':'MediumTurquoise','#C71585':'MediumVioletRed','#191970':'MidnightBlue','#F5FFFA':'MintCream','#FFE4E1':'MistyRose','#FFE4B5':'Moccasin', + '#FFDEAD':'NavajoWhite','#000080':'Navy','#FDF5E6':'OldLace','#808000':'Olive','#6B8E23':'OliveDrab','#FFA500':'Orange','#FF4500':'OrangeRed','#DA70D6':'Orchid', + '#EEE8AA':'PaleGoldenRod','#98FB98':'PaleGreen','#AFEEEE':'PaleTurquoise','#D87093':'PaleVioletRed','#FFEFD5':'PapayaWhip','#FFDAB9':'PeachPuff', + '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'PowderBlue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'RosyBrown','#4169E1':'RoyalBlue', + '#8B4513':'SaddleBrown','#FA8072':'Salmon','#F4A460':'SandyBrown','#2E8B57':'SeaGreen','#FFF5EE':'SeaShell','#A0522D':'Sienna','#C0C0C0':'Silver', + '#87CEEB':'SkyBlue','#6A5ACD':'SlateBlue','#708090':'SlateGray','#708090':'SlateGrey','#FFFAFA':'Snow','#00FF7F':'SpringGreen', + '#4682B4':'SteelBlue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', + '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'WhiteSmoke','#FFFF00':'Yellow','#9ACD32':'YellowGreen' +}; + +function init() { + var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color')); + + if (tinyMCE.isMSIE) + tinyMCEPopup.resizeToInnerSize(); + + generatePicker(); + + if (inputColor) { + changeFinalColor(inputColor); + + col = convertHexToRGB(inputColor); + + if (col) + updateLight(col.r, col.g, col.b); + } +} + +function insertAction() { + var color = document.getElementById("color").value; + + tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color); + tinyMCEPopup.close(); +} + +function showColor(color, name) { + if (name) + document.getElementById("colorname").innerHTML = name; + + document.getElementById("preview").style.backgroundColor = color; + document.getElementById("color").value = color; +} + +function convertRGBToHex(col) { + var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); + + if (!col) + return col; + + var rgb = col.replace(re, "$1,$2,$3").split(','); + if (rgb.length == 3) { + r = parseInt(rgb[0]).toString(16); + g = parseInt(rgb[1]).toString(16); + b = parseInt(rgb[2]).toString(16); + + r = r.length == 1 ? '0' + r : r; + g = g.length == 1 ? '0' + g : g; + b = b.length == 1 ? '0' + b : b; + + return "#" + r + g + b; + } + + return col; +} + +function convertHexToRGB(col) { + if (col.indexOf('#') != -1) { + col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); + + r = parseInt(col.substring(0, 2), 16); + g = parseInt(col.substring(2, 4), 16); + b = parseInt(col.substring(4, 6), 16); + + return {r : r, g : g, b : b}; + } + + return null; +} + +function generatePicker() { + var el = document.getElementById('light'), h = '', i; + + for (i = 0; i < detail; i++){ + h += '
'; + } + + el.innerHTML = h; +} + +function generateWebColors() { + var el = document.getElementById('webcolors'), h = '', i; + + if (el.className == 'generated') + return; + + h += '' + + ''; + + for (i=0; i' + + '' + + '' + colors[i] +  ''; + if ((i+1) % 18 == 0) + h += ''; + } + + h += '
'; + + el.innerHTML = h; + el.className = 'generated'; +} + +function generateNamedColors() { + var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; + + if (el.className == 'generated') + return; + + for (n in named) { + v = named[n]; + h += '' + } + + el.innerHTML = h; + el.className = 'generated'; +} + +function selectColor() { + var color = document.getElementById("color").value; + + if(window.opener) + window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color); + + window.close(); +} + +function dechex(n) { + return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); +} + +function computeColor(e) { + var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB; + + x = e.offsetX ? e.offsetX : (e.target ? e.clientX - e.target.x : 0); + y = e.offsetY ? e.offsetY : (e.target ? e.clientY - e.target.y : 0); + + partWidth = document.getElementById('colorpicker').width / 6; + partDetail = detail / 2; + imHeight = document.getElementById('colorpicker').height; + + r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; + g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); + b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); + + coef = (imHeight - y) / imHeight; + r = 128 + (r - 128) * coef; + g = 128 + (g - 128) * coef; + b = 128 + (b - 128) * coef; + + changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); + updateLight(r, g, b); +} + +function updateLight(r, g, b) { + var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; + + for (i=0; i=0) && (i'); +} + +function insertImage() { + var src = document.forms[0].src.value; + var alt = document.forms[0].alt.value; + var border = document.forms[0].border.value; + var vspace = document.forms[0].vspace.value; + var hspace = document.forms[0].hspace.value; + var width = document.forms[0].width.value; + var height = document.forms[0].height.value; + var align = document.forms[0].align.options[document.forms[0].align.selectedIndex].value; + + tinyMCEPopup.restoreSelection(); + tinyMCE.themes['advanced']._insertImage(src, alt, border, hspace, vspace, width, height, align); + tinyMCEPopup.close(); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + for (var i=0; i'); +} + +function init() { + tinyMCEPopup.resizeToInnerSize(); + + document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','theme_advanced_link'); + + // Handle file browser + if (isVisible('hrefbrowser')) + document.getElementById('href').style.width = '180px'; + + var formObj = document.forms[0]; + + for (var i=0; i 0) { + var formObj = document.forms[0]; + + for (var i=0; i + + {$lang_insert_link_title} + + + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + +
 
+
+
+
+ +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/themes/advanced/source_editor.htm b/admin/scripts/tiny_mce/themes/advanced/source_editor.htm new file mode 100644 index 0000000..a8fb005 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/advanced/source_editor.htm @@ -0,0 +1,32 @@ + + + + {$lang_theme_code_title} + + + + + +
+
{$lang_theme_code_title}
+ +
+ +
+ +
+ + + +
+
+ +
+ +
+ +
+
+
+ + diff --git a/admin/scripts/tiny_mce/themes/simple/css/editor_content.css b/admin/scripts/tiny_mce/themes/simple/css/editor_content.css new file mode 100644 index 0000000..2506c80 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/simple/css/editor_content.css @@ -0,0 +1,25 @@ +body, td, pre { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +body { + background-color: #FFFFFF; +} + +.mceVisualAid { + border: 1px dashed #BBBBBB; +} + +/* MSIE specific */ + +* html body { + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} diff --git a/admin/scripts/tiny_mce/themes/simple/css/editor_popup.css b/admin/scripts/tiny_mce/themes/simple/css/editor_popup.css new file mode 100644 index 0000000..f29b04a --- /dev/null +++ b/admin/scripts/tiny_mce/themes/simple/css/editor_popup.css @@ -0,0 +1,41 @@ +body { + background-color: #F0F0EE; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + scrollbar-3dlight-color: #F0F0EE; + scrollbar-arrow-color: #676662; + scrollbar-base-color: #F0F0EE; + scrollbar-darkshadow-color: #DDDDDD; + scrollbar-face-color: #E0E0DD; + scrollbar-highlight-color: #F0F0EE; + scrollbar-shadow-color: #F0F0EE; + scrollbar-track-color: #F5F5F5; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +input { + background: #FFFFFF; + border: 1px solid #cccccc; +} + +td, input, select, textarea { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; +} + +input, select, textarea { + border: 1px solid #808080; +} + +.input_noborder { + border: 0; +} + +.title { + font-size: 12px; + font-weight: bold; +} \ No newline at end of file diff --git a/admin/scripts/tiny_mce/themes/simple/css/editor_ui.css b/admin/scripts/tiny_mce/themes/simple/css/editor_ui.css new file mode 100644 index 0000000..6f57768 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/simple/css/editor_ui.css @@ -0,0 +1,125 @@ +.mceSeparatorLine { + border: 0; + padding: 0; + margin-left: 4px; + margin-right: 2px; +} + +.mceSelectList { + font-family: "MS Sans Serif"; + font-size: 7pt; + font-weight: normal; + margin-top: 2px; +} + +.mceLabel, .mceLabelDisabled { + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mceLabel { + color: #000000; +} + +.mceLabelDisabled { + cursor: text; + color: #999999; +} + +.mceEditor { + background: #F0F0EE; + border: 1px solid #cccccc; +} + +.mceEditorArea { + font-family: "MS Sans Serif"; + background: #FFFFFF; +} + +.mceToolbar { + background: #F0F0EE; + border-top: 1px solid #cccccc; + line-height: 1px; + font-size: 1px; + padding-bottom: 1px; +} + +.mceEditorIframe { + border: 0; +} + +/* Button CSS rules */ + +a.mceButtonDisabled img, a.mceButtonNormal img, a.mceButtonSelected img { + width: 20px; + height: 20px; + cursor: default; + margin-top: 1px; + margin-left: 1px; +} + +a.mceButtonDisabled img { + border: 0 !important; +} + +a.mceButtonNormal img, a.mceButtonSelected img { + border: 1px solid #F0F0EE !important; +} + +a.mceButtonSelected img { + border: 1px solid #C0C0BB !important; +} + +a.mceButtonNormal img:hover, a.mceButtonSelected img:hover { + border: 1px solid #0A246A !important; + cursor: default; + background-color: #B6BDD2; +} + +a.mceButtonDisabled img { + -moz-opacity:0.3; + opacity: 0.3; + border: 1px solid #F0F0EE !important; + cursor: default; +} + +a.mceTiledButton img { + background-image: url('../images/buttons.gif'); + background-repeat: no-repeat; +} + +/* MSIE specific rules */ + +* html a.mceButtonNormal img, * html a.mceButtonSelected img, * html a.mceButtonDisabled img { + border: 0px !important; + margin-top: 2px; + margin-bottom: 1px; +} + +* html a.mceButtonDisabled img { + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + border: 0px !important; +} + +* html a.mceButtonDisabled { + border: 1px solid #F0F0EE !important; +} + +* html a.mceButtonNormal, * html a.mceButtonSelected { + border: 1px solid #F0F0EE; + cursor: default; +} + +* html a.mceButtonSelected { + border: 1px solid #C0C0BB; +} + +* html a.mceButtonNormal:hover, * html a.mceButtonSelected:hover { + border: 1px solid #0A246A; + cursor: default; + background-color: #B6BDD2; +} + +* html .mceSelectList { + margin-top: 2px; +} diff --git a/admin/scripts/tiny_mce/themes/simple/editor_template.js b/admin/scripts/tiny_mce/themes/simple/editor_template.js new file mode 100644 index 0000000..ef99fa2 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/simple/editor_template.js @@ -0,0 +1 @@ +var TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var html='';html+='';html+='';html+='
';html+='IFRAME';html+='
';html+=tinyMCE.getButtonHTML('bold','lang_bold_desc','{$themeurl}/images/{$lang_bold_img}','Bold');html+=tinyMCE.getButtonHTML('italic','lang_italic_desc','{$themeurl}/images/{$lang_italic_img}','Italic');html+=tinyMCE.getButtonHTML('underline','lang_underline_desc','{$themeurl}/images/{$lang_underline_img}','Underline');html+=tinyMCE.getButtonHTML('strikethrough','lang_striketrough_desc','{$themeurl}/images/strikethrough.gif','Strikethrough');html+='';html+=tinyMCE.getButtonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='';html+=tinyMCE.getButtonHTML('bullist','lang_bullist_desc','{$themeurl}/images/bullist.gif','InsertUnorderedList');html+=tinyMCE.getButtonHTML('numlist','lang_numlist_desc','{$themeurl}/images/numlist.gif','InsertOrderedList');html+='
';return{delta_width:0,delta_height:20,html:html}},handleNodeChange:function(editor_id,node){tinyMCE.switchClass(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClass(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClass(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClass(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClass(editor_id+'_numlist','mceButtonNormal');do{switch(node.nodeName.toLowerCase()){case"b":case"strong":tinyMCE.switchClass(editor_id+'_bold','mceButtonSelected');break;case"i":case"em":tinyMCE.switchClass(editor_id+'_italic','mceButtonSelected');break;case"u":tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected');break;case"strike":tinyMCE.switchClass(editor_id+'_strikethrough','mceButtonSelected');break;case"ul":tinyMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"ol":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break}}while((node=node.parentNode)!=null)}};tinyMCE.addTheme("simple",TinyMCE_SimpleTheme);tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap); \ No newline at end of file diff --git a/admin/scripts/tiny_mce/themes/simple/editor_template_src.js b/admin/scripts/tiny_mce/themes/simple/editor_template_src.js new file mode 100644 index 0000000..73a0df3 --- /dev/null +++ b/admin/scripts/tiny_mce/themes/simple/editor_template_src.js @@ -0,0 +1,84 @@ +/** + * $Id: editor_template_src.js 162 2007-01-03 16:16:52Z spocke $ + * + * @author Moxiecode + * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved. + */ + +var TinyMCE_SimpleTheme = { + // List of button ids in tile map + _buttonMap : 'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo', + + getEditorTemplate : function() { + var html = ''; + + html += ''; + html += ''; + html += '
'; + html += 'IFRAME'; + html += '
'; + html += tinyMCE.getButtonHTML('bold', 'lang_bold_desc', '{$themeurl}/images/{$lang_bold_img}', 'Bold'); + html += tinyMCE.getButtonHTML('italic', 'lang_italic_desc', '{$themeurl}/images/{$lang_italic_img}', 'Italic'); + html += tinyMCE.getButtonHTML('underline', 'lang_underline_desc', '{$themeurl}/images/{$lang_underline_img}', 'Underline'); + html += tinyMCE.getButtonHTML('strikethrough', 'lang_striketrough_desc', '{$themeurl}/images/strikethrough.gif', 'Strikethrough'); + html += ''; + html += tinyMCE.getButtonHTML('undo', 'lang_undo_desc', '{$themeurl}/images/undo.gif', 'Undo'); + html += tinyMCE.getButtonHTML('redo', 'lang_redo_desc', '{$themeurl}/images/redo.gif', 'Redo'); + html += ''; + html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc', '{$themeurl}/images/cleanup.gif', 'mceCleanup'); + html += ''; + html += tinyMCE.getButtonHTML('bullist', 'lang_bullist_desc', '{$themeurl}/images/bullist.gif', 'InsertUnorderedList'); + html += tinyMCE.getButtonHTML('numlist', 'lang_numlist_desc', '{$themeurl}/images/numlist.gif', 'InsertOrderedList'); + html += '
'; + + return { + delta_width : 0, + delta_height : 20, + html : html + }; + }, + + handleNodeChange : function(editor_id, node) { + // Reset old states + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonNormal'); + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonNormal'); + + // Handle elements + do { + switch (node.nodeName.toLowerCase()) { + case "b": + case "strong": + tinyMCE.switchClass(editor_id + '_bold', 'mceButtonSelected'); + break; + + case "i": + case "em": + tinyMCE.switchClass(editor_id + '_italic', 'mceButtonSelected'); + break; + + case "u": + tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected'); + break; + + case "strike": + tinyMCE.switchClass(editor_id + '_strikethrough', 'mceButtonSelected'); + break; + + case "ul": + tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected'); + break; + + case "ol": + tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected'); + break; + } + } while ((node = node.parentNode) != null); + } +}; + +tinyMCE.addTheme("simple", TinyMCE_SimpleTheme); +tinyMCE.addButtonMap(TinyMCE_SimpleTheme._buttonMap); diff --git a/admin/scripts/tiny_mce/themes/simple/images/bold.gif b/admin/scripts/tiny_mce/themes/simple/images/bold.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6a9cc2cd4117526156fa29c06156ba5971823c4 GIT binary patch literal 76 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*&Mzw-23{>3a?E=Bm(Rqw7V Z4AWqey4jFcx$b3$*C(Ir-+DzDtN~+a79aos literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/bold_de_se.gif b/admin/scripts/tiny_mce/themes/simple/images/bold_de_se.gif new file mode 100644 index 0000000000000000000000000000000000000000..9b129de25e916946792c89f08a7b30b2f9dc8b72 GIT binary patch literal 73 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*UAzw-23e#sdnZdC`i8W!&j Xl@)6cxH+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNeI`y fv!S2m6KACKPM+Zyy|O9RI8W2_`nTTOtPIuwq8S!> literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/bold_tw.gif b/admin/scripts/tiny_mce/themes/simple/images/bold_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..82085432c622fb9b195d45480ce0c00f80d24027 GIT binary patch literal 207 zcmV;=05JbYNk%w1VH5xq0J9DNySuyH-QDi)?jj;0%*@PHRaKdpnGq2YcXxM0L_~;) zh%+-YW@csp00960{{R30A^8LW000gEEC2ui02BZe000Dh(8)=wy*N7}G;WM{HHkzh zs6t%9fi%d0HcQepm#{3&(I_#A0+$;m0FJ}}WxKp?w}cH!tRNB$k|H1#RxPhVL6BGg z09nkC_M1X4*#RtJD4)}o#(?mXbR9t%Fa-%dPzMPG0V6gC3@He52a91h#Kfdz)l@%W&!*iMf|{-?85Jc}En;9`Q2fcl$iTqPpaWzB zRf;e$FdJ6vy7SNAl;>@M#YT=zObHxz&I%bBUa^s_ M6r5P1!pL9^0IPo@`~Uy| literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/buttons.gif b/admin/scripts/tiny_mce/themes/simple/images/buttons.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d86222e6358fb519f5991c7610f66a245ca603a GIT binary patch literal 1054 zcmZ?wbhEHb+`=Hj@XU{aiHT|T!MFD5yY`%Vxn;|ie}4~6+5BPU{#TZ%+cxdK@alR^ zXxGQ;>gu4H>o$?I%%c|6PuTPQj@ zlcU}If|RV9+-%ftpI?)gR~OWD-L~lZr4!TAQ;%E4&f7G}D6a0<&ZGBr{U;q-D8x}mX=9XPKzcL zEt-|Yz`y_$1d@XdDE?$&WMJ@P&;dCN6ekSq{~P?8np;}i+B-VCx_f&2`X@}BGNYW4x_qfel;y_8&9IWvv7b$7boqYEO}$3pO}j(i7njD7lc(IJd{;$PCU?_34 zZqjvP=5c2OF6?YBi-=HAZeMupMYI@`OiTcqps-4VhZ@Jzuwxr;zkkhs@<`9dbD9er zxO}D@VDjs%xpsn$$8t+UoZkt7i_DfY%I^i$Y~3CxoUb{fgF|g@NV9@Chrz+TAGs?O zRrM!)nA4#7BB7a^<6qfbCEHB#PBsmZhaPslXRqBepEO5-i6e&f=gDez?*kf(xg}Iq z&Qo_R-QcBW?o;5T&dDJ-Q$_xdz~i34GNoA-lS?)nU|hLmyON^#9D{?r^Ed>Z1uhnB zKf$i8!KkXiYqDkTyv_~B&P|>4z`&6$x=50xe#(cR&KhnnEIRc%{Dc?;zNEfdsc6gj W>*b0i)3RQzT(N9bmU<%tgEat$sGB?h literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/cleanup.gif b/admin/scripts/tiny_mce/themes/simple/images/cleanup.gif new file mode 100644 index 0000000000000000000000000000000000000000..16491f6cfcf3e1123f08352c895f8010f791c469 GIT binary patch literal 256 zcmV+b0ssC-Nk%w1VH5xq0MrlwMm#2xdP3^ge4>(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/italic.gif b/admin/scripts/tiny_mce/themes/simple/images/italic.gif new file mode 100644 index 0000000000000000000000000000000000000000..8bb330bd0bbf61fdb5ce86388ecbeae16465bc17 GIT binary patch literal 79 zcmZ?wbhEHb6k!lySjfl#1T8Hs)z#IEjEssuS%3n}3_2iDkURsE!kqq_+b+wcJF`+8$Fz@Ye(g^_`QkwFK@28xR?Ffgh1^shYqmVdFy0;Z@$ hzTc5`u943p7fMVz+n$-ed(#4|tKWK`2QxBQ0|3J`7vul{ literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/italic_tw.gif b/admin/scripts/tiny_mce/themes/simple/images/italic_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f6eeaa2b2111e9995584a66644dacd01ebf33e4 GIT binary patch literal 274 zcmZ?wbhEHb6k!lyI3mCxFE7u}&!3;4KY#xG^XJd|`}?n7zdk-bUSD7T{rmU(_wT=d z|9*dee|>$uy}dmH1H=FS|A8d&K=CIFBLjl~gAPaw$W8{sAA<=#Bx}ZV~!Miqwc5(MoQ;hMLOK*yvJx*8l(jA^8LW000L7 zEC2ui02BZe0009tc)HyFFv>|=F}0bofd8LU3_`XHL13Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/separator.gif b/admin/scripts/tiny_mce/themes/simple/images/separator.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f39b809e98103422a7a8815d9e0ff23123034b5 GIT binary patch literal 57 zcmZ?wbhEHbWMU9un8?J?(9rN73>X*~6o0ZXGB7YP=m6P3N(4x7O<|q5`t188u7e^B F)&TE55J&(3 literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/spacer.gif b/admin/scripts/tiny_mce/themes/simple/images/spacer.gif new file mode 100644 index 0000000000000000000000000000000000000000..388486517fa8da13ebd150e8f65d5096c3e10c3a GIT binary patch literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/strikethrough.gif b/admin/scripts/tiny_mce/themes/simple/images/strikethrough.gif new file mode 100644 index 0000000000000000000000000000000000000000..3264635918e2237257811a745f3a7e31b4369432 GIT binary patch literal 83 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*jFzw-23{>5`RB^ury^=8j) h^eUTr??>*V8C&%_D;C}?e9svC>)iK$`!yICtN}048)X0h literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/underline.gif b/admin/scripts/tiny_mce/themes/simple/images/underline.gif new file mode 100644 index 0000000000000000000000000000000000000000..1dfeb5f6d06e21a25615a9eb0cbd2a74ab0efa42 GIT binary patch literal 88 zcmZ?wbhEHb6k!lySjfl#1l85mjEo?b;!hSJ#l)Zk5(UXKFlkQdUwQg1zxWJ?3%{OS koDe;yao*!zU(QKMRZNWnGjv6-o@%}Q>)iK!0SpY*0G3P}*Z=?k literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/underline_fr.gif b/admin/scripts/tiny_mce/themes/simple/images/underline_fr.gif new file mode 100644 index 0000000000000000000000000000000000000000..551d9148d302c5f58b3b20d2c6a642450889a7ef GIT binary patch literal 79 zcmZ?wbhEHb6k!lyn83&Y1dNP~ia%L^OhyJB5FaGNz@*mGzw-23e(4zsAr}6}u9vvi dPIT?{=$xyxd19dGtWDy_KKDM~70ke34FHj_7K8u* literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/underline_ru.gif b/admin/scripts/tiny_mce/themes/simple/images/underline_ru.gif new file mode 100644 index 0000000000000000000000000000000000000000..b78e2a498fb9406ef378d7c543756db552d87cba GIT binary patch literal 77 zcmZ?wbhEHb6k!lyn83i`>+8$Fz@Ye(g^_`QkwFK@28xR?Ffgg~^shYqmVYseNK2Ny ft@O9qnGc`Wq;$3l?I>E+zBOCw^tWDnRt9STq^=gR literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/underline_tw.gif b/admin/scripts/tiny_mce/themes/simple/images/underline_tw.gif new file mode 100644 index 0000000000000000000000000000000000000000..b715390484c95c3d3311012dd541e2b46a2f4a78 GIT binary patch literal 245 zcmZ?wbhEHb6k!lyI3mihYSpUH(9n19-U$i{mY0{GIdf*_%$df<#%XD3=g*&4Qc`;V z{=J%-nvai9ety1-i;KOzeMd*f{{8!R@7~S8!0`Y7e;|nmDE?$&WMB|w&;h9d*~!3K zl%U#|k~uHKi*I6=T}Ytl*F$OTQv9tdV6_n`zCQJ Ua|%tL!OK2l4tMK(4MhfP08!6P_5c6? literal 0 HcmV?d00001 diff --git a/admin/scripts/tiny_mce/themes/simple/images/undo.gif b/admin/scripts/tiny_mce/themes/simple/images/undo.gif new file mode 100644 index 0000000000000000000000000000000000000000..520796d69defa118055d191eec33cc67f7551710 GIT binary patch literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk');this._def("font_size_classes",'');this._def("font_size_style_values",'xx-small,x-small,small,medium,large,x-large,xx-large',true);this._def("event_elements",'a,img',true);this._def("convert_urls",true);this._def("table_inline_editing",false);this._def("object_resizing",true);this._def("custom_shortcuts",true);this._def("convert_on_click",false);this._def("content_css",'');this._def("fix_list_elements",true);this._def("fix_table_elements",false);this._def("strict_loading_mode",document.contentType=='application/xhtml+xml');this._def("hidden_tab_class",'');this._def("display_tab_class",'');this._def("gecko_spellcheck",false);this._def("hide_selects_on_submit",true);if(this.isMSIE&&!this.isOpera)this.settings.strict_loading_mode=false;if(this.isMSIE&&this.settings['browsers'].indexOf('msie')==-1)return;if(this.isGecko&&this.settings['browsers'].indexOf('gecko')==-1)return;if(this.isSafari&&this.settings['browsers'].indexOf('safari')==-1)return;if(this.isOpera&&this.settings['browsers'].indexOf('opera')==-1)return;baseHREF=tinyMCE.settings['document_base_url'];var h=document.location.href;var p=h.indexOf('://');if(p>0&&document.location.protocol!="file:"){p=h.indexOf('/',p+3);h=h.substring(0,p);if(baseHREF.indexOf('://')==-1)baseHREF=h+baseHREF;tinyMCE.settings['document_base_url']=baseHREF;tinyMCE.settings['document_base_prefix']=h}if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme'];this.inlineStrict='A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment';this.inlineTransitional='A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment';this.blockElms='H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP';this.blockRegExp=new RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=new Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='javascript:void(091039730);';this.uniqueTag='';this.callbacks=new Array('onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup','removeInstance');this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tinyMCE.isIE||tinyMCE.isOpera)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("popups_css",false)){var cssPath=tinyMCE.getParam("popups_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['popups_css']=this.documentBasePath+"/"+cssPath;else this.settings['popups_css']=cssPath}else this.settings['popups_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_popup.css";if(tinyMCE.getParam("editor_css",false)){var cssPath=tinyMCE.getParam("editor_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['editor_css']=this.documentBasePath+"/"+cssPath;else this.settings['editor_css']=cssPath}else{if(this.settings.editor_css!='')this.settings['editor_css']=tinyMCE.baseURL+"/themes/"+theme+"/css/editor_ui.css"}if(tinyMCE.settings['debug']){var msg="Debug: \n";msg+="baseURL: "+this.baseURL+"\n";msg+="documentBasePath: "+this.documentBasePath+"\n";msg+="content_css: "+this.settings['content_css']+"\n";msg+="popups_css: "+this.settings['popups_css']+"\n";msg+="editor_css: "+this.settings['editor_css']+"\n";alert(msg)}if(this.configs.length==0){if(typeof(TinyMCECompressed)=="undefined"){tinyMCE.addEvent(window,"DOMContentLoaded",TinyMCE_Engine.prototype.onLoad);if(tinyMCE.isRealIE){if(document.body)tinyMCE.addEvent(document.body,"readystatechange",TinyMCE_Engine.prototype.onLoad);else tinyMCE.addEvent(document,"readystatechange",TinyMCE_Engine.prototype.onLoad)}tinyMCE.addEvent(window,"load",TinyMCE_Engine.prototype.onLoad);tinyMCE._addUnloadEvents()}}this.loadScript(tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template'+tinyMCE.srcMode+'.js');this.loadScript(tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js');this.loadCSS(this.settings['editor_css']);var p=tinyMCE.getParam('plugins','',true,',');if(p.length>0){for(var i=0;i&"\']','g');this.xmlEncodeRe=new RegExp('[<>&"]','g');},_addUnloadEvents:function(){if(tinyMCE.isIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyMCE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.unloadHandler)}}else{if(tinyMCE.settings['add_unload_trigger'])tinyMCE.addEvent(window,"unload",function(){tinyMCE.triggerSave(true,true)})}},_def:function(key,def_val,t){var v=tinyMCE.getParam(key,def_val);v=t?v.replace(/\s+/g,""):v;this.settings[key]=v},hasPlugin:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},addPlugin:function(n,p){var op=this.plugins[n];p.baseURL=op?op.baseURL:tinyMCE.baseURL+"/plugins/"+n;this.plugins[n]=p;this.loadNextScript()},setPluginBaseURL:function(n,u){var op=this.plugins[n];if(op)op.baseURL=u;else this.plugins[n]={baseURL:u}},loadPlugin:function(n,u){u=u.indexOf('.js')!=-1?u.substring(0,u.lastIndexOf('/')):u;u=u.charAt(u.length-1)=='/'?u.substring(0,u.length-1):u;this.plugins[n]={baseURL:u};this.loadScript(u+"/editor_plugin"+(tinyMCE.srcMode?'_src':'')+".js")},hasTheme:function(n){return typeof(this.themes[n])!="undefined"&&this.themes[n]!=null},addTheme:function(n,t){this.themes[n]=t;this.loadNextScript()},addMenu:function(n,m){this.menus[n]=m},hasMenu:function(n){return typeof(this.plugins[n])!="undefined"&&this.plugins[n]!=null},loadScript:function(url){var i;for(i=0;i');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loadingIndex0){for(i=0,lflen=this.loadedFiles.length;i');this.loadedFiles[this.loadedFiles.length]=ar[x]}}}},importCSS:function(doc,css){var css_ary=css.replace(/\s+/,'').split(',');var csslen,elm,headArr,x,css_file;for(x=0,csslen=css_ary.length;x0){if(css_file.indexOf('://')==-1&&css_file.charAt(0)!='/')css_file=this.documentBasePath+"/"+css_file;if(typeof(doc.createStyleSheet)=="undefined"){elm=doc.createElement("link");elm.rel="stylesheet";elm.href=css_file;if((headArr=doc.getElementsByTagName("head"))!=null&&headArr.length>0)headArr[0].appendChild(elm)}else doc.createStyleSheet(css_file)}}},confirmAdd:function(e,settings){var elm=tinyMCE.isIE?event.srcElement:e.target;var elementId=elm.name?elm.name:elm.id;tinyMCE.settings=settings;if(tinyMCE.settings['convert_on_click']||(!elm.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm'])))tinyMCE.addMCEControl(elm,elementId);elm.setAttribute('mce_noask','true')},updateContent:function(form_element_name){var formElement=document.getElementById(form_element_name);for(var n in tinyMCE.instances){var inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();if(inst.formElement==formElement){var doc=inst.getDoc();tinyMCE._setHTML(doc,inst.formElement.value);if(!tinyMCE.isIE)doc.body.innerHTML=tinyMCE._cleanupHTML(inst,doc,this.settings,doc.body,inst.visualAid)}}},addMCEControl:function(replace_element,form_element_name,target_document){var id="mce_editor_"+tinyMCE.idCounter++;var inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.instances[id]=inst;inst._onAdd(replace_element,form_element_name,target_document)},removeInstance:function(ti){var t=[],n,i;for(n in tinyMCE.instances){i=tinyMCE.instances[n];if(tinyMCE.isInstance(i)&&ti!=i)t[n]=i}tinyMCE.instances=t;n=[];t=tinyMCE.undoLevels;for(i=0;i0){tinyMCE.nextUndoRedoAction='Undo';inst=this.undoLevels[--this.undoIndex];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Undo')}}else inst.execCommand('Undo');return true;case"Redo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex<=this.undoLevels.length-1){tinyMCE.nextUndoRedoAction='Redo';inst=this.undoLevels[this.undoIndex++];inst.select();if(!tinyMCE.nextUndoRedoInstanceId)inst.execCommand('Redo')}}else inst.execCommand('Redo');return true;case'mceFocus':var inst=tinyMCE.getInstanceById(value);if(inst)inst.getWin().focus();return;case"mceAddControl":case"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceAddFrameControl":tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'],value['document']),value['element'],value['document']);return;case"mceRemoveControl":case"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case"mceToggleEditor":var inst=tinyMCE.getInstanceById(value),pe,te;if(inst){pe=document.getElementById(inst.editorId+'_parent');te=inst.oldTargetElement;if(typeof(inst.enabled)=='undefined')inst.enabled=true;inst.enabled=!inst.enabled;if(!inst.enabled){pe.style.display='none';te.value=inst.getHTML();te.style.display=inst.oldTargetDisplay;tinyMCE.dispatchCallback(inst,'hide_instance_callback','hideInstance',inst)}else{pe.style.display='block';te.style.display='none';inst.setHTML(te.value);inst.useCSS=false;tinyMCE.dispatchCallback(inst,'show_instance_callback','showInstance',inst)}}else tinyMCE.addMCEControl(tinyMCE._getElementById(value),value);return;case"mceResetDesignMode":if(!tinyMCE.isIE){for(var n in tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[n]))continue;try{tinyMCE.instances[n].getDoc().designMode="on"}catch(e){}}}return}if(inst){inst.execCommand(command,user_interface,value)}else if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert'])},_createIFrame:function(replace_element,doc,win){var iframe,id=replace_element.getAttribute("id");var aw,ah;if(typeof(doc)=="undefined")doc=document;if(typeof(win)=="undefined")win=window;iframe=doc.createElement("iframe");aw=""+tinyMCE.settings['area_width'];ah=""+tinyMCE.settings['area_height'];if(aw.indexOf('%')==-1){aw=parseInt(aw);aw=(isNaN(aw)||aw<0)?300:aw;aw=aw+"px"}if(ah.indexOf('%')==-1){ah=parseInt(ah);ah=(isNaN(ah)||ah<0)?240:ah;ah=ah+"px"}iframe.setAttribute("id",id);iframe.setAttribute("name",id);iframe.setAttribute("class","mceEditorIframe");iframe.setAttribute("border","0");iframe.setAttribute("frameBorder","0");iframe.setAttribute("marginWidth","0");iframe.setAttribute("marginHeight","0");iframe.setAttribute("leftMargin","0");iframe.setAttribute("topMargin","0");iframe.setAttribute("width",aw);iframe.setAttribute("height",ah);iframe.setAttribute("allowtransparency","true");iframe.className='mceEditorIframe';if(tinyMCE.settings["auto_resize"])iframe.setAttribute("scrolling","no");if(tinyMCE.isRealIE)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=aw;iframe.style.height=ah;if(tinyMCE.settings.strict_loading_mode)iframe.style.marginBottom='-5px';if(tinyMCE.isRealIE)replace_element.outerHTML=iframe.outerHTML;else replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isRealIE)return win.frames[id];else return iframe},setupContent:function(editor_id){var inst=tinyMCE.instances[editor_id],i;var doc=inst.getDoc();var head=doc.getElementsByTagName('head').item(0);var content=inst.startContent;if(tinyMCE.settings.strict_loading_mode){content=content.replace(/</g,'<');content=content.replace(/>/g,'>');content=content.replace(/"/g,'"');content=content.replace(/&/g,'&')}tinyMCE.selectedInstance=inst;inst.switchSettings();if(!tinyMCE.isIE&&tinyMCE.getParam("setupcontent_reload",false)&&doc.title!="blank_page"){try{doc.location.href=tinyMCE.baseURL+"/blank.htm"}catch(ex){}window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return}tinyMCE.importCSS(inst.getDoc(),tinyMCE.baseURL+"/themes/"+inst.settings['theme']+"/css/editor_content.css");tinyMCE.importCSS(inst.getDoc(),inst.settings['content_css']);tinyMCE.dispatchCallback(inst,'init_instance_callback','initInstance',inst);if(tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')){inst.addShortcut('ctrl','z','lang_undo_desc','Undo');inst.addShortcut('ctrl','y','lang_redo_desc','Redo')}for(i=1;i<=6;i++)inst.addShortcut('ctrl',''+i,'','FormatBlock',false,'');inst.addShortcut('ctrl','7','','FormatBlock',false,'

');inst.addShortcut('ctrl','8','','FormatBlock',false,'

');inst.addShortcut('ctrl','9','','FormatBlock',false,'
');if(tinyMCE.isGecko){inst.addShortcut('ctrl','b','lang_bold_desc','Bold');inst.addShortcut('ctrl','i','lang_italic_desc','Italic');inst.addShortcut('ctrl','u','lang_underline_desc','Underline')}if(tinyMCE.getParam("convert_fonts_to_spans"))inst.getBody().setAttribute('id','mceSpanFonts');if(tinyMCE.settings['nowrap'])doc.body.style.whiteSpace="nowrap";doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isIE)doc.documentElement.editorId=editor_id;inst.setBaseHREF(tinyMCE.settings['base_href']);if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","
","gi");content=tinyMCE.regexpReplace(content,"\r","
","gi");content=tinyMCE.regexpReplace(content,"\n","
","gi")}content=tinyMCE.storeAwayURLs(content);content=tinyMCE._customCleanup(inst,"insert_to_editor",content);if(tinyMCE.isIE){window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["'+editor_id+'"].getDoc(), "'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])doc.styleSheets[0].addRule("p","margin: 0;");var body=inst.getBody();body.editorId=editor_id}content=tinyMCE.cleanupHTMLCode(content);if(!tinyMCE.isIE){var contentElement=inst.getDoc().createElement("body");var doc=inst.getDoc();contentElement.innerHTML=content;if(tinyMCE.isGecko&&tinyMCE.settings['remove_lt_gt'])content=content.replace(new RegExp('<>','g'),"");if(tinyMCE.settings['cleanup_on_startup'])tinyMCE.setInnerHTML(inst.getBody(),tinyMCE._cleanupHTML(inst,doc,this.settings,contentElement));else tinyMCE.setInnerHTML(inst.getBody(),content);tinyMCE.convertAllRelativeURLs(inst.getBody())}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(inst.getDoc(),content);eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}')}else tinyMCE._setHTML(inst.getDoc(),content)}tinyMCE.handleVisualAid(inst.getBody(),true,tinyMCE.settings['visual'],inst);tinyMCE.dispatchCallback(inst,'setupcontent_callback','setupContent',editor_id,inst.getBody(),inst.getDoc());if(!tinyMCE.isIE)tinyMCE.addEventHandlers(inst);if(tinyMCE.isIE){tinyMCE.addEvent(inst.getBody(),"blur",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(inst.getBody(),"beforedeactivate",TinyMCE_Engine.prototype._eventPatch);if(!tinyMCE.isOpera){tinyMCE.addEvent(doc.body,"mousemove",TinyMCE_Engine.prototype.onMouseMove);tinyMCE.addEvent(doc.body,"beforepaste",TinyMCE_Engine.prototype._eventPatch);tinyMCE.addEvent(doc.body,"drop",TinyMCE_Engine.prototype._eventPatch)}}inst.select();tinyMCE.selectedElement=inst.contentWindow.document.body;tinyMCE._customCleanup(inst,"insert_to_editor_dom",inst.getBody());tinyMCE._customCleanup(inst,"setup_content_dom",inst.getBody());tinyMCE._setEventsEnabled(inst.getBody(),false);tinyMCE.cleanupAnchors(inst.getDoc());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());inst.startContent=tinyMCE.trim(inst.getBody().innerHTML);inst.undoRedo.add({content:inst.startContent});if(tinyMCE.isGecko){tinyMCE.selectNodes(inst.getBody(),function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}if(tinyMCE.isGecko)inst.getBody().spellcheck=tinyMCE.getParam("gecko_spellcheck");tinyMCE._removeInternal(inst.getBody());inst.select();tinyMCE.triggerNodeChange(false,true)},storeAwayURLs:function(s){if(!s.match(/(mce_src|mce_href)/gi,s)){s=s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"','gi'),'src="$1" mce_src="$1"');s=s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"','gi'),'href="$1" mce_href="$1"')}return s},_removeInternal:function(n){if(tinyMCE.isGecko){tinyMCE.selectNodes(n,function(n){if(n.nodeType==3||n.nodeType==8)n.nodeValue=n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"','gi'),"");return false})}},removeTinyMCEFormElements:function(form_obj){var i,elementId;if(!tinyMCE.getParam('hide_selects_on_submit'))return;if(typeof(form_obj)=="undefined"||form_obj==null)return;if(form_obj.nodeName!="FORM"){if(form_obj.form)form_obj=form_obj.form;else form_obj=tinyMCE.getParentElement(form_obj,"form")}if(form_obj==null)return;for(i=0;i");rng.collapse(false);rng.select();tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return false}}if(e.keyCode==8||e.keyCode==46){tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(e.target,"a");tinyMCE.imgElement=tinyMCE.getParentElement(e.target,"img");tinyMCE.triggerNodeChange(false)}return false;break;case"keyup":case"keydown":tinyMCE.hideMenus();tinyMCE.hasMouseMoved=false;if(inst&&inst.handleShortcut(e))return false;if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();var inst=tinyMCE.selectedInstance;if(tinyMCE.isGecko&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mceAddUndoLevel");e.preventDefault();return false}}tinyMCE.selectedElement=null;tinyMCE.selectedNode=null;var elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedElement=elm;if(tinyMCE.isGecko&&e.type=="keyup"&&e.keyCode==9)tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(),true,tinyMCE.settings['visual'],tinyMCE.selectedInstance);if(tinyMCE.isIE&&e.type=="keydown"&&e.keyCode==13)tinyMCE.enterKeyElement=tinyMCE.selectedInstance.getFocusElement();if(tinyMCE.isIE&&e.type=="keyup"&&e.keyCode==13){var elm=tinyMCE.enterKeyElement;if(elm){var re=new RegExp('^HR|IMG|BR$','g');var dre=new RegExp('^H[1-6]$','g');if(!elm.hasChildNodes()&&!re.test(elm.nodeName)){if(dre.test(elm.nodeName))elm.innerHTML="  ";else elm.innerHTML=" "}}}var keys=tinyMCE.posKeyCodes;var posKey=false;for(var i=0;i';h+='';h+=''}else{h+='';h+='';h+=''}return h},getMenuButtonHTML:function(id,lang,img,mcmd,cmd,ui,val){var h='',m,x;mcmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+mcmd+'\');';cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+cmd+'\'';if(typeof(ui)!="undefined"&&ui!=null)cmd+=','+ui;if(typeof(val)!="undefined"&&val!=null)cmd+=",'"+val+"'";cmd+=');';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=tinyMCE.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);if(tinyMCE.isRealIE)h+='';else h+='';h+='';h+='';h+='';h+=''}else{if(tinyMCE.isRealIE)h+='';else h+='';h+='';h+='';h+='';h+=''}return h},_menuButtonEvent:function(e,o){if(o.className=='mceMenuButtonFocus')return;if(e=='over')o.className=o.className+' mceMenuHover';else o.className=o.className.replace(/\s.*$/,'')},addButtonMap:function(m){var i,a=m.replace(/\s+/,'').split(',');for(i=0;i0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=inst.undoRedo.undoIndex;undoLevels=inst.undoRedo.undoLevels.length}tinyMCE.dispatchCallback(inst,'handle_node_change_callback','handleNodeChange',editorId,elm,undoIndex,undoLevels,inst.visualAid,anySelection,setup_content)}if(this.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus()},_customCleanup:function(inst,type,content){var pl,po,i;var customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type, content, inst);");po=tinyMCE.themes[tinyMCE.settings['theme']];if(po&&po.cleanup)content=po.cleanup(type,content,inst);pl=inst.plugins;for(i=0;i0)className+=" ";className+=classNames[i]}return className},handleVisualAid:function(el,deep,state,inst,skip_dispatch){if(!el)return;if(!skip_dispatch)tinyMCE.dispatchCallback(inst,'handle_visual_aid_callback','handleVisualAid',el,deep,state,inst);var tableElement=null;switch(el.nodeName){case"TABLE":var oldW=el.style.width;var oldH=el.style.height;var bo=tinyMCE.getAttrib(el,"border");bo=bo==""||bo=="0"?true:false;tinyMCE.setAttrib(el,"class",tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el,"class"),state&&bo));el.style.width=oldW;el.style.height=oldH;for(var y=0;y0)return inst.cssClasses;if(typeof(editor_id)=="undefined"&&typeof(doc)=="undefined"){var instance;for(var instanceName in tinyMCE.instances){instance=tinyMCE.instances[instanceName];if(!tinyMCE.isInstance(instance))continue;break}doc=instance.getDoc()}if(typeof(doc)=="undefined"){var instance=tinyMCE.getInstanceById(editor_id);doc=instance.getDoc()}if(doc){var styles=doc.styleSheets;if(styles&&styles.length>0){for(var x=0;x'+tinyMCE.replaceVar(v,"pluginurl",o.baseURL)+'';return tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}}o=tinyMCE.themes[tinyMCE.settings['theme']];if(o.getControlHTML&&(v=o.getControlHTML(c))!=''){if(rtl)return''+v+'';return v}return''},evalFunc:function(f,idx,a,o){o=!o?window:o;f=typeof(f)=='function'?f:o[f];return f.apply(o,Array.prototype.slice.call(a,idx))},dispatchCallback:function(i,p,n){return this.callFunc(i,p,n,0,this.dispatchCallback.arguments)},executeCallback:function(i,p,n){return this.callFunc(i,p,n,1,this.executeCallback.arguments)},execCommandCallback:function(i,p,n){return this.callFunc(i,p,n,2,this.execCommandCallback.arguments)},callFunc:function(ins,p,n,m,a){var l,i,on,o,s,v;s=m==2;l=tinyMCE.getParam(p,'');if(l!=''&&(v=tinyMCE.evalFunc(l,3,a))==s&&m>0)return true;if(ins!=null){for(i=0,l=ins.plugins;i0)return true}}l=tinyMCE.themes;for(on in l){o=l[on];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>0)return true}return false},xmlEncode:function(s,skip_apos){return s?(''+s).replace(!skip_apos?this.xmlEncodeAposRe:this.xmlEncodeRe,function(c,b){switch(c){case'&':return'&';case'"':return'"';case'\'':return''';case'<':return'<';case'>':return'>'}return c}):s},extend:function(p,np){var o={};o.parent=p;for(n in p)o[n]=p[n];for(n in np)o[n]=np[n];return o},hideMenus:function(){var e=tinyMCE.lastSelectedMenuBtn;if(tinyMCE.lastMenu){tinyMCE.lastMenu.hide();tinyMCE.lastMenu=null}if(e){tinyMCE.switchClass(e,tinyMCE.lastMenuBtnClass);tinyMCE.lastSelectedMenuBtn=null}}};var TinyMCE=TinyMCE_Engine;var tinyMCE=new TinyMCE_Engine();var tinyMCELang={};function TinyMCE_Control(settings){var t,i,to,fu,p,x,fn,fu,pn,s=settings;this.undoRedoLevel=true;this.isTinyMCE_Control=true;this.settings=s;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);this.selection=new TinyMCE_Selection(this);this.undoRedo=new TinyMCE_UndoRedo(this);this.cleanup=new TinyMCE_Cleanup();this.shortcuts=new Array();this.hasMouseMoved=false;this.foreColor=this.backColor="#999999";this.data={};this.cssClasses=[];this.cleanup.init({valid_elements:s.valid_elements,extended_valid_elements:s.extended_valid_elements,valid_child_elements:s.valid_child_elements,entities:s.entities,entity_encoding:s.entity_encoding,debug:s.cleanup_debug,indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication,convert_fonts_to_spans:s.convert_fonts_to_spans});t=this.settings['theme'];if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;to={};for(i=0;i0){for(i=0;i1&&tinyMCE.currentConfig!=this.settings['index']){tinyMCE.settings=this.settings;tinyMCE.currentConfig=this.settings['index']}},select:function(){var oldInst=tinyMCE.selectedInstance;if(oldInst!=this){if(oldInst)oldInst.execCommand('mceEndTyping');tinyMCE.dispatchCallback(this,'select_instance_callback','selectInstance',this,oldInst);tinyMCE.selectedInstance=this}},getBody:function(){return this.contentBody?this.contentBody:this.getDoc().body},getDoc:function(){return this.contentWindow.document},getWin:function(){return this.contentWindow},getContainerWin:function(){return this.containerWindow?this.containerWindow:window},getViewPort:function(){return tinyMCE.getViewPort(this.getWin())},getParentNode:function(n,f){return tinyMCE.getParentNode(n,f,this.getBody())},getParentElement:function(n,na,f){return tinyMCE.getParentElement(n,na,f,this.getBody())},getParentBlockElement:function(n){return tinyMCE.getParentBlockElement(n,this.getBody())},resizeToContent:function(){var d=this.getDoc(),b=d.body,de=d.documentElement;this.iframeElement.style.height=(tinyMCE.isRealIE)?b.scrollHeight:de.offsetHeight+'px'},addShortcut:function(m,k,d,cmd,ui,va){var n=typeof(k)=="number",ie=tinyMCE.isIE,c,sc,i,scl=this.shortcuts;if(!tinyMCE.getParam('custom_shortcuts'))return false;m=m.toLowerCase();k=ie&&!n?k.toUpperCase():k;c=n?null:k.charCodeAt(0);d=d&&d.indexOf('lang_')==0?tinyMCE.getLang(d):d;sc={alt:m.indexOf('alt')!=-1,ctrl:m.indexOf('ctrl')!=-1,shift:m.indexOf('shift')!=-1,charCode:c,keyCode:n?k:(ie?c:null),desc:d,cmd:cmd,ui:ui,val:va};for(i=0;i0)rng.pasteHTML('
'+rng.htmlText+"
");tinyMCE.triggerNodeChange();return}}}switch(command){case"mceRepaint":this.repaint();return true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusElm,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getDoc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return true;case"InsertUnorderedList":case"InsertOrderedList":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"Strikethrough":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;case"mceSelectNode":this.selection.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;break;case"FormatBlock":if(value==null||value==""){var elm=tinyMCE.getParentElement(this.getFocusElement(),"p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp");if(elm)this.execCommand("mceRemoveNode",false,elm)}else{if(!this.cleanup.isValid(value))return true;if(tinyMCE.isGecko&&new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/gi,'');if(tinyMCE.isIE&&new RegExp('blockquote|code|samp','gi').test(value)){var b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'

');tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()),value);this.selection.moveToBookmark(b)}else this.getDoc().execCommand("FormatBlock",false,value)}tinyMCE.triggerNodeChange();break;case"mceRemoveNode":if(!value)value=tinyMCE.getParentElement(this.getFocusElement());if(tinyMCE.isIE){value.outerHTML=value.innerHTML}else{var rng=value.ownerDocument.createRange();rng.setStartBefore(value);rng.setEndAfter(value);rng.deleteContents();rng.insertNode(rng.createContextualFragment(value.innerHTML))}tinyMCE.triggerNodeChange();break;case"mceSelectNodeDepth":var parentNode=this.getFocusElement();for(var i=0;parentNode;i++){if(parentNode.nodeName.toLowerCase()=="body")break;if(parentNode.nodeName.toLowerCase()=="#text"){i--;parentNode=parentNode.parentNode;continue}if(i==value){this.selection.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return}parentNode=parentNode.parentNode}break;case"mceSetStyleInfo":case"SetStyleInfo":var rng=this.getRng();var sel=this.getSel();var scmd=value['command'];var sname=value['name'];var svalue=value['value']==null?'':value['value'];var wrapper=value['wrapper']?value['wrapper']:"span";var parentElm=null;var invalidRe=new RegExp("^BODY|HTML$","g");var invalidParentsRe=tinyMCE.settings['merge_styles_invalid_parents']!=''?new RegExp(tinyMCE.settings['merge_styles_invalid_parents'],"gi"):null;if(tinyMCE.isIE){if(rng.item)parentElm=rng.item(0);else{var pelm=rng.parentElement();var prng=doc.selection.createRange();prng.moveToElementText(pelm);if(rng.htmlText==prng.htmlText||rng.boundingWidth==0){if(invalidParentsRe==null||!invalidParentsRe.test(pelm.nodeName))parentElm=pelm}}}else{var felm=this.getFocusElement();if(sel.isCollapsed||(new RegExp('td|tr|tbody|table','gi').test(felm.nodeName)&&sel.anchorNode==felm.parentNode))parentElm=felm}if(parentElm&&!invalidRe.test(parentElm.nodeName)){if(scmd=="setstyle")tinyMCE.setStyleAttrib(parentElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(parentElm,sname,svalue);if(scmd=="removeformat"){parentElm.style.cssText='';tinyMCE.setAttrib(parentElm,'class','')}var ch=tinyMCE.getNodeTree(parentElm,new Array(),1);for(var z=0;z=0;i--){var elm=nodes[i];var isNew=tinyMCE.getAttrib(elm,"mce_new")=="true";elm.removeAttribute("mce_new");if(elm.childNodes&&elm.childNodes.length==1&&elm.childNodes[0].nodeType==1){this._mergeElements(scmd,elm,elm.childNodes[0],isNew);continue}if(elm.parentNode.childNodes.length==1&&!invalidRe.test(elm.nodeName)&&!invalidRe.test(elm.parentNode.nodeName)){if(invalidParentsRe==null||!invalidParentsRe.test(elm.parentNode.nodeName))this._mergeElements(scmd,elm.parentNode,elm,false)}}var nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=0;i--){var elm=nodes[i];var isEmpty=true;var tmp=doc.createElement("body");tmp.appendChild(elm.cloneNode(false));tmp.innerHTML=tmp.innerHTML.replace(new RegExp('style=""|class=""','gi'),'');if(new RegExp('','gi').test(tmp.innerHTML)){for(var x=0;x0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value)}tinyMCE.triggerNodeChange();break;case"mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange()}}break;case"mceSetCSSClass":this.execCommand("mceSetStyleInfo",false,{command:"setattrib",name:"class",value:value});break;case"mceInsertRawHTML":var key='tiny_mce_marker';this.execCommand('mceBeginUndoLevel');this.execCommand('mceInsertContent',false,key);var scrollX=this.getBody().scrollLeft+this.getDoc().documentElement.scrollLeft;var scrollY=this.getBody().scrollTop+this.getDoc().documentElement.scrollTop;var html=this.getBody().innerHTML;if((pos=html.indexOf(key))!=-1)tinyMCE.setInnerHTML(this.getBody(),html.substring(0,pos)+value+html.substring(pos+key.length));this.contentWindow.scrollTo(scrollX,scrollY);this.execCommand('mceEndUndoLevel');break;case"mceInsertContent":if(!value)value='';var insertHTMLFailed=false;if(tinyMCE.isGecko||tinyMCE.isOpera){try{if(value.indexOf('<')==-1&&!value.match(/(&| |<|>)/g)){var r=this.getRng();var n=this.getDoc().createTextNode(tinyMCE.entityDecode(value));var s=this.getSel();var r2=r.cloneRange();s.removeAllRanges();r.deleteContents();r.insertNode(n);r2.selectNode(n);r2.collapse(false);s.removeAllRanges();s.addRange(r2)}else{value=tinyMCE.fixGeckoBaseHREFBug(1,this.getDoc(),value);this.getDoc().execCommand('inserthtml',false,value);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}}catch(ex){insertHTMLFailed=true}if(!insertHTMLFailed){tinyMCE.triggerNodeChange();return}}if(!tinyMCE.isIE){var isHTML=value.indexOf('<')!=-1;var sel=this.getSel();var rng=this.getRng();if(isHTML){if(tinyMCE.isSafari){var tmpRng=this.getDoc().createRange();tmpRng.setStart(this.getBody(),0);tmpRng.setEnd(this.getBody(),0);value=tmpRng.createContextualFragment(value)}else value=rng.createContextualFragment(value)}else{var el=document.createElement("div");el.innerHTML=value;value=el.firstChild.nodeValue;value=doc.createTextNode(value)}if(tinyMCE.isSafari&&!isHTML){this.execCommand('InsertText',false,value.nodeValue);tinyMCE.triggerNodeChange();return true}else if(tinyMCE.isSafari&&isHTML){rng.deleteContents();rng.insertNode(value);tinyMCE.triggerNodeChange();return true}rng.deleteContents();if(rng.startContainer.nodeType==3){var node=rng.startContainer.splitText(rng.startOffset);node.parentNode.insertBefore(value,node)}else rng.insertNode(value);if(!isHTML){sel.selectAllChildren(doc.body);sel.removeAllRanges();var rng=doc.createRange();rng.selectNode(value);rng.collapse(false);sel.addRange(rng)}else rng.collapse(false);tinyMCE.fixGeckoBaseHREFBug(2,this.getDoc(),value)}else{var rng=doc.selection.createRange(),tmpRng=null;var c=value.indexOf('"}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i';return h},_serializeAttribute:function(n,r,an){var av='',t,os=this.settings.on_save;if(os&&(an.indexOf('mce_')==0||an.indexOf('_moz')==0))return'';if(os&&this.mceAttribs[an])av=this._getAttrib(n,this.mceAttribs[an]);if(av.length==0)av=this._getAttrib(n,an);if(av.length==0&&r.defaultAttribs&&(t=r.defaultAttribs[an])){av=t;if(av=="mce_empty")return" "+an+'=""'}if(r.forceAttribs&&(t=r.forceAttribs[an]))av=t;if(os&&av.length!=0&&/^(src|href|longdesc)$/.test(an))av=this._urlConverter(this,n,av);if(av.length!=0&&r.validAttribValues&&r.validAttribValues[an]&&!r.validAttribValues[an].test(av))return"";if(av.length!=0&&av=="{$uid}")av="uid_"+(this.idCount++);if(av.length!=0){if(an.indexOf('on')!=0)av=this.xmlEncode(av,1);return" "+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(//gi,'\n');return''+c+''});h=h.replace(/\r/g,'');h='\n'+h;h=h.replace(new RegExp('\\n\\s+','gi'),'\n');h=h.replace(this.nlBeforeRe,'\n<$1$2>');h=h.replace(this.nlAfterRe,'<$1$2>\n');h=h.replace(this.nlBeforeAfterRe,'\n<$1$2$3>\n');h+='\n';while((i=h.indexOf('\n',i+1))!=-1){if((l=h.substring(li+1,i)).length!=0){if(this.ouRe.test(l)&&p.length>=s.indent_levels)p=p.substring(s.indent_levels);o+=p+l+'\n';if(this.inRe.test(l))p+=this.inStr}li=i}return o},xmlEncode:function(s,skip_apos){var cl=this,re=!skip_apos?this.xmlEncodeAposRe:this.xmlEncodeRe;this._setupEntities();switch(this.settings.entity_encoding){case"raw":return tinyMCE.xmlEncode(s,skip_apos);case"named":return s.replace(re,function(c,b){b=cl.entities[c.charCodeAt(0)];return b?'&'+b+';':c});case"numeric":return s.replace(re,function(c,b){return b?'&#'+c.charCodeAt(0)+';':c})}return s},split:function(re,s){var c=s.split(re);var i,l,o=new Array();for(i=0,l=c.length;i':'>'+h+'';return o};TinyMCE_Engine.prototype.createTag=function(d,tn,a,h){var o=d.createElement(tn);if(a){for(n in a){if(typeof(a[n])!='function'&&a[n]!=null)tinyMCE.setAttrib(o,n,a[n])}}if(h)o.innerHTML=h;return o};TinyMCE_Engine.prototype.getElementByAttributeValue=function(n,e,a,v){return(n=this.getElementsByAttributeValue(n,e,a,v)).length==0?null:n[0]};TinyMCE_Engine.prototype.getElementsByAttributeValue=function(n,e,a,v){var i,nl=n.getElementsByTagName(e),o=new Array();for(i=0;i]*)>/gi,'');h=h.replace(/]*)>/gi,'');h=h.replace(/]*)>/gi,'');h=h.replace(/]*)>/gi,'');h=h.replace(/<\/strong>/gi,'');h=h.replace(/<\/em>/gi,'')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/]*)>\u00A0?<\/p>/gi,' 

');h=h.replace(/]*)>\s* \s*<\/p>/gi,' 

');h=h.replace(/]*)>\s+<\/p>/gi,' 

');e.innerHTML=tinyMCE.uniqueTag+h;e.firstChild.removeNode(true);nl=e.getElementsByTagName("p");for(i=nl.length-1;i>=0;i--){n=nl[i];if(n.nodeName=='P'&&!n.hasChildNodes()&&!n.mce_keep)n.parentNode.removeChild(n)}}else{h=this.fixGeckoBaseHREFBug(1,e,h);e.innerHTML=h;this.fixGeckoBaseHREFBug(2,e,h)}};TinyMCE_Engine.prototype.getOuterHTML=function(e){if(tinyMCE.isIE)return e.outerHTML;var d=e.ownerDocument.createElement("body");d.appendChild(e.cloneNode(true));return d.innerHTML};TinyMCE_Engine.prototype.setOuterHTML=function(e,h,d){var d=typeof(d)=="undefined"?e.ownerDocument:d,i,nl,t;if(tinyMCE.isIE&&e.nodeType==1)e.outerHTML=h;else{t=d.createElement("body");t.innerHTML=h;for(i=0,nl=t.childNodes;i-1;i--){if(ar[i].specified&&ar[i].nodeValue)ne.setAttribute(ar[i].nodeName.toLowerCase(),ar[i].nodeValue)}ar=e.childNodes;for(i=0;i=strTok2.length){for(var i=0;i=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(breakPoint==1)return targetURL.path;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outPath+="../";for(var i=breakPoint-1;i=0;i--){if(baseURLParts[i].length==0)continue;newBaseURLParts[newBaseURLParts.length]=baseURLParts[i]}baseURLParts=newBaseURLParts.reverse();var newRelURLParts=new Array();var numBack=0;for(var i=relURLParts.length-1;i>=0;i--){if(relURLParts[i].length==0||relURLParts[i]==".")continue;if(relURLParts[i]=='..'){numBack++;continue}if(numBack>0){numBack--;continue}newRelURLParts[newRelURLParts.length]=relURLParts[i]}relURLParts=newRelURLParts.reverse();var len=baseURLParts.length-numBack;var absPath=(len<=0?"":"/")+baseURLParts.slice(0,len).join('/')+"/"+relURLParts.join('/');var start="",end="";relURL.protocol=baseURL.protocol;relURL.host=baseURL.host;relURL.port=baseURL.port;if(relURL.path.charAt(relURL.path.length-1)=="/")absPath+="/";relURL.path=absPath;return this.serializeURL(relURL)};TinyMCE_Engine.prototype.convertURL=function(url,node,on_save){var prot=document.location.protocol;var host=document.location.hostname;var port=document.location.port;if(prot=="file:")return url;url=tinyMCE.regexpReplace(url,'(http|https):///','/');if(url.indexOf('mailto:')!=-1||url.indexOf('javascript:')!=-1||tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0)=="#")return url;if(!tinyMCE.isIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return tinyMCE.settings['base_href']+url;if(on_save&&tinyMCE.getParam('relative_urls')){var curl=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(curl.charAt(0)=='/')curl=tinyMCE.settings['document_base_prefix']+curl;var urlParts=tinyMCE.parseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(urlParts['port']==tmpUrlParts['port']))return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],curl)}if(!tinyMCE.getParam('relative_urls')){var urlParts=tinyMCE.parseURL(url);var baseUrlParts=tinyMCE.parseURL(tinyMCE.settings['base_href']);url=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],url);if(urlParts['anchor']&&urlParts['path']==baseUrlParts['path'])return"#"+urlParts['anchor']}if(tinyMCE.getParam('remove_script_host')){var start="",portPart="";if(port!="")portPart=":"+port;start=prot+"//"+host+portPart+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1)}return url};TinyMCE_Engine.prototype.convertAllRelativeURLs=function(body){var i,elms,src,href,mhref,msrc;elms=body.getElementsByTagName("img");for(i=0;ibookmark.index){try{rng.addElement(nl[bookmark.index])}catch(ex){}}}else{try{if(bookmark.start<0)return true;rng=inst.getSel().createRange();rng.moveToElementText(inst.getBody());rng.collapse(true);rng.moveStart('character',bookmark.start);rng.moveEnd('character',bookmark.length)}catch(ex){return true}}rng.select();win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}if(tinyMCE.isGecko||tinyMCE.isOpera){if(!sel)return false;if(bookmark.rng){sel.removeAllRanges();sel.addRange(bookmark.rng)}if(bookmark.start!=-1&&bookmark.end!=-1){try{sd=this._getTextPos(b,bookmark.start,bookmark.end);rng=doc.createRange();rng.setStart(sd.startNode,sd.startOffset);rng.setEnd(sd.endNode,sd.endOffset);sel.removeAllRanges();sel.addRange(rng);win.focus()}catch(ex){}}win.scrollTo(bookmark.scrollX,bookmark.scrollY);return true}return false},_getPosText:function(r,sn,en){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){if(n==sn)d.start=p;if(n==en){d.end=p;return d}p+=n.nodeValue?n.nodeValue.length:0}return null},_getTextPos:function(r,sp,ep){var w=document.createTreeWalker(r,NodeFilter.SHOW_TEXT,null,false),n,p=0,d={};while((n=w.nextNode())!=null){p+=n.nodeValue?n.nodeValue.length:0;if(p>=sp&&!d.startNode){d.startNode=n;d.startOffset=sp-(p-n.nodeValue.length)}if(p>=ep){d.endNode=n;d.endOffset=ep-(p-n.nodeValue.length);return d}}return null},selectNode:function(node,collapse,select_text_node,to_start){var inst=this.instance,sel,rng,nodes;if(!node)return;if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(typeof(to_start)=="undefined")to_start=true;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRealIE){rng=inst.getDoc().body.createTextRange();try{rng.moveToElementText(node);if(collapse)rng.collapse(to_start);rng.select()}catch(e){}}else{sel=this.getSel();if(!sel)return;if(tinyMCE.isSafari){sel.setBaseAndExtent(node,0,node,node.innerText.length);if(collapse){if(to_start)sel.collapseToStart();else sel.collapseToEnd()}this.scrollToNode(node);return}rng=inst.getDoc().createRange();if(select_text_node){nodes=tinyMCE.getNodeTree(node,new Array(),3);if(nodes.length>0)rng.selectNodeContents(nodes[0]);else rng.selectNodeContents(node)}else rng.selectNode(node);if(collapse){if(!to_start&&node.nodeType==3){rng.setStart(node,node.nodeValue.length);rng.setEnd(node,node.nodeValue.length)}else rng.collapse(to_start)}sel.removeAllRanges();sel.addRange(rng)}this.scrollToNode(node);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node},scrollToNode:function(node){var inst=this.instance,w=inst.getWin(),vp=inst.getViewPort(),pos=tinyMCE.getAbsPosition(node),cvp,p,cwin;if(pos.absLeftvp.left+vp.width||pos.absTopvp.top+(vp.height-25))w.scrollTo(pos.absLeft,pos.absTop-vp.height+25);if(inst.settings.auto_resize){cwin=inst.getContainerWin();cvp=tinyMCE.getViewPort(cwin);p=this.getAbsPosition(node);if(p.absLeftcvp.left+cvp.width||p.absTopcvp.top+cvp.height)cwin.scrollTo(p.absLeft,p.absTop-cvp.height+25)}},getAbsPosition:function(n){var pos=tinyMCE.getAbsPosition(n),ipos=tinyMCE.getAbsPosition(this.instance.iframeElement);return{absLeft:ipos.absLeft+pos.absLeft,absTop:ipos.absTop+pos.absTop}},getSel:function(){var inst=this.instance;if(tinyMCE.isRealIE)return inst.getDoc().selection;return inst.contentWindow.getSelection()},getRng:function(){var s=this.getSel();if(s==null)return null;if(tinyMCE.isRealIE)return s.createRange();if(tinyMCE.isSafari&&!s.getRangeAt)return''+window.getSelection();if(s.rangeCount>0)return s.getRangeAt(0);return null},isCollapsed:function(){var r=this.getRng();if(r.item)return false;return r.boundingWidth==0||this.getSel().isCollapsed},collapse:function(b){var r=this.getRng(),s=this.getSel();if(r.select){r.collapse(b);r.select()}else{if(b)s.collapseToStart();else s.collapseToEnd()}},getFocusElement:function(){var inst=this.instance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.selection.createRange();elm=rng.item?rng.item(0):rng.parentElement()}else{if(!tinyMCE.isSafari&&inst.isHidden())return inst.getBody();sel=this.getSel();rng=this.getRng();if(!sel||!rng)return null;elm=rng.commonAncestorContainer;if(!rng.collapsed){if(rng.startContainer==rng.endContainer){if(rng.startOffset-rng.endOffset<2){if(rng.startContainer.hasChildNodes())elm=rng.startContainer.childNodes[rng.startOffset]}}}elm=tinyMCE.getParentElement(elm);}return elm}};function TinyMCE_UndoRedo(inst){this.instance=inst;this.undoLevels=new Array();this.undoIndex=0;this.typingUndoIndex=-1;this.undoRedo=true};TinyMCE_UndoRedo.prototype={add:function(l){var b,customUndoLevels,newHTML,inst=this.instance,i,ul,ur;if(l){this.undoLevels[this.undoLevels.length]=l;return true}if(this.typingUndoIndex!=-1){this.undoIndex=this.typingUndoIndex;if(tinyMCE.typingUndoIndex!=-1)tinyMCE.undoIndex=tinyMCE.typingUndoIndex}newHTML=tinyMCE.trim(inst.getBody().innerHTML);if(this.undoLevels[this.undoIndex]&&newHTML!=this.undoLevels[this.undoIndex].content){tinyMCE.dispatchCallback(inst,'onchange_callback','onChange',inst);customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(i=0;i0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}},redo:function(){var inst=this.instance;tinyMCE.execCommand("mceEndTyping");if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst.settings.custom_undo_redo_restore_selection)inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark)}tinyMCE.triggerNodeChange()}};var TinyMCE_ForceParagraphs={_insertPara:function(inst,e){var doc=inst.getDoc(),sel=inst.getSel(),body=inst.getBody(),win=inst.contentWindow,rng=sel.getRangeAt(0);var rootElm=doc.documentElement,blockName="P",startNode,endNode,startBlock,endBlock;var rngBefore,rngAfter,direct,startNode,startOffset,endNode,endOffset,b=tinyMCE.isOpera?inst.selection.getBookmark():null;var paraBefore,paraAfter,startChop,endChop,contents;function isEmpty(para){function isEmptyHTML(html){return html.replace(new RegExp('[ \t\r\n]+','g'),'').toLowerCase()==""}if(para.getElementsByTagName("img").length>0)return false;if(para.getElementsByTagName("table").length>0)return false;if(para.getElementsByTagName("hr").length>0)return false;var nodes=tinyMCE.getNodeTree(para,new Array(),3);for(var i=0;i <"+blockName+"> ";paraAfter=body.childNodes[1]}inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true}if(startChop.nodeName==blockName)rngBefore.setStart(startChop,0);else rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);contents=rngAfter.cloneContents();if(contents.firstChild&&contents.firstChild.nodeName==blockName){paraAfter.innerHTML=contents.firstChild.innerHTML}else paraAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHTML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toUpperCase()==blockName){rng.setStartBefore(startChop.parentNode)}else{if(rngBefore.startContainer.nodeName.toUpperCase()==blockName&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset)}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toUpperCase()==blockName)rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();if(tinyMCE.isOpera){rng.insertNode(paraBefore);rng.insertNode(paraAfter)}else{rng.insertNode(paraAfter);rng.insertNode(paraBefore)}paraAfter.normalize();paraBefore.normalize();inst.selection.moveToBookmark(b);inst.selection.selectNode(paraAfter,true,true);return true},_handleBackSpace:function(inst){var r=inst.getRng(),sn=r.startContainer,nv,s=false;if(sn&&sn.nextSibling&&sn.nextSibling.nodeName=="BR"&&sn.parentNode.nodeName!="BODY"){nv=sn.nodeValue;if(nv!=null&&r.startOffset==nv.length)sn.nextSibling.parentNode.removeChild(sn.nextSibling)}if(inst.settings.auto_resize)inst.resizeToContent();return s}};function TinyMCE_Layer(id,bm){this.id=id;this.blockerElement=null;this.events=false;this.element=null;this.blockMode=typeof(bm)!='undefined'?bm:true;this.doc=document};TinyMCE_Layer.prototype={moveRelativeTo:function(re,p){var rep=this.getAbsPosition(re);var w=parseInt(re.offsetWidth);var h=parseInt(re.offsetHeight);var e=this.getElement();var ew=parseInt(e.offsetWidth);var eh=parseInt(e.offsetHeight);var x,y;switch(p){case"tl":x=rep.absLeft;y=rep.absTop;break;case"tr":x=rep.absLeft+w;y=rep.absTop;break;case"bl":x=rep.absLeft;y=rep.absTop+h;break;case"br":x=rep.absLeft+w;y=rep.absTop+h;break;case"cc":x=rep.absLeft+(w/ 2) - (ew /2);y=rep.absTop+(h/ 2) - (eh /2);break}this.moveTo(x,y)},moveBy:function(x,y){var e=this.getElement();this.moveTo(parseInt(e.style.left)+x,parseInt(e.style.top)+y)},moveTo:function(x,y){var e=this.getElement();e.style.left=x+"px";e.style.top=y+"px";this.updateBlocker()},resizeBy:function(w,h){var e=this.getElement();this.resizeTo(parseInt(e.style.width)+w,parseInt(e.style.height)+h)},resizeTo:function(w,h){var e=this.getElement();if(w!=null)e.style.width=w+"px";if(h!=null)e.style.height=h+"px";this.updateBlocker()},show:function(){var el=this.getElement();if(el){el.style.display='block';this.updateBlocker()}},hide:function(){var el=this.getElement();if(el){el.style.display='none';this.updateBlocker()}},isVisible:function(){return this.getElement().style.display=='block'},getElement:function(){if(!this.element)this.element=this.doc.getElementById(this.id);return this.element},setBlockMode:function(s){this.blockMode=s},updateBlocker:function(){var e,b,x,y,w,h;b=this.getBlocker();if(b){if(this.blockMode){e=this.getElement();x=this.parseInt(e.style.left);y=this.parseInt(e.style.top);w=this.parseInt(e.offsetWidth);h=this.parseInt(e.offsetHeight);b.style.left=x+'px';b.style.top=y+'px';b.style.width=w+'px';b.style.height=h+'px';b.style.display=e.style.display}else b.style.display='none'}},getBlocker:function(){var d,b;if(!this.blockerElement&&this.blockMode){d=this.doc;b=d.getElementById(this.id+"_blocker");if(!b){b=d.createElement("iframe");b.setAttribute('id',this.id+"_blocker");b.style.cssText='display: none; position: absolute; left: 0; top: 0';b.src='javascript:false;';b.frameBorder='0';b.scrolling='no';d.body.appendChild(b)}this.blockerElement=b}return this.blockerElement},getAbsPosition:function(n){var p={absLeft:0,absTop:0};while(n){p.absLeft+=n.offsetLeft;p.absTop+=n.offsetTop;n=n.offsetParent}return p},create:function(n,c,p,h){var d=this.doc,e=d.createElement(n);e.setAttribute('id',this.id);if(c)e.className=c;if(!p)p=d.body;if(h)e.innerHTML=h;p.appendChild(e);return this.element=e},exists:function(){return this.doc.getElementById(this.id)!=null},parseInt:function(s){if(s==null||s=='')return 0;return parseInt(s)},remove:function(){var e=this.getElement(),b=this.getBlocker();if(e)e.parentNode.removeChild(e);if(b)b.parentNode.removeChild(b)}};function TinyMCE_Menu(){var id;if(typeof(tinyMCE.menuCounter)=="undefined")tinyMCE.menuCounter=0;id="mc_menu_"+tinyMCE.menuCounter++;TinyMCE_Layer.call(this,id,true);this.id=id;this.items=new Array();this.needsUpdate=true};TinyMCE_Menu.prototype=tinyMCE.extend(TinyMCE_Layer.prototype,{init:function(s){var n;this.settings={separator_class:'mceMenuSeparator',title_class:'mceMenuTitle',disabled_class:'mceMenuDisabled',menu_class:'mceMenu',drop_menu:true};for(n in s)this.settings[n]=s[n];this.create('div',this.settings.menu_class)},clear:function(){this.items=new Array()},addTitle:function(t){this.add({type:'title',text:t})},addDisabled:function(t){this.add({type:'disabled',text:t})},addSeparator:function(){this.add({type:'separator'})},addItem:function(t,js){this.add({text:t,js:js})},add:function(mi){this.items[this.items.length]=mi;this.needsUpdate=true},update:function(){var e=this.getElement(),h='',i,t,m=this.items,s=this.settings;if(this.settings.drop_menu)h+='';h+='';for(i=0;i'}h+='
';break;case'title':h+='
'+t+'';break;case'disabled':h+='
'+t+'';break;default:h+='
'+t+''}h+='
';e.innerHTML=h;this.needsUpdate=false;this.updateBlocker()},show:function(){var nl,i;if(tinyMCE.lastMenu==this)return;if(this.needsUpdate)this.update();if(tinyMCE.lastMenu&&tinyMCE.lastMenu!=this)tinyMCE.lastMenu.hide();TinyMCE_Layer.prototype.show.call(this);if(!tinyMCE.isOpera){}tinyMCE.lastMenu=this}});if(!Function.prototype.call){Function.prototype.call=function(){var a=arguments,s=a[0],i,as='',r,o;for(i=1;i1?',':'')+'a['+i+']';o=s._fu;s._fu=this;r=eval('s._fu('+as+')');s._fu=o;return r}};TinyMCE_Engine.prototype.debug=function(){var m="",a,i,l=tinyMCE.log.length;for(i=0,a=this.debug.arguments;i'); + + if (tinyMCE.getParam("popups_css_add")) { + c = tinyMCE.getParam("popups_css_add"); + + // Is relative + if (c.indexOf('://') == -1 && c.charAt(0) != '/') + c = tinyMCE.documentBasePath + "/" + c; + + document.write(''); + } + + tinyMCE.addEvent(window, "load", this.onLoad); + }, + + onLoad : function() { + var dir, i, elms, body = document.body; + + if (tinyMCE.getWindowArg('mce_replacevariables', true)) + body.innerHTML = tinyMCE.applyTemplate(body.innerHTML, tinyMCE.windowArgs); + + dir = tinyMCE.selectedInstance.settings['directionality']; + if (dir == "rtl" && document.forms && document.forms.length > 0) { + elms = document.forms[0].elements; + for (i=0; i=0; i--) { + if (wrapper.hasChildNodes()) + wrapper.insertBefore(nodes[i].cloneNode(true), wrapper.firstChild); + else + wrapper.appendChild(nodes[i].cloneNode(true)); + + nodes[i].parentNode.removeChild(nodes[i]); + } + + // Add wrapper + doc.body.appendChild(wrapper); + + // Create iframe + iframe = document.createElement("iframe"); + iframe.id = "mcWinIframe"; + iframe.src = document.location.href.toLowerCase().indexOf('https') == -1 ? "about:blank" : tinyMCE.settings['default_document']; + iframe.width = "100%"; + iframe.height = "100%"; + iframe.style.margin = '0'; + + // Add iframe + doc.body.appendChild(iframe); + + // Measure iframe + iframe = document.getElementById('mcWinIframe'); + dx = tinyMCE.getWindowArg('mce_width') - iframe.clientWidth; + dy = tinyMCE.getWindowArg('mce_height') - iframe.clientHeight; + + // Resize window + // tinyMCE.debug(tinyMCE.getWindowArg('mce_width') + "," + tinyMCE.getWindowArg('mce_height') + " - " + dx + "," + dy); + window.resizeBy(dx, dy); + + // Hide iframe and show wrapper + body.style.margin = oldMargin; + iframe.style.display = 'none'; + wrapper.style.display = 'block'; + } + }, + + resizeToContent : function() { + var isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + var isOpera = (navigator.userAgent.indexOf("Opera") != -1); + + if (isOpera) + return; + + if (isMSIE) { + try { window.resizeTo(10, 10); } catch (e) {} + + var elm = document.body; + var width = elm.offsetWidth; + var height = elm.offsetHeight; + var dx = (elm.scrollWidth - width) + 4; + var dy = elm.scrollHeight - height; + + try { window.resizeBy(dx, dy); } catch (e) {} + } else { + window.scrollBy(1000, 1000); + if (window.scrollX > 0 || window.scrollY > 0) { + window.resizeBy(window.innerWidth * 2, window.innerHeight * 2); + window.sizeToContent(); + window.scrollTo(0, 0); + var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0); + var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0); + window.moveTo(x, y); + } + } + }, + + getWindowArg : function(name, default_value) { + return tinyMCE.getWindowArg(name, default_value); + }, + + restoreSelection : function() { + if (this.storeSelection) { + var inst = tinyMCE.selectedInstance; + + inst.getWin().focus(); + + if (inst.selectionBookmark) + inst.selection.moveToBookmark(inst.selectionBookmark); + } + }, + + execCommand : function(command, user_interface, value) { + var inst = tinyMCE.selectedInstance; + + this.restoreSelection(); + inst.execCommand(command, user_interface, value); + + // Store selection + if (this.storeSelection) + inst.selectionBookmark = inst.selection.getBookmark(true); + }, + + close : function() { + tinyMCE.closeWindow(window); + }, + + pickColor : function(e, element_id) { + tinyMCE.selectedInstance.execCommand('mceColorPicker', true, { + element_id : element_id, + document : document, + window : window, + store_selection : false + }); + }, + + openBrowser : function(element_id, type, option) { + var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); + var url = document.getElementById(element_id).value; + + tinyMCE.setWindowArg("window", window); + tinyMCE.setWindowArg("document", document); + + // Call to external callback + if (eval('typeof(tinyMCEPopup.windowOpener.' + cb + ')') == "undefined") + alert("Callback function: " + cb + " could not be found."); + else + eval("tinyMCEPopup.windowOpener." + cb + "(element_id, url, type, window);"); + }, + + importClass : function(c) { + window[c] = function() {}; + + for (var n in window.opener[c].prototype) + window[c].prototype[n] = window.opener[c].prototype[n]; + + window[c].constructor = window.opener[c].constructor; + } + + }; + +// Setup global instance +var tinyMCEPopup = new TinyMCE_Popup(); + +tinyMCEPopup.init(); diff --git a/admin/scripts/tiny_mce/tiny_mce_src.js b/admin/scripts/tiny_mce/tiny_mce_src.js new file mode 100644 index 0000000..9f8de6e --- /dev/null +++ b/admin/scripts/tiny_mce/tiny_mce_src.js @@ -0,0 +1,7492 @@ + +/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */ + +function TinyMCE_Engine() { + var ua; + + this.majorVersion = "2"; + this.minorVersion = "1.0"; + this.releaseDate = "2007-02-13"; + + this.instances = new Array(); + this.switchClassCache = new Array(); + this.windowArgs = new Array(); + this.loadedFiles = new Array(); + this.pendingFiles = new Array(); + this.loadingIndex = 0; + this.configs = new Array(); + this.currentConfig = 0; + this.eventHandlers = new Array(); + this.log = new Array(); + this.undoLevels = []; + this.undoIndex = 0; + this.typingUndoIndex = -1; + + // Browser check + ua = navigator.userAgent; + this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); + this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1); + this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1); + this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1); + this.isGecko = ua.indexOf('Gecko') != -1; + this.isSafari = ua.indexOf('Safari') != -1; + this.isOpera = ua.indexOf('Opera') != -1; + this.isMac = ua.indexOf('Mac') != -1; + this.isNS7 = ua.indexOf('Netscape/7') != -1; + this.isNS71 = ua.indexOf('Netscape/7.1') != -1; + this.dialogCounter = 0; + this.plugins = new Array(); + this.themes = new Array(); + this.menus = new Array(); + this.loadedPlugins = new Array(); + this.buttonMap = new Array(); + this.isLoaded = false; + + // Fake MSIE on Opera and if Opera fakes IE, Gecko or Safari cancel those + if (this.isOpera) { + this.isMSIE = true; + this.isGecko = false; + this.isSafari = false; + } + + this.isIE = this.isMSIE; + this.isRealIE = this.isMSIE && !this.isOpera; + + // TinyMCE editor id instance counter + this.idCounter = 0; +}; + +TinyMCE_Engine.prototype = { + init : function(settings) { + var theme, nl, baseHREF = "", i; + + // IE 5.0x is no longer supported since 5.5, 6.0 and 7.0 now exists. We can't support old browsers forever, sorry. + if (this.isMSIE5_0) + return; + + this.settings = settings; + + // Check if valid browser has execcommand support + if (typeof(document.execCommand) == 'undefined') + return; + + // Get script base path + if (!tinyMCE.baseURL) { + var elements = document.getElementsByTagName('script'); + + // If base element found, add that infront of baseURL + nl = document.getElementsByTagName('base'); + for (i=0; i'); + this._def("font_size_classes", ''); + this._def("font_size_style_values", 'xx-small,x-small,small,medium,large,x-large,xx-large', true); + this._def("event_elements", 'a,img', true); + this._def("convert_urls", true); + this._def("table_inline_editing", false); + this._def("object_resizing", true); + this._def("custom_shortcuts", true); + this._def("convert_on_click", false); + this._def("content_css", ''); + this._def("fix_list_elements", true); + this._def("fix_table_elements", false); + this._def("strict_loading_mode", document.contentType == 'application/xhtml+xml'); + this._def("hidden_tab_class", ''); + this._def("display_tab_class", ''); + this._def("gecko_spellcheck", false); + this._def("hide_selects_on_submit", true); + + // Force strict loading mode to false on non Gecko browsers + if (this.isMSIE && !this.isOpera) + this.settings.strict_loading_mode = false; + + // Browser check IE + if (this.isMSIE && this.settings['browsers'].indexOf('msie') == -1) + return; + + // Browser check Gecko + if (this.isGecko && this.settings['browsers'].indexOf('gecko') == -1) + return; + + // Browser check Safari + if (this.isSafari && this.settings['browsers'].indexOf('safari') == -1) + return; + + // Browser check Opera + if (this.isOpera && this.settings['browsers'].indexOf('opera') == -1) + return; + + // If not super absolute make it so + baseHREF = tinyMCE.settings['document_base_url']; + var h = document.location.href; + var p = h.indexOf('://'); + if (p > 0 && document.location.protocol != "file:") { + p = h.indexOf('/', p + 3); + h = h.substring(0, p); + + if (baseHREF.indexOf('://') == -1) + baseHREF = h + baseHREF; + + tinyMCE.settings['document_base_url'] = baseHREF; + tinyMCE.settings['document_base_prefix'] = h; + } + + // Trim away query part + if (baseHREF.indexOf('?') != -1) + baseHREF = baseHREF.substring(0, baseHREF.indexOf('?')); + + this.settings['base_href'] = baseHREF.substring(0, baseHREF.lastIndexOf('/')) + "/"; + + theme = this.settings['theme']; + this.inlineStrict = 'A|BR|SPAN|BDO|MAP|OBJECT|IMG|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|#text|#comment'; + this.inlineTransitional = 'A|BR|SPAN|BDO|OBJECT|APPLET|IMG|MAP|IFRAME|TT|I|B|U|S|STRIKE|BIG|SMALL|FONT|BASEFONT|EM|STRONG|DFN|CODE|Q|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|SUB|SUP|INPUT|SELECT|TEXTAREA|LABEL|BUTTON|#text|#comment'; + this.blockElms = 'H[1-6]|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TD|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|FORM|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP'; + this.blockRegExp = new RegExp("^(" + this.blockElms + ")$", "i"); + this.posKeyCodes = new Array(13,45,36,35,33,34,37,38,39,40); + this.uniqueURL = 'javascript:void(091039730);'; // Make unique URL non real URL + this.uniqueTag = ''; + this.callbacks = new Array('onInit', 'getInfo', 'getEditorTemplate', 'setupContent', 'onChange', 'onPageLoad', 'handleNodeChange', 'initInstance', 'execCommand', 'getControlHTML', 'handleEvent', 'cleanup', 'removeInstance'); + + // Theme url + this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme; + + if (!tinyMCE.isIE || tinyMCE.isOpera) + this.settings['force_br_newlines'] = false; + + if (tinyMCE.getParam("popups_css", false)) { + var cssPath = tinyMCE.getParam("popups_css", ""); + + // Is relative + if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') + this.settings['popups_css'] = this.documentBasePath + "/" + cssPath; + else + this.settings['popups_css'] = cssPath; + } else + this.settings['popups_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_popup.css"; + + if (tinyMCE.getParam("editor_css", false)) { + var cssPath = tinyMCE.getParam("editor_css", ""); + + // Is relative + if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/') + this.settings['editor_css'] = this.documentBasePath + "/" + cssPath; + else + this.settings['editor_css'] = cssPath; + } else { + if (this.settings.editor_css != '') + this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/css/editor_ui.css"; + } + + if (tinyMCE.settings['debug']) { + var msg = "Debug: \n"; + + msg += "baseURL: " + this.baseURL + "\n"; + msg += "documentBasePath: " + this.documentBasePath + "\n"; + msg += "content_css: " + this.settings['content_css'] + "\n"; + msg += "popups_css: " + this.settings['popups_css'] + "\n"; + msg += "editor_css: " + this.settings['editor_css'] + "\n"; + + alert(msg); + } + + // Only do this once + if (this.configs.length == 0) { + if (typeof(TinyMCECompressed) == "undefined") { + tinyMCE.addEvent(window, "DOMContentLoaded", TinyMCE_Engine.prototype.onLoad); + + if (tinyMCE.isRealIE) { + if (document.body) + tinyMCE.addEvent(document.body, "readystatechange", TinyMCE_Engine.prototype.onLoad); + else + tinyMCE.addEvent(document, "readystatechange", TinyMCE_Engine.prototype.onLoad); + } + + tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad); + tinyMCE._addUnloadEvents(); + } + } + + this.loadScript(tinyMCE.baseURL + '/themes/' + this.settings['theme'] + '/editor_template' + tinyMCE.srcMode + '.js'); + this.loadScript(tinyMCE.baseURL + '/langs/' + this.settings['language'] + '.js'); + this.loadCSS(this.settings['editor_css']); + + // Add plugins + var p = tinyMCE.getParam('plugins', '', true, ','); + if (p.length > 0) { + for (var i=0; i&"\']', 'g'); + this.xmlEncodeRe = new RegExp('[<>&"]', 'g'); +// this.xmlEncodeEnts = {'&':'&','"':'"',"'":''','<':'<','>':'>'}; + }, + + _addUnloadEvents : function() { + if (tinyMCE.isIE) { + if (tinyMCE.settings['add_unload_trigger']) { + tinyMCE.addEvent(window, "unload", TinyMCE_Engine.prototype.unloadHandler); + tinyMCE.addEvent(window.document, "beforeunload", TinyMCE_Engine.prototype.unloadHandler); + } + } else { + if (tinyMCE.settings['add_unload_trigger']) + tinyMCE.addEvent(window, "unload", function () {tinyMCE.triggerSave(true, true);}); + } + }, + + _def : function(key, def_val, t) { + var v = tinyMCE.getParam(key, def_val); + + v = t ? v.replace(/\s+/g, "") : v; + + this.settings[key] = v; + }, + + hasPlugin : function(n) { + return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; + }, + + addPlugin : function(n, p) { + var op = this.plugins[n]; + + // Use the previous plugin object base URL used when loading external plugins + p.baseURL = op ? op.baseURL : tinyMCE.baseURL + "/plugins/" + n; + this.plugins[n] = p; + + this.loadNextScript(); + }, + + setPluginBaseURL : function(n, u) { + var op = this.plugins[n]; + + if (op) + op.baseURL = u; + else + this.plugins[n] = {baseURL : u}; + }, + + loadPlugin : function(n, u) { + u = u.indexOf('.js') != -1 ? u.substring(0, u.lastIndexOf('/')) : u; + u = u.charAt(u.length-1) == '/' ? u.substring(0, u.length-1) : u; + this.plugins[n] = {baseURL : u}; + this.loadScript(u + "/editor_plugin" + (tinyMCE.srcMode ? '_src' : '') + ".js"); + }, + + hasTheme : function(n) { + return typeof(this.themes[n]) != "undefined" && this.themes[n] != null; + }, + + addTheme : function(n, t) { + this.themes[n] = t; + + this.loadNextScript(); + }, + + addMenu : function(n, m) { + this.menus[n] = m; + }, + + hasMenu : function(n) { + return typeof(this.plugins[n]) != "undefined" && this.plugins[n] != null; + }, + + loadScript : function(url) { + var i; + + for (i=0; i'); + + this.loadedFiles[this.loadedFiles.length] = url; + }, + + loadNextScript : function() { + var d = document, se; + + if (!tinyMCE.settings.strict_loading_mode) + return; + + if (this.loadingIndex < this.pendingFiles.length) { + se = d.createElementNS('http://www.w3.org/1999/xhtml', 'script'); + se.setAttribute('language', 'javascript'); + se.setAttribute('type', 'text/javascript'); + se.setAttribute('src', this.pendingFiles[this.loadingIndex++]); + + d.getElementsByTagName("head")[0].appendChild(se); + } else + this.loadingIndex = -1; // Done with loading + }, + + loadCSS : function(url) { + var ar = url.replace(/\s+/, '').split(','); + var lflen = 0, csslen = 0; + var skip = false; + var x = 0, i = 0, nl, le; + + for (x = 0,csslen = ar.length; x 0) { + /* Make sure it doesn't exist. */ + for (i=0, lflen=this.loadedFiles.length; i'); + + this.loadedFiles[this.loadedFiles.length] = ar[x]; + } + } + } + }, + + importCSS : function(doc, css) { + var css_ary = css.replace(/\s+/, '').split(','); + var csslen, elm, headArr, x, css_file; + + for (x = 0, csslen = css_ary.length; x 0) { + // Is relative, make absolute + if (css_file.indexOf('://') == -1 && css_file.charAt(0) != '/') + css_file = this.documentBasePath + "/" + css_file; + + if (typeof(doc.createStyleSheet) == "undefined") { + elm = doc.createElement("link"); + + elm.rel = "stylesheet"; + elm.href = css_file; + + if ((headArr = doc.getElementsByTagName("head")) != null && headArr.length > 0) + headArr[0].appendChild(elm); + } else + doc.createStyleSheet(css_file); + } + } + }, + + confirmAdd : function(e, settings) { + var elm = tinyMCE.isIE ? event.srcElement : e.target; + var elementId = elm.name ? elm.name : elm.id; + + tinyMCE.settings = settings; + + if (tinyMCE.settings['convert_on_click'] || (!elm.getAttribute('mce_noask') && confirm(tinyMCELang['lang_edit_confirm']))) + tinyMCE.addMCEControl(elm, elementId); + + elm.setAttribute('mce_noask', 'true'); + }, + + updateContent : function(form_element_name) { + // Find MCE instance linked to given form element and copy it's value + var formElement = document.getElementById(form_element_name); + for (var n in tinyMCE.instances) { + var inst = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(inst)) + continue; + + inst.switchSettings(); + + if (inst.formElement == formElement) { + var doc = inst.getDoc(); + + tinyMCE._setHTML(doc, inst.formElement.value); + + if (!tinyMCE.isIE) + doc.body.innerHTML = tinyMCE._cleanupHTML(inst, doc, this.settings, doc.body, inst.visualAid); + } + } + }, + + addMCEControl : function(replace_element, form_element_name, target_document) { + var id = "mce_editor_" + tinyMCE.idCounter++; + var inst = new TinyMCE_Control(tinyMCE.settings); + + inst.editorId = id; + this.instances[id] = inst; + + inst._onAdd(replace_element, form_element_name, target_document); + }, + + removeInstance : function(ti) { + var t = [], n, i; + + // Remove from instances + for (n in tinyMCE.instances) { + i = tinyMCE.instances[n]; + + if (tinyMCE.isInstance(i) && ti != i) + t[n] = i; + } + + tinyMCE.instances = t; + + // Remove from global undo/redo + n = []; + t = tinyMCE.undoLevels; + + for (i=0; i 0) { + tinyMCE.nextUndoRedoAction = 'Undo'; + inst = this.undoLevels[--this.undoIndex]; + inst.select(); + + if (!tinyMCE.nextUndoRedoInstanceId) + inst.execCommand('Undo'); + } + } else + inst.execCommand('Undo'); + return true; + + case "Redo": + if (this.getParam('custom_undo_redo_global')) { + if (this.undoIndex <= this.undoLevels.length - 1) { + tinyMCE.nextUndoRedoAction = 'Redo'; + inst = this.undoLevels[this.undoIndex++]; + inst.select(); + + if (!tinyMCE.nextUndoRedoInstanceId) + inst.execCommand('Redo'); + } + } else + inst.execCommand('Redo'); + + return true; + + case 'mceFocus': + var inst = tinyMCE.getInstanceById(value); + if (inst) + inst.getWin().focus(); + return; + + case "mceAddControl": + case "mceAddEditor": + tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); + return; + + case "mceAddFrameControl": + tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'], value['document']), value['element'], value['document']); + return; + + case "mceRemoveControl": + case "mceRemoveEditor": + tinyMCE.removeMCEControl(value); + return; + + case "mceToggleEditor": + var inst = tinyMCE.getInstanceById(value), pe, te; + + if (inst) { + pe = document.getElementById(inst.editorId + '_parent'); + te = inst.oldTargetElement; + + if (typeof(inst.enabled) == 'undefined') + inst.enabled = true; + + inst.enabled = !inst.enabled; + + if (!inst.enabled) { + pe.style.display = 'none'; + te.value = inst.getHTML(); + te.style.display = inst.oldTargetDisplay; + tinyMCE.dispatchCallback(inst, 'hide_instance_callback', 'hideInstance', inst); + } else { + pe.style.display = 'block'; + te.style.display = 'none'; + inst.setHTML(te.value); + inst.useCSS = false; + tinyMCE.dispatchCallback(inst, 'show_instance_callback', 'showInstance', inst); + } + } else + tinyMCE.addMCEControl(tinyMCE._getElementById(value), value); + + return; + + case "mceResetDesignMode": + // Resets the designmode state of the editors in Gecko + if (!tinyMCE.isIE) { + for (var n in tinyMCE.instances) { + if (!tinyMCE.isInstance(tinyMCE.instances[n])) + continue; + + try { + tinyMCE.instances[n].getDoc().designMode = "on"; + } catch (e) { + // Ignore any errors + } + } + } + + return; + } + + if (inst) { + inst.execCommand(command, user_interface, value); + } else if (tinyMCE.settings['focus_alert']) + alert(tinyMCELang['lang_focus_alert']); + }, + + _createIFrame : function(replace_element, doc, win) { + var iframe, id = replace_element.getAttribute("id"); + var aw, ah; + + if (typeof(doc) == "undefined") + doc = document; + + if (typeof(win) == "undefined") + win = window; + + iframe = doc.createElement("iframe"); + + aw = "" + tinyMCE.settings['area_width']; + ah = "" + tinyMCE.settings['area_height']; + + if (aw.indexOf('%') == -1) { + aw = parseInt(aw); + aw = (isNaN(aw) || aw < 0) ? 300 : aw; + aw = aw + "px"; + } + + if (ah.indexOf('%') == -1) { + ah = parseInt(ah); + ah = (isNaN(ah) || ah < 0) ? 240 : ah; + ah = ah + "px"; + } + + iframe.setAttribute("id", id); + iframe.setAttribute("name", id); + iframe.setAttribute("class", "mceEditorIframe"); + iframe.setAttribute("border", "0"); + iframe.setAttribute("frameBorder", "0"); + iframe.setAttribute("marginWidth", "0"); + iframe.setAttribute("marginHeight", "0"); + iframe.setAttribute("leftMargin", "0"); + iframe.setAttribute("topMargin", "0"); + iframe.setAttribute("width", aw); + iframe.setAttribute("height", ah); + iframe.setAttribute("allowtransparency", "true"); + iframe.className = 'mceEditorIframe'; + + if (tinyMCE.settings["auto_resize"]) + iframe.setAttribute("scrolling", "no"); + + // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs + if (tinyMCE.isRealIE) + iframe.setAttribute("src", this.settings['default_document']); + + iframe.style.width = aw; + iframe.style.height = ah; + + // Ugly hack for Gecko problem in strict mode + if (tinyMCE.settings.strict_loading_mode) + iframe.style.marginBottom = '-5px'; + + // MSIE 5.0 issue + if (tinyMCE.isRealIE) + replace_element.outerHTML = iframe.outerHTML; + else + replace_element.parentNode.replaceChild(iframe, replace_element); + + if (tinyMCE.isRealIE) + return win.frames[id]; + else + return iframe; + }, + + setupContent : function(editor_id) { + var inst = tinyMCE.instances[editor_id], i; + var doc = inst.getDoc(); + var head = doc.getElementsByTagName('head').item(0); + var content = inst.startContent; + + // HTML values get XML encoded in strict mode + if (tinyMCE.settings.strict_loading_mode) { + content = content.replace(/</g, '<'); + content = content.replace(/>/g, '>'); + content = content.replace(/"/g, '"'); + content = content.replace(/&/g, '&'); + } + + tinyMCE.selectedInstance = inst; + inst.switchSettings(); + + // Not loaded correctly hit it again, Mozilla bug #997860 + if (!tinyMCE.isIE && tinyMCE.getParam("setupcontent_reload", false) && doc.title != "blank_page") { + // This part will remove the designMode status + // Failes first time in Firefox 1.5b2 on Mac + try {doc.location.href = tinyMCE.baseURL + "/blank.htm";} catch (ex) {} + window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 1000); + return; + } + + if (!head) { + window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", 10); + return; + } + + // Import theme specific content CSS the user specific + tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL + "/themes/" + inst.settings['theme'] + "/css/editor_content.css"); + tinyMCE.importCSS(inst.getDoc(), inst.settings['content_css']); + tinyMCE.dispatchCallback(inst, 'init_instance_callback', 'initInstance', inst); + + // Setup keyboard shortcuts + if (tinyMCE.getParam('custom_undo_redo_keyboard_shortcuts')) { + inst.addShortcut('ctrl', 'z', 'lang_undo_desc', 'Undo'); + inst.addShortcut('ctrl', 'y', 'lang_redo_desc', 'Redo'); + } + + // BlockFormat shortcuts keys + for (i=1; i<=6; i++) + inst.addShortcut('ctrl', '' + i, '', 'FormatBlock', false, ''); + + inst.addShortcut('ctrl', '7', '', 'FormatBlock', false, '

'); + inst.addShortcut('ctrl', '8', '', 'FormatBlock', false, '

'); + inst.addShortcut('ctrl', '9', '', 'FormatBlock', false, '
'); + + // Add default shortcuts for gecko + if (tinyMCE.isGecko) { + inst.addShortcut('ctrl', 'b', 'lang_bold_desc', 'Bold'); + inst.addShortcut('ctrl', 'i', 'lang_italic_desc', 'Italic'); + inst.addShortcut('ctrl', 'u', 'lang_underline_desc', 'Underline'); + } + + // Setup span styles + if (tinyMCE.getParam("convert_fonts_to_spans")) + inst.getBody().setAttribute('id', 'mceSpanFonts'); + + if (tinyMCE.settings['nowrap']) + doc.body.style.whiteSpace = "nowrap"; + + doc.body.dir = this.settings['directionality']; + doc.editorId = editor_id; + + // Add on document element in Mozilla + if (!tinyMCE.isIE) + doc.documentElement.editorId = editor_id; + + inst.setBaseHREF(tinyMCE.settings['base_href']); + + // Replace new line characters to BRs + if (tinyMCE.settings['convert_newlines_to_brs']) { + content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\r", "
", "gi"); + content = tinyMCE.regexpReplace(content, "\n", "
", "gi"); + } + + // Open closed anchors + // content = content.replace(new RegExp('', 'gi'), ''); + + // Call custom cleanup code + content = tinyMCE.storeAwayURLs(content); + content = tinyMCE._customCleanup(inst, "insert_to_editor", content); + + if (tinyMCE.isIE) { + // Ugly!!! + window.setInterval('try{tinyMCE.getCSSClasses(tinyMCE.instances["' + editor_id + '"].getDoc(), "' + editor_id + '");}catch(e){}', 500); + + if (tinyMCE.settings["force_br_newlines"]) + doc.styleSheets[0].addRule("p", "margin: 0;"); + + var body = inst.getBody(); + body.editorId = editor_id; + } + + content = tinyMCE.cleanupHTMLCode(content); + + // Fix for bug #958637 + if (!tinyMCE.isIE) { + var contentElement = inst.getDoc().createElement("body"); + var doc = inst.getDoc(); + + contentElement.innerHTML = content; + + // Remove weridness! + if (tinyMCE.isGecko && tinyMCE.settings['remove_lt_gt']) + content = content.replace(new RegExp('<>', 'g'), ""); + + if (tinyMCE.settings['cleanup_on_startup']) + tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, doc, this.settings, contentElement)); + else + tinyMCE.setInnerHTML(inst.getBody(), content); + + tinyMCE.convertAllRelativeURLs(inst.getBody()); + } else { + if (tinyMCE.settings['cleanup_on_startup']) { + tinyMCE._setHTML(inst.getDoc(), content); + + // Produces permission denied error in MSIE 5.5 + eval('try {tinyMCE.setInnerHTML(inst.getBody(), tinyMCE._cleanupHTML(inst, inst.contentDocument, this.settings, inst.getBody()));} catch(e) {}'); + } else + tinyMCE._setHTML(inst.getDoc(), content); + } + + // Fix for bug #957681 + //inst.getDoc().designMode = inst.getDoc().designMode; + + tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual'], inst); + tinyMCE.dispatchCallback(inst, 'setupcontent_callback', 'setupContent', editor_id, inst.getBody(), inst.getDoc()); + + // Re-add design mode on mozilla + if (!tinyMCE.isIE) + tinyMCE.addEventHandlers(inst); + + // Add blur handler + if (tinyMCE.isIE) { + tinyMCE.addEvent(inst.getBody(), "blur", TinyMCE_Engine.prototype._eventPatch); + tinyMCE.addEvent(inst.getBody(), "beforedeactivate", TinyMCE_Engine.prototype._eventPatch); // Bug #1439953 + + // Workaround for drag drop/copy paste base href bug + if (!tinyMCE.isOpera) { + tinyMCE.addEvent(doc.body, "mousemove", TinyMCE_Engine.prototype.onMouseMove); + tinyMCE.addEvent(doc.body, "beforepaste", TinyMCE_Engine.prototype._eventPatch); + tinyMCE.addEvent(doc.body, "drop", TinyMCE_Engine.prototype._eventPatch); + } + } + + // Trigger node change, this call locks buttons for tables and so forth + inst.select(); + tinyMCE.selectedElement = inst.contentWindow.document.body; + + // Call custom DOM cleanup + tinyMCE._customCleanup(inst, "insert_to_editor_dom", inst.getBody()); + tinyMCE._customCleanup(inst, "setup_content_dom", inst.getBody()); + tinyMCE._setEventsEnabled(inst.getBody(), false); + tinyMCE.cleanupAnchors(inst.getDoc()); + + if (tinyMCE.getParam("convert_fonts_to_spans")) + tinyMCE.convertSpansToFonts(inst.getDoc()); + + inst.startContent = tinyMCE.trim(inst.getBody().innerHTML); + inst.undoRedo.add({ content : inst.startContent }); + + // Cleanup any mess left from storyAwayURLs + if (tinyMCE.isGecko) { + // Remove mce_src from textnodes and comments + tinyMCE.selectNodes(inst.getBody(), function(n) { + if (n.nodeType == 3 || n.nodeType == 8) + n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); + + return false; + }); + } + + // Remove Gecko spellchecking + if (tinyMCE.isGecko) + inst.getBody().spellcheck = tinyMCE.getParam("gecko_spellcheck"); + + // Cleanup any mess left from storyAwayURLs + tinyMCE._removeInternal(inst.getBody()); + + inst.select(); + tinyMCE.triggerNodeChange(false, true); + }, + + storeAwayURLs : function(s) { + // Remove all mce_src, mce_href and replace them with new ones + // s = s.replace(new RegExp('mce_src\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); + // s = s.replace(new RegExp('mce_href\\s*=\\s*\"[^ >\"]*\"', 'gi'), ''); + + if (!s.match(/(mce_src|mce_href)/gi, s)) { + s = s.replace(new RegExp('src\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'src="$1" mce_src="$1"'); + s = s.replace(new RegExp('href\\s*=\\s*\"([^ >\"]*)\"', 'gi'), 'href="$1" mce_href="$1"'); + } + + return s; + }, + + _removeInternal : function(n) { + if (tinyMCE.isGecko) { + // Remove mce_src from textnodes and comments + tinyMCE.selectNodes(n, function(n) { + if (n.nodeType == 3 || n.nodeType == 8) + n.nodeValue = n.nodeValue.replace(new RegExp('\\s(mce_src|mce_href)=\"[^\"]*\"', 'gi'), ""); + + return false; + }); + } + }, + + removeTinyMCEFormElements : function(form_obj) { + var i, elementId; + + // Skip form element removal + if (!tinyMCE.getParam('hide_selects_on_submit')) + return; + + // Check if form is valid + if (typeof(form_obj) == "undefined" || form_obj == null) + return; + + // If not a form, find the form + if (form_obj.nodeName != "FORM") { + if (form_obj.form) + form_obj = form_obj.form; + else + form_obj = tinyMCE.getParentElement(form_obj, "form"); + } + + // Still nothing + if (form_obj == null) + return; + + // Disable all UI form elements that TinyMCE created + for (i=0; i"); + rng.collapse(false); + rng.select(); + + tinyMCE.execCommand("mceAddUndoLevel"); + tinyMCE.triggerNodeChange(false); + return false; + } + } + + // Backspace or delete + if (e.keyCode == 8 || e.keyCode == 46) { + tinyMCE.selectedElement = e.target; + tinyMCE.linkElement = tinyMCE.getParentElement(e.target, "a"); + tinyMCE.imgElement = tinyMCE.getParentElement(e.target, "img"); + tinyMCE.triggerNodeChange(false); + } + + return false; + break; + + case "keyup": + case "keydown": + tinyMCE.hideMenus(); + tinyMCE.hasMouseMoved = false; + + if (inst && inst.handleShortcut(e)) + return false; + + if (e.target.editorId) + tinyMCE.instances[e.target.editorId].select(); + + if (tinyMCE.selectedInstance) + tinyMCE.selectedInstance.switchSettings(); + + var inst = tinyMCE.selectedInstance; + + // Handle backspace + if (tinyMCE.isGecko && tinyMCE.settings['force_p_newlines'] && (e.keyCode == 8 || e.keyCode == 46) && !e.shiftKey) { + // Insert P element instead of BR + if (TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance, e.type)) { + // Cancel event + tinyMCE.execCommand("mceAddUndoLevel"); + e.preventDefault(); + return false; + } + } + + tinyMCE.selectedElement = null; + tinyMCE.selectedNode = null; + var elm = tinyMCE.selectedInstance.getFocusElement(); + tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a"); + tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img"); + tinyMCE.selectedElement = elm; + + // Update visualaids on tabs + if (tinyMCE.isGecko && e.type == "keyup" && e.keyCode == 9) + tinyMCE.handleVisualAid(tinyMCE.selectedInstance.getBody(), true, tinyMCE.settings['visual'], tinyMCE.selectedInstance); + + // Fix empty elements on return/enter, check where enter occured + if (tinyMCE.isIE && e.type == "keydown" && e.keyCode == 13) + tinyMCE.enterKeyElement = tinyMCE.selectedInstance.getFocusElement(); + + // Fix empty elements on return/enter + if (tinyMCE.isIE && e.type == "keyup" && e.keyCode == 13) { + var elm = tinyMCE.enterKeyElement; + if (elm) { + var re = new RegExp('^HR|IMG|BR$','g'); // Skip these + var dre = new RegExp('^H[1-6]$','g'); // Add double on these + + if (!elm.hasChildNodes() && !re.test(elm.nodeName)) { + if (dre.test(elm.nodeName)) + elm.innerHTML = "  "; + else + elm.innerHTML = " "; + } + } + } + + // Check if it's a position key + var keys = tinyMCE.posKeyCodes; + var posKey = false; + for (var i=0; i'; + h += ''; + h += ''; + } else { + // Normal button + h += ''; + h += ''; + h += ''; + } + + return h; + }, + + getMenuButtonHTML : function(id, lang, img, mcmd, cmd, ui, val) { + var h = '', m, x; + + mcmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + mcmd + '\');'; + cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd + '\''; + + if (typeof(ui) != "undefined" && ui != null) + cmd += ',' + ui; + + if (typeof(val) != "undefined" && val != null) + cmd += ",'" + val + "'"; + + cmd += ');'; + + // Use tilemaps when enabled and found and never in MSIE since it loads the tile each time from cache if cahce is disabled + if (tinyMCE.getParam('button_tile_map') && (!tinyMCE.isIE || tinyMCE.isOpera) && (m = tinyMCE.buttonMap[id]) != null && (tinyMCE.getParam("language") == "en" || img.indexOf('$lang') == -1)) { + x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20); + + if (tinyMCE.isRealIE) + h += ''; + else + h += ''; + + h += ''; + h += ''; + h += ''; + h += ''; + } else { + if (tinyMCE.isRealIE) + h += ''; + else + h += ''; + + h += ''; + h += ''; + h += ''; + h += ''; + } + + return h; + }, + + _menuButtonEvent : function(e, o) { + if (o.className == 'mceMenuButtonFocus') + return; + + if (e == 'over') + o.className = o.className + ' mceMenuHover'; + else + o.className = o.className.replace(/\s.*$/, ''); + }, + + addButtonMap : function(m) { + var i, a = m.replace(/\s+/, '').split(','); + + for (i=0; i 0); + + if (tinyMCE.settings['custom_undo_redo']) { + undoIndex = inst.undoRedo.undoIndex; + undoLevels = inst.undoRedo.undoLevels.length; + } + + tinyMCE.dispatchCallback(inst, 'handle_node_change_callback', 'handleNodeChange', editorId, elm, undoIndex, undoLevels, inst.visualAid, anySelection, setup_content); + } + + if (this.selectedInstance && (typeof(focus) == "undefined" || focus)) + this.selectedInstance.contentWindow.focus(); + }, + + _customCleanup : function(inst, type, content) { + var pl, po, i; + + // Call custom cleanup + var customCleanup = tinyMCE.settings['cleanup_callback']; + if (customCleanup != "" && eval("typeof(" + customCleanup + ")") != "undefined") + content = eval(customCleanup + "(type, content, inst);"); + + // Trigger theme cleanup + po = tinyMCE.themes[tinyMCE.settings['theme']]; + if (po && po.cleanup) + content = po.cleanup(type, content, inst); + + // Trigger plugin cleanups + pl = inst.plugins; + for (i=0; i 0) + className += " "; + + className += classNames[i]; + } + + return className; + }, + + handleVisualAid : function(el, deep, state, inst, skip_dispatch) { + if (!el) + return; + + if (!skip_dispatch) + tinyMCE.dispatchCallback(inst, 'handle_visual_aid_callback', 'handleVisualAid', el, deep, state, inst); + + var tableElement = null; + + switch (el.nodeName) { + case "TABLE": + var oldW = el.style.width; + var oldH = el.style.height; + var bo = tinyMCE.getAttrib(el, "border"); + + bo = bo == "" || bo == "0" ? true : false; + + tinyMCE.setAttrib(el, "class", tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el, "class"), state && bo)); + + el.style.width = oldW; + el.style.height = oldH; + + for (var y=0; y<\/o:p>", "
"); + html = tinyMCE.regexpReplace(html, " <\/o:p>", ""); + html = tinyMCE.regexpReplace(html, "", ""); + html = tinyMCE.regexpReplace(html, "

<\/p>", ""); + html = tinyMCE.regexpReplace(html, "

<\/p>\r\n

<\/p>", ""); + html = tinyMCE.regexpReplace(html, "

 <\/p>", "
"); + html = tinyMCE.regexpReplace(html, "

\s*(

\s*)?", "

"); + html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?", "

"); + }*/ + + // Always set the htmlText output + tinyMCE.setInnerHTML(doc.body, html); + } + + tinyMCE.cleanupAnchors(doc); + + if (tinyMCE.getParam("convert_fonts_to_spans")) + tinyMCE.convertSpansToFonts(doc); + }, + + getEditorId : function(form_element) { + var inst = this.getInstanceById(form_element); + if (!inst) + return null; + + return inst.editorId; + }, + + getInstanceById : function(editor_id) { + var inst = this.instances[editor_id]; + if (!inst) { + for (var n in tinyMCE.instances) { + var instance = tinyMCE.instances[n]; + if (!tinyMCE.isInstance(instance)) + continue; + + if (instance.formTargetElementId == editor_id) { + inst = instance; + break; + } + } + } + + return inst; + }, + + queryInstanceCommandValue : function(editor_id, command) { + var inst = tinyMCE.getInstanceById(editor_id); + if (inst) + return inst.queryCommandValue(command); + + return false; + }, + + queryInstanceCommandState : function(editor_id, command) { + var inst = tinyMCE.getInstanceById(editor_id); + if (inst) + return inst.queryCommandState(command); + + return null; + }, + + setWindowArg : function(n, v) { + this.windowArgs[n] = v; + }, + + getWindowArg : function(n, d) { + return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n]; + }, + + getCSSClasses : function(editor_id, doc) { + var inst = tinyMCE.getInstanceById(editor_id); + + // Is cached, use that + if (inst && inst.cssClasses.length > 0) + return inst.cssClasses; + + if (typeof(editor_id) == "undefined" && typeof(doc) == "undefined") { + var instance; + + for (var instanceName in tinyMCE.instances) { + instance = tinyMCE.instances[instanceName]; + if (!tinyMCE.isInstance(instance)) + continue; + + break; + } + + doc = instance.getDoc(); + } + + if (typeof(doc) == "undefined") { + var instance = tinyMCE.getInstanceById(editor_id); + doc = instance.getDoc(); + } + + if (doc) { + var styles = doc.styleSheets; + + if (styles && styles.length > 0) { + for (var x=0; x' + tinyMCE.replaceVar(v, "pluginurl", o.baseURL) + '
'; + + return tinyMCE.replaceVar(v, "pluginurl", o.baseURL); + } + } + + o = tinyMCE.themes[tinyMCE.settings['theme']]; + if (o.getControlHTML && (v = o.getControlHTML(c)) != '') { + if (rtl) + return '' + v + ''; + + return v; + } + + return ''; + }, + + evalFunc : function(f, idx, a, o) { + o = !o ? window : o; + f = typeof(f) == 'function' ? f : o[f]; + + return f.apply(o, Array.prototype.slice.call(a, idx)); + }, + + dispatchCallback : function(i, p, n) { + return this.callFunc(i, p, n, 0, this.dispatchCallback.arguments); + }, + + executeCallback : function(i, p, n) { + return this.callFunc(i, p, n, 1, this.executeCallback.arguments); + }, + + execCommandCallback : function(i, p, n) { + return this.callFunc(i, p, n, 2, this.execCommandCallback.arguments); + }, + + callFunc : function(ins, p, n, m, a) { + var l, i, on, o, s, v; + + s = m == 2; + + l = tinyMCE.getParam(p, ''); + + if (l != '' && (v = tinyMCE.evalFunc(l, 3, a)) == s && m > 0) + return true; + + if (ins != null) { + for (i=0, l = ins.plugins; i 0) + return true; + } + } + + l = tinyMCE.themes; + for (on in l) { + o = l[on]; + + if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0) + return true; + } + + return false; + }, + + xmlEncode : function(s, skip_apos) { + return s ? ('' + s).replace(!skip_apos ? this.xmlEncodeAposRe : this.xmlEncodeRe, function (c, b) { + switch (c) { + case '&': + return '&'; + + case '"': + return '"'; + + case '\'': + return '''; // ' is not working in MSIE + + case '<': + return '<'; + + case '>': + return '>'; + } + + return c; + }) : s; + }, + + extend : function(p, np) { + var o = {}; + + o.parent = p; + + for (n in p) + o[n] = p[n]; + + for (n in np) + o[n] = np[n]; + + return o; + }, + + hideMenus : function() { + var e = tinyMCE.lastSelectedMenuBtn; + + if (tinyMCE.lastMenu) { + tinyMCE.lastMenu.hide(); + tinyMCE.lastMenu = null; + } + + if (e) { + tinyMCE.switchClass(e, tinyMCE.lastMenuBtnClass); + tinyMCE.lastSelectedMenuBtn = null; + } + } + + }; + +// Global instances +var TinyMCE = TinyMCE_Engine; // Compatiblity with gzip compressors +var tinyMCE = new TinyMCE_Engine(); +var tinyMCELang = {}; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Control.class.js */ + +function TinyMCE_Control(settings) { + var t, i, to, fu, p, x, fn, fu, pn, s = settings; + + this.undoRedoLevel = true; + this.isTinyMCE_Control = true; + + // Default settings + this.settings = s; + this.settings['theme'] = tinyMCE.getParam("theme", "default"); + this.settings['width'] = tinyMCE.getParam("width", -1); + this.settings['height'] = tinyMCE.getParam("height", -1); + this.selection = new TinyMCE_Selection(this); + this.undoRedo = new TinyMCE_UndoRedo(this); + this.cleanup = new TinyMCE_Cleanup(); + this.shortcuts = new Array(); + this.hasMouseMoved = false; + this.foreColor = this.backColor = "#999999"; + this.data = {}; + this.cssClasses = []; + + this.cleanup.init({ + valid_elements : s.valid_elements, + extended_valid_elements : s.extended_valid_elements, + valid_child_elements : s.valid_child_elements, + entities : s.entities, + entity_encoding : s.entity_encoding, + debug : s.cleanup_debug, + indent : s.apply_source_formatting, + invalid_elements : s.invalid_elements, + verify_html : s.verify_html, + fix_content_duplication : s.fix_content_duplication, + convert_fonts_to_spans : s.convert_fonts_to_spans + }); + + // Wrap old theme + t = this.settings['theme']; + if (!tinyMCE.hasTheme(t)) { + fn = tinyMCE.callbacks; + to = {}; + + for (i=0; i 0) { + for (i=0; i 1 && tinyMCE.currentConfig != this.settings['index']) { + tinyMCE.settings = this.settings; + tinyMCE.currentConfig = this.settings['index']; + } + }, + + select : function() { + var oldInst = tinyMCE.selectedInstance; + + if (oldInst != this) { + if (oldInst) + oldInst.execCommand('mceEndTyping'); + + tinyMCE.dispatchCallback(this, 'select_instance_callback', 'selectInstance', this, oldInst); + tinyMCE.selectedInstance = this; + } + }, + + getBody : function() { + return this.contentBody ? this.contentBody : this.getDoc().body; + }, + + getDoc : function() { +// return this.contentDocument ? this.contentDocument : this.contentWindow.document; // Removed due to IE 5.5 ? + return this.contentWindow.document; + }, + + getWin : function() { + return this.contentWindow; + }, + + getContainerWin : function() { + return this.containerWindow ? this.containerWindow : window; + }, + + getViewPort : function() { + return tinyMCE.getViewPort(this.getWin()); + }, + + getParentNode : function(n, f) { + return tinyMCE.getParentNode(n, f, this.getBody()); + }, + + getParentElement : function(n, na, f) { + return tinyMCE.getParentElement(n, na, f, this.getBody()); + }, + + getParentBlockElement : function(n) { + return tinyMCE.getParentBlockElement(n, this.getBody()); + }, + + resizeToContent : function() { + var d = this.getDoc(), b = d.body, de = d.documentElement; + + this.iframeElement.style.height = (tinyMCE.isRealIE) ? b.scrollHeight : de.offsetHeight + 'px'; + }, + + addShortcut : function(m, k, d, cmd, ui, va) { + var n = typeof(k) == "number", ie = tinyMCE.isIE, c, sc, i, scl = this.shortcuts; + + if (!tinyMCE.getParam('custom_shortcuts')) + return false; + + m = m.toLowerCase(); + k = ie && !n ? k.toUpperCase() : k; + c = n ? null : k.charCodeAt(0); + d = d && d.indexOf('lang_') == 0 ? tinyMCE.getLang(d) : d; + + sc = { + alt : m.indexOf('alt') != -1, + ctrl : m.indexOf('ctrl') != -1, + shift : m.indexOf('shift') != -1, + charCode : c, + keyCode : n ? k : (ie ? c : null), + desc : d, + cmd : cmd, + ui : ui, + val : va + }; + + for (i=0; i 0) + rng.pasteHTML('
' + rng.htmlText + "
"); + + tinyMCE.triggerNodeChange(); + return; + } + } + } + + switch (command) { + case "mceRepaint": + this.repaint(); + return true; + + case "unlink": + // Unlink if caret is inside link + if (tinyMCE.isGecko && this.getSel().isCollapsed) { + focusElm = tinyMCE.getParentElement(focusElm, 'A'); + + if (focusElm) + this.selection.selectNode(focusElm, false); + } + + this.getDoc().execCommand(command, user_interface, value); + + tinyMCE.isGecko && this.getSel().collapseToEnd(); + + tinyMCE.triggerNodeChange(); + + return true; + + case "InsertUnorderedList": + case "InsertOrderedList": + this.getDoc().execCommand(command, user_interface, value); + tinyMCE.triggerNodeChange(); + break; + + case "Strikethrough": + this.getDoc().execCommand(command, user_interface, value); + tinyMCE.triggerNodeChange(); + break; + + case "mceSelectNode": + this.selection.selectNode(value); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = value; + break; + + case "FormatBlock": + if (value == null || value == "") { + var elm = tinyMCE.getParentElement(this.getFocusElement(), "p,div,h1,h2,h3,h4,h5,h6,pre,address,blockquote,dt,dl,dd,samp"); + + if (elm) + this.execCommand("mceRemoveNode", false, elm); + } else { + if (!this.cleanup.isValid(value)) + return true; + + if (tinyMCE.isGecko && new RegExp('<(div|blockquote|code|dt|dd|dl|samp)>', 'gi').test(value)) + value = value.replace(/[^a-z]/gi, ''); + + if (tinyMCE.isIE && new RegExp('blockquote|code|samp', 'gi').test(value)) { + var b = this.selection.getBookmark(); + this.getDoc().execCommand("FormatBlock", false, '

'); + tinyMCE.renameElement(tinyMCE.getParentBlockElement(this.getFocusElement()), value); + this.selection.moveToBookmark(b); + } else + this.getDoc().execCommand("FormatBlock", false, value); + } + + tinyMCE.triggerNodeChange(); + + break; + + case "mceRemoveNode": + if (!value) + value = tinyMCE.getParentElement(this.getFocusElement()); + + if (tinyMCE.isIE) { + value.outerHTML = value.innerHTML; + } else { + var rng = value.ownerDocument.createRange(); + rng.setStartBefore(value); + rng.setEndAfter(value); + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(value.innerHTML)); + } + + tinyMCE.triggerNodeChange(); + + break; + + case "mceSelectNodeDepth": + var parentNode = this.getFocusElement(); + for (var i=0; parentNode; i++) { + if (parentNode.nodeName.toLowerCase() == "body") + break; + + if (parentNode.nodeName.toLowerCase() == "#text") { + i--; + parentNode = parentNode.parentNode; + continue; + } + + if (i == value) { + this.selection.selectNode(parentNode, false); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = parentNode; + return; + } + + parentNode = parentNode.parentNode; + } + + break; + + case "mceSetStyleInfo": + case "SetStyleInfo": + var rng = this.getRng(); + var sel = this.getSel(); + var scmd = value['command']; + var sname = value['name']; + var svalue = value['value'] == null ? '' : value['value']; + //var svalue = value['value'] == null ? '' : value['value']; + var wrapper = value['wrapper'] ? value['wrapper'] : "span"; + var parentElm = null; + var invalidRe = new RegExp("^BODY|HTML$", "g"); + var invalidParentsRe = tinyMCE.settings['merge_styles_invalid_parents'] != '' ? new RegExp(tinyMCE.settings['merge_styles_invalid_parents'], "gi") : null; + + // Whole element selected check + if (tinyMCE.isIE) { + // Control range + if (rng.item) + parentElm = rng.item(0); + else { + var pelm = rng.parentElement(); + var prng = doc.selection.createRange(); + prng.moveToElementText(pelm); + + if (rng.htmlText == prng.htmlText || rng.boundingWidth == 0) { + if (invalidParentsRe == null || !invalidParentsRe.test(pelm.nodeName)) + parentElm = pelm; + } + } + } else { + var felm = this.getFocusElement(); + if (sel.isCollapsed || (new RegExp('td|tr|tbody|table', 'gi').test(felm.nodeName) && sel.anchorNode == felm.parentNode)) + parentElm = felm; + } + + // Whole element selected + if (parentElm && !invalidRe.test(parentElm.nodeName)) { + if (scmd == "setstyle") + tinyMCE.setStyleAttrib(parentElm, sname, svalue); + + if (scmd == "setattrib") + tinyMCE.setAttrib(parentElm, sname, svalue); + + if (scmd == "removeformat") { + parentElm.style.cssText = ''; + tinyMCE.setAttrib(parentElm, 'class', ''); + } + + // Remove style/attribs from all children + var ch = tinyMCE.getNodeTree(parentElm, new Array(), 1); + for (var z=0; z=0; i--) { + var elm = nodes[i]; + var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true"; + + elm.removeAttribute("mce_new"); + + // Is only child a element + if (elm.childNodes && elm.childNodes.length == 1 && elm.childNodes[0].nodeType == 1) { + //tinyMCE.debug("merge1" + isNew); + this._mergeElements(scmd, elm, elm.childNodes[0], isNew); + continue; + } + + // Is I the only child + if (elm.parentNode.childNodes.length == 1 && !invalidRe.test(elm.nodeName) && !invalidRe.test(elm.parentNode.nodeName)) { + //tinyMCE.debug("merge2" + isNew + "," + elm.nodeName + "," + elm.parentNode.nodeName); + if (invalidParentsRe == null || !invalidParentsRe.test(elm.parentNode.nodeName)) + this._mergeElements(scmd, elm.parentNode, elm, false); + } + } + + // Remove empty wrappers + var nodes = doc.getElementsByTagName(wrapper); + for (var i=nodes.length-1; i>=0; i--) { + var elm = nodes[i]; + var isEmpty = true; + + // Check if it has any attribs + var tmp = doc.createElement("body"); + tmp.appendChild(elm.cloneNode(false)); + + // Is empty span, remove it + tmp.innerHTML = tmp.innerHTML.replace(new RegExp('style=""|class=""', 'gi'), ''); + //tinyMCE.debug(tmp.innerHTML); + if (new RegExp('', 'gi').test(tmp.innerHTML)) { + for (var x=0; x 0) { + value = tinyMCE.replaceVar(value, "selection", selectedText); + tinyMCE.execCommand('mceInsertContent', false, value); + } + + tinyMCE.triggerNodeChange(); + break; + + case "mceSetAttribute": + if (typeof(value) == 'object') { + var targetElms = (typeof(value['targets']) == "undefined") ? "p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address" : value['targets']; + var targetNode = tinyMCE.getParentElement(this.getFocusElement(), targetElms); + + if (targetNode) { + targetNode.setAttribute(value['name'], value['value']); + tinyMCE.triggerNodeChange(); + } + } + break; + + case "mceSetCSSClass": + this.execCommand("mceSetStyleInfo", false, {command : "setattrib", name : "class", value : value}); + break; + + case "mceInsertRawHTML": + var key = 'tiny_mce_marker'; + + this.execCommand('mceBeginUndoLevel'); + + // Insert marker key + this.execCommand('mceInsertContent', false, key); + + // Store away scroll pos + var scrollX = this.getBody().scrollLeft + this.getDoc().documentElement.scrollLeft; + var scrollY = this.getBody().scrollTop + this.getDoc().documentElement.scrollTop; + + // Find marker and replace with RAW HTML + var html = this.getBody().innerHTML; + if ((pos = html.indexOf(key)) != -1) + tinyMCE.setInnerHTML(this.getBody(), html.substring(0, pos) + value + html.substring(pos + key.length)); + + // Restore scoll pos + this.contentWindow.scrollTo(scrollX, scrollY); + + this.execCommand('mceEndUndoLevel'); + + break; + + case "mceInsertContent": + // Force empty string + if (!value) + value = ''; + + var insertHTMLFailed = false; + + // Removed since it produced problems in IE + // this.getWin().focus(); + + if (tinyMCE.isGecko || tinyMCE.isOpera) { + try { + // Is plain text or HTML, &,   etc will be encoded wrong in FF + if (value.indexOf('<') == -1 && !value.match(/(&| |<|>)/g)) { + var r = this.getRng(); + var n = this.getDoc().createTextNode(tinyMCE.entityDecode(value)); + var s = this.getSel(); + var r2 = r.cloneRange(); + + // Insert text at cursor position + s.removeAllRanges(); + r.deleteContents(); + r.insertNode(n); + + // Move the cursor to the end of text + r2.selectNode(n); + r2.collapse(false); + s.removeAllRanges(); + s.addRange(r2); + } else { + value = tinyMCE.fixGeckoBaseHREFBug(1, this.getDoc(), value); + this.getDoc().execCommand('inserthtml', false, value); + tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); + } + } catch (ex) { + insertHTMLFailed = true; + } + + if (!insertHTMLFailed) { + tinyMCE.triggerNodeChange(); + return; + } + } + + if (!tinyMCE.isIE) { + var isHTML = value.indexOf('<') != -1; + var sel = this.getSel(); + var rng = this.getRng(); + + if (isHTML) { + if (tinyMCE.isSafari) { + var tmpRng = this.getDoc().createRange(); + + tmpRng.setStart(this.getBody(), 0); + tmpRng.setEnd(this.getBody(), 0); + + value = tmpRng.createContextualFragment(value); + } else + value = rng.createContextualFragment(value); + } else { + // Setup text node + var el = document.createElement("div"); + el.innerHTML = value; + value = el.firstChild.nodeValue; + value = doc.createTextNode(value); + } + + // Insert plain text in Safari + if (tinyMCE.isSafari && !isHTML) { + this.execCommand('InsertText', false, value.nodeValue); + tinyMCE.triggerNodeChange(); + return true; + } else if (tinyMCE.isSafari && isHTML) { + rng.deleteContents(); + rng.insertNode(value); + tinyMCE.triggerNodeChange(); + return true; + } + + rng.deleteContents(); + + // If target node is text do special treatment, (Mozilla 1.3 fix) + if (rng.startContainer.nodeType == 3) { + var node = rng.startContainer.splitText(rng.startOffset); + node.parentNode.insertBefore(value, node); + } else + rng.insertNode(value); + + if (!isHTML) { + // Removes weird selection trails + sel.selectAllChildren(doc.body); + sel.removeAllRanges(); + + // Move cursor to end of content + var rng = doc.createRange(); + + rng.selectNode(value); + rng.collapse(false); + + sel.addRange(rng); + } else + rng.collapse(false); + + tinyMCE.fixGeckoBaseHREFBug(2, this.getDoc(), value); + } else { + var rng = doc.selection.createRange(), tmpRng = null; + var c = value.indexOf('"; + } + + if (hc) { + cn = n.childNodes; + + for (i=0, l=cn.length; i'; + + return h; + }, + + _serializeAttribute : function(n, r, an) { + var av = '', t, os = this.settings.on_save; + + if (os && (an.indexOf('mce_') == 0 || an.indexOf('_moz') == 0)) + return ''; + + if (os && this.mceAttribs[an]) + av = this._getAttrib(n, this.mceAttribs[an]); + + if (av.length == 0) + av = this._getAttrib(n, an); + + if (av.length == 0 && r.defaultAttribs && (t = r.defaultAttribs[an])) { + av = t; + + if (av == "mce_empty") + return " " + an + '=""'; + } + + if (r.forceAttribs && (t = r.forceAttribs[an])) + av = t; + + if (os && av.length != 0 && /^(src|href|longdesc)$/.test(an)) + av = this._urlConverter(this, n, av); + + if (av.length != 0 && r.validAttribValues && r.validAttribValues[an] && !r.validAttribValues[an].test(av)) + return ""; + + if (av.length != 0 && av == "{$uid}") + av = "uid_" + (this.idCount++); + + if (av.length != 0) { + if (an.indexOf('on') != 0) + av = this.xmlEncode(av, 1); + + return " " + an + "=" + '"' + av + '"'; + } + + return ""; + }, + + formatHTML : function(h) { + var s = this.settings, p = '', i = 0, li = 0, o = '', l; + + // Replace BR in pre elements to \n + h = h.replace(/]*)>(.*?)<\/pre>/gi, function (a, b, c) { + c = c.replace(//gi, '\n'); + return '' + c + ''; + }); + + h = h.replace(/\r/g, ''); // Windows sux, isn't carriage return a thing of the past :) + h = '\n' + h; + h = h.replace(new RegExp('\\n\\s+', 'gi'), '\n'); // Remove previous formatting + h = h.replace(this.nlBeforeRe, '\n<$1$2>'); + h = h.replace(this.nlAfterRe, '<$1$2>\n'); + h = h.replace(this.nlBeforeAfterRe, '\n<$1$2$3>\n'); + h += '\n'; + + //tinyMCE.debug(h); + + while ((i = h.indexOf('\n', i + 1)) != -1) { + if ((l = h.substring(li + 1, i)).length != 0) { + if (this.ouRe.test(l) && p.length >= s.indent_levels) + p = p.substring(s.indent_levels); + + o += p + l + '\n'; + + if (this.inRe.test(l)) + p += this.inStr; + } + + li = i; + } + + //tinyMCE.debug(h); + + return o; + }, + + xmlEncode : function(s, skip_apos) { + var cl = this, re = !skip_apos ? this.xmlEncodeAposRe : this.xmlEncodeRe; + + this._setupEntities(); // Will intialize lookup table + + switch (this.settings.entity_encoding) { + case "raw": + return tinyMCE.xmlEncode(s, skip_apos); + + case "named": + return s.replace(re, function (c, b) { + b = cl.entities[c.charCodeAt(0)]; + + return b ? '&' + b + ';' : c; + }); + + case "numeric": + return s.replace(re, function (c, b) { + return b ? '&#' + c.charCodeAt(0) + ';' : c; + }); + } + + return s; + }, + + split : function(re, s) { + var c = s.split(re); + var i, l, o = new Array(); + + for (i=0, l=c.length; i' : '>' + h + ''; + + return o; +}; + +TinyMCE_Engine.prototype.createTag = function(d, tn, a, h) { + var o = d.createElement(tn); + + if (a) { + for (n in a) { + if (typeof(a[n]) != 'function' && a[n] != null) + tinyMCE.setAttrib(o, n, a[n]); + } + } + + if (h) + o.innerHTML = h; + + return o; +}; + +TinyMCE_Engine.prototype.getElementByAttributeValue = function(n, e, a, v) { + return (n = this.getElementsByAttributeValue(n, e, a, v)).length == 0 ? null : n[0]; +}; + +TinyMCE_Engine.prototype.getElementsByAttributeValue = function(n, e, a, v) { + var i, nl = n.getElementsByTagName(e), o = new Array(); + + for (i=0; i]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/]*)>/gi, ''); + h = h.replace(/<\/strong>/gi, ''); + h = h.replace(/<\/em>/gi, ''); + } + + if (tinyMCE.isRealIE) { + // Since MSIE handles invalid HTML better that valid XHTML we + // need to make some things invalid.


gets converted to
. + h = h.replace(/\s\/>/g, '>'); + + // Since MSIE auto generated emtpy P tags some times we must tell it to keep the real ones + h = h.replace(/]*)>\u00A0?<\/p>/gi, ' 

'); // Keep empty paragraphs + h = h.replace(/]*)>\s* \s*<\/p>/gi, ' 

'); // Keep empty paragraphs + h = h.replace(/]*)>\s+<\/p>/gi, ' 

'); // Keep empty paragraphs + + // Remove first comment + e.innerHTML = tinyMCE.uniqueTag + h; + e.firstChild.removeNode(true); + + // Remove weird auto generated empty paragraphs unless it's supposed to be there + nl = e.getElementsByTagName("p"); + for (i=nl.length-1; i>=0; i--) { + n = nl[i]; + + if (n.nodeName == 'P' && !n.hasChildNodes() && !n.mce_keep) + n.parentNode.removeChild(n); + } + } else { + h = this.fixGeckoBaseHREFBug(1, e, h); + e.innerHTML = h; + this.fixGeckoBaseHREFBug(2, e, h); + } +}; + +TinyMCE_Engine.prototype.getOuterHTML = function(e) { + if (tinyMCE.isIE) + return e.outerHTML; + + var d = e.ownerDocument.createElement("body"); + d.appendChild(e.cloneNode(true)); + return d.innerHTML; +}; + +TinyMCE_Engine.prototype.setOuterHTML = function(e, h, d) { + var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t; + + if (tinyMCE.isIE && e.nodeType == 1) + e.outerHTML = h; + else { + t = d.createElement("body"); + t.innerHTML = h; + + for (i=0, nl=t.childNodes; i-1; i--) { + if (ar[i].specified && ar[i].nodeValue) + ne.setAttribute(ar[i].nodeName.toLowerCase(), ar[i].nodeValue); + } + + ar = e.childNodes; + for (i=0; i= strTok2.length) { + for (var i=0; i= strTok2.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (strTok1.length < strTok2.length) { + for (var i=0; i= strTok1.length || strTok1[i] != strTok2[i]) { + breakPoint = i + 1; + break; + } + } + } + + if (breakPoint == 1) + return targetURL.path; + + for (var i=0; i<(strTok1.length-(breakPoint-1)); i++) + outPath += "../"; + + for (var i=breakPoint-1; i=0; i--) { + if (baseURLParts[i].length == 0) + continue; + + newBaseURLParts[newBaseURLParts.length] = baseURLParts[i]; + } + baseURLParts = newBaseURLParts.reverse(); + + // Merge relURLParts chunks + var newRelURLParts = new Array(); + var numBack = 0; + for (var i=relURLParts.length-1; i>=0; i--) { + if (relURLParts[i].length == 0 || relURLParts[i] == ".") + continue; + + if (relURLParts[i] == '..') { + numBack++; + continue; + } + + if (numBack > 0) { + numBack--; + continue; + } + + newRelURLParts[newRelURLParts.length] = relURLParts[i]; + } + + relURLParts = newRelURLParts.reverse(); + + // Remove end from absolute path + var len = baseURLParts.length-numBack; + var absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0, len).join('/') + "/" + relURLParts.join('/'); + var start = "", end = ""; + + // Build output URL + relURL.protocol = baseURL.protocol; + relURL.host = baseURL.host; + relURL.port = baseURL.port; + + // Re-add trailing slash if it's removed + if (relURL.path.charAt(relURL.path.length-1) == "/") + absPath += "/"; + + relURL.path = absPath; + + return this.serializeURL(relURL); +}; + +TinyMCE_Engine.prototype.convertURL = function(url, node, on_save) { + var prot = document.location.protocol; + var host = document.location.hostname; + var port = document.location.port; + + // Pass through file protocol + if (prot == "file:") + return url; + + // Something is wrong, remove weirdness + url = tinyMCE.regexpReplace(url, '(http|https):///', '/'); + + // Mailto link or anchor (Pass through) + if (url.indexOf('mailto:') != -1 || url.indexOf('javascript:') != -1 || tinyMCE.regexpReplace(url,'[ \t\r\n\+]|%20','').charAt(0) == "#") + return url; + + // Fix relative/Mozilla + if (!tinyMCE.isIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/') + return tinyMCE.settings['base_href'] + url; + + // Handle relative URLs + if (on_save && tinyMCE.getParam('relative_urls')) { + var curl = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], url); + if (curl.charAt(0) == '/') + curl = tinyMCE.settings['document_base_prefix'] + curl; + + var urlParts = tinyMCE.parseURL(curl); + var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings['document_base_url']); + + // Force relative + if (urlParts['host'] == tmpUrlParts['host'] && (urlParts['port'] == tmpUrlParts['port'])) + return tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'], curl); + } + + // Handle absolute URLs + if (!tinyMCE.getParam('relative_urls')) { + var urlParts = tinyMCE.parseURL(url); + var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings['base_href']); + + // Force absolute URLs from relative URLs + url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], url); + + // If anchor and path is the same page + if (urlParts['anchor'] && urlParts['path'] == baseUrlParts['path']) + return "#" + urlParts['anchor']; + } + + // Remove current domain + if (tinyMCE.getParam('remove_script_host')) { + var start = "", portPart = ""; + + if (port != "") + portPart = ":" + port; + + start = prot + "//" + host + portPart + "/"; + + if (url.indexOf(start) == 0) + url = url.substring(start.length-1); + } + + return url; +}; + +TinyMCE_Engine.prototype.convertAllRelativeURLs = function(body) { + var i, elms, src, href, mhref, msrc; + + // Convert all image URL:s to absolute URL + elms = body.getElementsByTagName("img"); + for (i=0; i bookmark.index) { + try { + rng.addElement(nl[bookmark.index]); + } catch (ex) { + // Might be thrown if the node no longer exists + } + } + } else { + // Try/catch needed since this operation breaks when TinyMCE is placed in hidden divs/tabs + try { + // Incorrect bookmark + if (bookmark.start < 0) + return true; + + rng = inst.getSel().createRange(); + rng.moveToElementText(inst.getBody()); + rng.collapse(true); + rng.moveStart('character', bookmark.start); + rng.moveEnd('character', bookmark.length); + } catch (ex) { + return true; + } + } + + rng.select(); + + win.scrollTo(bookmark.scrollX, bookmark.scrollY); + return true; + } + + if (tinyMCE.isGecko || tinyMCE.isOpera) { + if (!sel) + return false; + + if (bookmark.rng) { + sel.removeAllRanges(); + sel.addRange(bookmark.rng); + } + + if (bookmark.start != -1 && bookmark.end != -1) { + try { + sd = this._getTextPos(b, bookmark.start, bookmark.end); + rng = doc.createRange(); + rng.setStart(sd.startNode, sd.startOffset); + rng.setEnd(sd.endNode, sd.endOffset); + sel.removeAllRanges(); + sel.addRange(rng); + win.focus(); + } catch (ex) { + // Ignore + } + } + + /* + if (typeof(bookmark.index) != 'undefined') { + tinyMCE.selectElements(b, 'IMG', function (n) { + if (bookmark.index-- == 0) { + // Select image in Gecko here + } + + return false; + }); + } + */ + + win.scrollTo(bookmark.scrollX, bookmark.scrollY); + return true; + } + + return false; + }, + + _getPosText : function(r, sn, en) { + var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; + + while ((n = w.nextNode()) != null) { + if (n == sn) + d.start = p; + + if (n == en) { + d.end = p; + return d; + } + + p += n.nodeValue ? n.nodeValue.length : 0; + } + + return null; + }, + + _getTextPos : function(r, sp, ep) { + var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d = {}; + + while ((n = w.nextNode()) != null) { + p += n.nodeValue ? n.nodeValue.length : 0; + + if (p >= sp && !d.startNode) { + d.startNode = n; + d.startOffset = sp - (p - n.nodeValue.length); + } + + if (p >= ep) { + d.endNode = n; + d.endOffset = ep - (p - n.nodeValue.length); + + return d; + } + } + + return null; + }, + + selectNode : function(node, collapse, select_text_node, to_start) { + var inst = this.instance, sel, rng, nodes; + + if (!node) + return; + + if (typeof(collapse) == "undefined") + collapse = true; + + if (typeof(select_text_node) == "undefined") + select_text_node = false; + + if (typeof(to_start) == "undefined") + to_start = true; + + if (inst.settings.auto_resize) + inst.resizeToContent(); + + if (tinyMCE.isRealIE) { + rng = inst.getDoc().body.createTextRange(); + + try { + rng.moveToElementText(node); + + if (collapse) + rng.collapse(to_start); + + rng.select(); + } catch (e) { + // Throws illigal agrument in MSIE some times + } + } else { + sel = this.getSel(); + + if (!sel) + return; + + if (tinyMCE.isSafari) { + sel.setBaseAndExtent(node, 0, node, node.innerText.length); + + if (collapse) { + if (to_start) + sel.collapseToStart(); + else + sel.collapseToEnd(); + } + + this.scrollToNode(node); + + return; + } + + rng = inst.getDoc().createRange(); + + if (select_text_node) { + // Find first textnode in tree + nodes = tinyMCE.getNodeTree(node, new Array(), 3); + if (nodes.length > 0) + rng.selectNodeContents(nodes[0]); + else + rng.selectNodeContents(node); + } else + rng.selectNode(node); + + if (collapse) { + // Special treatment of textnode collapse + if (!to_start && node.nodeType == 3) { + rng.setStart(node, node.nodeValue.length); + rng.setEnd(node, node.nodeValue.length); + } else + rng.collapse(to_start); + } + + sel.removeAllRanges(); + sel.addRange(rng); + } + + this.scrollToNode(node); + + // Set selected element + tinyMCE.selectedElement = null; + if (node.nodeType == 1) + tinyMCE.selectedElement = node; + }, + + scrollToNode : function(node) { + var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos = tinyMCE.getAbsPosition(node), cvp, p, cwin; + + // Only scroll if out of visible area + if (pos.absLeft < vp.left || pos.absLeft > vp.left + vp.width || pos.absTop < vp.top || pos.absTop > vp.top + (vp.height-25)) + w.scrollTo(pos.absLeft, pos.absTop - vp.height + 25); + + // Scroll container window + if (inst.settings.auto_resize) { + cwin = inst.getContainerWin(); + cvp = tinyMCE.getViewPort(cwin); + p = this.getAbsPosition(node); + + if (p.absLeft < cvp.left || p.absLeft > cvp.left + cvp.width || p.absTop < cvp.top || p.absTop > cvp.top + cvp.height) + cwin.scrollTo(p.absLeft, p.absTop - cvp.height + 25); + } + }, + + getAbsPosition : function(n) { + var pos = tinyMCE.getAbsPosition(n), ipos = tinyMCE.getAbsPosition(this.instance.iframeElement); + + return { + absLeft : ipos.absLeft + pos.absLeft, + absTop : ipos.absTop + pos.absTop + }; + }, + + getSel : function() { + var inst = this.instance; + + if (tinyMCE.isRealIE) + return inst.getDoc().selection; + + return inst.contentWindow.getSelection(); + }, + + getRng : function() { + var s = this.getSel(); + + if (s == null) + return null; + + if (tinyMCE.isRealIE) + return s.createRange(); + + if (tinyMCE.isSafari && !s.getRangeAt) + return '' + window.getSelection(); + + if (s.rangeCount > 0) + return s.getRangeAt(0); + + return null; + }, + + isCollapsed : function() { + var r = this.getRng(); + + if (r.item) + return false; + + return r.boundingWidth == 0 || this.getSel().isCollapsed; + }, + + collapse : function(b) { + var r = this.getRng(), s = this.getSel(); + + if (r.select) { + r.collapse(b); + r.select(); + } else { + if (b) + s.collapseToStart(); + else + s.collapseToEnd(); + } + }, + + getFocusElement : function() { + var inst = this.instance, doc, rng, sel, elm; + + if (tinyMCE.isRealIE) { + doc = inst.getDoc(); + rng = doc.selection.createRange(); + + // if (rng.collapse) + // rng.collapse(true); + + elm = rng.item ? rng.item(0) : rng.parentElement(); + } else { + if (!tinyMCE.isSafari && inst.isHidden()) + return inst.getBody(); + + sel = this.getSel(); + rng = this.getRng(); + + if (!sel || !rng) + return null; + + elm = rng.commonAncestorContainer; + //elm = (sel && sel.anchorNode) ? sel.anchorNode : null; + + // Handle selection a image or other control like element such as anchors + if (!rng.collapsed) { + // Is selection small + if (rng.startContainer == rng.endContainer) { + if (rng.startOffset - rng.endOffset < 2) { + if (rng.startContainer.hasChildNodes()) + elm = rng.startContainer.childNodes[rng.startOffset]; + } + } + } + + // Get the element parent of the node + elm = tinyMCE.getParentElement(elm); + + //if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") + // elm = tinyMCE.selectedElement; + } + + return elm; + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */ + +function TinyMCE_UndoRedo(inst) { + this.instance = inst; + this.undoLevels = new Array(); + this.undoIndex = 0; + this.typingUndoIndex = -1; + this.undoRedo = true; +}; + +TinyMCE_UndoRedo.prototype = { + add : function(l) { + var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur; + + if (l) { + this.undoLevels[this.undoLevels.length] = l; + return true; + } + + if (this.typingUndoIndex != -1) { + this.undoIndex = this.typingUndoIndex; + + if (tinyMCE.typingUndoIndex != -1) + tinyMCE.undoIndex = tinyMCE.typingUndoIndex; + } + + newHTML = tinyMCE.trim(inst.getBody().innerHTML); + if (this.undoLevels[this.undoIndex] && newHTML != this.undoLevels[this.undoIndex].content) { + //tinyMCE.debug(newHTML, this.undoLevels[this.undoIndex].content); + + tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange', inst); + + // Time to compress + customUndoLevels = tinyMCE.settings['custom_undo_redo_levels']; + if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) { + for (i=0; i 0) { + this.undoIndex--; + + tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); + inst.repaint(); + + if (inst.settings.custom_undo_redo_restore_selection) + inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); + } + }, + + redo : function() { + var inst = this.instance; + + tinyMCE.execCommand("mceEndTyping"); + + if (this.undoIndex < (this.undoLevels.length-1)) { + this.undoIndex++; + + tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content); + inst.repaint(); + + if (inst.settings.custom_undo_redo_restore_selection) + inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark); + } + + tinyMCE.triggerNodeChange(); + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_ForceParagraphs.class.js */ + +var TinyMCE_ForceParagraphs = { + _insertPara : function(inst, e) { + var doc = inst.getDoc(), sel = inst.getSel(), body = inst.getBody(), win = inst.contentWindow, rng = sel.getRangeAt(0); + var rootElm = doc.documentElement, blockName = "P", startNode, endNode, startBlock, endBlock; + var rngBefore, rngAfter, direct, startNode, startOffset, endNode, endOffset, b = tinyMCE.isOpera ? inst.selection.getBookmark() : null; + var paraBefore, paraAfter, startChop, endChop, contents; + + function isEmpty(para) { + function isEmptyHTML(html) { + return html.replace(new RegExp('[ \t\r\n]+', 'g'), '').toLowerCase() == ""; + } + + // Check for images + if (para.getElementsByTagName("img").length > 0) + return false; + + // Check for tables + if (para.getElementsByTagName("table").length > 0) + return false; + + // Check for HRs + if (para.getElementsByTagName("hr").length > 0) + return false; + + // Check all textnodes + var nodes = tinyMCE.getNodeTree(para, new Array(), 3); + for (var i=0; i <" + blockName + "> "; + paraAfter = body.childNodes[1]; + } + + inst.selection.moveToBookmark(b); + inst.selection.selectNode(paraAfter, true, true); + + return true; + } + + // Place first part within new paragraph + if (startChop.nodeName == blockName) + rngBefore.setStart(startChop, 0); + else + rngBefore.setStartBefore(startChop); + + rngBefore.setEnd(startNode, startOffset); + paraBefore.appendChild(rngBefore.cloneContents()); + + // Place secound part within new paragraph + rngAfter.setEndAfter(endChop); + rngAfter.setStart(endNode, endOffset); + contents = rngAfter.cloneContents(); + + if (contents.firstChild && contents.firstChild.nodeName == blockName) { + /* var nodes = contents.firstChild.childNodes; + for (var i=0; i= r.startOffset && nv.charAt(r.startOffset - 1) == ' ') + s = true;*/ + + // Only remove BRs if we are at the end of line #bug 1464152 + if (nv != null && r.startOffset == nv.length) + sn.nextSibling.parentNode.removeChild(sn.nextSibling); + } + + if (inst.settings.auto_resize) + inst.resizeToContent(); + + return s; + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Layer.class.js */ + +function TinyMCE_Layer(id, bm) { + this.id = id; + this.blockerElement = null; + this.events = false; + this.element = null; + this.blockMode = typeof(bm) != 'undefined' ? bm : true; + this.doc = document; +}; + +TinyMCE_Layer.prototype = { + moveRelativeTo : function(re, p) { + var rep = this.getAbsPosition(re); + var w = parseInt(re.offsetWidth); + var h = parseInt(re.offsetHeight); + var e = this.getElement(); + var ew = parseInt(e.offsetWidth); + var eh = parseInt(e.offsetHeight); + var x, y; + + switch (p) { + case "tl": + x = rep.absLeft; + y = rep.absTop; + break; + + case "tr": + x = rep.absLeft + w; + y = rep.absTop; + break; + + case "bl": + x = rep.absLeft; + y = rep.absTop + h; + break; + + case "br": + x = rep.absLeft + w; + y = rep.absTop + h; + break; + + case "cc": + x = rep.absLeft + (w / 2) - (ew / 2); + y = rep.absTop + (h / 2) - (eh / 2); + break; + } + + this.moveTo(x, y); + }, + + moveBy : function(x, y) { + var e = this.getElement(); + this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y); + }, + + moveTo : function(x, y) { + var e = this.getElement(); + + e.style.left = x + "px"; + e.style.top = y + "px"; + + this.updateBlocker(); + }, + + resizeBy : function(w, h) { + var e = this.getElement(); + this.resizeTo(parseInt(e.style.width) + w, parseInt(e.style.height) + h); + }, + + resizeTo : function(w, h) { + var e = this.getElement(); + + if (w != null) + e.style.width = w + "px"; + + if (h != null) + e.style.height = h + "px"; + + this.updateBlocker(); + }, + + show : function() { + var el = this.getElement(); + + if (el) { + el.style.display = 'block'; + this.updateBlocker(); + } + }, + + hide : function() { + var el = this.getElement(); + + if (el) { + el.style.display = 'none'; + this.updateBlocker(); + } + }, + + isVisible : function() { + return this.getElement().style.display == 'block'; + }, + + getElement : function() { + if (!this.element) + this.element = this.doc.getElementById(this.id); + + return this.element; + }, + + setBlockMode : function(s) { + this.blockMode = s; + }, + + updateBlocker : function() { + var e, b, x, y, w, h; + + b = this.getBlocker(); + if (b) { + if (this.blockMode) { + e = this.getElement(); + x = this.parseInt(e.style.left); + y = this.parseInt(e.style.top); + w = this.parseInt(e.offsetWidth); + h = this.parseInt(e.offsetHeight); + + b.style.left = x + 'px'; + b.style.top = y + 'px'; + b.style.width = w + 'px'; + b.style.height = h + 'px'; + b.style.display = e.style.display; + } else + b.style.display = 'none'; + } + }, + + getBlocker : function() { + var d, b; + + if (!this.blockerElement && this.blockMode) { + d = this.doc; + b = d.getElementById(this.id + "_blocker"); + + if (!b) { + b = d.createElement("iframe"); + + b.setAttribute('id', this.id + "_blocker"); + b.style.cssText = 'display: none; position: absolute; left: 0; top: 0'; + b.src = 'javascript:false;'; + b.frameBorder = '0'; + b.scrolling = 'no'; + + d.body.appendChild(b); + } + + this.blockerElement = b; + } + + return this.blockerElement; + }, + + getAbsPosition : function(n) { + var p = {absLeft : 0, absTop : 0}; + + while (n) { + p.absLeft += n.offsetLeft; + p.absTop += n.offsetTop; + n = n.offsetParent; + } + + return p; + }, + + create : function(n, c, p, h) { + var d = this.doc, e = d.createElement(n); + + e.setAttribute('id', this.id); + + if (c) + e.className = c; + + if (!p) + p = d.body; + + if (h) + e.innerHTML = h; + + p.appendChild(e); + + return this.element = e; + }, + + exists : function() { + return this.doc.getElementById(this.id) != null; + }, + + parseInt : function(s) { + if (s == null || s == '') + return 0; + + return parseInt(s); + }, + + remove : function() { + var e = this.getElement(), b = this.getBlocker(); + + if (e) + e.parentNode.removeChild(e); + + if (b) + b.parentNode.removeChild(b); + } + + }; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */ + +function TinyMCE_Menu() { + var id; + + if (typeof(tinyMCE.menuCounter) == "undefined") + tinyMCE.menuCounter = 0; + + id = "mc_menu_" + tinyMCE.menuCounter++; + + TinyMCE_Layer.call(this, id, true); + + this.id = id; + this.items = new Array(); + this.needsUpdate = true; +}; + +TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, { + init : function(s) { + var n; + + // Default params + this.settings = { + separator_class : 'mceMenuSeparator', + title_class : 'mceMenuTitle', + disabled_class : 'mceMenuDisabled', + menu_class : 'mceMenu', + drop_menu : true + }; + + for (n in s) + this.settings[n] = s[n]; + + this.create('div', this.settings.menu_class); + }, + + clear : function() { + this.items = new Array(); + }, + + addTitle : function(t) { + this.add({type : 'title', text : t}); + }, + + addDisabled : function(t) { + this.add({type : 'disabled', text : t}); + }, + + addSeparator : function() { + this.add({type : 'separator'}); + }, + + addItem : function(t, js) { + this.add({text : t, js : js}); + }, + + add : function(mi) { + this.items[this.items.length] = mi; + this.needsUpdate = true; + }, + + update : function() { + var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings; + + if (this.settings.drop_menu) + h += ''; + + h += ''; + + for (i=0; i'; + } + + h += '
'; + break; + + case 'title': + h += '
' + t + ''; + break; + + case 'disabled': + h += '
' + t + ''; + break; + + default: + h += '
' + t + ''; + } + + h += '
'; + + e.innerHTML = h; + + this.needsUpdate = false; + this.updateBlocker(); + }, + + show : function() { + var nl, i; + + if (tinyMCE.lastMenu == this) + return; + + if (this.needsUpdate) + this.update(); + + if (tinyMCE.lastMenu && tinyMCE.lastMenu != this) + tinyMCE.lastMenu.hide(); + + TinyMCE_Layer.prototype.show.call(this); + + if (!tinyMCE.isOpera) { + // Accessibility stuff +/* nl = this.getElement().getElementsByTagName("a"); + if (nl.length > 0) + nl[0].focus();*/ + } + + tinyMCE.lastMenu = this; + } + + }); + +/* file:jscripts/tiny_mce/classes/TinyMCE_Compatibility.class.js */ + +if (!Function.prototype.call) { + Function.prototype.call = function() { + var a = arguments, s = a[0], i, as = '', r, o; + + for (i=1; i 1 ? ',' : '') + 'a[' + i + ']'; + + o = s._fu; + s._fu = this; + r = eval('s._fu(' + as + ')'); + s._fu = o; + + return r; + }; +}; + +/* file:jscripts/tiny_mce/classes/TinyMCE_Debug.class.js */ + +TinyMCE_Engine.prototype.debug = function() { + var m = "", a, i, l = tinyMCE.log.length; + + for (i=0, a = this.debug.arguments; i'; + h += ''; + + return h; +} + +function pickColor(e, target_form_element) { + if ((e.keyCode == 32 || e.keyCode == 13) || e.type == "mousedown") + tinyMCEPopup.pickColor(e, target_form_element); +} + +function updateColor(img_id, form_element_id) { + document.getElementById(img_id).style.backgroundColor = document.forms[0].elements[form_element_id].value; +} + +function setBrowserDisabled(id, state) { + var img = document.getElementById(id); + var lnk = document.getElementById(id + "_link"); + + if (lnk) { + if (state) { + lnk.setAttribute("realhref", lnk.getAttribute("href")); + lnk.removeAttribute("href"); + tinyMCE.switchClass(img, 'mceButtonDisabled', true); + } else { + lnk.setAttribute("href", lnk.getAttribute("realhref")); + tinyMCE.switchClass(img, 'mceButtonNormal', false); + } + } +} + +function getBrowserHTML(id, target_form_element, type, prefix) { + var option = prefix + "_" + type + "_browser_callback"; + var cb = tinyMCE.getParam(option, tinyMCE.getParam("file_browser_callback")); + if (cb == null) + return ""; + + var html = ""; + + html += ''; + html += ''; + + return html; +} + +function openBrower(img_id, target_form_element, type, option) { + var img = document.getElementById(img_id); + + if (img.className != "mceButtonDisabled") + tinyMCEPopup.openBrowser(target_form_element, type, option); +} + +function selectByValue(form_obj, field_name, value, add_custom, ignore_case) { + if (!form_obj || !form_obj.elements[field_name]) + return; + + var sel = form_obj.elements[field_name]; + + var found = false; + for (var i=0; i x && mx < x + w && my > y && my < y + h)) { + MCLayer.visibleLayer = null; + + if (l.autoHideCallback && l.autoHideCallback(l, e, mx, my)) + return true; + + l.hide(); + } + } + }, + + addCSSClass : function(e, c) { + this.removeCSSClass(e, c); + var a = this.explode(' ', e.className); + a[a.length] = c; + e.className = a.join(' '); + }, + + removeCSSClass : function(e, c) { + var a = this.explode(' ', e.className), i; + + for (i=0; i parseInt(v)) + st = this.mark(f, n); + } + } + + return st; + }, + + hasClass : function(n, c, d) { + return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className); + }, + + getNum : function(n, c) { + c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0]; + c = c.replace(/[^0-9]/g, ''); + + return c; + }, + + addClass : function(n, c, b) { + var o = this.removeClass(n, c); + n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c; + }, + + removeClass : function(n, c) { + c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' '); + return n.className = c != ' ' ? c : ''; + }, + + tags : function(f, s) { + return f.getElementsByTagName(s); + }, + + mark : function(f, n) { + var s = this.settings; + + this.addClass(n, s.invalid_cls); + this.markLabels(f, n, s.invalid_cls); + + return false; + }, + + markLabels : function(f, n, ic) { + var nl, i; + + nl = this.tags(f, "label"); + for (i=0; i \ No newline at end of file diff --git a/admin/themes/admin/template_add_conversation.htm b/admin/themes/admin/template_add_conversation.htm new file mode 100644 index 0000000..f1c13d1 --- /dev/null +++ b/admin/themes/admin/template_add_conversation.htm @@ -0,0 +1,21 @@ + Add a Conversation +

+ + +

+ +

+
+

+ Example
+ + Geek: Wow an open source tumblelog CMS!!.
+ Normal: Tumble... what??
+ Geek: Read the fucking wikipedia!! +
+
+ +

+ + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_link.htm b/admin/themes/admin/template_add_link.htm new file mode 100644 index 0000000..1474b20 --- /dev/null +++ b/admin/themes/admin/template_add_link.htm @@ -0,0 +1,28 @@ + Add a Link +

+ + +

+

+ + +

+

+

+ + +

+ + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_mp3.htm b/admin/themes/admin/template_add_mp3.htm new file mode 100644 index 0000000..f7a8de0 --- /dev/null +++ b/admin/themes/admin/template_add_mp3.htm @@ -0,0 +1,21 @@ + Add an MP3 + +

+ + +

+ This is a URL from the Mp3 file. +
+

+

+
+ + +

+ + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_photo.htm b/admin/themes/admin/template_add_photo.htm new file mode 100644 index 0000000..9df2f1e --- /dev/null +++ b/admin/themes/admin/template_add_photo.htm @@ -0,0 +1,37 @@ + Upload a Photo + +

+

+ + +
+ Supports JPEG, GIF and PNG.  Max size is 10 MB. +
+ +
+ + +

+

+
+ + +

+ + + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_post.htm b/admin/themes/admin/template_add_post.htm new file mode 100644 index 0000000..b0834d7 --- /dev/null +++ b/admin/themes/admin/template_add_post.htm @@ -0,0 +1,18 @@ + Add a Regular Post +

+ + +

+ +

+
+ + +

+ + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_quote.htm b/admin/themes/admin/template_add_quote.htm new file mode 100644 index 0000000..a9e3f74 --- /dev/null +++ b/admin/themes/admin/template_add_quote.htm @@ -0,0 +1,18 @@ + Add a Quote + +

+
+ + +

+

+ + +

+ + + \ No newline at end of file diff --git a/admin/themes/admin/template_add_video.htm b/admin/themes/admin/template_add_video.htm new file mode 100644 index 0000000..aba629d --- /dev/null +++ b/admin/themes/admin/template_add_video.htm @@ -0,0 +1,22 @@ + Add a Video + +

+ + +

+ This is a URL from the video sites YouTube or Vimeo.
+ (ie. http://youtube.com/watch?v=HcBFLN9cli0) +
+

+

+
+ + +

+ + + \ No newline at end of file diff --git a/admin/user.php b/admin/user.php new file mode 100644 index 0000000..3ad1dc0 --- /dev/null +++ b/admin/user.php @@ -0,0 +1,246 @@ + +isAdmin()) { + + if (isset($_GET["delete"])) { + $user->deleteUser($_GET['delete']); + header("Location: admin.php?delete=true"); + die(); + } + + if(isset($_POST["btnAdd"])) { + unset($_POST["btnAdd"]); + if (isset($_POST["repass"])) { + unset($_POST["repass"]); + } + if (isset($_POST["btnVerifyUser"])) { + unset($_POST["btnVerifyUser"]); + } + if (isset($_POST["password"])) { + $_POST["password"] = md5($_POST["password"]); + } + + if (isset($_POST["id_user"])) { + $user->modifyUser($_POST, $_POST["id_user"]); + } else { + $user->addUser($_POST); + } + } else { + if ($isEdition) { + $register = $user->getUserByID($userId); + } + ?> + + + + gelato :: Add user + + + + + + + + + +
+ gelato CMS +
+ + + +
+
+
+

the user information

+
+ +
+
+ + + +

+ + " /> + + + +

+

+

+

+

+ + +

+

+ + +

+

+ + " /> +

+

+ + " /> +

+

+ + " /> +

+

+ + +

+

+
+ + +

+

+ user" /> +

+
+
+
+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+
+ + +urlGelato."/login.php"); +} +?> \ No newline at end of file diff --git a/classes/configuration.class.php b/classes/configuration.class.php new file mode 100644 index 0000000..9bab5b9 --- /dev/null +++ b/classes/configuration.class.php @@ -0,0 +1,49 @@ + +ejecutarConsulta("SELECT * FROM ".Table_prefix."config")) { + if ($this->contarRegistros()>0) { + $register=$this->obtenerRegistro(); + $this->tablePrefix = Table_prefix; + $this->urlGelato = $register['url_installation']; + $this->idUser = $register['id_user']; + $this->postLimit = $register['posts_limit']; + $this->title = $register['title']; + $this->description = $register['description']; + $this->lang = $register['lang']; + $this->urlFriendly = $register['url_friendly']; + $this->richText = $register['rich_text']; + $this->template = $register['template']; + } + } + } +} +?> \ No newline at end of file diff --git a/classes/functions.php b/classes/functions.php new file mode 100644 index 0000000..3069924 --- /dev/null +++ b/classes/functions.php @@ -0,0 +1,147 @@ + + \ No newline at end of file diff --git a/classes/gelato.class.php b/classes/gelato.class.php new file mode 100644 index 0000000..730593d --- /dev/null +++ b/classes/gelato.class.php @@ -0,0 +1,122 @@ + +conf = new configuration(); + } + + function addPost($fieldsArray) { + if ($this->insertarDeFormulario($this->conf->tablePrefix."data", $fieldsArray)) { + return true; + } else { + return false; + } + } + + function saveMP3($remoteFileName) { + if (getMP3File($remoteFileName)) { + return true; + } else { + return false; + } + } + + function savePhoto($remoteFileName) { + if (getPhotoFile($remoteFileName)) { + return true; + } else { + return false; + } + } + + function getPosts($limit="10", $from="0") { + $sqlStr = "select * from ".$this->conf->tablePrefix."data ORDER BY date DESC LIMIT $from,$limit"; + $this->ejecutarConsulta($sqlStr); + return $this->mid_consulta; + } + + function getType($id) { + if ($this->ejecutarConsulta("select type from ".$this->conf->tablePrefix."data WHERE id_post=".$id)) { + if ($this->contarRegistros()>0) { + while($registro = mysql_fetch_array($this->mid_consulta)) { + return $registro[0]; + } + } + } else { + return "0"; + } + } + + function formatConversation($text) { + $formatedText = ""; + $odd=true; + + $lines = explode("\n", $text); + + $formatedText .= "
    \n"; + foreach ($lines as $line) { + $pos = strpos($line, ":") + 1; + + $label = substr($line, 0, $pos); + $desc = substr($line, $pos, strlen($line)); + + if ($odd) { + $cssClass = "odd"; + } else { + $cssClass = "even"; + } + $odd=!$odd; + + + $formatedText .= "
  • \n"; + $formatedText .= " ".$label."\n"; + $formatedText .= " ".$desc."\n"; + $formatedText .= "
  • \n"; + } + $formatedText .= "
\n"; + return $formatedText; + } + + function getVideoPlayer($url) { + if (isYoutubeVideo($url)) { + $id_video = getYoutubeVideoUrl($url); + return "\t\t\t
\n"; + } elseif (isVimeoVideo($url)) { + $id_video = getVimeoVideoUrl($url); + return "\t\t\t
\n"; + } else { + return "This URL is not a supported video (YouTube or Vimeo)"; + } + } + + function getMp3Player($url) { + if (isMP3($url)) { + $playerUrl = $this->conf->urlGelato."/admin/scripts/player.swf?soundFile=".$url; + return "\t\t\t
\n"; + } else { + return "This URL is not a supported video (YouTube or Vimeo)"; + } + } + + function getPostsNumber() { + $this->ejecutarConsulta("select count(*) as total from ".$this->conf->tablePrefix."data"); + $row = mysql_fetch_assoc($this->mid_consulta); + return $row['total']; + } +} +?> \ No newline at end of file diff --git a/classes/mysql_connection.class.php b/classes/mysql_connection.class.php new file mode 100644 index 0000000..ca0689d --- /dev/null +++ b/classes/mysql_connection.class.php @@ -0,0 +1,264 @@ +mbase_datos = $bd; + $this->mservidor = $host; + $this->musuario = $user; + $this->mclave = $pass; + + $this->conectar(); + } + + /** Conectar a la base de datos */ + function conectar() { + // Conectamos al servidor + $this->mid_conexion = mysql_connect($this->mservidor, $this->musuario, $this->mclave); + if (!$this->mid_conexion) { + $this->merror = "No se logró realizar la conexión."; + return false; + } + //seleccionamos la base de datos + if (!@mysql_select_db($this->mbase_datos, $this->mid_conexion)) { + $this->merror = "No se puede abrir la base ".$this->mbase_datos ; + return false; + } + return $this->mid_conexion; // Si todo salio bien regresa el id de la conexión + } + + /** Para ejecutar consultas en la conexión abierta */ + function ejecutarConsulta($msql = "") { + if ($msql == "") { + $this->merror = "No introdujo la sentencia SQL"; + return false; + } + //ejecutamos la consulta + $this->mid_consulta = mysql_query($msql, $this->mid_conexion); + if (!$this->mid_consulta) { + $this->merror_numero = mysql_errno(); + $this->merror = mysql_error()." error"; + return false; + } + return $this->mid_consulta; // Si todo salio bien regresa el id de la consulta + } + + /** + * Inserta un registro en la DB por cada llave->valor en un arreglo. + * No se debe usar sentencias SQL con esta funcion. + * Para usar sentencias SQL se debe utilizar ejecutarConsulta(). + * + * @param mixed $tabla El nombre de la tabla en la BD. + * @param array $datos Arreglo con los campos que se desean insertar $arreglo['campo'] = 'valor'. + * @return string El ID del insert, verdadero si la tabla no tiene un campo auto_increment o false si ocurre un error. + */ + function insertarDeFormulario($tabla, $datos) { + + if (empty($datos)) { + $this->merror = "Debes de pasar un arreglo como parametro."; + return false; + } + + $cols = '('; + $sqlValues = '('; + + foreach ($datos as $llave=>$valor) { + + $cols .= "$llave,"; + + $tipo_col = $this->obtenerTipoCampo($tabla, $llave); // obtiene el tipo de campo + if (!$tipo_col) return false; // error! + + // determina si se necesita poner comillas al valor. + if (is_null($valor)) { + $sqlValues .= "NULL,"; + } + elseif (substr_count(MYSQL_TYPES_NUMERIC, "$tipo_col ")) { + $sqlValues .= "$valor,"; + } + elseif (substr_count(MYSQL_TYPES_DATE, "$tipo_col ")) { + $valor = $this->formatearFecha($valor, $tipo_col); // formatea las fechas + $sqlValues .= "'$valor',"; + } + elseif (substr_count(MYSQL_TYPES_STRING, "$tipo_col ")) { + $valor = addslashes($valor); + $sqlValues .= "'$valor',"; + } + } + $cols = rtrim($cols, ',').')'; + $sqlValues = rtrim($sqlValues, ',').')'; + + // inserta los valores en la DB + $sql = "INSERT INTO $tabla $cols VALUES $sqlValues"; + return $this->ejecutarConsulta($sql); + } + + /** + * Modifica un registro en la DB por cada llave->valor en un arreglo. + * No se debe usar sentencias SQL con esta funcion. + * Para usar sentencias SQL se debe utilizar ejecutarConsulta(). + * + * @param mixed $tabla El nombre de la tabla en la BD. + * @param array $datos Arreglo con los campos que se desean insertar $arreglo['campo'] = 'valor'. + * @param mixed $condicion Es basicame una clausula WHERE (sin el WHERE). Por ejemplo, + * "columna=valor AND columna2='otro valor'" seria una condicion. + * @return string El numero de registros afectados o verdadero si no necesitaba actualizarse el registro. + * Falso si ocurrio algun error. + */ + function modificarDeFormulario($tabla, $datos, $condicion="") { + + if (empty($datos)) { + $this->merror = "Debes de pasar un arreglo como parametro."; + return false; + } + + $sql = "UPDATE $tabla SET"; + foreach ($datos as $llave=>$valor) { + $sql .= " $llave="; + + $tipo_col = $this->obtenerTipoCampo($tabla, $llave); // obtiene el tipo de campo + if (!$tipo_col) return false; // error! + + // determina si se necesita poner comillas al valor. + if (is_null($valor)) { + $sql .= "NULL,"; + } + elseif (substr_count(MYSQL_TYPES_NUMERIC, "$tipo_col ")) { + $sql .= "$valor,"; + } + elseif (substr_count(MYSQL_TYPES_DATE, "$tipo_col ")) { + $valor = $this->sql_date_format($valor, $tipo_col); /// formatea las fechas + $sql .= "'$valor',"; + } + elseif (substr_count(MYSQL_TYPES_STRING, "$tipo_col ")) { + if ($this->auto_slashes) $valor = addslashes($valor); + $sql .= "'$valor',"; + } + } + $sql = rtrim($sql, ','); // elimina la ultima coma + if (!empty($condicion)) $sql .= " WHERE $condicion"; + + // modifica los valores + return $this->ejecutarConsulta($sql); + } + + /** + * Obtiene la informacion sobre un campo usando la funcion mysql_fetch_field. + * + * @param mixed $tabla El nombre de la tabla en la BD. + * @param string $campo El campo del que se desea la informacion. + * @return array Un arreglo con la informacion del campo o false si hay algun error. + */ + function obtenerTipoCampo($tabla, $campo) { + + $r = mysql_query("SELECT $campo FROM $tabla"); + if (!$r) { + $this->merror = mysql_error(); + return false; + } + $ret = mysql_field_type($r, 0); + if (!$ret) { + $this->merror = "No se puede obtener la informacion del campo ".$tabla.$campo."."; + mysql_free_result($r); + return false; + } + mysql_free_result($r); + return $ret; + } + + /** + * Convierte una fecha en formato para DB. + * + * @param mixed $valor Se le puede pasar un valor timestamp como time() o un string como '04/14/2003 5:13 AM'. + * @return date Fecha para insertar en la BD. + */ + function formatearFecha($valor) { + + if (gettype($valor) == 'string') $valor = strtotime($valor); + return date('Y-m-d H:i:s', $valor); + + } + + /** + * Obtiene el registro obtenido de una consulta. + */ + function obtenerRegistro() { + return mysql_fetch_array($this->mid_consulta); + } + + /** + * Devuelve el número de campos de una consulta. + */ + function contarCampos() { + return mysql_num_fields($this->mid_consulta); + } + + /** + * Devuelve el número de registros de una consulta. + */ + function contarRegistros() { + return @mysql_num_rows($this->mid_consulta); + } + + /** + * Devuelve el nombre de un campo de una consulta. + */ + function obtenerNombreCampo($numero_campo) { + return mysql_field_name($this->mid_consulta, $numero_campo); + } + + /** + * Muestra los datos de una consulta (para debug). + */ + function verConsulta() { + echo "\n"; + // mostramos los nombres de los campos + for ($i = 0; $i < $this->contarCampos(); $i++) { + echo "\n"; + } + echo "\n"; + // mostrarmos los registros + while ($row = mysql_fetch_row($this->mid_consulta)) { + echo " \n"; + for ($i = 0; $i < $this->contarCampos(); $i++) { + echo "\n"; + } + echo "\n"; + } + } + + /** + * Cierra la conexion a la BD. + */ + function cierraConexion() { + mysql_free_result($this->mid_consulta); + } + +} //fin de la Clase conexion_mysql +?> \ No newline at end of file diff --git a/classes/pagination.php b/classes/pagination.php new file mode 100644 index 0000000..7bf7580 --- /dev/null +++ b/classes/pagination.php @@ -0,0 +1,138 @@ + How many adjacent pages should be shown on each side? + $total_pages -> items + $limit -> how many items to show per page + $page -> Current page + $pagina -> Pagina + */ + if(!is_array($pagina)&&!strstr($pagina,"?")) + $pagina = $pagina."?"; + + /* Setup vars for query. */ + if($page) + $start = ($page - 1) * $limit; //first item to display on this page + else + $start = 0; //if no page var is given, set start to 0 + + /* Setup page vars for display. */ + if ($page == 0) $page = 1; //if no page var is given, default to 1. + $prev = $page - 1; //previous page is page - 1 + $next = $page + 1; //next page is page + 1 + $lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up. + $lpm1 = $lastpage - 1; //last page minus 1 + + /* + Now we apply our rules and draw the pagination object. + We're actually saving the code to a variable in case we want to draw it more than once. + */ + $pagination = ""; + if($lastpage > 1) + { + $pagination .= "
"; + //previous button + if ($page > 1){ + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$prev,$pagina[0]):$pagina."&page=$prev"; + $pagination.= " Previous"; + }else + $pagination.= " Previous"; + + //pages + if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up + { + for ($counter = 1; $counter <= $lastpage; $counter++) + { + if ($counter == $page) + $pagination.= "$counter"; + else{ + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$counter,$pagina[0]):$pagina."&page=$counter"; + $pagination.= "$counter"; + } + } + } + elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some + { + //close to beginning; only hide later pages + if($page < 1 + ($adjacents * 2)) + { + for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) + { + if ($counter == $page) + $pagination.= "$counter"; + else{ + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$counter,$pagina[0]):$pagina."&page=$counter"; + $pagination.= "$counter"; + } + } + $pagination.= "..."; + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$lpm1,$pagina[0]):$pagina."&page=$lpm1"; + $pagination.= "$lpm1"; + + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$counter,$pagina[0]):$pagina."&page=$counter"; + $pagination.= "$lastpage"; + } + //in middle; hide some front and some back + elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) + { + $pagina_uf = is_array($pagina)?str_replace($pagina[1],1,$pagina[0]):$pagina."&page=1"; + $pagination.= "1"; + + $pagina_uf = is_array($pagina)?str_replace($pagina[1],2,$pagina[0]):$pagina."&page=2"; + $pagination.= "2"; + $pagination.= "..."; + for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) + { + if ($counter == $page) + $pagination.= "$counter"; + else{ + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$counter,$pagina[0]):$pagina."&page=$counter"; + $pagination.= "$counter"; + } + } + $pagination.= "..."; + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$lpm1,$pagina[0]):$pagina."&page=$lpm1"; + $pagination.= "$lpm1"; + + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$lastpage,$pagina[0]):$pagina."&page=$lastpage"; + $pagination.= "$lastpage"; + } + //close to end; only hide early pages + else + { + $pagina_uf = is_array($pagina)?str_replace($pagina[1],1,$pagina[0]):$pagina."&page=1"; + $pagination.= "1"; + + $pagina_uf = is_array($pagina)?str_replace($pagina[1],2,$pagina[0]):$pagina."&page=2"; + $pagination.= "2"; + $pagination.= "..."; + for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) + { + if ($counter == $page) + $pagination.= "$counter"; + else{ + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$counter,$pagina[0]):$pagina."&page=$counter"; + $pagination.= "$counter"; + } + } + } + } + + //next button + if ($page < $counter - 1) { + $pagina_uf = is_array($pagina)?str_replace($pagina[1],$next,$pagina[0]):$pagina."&page=$next"; + $pagination.= "Next "; + } + else + $pagination.= "Next "; + $pagination.= "
\n"; + } + return $pagination; + } +?> \ No newline at end of file diff --git a/classes/templates.class.php b/classes/templates.class.php new file mode 100644 index 0000000..93d47b1 --- /dev/null +++ b/classes/templates.class.php @@ -0,0 +1,139 @@ + +plantilla = ($plantilla == "") ? "tumblr" : $plantilla; + } + + function cargarPlantilla($entrada, $salida, $plantilla_usar) { + $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm"; + + if (!file_exists($plantilla_usar)) { + die("No se encuentra la plantilla :".$plantilla_usar); + } else { + if(!$fd = fopen($plantilla_usar, "r")) { + die("Error en la plantilla"); + } else { + $salida_xhtml = fread($fd, filesize ($plantilla_usar)); + fclose ($fd); + $salida_xhtml = stripslashes($salida_xhtml); + $this->texto_plantilla = $salida_xhtml; + for ($i = 0; $i < count($entrada); $i++) { + $salida_xhtml = str_replace($entrada[$i], $salida[$i], $salida_xhtml); + } + $this->plantilla_cargada = $salida_xhtml; + } + } + } + + function precargarPlantillaConBloque($entrada, $salida, $plantilla_usar) { + $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm"; + + if (!file_exists($plantilla_usar)) { + die("No se encuentra la plantilla :".$plantilla_usar); + } else { + if(!$fd = fopen($plantilla_usar, "r")) { + die("Error en la plantilla"); + } else { + $salida_xhtml = fread($fd, filesize ($plantilla_usar)); + fclose ($fd); + $salida_xhtml = stripslashes($salida_xhtml); + $this->texto_plantilla = $salida_xhtml; + + $this->cargaAntesBloque("comentarios"); + $this->cargaDespuesBloque("comentarios"); + + $this->antesBloque = $this->procesaBloque($entrada, $salida, $this->antesBloque); + $this->despuesBloque = $this->procesaBloque($entrada, $salida, $this->despuesBloque); + } + } + } + + function cargarPlantillaConBloque($entrada, $salida, $plantilla_usar, $nombreBloque) { + $plantilla_usar = "themes/".$this->plantilla."/".$plantilla_usar.".htm"; + + if (!file_exists($plantilla_usar)) { + die("No se encuentra la plantilla :".$plantilla_usar); + } else { + if(!$fd = fopen($plantilla_usar, "r")) { + die("Error en la plantilla"); + } else { + $salida_xhtml = fread($fd, filesize ($plantilla_usar)); + fclose ($fd); + $salida_xhtml = stripslashes($salida_xhtml); + $this->texto_plantilla = $salida_xhtml; + + $this->cargaBloque($nombreBloque); + + $this->bloqueFinal .= $this->procesaBloque($entrada, $salida, $this->bloque); + } + } + } + + function procesaBloque($entrada, $salida, $bloque) { + for ($i = 0; $i < count($entrada); $i++) { + $bloque = str_replace($entrada[$i], $salida[$i], $bloque); + } + return $bloque; + } + + function cargaBloque($nombreBloque) { + $inicioBloque = "[bloque: ".$nombreBloque."]"; + $finBloque = "[/bloque: ".$nombreBloque."]"; + $ini = strpos($this->texto_plantilla,$inicioBloque)+strlen($inicioBloque); + $fin = strpos($this->texto_plantilla,$finBloque); + $this->bloque = substr($this->texto_plantilla,$ini,($fin-$ini)); + } + + function cargaAntesBloque($nombreBloque) { + $inicioBloque = "[bloque: ".$nombreBloque."]"; + $ini = strpos($this->texto_plantilla,$inicioBloque); + $this->antesBloque = substr($this->texto_plantilla,0,$ini); + } + + function cargaDespuesBloque($nombreBloque) { + $finBloque = "[/bloque: ".$nombreBloque."]"; + $fin = strpos($this->texto_plantilla,$finBloque); + $this->despuesBloque = substr($this->texto_plantilla,($fin+strlen($finBloque)),strlen($this->texto_plantilla)); + } + + function mostrarPlantillaConBloque() { + echo $this->antesBloque.$this->bloqueFinal.$this->despuesBloque; + } + + function mostrarPlantilla() { + echo $this->plantilla_cargada; + } + + function renderizaEtiqueta($texto="", $etiquetaHtml="p", $claseCss="") { + echo "<".$etiquetaHtml." class=\"".$claseCss."\">".$texto.""; + } + + function renderizaTexto($texto="") { + echo $texto; + } +} + +?> \ No newline at end of file diff --git a/classes/user.class.php b/classes/user.class.php new file mode 100644 index 0000000..52e5100 --- /dev/null +++ b/classes/user.class.php @@ -0,0 +1,141 @@ + +conf = new configuration(); + } + + function isAdmin() { + if(isset($_COOKIE["gelato_cookie"]) && $_COOKIE["gelato_cookie"] && $_COOKIE["gelato_cookie"]!="") { + $galleta = explode(",",$_COOKIE["gelato_cookie"]); + if ($this->validaUsuario($galleta[1],$galleta[2])) { + $_SESSION["user_id"]=$galleta[0]; + $_SESSION["usuario_login"]=$galleta[1]; + } else { + $_SESSION["user_id"]=""; + $_SESSION["user_login"]=""; + unset($_SESSION["user_id"]); + unset($_SESSION["user_login"]); + } + } + if (isset($_SESSION["user_id"]) && isset($_SESSION["user_login"])) { + return true; + } + return false; + } + + function validateUser($user="", $password="") { + if ($this->ejecutarConsulta("SELECT id_user, login, password FROM ".$this->conf->tablePrefix."users WHERE login='".$user."' AND password='".$password."'")) { + if ($this->contarRegistros()>0) { + $register=$this->obtenerRegistro(); + $_SESSION['user_id']=$register["id_user"]; + $_SESSION['user_login']=$register["login"]; + if (isset($_POST["save_pass"])) { + $cookie_life = 60*24*3600; + setcookie("gelato_cookie",$register["id_user"].",".$register["login"].",".$register["password"],time()+$cookie_life); + } + return true; + } else { + return false; + } + } else { + return false; + } + } + + function closeSession() { + $_SESSION = array(); + $_COOKIE["gelato_cookie"]=""; + setcookie("gelato_cookie","",time()-3600,'/','',0); + setcookie("gelato_cookie","",0); + unset($_COOKIE["gelato_cookie"]); + unset($_COOKIE[session_name()]); + if (session_destroy()) { + return true; + } else { + return false; + } + } + + function userExist($user="") { + if ($this->ejecutarConsulta("SELECT * FROM ".$this->conf->tablePrefix."users WHERE login='".$user."'")) { + if ($this->contarRegistros()>0) { + return true; + } else { + return false; + } + } + } + + function addUser($fieldsArray) { + if ($this->ejecutarConsulta("SELECT id_user FROM ".$this->conf->tablePrefix."users WHERE login='".$fieldsArray['login']."'")) { + if ($this->contarRegistros()==0) { + if ($this->insertarDeFormulario($this->conf->tablePrefix."users", $fieldsArray)) { + $this->confirmationEmail($fieldsArray['email'], $fieldsArray['login'], $fieldsArray['password']); + header("Location: ".$this->conf->urlGelato."/admin/admin.php?added=true"); + die(); + } else { + header("Location: ".$this->conf->urlGelato."/admin/admin.php?error=2&des=".$this->merror); + die(); + } + } else { + header("Location: ".$this->conf->urlGelato."/admin/admin.php?error=1"); + die(); + } + } + } + + function modifyUser($fieldsArray, $id_user) { + if ($this->modificarDeFormulario($this->conf->tablePrefix."users", $fieldsArray, "id_user=$id_user")) { + header("Location: ".$this->conf->urlGelato."/admin/admin.php?modified=true"); + die(); + } else { + header("Location: ".$this->conf->urlGelato."/admin/admin.php?error=2&des=".$this->merror); + die(); + } + } + + function deleteUser($idUser) { + $this->ejecutarConsulta("DELETE FROM ".$this->conf->tablePrefix."users WHERE id_user=".$idUser); + } + + function getUsers($show="10", $from="0") { + $sqlStr = "select * from ".$this->conf->tablePrefix."users ORDER BY id_user DESC LIMIT $from,$show"; + $this->ejecutarConsulta($sqlStr); + return $this->mid_consulta; + } + + function getUserByID($idUser) { + if ($this->ejecutarConsulta("select * from ".$this->conf->tablePrefix."users where id_user=".$idUser)) { + if ($this->contarRegistros()>0) { + return $registro=$this->obtenerRegistro(); + } else { + return false; + } + } + } + + function confirmationEmail($email="", $user="", $password="") { + $msg = "Account information on gelato CMS

"; + $msg .= "Username: ".$user."

"; + $msg .= "Password: ".$password."

"; + $msg .= "Don't tell your password to anybody!!

"; + + sendMail($email, "Register conformation on gelato CMS", $msg, "no-reply@gelatocms.com"); + } +} +?> \ No newline at end of file diff --git a/config-sample.php b/config-sample.php new file mode 100644 index 0000000..2d68ab9 --- /dev/null +++ b/config-sample.php @@ -0,0 +1,30 @@ + + \ No newline at end of file diff --git a/db/gelato_db.sql b/db/gelato_db.sql new file mode 100644 index 0000000..eac12a9 --- /dev/null +++ b/db/gelato_db.sql @@ -0,0 +1,41 @@ +CREATE TABLE `gel_data` ( + `id_post` int(11) NOT NULL auto_increment, + `title` text collate latin1_general_ci, + `url` varchar(250) collate latin1_general_ci default NULL, + `description` text collate latin1_general_ci, + `type` tinyint(4) NOT NULL default '1', + `date` datetime NOT NULL, + `id_user` int(10) NOT NULL, + PRIMARY KEY (`id_post`) +) ENGINE = MYISAM ; + +CREATE TABLE `gel_users` ( + `id_user` int(10) unsigned NOT NULL auto_increment, + `name` varchar(100) default NULL, + `login` varchar(100) NOT NULL default '', + `password` varchar(64) NOT NULL default '', + `email` varchar(100) default NULL, + `website` varchar(150) default NULL, + `about` text, + PRIMARY KEY (`id_user`) +) ENGINE = MYISAM ; + +CREATE TABLE `gel_config` ( + `posts_limit` int(3) NOT NULL, + `title` varchar(250) collate latin1_general_ci NOT NULL, + `description` text collate latin1_general_ci NOT NULL, + `lang` varchar(10) collate latin1_general_ci NOT NULL, + `template` varchar(100) collate latin1_general_ci NOT NULL, + `url_installation` varchar(250) collate latin1_general_ci NOT NULL, + `url_friendly` tinyint(1) NOT NULL, + `rich_text` tinyint(1) NOT NULL, + PRIMARY KEY (`title`) +) ENGINE = MYISAM ; + +-- Example data for table `gel_config` + +INSERT INTO `gel_config` VALUES (10, 'Tumble title', 'tumble description', 'en', 'tumblr', 'http://localhost/gelato', 1, 1); + +-- The password is "demo" without the " + +INSERT INTO `gel_users` VALUES (1, 'System administrator', 'admin', 'fe01ce2a7fbac8fafaed7c982a04e229', 'correo@correo.com', 'page', 'about'); \ No newline at end of file diff --git a/images/Thumbs.db b/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..e232ab1e6d7fa597079ea88eb8f2116dbcdfb68d GIT binary patch literal 89088 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 Qim!Q!{Nm?)_O4a`A8mE02><{9 literal 0 HcmV?d00001 diff --git a/images/cabecera.gif b/images/cabecera.gif new file mode 100644 index 0000000000000000000000000000000000000000..84d726e4c4cd23086cccef82e22159f8c6599503 GIT binary patch literal 306 zcmZ?wbhEHbe8t4au$ch_{{R2~^y!s{4=>)nefG?mgZuaIK5$?!P!KGMPAL9lVPs(7 zV9)_cfXrZExgX$R$fBwK`t0ui2^xJVne#GMt;>16uR!N~N$&lMb?^6N|7l}Nbeh7W zH?yJWWRBJR3oA;z)<&(rv8L?w+p7H!HdOfN%|8EPOV!!D{`x~otS{Hye*a@n-TC*w z|2H%?HTyX_ySPiVbocc3^-q{MY4Vh*F>M_s(`L_^J8%Aig^L!a&2XEwWaX;WYu2t? zzaeZ{ao5Ie+js2TwR=x~;qt9}4;?;o^w{x9n>*Q0oIQ8`!o^GBr&e6Pe&gn?+e@w< wyz}7UqsLFm?wxu1^404%Z(H|odGYS^m#^QBw~2oI{^#$%|94wLIv5zN0RU*GX8-^I literal 0 HcmV?d00001 diff --git a/images/cita.gif b/images/cita.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa0d19ef66bda2f32e57b19c258b65dc763169f6 GIT binary patch literal 2006 zcmcgq`B&3-7X2johVab-F$853V~Q+A+bAw5G6dp^U^7-*jztM>WsEu*b!ZMn`^_Q* zq%>|oAu0$~l!B2(qkw(`2pG1gY$8I!z6d195+GxS&L1)NhkM>R@7;ILJ@4(@y~B5N zs-Me?MU%y`DmX?;0k&)co zTrQWJl9Iyb^F<<2cX#*Y%a`-=@?O4tDHIAd8qI?T59D(B$B!S2ii$EbGt0`#7S~Qp zOlY;*=;-L@&!6}7^b8CPC=?34UVr1pjYXq3Z{94*J3Bj36s@bPTT~4V4K+12RaI3T zI&`SIx>_ogA_y`*KHlEmuG8s8M@J0?!|?EMLqkJjW20KFZf$K{><$hN*4Nj!wYBy4 z_ZyAI#f*i8g}uGK;QxZvf4Tg13qY_SKrE3!G$H|qxt#QC@^A7hSFd5n1fsPxJ>!zK z47Pz3**SOrxEoJde<1D7JsOE7hKPw2yz1$*(z5dBFP>9yL|Osny8~G{G?)bH$>^K6 z%`JEeEZIvT6{OeyZvDEoufOku*#8^2ORNJBhVp4@dS=!%H@{%6umNAEYj-jDTI`R- z^IqY#@<`;D^#ZM6YWzy zw6MP}&4=Gr|MZ-`7SkT%8v3mG9~$|p+lL#T{d+_UAE~<)TKahGz3SX(*G&qD0t5+Z z#ojWNvA6b`cYw*sG&!iv-ecS4BAOm;FXDGMmY2>>=zQjOxZLu)J~{MO^3U$|^JPz*2C~jC63RDayE3r zxp3-$*NJn`^^*_o+wxRv*dTThPWLsbc*1tnKwyyfUK;wikl;pC}& zaxts&QT4{18l}DUI$ZI+{rs_#bo0zd%Pe3X};1*Y?F{huZv5GM%-x3cn1n11tRnT8RawYyJL3be8J^ zi7tXNCBd2Zal&&xJr6FQwpmwY)2&PQ0*@J=I4V{I>bZCvW6+Ik8w+u2{*LygVxjyBb<~kPex1~KI_-qR= zstUNK+|W*KVkotDSr=w>Qo@;Nz0Bj*m_BjSVU;dauf8wt!`bHX!xxNI{=Sq=mHSAvGtCY^-rj7{G}$)VtK5)VW#gb85jCEFvZ7#e z-`fm-c;BqxlW8s`V$O1$L;(b0V#g8zVzpIgq2;n)tyPMWe`Y}T9%`6bAYSU`V&x-z zOgYOv?rP>e4f3quUr|aM?HEMwpDOH~_FnobDbsSqq;gCdg;u2@Hs1rzw@Mz?k(Whz zXfIw8!h^iEk#NB(F)U-t{P+J(N_M~kvj7|SiX9auzy&JU5R-=iSh*DblTF2_MAi?4 z>XirUWP$W;ju`niDnMlinzLvbxtvM|qs$}fDCmeR07KejaTIg82d{=R!X}7o!O{#* zEN8FIilJTUOdvSnZc;4CK-o)Q=2gup&?RIka_oHW*T8OB0My8c4SMW$tp?L?}G_8-HP3H^z)iyC~DYh8ifZ|UU zu&@q@1ew9WqGG_4$hE`b_1WG36Eyl#GUsKiT9@;BUxCi~lHB_h>u$3s$ux2>SOWlt C>Mf=K literal 0 HcmV?d00001 diff --git a/images/conversacion.gif b/images/conversacion.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d9f1a93c6df43cd166e422308bec45c391b95a7 GIT binary patch literal 2954 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 WjUp`%b>%l`o2j21rt literal 0 HcmV?d00001 diff --git a/images/enlace.gif b/images/enlace.gif new file mode 100644 index 0000000000000000000000000000000000000000..fa290531f101d30f952181b3aa1682bf908cbb95 GIT binary patch literal 1687 zcmcJM`%}{g7RA2_c|S-btlcWoNHJhZw`rNBB3c7M7UW@UwWVEfX$LKZPGxab#&Iz( zG)oZzvPjdkf<#1Aj1(122nj?=NJ3d4Bs>fW2>}uw0rKDx%+lGvVee1(&bf0wbLRXd zDd9l$m#2VJfE56IKA+R+eEs_M>gwvs%F5>E=GxlY*4CEC+9?PJ2y5q+-|qa z<=TET7z|>uSomBsx40@+j?rke!EtM0VPRuqqtm@^v)O(fGHP_@r!RGjD{jN|{N&^$ zolb8O4?LC)Z)|#(mX_rGuND>-v|6pzYBkR}^hTRZCYzX;7#$t$>+4ggR2GY+qod>H z%a? z>-Ei@Lu$2JE|+inJn7PIt5Z``FM3Bc8qLVa$aaKB(m|b0H*H&Cdq=H{g8 z@#W>^o}M1N-F~;NANcx+&17NY)UO0Btb4}-<9z~~Y@q^fD%PUq?9Lm5l0$>n+)#-A3*4DRc=|Tb@7S+&+d33+8TQ~M+ z^zy!BTqOx=@}rVJWx=tLxf2JLCRrixWSj|LFzS^zH}Tw-zn`&y0cf~Vko1dHnBt#H zrU(O=n%h+N!HeKb6$$Apl~<_Dc2q@nk2%4;}0cpmL8E!Xr+r+m`RoYNkc%f9ve@`2bkBkpbD6K5!03YBaJiZe0c&pAc?ha#M3m#ePv?vTH#XXHD0M z*TSc`q1Cf}=SU5WQzhh!`icGg3_1uw8R2$d@rmLFv(47-67o-&fyCkzJ5IKyB;~fpiBGP7qOoIu}f@n;@Oh@z0kDktgtdxK!63#;SJdC)IEu|G>Q_E-T_+ulk)id zD&Bq4wI=1h^3wqki4T7z#XPvhIn=}?-8-hrxz)}8*Sr571Lw!x0j|g%5W^%*cJUN! zeER-K$>nUMy#=5mRnKB#8|#bg5AU$OUp#ISq--p7R)<7nE3SW3+TbIVe;{euwzFAR**Ow|FiNY%_ZyXnR6_6A`Q1gw@?)16-L!OD%MnZ~dwLi$IX2DN6 zQr_z~7tA|{4o6{K!*3_2y0r1uQr8G2SL4#v7h>IdHaFF+KYM%Y!dUJ(&BgK0IqsQ__=mhcb43r&!wPt?3Br#nuOU|AQ<05 zLBV!r=SQ0{dHvCQtKmi(;>|S?2&n!3=h&%BH=CR0_~`%@wbS_>6R}$n%z_>!2UBB$ z%xT<33A&OtTkBbLhpZibdTOX(SwyY<`wIkra){Hr>e9a^R)PimT2S+xtXFgAZRQ|XtP}Bv0!^?7y&dN{Z z#8#jS)SyFLd0G|=j63))Dmh0_1kS^0FR6n Wd+~LMy7U&3e_QSsu>GBh%Ekafg z5I~H`E&ytdXXWEsAYi1)z{=0V@c;K828O@?7#M+azuvxQczfgw!_QZ5k`!kym=Dtf z5I}GPp0?B{vhZ@v6ExOhVEguzf#KC728MtC7#Ki?{QSwlz%R-0lUIh}^}!PiKVQF1 zR$jDn9!MWR0D%p7+FX~&!UxoB1l0T$sQKAF2B33+*8T<>@Ec;tuU`xd;tC8u1>_iB z9yktiNuuiNO$z`5hzVp0(4U!thMEj)A0IO?Ji5)mASlDYpyLSC_?LmS0+d=Kmb7k@y}m9R&H(vhHF5Ze*$gd;Add4@?&7&5@cZb z_8G|bVqjP`1t@=sf#LR526kmVpaH-2L0SO<2yDRrKfk~I|M`=h5oF^JppEAaGBB`k zGBCJ?Lqh7{Mh1q%J0Nn5Obq{i`~n&94I~8+Kwty@f&2?|?)P61O|0yQxMBqw_U9km z0HBLOmV%`K0tn)Q-@myT8Gy0z?Hj}pV|xY$hX4kKU27N^K7U|f2u=Y8EHGA9%wzy5 zV`2p9`NIv;3lKn%F!=rZ^6$6rjoE~O0d?mZ1H-)=3=E4VFfi=f1hfrk)2rveczz6t zP9-gdAFtkkTyPnr6(E41Uidxz)sfS4L{0S>*uQ;eV7LjCyLJ&0jUeysSPwSnkFplS zPbD3OXS??S4fs19q!%E7;0ft&OlS%#FVAc-Gb09$`&WQ20lMP1o#>L0u#@_e}BON_x;UV zhBx~UGW>l0GD+v`Rd`Yc2p~rE+<4Q=DenKDKfuiNS06}!XFz18OF%qb_w2QW$m#(C fh>_Cl3=m)dj8|3`UT=(b00000NkvXXu0mjfz)nefG?mgZuaIK5$?!P!KGMPAL9lVPs(7 zV9)_cfXrZExf8$>u$R_@-T58-J~tm ze_~0|$sDWs7gm&dwFa z{lB46wLHtEslB7KtGlOHza_G*Z}OC>)27czoKQJ)?!5U67A{hroxOPZij}KYS1p~i zX2Zr!o42^Ov~JzGYxkbLQrmazJ9PNS(dh?T*B?85=Ipstwi6Ld&g|E&-?(|}_MN-; t?mu|==<$=M&z`?{`RetXx9{G6`1tAbm#^Qx|M>ap;zhg6OhE<)YXAY?qX+;1 literal 0 HcmV?d00001 diff --git a/images/foto.gif b/images/foto.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0377ad16c450204bd72b2514920755a84aa3f46 GIT binary patch literal 4072 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 Vh$+^gz1MzD$LY4h5%Wg9ncJbd`@%9Shs z|Npmm@#4voCr_L>aoMtEMn>P_;^Nk=TX*WzsijMowzvP!%F0SgN@{FuY;JD;_U+&Q z|9{r6U%zYDt^)@Sym|Ahr>E!0kt2P5ALh=T`{&QM|Np;j-MaPl>(^(_oLRZ@dr3*j z-MfEnZNGi^@VmIUc*>M17cP8iZ*M<;{=A!;8w117A3uHs1^q27EWCU7Zbik1`1t>x zo}QmS|2}x|;G8*gcI|q)cI^)ahJS0;tl{MRxp3jalP6E^+`04r|G&3x-HMNo|Ni~Y z{{8!{t^eoeznwR4UT^Quii(Pwnwpg>KR$o{{M)y0%a?!t^yznN>*rUmerafYx_$e0 zQPKaDl)tN1t=h3;$Ku6*dV71HJb99tnd#x-@$TLKKY#x0+qX|m?c3V5YybWGmy?ro z|Ni~t1q(8@FwQD6@V9sNNjb%Cc;eK|m`L4g?B*?b*WBYBq^~7uwQyyhiV)BV zJLSfr(86GsI7>cVz-Cr~I2#ww%83)*&N186e})@uToui-5$Qo(_QpPZzRT>*#E(>|m5IwrS?$Vqvfb0LyDL A9{>OV literal 0 HcmV?d00001 diff --git a/images/information.png b/images/information.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e4722324ba066a550415999190735f0b8feef8 GIT binary patch literal 918 zcmV;H18Mw;P)>(}qeiv0g2&Ey3b_}G}i;vc{NVK{vICBx-sU!OBD{?9$t=)4xD z2Oxmp2KY_C8vN_~?}e_aT--X+ybMp@{$hCX@jJucfBzZyxtJNG_&FGEzxm9te(&9{ z3@i-srzZG;4FL!sumQePE-U^1{pYZ&3b&NH1TVv>`yUwo{Q1qGFE7Zz0F*y>|2+dE z6C;DRBoD*m_n#Ry?7IDo;r~C|Q?tVE0R#{e$P}QTV-)%ROKC{*F&w}Bj^Wq$Ukty0 z{$ubpk!0{Sm16h}H0;;UUkq2Dd|*%z;b%}&;gkCR{dWvVFF*i+4fyr+h3FvI;9 zUl@M>{tYznFVN|K7}gzs#IP2KfBpW&@axYnhA-d0Gdy_xiNVG|o`Lb#uUL>?fB*u= z0?4h zB82DR3Lqv(Wc+>l_UjJ@VQyAnEHQx%0~rE|q5nY5e;ED&z4j026@G4ZhL@i{GcYp# zdkWGC5I_(Ee*IZ|=;{*&c~Nd)dI35W=#)SU1qMwyK?W`kR)*X_eQ?rwk2ipE0oErZ#7^=%M zJoxa5;ojBT&w##I0@4Z)K=6cQn!F&xLu86bcd(Q~6&=nUom|Nlk-Lo$xx-wz2O4Gb_wU}j=i s#K`b_*~#_QD47W$fEX#w&Hw=h0H{BLdxllh{r~^~07*qoM6N<$g3ZFYTmS$7 literal 0 HcmV?d00001 diff --git a/images/logo.jpg b/images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3c762a9c394abe49bc4b27606cba52b3396dcd46 GIT binary patch literal 24049 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 literal 0 HcmV?d00001 diff --git a/images/mp3.gif b/images/mp3.gif new file mode 100644 index 0000000000000000000000000000000000000000..3aa6f454ba197d87db8f0d54e5febbff657827e0 GIT binary patch literal 2074 zcmV+#2<7)jNk%w1VO0QC0QUd@Pa6x7k&!|{L5v_5=HcO69Svd|7t71b&6R9vBoXYa zjr!=rlwm{O-roHD{Nu!+L$ zZsq0WyQ5>DgJ|UBpgW=uV& zZB1Y;8L?kKtv@8q#=`&mgwuuW@Go-vf9wW)xN32b4}c@ zi`&xBk4-b{=H_%dB4i^V;GKWc($WV40ec%0-J^H&%%fviH}=)6-KB_yJ0VRi8p~cg z)yBHKTsu)S5?D1Mx0GM!!+vBG4dr%G>#%{}O)=PQN9&__wJ{>Tw6c>wB(t7@LMYS8oV1C3*q3XKR5s|AS!6yZ=HAe;XGPqbe9V7dxkD%K@9$ww zCA@1!?Ayfh&yC}ugX7b<;m*Rcb6MlAgY(3hc1<&LLoK(rx8>5Y%(-;0p_;;ecj4jT z|Ni#Gz`x0SZwA9kh?c>_?>*(RUmg3;trK6(z`S~9Z1f4%4&dtqD zL>Y2sKEZ-$-JF2rXaVj6|oOhg@oA~(n^z-xY+0E+Gpa1{*nvGi% z6BEqIx7gRaEC2ui09620000R80Hp~WIIx?Cd+bJNTgb4X!-o(fN}Q<88@qcB2x{C| z&;h~>4!Ut1NwTELk_Wk!a)MFhNe>x32<&!GA-6O*bL!m5v!~CWKDmv!=fR~maHT?$ zgqcAaOm9G=N}WnI4Y#HO*<5w05oSgQP^*d^D>j2mA*IZA1u3nYHg0g^%AHHMuHCzM z^9s%ABt%-712Z(GskgA=NGJzh8iW^Lhjr zV0!!&IFvNr{E(0|HQkq=efdQwVRsKg$PNSoI0K-791f^ob`|3HVRo!}aEn6HNT}k9 zE8c?;iz@!NVTUvdC;*H&O30ctAuN<4j4rn5;*dj12!Vz*CYhuFFXk7dkShw*fR990 zY2}qx3ZP_-&Ik|zmP}$PCXrH7Ip&yxRjH+t{djq1nqi(PW|`VBh-I2p3a00tF0L71 zKW&ENBA!<6siy!L5J{+_iB?IcG=@eh>7;^X2mz&-Mv7>rm_EuWr4Be?=%$~7Dk`a^ z8tUn!p+*|&tFTu83X-U<(poF54hUfDtdh2>sx(v9iR-Y$78|Or#wJTFvdS9!XtU71 z%51dBPD|~p&lc-}2g7db?YGA|ur0CUlKbtp0&x3kxwx{6EwDbGEAPDYqFe91^rnmN zy^rqeuebXCi*LXJf7@@t-*#irw*({Xt->BOjPSwpLVT{m7-wv+#TPFuZ^jr4;BiqS zKU^|k!L|kR$}B59Q^q2lHqZ?{dU@nf33JllUHrFu7CzC-u@CeKm;-{eG7ab{~RbmwndO^0wTzk z^sv4F>92Q=%iusZ$U%X0NP!@98}v*_LTO}Bgb>sQS3(Fwkbx1aEOzA*Ai=<(SN~|J{Op-;e zAwxbM_+k=oXvH$J(T!B&K@6xv6RgnijVHw73cogja~yy-t#QH{O?X2%vXN{Rz=3LJ z!iG{*Fn&M40WyBTl?*uH2i$n1>}n7L9yq~{PPqpZ1*yrj{h*UrRSYC|>HIO7rZn+Vd{D22}@T510>C1t5z#FYZMhp(XgCE4? zB;D{x8o=>`TZEti;0&iY$4Sm|n)96K48bja0FE@YglYysh(c~d&w55=1Q#g^Ndf`@ EI|{BiQ~&?~ literal 0 HcmV?d00001 diff --git a/images/post.gif b/images/post.gif new file mode 100644 index 0000000000000000000000000000000000000000..57c2d35c360902d0c7c4a1c913dfb89673a976fa GIT binary patch literal 2374 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 literal 0 HcmV?d00001 diff --git a/images/quote.gif b/images/quote.gif new file mode 100644 index 0000000000000000000000000000000000000000..d8ad322bf0be013949d6412c9db399f711f20d2a GIT binary patch literal 635 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 +template); + + $param_url = explode("/",$_SERVER['PATH_INFO']); + + if (isset($_GET["post"])) { + $id_post = $_GET["post"]; + } else { + $id_post = (isset($param_url[2])) ? ((is_numeric($param_url[2])) ? $param_url[2] : null) : null; + } + + $input = array("{Title}", "{Description}", "{URL_Tumble}"); + $output = array($conf->title, $conf->description, $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_header"); + $template->mostrarPlantilla(); + + if (!$id_post) { + + $limit=$conf->postLimit; + + if(isset($_GET['page']) && is_numeric($_GET['page']) && $_GET['page']>0) { // Is defined the page and is numeric? + $from = (($_GET['page']-1) * $limit); + } else { + $from = 0; + } + + $rs = $tumble->getPosts($limit, $from); + + if ($tumble->contarRegistros()>0) { + while($register = mysql_fetch_array($rs)) { + + $permalink = $conf->urlGelato."/index.php/post/".$register["id_post"]."/"; + switch ($tumble->getType($register["id_post"])) { + case "1": + $input = array("{Date_Added}", "{Permalink}", "{Title}", "{Body}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $register["title"], $register["description"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_regular_post"); + $template->mostrarPlantilla(); + break; + case "2": + $input = array("{Date_Added}", "{Permalink}", "{PhotoURL}", "{PhotoAlt}", "{Caption}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $register["url"], "", $register["description"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_photo"); + $template->mostrarPlantilla(); + break; + case "3": + $input = array("{Date_Added}", "{Permalink}", "{Quote}", "{Source}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $register["description"], $register["title"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_quote"); + $template->mostrarPlantilla(); + break; + case "4": + $input = array("{Date_Added}", "{Permalink}", "{URL}", "{Name}", "{Description}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $register["url"], $register["title"], $register["description"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_url"); + $template->mostrarPlantilla(); + break; + case "5": + $input = array("{Date_Added}", "{Permalink}", "{Title}", "{Conversation}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $register["title"], $tumble->formatConversation($register["description"]), $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_conversation"); + $template->mostrarPlantilla(); + break; + case "6": + $input = array("{Date_Added}", "{Permalink}", "{Video}", "{Caption}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $tumble->getVideoPlayer($register["url"]), $register["description"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_video"); + $template->mostrarPlantilla(); + break; + case "7": + $input = array("{Date_Added}", "{Permalink}", "{Mp3}", "{Caption}", "{URL_Tumble}"); + $output = array($register["date"], $permalink, $tumble->getMp3Player($register["url"]), $register["description"], $conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_mp3"); + $template->mostrarPlantilla(); + break; + } + } + + echo pagination($tumble->getPostsNumber(), $limit, isset($_GET['page']) ? $_GET['page'] : 1, "index.php", 2); // Shows the pagination + + } else { + $template->renderizaEtiqueta("No posts in this tumblelog.", "div","error"); + } + } else { + /* + $row = $tumble->obtenerArticulo($id_post); + + */ + + } + + $input = array("{URL_Tumble}"); + $output = array($conf->urlGelato); + + $template->cargarPlantilla($input, $output, "template_footer"); + $template->mostrarPlantilla(); +?> \ No newline at end of file diff --git a/login.php b/login.php new file mode 100644 index 0000000..5508dac --- /dev/null +++ b/login.php @@ -0,0 +1,109 @@ + +isAdmin()) { + header("Location: ".$conf->urlGelato."/admin/index.php"); +} else { + if (isset($_POST["pass"]) && isset($_POST["login"])) { + if ($user->validateUser($_POST['login'], md5($_POST['pass']))) { + header("Location: ".$conf->urlGelato."/admin/index.php"); + } else { + header("Location: ".$conf->urlGelato."/login.php?error=1"); + } + } + else { +?> + + + + gelato :: Login screen + + + + + + + +
+ gelato CMS +
+ + + +
+
+
+

Ingresar al sistema

+
+
+
+

+

+

+

+

+

+

+
+ + +
+  You must be registered to use gelato. +
+ +
+  You must be logged on the system. +
+ +
+

+
+
+
+

+ gelato CMS :: PHP/MySQL Tumblelog Content Management System. +

+
+
+ + + + \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..c3eb1cc --- /dev/null +++ b/readme.txt @@ -0,0 +1,15 @@ +==== How to install gelato CMS developers preview ===== + +1) Download and unzip the gelato package, if you haven't already. +2) Create a database for gelato on your web server, as well as a MySQL user who has all privileges for accessing and modifying it. +3) Execute the script /db/gelato_db.sql into your database. +4) Rename the config-sample.php file to config.php. +5) Open config.php in your favorite text editor and fill in your database details. + Note: The test data on the script /db/gelato_db.sql use the table prefix 'gel_' +6) Place the gelato files in the desired location on your web server. + Note: The test data on the script /db/gelato_db.sql point the installation to http://localhost/gelato +7) Set CHMOD / permission ( Chmod 777 ) to the folder 'uploads' + +That's it! gelato should now be installed. + Demo user: admin + Demo pass: demo \ No newline at end of file diff --git a/rss.php b/rss.php new file mode 100644 index 0000000..8dd0cff --- /dev/null +++ b/rss.php @@ -0,0 +1,76 @@ + +\n"; + + include("classes/gelato.class.php"); + $tumble = new gelato(); + $rs = $tumble->getPosts("20"); + if ($tumble->contarRegistros()>0) { +?> + + + + <?=htmlspecialchars(replaceAccents($conf->title));?> + urlGelato;?> + description));?> + EN + http://blogs.law.harvard.edu/tech/rss + gelato CMS + + urlGelato;?>/images/information.png + <?=htmlspecialchars(replaceAccents($conf->description));?> + urlGelato;?> + +urlGelato."/index.php/post/".$register["id_post"]."/"); + $formatedDate = gmdate("D, d M Y H:i:s \G\M\T", strtotime($register["date"])); + ?> + + + <?=$tit;?> + + + + system:unfiled + urlGelato."/index.php/post/".$register["id_post"]."/";?> + + + + + + + \ No newline at end of file diff --git a/themes/tumblr/img/Thumbs.db b/themes/tumblr/img/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..04ee598771a3b1292dd6235b969108bb24fc00e1 GIT binary patch literal 12800 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 X8?vnETgc8Ita2Y}&i?m*aR>edk`76| literal 0 HcmV?d00001 diff --git a/themes/tumblr/img/bg.gif b/themes/tumblr/img/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..8fa6ef267df3400c7267f175b0fbc4bc0365e502 GIT binary patch literal 70 zcmZ?wbhEHbjEB<5wG8q|kKzxu41Cy+aTv^v0j=4P>n4Ss6mWBUo T@m^LdoY5s)HSOIiF$QY@RcRDh literal 0 HcmV?d00001 diff --git a/themes/tumblr/img/link.gif b/themes/tumblr/img/link.gif new file mode 100644 index 0000000000000000000000000000000000000000..d133c2cdd453af890a79ae0f063073aa1dcdce0d GIT binary patch literal 82 zcmZ?wbhEHb6ldUMn8?Hs931@a-Mjz)|1&T!DE?$&WME)o&;ha;K=KSs$|8L$vtRc& kP5N|Uh8Evfrd;3q9);W-SP*Cvy|NqX;&iMHF_V)Iqq@=jGxbE)m>gwwJ{QUa*`t0oN zii(QD!ot+l)RvZ(($doO^z^2trmtVWUb}Yf-o1NORaNiay*qpM?4CV)Zr;3ES6BD# z+qX%RCaqev>ihTa4<0<2F=NJ(B}=AEnUax_v2NYEg$oznxpQax_U$K6o;-2l#M`%T zCrp^|Gdj|9r!%zT^ZZWSr#l@w0OzV zCC&URSBf&OWpsC5rDx12FRHw9^VaRFRyGSAIIu=i(m|ZjNl21WTw;yHsWayoFB}wV z=DK;)jq#QaqYIae_${@YkDuPU)y(nstvcg74n}nj8SPJRzyJK%%=7<$7t4?5%&rU~ zJV7iOfs5E2T6tudSS&c2T)Pcowl*aeHgkpRn>l>o2zuhm(JZwhWTm1*pDbg=nvl$c z&OHoLVb}J|EPl3t#i4PVkAm_E7D>m+_c$hqytuTiS + {Date_Added} + + + +
+ Permalink + + +
+

{Title}

+ {Conversation} +
+ +
\ No newline at end of file diff --git a/themes/tumblr/template_footer.htm b/themes/tumblr/template_footer.htm new file mode 100644 index 0000000..f15f575 --- /dev/null +++ b/themes/tumblr/template_footer.htm @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/themes/tumblr/template_header.htm b/themes/tumblr/template_header.htm new file mode 100644 index 0000000..b562636 --- /dev/null +++ b/themes/tumblr/template_header.htm @@ -0,0 +1,25 @@ + + + + + + + {Title} + + + +
+ RSS + +

{Title}

+ +
+ {Description} +
\ No newline at end of file diff --git a/themes/tumblr/template_mp3.htm b/themes/tumblr/template_mp3.htm new file mode 100644 index 0000000..073bc31 --- /dev/null +++ b/themes/tumblr/template_mp3.htm @@ -0,0 +1,16 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + +
+ {Mp3} +
{Caption}
+
+ +
\ No newline at end of file diff --git a/themes/tumblr/template_photo.htm b/themes/tumblr/template_photo.htm new file mode 100644 index 0000000..8f375fe --- /dev/null +++ b/themes/tumblr/template_photo.htm @@ -0,0 +1,20 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + + +
+ {PhotoAlt}
+ +
{Caption}
+ +
+ + +
\ No newline at end of file diff --git a/themes/tumblr/template_quote.htm b/themes/tumblr/template_quote.htm new file mode 100644 index 0000000..3265a32 --- /dev/null +++ b/themes/tumblr/template_quote.htm @@ -0,0 +1,18 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + +
+ + {Quote} + +
— {Source}
+
+ +
\ No newline at end of file diff --git a/themes/tumblr/template_regular_post.htm b/themes/tumblr/template_regular_post.htm new file mode 100644 index 0000000..f27835b --- /dev/null +++ b/themes/tumblr/template_regular_post.htm @@ -0,0 +1,16 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + +
+

{Title}

+ {Body} +
+ +
\ No newline at end of file diff --git a/themes/tumblr/template_url.htm b/themes/tumblr/template_url.htm new file mode 100644 index 0000000..02849b3 --- /dev/null +++ b/themes/tumblr/template_url.htm @@ -0,0 +1,16 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + + + +
\ No newline at end of file diff --git a/themes/tumblr/template_video.htm b/themes/tumblr/template_video.htm new file mode 100644 index 0000000..c3fa163 --- /dev/null +++ b/themes/tumblr/template_video.htm @@ -0,0 +1,16 @@ + +
+ {Date_Added} +
+ + +
+ Permalink + + +
+ {Video} +
{Caption}
+
+ +
\ No newline at end of file diff --git a/uploads/Thumbs.db b/uploads/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..4a20f4b98c026e7eb1d8e5a348d67cf9782eee48 GIT binary patch literal 13312 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 Fe*nX&Qt
".$this->obtenerNombreCampo($i)."
".$row[$i]."