Author: roy.russo(a)jboss.com
Date: 2006-12-04 13:16:39 -0500 (Mon, 04 Dec 2006)
New Revision: 5756
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/content.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/content.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/media.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/media.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/blank.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/css/props.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/props.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/cell.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/cell.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/row.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/table.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/row.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/table.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/about.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/editable_selects.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/form_utils.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mclayer.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mctabs.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/validate.js
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/blank.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/images/advhr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/image.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/link.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/emotions.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cool.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cry.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-frown.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-innocent.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-kiss.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-sealed.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-smile.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-surprised.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-undecided.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-wink.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-yell.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/flash.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/images/flash.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/images/iespell.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/insertdate.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/inserttime.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/example.html
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/images/preview.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/image.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/anchor.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_de_se.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_fr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bullist.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/charmap.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cleanup.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/code.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/copy.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/custom_1.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cut.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/forecolor.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/help.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/hr.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/image.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/indent.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_de_se.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/link.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/numlist.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/outdent.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/paste.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/redo.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/removeformat.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/spacer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/strikethrough.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/sub.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/sup.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/undo.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/unlink.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/visualaid.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/link.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_de_se.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bullist.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/cleanup.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_de_se.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/numlist.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/redo.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/spacer.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/strikethrough.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_ru.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/undo.gif
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_popup.js
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_src.js
Log:
JBPORTAL-1120 - Upgraded TinyMCE to Version 2.0.8(2006-10-23); new plugins, many bug fixes
for our out-of-date-version, and a supposed fix for the scriptaculous inclusion bug.
Modified: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/blank.htm
===================================================================
--- trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/blank.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++ trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/blank.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,10 +1,9 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>blank_page</title>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
/>
+ <title>blank_page</title>
+ <meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
</head>
-<body>
+<body class="mceContentBody">
</body>
</html>
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/en.js
===================================================================
--- trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++ trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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.'
+});
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/langs/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/css/advhr.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,55 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advhr', 'uk,de,se');
-
-function TinyMCE_advhr_getControlHTML(control_name) {
- switch (control_name) {
- case "advhr":
- return '<img id="{$editor_id}_advhr"
src="{$pluginurl}/images/advhr.gif" title="{$lang_insert_advhr_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');"
/>';
- }
- return "";
-}
-
-/**
- * Executes the mceAdvanceHr command.
- */
-function TinyMCE_advhr_execCommand(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'] = 270;
- template['height'] = 180;
- 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,'<hr />');
- } else {
- tinyMCE.openWindow(template, {editor_id : editor_id, size : size,
width : width, noshade : noshade, mceDo : 'insert'});
- }
- }
-
- return true;
- }
- // Pass to next handler in chain
- return false;
-}
-
-function TinyMCE_advhr_handleNodeChange(editor_id, node, undo_index, undo_levels,
visual_aid, any_selection) {
- tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonNormal');
-
- do {
- if (node.nodeName.toLowerCase() == "hr")
- tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonSelected');
- } while ((node = node.parentNode));
-
- return true;
-}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('advhr');var
TinyMCE_AdvancedHRPlugin={getInfo:function(){return{longname:'Advanced
HR',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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.select!
edElement;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,'<hr
/>')}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("advh!
r",TinyMCE_AdvancedHRPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,90 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_advhr.html',
+ 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,'<hr />');
+ } 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);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/images/advhr.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/jscripts/rule.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 = '<hr';
+ if (size!='' && size!=0) {
+ html += ' size="' + size + '"';
+ }
+ if (width!='' && width!=0) {
+ html += ' width="' + width;
+ if (formObj.width2.value=='%') {
+ html += '%';
+ }
+ html += '"';
+ }
+ if (formObj.noshade.checked==true) {
+ html += ' noshade="noshade"';
+ }
+ html += ' />';
+
+ tinyMCEPopup.execCommand("mceInsertContent", true, html);
+ tinyMCEPopup.close();
+}
+
+function cancelAction() {
+ tinyMCEPopup.close();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,8 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+insert_advhr_desc : 'Horizontale rule',
+insert_advhr_width : 'Width',
+insert_advhr_size : 'Height',
+insert_advhr_noshade : 'No shadow'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,20 +1 @@
- Advlink plugin for TinyMCE
------------------------------
-
-About:
- This is a more advanced hr dialog contributed by Michael Keck.
- This one supports noshade, width and size.
-
-Installation instructions:
- * Copy the advlink directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "advlink".
- * Add this "hr[class|width|size|noshade]" to extended_valid_elements option.
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "advhr",
- theme_advanced_buttons1_add : "advhr",
- extended_valid_elements : "hr[class|width|size|noshade]"
- });
+Check the TinyMCE documentation for details on this plugin.
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advhr/rule.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,90 +1,36 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- function init() {
- // modified 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
- // supporting onclick event to open pop windows
- 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'));
- 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);
- }
- window.focus();
- }
-
- function insertHR() {
- var formObj = document.forms[0];
- if (window.opener) {
- var width = formObj.width.value;
- var size = formObj.size.value;
- var html = '<hr';
- if (size!='' && size!=0) {
- html += ' size="' + size + '"';
- }
- if (width!='' && width!=0) {
- html += ' width="' + width;
- if (formObj.width2.value=='%') {
- html += '%';
- }
- html += '"';
- }
- if (formObj.noshade.checked==true) {
- html += ' noshade';
- }
- html += ' />';
- tinyMCE.execCommand("mceInsertContent",true,html);
- top.close();
- }
- }
-
- function cancelAction() {
- top.close();
- }
-
-//-->
-</script>
-<style type="text/css">
-<!--
- input.radio {
- border: 1px none #000000;
- background-color: transparent;
- vertical-align: middle;
- }
--->
-</style>
+ <title>{$lang_insert_advhr_desc}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/rule.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <link href="css/advhr.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
</head>
-<body onload="init();">
- <form onsubmit="insertHR();return false;">
- <table border="0" cellpadding="0"
cellspacing="0" width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
+<body onload="tinyMCEPopup.executeOnLoad('init();');">
+<form onsubmit="insertHR();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_insert_advhr_desc}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <table border="0" cellpadding="4"
cellspacing="0">
<tr>
- <td colspan="2"
class="title">{$lang_insert_advhr_desc}</td>
- </tr>
- <tr>
- <td
align="right">{$lang_insert_advhr_width}:</td>
+ <td><label
for="width">{$lang_insert_advhr_width}</label></td>
<td nowrap="nowrap">
- <input name="width" type="text"
id="width" value="" style="width: 50px; vertical-align:
middle;" />
- <select name="width2" id="width2"
style="width: 50px; vertical-align: middle;">
+ <input id="width" name="width"
type="text" value="" />
+ <select name="width2" id="width2">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
<tr>
- <td align="right"
valign="top">{$lang_insert_advhr_size}:</td>
- <td><select name="size" type="text"
id="size" value="" style="width: 100px;">
+ <td><label
for="size">{$lang_insert_advhr_size}</label></td>
+ <td><select id="size"
name="size">
<option value="">Normal</option>
<option value="1">1</option>
<option value="2">2</option>
@@ -92,17 +38,24 @@
<option value="4">4</option>
<option value="5">5</option>
</select></td>
+ </tr>
<tr>
- <td align="right"
valign="top"><input type="checkbox" name="noshade"
id="noshade" class="radio" /></td>
<td><label
for="noshade">{$lang_insert_advhr_noshade}</label></td>
+ <td><input type="checkbox"
name="noshade" id="noshade" class="radio" /></td>
</tr>
- <tr>
- <td><input type="button"
name="insert" value="{$lang_insert}" onclick="insertHR();"
id="insert" /></td>
- <td align="right"><input
type="button" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();" id="cancel" /></td>
- </tr>
- </table></td>
- </tr>
- </table>
- </form>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertHR();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+</form>
</body>
</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/css/advimage.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,19 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advimage', 'uk,se,de');
-
-/**
- * Insert image template function.
- */
-function TinyMCE_advimage_getInsertImageTemplate() {
- var template = new Array();
-
- template['file'] = '../../plugins/advimage/image.htm';
- template['width'] = 380;
- template['height'] = 380;
-
- // 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);
-
- return template;
-}
+tinyMCE.importPluginLanguagePack('advimage');var
TinyMCE_AdvancedImagePlugin={getInfo:function(){return{longname:'Advanced
image',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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<imgs.length;i++){var
onmouseover=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var
onmouseout=tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],src);imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}break;case"get_from_editor_dom":var
imgs=content.getElementsByTagName("img");for(var i=0;i<imgs.length;i++){var
onmouseover=tinyMCE.cleanupEventS!
tr(tinyMCE.getAttrib(imgs[i],'onmouseover'));var onmouseout=tinyMCE.cl
eanupEventStr(tinyMCE.getAttrib(imgs[i],'onmouseout'));if((src=this._getImageSrc(onmouseover))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src,
null,
true);");imgs[i].setAttribute('onmouseover',"this.src='"+src+"';")}if((src=this._getImageSrc(onmouseout))!=""){if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src,
null,
true);");imgs[i].setAttribute('onmouseout',"this.src='"+src+"';")}}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('mceItem')==-1){tinyMCE.switchClass(editor_id+'_advimage','mceButtonSelected');return
true}}while((node=node.parentNode));tinyMCE.switchClass(editor_id+'_advimage','mceButtonNormal');return
true},_getImageSrc:function(s){var
sr,p=-1;if(!s)return"";if((p=s.indexOf('this.src='))!=-1){sr=s.substring(p+10);sr=sr.!
substring(0,sr.indexOf('\''));return
sr}return""}};tinyMCE.addPlugin("advimage",TinyMCE_AdvancedImagePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,148 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('advimage');
+
+var TinyMCE_AdvancedImagePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Advanced image',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_advimage.html',
+ 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;
+
+ // Language specific width and height addons
+ 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<imgs.length; i++) {
+ var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],
'onmouseover'));
+ var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],
'onmouseout'));
+
+ if ((src = this._getImageSrc(onmouseover)) != "") {
+ if (tinyMCE.getParam('convert_urls'))
+ src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
src);
+
+ imgs[i].setAttribute('onmouseover', "this.src='" + src +
"';");
+ }
+
+ if ((src = this._getImageSrc(onmouseout)) != "") {
+ if (tinyMCE.getParam('convert_urls'))
+ src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
src);
+
+ imgs[i].setAttribute('onmouseout', "this.src='" + src +
"';");
+ }
+ }
+ break;
+
+ case "get_from_editor_dom":
+ var imgs = content.getElementsByTagName("img");
+ for (var i=0; i<imgs.length; i++) {
+ var onmouseover = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],
'onmouseover'));
+ var onmouseout = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(imgs[i],
'onmouseout'));
+
+ if ((src = this._getImageSrc(onmouseover)) != "") {
+ if (tinyMCE.getParam('convert_urls'))
+ src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null,
true);");
+
+ imgs[i].setAttribute('onmouseover', "this.src='" + src +
"';");
+ }
+
+ if ((src = this._getImageSrc(onmouseout)) != "") {
+ if (tinyMCE.getParam('convert_urls'))
+ src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null,
true);");
+
+ imgs[i].setAttribute('onmouseout', "this.src='" + src +
"';");
+ }
+ }
+ 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('mceItem') == -1) {
+ tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonSelected');
+ return true;
+ }
+ } while ((node = node.parentNode));
+
+ tinyMCE.switchClass(editor_id + '_advimage', 'mceButtonNormal');
+
+ return true;
+ },
+
+ /**
+ * Returns the image src from a scripted mouse over image str.
+ *
+ * @param {string} s String to get real src from.
+ * @return Image src from a scripted mouse over image str.
+ * @type string
+ */
+ _getImageSrc : function(s) {
+ var sr, p = -1;
+
+ if (!s)
+ return "";
+
+ if ((p = s.indexOf('this.src=')) != -1) {
+ sr = s.substring(p + 10);
+ sr = sr.substring(0, sr.indexOf('\''));
+
+ return sr;
+ }
+
+ return "";
+ }
+};
+
+tinyMCE.addPlugin("advimage", TinyMCE_AdvancedImagePlugin);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/image.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/image.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/image.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,213 +1,241 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_image_title}</title>
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
+ <title>{$lang_insert_image_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/validate.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/functions.js"></script>
+ <link href="css/advimage.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="advimage"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="insertAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_advimage_tab_general}</a></span></li>
+ <li id="appearance_tab"><span><a
href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');"
onmousedown="return
false;">{$lang_advimage_tab_appearance}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_advimage_tab_advanced}</a></span></li>
+ </ul>
+ </div>
- function myRegexpReplace(in_str, reg_exp, replace_str, opts) {
- return in_str;
- if (typeof opts == "undefined")
- opts = 'g';
- var re = new RegExp(reg_exp, opts);
- return in_str.replace(re, replace_str);
- }
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_advimage_general}</legend>
- function insertImage() {
- if (window.opener) {
- var src = document.forms[0].src.value;
- var alt = document.forms[0].alt.value;
- var title = document.forms[0].title.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;
- var onmouseover = document.forms[0].onmouseover.value;
- var onmouseout = document.forms[0].onmouseout.value;
+ <table class="properties">
+ <tr>
+ <td class="column1"><label id="srclabel"
for="src">{$lang_insert_image_src}</label></td>
+ <td colspan="2"><table border="0"
cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input name="src" type="text"
id="src" value="" onchange="showPreviewImage(this.value);"
/></td>
+ <td id="srcbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr id="imagelistsrcrow">
+ <td class="column1"><label
for="imagelistsrc">{$lang_image_list}</label></td>
+ <td colspan="2"
id="imagelistsrccontainer"> </td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="altlabel"
for="alt">{$lang_insert_image_alt}</label></td>
+ <td colspan="2"><input id="alt" name="alt"
type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="titlelabel"
for="title">{$lang_advimage_title}</label></td>
+ <td colspan="2"><input id="title"
name="title" type="text" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
- // added 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
- // supporting onmouse over / out for image swap ...
- // only support the onmouse over/out if both values are given
- if (onmouseover!='' && onmouseout!='' &&
document.forms[0].onmousemove.checked==true) {
- onmouseover="this.src='" + onmouseover +
"';";
- onmouseout ="this.src='" + onmouseout +
"';";
- } else {
- onmouseover="";
- onmouseout ="";
- }
+ <fieldset>
+ <legend>{$lang_advimage_preview}</legend>
+ <div id="prev"></div>
+ </fieldset>
+ </div>
- window.opener.tinyMCE.insertImage(src, alt, border, hspace, vspace, width,
height, align, title, onmouseover, onmouseout);
- top.close();
+ <div id="appearance_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_advimage_tab_appearance}</legend>
- }
- }
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label id="alignlabel"
for="align">{$lang_insert_image_align}</label></td>
+ <td><select id="align" name="align"
onchange="changeAppearance();">
+ <option
value="">{$lang_insert_image_align_default}</option>
+ <option
value="baseline">{$lang_insert_image_align_baseline}</option>
+ <option
value="top">{$lang_insert_image_align_top}</option>
+ <option
value="middle">{$lang_insert_image_align_middle}</option>
+ <option
value="bottom">{$lang_insert_image_align_bottom}</option>
+ <option
value="texttop">{$lang_insert_image_align_texttop}</option>
+ <option
value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
+ <option
value="absbottom">{$lang_insert_image_align_absbottom}</option>
+ <option
value="left">{$lang_insert_image_align_left}</option>
+ <option
value="right">{$lang_insert_image_align_right}</option>
+ </select>
+ </td>
+ <td rowspan="6" valign="top">
+ <div class="alignPreview">
+ <img id="alignSampleImg" src="images/sample.gif"
alt="{$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.
+ </div>
+ </td>
+ </tr>
- function init() {
- var formObj = document.forms[0];
- var arrOnOver = new Array(), arrOnOut = new Array();
- var strOnOver = "", strOnOut = "";
- for (var i=0; i<document.forms[0].align.options.length; i++) {
- if (document.forms[0].align.options[i].value ==
tinyMCE.getWindowArg('align'))
- document.forms[0].align.options.selectedIndex = i;
- }
- formObj.src.value = tinyMCE.getWindowArg('src');
- formObj.alt.value = tinyMCE.getWindowArg('alt');
- formObj.title.value = tinyMCE.getWindowArg('title');
- formObj.border.value = tinyMCE.getWindowArg('border');
- formObj.vspace.value = tinyMCE.getWindowArg('vspace');
- formObj.hspace.value = tinyMCE.getWindowArg('hspace');
- formObj.width.value = tinyMCE.getWindowArg('width');
- formObj.height.value = tinyMCE.getWindowArg('height');
- formObj.height.value = tinyMCE.getWindowArg('height');
+ <tr>
+ <td class="column1"><label id="widthlabel"
for="width">{$lang_insert_image_dimensions}</label></td>
+ <td nowrap="nowrap">
+ <input name="width" type="text" id="width"
value="" size="5" maxlength="5" class="size"
onchange="changeHeight();" /> x
+ <input name="height" type="text" id="height"
value="" size="5" maxlength="5" class="size"
onchange="changeWidth();" /> px
+ </td>
+ </tr>
- // added 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
- // supporting onmouse over / out for image swap ...
- arrOnOver =
tinyMCE.getWindowArg('onmouseover').split(';');
- arrOnOut =
tinyMCE.getWindowArg('onmouseout').split(';');
- for (var i=0; i<arrOnOver.length; i++) {
- if (arrOnOver[i].indexOf('this.src=\'')!=-1) {
- strOnOver = arrOnOver[i];
- break;
- }
- }
- for (var i=0; i<arrOnOut.length; i++) {
- if (arrOnOut[i].indexOf('this.src=\'')!=-1) {
- strOnOut = arrOnOut[i];
- break;
- }
- }
- if (strOnOver!='') {
- strOnOver =
myRegexpReplace(strOnOver,"this.src='","","gi");
- strOnOver =
myRegexpReplace(strOnOver,"'","","gi");
- strOnOver =
myRegexpReplace(strOnOver,";","","gi");
- }
- if (strOnOut!='') {
- strOnOut =
myRegexpReplace(strOnOut,"this.src='","","gi");
- strOnOut =
myRegexpReplace(strOnOut,"'","","gi");
- strOnOut =
myRegexpReplace(strOnOut,";","","gi");
- }
- if (strOnOver!='' && strOnOut!='') {
- setOnMouseInput('enabled');
- formObj.onmousemove.checked = true;
- formObj.onmouseover.value = strOnOver;
- formObj.onmouseout.value = strOnOut;
- } else {
- setOnMouseInput('disabled');
- formObj.onmousemove.checked = false;
- formObj.onmouseover.value = '';
- formObj.onmouseout.value = '';
- }
+ <tr>
+ <td> </td>
+ <td><table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="constrain" type="checkbox"
name="constrain" class="checkbox" /></td>
+ <td><label id="constrainlabel"
for="constrain">{$lang_advimage_constrain_proportions}</label></td>
+ </tr>
+ </table></td>
+ </tr>
- window.focus();
+ <tr>
+ <td class="column1"><label id="vspacelabel"
for="vspace">{$lang_insert_image_vspace}</label></td>
+ <td><input name="vspace" type="text"
id="vspace" value="" size="3" maxlength="3"
class="number" onchange="changeAppearance();updateStyle();" />
+ </td>
+ </tr>
- }
+ <tr>
+ <td class="column1"><label id="hspacelabel"
for="hspace">{$lang_insert_image_hspace}</label></td>
+ <td><input name="hspace" type="text"
id="hspace" value="" size="3" maxlength="3"
class="number" onchange="changeAppearance();updateStyle();"
/></td>
+ </tr>
-// added 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
-// supporting onmouse over / out for image swap ...
-// this function is needed for visual show, if onmouse over/out available
- function setOnMouseInput(stat){
- var formObj = document.forms[0];
- if (stat=='enabled') {
- formObj.onmouseover.disabled = false;
- formObj.onmouseout.disabled = false;
- if (document.getElementById) {
-
document.getElementById('showInput1').style.color="#000000";
-
document.getElementById('showInput2').style.color="#000000";
- }
- formObj.onmouseout.value = formObj.src.value;
- } else {
- formObj.onmouseover.disabled = true;
- formObj.onmouseout.disabled =true;
- if (document.getElementById) {
-
document.getElementById('showInput1').style.color="#666666";
-
document.getElementById('showInput2').style.color="#666666";
- }
- }
- }
+ <tr>
+ <td class="column1"><label id="borderlabel"
for="border">{$lang_insert_image_border}</label></td>
+ <td><input id="border" name="border"
type="text" value="" size="3" maxlength="3"
class="number" onchange="changeAppearance();updateStyle();"
/></td>
+ </tr>
- function cancelAction() {
- top.close();
- }
-//-->
-</script>
-</head>
-<body onload="window.focus();init();">
- <form onsubmit="insertImage();return false;">
- <table border="0" cellpadding="0"
cellspacing="0" width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2"
class="title">{$lang_insert_image_title}</td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_src}:</td>
- <td><input name="src" type="text"
id="src" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_alt}:</td>
- <td><input name="alt" type="text"
id="alt" value="" style="width: 200px"
onblur="if(document.forms[0].title.value==''){
document.forms[0].title.value=this.value; }"
onfocus="if(document.forms[0].title.value==''){
document.forms[0].title.value=this.value; }" /></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_alt2}:</td>
- <td><input name="title" type="text"
id="title" value="" style="width: 200px" /></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_dimensions}:</td>
- <td nowrap="nowrap">
- <input name="width" type="text"
id="width" value="" size="5" maxlength="5"
style="vertical-align: middle; width: 50px; text-align: center;" /> x
- <input name="height" type="text"
id="height" value="" size="5" maxlength="5"
style="vertical-align: middle; width: 50px; text-align: center;" /> px
- </td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_border}:</td>
- <td><input name="border" type="text"
id="border" value="" size="3" maxlength="3"
style="vertical-align: middle; width: 30px; text-align: center;"
/></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_align}:</td>
- <td><select name="align">
- <option
value="">{$lang_insert_image_align_default}</option>
- <option
value="baseline">{$lang_insert_image_align_baseline}</option>
- <option
value="top">{$lang_insert_image_align_top}</option>
- <option
value="middle">{$lang_insert_image_align_middle}</option>
- <option
value="bottom">{$lang_insert_image_align_bottom}</option>
- <option
value="texttop">{$lang_insert_image_align_texttop}</option>
- <option
value="absmiddle">{$lang_insert_image_align_absmiddle}</option>
- <option
value="absbottom">{$lang_insert_image_align_absbottom}</option>
- <option
value="left">{$lang_insert_image_align_left}</option>
- <option
value="right">{$lang_insert_image_align_right}</option>
- </select>
- </td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_vspace}:</td>
- <td><input name="vspace" type="text"
id="vspace" value="" size="3" maxlength="3"
style="vertical-align: middle; width: 30px; text-align: center;"
/></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_image_hspace}:</td>
- <td><input name="hspace" type="text"
id="hspace" value="" size="3" maxlength="3"
style="vertical-align: middle; width: 30px; text-align: center;"
/></td>
- </tr>
- <tr>
- <td colspan="2"
nowrap="nowrap"><input type="checkbox"
name="onmousemove" id="onmousemove" style="border: 1px none
#000000; background-color: transparent; vertical-align: middle;"
onclick="if(this.checked==true){ setOnMouseInput('enabled'); }else{
setOnMouseInput('enable'); }" /><label
for="onmousemove"><b>{$lang_insert_image_onmousemove}</b>:</label></td>
- </tr>
- <tr>
- <td align="right" nowrap="nowrap"
id="showInput1">{$lang_insert_image_mouseover}:</td>
- <td><input name="onmouseover"
type="text" id="onmouseover" value="" style="width:
200px" /></td>
- </tr>
- <tr>
- <td align="right" nowrap="nowrap"
id="showInput2">{$lang_insert_image_mouseout}:</td>
- <td><input name="onmouseout"
type="text" id="onmouseout" value="" style="width:
200px" /></td>
- </tr>
- <tr>
- <td><input type="button"
name="insert" value="{$lang_insert}"
onclick="insertImage();" id="insert" /></td>
- <td align="right"><input
type="button" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();" id="cancel" /></td>
- </tr>
- </table></td>
- </tr>
- </table>
+ <tr>
+ <td><label id="classlabel"
for="classlist">{$lang_class_name}</label></td>
+ <td colspan="2">
+ <select id="classlist" name="classlist">
+ <option value="" selected>{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="stylelabel"
for="style">{$lang_advimage_style}</label></td>
+ <td colspan="2"><input id="style"
name="style" type="text" value=""
onchange="styleUpdated();" /></td>
+ </tr>
+
+ <!-- <tr>
+ <td class="column1"><label id="classeslabel"
for="classes">{$lang_advimage_classes}</label></td>
+ <td colspan="2"><input id="classes"
name="classes" type="text" value=""
onchange="selectByValue(this.form,'classlist',this.value,true);"
/></td>
+ </tr> -->
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_advimage_swap_image}</legend>
+
+ <input type="checkbox" id="onmousemovecheck"
name="onmousemovecheck" class="checkbox"
onclick="changeMouseMove();" />
+ <label id="onmousemovechecklabel"
for="onmousemovecheck">{$lang_advimage_alt_image}</label>
+
+ <table border="0" cellpadding="4" cellspacing="0"
width="100%">
+ <tr>
+ <td class="column1"><label id="onmouseoversrclabel"
for="onmouseoversrc">{$lang_advimage_mouseover}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="onmouseoversrc"
name="onmouseoversrc" type="text" value="" /></td>
+ <td id="onmouseoversrccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr id="imagelistoverrow">
+ <td class="column1"><label
for="imagelistover">{$lang_image_list}</label></td>
+ <td id="imagelistovercontainer"> </td>
+ </tr>
+ <tr>
+ <td class="column1"><label id="onmouseoutsrclabel"
for="onmouseoutsrc">{$lang_advimage_mouseout}</label></td>
+ <td class="column2"><table border="0"
cellspacing="0" cellpadding="0">
+ <tr>
+ <td><input id="onmouseoutsrc"
name="onmouseoutsrc" type="text" value="" /></td>
+ <td id="onmouseoutsrccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr id="imagelistoutrow">
+ <td class="column1"><label
for="imagelistout">{$lang_image_list}</label></td>
+ <td id="imagelistoutcontainer"> </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_advimage_misc}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label id="idlabel"
for="id">{$lang_advimage_id}</label></td>
+ <td><input id="id" name="id" type="text"
value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="dirlabel"
for="dir">{$lang_advimage_langdir}</label></td>
+ <td>
+ <select id="dir" name="dir"
onchange="changeAppearance();">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_advimage_ltr}</option>
+ <option value="rtl">{$lang_advimage_rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel"
for="lang">{$lang_advimage_langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="usemaplabel"
for="usemap">{$lang_advimage_image_map}</label></td>
+ <td>
+ <input id="usemap" name="usemap" type="text"
value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="longdesclabel"
for="longdesc">{$lang_advimage_long_desc}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="longdesc" name="longdesc"
type="text" value="" /></td>
+ <td id="longdesccontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertAction();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="cancelAction();" />
+ </div>
+ </div>
</form>
-</body>
-</html>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/images/sample.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/jscripts/functions.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,550 @@
+/* Functions for the advimage plugin popup */
+
+var preloadImg = null;
+var orgImageWidth, orgImageHeight;
+
+function preinit() {
+ // Initialize
+ tinyMCE.setWindowArg('mce_windowresize', false);
+
+ // Import external list url javascript
+ var url = tinyMCE.getParam("external_image_list_url");
+ if (url != null) {
+ // Fix relative
+ if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+ url = tinyMCE.documentBasePath + "/" + url;
+
+ document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+ }
+}
+
+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";
+ }
+
+ if (attrib == "height") {
+ attrib = "style.height";
+ value = value + "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, '<');
+ 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 == "") {
+ var answer = confirm(tinyMCE.getLang('lang_advimage_missing_alt', '',
true));
+ if (answer == true) {
+ formObj.alt.value = " ";
+ }
+ } else {
+ var answer = true;
+ }
+
+ if (!answer)
+ 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 = "<img";
+
+ html += makeAttrib('src', convertURL(src, tinyMCE.imgElement));
+ html += makeAttrib('mce_src', src);
+ html += makeAttrib('alt');
+ html += makeAttrib('title');
+ html += makeAttrib('border');
+ html += makeAttrib('vspace');
+ html += makeAttrib('hspace');
+ html += makeAttrib('width');
+ html += makeAttrib('height');
+ html += makeAttrib('onmouseover', onmouseoversrc);
+ html += makeAttrib('onmouseout', onmouseoutsrc);
+ html += makeAttrib('id');
+ html += makeAttrib('dir');
+ html += makeAttrib('lang');
+ html += makeAttrib('longdesc');
+ html += makeAttrib('usemap');
+ html += makeAttrib('style');
+ html += makeAttrib('class', getSelectValue(formObj, 'classlist'));
+ html += makeAttrib('align', getSelectValue(formObj, 'align'));
+ html += " />";
+
+ tinyMCEPopup.execCommand("mceInsertContent", false, html);
+ }
+
+ tinyMCE._setEventsEnabled(inst.getBody(), false);
+ tinyMCEPopup.close();
+}
+
+function cancelAction() {
+ tinyMCEPopup.close();
+}
+
+function changeAppearance() {
+ var formObj = document.forms[0];
+ var img = document.getElementById('alignSampleImg');
+
+ if (img) {
+ img.align = formObj.align.value;
+ img.border = formObj.border.value;
+ img.hspace = formObj.hspace.value;
+ img.vspace = formObj.vspace.value;
+ }
+}
+
+function changeMouseMove() {
+ var formObj = document.forms[0];
+
+ setSwapImageDisabled(!formObj.onmousemovecheck.checked);
+}
+
+function updateStyle() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ if (tinyMCE.getParam('inline_styles', false)) {
+ st['width'] = formObj.width.value == '' ? '' :
formObj.width.value + "px";
+ st['height'] = formObj.height.value == '' ? '' :
formObj.height.value + "px";
+ st['border-width'] = formObj.border.value == '' ? '' :
formObj.border.value + "px";
+ st['margin-top'] = formObj.vspace.value == '' ? '' :
formObj.vspace.value + "px";
+ st['margin-bottom'] = formObj.vspace.value == '' ? '' :
formObj.vspace.value + "px";
+ st['margin-left'] = formObj.hspace.value == '' ? '' :
formObj.hspace.value + "px";
+ st['margin-right'] = formObj.hspace.value == '' ? '' :
formObj.hspace.value + "px";
+ } else {
+ st['width'] = st['height'] = st['border-width'] = null;
+
+ if (st['margin-top'] == st['margin-bottom'])
+ st['margin-top'] = st['margin-bottom'] = null;
+
+ if (st['margin-left'] == st['margin-right'])
+ st['margin-left'] = st['margin-right'] = null;
+ }
+
+ formObj.style.value = tinyMCE.serializeStyle(st);
+}
+
+function styleUpdated() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ if (st['width'])
+ formObj.width.value = st['width'].replace('px', '');
+
+ if (st['height'])
+ formObj.height.value = st['height'].replace('px', '');
+
+ if (st['margin-top'] && st['margin-top'] ==
st['margin-bottom'])
+ formObj.vspace.value = st['margin-top'].replace('px', '');
+
+ if (st['margin-left'] && st['margin-left'] ==
st['margin-right'])
+ formObj.hspace.value = st['margin-left'].replace('px', '');
+
+ if (st['border-width'])
+ formObj.border.value = st['border-width'].replace('px', '');
+}
+
+function changeHeight() {
+ var formObj = document.forms[0];
+
+ if (!formObj.constrain.checked || !preloadImg) {
+ updateStyle();
+ return;
+ }
+
+ if (formObj.width.value == "" || formObj.height.value == "")
+ return;
+
+ var temp = (formObj.width.value / preloadImg.width) * preloadImg.height;
+ formObj.height.value = temp.toFixed(0);
+ updateStyle();
+}
+
+function changeWidth() {
+ var formObj = document.forms[0];
+
+ if (!formObj.constrain.checked || !preloadImg) {
+ updateStyle();
+ return;
+ }
+
+ if (formObj.width.value == "" || formObj.height.value == "")
+ return;
+
+ var temp = (formObj.height.value / preloadImg.height) * preloadImg.width;
+ formObj.width.value = temp.toFixed(0);
+ updateStyle();
+}
+
+function onSelectMainImage(target_form_element, name, value) {
+ var formObj = document.forms[0];
+
+ formObj.alt.value = name;
+ formObj.title.value = name;
+
+ resetImageData();
+ showPreviewImage(formObj.elements[target_form_element].value, false);
+}
+
+function showPreviewImage(src, start) {
+ var formObj = document.forms[0];
+
+ selectByValue(document.forms[0], 'imagelistsrc', src);
+
+ var elm = document.getElementById('prev');
+ var src = src == "" ? src :
tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], src);
+
+ if (!start && tinyMCE.getParam("advimage_update_dimensions_onchange",
true))
+ resetImageData();
+
+ if (src == "")
+ elm.innerHTML = "";
+ else
+ elm.innerHTML = '<img src="' + src + '" border="0"
/>'
+
+ getImageData(src);
+}
+
+function getImageData(src) {
+ preloadImg = new Image();
+
+ tinyMCE.addEvent(preloadImg, "load", updateImageData);
+ tinyMCE.addEvent(preloadImg, "error", resetImageData);
+
+ preloadImg.src = src;
+}
+
+function updateImageData() {
+ var formObj = document.forms[0];
+
+ 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 += '<select id="' + elm_id + '" name="' + elm_id
+ '"';
+ html += ' class="mceImageList"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;';
+
+ if (typeof(onchange_func) != "undefined")
+ html += onchange_func + '(\'' + target_form_element +
'\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+ html += '"><option value="">---</option>';
+
+ for (var i=0; i<tinyMCEImageList.length; i++)
+ html += '<option value="' + tinyMCEImageList[i][1] +
'">' + tinyMCEImageList[i][0] + '</option>';
+
+ html += '</select>';
+
+ return html;
+
+ // tinyMCE.debug('-- image list start --', html, '-- image list end
--');
+}
+
+// While loading
+preinit();
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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.'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advimage/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,19 +1 @@
- Advimage plugin for TinyMCE
------------------------------
-
-About:
- This is a more advanced image dialog mostly based on code contributed by Michael Keck.
- This one supports mouseover/out image swapping.
-
-Installation instructions:
- * Copy the advimage directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "advimage".
- * Add this "a[name|href|target|title|onclick]" to extended_valid_elements
option.
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "preview",
- extended_valid_elements : "a[name|href|target|title|onclick]"
- });
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/css/advlink.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,18 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('advlink', 'uk,se,de');
-
-/**
- * Insert link template function.
- */
-function TinyMCE_advlink_getInsertLinkTemplate() {
- var template = new Array();
- template['file'] = '../../plugins/advlink/link.htm';
- template['width'] = 440;
- template['height'] = 420;
-
- // 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);
-
- return template;
-}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('advlink');var
TinyMCE_AdvancedLinkPlugin={getInfo:function(){return{longname:'Advanced
link',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,88 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_advlink.html',
+ 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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/jscripts/functions.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+ }
+}
+
+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<variableNames.length; i++) {
+ // Is string value
+ if (variableNames[i].indexOf("'${") != -1)
+ regExp += "'(.*)'";
+ else // Number value
+ regExp += "([0-9]*)";
+
+ replaceStr += "$" + (i+1);
+
+ // Cleanup variable name
+ variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]",
"gi"), "");
+
+ if (i != variableNames.length-1) {
+ regExp += "\\s*,\\s*";
+ replaceStr += "<delim>";
+ } else
+ regExp += ".*";
+ }
+
+ regExp += "\\);?";
+
+ // Build variable array
+ var variables = new Array();
+ variables["_function"] = fnName;
+ var variableValues = link.replace(new RegExp(regExp, "gi"),
replaceStr).split('<delim>');
+ for (var i=0; i<variableNames.length; i++)
+ variables[variableNames[i]] = variableValues[i];
+
+ return variables;
+ }
+
+ return null;
+}
+
+function parseOptions(opts) {
+ if (opts == null || opts == "")
+ return new Array();
+
+ // Cleanup the options
+ opts = opts.toLowerCase();
+ opts = opts.replace(/;/g, ",");
+ opts = opts.replace(/[^0-9a-z=,]/g, "");
+
+ var optionChunks = opts.split(',');
+ var options = new Array();
+
+ for (var i=0; i<optionChunks.length; i++) {
+ var parts = optionChunks[i].split('=');
+
+ if (parts.length == 2)
+ options[parts[0]] = parts[1];
+ }
+
+ return options;
+}
+
+function buildOnClick() {
+ var formObj = document.forms[0];
+
+ if (!formObj.ispopup.checked) {
+ formObj.onclick.value = "";
+ return;
+ }
+
+ var onclick = "window.open('";
+ var url = formObj.popupurl.value;
+
+ if (tinyMCE.getParam('convert_urls'))
+ url = convertURL(url, null, true);
+
+ onclick += url + "','";
+ onclick += formObj.popupname.value + "','";
+
+ if (formObj.popuplocation.checked)
+ onclick += "location=yes,";
+
+ if (formObj.popupscrollbars.checked)
+ onclick += "scrollbars=yes,";
+
+ if (formObj.popupmenubar.checked)
+ onclick += "menubar=yes,";
+
+ if (formObj.popupresizable.checked)
+ onclick += "resizable=yes,";
+
+ if (formObj.popuptoolbar.checked)
+ onclick += "toolbar=yes,";
+
+ if (formObj.popupstatus.checked)
+ onclick += "status=yes,";
+
+ if (formObj.popupdependent.checked)
+ onclick += "dependent=yes,";
+
+ if (formObj.popupwidth.value != "")
+ onclick += "width=" + formObj.popupwidth.value + ",";
+
+ if (formObj.popupheight.value != "")
+ onclick += "height=" + formObj.popupheight.value + ",";
+
+ if (formObj.popupleft.value != "") {
+ if (formObj.popupleft.value != "c")
+ onclick += "left=" + formObj.popupleft.value + ",";
+ else
+ onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2)
+ ")+',";
+ }
+
+ if (formObj.popuptop.value != "") {
+ if (formObj.popuptop.value != "c")
+ onclick += "top=" + formObj.popuptop.value + ",";
+ else
+ onclick += "top='+(screen.availHeight/2-" +
(formObj.popupheight.value/2) + ")+',";
+ }
+
+ if (onclick.charAt(onclick.length-1) == ',')
+ onclick = onclick.substring(0, onclick.length-1);
+
+ onclick += "');";
+
+ if (formObj.popupreturn.checked)
+ onclick += "return false;";
+
+ // tinyMCE.debug(onclick);
+
+ formObj.onclick.value = onclick;
+
+ if (formObj.href.value == "")
+ formObj.href.value = url;
+}
+
+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 != "") {
+ elm.setAttribute(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 getAnchorListHTML(id, target) {
+ var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+ var nodes = inst.getBody().getElementsByTagName("a");
+
+ var html = "";
+
+ html += '<select id="' + id + '" name="' + id +
'" class="mceAnchorList"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="this.form.' + target + '.value=';
+ html += 'this.options[this.selectedIndex].value;">';
+ html += '<option value="">---</option>';
+
+ for (var i=0; i<nodes.length; i++) {
+ if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")
+ html += '<option value="#' + name + '">' + name +
'</option>';
+ }
+
+ html += '</select>';
+
+ 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, '<a
href="#mce_temp_url#">' + inst.selection.getSelectedHTML() +
'</a>');
+ else
+ tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");
+
+ var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a",
"href", "#mce_temp_url#");
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+
+ // Move cursor behind the new anchor
+ if (tinyMCE.isGecko) {
+ var sp = inst.getDoc().createTextNode(" ");
+
+ if (elm.nextSibling)
+ elm.parentNode.insertBefore(sp, elm.nextSibling);
+ else
+ elm.parentNode.appendChild(sp);
+
+ // Set range after link
+ var rng = inst.getDoc().createRange();
+ rng.setStartAfter(elm);
+ rng.setEndAfter(elm);
+
+ // Update selection
+ var sel = inst.getSel();
+ sel.removeAllRanges();
+ sel.addRange(rng);
+ }
+
+ setAllAttribs(elm);
+ }
+ } else
+ setAllAttribs(elm);
+
+ tinyMCE._setEventsEnabled(inst.getBody(), false);
+ tinyMCEPopup.execCommand("mceEndUndoLevel");
+ tinyMCEPopup.close();
+}
+
+function setAllAttribs(elm) {
+ var formObj = document.forms[0];
+ var href = formObj.href.value;
+ var target = getSelectValue(formObj, 'targetlist');
+
+ // Make anchors absolute
+ if (href.charAt(0) == '#' && tinyMCE.getParam('convert_urls'))
+ href = tinyMCE.settings['document_base_url'] + href;
+
+ setAttrib(elm, 'href', convertURL(href, elm));
+ setAttrib(elm, 'mce_href', href);
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'target', target == '_self' ? '' : target);
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
+ setAttrib(elm, 'rel');
+ setAttrib(elm, 'rev');
+ setAttrib(elm, 'charset');
+ setAttrib(elm, 'hreflang');
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ setAttrib(elm, 'tabindex');
+ setAttrib(elm, 'accesskey');
+ setAttrib(elm, 'type');
+ 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 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 getLinkListHTML(elm_id, target_form_element, onchange_func) {
+ if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
+ return "";
+
+ var html = "";
+
+ html += '<select id="' + elm_id + '" name="' + elm_id
+ '"';
+ html += ' class="mceLinkList"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;';
+
+ if (typeof(onchange_func) != "undefined")
+ html += onchange_func + '(\'' + target_form_element +
'\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
+
+ html += '"><option value="">---</option>';
+
+ for (var i=0; i<tinyMCELinkList.length; i++)
+ html += '<option value="' + tinyMCELinkList[i][1] +
'">' + tinyMCELinkList[i][0] + '</option>';
+
+ html += '</select>';
+
+ 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 += '<select id="' + elm_id + '" name="' + elm_id
+ '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="this.form.' + target_form_element + '.value=';
+ html += 'this.options[this.selectedIndex].value;">';
+
+ html += '<option value="_self">' +
tinyMCE.getLang('lang_advlink_target_same') + '</option>';
+ html += '<option value="_blank">' +
tinyMCE.getLang('lang_advlink_target_blank') + '
(_blank)</option>';
+ html += '<option value="_parent">' +
tinyMCE.getLang('lang_advlink_target_parent') + '
(_parent)</option>';
+ html += '<option value="_top">' +
tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';
+
+ for (var i=0; i<targets.length; i++) {
+ var key, value;
+
+ if (targets[i] == "")
+ continue;
+
+ key = targets[i].split('=')[0];
+ value = targets[i].split('=')[1];
+
+ html += '<option value="' + key + '">' + value + '
(' + key + ')</option>';
+ }
+
+ html += '</select>';
+
+ return html;
+}
+
+// While loading
+preinit();
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/link.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/link.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/link.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,376 +1,337 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- function myRegexpReplace(in_str, reg_exp, replace_str, opts) {
- if (typeof opts == "undefined")
- opts = 'g';
- var re = new RegExp(reg_exp, opts);
- return in_str.replace(re, replace_str);
- }
+ <title>{$lang_insert_link_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/functions.js"></script>
+ <link href="css/advlink.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="advlink"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="insertAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_advlink_general_tab}</a></span></li>
+ <li id="popup_tab"><span><a
href="javascript:mcTabs.displayTab('popup_tab','popup_panel');"
onmousedown="return
false;">{$lang_advlink_popup_tab}</a></span></li>
+ <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_advlink_events_tab}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_advlink_advanced_tab}</a></span></li>
+ </ul>
+ </div>
- function init() {
- // modified 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
- // supporting onclick event to open pop windows
- var formObj = document.forms[0];
- var arrOnClick = new Array(), arrWinFeatures = new Array();
- var strOnClick = '', strDocReturn = '';
- arrOnClick = tinyMCE.getWindowArg('onclick').split(';');
- for (var i=0; i<arrOnClick.length; i++) {
- if (arrOnClick[i].indexOf('window.open')!=-1) {
- strOnClick = arrOnClick[i];
- strOnClick = strOnClick.substring(12,strOnClick.length-1);
- formObj.ispopup.checked=true;
- break;
- }
- }
- if (strOnClick!='') {
- for (var i=0; i<arrOnClick.length; i++) {
- if (arrOnClick[i].indexOf('return false')!=-1) {
- formObj.winreturn.checked=true;
- break;
- }
- }
- // get the win features
- arrWinFeatures = strOnClick.split(',');
- if (arrWinFeatures[0]!='') // link , url
- formObj.winurl.value =
myRegexpReplace(arrWinFeatures[0],"'","","gi");
- if (arrWinFeatures[1]!='') // link , url
- formObj.winname.value =
myRegexpReplace(arrWinFeatures[1],"'","","gi");
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_advlink_general_props}</legend>
- for (var i=2; i<arrWinFeatures.length; i++) { // special features
- tmpFeature =
myRegexpReplace(arrWinFeatures[i],"'","","gi");
- valFeature = tmpFeature.split('=');
- if (valFeature[0]!='left' && valFeature[0]!='top'
&& valFeature[0]!='width' && valFeature[0]!='height') {
- if (valFeature[1]=='yes')
-
formObj.elements['win'+valFeature[0].toLowerCase()].checked=true;
- else
-
formObj.elements['win'+valFeature[0].toLowerCase()].checked=false;
- } else {
- switch (valFeature[0]) {
- case 'left':
- case 'top':
- if (valFeature[1].indexOf('screen.avail')!=-1)
-
formObj.elements['win'+valFeature[0].toLowerCase()].value='c';
- else
-
formObj.elements['win'+valFeature[0].toLowerCase()].value=valFeature[1];
- break;
- case 'width':
- case 'height':
-
formObj.elements['win'+valFeature[0].toLowerCase()].value=valFeature[1];
- break;
- }
- }
- }
- }
- var myTarget = tinyMCE.getWindowArg('target');
- myTarget = myTarget != "" ? myTarget : "_self";
- formObj.target.value = myTarget;
- formObj.href.value = tinyMCE.getWindowArg('href');
- formObj.linktitle.value = tinyMCE.getWindowArg('title');
- setMyTarget(myTarget);
- window.focus();
- }
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td nowrap="nowrap"><label id="hreflabel"
for="href">{$lang_insert_link_url}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="href" name="href"
type="text" value=""
onchange="selectByValue(this.form,'linklisthref',this.value);"
/></td>
+ <td id="hrefbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr id="linklisthrefrow">
+ <td class="column1"><label
for="linklisthref">{$lang_link_list}</label></td>
+ <td colspan="2"
id="linklisthrefcontainer"> </td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="anchorlist">{$lang_advlink_anchor_names}</label></td>
+ <td colspan="2"
id="anchorlistcontainer"> </td>
+ </tr>
+ <tr>
+ <td><label id="targetlistlabel"
for="targetlist">{$lang_insert_link_target}</label></td>
+ <td id="targetlistcontainer"> </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label id="titlelabel"
for="title">{$lang_theme_insert_link_titlefield}</label></td>
+ <td><input id="title" name="title"
type="text" value="" /></td>
+ </tr>
+ <tr>
+ <td><label id="classlabel"
for="classlist">{$lang_class_name}</label></td>
+ <td>
+ <select id="classlist" name="classlist"
onchange="changeClass();">
+ <option value="" selected>{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
- function insertLink() {
- var formObj = document.forms[0];
- if (window.opener) {
- var href = formObj.href.value;
- var target = formObj.target.value;
- var title = formObj.linktitle.value;
- var onclick = '', features = '';
- var winwith = '', winheight = '', winleft = '',
wintop = '', winlocation = '', winmenubar = '', wintoolbar =
'', winscrollbars = '', winresizable = '';
- if (formObj.ispopup.checked==true) {
- // building the onclick event
- onclick = "window.open(";
- // check if url given
- if (formObj.winurl.value=='')
- onclick += "this.href,";
- else
- onclick += "'" + formObj.winurl.value +
"',";
+ <div id="popup_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_advlink_popup_props}</legend>
- onclick += "'" + formObj.winname.value +
"'";
- // get/set with and height
- if (formObj.winwidth.value=='')
- formObj.winwidth.value = 640;
- if (formObj.winheight.value=='')
- formObj.winheight.value = 480;
- // win position
- if (formObj.winleft.value=='c') {
- if (features!='')
- features += ",";
- features += "left='+(screen.availWidth/2-" +
(formObj.winwidth.value/2) + ")+'";
- } else {
- if (formObj.winleft.value!='') {
- if (features!='')
- features += ",";
- features += "left=" + formObj.winleft.value;
- }
- }
- if (formObj.wintop.value=='c') {
- if (features!='')
- features += ",";
- features += "top='+(screen.availHeight/2-" +
(formObj.winheight.value/2) + ")+'";
- } else {
- if (formObj.wintop.value!='') {
- if (features!='')
- features += ",";
- features += "top=" + formObj.wintop.value;
- }
- }
- if (features!='')
- features += ',';
- features += "width=" + formObj.winwidth.value +
",height=" + formObj.winheight.value;
- // some window features
- if (formObj.winlocation.checked==true) {
- if (features!='')
- features += ',';
- features += "location=yes";
- }
- if (formObj.winmenubar.checked==true) {
- if (features!='')
- features += ',';
- features += "menubar=yes";
- }
- if (formObj.wintoolbar.checked==true) {
- if (features!='')
- features += ',';
- features += "toolbar=yes";
- }
- if (formObj.winstatus.checked==true) {
- if (features!='')
- features += ',';
- features += "status=yes";
- }
- if (formObj.winscrollbars.checked==true) {
- if (features!='')
- features += ',';
- features += "scrollbars=yes";
- }
- if (formObj.winresizable.checked==true) {
- if (features!='')
- features += ',';
- features += "resizable=yes";
- }
- if (features!='')
- onclick += ",'" + features + "'";
- if (onclick!='')
- onclick += ");";
- // return false means: open only the popup
- if (formObj.winreturn.checked==true)
- onclick += "return false;";
- }
- if (target!='' &&
target!='please_insert_on_target_in_textfield') {
- //alert (onclick);
- window.opener.tinyMCE.insertLink(href, target, title, onclick);
- top.close();
- } else {
- alert(tinyMCE.getLang('lang_insert_link_popup_missingtarget'));
- formObj.framename.select();
- }
- }
- }
+ <input type="checkbox" id="ispopup" name="ispopup"
class="radio"
onclick="setPopupControlsDisabled(!this.checked);buildOnClick();" />
+ <label id="ispopuplabel"
for="ispopup">{$lang_advlink_popup}</label>
- function setMyTarget(what) {
- var formObj = document.forms[0];
- formObj.target.value=what;
- switch (what) {
- case '':
- case '_self':
- document.getElementById('same').checked=true;
- formObj.framename.value='_self';
- break;
- case '_blank':
- document.getElementById('blank').checked=true;
- formObj.framename.value='';
- break;
- case '_parent':
- document.getElementById('parent').checked=true;
- formObj.framename.value='';
- break;
- case '_top':
- document.getElementById('top').checked=true;
- formObj.framename.value='';
- break;
- default:
- document.getElementById('named').checked=true;
- if (what!='please_insert_on_target_in_textfield') {
- formObj.framename.value=what;
- }
- break;
- }
- }
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td nowrap="nowrap"><label
for="popupurl">{$lang_advlink_popup_url}</label> </td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" name="popupurl"
id="popupurl" value="" onchange="buildOnClick();"
/></td>
+ <td id="popupurlbrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="popupname">{$lang_advlink_popup_name}</label> </td>
+ <td><input type="text" name="popupname"
id="popupname" value="" onchange="buildOnClick();"
/></td>
+ </tr>
+ <tr>
+ <td
nowrap="nowrap"><label>{$lang_advlink_popup_size}</label> </td>
+ <td nowrap="nowrap">
+ <input type="text" id="popupwidth"
name="popupwidth" value="" onchange="buildOnClick();" />
x
+ <input type="text" id="popupheight"
name="popupheight" value="" onchange="buildOnClick();" />
px
+ </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"
id="labelleft"><label>{$lang_advlink_popup_position}</label> </td>
+ <td nowrap="nowrap">
+ <input type="text" id="popupleft"
name="popupleft" value="" onchange="buildOnClick();" /> /
+ <input type="text" id="popuptop" name="popuptop"
value="" onchange="buildOnClick();" /> (c /c = center)
+ </td>
+ </tr>
+ </table>
- function setPopupInputs() {
- var formObj = document.forms[0];
- var ids = new
Array('url','name','left','top','width','height','location','menubar','toolbar','status','scrollbars','resizable','return');
- if (formObj.ispopup.checked==false) {
- formObj.winurl.value = "";
- formObj.winname.value = "";
- formObj.winwidth.value = "";
- formObj.winheight.value = "";
- formObj.winleft.value = "";
- formObj.wintop.value = "";
- formObj.winlocation.checked = false;
- formObj.winmenubar.checked = false;
- formObj.wintoolbar.checked = false;
- formObj.winscrollbars.checked = false;
- formObj.winresizable.checked = false;
- formObj.winstatus.checked = false;
- formObj.winreturn.checked = false;
- for (var i=0; i<ids.length; i++) {
- if (typeof(formObj.elements['win'+ids[i]])!='undefined')
- formObj.elements['win'+ids[i]].disabled = true;
- if (document.getElementById('label'+ids[i]))
- document.getElementById('label'+ids[i]).style.color =
"#666666";
- }
- } else {
- formObj.winreturn.checked = true;
- for (var i=0; i<ids.length; i++) {
- if (typeof(formObj.elements['win'+ids[i]])!='undefined')
- formObj.elements['win'+ids[i]].disabled = false;
- if (document.getElementById('label'+ids[i]))
- document.getElementById('label'+ids[i]).style.color =
"#000000";
- }
- }
- }
+ <fieldset>
+ <legend>{$lang_advlink_popup_opts}</legend>
- function cancelAction() {
- top.close();
- }
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td><input type="checkbox" id="popuplocation"
name="popuplocation" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popuplocationlabel"
for="popuplocation">{$lang_advlink_popup_location}</label></td>
+ <td><input type="checkbox" id="popupscrollbars"
name="popupscrollbars" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popupscrollbarslabel"
for="popupscrollbars">{$lang_advlink_popup_scrollbars}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popupmenubar"
name="popupmenubar" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popupmenubarlabel"
for="popupmenubar">{$lang_advlink_popup_menubar}</label></td>
+ <td><input type="checkbox" id="popupresizable"
name="popupresizable" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popupresizablelabel"
for="popupresizable">{$lang_advlink_popup_resizable}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popuptoolbar"
name="popuptoolbar" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popuptoolbarlabel"
for="popuptoolbar">{$lang_advlink_popup_toolbar}</label></td>
+ <td><input type="checkbox" id="popupdependent"
name="popupdependent" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popupdependentlabel"
for="popupdependent">{$lang_advlink_popup_dependent}</label></td>
+ </tr>
+ <tr>
+ <td><input type="checkbox" id="popupstatus"
name="popupstatus" class="checkbox"
onchange="buildOnClick();" /></td>
+ <td nowrap="nowrap"><label id="popupstatuslabel"
for="popupstatus">{$lang_advlink_popup_statusbar}</label></td>
+ <td><input type="checkbox" id="popupreturn"
name="popupreturn" class="checkbox"
onchange="buildOnClick();" checked="checked" /></td>
+ <td nowrap="nowrap"><label id="popupreturnlabel"
for="popupreturn">{$lang_advlink_popup_return}</label></td>
+ </tr>
+ </table>
+ </fieldset>
+ </fieldset>
+ </div>
-//-->
-</script>
-<style type="text/css">
-<!--
- input.radio {
- border: 1px none #000000;
- background-color: transparent;
- vertical-align: middle;
- }
--->
-</style>
-</head>
-<body onload="init();">
- <form onsubmit="insertLink();return false;">
- <table border="0" cellpadding="0"
cellspacing="0" width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2"
class="title">{$lang_insert_link_title}</td>
- </tr>
- <tr>
- <td
align="right">{$lang_insert_link_url}:</td>
- <td><input name="href" type="text"
id="href" value="" style="width: 300px;" /></td>
- </tr>
- <tr>
- <td
align="right">{$lang_theme_insert_link_titlefield}:</td>
- <td><input name="linktitle"
type="text" id="linktitle" value="" style="width:
300px;" /></td>
- </tr>
- <tr>
- <td align="right"
valign="top">{$lang_insert_link_target}:<input type="hidden"
name="target" id="target" value="" /></td>
- <td>
- <table border="0" cellpadding="0"
cellspacing="0">
- <tr>
- <td><input type="radio"
id="same" name="linktarget" class="radio"
onclick="setMyTarget('_self');" checked="checked"
/></td>
- <td nowrap="nowrap"><label
for="same">_self</label></td>
- <td
nowrap="nowrap"> ({$lang_insert_link_target_same})</td>
- </tr>
- <tr>
- <td><input type="radio"
id="parent" name="linktarget" class="radio"
onclick="setMyTarget('_parent');" checked="checked"
/></td>
- <td nowrap="nowrap"><label
for="parent">_parent</label></td>
- <td
nowrap="nowrap"> ({$lang_insert_link_target_parent})</td>
- </tr>
- <tr>
- <td><input type="radio"
id="top" name="linktarget" class="radio"
onclick="setMyTarget('_top');" checked="checked"
/></td>
- <td nowrap="nowrap"><label
for="top">_top</label></td>
- <td
nowrap="nowrap"> ({$lang_insert_link_target_top})</td>
- </tr>
- <tr>
- <td><input type="radio"
id="blank" name="linktarget" class="radio"
onclick="setMyTarget('_blank');" checked="checked"
/></td>
- <td nowrap="nowrap"><label
for="blank">_blank</label></td>
- <td
nowrap="nowrap"> ({$lang_insert_link_target_blank})</td>
- </tr>
- </table>
- <table border="0" cellpadding="0"
cellspacing="0">
- <tr>
- <td><input type="radio"
id="named" name="linktarget" class="radio"
onclick="setMyTarget('please_insert_on_target_in_textfield');"
/></td>
- <td nowrap="nowrap"><label
for="named">{$lang_insert_link_target_named}:</label> </td>
- <td nowrap="nowrap"><input
type="text" name="framename" value=""
id="framename" style="width: 120px; vertical-align: middle;"
onblur="if(this.value!=''){ setMyTarget(this.value); }"
onfocus="if(this.value!=''){ setMyTarget(this.value); }"
maxlength="50" /></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td align="right"
valign="top"><input type="checkbox" id="ispopup"
name="ispopup" class="radio" onclick="setPopupInputs();"
/><label
for="ispopup"><b>{$lang_insert_link_popup}:</b></label></td>
- <td>
- <table border="0" cellpadding="0"
cellspacing="0">
- <tr>
- <td align="right"
nowrap="nowrap">{$lang_insert_link_popup_url}: </td>
- <td id="labelurl"><input
type="text" name="winurl" id="winurl" value=""
style="width: 200px;" /></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap"
id="labelname">{$lang_insert_link_popup_name}: </td>
- <td><input type="text"
name="winname" id="winname" value="" style="width:
200px;" /></td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap"
id="labelwidth">{$lang_insert_link_popup_size}: </td>
- <td nowrap="nowrap"
id="labelheight">
- <input type="text"
name="winwidth" id="winwidth" value="" style="width:
30px; vertical-align: middle; text-align: center;" /> x
- <input type="text"
name="winheight" id="winheight" value="" style="width:
30px; vertical-align: middle; text-align: center;" /> px
- </td>
- </tr>
- <tr>
- <td align="right"
nowrap="nowrap"
id="labelleft">{$lang_insert_link_popup_position}: </td>
- <td nowrap="nowrap"
id="labeltop">
- <input type="text"
name="winleft" id="winleft" value="" style="width:
30px; vertical-align: middle; text-align: center;" /> /
- <input type="text"
name="wintop" id="wintop" value="" style="width: 30px;
vertical-align: middle; text-align: center;" /> (c /c = center)
- </td>
- </tr>
- </table>
- <table border="0" cellpadding="0"
cellspacing="0">
- <tr>
- <td align="right"><input
type="checkbox" id="winlocation" name="winloaction"
class="radio" /></td>
- <td nowrap="nowrap"
id="labellocation"><label
for="winloaction">{$lang_insert_link_popup_location}</label></td>
- <td
nowrap="nowrap"> </td>
- <td align="right"><input
type="checkbox" id="winscrollbars" name="winscrollbars"
class="radio" /></td>
- <td nowrap="nowrap"
id="labelscrollbars"><label
for="winscrollbars">{$lang_insert_link_popup_scrollbars}</label></td>
- </tr>
- <tr>
- <td align="right"><input
type="checkbox" id="winmenubar" name="winmenubar"
class="radio" /></td>
- <td nowrap="nowrap"
id="labelmenubar"><label
for="winmenubar">{$lang_insert_link_popup_menubar}</label></td>
- <td
nowrap="nowrap"> </td>
- <td align="right"><input
type="checkbox" id="winresizable" name="winresizable"
class="radio" /></td>
- <td nowrap="nowrap"
id="labelresizable"><label
for="winresizable">{$lang_insert_link_popup_resizable}</label></td>
- </tr>
- <tr>
- <td align="right"><input
type="checkbox" id="wintoolbar" name="wintoolbar"
class="radio" /></td>
- <td nowrap="nowrap"
id="labeltoolbar"><label
for="wintoolbar">{$lang_insert_link_popup_toolbar}</label></td>
- <td
nowrap="nowrap"> </td>
- <td
nowrap="nowrap"> </td>
- <td
nowrap="nowrap"> </td>
- </tr>
- <tr>
- <td align="right"><input
type="checkbox" id="winstatus" name="winstatus"
class="radio" /></td>
- <td nowrap="nowrap"
id="labelstatus"><label
for="winstatus">{$lang_insert_link_popup_statusbar}</label></td>
- <td
nowrap="nowrap"> </td>
- <td align="right"><input
type="checkbox" id="winreturn" name="winreturn"
class="radio" checked="checked" /></td>
- <td nowrap="nowrap"
id="labelreturn"><label
for="winreturn">{$lang_insert_link_popup_return}</label></td>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td><input type="button"
name="insert" value="{$lang_insert}" onclick="insertLink();"
id="insert" /></td>
- <td align="right"><input
type="button" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();" id="cancel" /></td>
- </tr>
- </table></td>
- </tr>
- </table>
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_advlink_advanced_props}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="column1"><label id="idlabel"
for="id">{$lang_advlink_id}</label></td>
+ <td><input id="id" name="id" type="text"
value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="stylelabel"
for="style">{$lang_advlink_style}</label></td>
+ <td><input type="text" id="style"
name="style" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="classeslabel"
for="classes">{$lang_advlink_classes}</label></td>
+ <td><input type="text" id="classes"
name="classes" value=""
onchange="selectByValue(this.form,'classlist',this.value,true);"
/></td>
+ </tr>
+
+ <tr>
+ <td><label id="targetlabel"
for="target">{$lang_advlink_target_name}</label></td>
+ <td><input type="text" id="target"
name="target" value=""
onchange="selectByValue(this.form,'targetlist',this.value,true);"
/></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="dirlabel"
for="dir">{$lang_advlink_langdir}</label></td>
+ <td>
+ <select id="dir" name="dir">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_advlink_ltr}</option>
+ <option value="rtl">{$lang_advlink_rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="hreflanglabel"
for="hreflang">{$lang_advlink_target_langcode}</label></td>
+ <td><input type="text" id="hreflang"
name="hreflang" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel"
for="lang">{$lang_advlink_langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" />
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="charsetlabel"
for="charset">{$lang_advlink_encoding}</label></td>
+ <td><input type="text" id="charset"
name="charset" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="typelabel"
for="type">{$lang_advlink_mime}</label></td>
+ <td><input type="text" id="type"
name="type" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="rellabel"
for="rel">{$lang_advlink_rel}</label></td>
+ <td><select id="rel" name="rel">
+ <option value="">{$lang_not_set}</option>
+ <option value="lightbox">Lightbox</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ <option value="nofollow">No Follow</option>
+ <option value="tag">Tag</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="revlabel"
for="rev">{$lang_advlink_rev}</label></td>
+ <td><select id="rev" name="rev">
+ <option value="">{$lang_not_set}</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label id="tabindexlabel"
for="tabindex">{$lang_advlink_tabindex}</label></td>
+ <td><input type="text" id="tabindex"
name="tabindex" value="" /></td>
+ </tr>
+
+ <tr>
+ <td><label id="accesskeylabel"
for="accesskey">{$lang_advlink_accesskey}</label></td>
+ <td><input type="text" id="accesskey"
name="accesskey" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_advlink_event_props}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="column1"><label
for="onfocus">onfocus</label></td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onblur">onblur</label></td>
+ <td><input id="onblur" name="onblur"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onclick">onclick</label></td>
+ <td><input id="onclick" name="onclick"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="ondblclick">ondblclick</label></td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onmousedown">onmousedown</label></td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onmouseup">onmouseup</label></td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onmouseover">onmouseover</label></td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onmousemove">onmousemove</label></td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onmouseout">onmouseout</label></td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onkeypress">onkeypress</label></td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onkeydown">onkeydown</label></td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="onkeyup">onkeyup</label></td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertAction();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
</form>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/advlink/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,19 +1 @@
- Advlink plugin for TinyMCE
------------------------------
-
-About:
- This is a more advanced link dialog mostly based on code contributed by Michael Keck.
- This one supports popup windows and targets.
-
-Installation instructions:
- * Copy the advlink directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "advlink".
- * Add this
"img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout]"
to extended_valid_elements option.
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "advlink",
- extended_valid_elements :
"img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout]"
- });
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,46 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_autosave.html',
+ 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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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.'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/autosave/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin.js
===================================================================
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,10 @@
+/**
+ * $Id: editor_plugin_src.js 18 2006-06-29 14:11:23Z 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-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Dummy file since cleanup is now moved to core */
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/cleanup/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Dummy plugin since cleanup is now moved into core.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/css/contextmenu.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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.ifram
eElement);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')||(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.b!
aseURL+"/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_inser!
t_advhr_desc","mceAdvancedHr");break;case"TABLE":case"TD":if(inst.hasP
lugin("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+"/plugin!
s/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.g!
if","$lang_table_col_before_desc","mceTableInsertColBefore");contextMe
nu.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:funct!
ion(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.co!
ntextMenuDiv.style.left='0';this.contextMenuDiv.style.top='0';this.con
textMenuDiv.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('<html><head><link
href="'+tinyMCE.baseURL+'/plugins/contextmenu/css/contextmenu.css"
rel="stylesheet" type="text/css" /></head><body
unselectable="yes"
class="contextMenuIEPopup"></body></html>');doc.close()}};TinyMCE_ContextMenu.prototype={clearAll:function(){this.html="";this.contextMenuDiv.innerHTML=""},addSeparator:function(){this.html+='<tr
class="contextMenuItem"><td class="contextMenuIcon"><img
src="'+this.settings['spacer_image']+'" width="20"
height="1" class="contextMenuImage" /></td><td><img
class="contextMenuSeparator" width="1" height="1"
src="'+this.settings['spacer_image']+'"
/></td></tr>'},addItem:function(icon,title,comman!
d,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+='<tr
class="contextMenuItem">';else html+='<tr
class="contextMenuItemDisabled">';html+='<td
class="contextMenuIcon"><img src="'+icon+'"
width="20" height="20" class="contextMenuImage"
/></td>';html+='<td><div
class="contextMenuText">';html+='<a
href="javascript:void(0);" onclick="'+onMouseDown+'"
onmousedown="return
false;"> ';html+=title;html+=' </a>';html+='</div></td>';html+='</tr>';this.html+=html},show:function(x,y){var
vp,width,height,yo;if(this.html=="")return;var html='';html+='<a
href="#"></a><table border="0" cellpadding="0"
cellspacing="0">';html+=this.html;ht!
ml+='</table>';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='<div
class="contextMenu">'+html+"</div>";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.innerH!
eight||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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,357 @@
+/**
+ * $Id: editor_plugin_src.js 129 2006-10-23 09:45:17Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_contextmenu.html',
+ 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') || (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('<html><head><link href="' + tinyMCE.baseURL +
'/plugins/contextmenu/css/contextmenu.css" rel="stylesheet"
type="text/css" /></head><body unselectable="yes"
class="contextMenuIEPopup"></body></html>');
+ doc.close();
+ }
+};
+
+TinyMCE_ContextMenu.prototype = {
+ clearAll : function() {
+ this.html = "";
+ this.contextMenuDiv.innerHTML = "";
+ },
+
+ addSeparator : function() {
+ this.html += '<tr class="contextMenuItem"><td
class="contextMenuIcon"><img src="' +
this.settings['spacer_image'] + '" width="20"
height="1" class="contextMenuImage" /></td><td><img
class="contextMenuSeparator" width="1" height="1"
src="' + this.settings['spacer_image'] + '"
/></td></tr>';
+ },
+
+ 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 += '<tr class="contextMenuItem">';
+ else
+ html += '<tr class="contextMenuItemDisabled">';
+
+ html += '<td class="contextMenuIcon"><img src="' + icon
+ '" width="20" height="20"
class="contextMenuImage" /></td>';
+ html += '<td><div class="contextMenuText">';
+ html += '<a href="javascript:void(0);" onclick="' +
onMouseDown + '" onmousedown="return false;"> ';
+
+ // Add text
+ html += title;
+
+ html += ' </a>';
+ html += '</div></td>';
+ html += '</tr>';
+
+ // Add to main
+ this.html += html;
+ },
+
+ show : function(x, y) {
+ var vp, width, height, yo;
+
+ if (this.html == "")
+ return;
+
+ var html = '';
+
+ html += '<a href="#"></a><table border="0"
cellpadding="0" cellspacing="0">';
+ html += this.html;
+ html += '</table>';
+
+ 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 = '<div class="contextMenu">'
+ html + "</div>";
+ 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);");
+ }
+};
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/images/spacer.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/contextmenu/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 {
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/css/devkit_ui.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/devkit.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,140 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_devkit_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/devkit.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/diff.js"></script>
+ <link href="css/devkit.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="devkit"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form action="#">
+ <h1>{$lang_devkit_title}</h1>
+
+ <div class="tabs">
+ <ul>
+ <li id="log_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('log_tab','log_panel');"
onmousedown="return
false;">{$lang_devkit_log_tab}</a></span></li>
+ <li id="info_tab"><span><a
href="javascript:mcTabs.displayTab('info_tab','info_panel');"
onmousedown="return
false;">{$lang_devkit_info_tab}</a></span></li>
+ <li id="settings_tab"><span><a
href="javascript:mcTabs.displayTab('settings_tab','settings_panel');"
onmousedown="return
false;">{$lang_devkit_settings_tab}</a></span></li>
+ <li id="content_tab"><span><a
href="javascript:mcTabs.displayTab('content_tab','content_panel');"
onmousedown="return
false;">{$lang_devkit_content_tab}</a></span></li>
+ <!-- <li id="command_states_tab"><span><a
href="javascript:mcTabs.displayTab('command_states_tab','command_states_panel');"
onmousedown="return
false;">{$lang_devkit_command_states_tab}</a></span></li>
-->
+ <li id="undo_redo_tab"><span><a
href="javascript:mcTabs.displayTab('undo_redo_tab','undo_redo_panel');"
onmousedown="return
false;">{$lang_devkit_undo_redo_tab}</a></span></li>
+ <li id="misc_tab"><span><a
href="javascript:mcTabs.displayTab('misc_tab','misc_panel');"
onmousedown="return
false;">{$lang_devkit_misc_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="log_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_devkit_log_tab}</legend>
+
+ <div style="float: left">
+ <label>{$lang_devkit_filter} </label><input type="text"
id="logfilter" name="logfilter" value=""
onchange="changeFilter(this.value);" />
+ </div>
+
+ <div style="float: left">
+ <input type="checkbox" id="logenabled"
name="logenabled" value="true" checked="checked"
onclick="toggleLog(this.checked);" />
+ </div>
+
+ <div style="float: right">
+ <a
href="javascript:clearLog();">[{$lang_devkit_clear_log}]</a>
+ </div>
+
+ <br style="clear: both" />
+
+ <div id="log">
+ </div>
+
+ <input type="checkbox" id="debug_events"
name="debug_events" class="checkbox"
onclick="toggleDebugEvents(this.checked);" /><label
for="debug_events"
onclick="toggleDebugEvents(this.form.debug_events.checked);">{$lang_devkit_debug_events}</label>
+ </fieldset>
+ </div>
+
+ <div id="info_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_info_tab}</legend>
+
+ <span><a
href="javascript:renderInfo();">[{$lang_devkit_refresh}]</a></span>
+
+ <div id="info" class="data">
+ <p>{$lang_devkit_info_help}</p>
+ </div>
+ </fieldset>
+ </div>
+
+ <div id="settings_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_settings_tab}</legend>
+
+ <span><a
href="javascript:renderSettings();">[{$lang_devkit_refresh}]</a></span>
+
+ <div id="settings" class="data">
+ <p>{$lang_devkit_settings_help}</p>
+ </div>
+ </fieldset>
+ </div>
+
+ <div id="content_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_content_tab}</legend>
+
+ <span><a
href="javascript:renderContent();">[{$lang_devkit_refresh}]</a></span>
+
+ <div id="content" class="data">
+ <p>{$lang_devkit_content_help}</p>
+ </div>
+ </fieldset>
+ </div>
+
+ <div id="command_states_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_command_states_tab}</legend>
+
+ <span><a
href="javascript:renderCommandStates();">[{$lang_devkit_refresh}]</a></span>
+
+ <div id="command_states" class="data">
+ <p>{$lang_devkit_command_states_help}</p>
+ </div>
+ </fieldset>
+ </div>
+
+ <div id="undo_redo_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_undo_redo_tab}</legend>
+
+ <span><a
href="javascript:renderUndoRedo();">[{$lang_devkit_refresh}]</a></span>
+
+ <div id="undo_redo" class="data">
+ <p>{$lang_devkit_undo_redo_help}</p>
+ </div>
+
+ <input type="checkbox" id="undo_diff"
name="undo_diff" class="checkbox" /><label
for="undo_diff">{$lang_devkit_undo_diff}</label>
+ </fieldset>
+ </div>
+
+ <div id="misc_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_devkit_misc_tab}</legend>
+
+ <div class="data">
+ <p>{$lang_devkit_misc_help}</p>
+ <hr />
+ <p>Selection: <a href="#" onmousedown="return
storeSelection();">[Store selection]</a> <a href="#"
onmousedown="return restoreSelection();">[Restore
selection]</a></p>
+ <hr />
+ <div><strong>Insert custom HTML content</strong></div>
+ <div><textarea id="htmlcont" name="htmlcont"
style="width: 90%" rows="5"></textarea></div>
+ <div><a href="#" onclick="return
tinyMCE.execCommand('mceInsertContent',false,document.getElementById('htmlcont').value);">[Insert
content]</a></div>
+ <hr />
+ <div><strong>Eval JS:</strong></div>
+ <div><textarea id="jscont" name="jscont"
style="width: 90%"
rows="5">tinyMCE.execCommand('Bold',false,null);</textarea></div>
+ <div><a href="#" onclick="return
parent.window.eval(document.getElementById('jscont').value);">[Evaluate]</a></div>
+ </div>
+ </fieldset>
+ </div>
+ </div>
+ </form>
+
+ <div id="flip"><a href="javascript:toggleFlip();"
onmousedown="return false;"><img id="flipbtn"
src="images/flip_down.gif" border="0" /></a></div>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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;i<a.length;i++){if(typeof(a[i])=='undefined')continue;if(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','DOMNodeRemov
ed','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','res!
et','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;i<ev.length;i++){if(s)tinyMCE.addEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent);else
tinyMCE.removeEvent(ld,ev[i],TinyMCE_DevKitPlugin._debugEvent)}}},_debugEvent:function(e){var
t;e=e?e:tinyMCE.selectedInstance.getWin().event;t=e.srcElement?e.srcElement:e.target;tinyMCE.debug(e.type,t?t.nodeName:'')},_serialize:function(o){var
i,v,s=TinyMCE_DevKitPlugin._serialize;if(o==null)return'null';switch(typeof
o){case'string':v='\bb\tt\nn\ff\rr\""\'\'\\\\';return'"'+o.replace(new
RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])','g'),function(a,b){i=v.indexOf(b);if(i+1)return'\\'+v.charAt(i+1);a=b.charCodeAt().toString!
(16);return'\\u'+'0000'.substring(a.length)+a})+'"';case'object':if(o
instanceof
Array){for(i=0,v='[';i<o.length;i++)v+=(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}};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<a.length;i++){if(typeof(a[i])=='undefined')continue;if(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.__execInstance!
Command=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_con!
tent);r=tinyMCE.__triggerNodeChange(focus,setup_content);dk._end(st);r
eturn
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);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,325 @@
+/**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+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://tinymce.moxiecode.com/tinymce/docs/plugin_devkit.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ this._setup();
+ },
+
+ _setup : function() {
+ if (this._loaded)
+ return;
+
+ this._loaded = true;
+
+ // Register a document reference for more easy access in the FF DOM inspector
+ document.___TinyMCE = tinyMCE;
+
+ // Setup devkit by settings
+ 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);
+
+ // Workaround for strange IE reload bug
+ //if (tinyMCE.isRealIE)
+ // document.getElementById('devkit').outerHTML =
document.getElementById('devkit').outerHTML;
+
+ 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; i<a.length; i++) {
+ if (typeof(a[i]) == 'undefined')
+ continue;
+
+ if (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<ev.length; i++) {
+ if (s)
+ tinyMCE.addEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
+ else
+ tinyMCE.removeEvent(ld, ev[i], TinyMCE_DevKitPlugin._debugEvent);
+ }
+ }
+ },
+
+ _debugEvent : function(e) {
+ var t;
+
+ e = e ? e : tinyMCE.selectedInstance.getWin().event;
+ t = e.srcElement ? e.srcElement : e.target;
+
+ tinyMCE.debug(e.type, t ? t.nodeName : '');
+ },
+
+ _serialize : function(o) {
+ var i, v, s = TinyMCE_DevKitPlugin._serialize;
+
+ if (o == null)
+ return 'null';
+
+ switch (typeof o) {
+ case 'string':
+ v = '\bb\tt\nn\ff\rr\""\'\'\\\\';
+
+ return '"' + o.replace(new
RegExp('([\u0080-\uFFFF\\x00-\\x1f\\"])', 'g'), function(a, b) {
+ i = v.indexOf(b);
+
+ if (i+1)
+ return '\\' + v.charAt(i + 1);
+
+ a = b.charCodeAt().toString(16);
+
+ return '\\u' + '0000'.substring(a.length) + a;
+ }) + '"';
+
+ case 'object':
+ if (o instanceof Array) {
+ for (i=0, v = '['; i<o.length; i++)
+ v += (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<a.length; i++) {
+ if (typeof(a[i]) == 'undefined')
+ continue;
+
+ if (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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_down.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/images/flip_up.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/devkit.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,328 @@
+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<log.length; i++)
+ debug(log[i]);
+
+ f.logfilter.value = devkit._logFilter;
+}
+
+function changeFilter(f) {
+ devkit._logFilter = f;
+}
+
+function toggleLog(s) {
+ logEnabled = s;
+}
+
+function toggleFlip() {
+ document.getElementById('flipbtn').src = flip ? 'images/flip_down.gif' :
'images/flip_up.gif';
+
+ if (flip)
+ parent.document.getElementById('devkit').className = 'devkitup';
+ else
+ parent.document.getElementById('devkit').className = 'devkitdown';
+
+ flip = !flip;
+}
+
+function debug(s) {
+ var d, l, n;
+
+ if (!logEnabled || !new RegExp(devkit._logFilter, 'gi').test(s))
+ return;
+
+ d = document;
+ l = d.getElementById('log');
+ n = d.createElement('span');
+
+ n.innerHTML = tinyMCE.xmlEncode(s);
+
+ l.appendChild(n);
+ l.scrollTop = l.scrollHeight;
+}
+
+function renderInfo() {
+ var se = document.getElementById('info'), n, sn, inst, h = '', sel, rng,
instCount = 0, rc;
+
+ h += '<h2>Browser info:</h2>';
+
+ h += '<table border="0" cellpadding="0"
cellspacing="0" class="data">';
+ h += addRenderInfo('navigator.userAgent', navigator.userAgent);
+ h += addRenderInfo('navigator.appName', navigator.appName);
+ h += addRenderInfo('navigator.platform', navigator.platform);
+ h += addRenderInfo('navigator.language', navigator.language, 'bspec');
+ h += addRenderInfo('navigator.browserLanguage', navigator.browserLanguage,
'bspec');
+ h += addRenderInfo('navigator.systemLanguage', navigator.systemLanguage,
'bspec');
+ h += addRenderInfo('navigator.userLanguage', navigator.userLanguage,
'bspec');
+ h += addRenderInfo('opera.buildNumber("inconspicuous")', typeof(opera)
!= 'undefined' && opera.buildNumber ?
opera.buildNumber('inconspicuous') : null, 'bspec');
+ h += addRenderInfo('window.innerWidth', parent.window.innerWidth,
'bspec');
+ h += addRenderInfo('window.innerHeight', parent.window.innerHeight,
'bspec');
+ h += addRenderInfo('document.body.offsetWidth',
parent.document.body.offsetWidth);
+ h += addRenderInfo('document.body.offsetHeight',
parent.document.body.offsetHeight);
+ h += addRenderInfo('screen.width', screen.width);
+ h += addRenderInfo('screen.height', screen.height);
+ h += addRenderInfo('screen.availWidth', screen.availWidth);
+ h += addRenderInfo('screen.availHeight', screen.availHeight);
+ h += addRenderInfo('screen.colorDepth', screen.colorDepth);
+ h += addRenderInfo('screen.pixelDepth', screen.pixelDepth, 'bspec');
+ h += addRenderInfo('document.contentType', document.contentType,
'bspec');
+ h += '</table>';
+
+ h += '<h2>TinyMCE_Engine info:</h2>';
+
+ h += '<table border="0" cellpadding="0"
cellspacing="0" class="data">';
+ h += addRenderInfo('baseURL', tinyMCE.baseURL);
+ h += addRenderInfo('selectedInstance.editorId', tinyMCE.selectedInstance ?
tinyMCE.selectedInstance.editorId : null);
+ h += addRenderInfo('selectedElement.nodeName', tinyMCE.selectedElement ?
tinyMCE.selectedElement.nodeName : null, 'dep');
+ h += addRenderInfo('loadedFiles',tinyMCE.loadedFiles.join(','));
+ h += addRenderInfo('isMSIE', tinyMCE.isMSIE);
+ h += addRenderInfo('isMSIE5', tinyMCE.isMSIE5);
+ h += addRenderInfo('isMSIE5_0', tinyMCE.isMSIE5_0);
+ h += addRenderInfo('isMSIE7', tinyMCE.isMSIE7);
+ h += addRenderInfo('isGecko', tinyMCE.isGecko);
+ h += addRenderInfo('isSafari', tinyMCE.isSafari);
+ h += addRenderInfo('isOpera', tinyMCE.isOpera);
+ h += addRenderInfo('isMac', tinyMCE.isMac);
+ h += addRenderInfo('isNS7', tinyMCE.isNS7);
+ h += addRenderInfo('isNS71', tinyMCE.isNS71);
+ h += addRenderInfo('idCounter', tinyMCE.idCounter);
+ h += addRenderInfo('currentConfig', tinyMCE.currentConfig);
+ h += addRenderInfo('majorVersion', tinyMCE.majorVersion);
+ h += addRenderInfo('minorVersion', tinyMCE.minorVersion);
+ h += addRenderInfo('releaseDate', tinyMCE.releaseDate);
+ h += addRenderInfo('documentBasePath', tinyMCE.documentBasePath);
+ h += addRenderInfo('documentURL', tinyMCE.documentURL);
+ h += '</table>';
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (!tinyMCE.isInstance(inst))
+ continue;
+
+ sel = inst.selection.getSel();
+ rng = inst.selection.getRng();
+
+ h += '<h2>TinyMCE_Control(' + (instCount++) + ') id: ' +
inst.editorId + '</h2>';
+ h += '<table border="0" cellpadding="0"
cellspacing="0" class="data">';
+
+ 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('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.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 += '</table>';
+ }
+
+ h += '<p>Fields marked in <strong
class="bspec">gray</strong> is not cross browser and should be used
with care.</p>';
+ h += '<p>Fields marked <strong class="dep">red</strong>
are marked deprecated and will be removed in the future.</p><br />';
+
+ se.innerHTML = h;
+}
+
+function addRenderInfo(n, v, c) {
+ return '<tr><td' + (c ? ' class="' + c + '"'
: '')+ '>' + n + '</td><td><input
type="text" value="' + tinyMCE.xmlEncode(v != null ? ('' +
v).replace(/[\r\n]/g, '') : 'null') + '"
/></td></tr>';
+}
+
+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 += '<h2>Instance id: ' + inst.editorId + '</h2>';
+ h += '<table border="0" cellpadding="0"
cellspacing="0" class="data">';
+
+ for (sn in inst.settings) {
+ v = inst.settings[sn];
+
+ h += '<tr><td class="col1">' + tinyMCE.xmlEncode(sn) +
'</td><td><input type="text" value="' +
tinyMCE.xmlEncode(v) + '" /></td></tr>';
+ }
+
+ h += '</table>';
+ }
+
+ 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 += '<h2>Instance id: ' + inst.editorId + '</h2>';
+
+ h += '<h3>Start content - inst.startContent:</h3>';
+ h += '<div>' + tinyMCE.xmlEncode(inst.startContent) +
'</div>';
+
+ h += '<h3>Raw content - inst.getBody().innerHTML or
inst.getHTML(true):</h3>';
+ h += '<div>' + tinyMCE.xmlEncode(inst.getHTML(true)) +
'</div>';
+
+ h += '<h3>Cleaned content - inst.getHTML():</h3>';
+ h += '<div>' + tinyMCE.xmlEncode(inst.getHTML()) +
'</div>';
+
+ if (inst.serializedHTML) {
+ h += '<h3>Serialized HTML content - inst.serializedHTML:</h3>';
+ h += '<div>' + tinyMCE.xmlEncode(inst.serializedHTML) +
'</div>';
+ }
+ }
+
+ 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','Size!
ToControlWidth','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 += '<h2>Instance id: ' + inst.editorId + '</h2>';
+ h += '<table border="0" cellpadding="0"
cellspacing="0" class="data">';
+
+ for (i=0; i<cmds.length; i++) {
+ v = null;
+
+ try {
+ v = tinyMCE.isGecko || inst.getDoc().queryCommandSupported(cmds[i]);
+ v = v ? inst.queryCommandState(cmds[i]) : 'Not supported';
+ } catch (ex) {
+ v = 'Not supported';
+ }
+
+ h += '<tr><td><input type="text" value="' +
tinyMCE.xmlEncode(cmds[i]) + '" /></td><td><input
type="text" value="' + tinyMCE.xmlEncode(v) + '"
/></td></tr>';
+ }
+
+ h += '</table>';
+ }
+
+ 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 += '<h2>Global undo/redo</h2>';
+ h += '<table border="0" cellpadding="0"
cellspacing="0" width="50%" class="data">';
+ h += '<tr><td>undoLevels.length</td><td>' + le.length +
'</td></tr>';
+ h += '<tr><td>undoIndex</td><td>' + tinyMCE.undoIndex +
'</td></tr>';
+ h += '</table>';
+
+ for (i=0; i<le.length; i++)
+ h += '<h3>Level: ' + i + ', Instance: ' + (le[i] ?
le[i].editorId : 'null') + '</h3>';
+ }
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (!tinyMCE.isInstance(inst))
+ continue;
+
+ ur = inst.undoRedo;
+ le = ur.undoLevels;
+
+ h += '<hr /><h2>Instance id: ' + inst.editorId +
'</h2>';
+ h += '<table border="0" cellpadding="0"
cellspacing="0" width="50%" class="data">';
+ h += '<tr><td>undoLevels.length</td><td>' + le.length +
'</td></tr>';
+ h += '<tr><td>undoIndex</td><td>' + ur.undoIndex +
'</td></tr>';
+ h += '<tr><td>typingUndoIndex</td><td>' +
ur.typingUndoIndex + '</td></tr>';
+ h += '<tr><td>undoRedo</td><td>' + ur.undoRedo +
'</td></tr>';
+ h += '</table>';
+
+ for (i=0; i<le.length; i++) {
+ h += '<h3>Level: ' + i + (!le[i].bookmark ? "" : "
[bookmark]") + '</h3>';
+ h += '<div class="undodata">' +
tinyMCE.xmlEncode(le[i].content) + '</div>';
+
+ 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 += '<h3>Diff ' + (i-1) + ',' + i + '</h3><div
class="undodata">' + diff_prettyhtml(d) + '</div>';
+ }
+ }
+ }
+
+ 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/jscripts/diff.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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<diff.length; x++) {
+ chars = diff[x][1];
+ text = '';
+ for (var y=0; y<chars.length; y++)
+ text += linearray[chars.charCodeAt(y)];
+ diff[x][1] = text;
+ }
+}
+
+
+function diff_map(text1, text2) {
+ // Explore the intersection points between the two texts.
+ var now = new Date();
+ var ms_end = now.getTime() + DIFF_TIMEOUT * 1000; // Don't run for too long.
+ var max = (text1.length + text2.length) / 2;
+ var v_map1 = new Array();
+ var v_map2 = new Array();
+ var v1 = new Object();
+ var v2 = new Object();
+ v1[1] = 0;
+ v2[1] = 0;
+ var x, y;
+ var footstep; // Used to track overlapping paths.
+ var footsteps = new Object();
+ var done = false;
+ var hasOwnProperty = !!(footsteps.hasOwnProperty);
+ // If the total number of characters is odd, then the front path will collide with the
reverse path.
+ var front = (text1.length + text2.length) % 2;
+ for (var d=0; d<max; d++) {
+ now = new Date();
+ if (DIFF_TIMEOUT > 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:
+ //
<ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
+ // <ins>A</ins>X<ins>C</ins><del>D</del>
+ // <ins>A</ins><del>B</del>X<ins>C</ins>
+ // <ins>A</del>X<ins>C</ins><del>D</del>
+ // <ins>A</ins><del>B</del>X<del>C</del>
+ 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; x<diff.length; x++) {
+ diff[x].push(i);
+ if (diff[x][0] != -1)
+ i += diff[x][1].length;
+ }
+}
+
+
+function diff_xindex(diff, loc) {
+ // loc is a location in text1, compute and return the equivalent location in text2.
+ // e.g. "The cat" vs "The big cat", 1->1, 5->8
+ var chars1 = 0;
+ var chars2 = 0;
+ var last_chars1 = 0;
+ var last_chars2 = 0;
+ for (var x=0; x<diff.length; x++) {
+ if (diff[x][0] != 1) // Equality or deletion.
+ chars1 += diff[x][1].length;
+ if (diff[x][0] != -1) // Equality or insertion.
+ chars2 += diff[x][1].length;
+ if (chars1 > 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<diff.length; x++) {
+ var m = diff[x][0]; // Mode (-1=delete, 0=copy, 1=add)
+ var t = diff[x][1]; // Text of change.
+ var i = diff[x][2]; // Index of change.
+ t = t.replace(/&/g, "&").replace(/</g,
"<").replace(/>/g, ">");
+ t = t.replace(/\n/g, "¶<BR>");
+ if (m == -1)
+ html += "<DEL STYLE='background:#FFE6E6;'
TITLE='i="+i+"'>"+t+"</DEL>";
+ else if (m == 1)
+ html += "<INS STYLE='background:#E6FFE6;'
TITLE='i="+i+"'>"+t+"</INS>";
+ else
+ html += "<SPAN
TITLE='i="+i+"'>"+t+"</SPAN>";
+ }
+ 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<pattern.length; d++) {
+ // Scan for the best match; each iteration allows for one more error.
+ var rd = Array(text.length);
+
+ // Run a binary search to determine how far from 'loc' we can stray at this
error level.
+ bin_min = loc;
+ bin_mid = bin_max;
+ while(bin_min < bin_mid) {
+ if (match_bitap_score(d, bin_mid) < score_threshold)
+ bin_min = bin_mid;
+ else
+ bin_max = bin_mid;
+ bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);
+ }
+ bin_max = bin_mid; // Use the result from this iteration as the maximum for the
next.
+ var start = Math.max(0, loc - (bin_mid - loc) - 1);
+ var finish = Math.min(text.length-1, pattern.length + bin_mid);
+
+ if (text.charAt(finish) == pattern.charAt(pattern.length-1))
+ rd[finish] = Math.pow(2, d+1)-1;
+ else
+ rd[finish] = Math.pow(2, d)-1;
+ for (var j=finish-1; j>=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<pattern.length; i++)
+ s[pattern.charAt(i)] = 0;
+ for (var i=0; i<pattern.length; i++)
+ s[pattern.charAt(i)] |= Math.pow(2, pattern.length-i-1);
+ return s;
+}
+
+
+ //////////////////////////////////////////////////////////////////////
+ // Patch //
+//////////////////////////////////////////////////////////////////////
+
+
+function patch_obj() {
+ // Constructor for a patch object.
+ this.diffs = [];
+ this.start1 = null;
+ this.start2 = null;
+ this.length1 = 0;
+ this.length2 = 0;
+
+ this.toString = function() {
+ // Emmulate GNU diff's format.
+ // Header: @@ -382,8 +481,9 @@
+ // Indicies are printed as 1-based, not 0-based.
+ var coords1, coords2;
+ if (this.length1 == 0)
+ coords1 = this.start1+",0";
+ else if (this.length1 == 1)
+ coords1 = this.start1+1;
+ else
+ coords1 = (this.start1+1)+","+this.length1;
+ if (this.length2 == 0)
+ coords2 = this.start2+",0";
+ else if (this.length2 == 1)
+ coords2 = this.start2+1;
+ else
+ coords2 = (this.start2+1)+","+this.length2;
+ var txt = "@@ -"+coords1+" +"+coords2+" @@\n";
+ // Escape the body of the patch with %xx notation.
+ for (var x=0; x<this.diffs.length; x++)
+ txt += ("- +".charAt(this.diffs[x][0]+1)) + encodeURI(this.diffs[x][1]) +
"\n";
+ return txt.replace(/%20/g, ' ');
+ }
+
+ this.text1 = function() {
+ // Compute and return the source text (all equalities and deletions).
+ var txt = '';
+ for (var x=0; x<this.diffs.length; x++)
+ if (this.diffs[x][0] == 0 || this.diffs[x][0] == -1)
+ txt += this.diffs[x][1];
+ return txt;
+ }
+
+ this.text2 = function() {
+ // Compute and return the destination text (all equalities and insertions).
+ var txt = '';
+ for (var x=0; x<this.diffs.length; x++)
+ if (this.diffs[x][0] == 0 || this.diffs[x][0] == 1)
+ txt += this.diffs[x][1];
+ return txt;
+ }
+}
+
+
+function patch_addcontext(patch, text) {
+ var pattern = text.substring(patch.start2, patch.start2+patch.length1);
+ var padding = 0;
+ // Increase the context until we're unique (but don't let the pattern expand
beyond MATCH_MAXBITS).
+ while (text.indexOf(pattern) != text.lastIndexOf(pattern) && pattern.length
< MATCH_MAXBITS-PATCH_MARGIN-PATCH_MARGIN) {
+ padding += PATCH_MARGIN;
+ pattern = text.substring(patch.start2 - padding, patch.start2+patch.length1 +
padding);
+ }
+ // Add one chunk for good luck.
+ padding += PATCH_MARGIN;
+ // Add the prefix.
+ var prefix = text.substring(patch.start2 - padding, patch.start2);
+ if (prefix != '')
+ patch.diffs.unshift([0, prefix]);
+ // Add the suffix
+ var suffix = text.substring(patch.start2+patch.length1, patch.start2+patch.length1 +
padding);
+ if (suffix != '')
+ patch.diffs.push([0, suffix]);
+
+ // Roll back the start points.
+ patch.start1 -= prefix.length;
+ patch.start2 -= prefix.length;
+ // Extend the lengths.
+ patch.length1 += prefix.length + suffix.length;
+ patch.length2 += prefix.length + suffix.length;
+}
+
+
+function patch_make(text1, text2, diff) {
+ // Compute a list of patches to turn text1 into text2.
+ // Use diff if provided, otherwise compute it ourselves.
+ if (typeof diff == 'undefined') {
+ diff = diff_main(text1, text2, true);
+ if (diff.length > 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<diff.length; x++) {
+ var diff_type = diff[x][0];
+ var diff_text = diff[x][1];
+
+ if (patch.diffs.length == 0 && diff_type != 0) {
+ // A new patch starts here.
+ patch.start1 = char_count1;
+ patch.start2 = char_count2;
+ }
+
+ if (diff_type == 1) {
+ // Insertion
+ patch.diffs.push(diff[x]);
+ patch.length2 += diff_text.length;
+ postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +
postpatch_text.substring(char_count2);
+ } else if (diff_type == -1) {
+ // Deletion.
+ patch.length1 += diff_text.length;
+ patch.diffs.push(diff[x]);
+ postpatch_text = postpatch_text.substring(0, char_count2) +
postpatch_text.substring(char_count2 + diff_text.length);
+ } else if (diff_type == 0 && diff_text.length <= 2*PATCH_MARGIN &&
patch.diffs.length != 0 && diff.length != x+1) {
+ // Small equality inside a patch.
+ patch.diffs.push(diff[x]);
+ patch.length1 += diff_text.length;
+ patch.length2 += diff_text.length;
+ }
+
+ last_type = diff_type;
+ if (diff_type == 0 && diff_text.length >= 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<patches.length; x++) {
+ expected_loc = patches[x].start2 + delta;
+ text1 = patches[x].text1();
+ start_loc = match_main(text, text1, expected_loc);
+ if (start_loc == null) {
+ // No match found. :(
+ results.push(false);
+ } else {
+ // Found a match. :)
+ results.push(true);
+ delta = start_loc - expected_loc;
+ text2 = text.substring(start_loc, start_loc + text1.length);
+ if (text1 == text2) {
+ // Perfect match, just shove the replacement text in.
+ text = text.substring(0, start_loc) + patches[x].text2() +
text.substring(start_loc + text1.length);
+ } else {
+ // Imperfect match. Run a diff to get a framework of equivalent indicies.
+ diff = diff_main(text1, text2, false);
+ index1 = 0;
+ for (var y=0; y<patches[x].diffs.length; y++) {
+ mod = patches[x].diffs[y];
+ if (mod[0] != 0)
+ index2 = diff_xindex(diff, index1);
+ if (mod[0] == 1) // Insertion
+ text = text.substring(0, start_loc + index2) + mod[1] +
text.substring(start_loc + index2);
+ else if (mod[0] == -1) // Deletion
+ text = text.substring(0, start_loc + index2) + text.substring(start_loc +
diff_xindex(diff, index1 + mod[1].length));
+ if (mod[0] != -1)
+ index1 += mod[1].length;
+ }
+ }
+ }
+ }
+ return [text, results];
+}
+
+
+function patch_splitmax(patches) {
+ // Look through the patches and break up any which are longer than the maximum limit of
the match algorithm.
+ var bigpatch, patch, patch_size, start1, start2, diff_type, diff_text, precontext,
postcontext, empty;
+ for (var x=0; x<patches.length; x++) {
+ if (patches[x].length1 > 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<patches.length; x++)
+ text += patches[x];
+ return text;
+}
+
+
+function patch_fromtext(text) {
+ // Take a textual representation of patches and return a list of patch objects.
+ var patches = [];
+ text = text.split('\n');
+ var patch, m, chars1, chars2, sign, line;
+ while (text.length != 0) {
+ m = text[0].match(/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/);
+ if (!m)
+ return alert("Invalid patch string:\n"+text[0]);
+ patch = new patch_obj();
+ patches.push(patch);
+ patch.start1 = parseInt(m[1]);
+ if (m[2] == '') {
+ patch.start1--;
+ patch.length1 = 1;
+ } else if (m[2] == '0') {
+ patch.length1 = 0;
+ } else {
+ patch.start1--;
+ patch.length1 = parseInt(m[2]);
+ }
+
+ patch.start2 = parseInt(m[3]);
+ if (m[4] == '') {
+ patch.start2--;
+ patch.length2 = 1;
+ } else if (m[4] == '0') {
+ patch.length2 = 0;
+ } else {
+ patch.start2--;
+ patch.length2 = parseInt(m[4]);
+ }
+ text.shift();
+
+ while (text.length != 0) {
+ sign = text[0].charAt(0);
+ line = decodeURIComponent(text[0].substring(1));
+ if (sign == '-') {
+ // Deletion.
+ patch.diffs.push([-1, line]);
+ } else if (sign == '+') {
+ // Insertion.
+ patch.diffs.push([1, line]);
+ } else if (sign == ' ') {
+ // Minor equality.
+ patch.diffs.push([0, line]);
+ } else if (sign == '@') {
+ // Start of next patch.
+ break;
+ } else if (sign == '') {
+ // Blank line? Whatever.
+ } else {
+ // WTF?
+ return alert("Invalid patch mode:
'"+sign+"'\n"+line);
+ }
+ text.shift();
+ }
+ }
+ return patches;
+}
+
+// EOF
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/devkit/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,23 @@
+// UK lang variables
+
+tinyMCE.addToLang('devkit',{
+title : 'TinyMCE Development Kit',
+info_tab : 'Info',
+settings_tab : 'Settings',
+log_tab : 'Log',
+content_tab : 'Content',
+command_states_tab : 'Commands',
+undo_redo_tab : 'Undo/Redo',
+misc_tab : 'Misc',
+filter : 'Filter:',
+clear_log : 'Clear log',
+refresh : 'Refresh',
+info_help : 'Press Refresh to view info.',
+settings_help : 'Press Refresh to display the settings array for each TinyMCE_Control
instance.',
+content_help : 'Press Refresh to display the raw and cleaned HTML content for each
TinyMCE_Control instance.',
+command_states_help : 'Press Refresh to display the current command states from
inst.queryCommandState. This list will also mark unsupported commands.',
+undo_redo_help : 'Press Refresh to display the global and instance undo/redo
levels.',
+misc_help : 'Here are various tools for debugging and development purposes.',
+debug_events : 'Debug events',
+undo_diff : 'Diff undo levels'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('directionality');var
TinyMCE_DirectionalityPlugin={getInfo:function(){return{longname:'Directionality',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_directionality_ltr_desc','{$pluginurl}/images/ltr.gif','mceDirectionLTR');case"rtl":return
tinyMCE.getButtonHTML(cn,'lang_directionality_rtl_desc','{$pluginurl}/images/rtl.gif','mceDirectionRTL')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceDirectionLTR":var
inst=tinyMCE.getInstanceById(editor_id);var
elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","ltr");tinyMCE.triggerNodeChange(false);return
true;case"mceDirectionRTL"!
:var inst=tinyMCE.getInstanceById(editor_id);var
elm=tinyMCE.getParentElement(inst.getFocusElement(),"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(elm)elm.setAttribute("dir","rtl");tinyMCE.triggerNodeChange(false);return
true}return
false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function
getAttrib(elm,name){return
elm.getAttribute(name)?elm.getAttribute(name):""}if(node==null)return;var
elm=tinyMCE.getParentElement(node,"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!elm){tinyMCE.switchClass(editor_id+'_ltr','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_rtl','mceButtonDisabled');return
true}tinyMCE.switchClass(editor_id+'_ltr','mceButtonNormal');tinyMCE.switchClass(editor_id+'_rtl','mceButtonNormal');var
dir=getAttrib(elm,"dir");if(dir=="ltr"||dir=="")tinyMCE.switchClass(editor_id+'_ltr','mceButtonSelected');else
tinyMCE.switchClass(editor_id+'_rtl','mceButtonSelected');return
true}};tinyMCE.addPlugin("directionality",Ti!
nyMCE_DirectionalityPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,90 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('directionality');
+
+var TinyMCE_DirectionalityPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Directionality',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl :
'http://tinymce.moxiecode.com/tinymce/docs/plugin_directionality.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "ltr":
+ return tinyMCE.getButtonHTML(cn, 'lang_directionality_ltr_desc',
'{$pluginurl}/images/ltr.gif', 'mceDirectionLTR');
+
+ case "rtl":
+ return tinyMCE.getButtonHTML(cn, 'lang_directionality_rtl_desc',
'{$pluginurl}/images/rtl.gif', 'mceDirectionRTL');
+ }
+
+ return "";
+ },
+
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ switch (command) {
+ case "mceDirectionLTR":
+ var inst = tinyMCE.getInstanceById(editor_id);
+ var elm = tinyMCE.getParentElement(inst.getFocusElement(),
"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+
+ if (elm)
+ elm.setAttribute("dir", "ltr");
+
+ tinyMCE.triggerNodeChange(false);
+ return true;
+
+ case "mceDirectionRTL":
+ var inst = tinyMCE.getInstanceById(editor_id);
+ var elm = tinyMCE.getParentElement(inst.getFocusElement(),
"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+
+ if (elm)
+ elm.setAttribute("dir", "rtl");
+
+ tinyMCE.triggerNodeChange(false);
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid,
any_selection) {
+ function getAttrib(elm, name) {
+ return elm.getAttribute(name) ? elm.getAttribute(name) : "";
+ }
+
+ if (node == null)
+ return;
+
+ var elm = tinyMCE.getParentElement(node,
"p,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+ if (!elm) {
+ tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonDisabled');
+ tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonDisabled');
+ return true;
+ }
+
+ tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonNormal');
+ tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonNormal');
+
+ var dir = getAttrib(elm, "dir");
+ if (dir == "ltr" || dir == "")
+ tinyMCE.switchClass(editor_id + '_ltr', 'mceButtonSelected');
+ else
+ tinyMCE.switchClass(editor_id + '_rtl', 'mceButtonSelected');
+
+ return true;
+ }
+};
+
+tinyMCE.addPlugin("directionality", TinyMCE_DirectionalityPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/ltr.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/images/rtl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,6 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+directionality_ltr_desc : 'Direction left to right',
+directionality_rtl_desc : 'Direction right to left'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/directionality/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,36 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('emotions', 'uk,se');
-
-/**
- * Returns the HTML contents of the emotions control.
- */
-function TinyMCE_emotions_getControlHTML(control_name) {
- switch (control_name) {
- case "emotions":
- return '<img id="{$editor_id}_emotions"
src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');">';
- }
-
- return "";
-}
-
-/**
- * Executes the mceEmotion command.
- */
-function TinyMCE_emotions_execCommand(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'] = 150;
- template['height'] = 180;
-
- tinyMCE.openWindow(template, {editor_id : editor_id});
-
- return true;
- }
-
- // Pass to next handler in chain
- return false;
-}
+tinyMCE.importPluginLanguagePack('emotions');var
TinyMCE_EmotionsPlugin={getInfo:function(){return{longname:'Emotions',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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']=160;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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,63 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_emotions.html',
+ 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'] = 160;
+ 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);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/emotions.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,45 +1,40 @@
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_emotions_title}</title>
-<script language="javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
- function insertEmotion(file_name) {
- if (window.opener) {
- tinyMCE.insertImage(tinyMCE.baseURL + "/plugins/emotions/images/" +
file_name);
- window.close();
- }
- }
-</script>
+ <title>{$lang_emotions_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/functions.js"></script>
+ <base target="_self" />
</head>
-<body onload="window.focus();">
-<div align="center">
-<div class="title">{$lang_insert_emotions_title}:<br /><br
/></div>
-<table border="0" cellspacing="0" cellpadding="4">
- <tr>
- <td><a href="#"
onclick="insertEmotion('smiley-cool.gif');"><img
src="images/smiley-cool.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-cry.gif');"><img
src="images/smiley-cry.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-embarassed.gif');"><img
src="images/smiley-embarassed.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-foot-in-mouth.gif');"><img
src="images/smiley-foot-in-mouth.gif" width="18" height="18"
border="0" /></a></td>
- </tr>
- <tr>
- <td><a href="#"
onclick="insertEmotion('smiley-frown.gif');"><img
src="images/smiley-frown.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-innocent.gif');"><img
src="images/smiley-innocent.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-kiss.gif');"><img
src="images/smiley-kiss.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-laughing.gif');"><img
src="images/smiley-laughing.gif" width="18" height="18"
border="0" /></a></td>
- </tr>
- <tr>
- <td><a href="#"
onclick="insertEmotion('smiley-money-mouth.gif');"><img
src="images/smiley-money-mouth.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-sealed.gif');"><img
src="images/smiley-sealed.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-smile.gif');"><img
src="images/smiley-smile.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-surprised.gif');"><img
src="images/smiley-surprised.gif" width="18" height="18"
border="0" /></a></td>
- </tr>
- <tr>
- <td><a href="#"
onclick="insertEmotion('smiley-tongue-out.gif');"><img
src="images/smiley-tongue-out.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-undecided.gif');"><img
src="images/smiley-undecided.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-wink.gif');"><img
src="images/smiley-wink.gif" width="18" height="18"
border="0" /></a></td>
- <td><a href="#"
onclick="insertEmotion('smiley-yell.gif');"><img
src="images/smiley-yell.gif" width="18" height="18"
border="0" /></a></td>
- </tr>
-</table>
-</div>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+ <div align="center">
+ <div class="title">{$lang_emotions_title}:<br /><br
/></div>
+
+ <table border="0" cellspacing="0" cellpadding="4">
+ <tr>
+ <td><a
href="javascript:insertEmotion('smiley-cool.gif','lang_emotions_cool');"><img
src="images/smiley-cool.gif" width="18" height="18"
border="0" alt="{$lang_emotions_cool}"
title="{$lang_emotions_cool}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-cry.gif','lang_emotions_cry');"><img
src="images/smiley-cry.gif" width="18" height="18"
border="0" alt="{$lang_emotions_cry}"
title="{$lang_emotions_cry}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-embarassed.gif','lang_emotions_embarassed');"><img
src="images/smiley-embarassed.gif" width="18" height="18"
border="0" alt="{$lang_emotions_embarassed}"
title="{$lang_emotions_embarassed}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-foot-in-mouth.gif','lang_emotions_foot_in_mouth');"><img
src="images/smiley-foot-in-mouth.gif" width="18" height="18"
border="0" alt="{$lang_emotions_foot_in_mouth}"
title="{$lang_emotions_foot_in_mouth}" /></a></td>
+ </tr>
+ <tr>
+ <td><a
href="javascript:insertEmotion('smiley-frown.gif','lang_emotions_frown');"><img
src="images/smiley-frown.gif" width="18" height="18"
border="0" alt="{$lang_emotions_frown}"
title="{$lang_emotions_frown}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-innocent.gif','lang_emotions_innocent');"><img
src="images/smiley-innocent.gif" width="18" height="18"
border="0" alt="{$lang_emotions_innocent}"
title="{$lang_emotions_innocent}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-kiss.gif','lang_emotions_kiss');"><img
src="images/smiley-kiss.gif" width="18" height="18"
border="0" alt="{$lang_emotions_kiss}"
title="{$lang_emotions_kiss}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-laughing.gif','lang_emotions_laughing');"><img
src="images/smiley-laughing.gif" width="18" height="18"
border="0" alt="{$lang_emotions_laughing}"
title="{$lang_emotions_laughing}" /></a></td>
+ </tr>
+ <tr>
+ <td><a
href="javascript:insertEmotion('smiley-money-mouth.gif','lang_emotions_money_mouth');"><img
src="images/smiley-money-mouth.gif" width="18" height="18"
border="0" alt="{$lang_emotions_money_mouth}"
title="{$lang_emotions_money_mouth}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-sealed.gif','lang_emotions_sealed');"><img
src="images/smiley-sealed.gif" width="18" height="18"
border="0" alt="{$lang_emotions_sealed}"
title="{$lang_emotions_sealed}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-smile.gif','lang_emotions_smile');"><img
src="images/smiley-smile.gif" width="18" height="18"
border="0" alt="{$lang_emotions_smile}"
title="{$lang_emotions_smile}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-surprised.gif','lang_emotions_surprised');"><img
src="images/smiley-surprised.gif" width="18" height="18"
border="0" alt="{$lang_emotions_surprised}"
title="{$lang_emotions_surprised}" /></a></td>
+ </tr>
+ <tr>
+ <td><a
href="javascript:insertEmotion('smiley-tongue-out.gif','lang_emotions_tongue_out');"><img
src="images/smiley-tongue-out.gif" width="18" height="18"
border="0" alt="{$lang_emotions_tongue-out}"
title="{$lang_emotions_tongue_out}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-undecided.gif','lang_emotions_undecided');"><img
src="images/smiley-undecided.gif" width="18" height="18"
border="0" alt="{$lang_emotions_undecided}"
title="{$lang_emotions_undecided}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-wink.gif','lang_emotions_wink');"><img
src="images/smiley-wink.gif" width="18" height="18"
border="0" alt="{$lang_emotions_wink}"
title="{$lang_emotions_wink}" /></a></td>
+ <td><a
href="javascript:insertEmotion('smiley-yell.gif','lang_emotions_yell');"><img
src="images/smiley-yell.gif" width="18" height="18"
border="0" alt="{$lang_emotions_yell}"
title="{$lang_emotions_yell}" /></a></td>
+ </tr>
+ </table>
+ </div>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/emotions.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cool.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-cry.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-embarassed.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-foot-in-mouth.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-frown.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-innocent.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-kiss.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-laughing.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-money-mouth.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-sealed.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-smile.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-surprised.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-tongue-out.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-undecided.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-wink.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/images/smiley-yell.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/jscripts/functions.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,21 @@
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+}
+
+function insertEmotion(file_name, title) {
+ title = tinyMCE.getLang(title);
+
+ if (title == null)
+ title = "";
+
+ // XML encode
+ title = title.replace(/&/g, '&');
+ title = title.replace(/\"/g, '"');
+ title = title.replace(/</g, '<');
+ title = title.replace(/>/g, '>');
+
+ var html = '<img src="' + tinyMCE.baseURL +
"/plugins/emotions/images/" + file_name + '" mce_src="' +
tinyMCE.baseURL + "/plugins/emotions/images/" + file_name + '"
border="0" alt="' + title + '" title="' + title +
'" />';
+
+ tinyMCE.execCommand('mceInsertContent', false, html);
+ tinyMCEPopup.close();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/emotions/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,20 +1 @@
- Emotions plugin for TinyMCE
-------------------------------
-
-Installation instructions:
- * Copy the emotions directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "emotions".
- * Add the emotions button name to button list, example: theme_advanced_buttons3_add :
"emotions".
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "emotions",
- theme_advanced_buttons3_add : "emotions"
- });
-
-Copyright notice:
- These emotions where taken from Mozilla Thunderbird.
- I hope they don't get angry if I use them here after all this is a open source
project
- aswell and I realy love their product.
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/content.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/content.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/content.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/css/flash.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,11 @@
+.panel_wrapper div.current {
+ height: 100px;
+}
+
+#width, #height {
+ width: 50px;
+}
+
+#file {
+ width: 250px;
+}
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,194 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('flash', 'uk,se,de');
-
-function TinyMCE_flash_getControlHTML(control_name) {
- switch (control_name) {
- case "flash":
- return '<img id="{$editor_id}_flash"
src="{$pluginurl}/images/flash.gif" title="{$lang_insert_flash}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFlash\');"
/>';
- }
- return "";
-}
-
-/**
- * Executes the mceFlash command.
- */
-function TinyMCE_flash_execCommand(editor_id, element, command, user_interface, value) {
- // Handle commands
- switch (command) {
- case "mceFlash":
- var template = new Array();
- template['file'] = '../../plugins/flash/flash.htm'; //
Relative to theme
- template['width'] = 400;
- template['height'] = 180;
- var name = "", swffile = "", swfwidth = "",
swfheight = "", mceDo = "insert";
- if (tinyMCE.selectedElement != null &&
tinyMCE.selectedElement.nodeName.toLowerCase() == "img"){
- tinyMCE.flashElement = tinyMCE.selectedElement;
- if (tinyMCE.flashElement) {
- name = tinyMCE.flashElement.getAttribute('name') ?
tinyMCE.flashElement.getAttribute('name') : "";
- if (name!='mce_plugin_flash')
- return;
- swfwidth = tinyMCE.flashElement.getAttribute('width') ?
tinyMCE.flashElement.getAttribute('width') : "";
- swfheight = tinyMCE.flashElement.getAttribute('height') ?
tinyMCE.flashElement.getAttribute('height') : "";
- swffile = tinyMCE.flashElement.getAttribute('alt') ?
tinyMCE.flashElement.getAttribute('alt') : "";
- mceDo = "update";
- }
- }
- tinyMCE.openWindow(template, {editor_id : editor_id, swffile : swffile,
swfwidth : swfwidth, swfheight : swfheight, mceDo : mceDo});
- return true;
- }
- // Pass to next handler in chain
- return false;
-}
-
-/**
- * Called when content cleanup is performed.
- */
-function TinyMCE_flash_cleanup(type, content) {
- // Handle custom cleanup
- switch (type) {
- // Called when editor is filled with content
- case "insert_to_editor":
- return TinyMCE_flash_mkCodeCleanup('insertToEditor', content);
-
- // Called when editor is pass out content
- case "get_from_editor":
- return TinyMCE_flash_mkCodeCleanup('getFromEditor', content);
- }
-
- // Pass through to next handler in chain
- return content;
-}
-
-function TinyMCE_flash_handleNodeChange(editor_id, node, undo_index, undo_levels,
visual_aid, any_selection) {
- function getAttrib(elm, name) {
- return elm.getAttribute(name) ? elm.getAttribute(name) : "";
- }
-
- tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonNormal');
-
- do {
- if (node.nodeName.toLowerCase() == "img" && getAttrib(node,
'name').indexOf('mce_plugin_flash') == 0)
- tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonSelected');
- } while ((node = node.parentNode));
-
- return true;
-}
-
-/* Custom cleanup functions for the Flash support */
-
-/**/
-// added 2004 by Michael Keck <me(a)michaelkeck.de>
-// why such a thing?
-// - okay it's needed to have a weelformated code for better searching
-// and replacement of some elements
-function TinyMCE_flash_mkAttribOrder(content) {
- var attribOrder = new Array(
-
'src','href','target','width','height','face','size','maxlength','border','align','valign',
-
'cellpadding','cellspacing','colspan','rowspan','bgcolor','background','color','class','style',
-
'alt','title','name','id','classid','codebase','menu','quality','pluginspage','type','value',
-
'checked','disabled','readonly','selected','method','enctype',
-
'onmouseover','onmouseout','onclick','onfocus','onblur','onchange','noshade'
- );
- var tagArray = new Array();
- tagArray = content.split('<');
- var orgTags = new Array();
- var newTags = new Array();
- tagCount = -1;
- for (var i=1; i<tagArray.length; i++) {
- if (tagArray[i].substring(0,1)!='/' && tagArray[i]!='')
{
- tmpTag = tagArray[i].split('>');
- tagCount++;
- orgTags[tagCount] = '<' + tmpTag[0] + '>';
- }
- }
- for (var i=0; i<orgTags.length; i++) {
- newAttributesString = "";
- savedSlash = '>';
- var attribVals = new Array();
- if (orgTags[i].lastIndexOf('/>')!=-1) {
- savedSlash=' />';
- }
- if (orgTags[i].indexOf(" ")!=-1) {
- for (var j=0; j<attribOrder.length; j++) {
- if (orgTags[i].indexOf(' ' + attribOrder[j] +
'="')!=-1) {
- tmpAttrib = orgTags[i].split(attribOrder[j]+'="');
- if (typeof(tmpAttrib[1])!='undefined') {
- tmpArrAttrib = tmpAttrib[1].split('"');
- attribVals[attribOrder[j]]=tmpArrAttrib[0];
- }
- }
- }
- for (var j=0; j<attribOrder.length; j++) {
- if (typeof(attribVals[attribOrder[j]])!='undefined') {
- newAttributesString += ' ' + attribOrder[j] +
'="' + attribVals[attribOrder[j]] + '"';
- }
- }
- savedTag = '' + orgTags[i].substring(0,orgTags[i].indexOf("
")) + newAttributesString + savedSlash + '';
- newTags[i] = savedTag;
- } else {
- newTags[i] = '' + orgTags[i] + '';
- }
- }
- for (var i=0; i<orgTags.length; i++){
- content = content.replace(orgTags[i],newTags[i]);
- }
- return content;
-}
-
-function TinyMCE_flash_mkCodeCleanup(action, content) {
-// some code removes and replaces
- content = content.replace(new RegExp('\r\n','gi'),'\n');
- content = content.replace(new RegExp('>\n','gi'),'>');
- content = content.replace(new RegExp('\n<','gi'),'<');
- content = content.replace(new RegExp('<param value="[^"]*"
name="Quality" />','gi'),'<param name="quality"
value="high" />');
- content = content.replace(new RegExp('<param value="[^"]*"
name="Menu" />','gi'),'<param name="menu"
value="false" />');
- content = content.replace(new RegExp('<param value="([^"]*)"
name="src" \/>','gi'),'<param name="src"
value="$1" />');
- content = content.replace(new RegExp('<param
value[^>]*>','gi'),'');
- content = content.replace(new
RegExp('strong>','gi'),'b>');
- content = content.replace(new
RegExp('em>','gi'),'em>');
- content = TinyMCE_flash_mkAttribOrder(content);
-// a special order in attrib list is needed
- swfObjSearch = new RegExp('<object width="([^"]*)"
height="([^"]*)" '
- + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
- +
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
- + '<param name="src" value="([^"]*)" />'
- + '<param name="quality" value="high" />'
- + '<param name="menu" value="false" />'
- + '</object>','gi');
- swfObjReplace = '<object width="$1" height="$2"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
- +
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
- + '<param name="src" value="$3" /><param
name="quality" value="high" /><param name="menu"
value="false" />'
- + '<embed src="$3" width="$1" height="$2"
menu="false" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" '
- +
'type="application/x-shockwave-flash"></embed></object>';
- content = content.replace(swfObjSearch,swfObjReplace);
- switch(action) {
- case 'insertToEditor':
- objSearch = new RegExp('<object width="([^"]*)"
height="([^"]*)"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
- +
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
- + '<param name="src" value="([^"]*)"
/><param name="quality" value="high" /><param
name="menu" value="false" />'
- + '<embed src="([^"]*)"
width="([^"]*)" height="([^"]*)" menu="false"
quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" '
- +
'type="application/x-shockwave-flash"></embed></object>','gi');
- objReplace = '<img src="' +
(tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '"
width="$1" height="$2" border="0"
class="mce_plugin_flash" alt="$3" title="$3"
name="mce_plugin_flash" />';
- content = content.replace(objSearch,objReplace);
- break;
- case 'getFromEditor':
- objSearch = new RegExp('<img src="([^"]*)"
width="([^"]*)" height="([^"]*)"
border="([^"]*)" class="mce_plugin_flash"
alt="([^"]*)" title="([^"]*)"
name="mce_plugin_flash" />','gi');
- objReplace = '<object width="$2" height="$3"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" '
- +
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">'
- + '<param name="src" value="$5" /><param
name="quality" value="high" /><param name="menu"
value="false" />'
- + '<embed src="$5" width="$2"
height="$3" menu="false" quality="high"
pluginspage="http://www.macromedia.com/go/getflashplayer" '
- +
'type="application/x-shockwave-flash"></embed></object>';
- content = content.replace(objSearch,objReplace);
- break;
- }
- content = content.replace(new RegExp('\r\n','gi'),'\n');
- content = content.replace(new RegExp('>\n','gi'),'>');
- content = content.replace(new RegExp('\n<','gi'),'<');
- content = TinyMCE_flash_mkAttribOrder(content);
- content = content.replace(new RegExp('\r\n','gi'),'\n');
- content = content.replace(new RegExp('>\n','gi'),'>');
- content = content.replace(new RegExp('\n<','gi'),'<');
- return content;
-/**/
-}
-
+tinyMCE.importPluginLanguagePack('flash');var
TinyMCE_FlashPlugin={getInfo:function(){return{longname:'Flash',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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;templa!
te['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<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var
src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.ge!
tParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callbac
k']+"(src, null,
true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}}break;case"get_from_editor_dom":var
imgs=content.getElementsByTagName("img");for(var
i=0;i<imgs.length;i++){if(tinyMCE.getAttrib(imgs[i],"class")=="mceItemFlash"){var
src=tinyMCE.getAttrib(imgs[i],"alt");if(tinyMCE.getParam('convert_urls'))src=eval(tinyMCE.settings['urlconverter_callback']+"(src,
null,
true);");imgs[i].setAttribute('alt',src);imgs[i].setAttribute('title',src)}}break;case"insert_to_editor":var
startPos=0;var embedList=new Array();content=content.replace(new RegExp('<[
]*embed','gi'),'<embed');content=content.replace(new
RegExp('<[ ]*/embed[
]*>','gi'),'</embed>');content=content.replace(new
RegExp('<[
]*object','gi'),'<object');content=content.replace(new
RegExp('<[ ]*/object[
]*>','gi'),'</object>');while((startPos=content.indexOf('<embed',startPos+1))!=-1){var
endPos=content.indexOf('>',startPos);var
attribs=TinyMCE_FlashPlugin._parseAttributes(content.substring(st!
artPos+6,endPos));embedList[embedList.length]=attribs}var
index=0;while((startPos=content.indexOf('<object',startPos))!=-1){if(index>=embedList.length)break;var
attribs=embedList[index];endPos=content.indexOf('</object>',startPos);endPos+=9;var
contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img
width="'+attribs["width"]+'"
height="'+attribs["height"]+'"';content+='
src="'+(tinyMCE.getParam("theme_href")+'/images/spacer.gif')+'"
title="'+attribs["src"]+'"';content+='
alt="'+attribs["src"]+'" class="mceItemFlash"
/>'+content.substring(endPos);content+=contentAfter;index++;startPos++}var
index=0;while((startPos=content.indexOf('<embed',startPos))!=-1){if(index>=embedList.length)break;var
attribs=embedList[index];endPos=content.indexOf('>',startPos);endPos+=9;var
contentAfter=content.substring(endPos);content=content.substring(0,startPos);content+='<img
width="'+attribs["width"]+'"
height="'+attribs["height"]+'"';content+='
src="'+(tinyM!
CE.getParam("theme_href")+'/images/spacer.gif')+'"
title="'+attribs["s
rc"]+'"';content+='
alt="'+attribs["src"]+'" class="mceItemFlash"
/>'+content.substring(endPos);content+=contentAfter;index++;startPos++}break;case"get_from_editor":var
startPos=-1;while((startPos=content.indexOf('<img',startPos+1))!=-1){var
endPos=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+='<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';embedHTML+='
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/sw...
width="'+attribs["width"]+'"
height="'+attribs["height"]+'">';embedHTML+='<param
name="movie" value="'+attribs["title"]+'"
/>';embedHTML+='<param name="quality"
value="'+quality+'" />';embedHTML+='<param nam!
e="menu" value="'+menu+'"
/>';embedHTML+='<param name="wmode"
value="'+wmode+'" />';embedHTML+='<embed
src="'+attribs["title"]+'" wmode="'+wmode+'"
quality="'+quality+'" menu="'+menu+'"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash"
width="'+attribs["width"]+'"
height="'+attribs["height"]+'"></embed></object>';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 withInV!
alue;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<attribute_string.length;i++){var
chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue)withInValue=true;else
if((chr=='"'||chr=="'")&&withInValue){withInValue=false;var
pos=attributeName.lastIndexOf('
');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else
if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return
attributes}};tinyMCE.addPlugin("flash",TinyMCE_FlashPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,285 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('flash');
+
+var TinyMCE_FlashPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Flash',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_flash.html',
+ 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) {
+ // Handle commands
+ 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'; // Relative to
theme
+ template['width'] = 430;
+ template['height'] = 175;
+
+ template['width'] += tinyMCE.getLang('lang_flash_delta_width', 0);
+ template['height'] += tinyMCE.getLang('lang_flash_delta_height', 0);
+
+ // Is selection a image
+ if (focusElm != null && focusElm.nodeName.toLowerCase() == "img")
{
+ name = tinyMCE.getAttrib(focusElm, 'class');
+
+ if (name.indexOf('mceItemFlash') == -1) // Not a Flash
+ return true;
+
+ // Get rest of Flash items
+ 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;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ cleanup : function(type, content) {
+ switch (type) {
+ case "insert_to_editor_dom":
+ // Force relative/absolute
+ if (tinyMCE.getParam('convert_urls')) {
+ var imgs = content.getElementsByTagName("img");
+ for (var i=0; i<imgs.length; i++) {
+ if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
+ var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+ if (tinyMCE.getParam('convert_urls'))
+ src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null,
true);");
+
+ imgs[i].setAttribute('alt', src);
+ imgs[i].setAttribute('title', src);
+ }
+ }
+ }
+ break;
+
+ case "get_from_editor_dom":
+ var imgs = content.getElementsByTagName("img");
+ for (var i=0; i<imgs.length; i++) {
+ if (tinyMCE.getAttrib(imgs[i], "class") == "mceItemFlash") {
+ var src = tinyMCE.getAttrib(imgs[i], "alt");
+
+ if (tinyMCE.getParam('convert_urls'))
+ src = eval(tinyMCE.settings['urlconverter_callback'] + "(src, null,
true);");
+
+ imgs[i].setAttribute('alt', src);
+ imgs[i].setAttribute('title', src);
+ }
+ }
+ break;
+
+ case "insert_to_editor":
+ var startPos = 0;
+ var embedList = new Array();
+
+ // Fix the embed and object elements
+ content = content.replace(new RegExp('<[
]*embed','gi'),'<embed');
+ content = content.replace(new RegExp('<[ ]*/embed[
]*>','gi'),'</embed>');
+ content = content.replace(new RegExp('<[
]*object','gi'),'<object');
+ content = content.replace(new RegExp('<[ ]*/object[
]*>','gi'),'</object>');
+
+ // Parse all embed tags
+ while ((startPos = content.indexOf('<embed', startPos+1)) != -1) {
+ var endPos = 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('<object', startPos)) != -1) {
+ if (index >= embedList.length)
+ break;
+
+ var attribs = embedList[index];
+
+ // Find end of object
+ endPos = content.indexOf('</object>', startPos);
+ endPos += 9;
+
+ // Insert image
+ var contentAfter = content.substring(endPos);
+ content = content.substring(0, startPos);
+ content += '<img width="' + attribs["width"] + '"
height="' + attribs["height"] + '"';
+ content += ' src="' + (tinyMCE.getParam("theme_href") +
'/images/spacer.gif') + '" title="' + attribs["src"] +
'"';
+ content += ' alt="' + attribs["src"] + '"
class="mceItemFlash" />' + 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('<embed', startPos)) != -1) {
+ if (index >= 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 += '<img width="' + attribs["width"] + '"
height="' + attribs["height"] + '"';
+ content += ' src="' + (tinyMCE.getParam("theme_href") +
'/images/spacer.gif') + '" title="' + attribs["src"] +
'"';
+ content += ' alt="' + attribs["src"] + '"
class="mceItemFlash" />' + 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('<img', startPos+1)) != -1) {
+ var endPos = 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 += '<object
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"';
+ embedHTML += '
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/sw...;
+ embedHTML += ' width="' + attribs["width"] + '"
height="' + attribs["height"] + '">';
+ embedHTML += '<param name="movie" value="' +
attribs["title"] + '" />';
+ embedHTML += '<param name="quality" value="' + quality +
'" />';
+ embedHTML += '<param name="menu" value="' + menu +
'" />';
+ embedHTML += '<param name="wmode" value="' + wmode +
'" />';
+ embedHTML += '<embed src="' + attribs["title"] +
'" wmode="' + wmode + '" quality="' + quality +
'" menu="' + menu + '"
pluginspage="http://www.macromedia.com/go/getflashplayer"
type="application/x-shockwave-flash" width="' +
attribs["width"] + '" height="' + attribs["height"]
+ '"></embed></object>';
+
+ // 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<attribute_string.length; i++) {
+ var chr = attribute_string.charAt(i);
+
+ if ((chr == '"' || chr == "'") && !withInValue)
+ withInValue = true;
+ else if ((chr == '"' || chr == "'") && withInValue)
{
+ withInValue = false;
+
+ var pos = attributeName.lastIndexOf(' ');
+ if (pos != -1)
+ attributeName = attributeName.substring(pos+1);
+
+ attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
+
+ attributeName = "";
+ attributeValue = "";
+ } else if (!whiteSpaceRegExp.test(chr) && !withInName &&
!withInValue)
+ withInName = true;
+
+ if (chr == '=' && withInName)
+ withInName = false;
+
+ if (withInName)
+ attributeName += chr;
+
+ if (withInValue)
+ attributeValue += chr;
+ }
+
+ return attributes;
+ }
+};
+
+tinyMCE.addPlugin("flash", TinyMCE_FlashPlugin);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/flash.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/flash.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/flash.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,116 +1,70 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_flash}</title>
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- function init() {
- // modified 2004-11-10 by Michael Keck (me(a)michaelkeck.de)
- // supporting onclick event to open pop windows
- 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('mceDo'));
- window.focus();
- }
+ <title>{$lang_flash_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/flash.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <link href="css/flash.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+ <form onsubmit="insertFlash();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_flash_general}</a></span></li>
+ </ul>
+ </div>
- function insertFlash() {
- var formObj = document.forms[0];
- if (window.opener) {
- 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 + '%';
- }
- html += ''
- + '<img src="' +
(tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '"
'
- + 'width="' + width + '" height="' +
height + '" '
- + 'border="0" alt="' + file + '"
title="' + file + '" class="mce_plugin_flash"
name="mce_plugin_flash" />';
- tinyMCE.execCommand("mceInsertContent",true,html);
- top.close();
- }
- }
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_flash_general}</legend>
- function cancelAction() {
- top.close();
- }
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td nowrap="nowrap"><label
for="file">{$lang_flash_file}</label></td>
+ <td nowrap="nowrap">
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="file" name="file"
type="text" value="" onfocus="this.select();"
/></td>
+ <td id="filebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr id="linklistrow">
+ <td><label
for="linklist">{$lang_flash_list}</label></td>
+ <td id="linklistcontainer"> </td>
+ </tr>
+ <tr>
+ <td
nowrap="nowrap"><label>{$lang_flash_size}</label></td>
+ <td nowrap="nowrap">
+ <input type="text" id="width" name="width"
value="" onfocus="this.select();" />
+ <select name="width2" id="width2" style="width:
50px">
+ <option value="">px</option>
+ <option value="%">%</option>
+ </select> x <input id="height"
name="height" type="text" value=""
onfocus="this.select();" />
+ <select name="height2" id="height2" style="width:
50px">
+ <option value="">px</option>
+ <option value="%">%</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
-//-->
-</script>
-<style type="text/css">
-<!--
- input.radio {
- border: 1px none #000000;
- background-color: transparent;
- vertical-align: middle;
- }
--->
-</style>
-</head>
-<body onload="init();">
- <form onsubmit="insertFlash();return false;">
- <table border="0" cellpadding="0"
cellspacing="0" width="100%">
- <tr>
- <td class="title">{$lang_insert_flash}</td>
- </tr>
- <tr>
- <td><hr size="1" noshade="noshade"
/></td>
- </tr>
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td
align="right">{$lang_insert_flash_file}:</td>
- <td nowrap="nowrap">
- <input name="file" type="text"
id="file" value="" onfocus="this.select();"
style="width: 250px; vertical-align: middle;" />
- </td>
- </tr>
- <tr>
- <td
align="right">{$lang_insert_flash_size}:</td>
- <td nowrap="nowrap">
- <input name="width" type="text"
id="width" value="" onfocus="this.select();"
style="width: 50px; vertical-align: middle;" />
- <select name="width2" id="width2"
style="width: 50px; vertical-align: middle;">
- <option value="">px</option>
- <option value="%">%</option>
- </select> x <input
name="height" type="text" id="height" value=""
onfocus="this.select();" style="width: 50px; vertical-align: middle;"
/>
- <select name="height2" id="height2"
style="width: 50px; vertical-align: middle;">
- <option value="">px</option>
- <option value="%">%</option>
- </select>
- </td>
- </tr>
- </table></td>
- <tr>
- <td><hr size="1" noshade="noshade"
/></td>
- </tr>
- <tr>
- <td nowrap="nowrap" align="center">
- <input type="button" name="insert"
value="{$lang_insert}" onclick="insertFlash();" id="insert"
/> <input type="button" name="cancel"
value="{$lang_cancel}" onclick="cancelAction();" id="cancel"
/>
- </td>
- </tr>
- </table>
- </form>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertFlash();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/images/flash.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/jscripts/flash.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+}
+
+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<formObj.linklist.length; i++) {
+ if (formObj.linklist.options[i].value == tinyMCE.getWindowArg('swffile'))
+ formObj.linklist.options[i].selected = true;
+ }
+ }
+}
+
+function getFlashListHTML() {
+ if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length
> 0) {
+ var html = "";
+
+ html += '<select id="linklist" name="linklist"
style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this,
window);"
onchange="this.form.file.value=this.options[this.selectedIndex].value;">';
+ html += '<option value="">---</option>';
+
+ for (var i=0; i<tinyMCEFlashList.length; i++)
+ html += '<option value="' + tinyMCEFlashList[i][1] +
'">' + tinyMCEFlashList[i][0] + '</option>';
+
+ html += '</select>';
+
+ 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 += ''
+ + '<img src="' + (tinyMCE.getParam("theme_href") +
"/images/spacer.gif") + '" mce_src="' +
(tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '"
'
+ + 'width="' + width + '" height="' + height +
'" '
+ + 'border="0" alt="' + file + '" title="' +
file + '" class="mceItemFlash" />';
+
+ tinyMCEPopup.execCommand("mceInsertContent", true, html);
+ tinyMCE.selectedInstance.repaint();
+
+ tinyMCEPopup.close();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/flash/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,23 +1 @@
- FLASH plugin for TinyMCE
------------------------------
-
-About:
- This is the INSERT FLASH Dioalog contributed by Michael Keck.
- This one supports popup windows and targets.
-
-Note:
- The placeholder for Flash is called 'mce_plugin_flash' and needs a class
'mce_plugin_flash' in the 'css_-style'.
- Do not name another image 'name="mce_plugin_flash"!
-
-Installation instructions:
- * Copy the flash directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "flash".
- * Add this
"img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]"
to extended_valid_elements option.
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "flash",
- extended_valid_elements :
"img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]"
- });
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/blank.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,9 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>blank_page</title>
+ <meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
+</head>
+<body onload="parent.setupIframe(document);">
+
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/css/fullpage.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('fullpage');var
TinyMCE_FullPagePlugin={getInfo:function(){return{longname:'Fullpage',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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('<body'),pos2;if(pos!=-1){pos=tmp.indexOf('>',pos);pos2=tmp.lastIndexOf('</body>');inst.fullpageTopContent=content.substring(0,pos+1);content=content.substring(pos+1,pos2);}else{if(!inst.fullpageTopContent){var
docType=tinyMCE.getParam("fullpage_default_doctype",'<!DOCTYPE html
PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN"
"http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');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.getPa
ram("fullpage_default_text_color","");title=title.replace(/&/g,'&');title=title.replace(/\"/g,'"');title=title.replace(/</g,'<');title=title.replace(/>/g,'>');tmp='';if(pi)tmp+='<?xml
version="1.0"
encoding="'+enc+'"?>\n';tmp+=docType+'\n';tmp+='<html
xmlns="http:/'+'/www.w3.org/1999/xhtml"
lang="'+lang+'"
xml:lang="'+lang+'">\n';tmp+='<head>\n';tmp+='\t<title>'+title+'</title>\n';tmp+='\t<meta
http-equiv="Content-Type" content="text/html; charset='+enc+'"
/>\n';tmp+='</head>\n';tmp+='<body';if(ff!=''||fz!=''){tmp+='
style="';if(ds!='')tmp+=ds+";";if(ff!='')tmp+='font-family:
'+ff+";";if(fz!='')tmp+='font-size:
'+fz+";";tmp+='"'}if(dtc!='')tmp+='
text="'+dtc+'"';tmp+='>\n';inst.fullpageTopContent=tmp}}this._addToHead(inst);break;case"get_from_editor":if(inst.fullpageTopContent)content=inst.fullpageTopContent+content+"\n</body>\n</html>";break}return
content},_addToHead:function(inst){var doc=inst.getDoc();var
head=doc.getElementsByTagName("head")[0];var body=d!
oc.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(/<script(.*?)<\/script>/gi,'');h=h.replace(/<title(.*?)<\/title>/gi,'');h=h.replace(/<(meta|base)[^>]*>/gi,'');h=h.replace(/<link([^>]*)\/>/gi,'<pre
mce_type="link" $1></pre>');h=h.replace(/<body/gi,'<div
mce_type="body"');h+='</div>';e.innerHTML=h;body.vLink=body.aLink=body.link=body.text='';body.style.cssText='';nl=head.getElementsByTagName('link');for(i=0;i<nl.length;i++){if(tinyMCE.getAttrib(nl[i],'mce_head')=="true")nl[i].parentNode.removeChild(nl[i])}nl=e.getElementsByTagName('pre');for(i=0;i<nl.length;i++){tmp=tinyMCE.getAttrib(nl[i],'media');if(tinyMCE.getAttrib(nl[i],'mce_type')=="link"&&(tmp==""||tmp=="screen"||tmp=="all")&&tinyMCE.getAttrib(nl[i],'rel')=="stylesheet"){le=doc.createElement("link");le.rel="stylesheet";le.href=tinyMCE.getAttrib(nl[i],'href');!
le.setAttribute("mce_head","true");head.appendChild(le)}}nl=e.getEleme
ntsByTagName('div');if(nl.length>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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,227 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_fullpage.html',
+ 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('<body'), pos2;
+
+ // Split page in header and body chunks
+ if (pos != -1) {
+ pos = tmp.indexOf('>', pos);
+ pos2 = tmp.lastIndexOf('</body>');
+ 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",
'<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0
Transitional/'+'/EN"
"http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
+ 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, '<');
+ title = title.replace(/>/g, '>');
+
+ tmp = '';
+
+ // Make default chunk
+ if (pi)
+ tmp += '<?xml version="1.0" encoding="' + enc +
'"?>\n';
+
+ tmp += docType + '\n';
+ tmp += '<html
xmlns="http:/'+'/www.w3.org/1999/xhtml"
lang="' + lang + '" xml:lang="' + lang +
'">\n';
+ tmp += '<head>\n';
+ tmp += '\t<title>' + title + '</title>\n';
+ tmp += '\t<meta http-equiv="Content-Type" content="text/html;
charset=' + enc + '" />\n';
+ tmp += '</head>\n';
+ tmp += '<body';
+
+ if (ff != '' || fz != '') {
+ tmp += ' style="';
+
+ if (ds != '')
+ tmp += ds + ";";
+
+ if (ff != '')
+ tmp += 'font-family: ' + ff + ";";
+
+ if (fz != '')
+ tmp += 'font-size: ' + fz + ";";
+
+ tmp += '"';
+ }
+
+ if (dtc != '')
+ tmp += ' text="' + dtc + '"';
+
+ tmp += '>\n';
+
+ inst.fullpageTopContent = tmp;
+ }
+ }
+
+ this._addToHead(inst);
+
+ break;
+
+ case "get_from_editor":
+ if (inst.fullpageTopContent)
+ content = inst.fullpageTopContent + content +
"\n</body>\n</html>";
+
+ 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(/<script(.*?)<\/script>/gi, '');
+ h = h.replace(/<title(.*?)<\/title>/gi, '');
+ h = h.replace(/<(meta|base)[^>]*>/gi, '');
+
+ // Make link and style elements into pre
+ h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link"
$1></pre>');
+ //h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre
mce_type="style" $1>$2</pre>');
+
+ // Make body a div
+ h = h.replace(/<body/gi, '<div mce_type="body"');
+ h += '</div>';
+
+ // Now crapy MSIE can parse it
+ e.innerHTML = h;
+
+ // Reset all body attributes
+ body.vLink = body.aLink = body.link = body.text = '';
+ body.style.cssText = '';
+
+ // Delete all old links
+ nl = head.getElementsByTagName('link');
+ for (i=0; i<nl.length; i++) {
+ if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")
+ nl[i].parentNode.removeChild(nl[i]);
+ }
+
+ // Add link elements
+ nl = e.getElementsByTagName('pre');
+ for (i=0; i<nl.length; i++) {
+ tmp = tinyMCE.getAttrib(nl[i], 'media');
+ if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp
== "" || tmp == "screen" || tmp == "all") &&
tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {
+ le = doc.createElement("link");
+
+ le.rel = "stylesheet";
+ le.href = tinyMCE.getAttrib(nl[i], 'href');
+ le.setAttribute("mce_head", "true");
+
+ head.appendChild(le);
+ }
+ }
+
+ // Add body attributes
+ nl = e.getElementsByTagName('div');
+ if (nl.length > 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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/fullpage.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,577 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_fullpage_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mclayer.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/fullpage.js"></script>
+ <link href="css/fullpage.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="advlink"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="updateAction();return false;" name="fullpage"
action="#">
+ <div class="tabs">
+ <ul>
+ <li id="meta_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('meta_tab','meta_panel');"
onmousedown="return
false;">{$lang_fullpage_meta_tab}</a></span></li>
+ <li id="appearance_tab"><span><a
href="javascript:mcTabs.displayTab('appearance_tab','appearance_panel');"
onmousedown="return
false;">{$lang_fullpage_appearance_tab}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_fullpage_advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="meta_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_fullpage_meta_props}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td nowrap="nowrap"><label
for="metatitle">{$lang_fullpage_meta_title}</label> </td>
+ <td><input type="text" id="metatitle"
name="metatitle" value="" /></td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="metakeywords">{$lang_fullpage_meta_keywords}</label> </td>
+ <td><textarea id="metakeywords" name="metakeywords"
rows="3"></textarea></td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="metadescription">{$lang_fullpage_meta_description}</label> </td>
+ <td><textarea id="metadescription"
name="metadescription" rows="3"></textarea></td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="metaauthor">{$lang_fullpage_author}</label> </td>
+ <td><input type="text" id="metaauthor"
name="metaauthor" value="" /></td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="metacopyright">{$lang_fullpage_copyright}</label> </td>
+ <td><input type="text" id="metacopyright"
name="metacopyright" value="" /></td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="metarobots">{$lang_fullpage_meta_robots}</label> </td>
+ <td>
+<select id="metarobots" name="metarobots">
+ <option value="">{$lang_not_set}</option>
+ <option
value="index,follow">{$lang_fullpage_meta_index_follow}</option>
+ <option
value="index,nofollow">{$lang_fullpage_meta_index_nofollow}</option>
+ <option
value="noindex,follow">{$lang_fullpage_meta_noindex_follow}</option>
+ <option
value="noindex,nofollow">{$lang_fullpage_meta_noindex_nofollow}</option>
+</select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_fullpage_langprops}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="docencoding">{$lang_fullpage_encoding}</label></td>
+ <td>
+ <select id="docencoding" name="docencoding">
+ <option value="">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="doctypes">{$lang_fullpage_doctypes}</label> </td>
+ <td>
+ <select id="doctypes" name="doctypes">
+ <option value="">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="langcode">{$lang_fullpage_langcode}</label> </td>
+ <td><input type="text" id="langcode"
name="langcode" value="" /></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="langdir">{$lang_fullpage_langdir}</label></td>
+ <td>
+ <select id="langdir" name="langdir">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_fullpage_ltr}</option>
+ <option value="rtl">{$lang_fullpage_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap"><label
for="xml_pi">{$lang_fullpage_xml_pi}</label> </td>
+ <td><input type="checkbox" id="xml_pi"
name="xml_pi" class="checkbox" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="appearance_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_fullpage_appearance_textprops}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="fontface">{$lang_fullpage_fontface}</label></td>
+ <td>
+ <select id="fontface" name="fontface"
onchange="changedStyleField(this);">
+ <option value="">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="fontsize">{$lang_fullpage_fontsize}</label></td>
+ <td>
+ <select id="fontsize" name="fontsize"
onchange="changedStyleField(this);">
+ <option value="">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="textcolor">{$lang_fullpage_textcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="textcolor" name="textcolor"
type="text" value="" size="9"
onchange="updateColor('textcolor_pick','textcolor');changedStyleField(this);"
/></td>
+ <td id="textcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_fullpage_appearance_bgprops}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="bgimage">{$lang_fullpage_bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgimage" name="bgimage"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ <td id="bgimage_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="bgcolor">{$lang_fullpage_bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor"
type="text" value="" size="9"
onchange="updateColor('bgcolor_pick','bgcolor');changedStyleField(this);"
/></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_fullpage_appearance_marginprops}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="leftmargin">{$lang_fullpage_left_margin}</label></td>
+ <td><input id="leftmargin" name="leftmargin"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ <td class="column1"><label
for="rightmargin">{$lang_fullpage_right_margin}</label></td>
+ <td><input id="rightmargin" name="rightmargin"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="topmargin">{$lang_fullpage_top_margin}</label></td>
+ <td><input id="topmargin" name="topmargin"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ <td class="column1"><label
for="bottommargin">{$lang_fullpage_bottom_margin}</label></td>
+ <td><input id="bottommargin" name="bottommargin"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_fullpage_appearance_linkprops}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="link_color">{$lang_fullpage_link_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="link_color" name="link_color"
type="text" value="" size="9"
onchange="updateColor('link_color_pick','link_color');changedStyleField(this);"
/></td>
+ <td id="link_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+
+ <td class="column1"><label
for="visited_color">{$lang_fullpage_visited_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="visited_color" name="visited_color"
type="text" value="" size="9"
onchange="updateColor('visited_color_pick','visited_color');changedStyleField(this);"
/></td>
+ <td id="visited_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="active_color">{$lang_fullpage_active_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="active_color" name="active_color"
type="text" value="" size="9"
onchange="updateColor('active_color_pick','active_color');changedStyleField(this);"
/></td>
+ <td id="active_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+
+ <td> </td>
+ <td> </td>
+
+<!-- <td class="column1"><label
for="hover_color">{$lang_fullpage_hover_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="hover_color" name="hover_color"
type="text" value="" size="9"
onchange="changedStyleField(this);" /></td>
+ <td id="hover_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td> -->
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_fullpage_appearance_style}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="stylesheet">{$lang_fullpage_stylesheet}</label></td>
+ <td><table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="stylesheet" name="stylesheet"
type="text" value="" /></td>
+ <td id="stylesheet_browsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="style">{$lang_fullpage_style}</label></td>
+ <td><input id="style" name="style"
type="text" value="" onchange="changedStyleField(this);"
/></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <div id="addmenu">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr><td><a href="javascript:addHeadElm('title');"
onmousedown="return
false;"><span>{$lang_fullpage_add_title}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('meta');"
onmousedown="return
false;"><span>{$lang_fullpage_add_meta}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('script');"
onmousedown="return
false;"><span>{$lang_fullpage_add_script}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('style');"
onmousedown="return
false;"><span>{$lang_fullpage_add_style}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('link');"
onmousedown="return
false;"><span>{$lang_fullpage_add_link}</span></a></td></tr>
+ <tr><td><a href="javascript:addHeadElm('base');"
onmousedown="return
false;"><span>{$lang_fullpage_add_base}</span></a></td></tr>
+ <tr><td><a
href="javascript:addHeadElm('comment');" onmousedown="return
false;"><span>{$lang_fullpage_add_comment}</span></a></td></tr>
+ </table>
+ </div>
+
+ <fieldset>
+ <legend>{$lang_fullpage_head_elements}</legend>
+
+ <div class="headlistwrapper">
+ <div class="toolbar">
+ <div style="float: left">
+ <a id="addbutton" href="javascript:showAddMenu();"
onmousedown="return false;" class="addbutton"
title="{$lang_fullpage_add}"></a>
+ <a href="#" onmousedown="return false;"
class="removebutton" title="{$lang_fullpage_remove}"></a>
+ </div>
+ <div style="float: right">
+ <a href="#" onmousedown="return false;"
class="moveupbutton" title="{$lang_fullpage_moveup}"></a>
+ <a href="#" onmousedown="return false;"
class="movedownbutton"
title="{$lang_fullpage_movedown}"></a>
+ </div>
+ <br style="clear: both" />
+ </div>
+ <select id="headlist" size="26"
onchange="updateHeadElm(this.options[this.selectedIndex].value);">
+ <option value="title_0"><title>Some title bla bla
bla</title></option>
+ <option value="meta_1"><meta
name="keywords">Some bla bla bla</meta></option>
+ <option value="meta_2"><meta
name="description">Some bla bla bla bla bla bla bla bla
bla</meta></option>
+ <option value="script_3"><script
language="javascript">...</script></option>
+ <option
value="style_4"><style>...</style></option>
+ <option value="base_5"><base href="."
/></option>
+ <option value="comment_6"><!-- ...
--></option>
+ <option value="link_7"><link href="."
/></option>
+ </select>
+ </div>
+ </fieldset>
+
+ <fieldset id="meta_element">
+ <legend>{$lang_fullpage_meta_element}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_meta_type">{$lang_fullpage_type}</label></td>
+ <td><select id="element_meta_type">
+ <option value="name">name</option>
+ <option value="http-equiv">http-equiv</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_meta_name">{$lang_fullpage_name}</label></td>
+ <td><input id="element_meta_name"
name="element_meta_name" type="text" value=""
/></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_meta_content">{$lang_fullpage_content}</label></td>
+ <td><input id="element_meta_content"
name="element_meta_content" type="text" value=""
/></td>
+ </tr>
+ </table>
+
+ <input type="button" id="meta_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="title_element">
+ <legend>{$lang_fullpage_title_element}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_title">{$lang_fullpage_meta_title}</label></td>
+ <td><input id="element_title" name="element_title"
type="text" value="" /></td>
+ </tr>
+ </table>
+
+ <input type="button" id="title_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="script_element">
+ <legend>{$lang_fullpage_script_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="script_props_tab"
class="current"><span><a
href="javascript:mcTabs.displayTab('script_props_tab','script_props_panel');"
onmousedown="return
false;">{$lang_fullpage_properties}</a></span></li>
+ <li id="script_value_tab"><span><a
href="javascript:mcTabs.displayTab('script_value_tab','script_value_panel');"
onmousedown="return
false;">{$lang_fullpage_value}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="script_props_panel" class="panel current">
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_script_type">{$lang_fullpage_type}</label></td>
+ <td><select id="element_script_type">
+ <option value="text/javascript">text/javascript</option>
+ <option value="text/jscript">text/jscript</option>
+ <option value="text/vbscript">text/vbscript</option>
+ <option value="text/vbs">text/vbs</option>
+ <option value="text/ecmascript">text/ecmascript</option>
+ <option value="text/xml">text/xml</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_script_src">{$lang_fullpage_src}</label></td>
+ <td><table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="element_script_src"
name="element_script_src" type="text" value=""
/></td>
+ <td id="script_src_pickcontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_script_charset">{$lang_fullpage_charset}</label></td>
+ <td><select id="element_script_charset"><option
value="">{$lang_not_set}</option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_script_defer">{$lang_fullpage_defer}</label></td>
+ <td><input type="checkbox"
id="element_script_defer" name="element_script_defer"
class="checkbox" /></td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="script_value_panel" class="panel">
+ <textarea id="element_script_value"></textarea>
+ </div>
+ </div>
+
+ <input type="button" id="script_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="style_element">
+ <legend>{$lang_fullpage_style_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="style_props_tab"
class="current"><span><a
href="javascript:mcTabs.displayTab('style_props_tab','style_props_panel');"
onmousedown="return
false;">{$lang_fullpage_properties}</a></span></li>
+ <li id="style_value_tab"><span><a
href="javascript:mcTabs.displayTab('style_value_tab','style_value_panel');"
onmousedown="return
false;">{$lang_fullpage_value}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="style_props_panel" class="panel current">
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_style_type">{$lang_fullpage_type}</label></td>
+ <td><select id="element_style_type">
+ <option value="text/css">text/css</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_style_media">{$lang_fullpage_media}</label></td>
+ <td><select
id="element_style_media"></select></td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="style_value_panel" class="panel">
+ <textarea id="element_style_value"></textarea>
+ </div>
+ </div>
+
+ <input type="button" id="style_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="base_element">
+ <legend>{$lang_fullpage_base_element}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_base_href">{$lang_fullpage_href}</label></td>
+ <td><input id="element_base_href"
name="element_base_href" type="text" value=""
/></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_base_target">{$lang_fullpage_target}</label></td>
+ <td><input id="element_base_target"
name="element_base_target" type="text" value=""
/></td>
+ </tr>
+ </table>
+
+ <input type="button" id="base_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="link_element">
+ <legend>{$lang_fullpage_link_element}</legend>
+
+ <div class="tabs">
+ <ul>
+ <li id="link_general_tab"
class="current"><span><a
href="javascript:mcTabs.displayTab('link_general_tab','link_general_panel');"
onmousedown="return
false;">{$lang_fullpage_general_props}</a></span></li>
+ <li id="link_advanced_tab"><span><a
href="javascript:mcTabs.displayTab('link_advanced_tab','link_advanced_panel');"
onmousedown="return
false;">{$lang_fullpage_advanced_props}</a></span></li>
+ </ul>
+ </div>
+
+ <br style="clear: both" />
+
+ <div class="panel_wrapper">
+ <div id="link_general_panel" class="panel current">
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_link_href">{$lang_fullpage_href}</label></td>
+ <td><table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="element_link_href"
name="element_link_href" type="text" value=""
/></td>
+ <td id="link_href_pickcontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_link_title">{$lang_fullpage_meta_title}</label></td>
+ <td><input id="element_link_title"
name="element_link_title" type="text" value=""
/></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_link_type">{$lang_fullpage_type}</label></td>
+ <td><select id="element_link_type"
name="element_link_type">
+ <option value="text/css">text/css</option>
+ <option value="text/javascript">text/javascript</option>
+ </select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_link_media">{$lang_fullpage_media}</label></td>
+ <td><select id="element_link_media"
name="element_link_media"></select></td>
+ </tr>
+ <tr>
+ <td><label
for="element_style_rel">{$lang_fullpage_rel}</label></td>
+ <td><select id="element_style_rel"
name="element_style_rel">
+ <option value="">{$lang_not_set}</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="link_advanced_panel" class="panel">
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td class="column1"><label
for="element_link_charset">{$lang_fullpage_charset}</label></td>
+ <td><select id="element_link_charset"><option
value="">{$lang_not_set}</option></select></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_link_hreflang">{$lang_fullpage_hreflang}</label></td>
+ <td><input id="element_link_hreflang"
name="element_link_hreflang" type="text" value=""
/></td>
+ </tr>
+ <tr>
+ <td class="column1"><label
for="element_link_target">{$lang_fullpage_target}</label></td>
+ <td><input id="element_link_target"
name="element_link_target" type="text" value=""
/></td>
+ </tr>
+ <tr>
+ <td><label
for="element_style_rev">{$lang_fullpage_rev}</label></td>
+ <td><select id="element_style_rev"
name="element_style_rev">
+ <option value="">{$lang_not_set}</option>
+ <option value="alternate">Alternate</option>
+ <option value="designates">Designates</option>
+ <option value="stylesheet">Stylesheet</option>
+ <option value="start">Start</option>
+ <option value="next">Next</option>
+ <option value="prev">Prev</option>
+ <option value="contents">Contents</option>
+ <option value="index">Index</option>
+ <option value="glossary">Glossary</option>
+ <option value="copyright">Copyright</option>
+ <option value="chapter">Chapter</option>
+ <option value="subsection">Subsection</option>
+ <option value="appendix">Appendix</option>
+ <option value="help">Help</option>
+ <option value="bookmark">Bookmark</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+
+ <input type="button" id="link_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+
+ <fieldset id="comment_element">
+ <legend>{$lang_fullpage_comment_element}</legend>
+
+ <textarea id="element_comment_value"></textarea>
+
+ <input type="button" id="comment_updateelement"
class="updateElementButton" name="update"
value="{$lang_update}" onclick="updateElement();" />
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="update"
value="{$lang_update}" onclick="updateAction();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/add.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/fullpage.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_down.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/move_up.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/images/remove.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/jscripts/fullpage.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,580 @@
+//
+
+var defaultDocTypes =
+ 'XHTML 1.0 Transitional=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">,' +
+ 'XHTML 1.0 Frameset=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">,' +
+ 'XHTML 1.0 Strict=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">,'
+
+ 'XHTML 1.1=<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">">,' +
+ 'HTML 4.01 Transitional=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN">,' +
+ 'HTML 4.01 Strict=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">,' +
+ 'HTML 4.01 Frameset=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">';
+
+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<doctypes.length; i++) {
+ p = doctypes[i].split('=');
+
+ if (p.length > 1)
+ addSelectValue(f, 'doctypes', p[0], p[1]);
+ }
+
+ // Setup fonts select box
+ fonts = tinyMCE.getParam("fullpage_fonts",
defaultFontNames).split(';');
+ for (i=0; i<fonts.length; i++) {
+ p = fonts[i].split('=');
+
+ if (p.length > 1)
+ addSelectValue(f, 'fontface', p[0], p[1]);
+ }
+
+ // Setup fontsize select box
+ fonts = tinyMCE.getParam("fullpage_fontsizes",
defaultFontSizes).split(',');
+ for (i=0; i<fonts.length; i++)
+ addSelectValue(f, 'fontsize', fonts[i], fonts[i]);
+
+ // Setup mediatype select boxs
+ mediaTypes = tinyMCE.getParam("fullpage_media_types",
defaultMediaTypes).split(',');
+ for (i=0; i<mediaTypes.length; i++) {
+ p = mediaTypes[i].split('=');
+
+ if (p.length > 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<encodings.length; i++) {
+ p = encodings[i].split('=');
+
+ if (p.length > 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(/<script>/gi, '<script
type="text/javascript">');
+ hc = hc.replace(/\ssrc=/gi, " mce_src=");
+ hc = hc.replace(/\shref=/gi, " mce_href=");
+ hc = hc.replace(/\stype=/gi, " mce_type=");
+ hc = hc.replace(/<script/gi, '<script type="text/unknown" ');
+
+ // Add end to make it DOM parseable
+ hc += '</body></html>';
+
+ topDoc = doc;
+ doc.open();
+ doc.write(hc);
+ doc.close();
+
+ // ------- Setup options for genral tab
+
+ // Parse xml and doctype
+ xmlVer = getReItem(/<\?\s*?xml.*?version\s*?=\s*?"(.*?)".*?\?>/gi, hc,
1);
+ xmlEnc = getReItem(/<\?\s*?xml.*?encoding\s*?=\s*?"(.*?)".*?\?>/gi, hc,
1);
+ docType = getReItem(/<\!DOCTYPE.*?>/gi, hc, 0);
+ f.langcode.value = getReItem(/lang="(.*?)"/gi, hc, 1);
+
+ // Get title
+ f.metatitle.value =
tinyMCE.entityDecode(getReItem(/<title>(.*?)<\/title>/gi, hc, 1));
+
+ // Check for meta encoding
+ nodes = doc.getElementsByTagName("meta");
+ for (i=0; i<nodes.length; i++) {
+ name = tinyMCE.getAttrib(nodes[i], 'name');
+ value = tinyMCE.getAttrib(nodes[i], 'content');
+ httpEquiv = tinyMCE.getAttrib(nodes[i], 'httpEquiv');
+
+ switch (name.toLowerCase()) {
+ case "keywords":
+ f.metakeywords.value = value;
+ break;
+
+ case "description":
+ f.metadescription.value = value;
+ break;
+
+ case "author":
+ f.metaauthor.value = value;
+ break;
+
+ case "copyright":
+ f.metacopyright.value = value;
+ break;
+
+ case "robots":
+ selectByValue(f, 'metarobots', value, true, true);
+ break;
+ }
+
+ switch (httpEquiv.toLowerCase()) {
+ case "content-type":
+ tmp = getReItem(/charset\s*=\s*(.*)\s*/gi, value, 1);
+
+ // Override XML encoding
+ if (tmp != "")
+ xmlEnc = tmp;
+
+ break;
+ }
+ }
+
+ selectByValue(f, 'doctypes', docType, true, true);
+ selectByValue(f, 'docencoding', xmlEnc, true, true);
+ selectByValue(f, 'langdir', tinyMCE.getAttrib(doc.body, 'dir'), true,
true);
+
+ if (xmlVer != '')
+ f.xml_pi.checked = true;
+
+ // ------- Setup options for appearance tab
+
+ // Get primary stylesheet
+ nodes = doc.getElementsByTagName("link");
+ for (i=0; i<nodes.length; i++) {
+ l = nodes[i];
+ tmp = tinyMCE.getAttrib(l, 'media');
+
+ if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp ==
"" || tmp == "screen" || tmp == "all") &&
tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
+ f.stylesheet.value = tinyMCE.getAttrib(l, 'mce_href');
+ break;
+ }
+ }
+
+ // Get from style elements
+ nodes = doc.getElementsByTagName("style");
+ for (i=0; i<nodes.length; i++) {
+ tmp = parseStyleElement(nodes[i]);
+
+ for (x=0; x<tmp.length; x++) {
+ // if (tmp[x].rule.indexOf('a:hover') != -1 &&
tmp[x].data['color'])
+ // f.hover_color.value = tmp[x].data['color'];
+
+ if (tmp[x].rule.indexOf('a:visited') != -1 &&
tmp[x].data['color'])
+ f.visited_color.value = tmp[x].data['color'];
+
+ if (tmp[x].rule.indexOf('a:link') != -1 &&
tmp[x].data['color'])
+ f.link_color.value = tmp[x].data['color'];
+
+ if (tmp[x].rule.indexOf('a:active') != -1 &&
tmp[x].data['color'])
+ f.active_color.value = tmp[x].data['color'];
+ }
+ }
+
+ // Get from body attribs
+
+/* f.leftmargin.value = tinyMCE.getAttrib(doc.body, "leftmargin");
+ f.rightmargin.value = tinyMCE.getAttrib(doc.body, "rightmargin");
+ f.topmargin.value = tinyMCE.getAttrib(doc.body, "topmargin");
+ f.bottommargin.value = tinyMCE.getAttrib(doc.body, "bottommargin");*/
+ f.textcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "text"));
+ f.active_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "alink"));
+ f.link_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "link"));
+ f.visited_color.value = convertRGBToHex(tinyMCE.getAttrib(doc.body,
"vlink"));
+ f.bgcolor.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "bgcolor"));
+ f.bgimage.value = convertRGBToHex(tinyMCE.getAttrib(doc.body, "background"));
+
+ // Get from style info
+ var style = tinyMCE.parseStyle(tinyMCE.getAttrib(doc.body, 'style'));
+
+ if (style['font-family'])
+ selectByValue(f, 'fontface', style['font-family'], true, true);
+ else
+ selectByValue(f, 'fontface',
tinyMCE.getParam("fullpage_default_fontface", ""), true, true);
+
+ if (style['font-size'])
+ selectByValue(f, 'fontsize', style['font-size'], true, true);
+ else
+ selectByValue(f, 'fontsize',
tinyMCE.getParam("fullpage_default_fontsize", ""), true, true);
+
+ if (style['color'])
+ f.textcolor.value = convertRGBToHex(style['color']);
+
+ if (style['background-image'])
+ f.bgimage.value = style['background-image'].replace(new
RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+ if (style['background-color'])
+ f.bgcolor.value = convertRGBToHex(style['background-color']);
+
+ if (style['margin']) {
+ tmp = style['margin'].replace(/[^0-9 ]/g, '');
+ tmp = tmp.split(/ +/);
+ f.topmargin.value = tmp.length > 0 ? tmp[0] : '';
+ f.rightmargin.value = tmp.length > 1 ? tmp[1] : tmp[0];
+ f.bottommargin.value = tmp.length > 2 ? tmp[2] : tmp[0];
+ f.leftmargin.value = tmp.length > 3 ? tmp[3] : tmp[0];
+ }
+
+ if (style['margin-left'])
+ f.leftmargin.value = style['margin-left'].replace(/[^0-9]/g, '');
+
+ if (style['margin-right'])
+ f.rightmargin.value = style['margin-right'].replace(/[^0-9]/g, '');
+
+ if (style['margin-top'])
+ f.topmargin.value = style['margin-top'].replace(/[^0-9]/g, '');
+
+ if (style['margin-bottom'])
+ f.bottommargin.value = style['margin-bottom'].replace(/[^0-9]/g, '');
+
+ f.style.value = tinyMCE.serializeStyle(style);
+
+ updateColor('textcolor_pick', 'textcolor');
+ updateColor('bgcolor_pick', 'bgcolor');
+ updateColor('visited_color_pick', 'visited_color');
+ updateColor('active_color_pick', 'active_color');
+ updateColor('link_color_pick', 'link_color');
+ //updateColor('hover_color_pick', 'hover_color');
+}
+
+function updateAction() {
+ var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
+ var f = document.forms[0];
+ var nl, i, h, v, s, head, html, l, tmp, addlink = true;
+
+ head = topDoc.getElementsByTagName('head')[0];
+
+ // Fix scripts without a type
+ nl = topDoc.getElementsByTagName('script');
+ for (i=0; i<nl.length; i++) {
+ if (tinyMCE.getAttrib(nl[i], 'mce_type') == '')
+ nl[i].setAttribute('mce_type', 'text/javascript');
+ }
+
+ // Get primary stylesheet
+ nl = topDoc.getElementsByTagName("link");
+ for (i=0; i<nl.length; i++) {
+ l = nl[i];
+
+ tmp = tinyMCE.getAttrib(l, 'media');
+
+ if (tinyMCE.getAttrib(l, 'mce_type') == "text/css" && (tmp ==
"" || tmp == "screen" || tmp == "all") &&
tinyMCE.getAttrib(l, 'rel') == "stylesheet") {
+ addlink = false;
+
+ if (f.stylesheet.value == '')
+ l.parentNode.removeChild(l);
+ else
+ l.setAttribute('mce_href', f.stylesheet.value);
+
+ break;
+ }
+ }
+
+ // Add new link
+ if (f.stylesheet.value != '') {
+ l = topDoc.createElement('link');
+
+ l.setAttribute('mce_type', 'text/css');
+ l.setAttribute('mce_href', f.stylesheet.value);
+ l.setAttribute('rel', 'stylesheet');
+
+ head.appendChild(l);
+ }
+
+ setMeta(head, 'keywords', f.metakeywords.value);
+ setMeta(head, 'description', f.metadescription.value);
+ setMeta(head, 'author', f.metaauthor.value);
+ setMeta(head, 'copyright', f.metacopyright.value);
+ setMeta(head, 'robots', getSelectValue(f, 'metarobots'));
+ setMeta(head, 'Content-Type', getSelectValue(f, 'docencoding'));
+
+ topDoc.body.dir = getSelectValue(f, 'langdir');
+ topDoc.body.style.cssText = f.style.value;
+
+ topDoc.body.setAttribute('vLink', f.visited_color.value);
+ topDoc.body.setAttribute('link', f.link_color.value);
+ topDoc.body.setAttribute('text', f.textcolor.value);
+ topDoc.body.setAttribute('aLink', f.active_color.value);
+
+ topDoc.body.style.fontFamily = getSelectValue(f, 'fontface');
+ topDoc.body.style.fontSize = getSelectValue(f, 'fontsize');
+ topDoc.body.style.backgroundColor = f.bgcolor.value;
+
+ if (f.leftmargin.value != '')
+ topDoc.body.style.marginLeft = f.leftmargin.value + 'px';
+
+ if (f.rightmargin.value != '')
+ topDoc.body.style.marginRight = f.rightmargin.value + 'px';
+
+ if (f.bottommargin.value != '')
+ topDoc.body.style.marginBottom = f.bottommargin.value + 'px';
+
+ if (f.topmargin.value != '')
+ topDoc.body.style.marginTop = f.topmargin.value + 'px';
+
+ html = topDoc.getElementsByTagName('html')[0];
+ html.setAttribute('lang', f.langcode.value);
+ html.setAttribute('xml:lang', f.langcode.value);
+
+ if (f.bgimage.value != '')
+ topDoc.body.style.backgroundImage = "url('" + f.bgimage.value +
"')";
+ else
+ topDoc.body.style.backgroundImage = '';
+
+ inst.cleanup.addRuleStr('-title,meta[http-equiv|name|content],base[href|target],link[href|rel|type|title|media],style[type],script[type|language|src],html[lang|xml:lang|xmlns],body[style|dir|vlink|link|text|alink],head');
+
+ h = inst.cleanup.serializeNodeAsHTML(topDoc.documentElement);
+
+ h = h.substring(0, h.lastIndexOf('</body>'));
+
+ if (h.indexOf('<title>') == -1)
+ h = h.replace(/<head.*?>/, '$&\n' + '<title>' +
inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
+ else
+ h = h.replace(/<title>(.*?)<\/title>/, '<title>' +
inst.cleanup.xmlEncode(f.metatitle.value) + '</title>');
+
+ if ((v = getSelectValue(f, 'doctypes')) != '')
+ h = v + '\n' + h;
+
+ if (f.xml_pi.checked) {
+ s = '<?xml version="1.0"';
+
+ if ((v = getSelectValue(f, 'docencoding')) != '')
+ s += ' encoding="' + v + '"';
+
+ s += '?>\n';
+ h = s + h;
+ }
+
+ inst.fullpageTopContent = h;
+
+ tinyMCEPopup.execCommand('mceFullPageUpdate', false, '');
+ tinyMCEPopup.close();
+}
+
+function setMeta(he, k, v) {
+ var nl, i, m;
+
+ nl = he.getElementsByTagName('meta');
+ for (i=0; i<nl.length; i++) {
+ if (k == 'Content-Type' && tinyMCE.getAttrib(nl[i],
'http-equiv') == k) {
+ if (v == '')
+ nl[i].parentNode.removeChild(nl[i]);
+ else
+ nl[i].setAttribute('content', "text/html; charset=" + v);
+
+ return;
+ }
+
+ if (tinyMCE.getAttrib(nl[i], 'name') == k) {
+ if (v == '')
+ nl[i].parentNode.removeChild(nl[i]);
+ else
+ nl[i].setAttribute('content', v);
+ return;
+ }
+ }
+
+ if (v == '')
+ return;
+
+ m = topDoc.createElement('meta');
+
+ if (k == 'Content-Type')
+ m.httpEquiv = k;
+ else
+ m.setAttribute('name', k);
+
+ m.setAttribute('content', v);
+ he.appendChild(m);
+}
+
+function parseStyleElement(e) {
+ var v = e.innerHTML;
+ var p, i, r;
+
+ v = v.replace(/<!--/gi, '');
+ v = v.replace(/-->/gi, '');
+ v = v.replace(/[\n\r]/gi, '');
+ v = v.replace(/\s+/gi, ' ');
+
+ r = new Array();
+ p = v.split(/{|}/);
+
+ for (i=0; i<p.length; i+=2) {
+ if (p[i] != "")
+ r[r.length] = {rule : tinyMCE.trim(p[i]), data : tinyMCE.parseStyle(p[i+1])};
+ }
+
+ return r;
+}
+
+function serializeStyleElement(d) {
+ var i, s, st;
+
+ s = '<!--\n';
+
+ for (i=0; i<d.length; i++) {
+ s += d[i].rule + ' {\n';
+
+ st = tinyMCE.serializeStyle(d[i].data);
+
+ if (st != '')
+ st += ';';
+
+ s += st.replace(/;/g, ';\n');
+ s += '}\n';
+
+ if (i != d.length - 1)
+ s += '\n';
+ }
+
+ s += '\n-->';
+
+ return s;
+}
+
+function getReItem(r, s, i) {
+ var c = r.exec(s);
+
+ if (c && c.length > i)
+ return c[i];
+
+ return '';
+}
+
+function changedStyleField(field) {
+ //alert(field.id);
+}
+
+function showAddMenu() {
+ var re = document.getElementById('addbutton');
+
+ addMenuLayer.moveRelativeTo(re, 'tr');
+ if (addMenuLayer.isMSIE)
+ addMenuLayer.moveBy(2, 0);
+
+ addMenuLayer.show();
+ addMenuLayer.setAutoHide(true, hideAddMenu);
+ addMenuLayer.addCSSClass(re, 'selected');
+}
+
+function hideAddMenu(l, e, mx, my) {
+ var re = document.getElementById('addbutton');
+ addMenuLayer.removeCSSClass(re, 'selected');
+}
+
+function addHeadElm(type) {
+ var le = document.getElementById('headlist');
+ var re = document.getElementById('addbutton');
+ var te = document.getElementById(type + '_element');
+
+ if (lastElementType)
+ lastElementType.style.display = 'none';
+
+ te.style.display = 'block';
+
+ lastElementType = te;
+
+ addMenuLayer.hide();
+ addMenuLayer.removeCSSClass(re, 'selected');
+
+ document.getElementById(type + '_updateelement').value =
tinyMCE.getLang('lang_insert', 'Insert', true);
+
+ le.size = 10;
+}
+
+function updateHeadElm(item) {
+ var type = item.substring(0, item.indexOf('_'));
+ var le = document.getElementById('headlist');
+ var re = document.getElementById('addbutton');
+ var te = document.getElementById(type + '_element');
+
+ if (lastElementType)
+ lastElementType.style.display = 'none';
+
+ te.style.display = 'block';
+
+ lastElementType = te;
+
+ addMenuLayer.hide();
+ addMenuLayer.removeCSSClass(re, 'selected');
+
+ document.getElementById(type + '_updateelement').value =
tinyMCE.getLang('lang_update', 'Update', true);
+
+ le.size = 10;
+}
+
+function cancelElementUpdate() {
+ var le = document.getElementById('headlist');
+
+ if (lastElementType)
+ lastElementType.style.display = 'none';
+
+ le.size = 26;
+}
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullpage/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,92 @@
+// UK lang variables
+
+tinyMCE.addToLang('fullpage',{
+ title : 'Document properties',
+ desc : 'Document properties',
+ meta_tab : 'General',
+ appearance_tab : 'Appearance',
+ advanced_tab : 'Advanced',
+ meta_props : 'Meta information',
+ langprops : 'Language and encoding',
+ meta_title : 'Title',
+ meta_keywords : 'Keywords',
+ meta_description : 'Description',
+ meta_robots : 'Robots',
+ doctypes : 'Doctype',
+ langcode : 'Language code',
+ langdir : 'Language direction',
+ ltr : 'Left to right',
+ rtl : 'Right to left',
+ xml_pi : 'XML declaration',
+ encoding : 'Character encoding',
+ appearance_bgprops : 'Background properties',
+ appearance_marginprops : 'Body margins',
+ appearance_linkprops : 'Link colors',
+ appearance_textprops : 'Text properties',
+ bgcolor : 'Background color',
+ bgimage : 'Background image',
+ left_margin : 'Left margin',
+ right_margin : 'Right margin',
+ top_margin : 'Top margin',
+ bottom_margin : 'Bottom margin',
+ text_color : 'Text color',
+ font_size : 'Font size',
+ font_face : 'Font face',
+ link_color : 'Link color',
+ hover_color : 'Hover color',
+ visited_color : 'Visited color',
+ active_color : 'Active color',
+ textcolor : 'Color',
+ fontsize : 'Font size',
+ fontface : 'Font family',
+ meta_index_follow : 'Index and follow the links',
+ meta_index_nofollow : 'Index and don\'t follow the links',
+ meta_noindex_follow : 'Do not index but follow the links',
+ meta_noindex_nofollow : 'Do not index and don\'t follow the links',
+ appearance_style : 'Stylesheet and style properties',
+ stylesheet : 'Stylesheet',
+ style : 'Style',
+ author : 'Author',
+ copyright : 'Copyright',
+ add : 'Add new element',
+ remove : 'Remove selected element',
+ moveup : 'Move selected element up',
+ movedown : 'Move selected element down',
+ head_elements : 'Head elements',
+ info : 'Information',
+ info_text : '',
+ add_title : 'Title element',
+ add_meta : 'Meta element',
+ add_script : 'Script element',
+ add_style : 'Style element',
+ add_link : 'Link element',
+ add_base : 'Base element',
+ add_comment : 'Comment node',
+ title_element : 'Title element',
+ script_element : 'Script element',
+ style_element : 'Style element',
+ base_element : 'Base element',
+ link_element : 'Link element',
+ meta_element : 'Meta element',
+ comment_element : 'Comment',
+ src : 'Src',
+ language : 'Language',
+ href : 'Href',
+ target : 'Target',
+ rel : 'Rel',
+ type : 'Type',
+ charset : 'Charset',
+ defer : 'Defer',
+ media : 'Media',
+ properties : 'Properties',
+ name : 'Name',
+ value : 'Value',
+ content : 'Content',
+ rel : 'Rel',
+ rev : 'Rev',
+ hreflang : 'Href lang',
+ general_props : 'General',
+ advanced_props : 'Advanced',
+ delta_width : 0,
+ delta_height : 0
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/css/content.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,3 @@
+.mceItemFullScreenHidden {
+ display: none !important;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('fullscreen');var
TinyMCE_FullScreenPlugin={getInfo:function(){return{longname:'Fullscreen',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_fullscreen_desc','{$pluginurl}/images/fullscreen.gif','mceFullScreen')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceFullScreen":this._toggleFullscreen(tinyMCE.getInstanceById(editor_id));return
true}return false},_toggleFullscreen:function(inst){var
ds=inst.getData('fullscreen'),editorContainer,tableElm,iframe,vp,cw,cd,re,w,h,si;cw=inst.get!
ContainerWin();cd=cw.document;editorContainer=cd.getElementById(inst.editorId+'_parent');tableElm=editorContainer.firstChild;iframe=inst.iframeElement;re=cd.getElementById(inst.editorId+'_resize');if(!ds.enabled){ds.parents=[];tinyMCE.getParentNode(tableElm.parentNode,function(n){var
st=n.style;if(n.nodeType==1&&st){if(n.nodeName=='BODY')return
true;ds.parents.push({el:n,position:st.position,left:st.left,top:st.top,right:st.right,bottom:st.bottom,width:st.width,height:st.height,margin:st.margin,padding:st.padding,border:st.border});st.position='static';st.left=st.top=st.margin=st.padding=st.border='0';st.width=st.height=st.right=st.bottom='auto'}return
false});ds.oldOverflow=cd.body.style.overflow;cd.body.style.overflow='hidden';if(re)re.style.display='none';vp=tinyMCE.getViewPort(cw);ds.oldWidth=iframe.style.width?iframe.style.width:iframe.offsetWidth;ds.oldHeight=iframe.style.height?iframe.style.height:iframe.offsetHeight;ds.oldTWidth=tableElm.style.width?tableElm.style.w!
idth:tableElm.offsetWidth;ds.oldTHeight=tableElm.style.height?tableElm
.style.height:tableElm.offsetHeight;if(ds.oldWidth&&ds.oldWidth.indexOf)ds.oldTWidth=ds.oldWidth.indexOf('%')!=-1?ds.oldWidth:ds.oldTWidth;tableElm.style.position='absolute';tableElm.style.zIndex=1000;tableElm.style.left=tableElm.style.top='0';tableElm.style.width=vp.width+'px';tableElm.style.height=vp.height+'px';if(tinyMCE.isRealIE){iframe.style.width=vp.width+'px';iframe.style.height=vp.height+'px';w=iframe.parentNode.clientWidth-(tableElm.offsetWidth-vp.width);h=iframe.parentNode.clientHeight-(tableElm.offsetHeight-vp.height)}else{w=iframe.parentNode.clientWidth;h=iframe.parentNode.clientHeight}iframe.style.width=w+"px";iframe.style.height=h+"px";tinyMCE.selectElements(cd,'SELECT,INPUT,BUTTON,TEXTAREA',function(n){tinyMCE.addCSSClass(n,'mceItemFullScreenHidden');return
false});tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonSelected');ds.enabled=true}else{si=0;tinyMCE.getParentNode(tableElm.parentNode,function(n){var
st=n.style,s=ds.parents[si++];if(n.nodeName=!
='BODY')return
true;if(st){st.position=s.position;st.left=s.left;st.top=s.top;st.bottom=s.bottom;st.right=s.right;st.width=s.width;st.height=s.height;st.margin=s.margin;st.padding=s.padding;st.border=s.border}});ds.parents=[];cd.body.style.overflow=ds.oldOverflow?ds.oldOverflow:'';if(re&&tinyMCE.getParam("theme_advanced_resizing",false))re.style.display='block';tableElm.style.position='static';tableElm.style.zIndex='';tableElm.style.width='';tableElm.style.height='';tableElm.style.width=ds.oldTWidth?ds.oldTWidth:'';tableElm.style.height=ds.oldTHeight?ds.oldTHeight:'';iframe.style.width=ds.oldWidth?ds.oldWidth:'';iframe.style.height=ds.oldHeight?ds.oldHeight:'';tinyMCE.selectElements(cd,'SELECT,INPUT,BUTTON,TEXTAREA',function(n){tinyMCE.removeCSSClass(n,'mceItemFullScreenHidden');return
false});tinyMCE.switchClass(inst.editorId+'_fullscreen','mceButtonNormal');ds.enabled=false}}};tinyMCE.addPlugin("fullscreen",TinyMCE_FullScreenPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,189 @@
+/**
+ * $Id: editor_plugin_src.js 128 2006-10-22 19:55:28Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('fullscreen');
+
+var TinyMCE_FullScreenPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Fullscreen',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_fullscreen.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ if (!tinyMCE.settings['fullscreen_skip_plugin_css'])
+ tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL +
"/plugins/fullscreen/css/content.css");
+ },
+
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "fullscreen":
+ return tinyMCE.getButtonHTML(cn, 'lang_fullscreen_desc',
'{$pluginurl}/images/fullscreen.gif', 'mceFullScreen');
+ }
+
+ return "";
+ },
+
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ switch (command) {
+ case "mceFullScreen":
+ this._toggleFullscreen(tinyMCE.getInstanceById(editor_id));
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ _toggleFullscreen : function(inst) {
+ var ds = inst.getData('fullscreen'), editorContainer, tableElm, iframe, vp, cw,
cd, re, w, h, si;
+
+ cw = inst.getContainerWin();
+ cd = cw.document;
+ editorContainer = cd.getElementById(inst.editorId + '_parent');
+ tableElm = editorContainer.firstChild;
+ iframe = inst.iframeElement;
+ re = cd.getElementById(inst.editorId + '_resize');
+
+ if (!ds.enabled) {
+ ds.parents = [];
+
+ tinyMCE.getParentNode(tableElm.parentNode, function (n) {
+ var st = n.style;
+
+ if (n.nodeType == 1 && st) {
+ if (n.nodeName == 'BODY')
+ return true;
+
+ ds.parents.push({
+ el : n,
+ position : st.position,
+ left : st.left,
+ top : st.top,
+ right : st.right,
+ bottom : st.bottom,
+ width : st.width,
+ height : st.height,
+ margin : st.margin,
+ padding : st.padding,
+ border : st.border
+ });
+
+ st.position = 'static';
+ st.left = st.top = st.margin = st.padding = st.border = '0';
+ st.width = st.height = st.right = st.bottom = 'auto';
+ }
+
+ return false;
+ });
+
+ ds.oldOverflow = cd.body.style.overflow;
+ cd.body.style.overflow = 'hidden';
+
+ if (re)
+ re.style.display = 'none';
+
+ vp = tinyMCE.getViewPort(cw);
+
+ ds.oldWidth = iframe.style.width ? iframe.style.width : iframe.offsetWidth;
+ ds.oldHeight = iframe.style.height ? iframe.style.height : iframe.offsetHeight;
+ ds.oldTWidth = tableElm.style.width ? tableElm.style.width : tableElm.offsetWidth;
+ ds.oldTHeight = tableElm.style.height ? tableElm.style.height :
tableElm.offsetHeight;
+
+ // Handle % width
+ if (ds.oldWidth && ds.oldWidth.indexOf)
+ ds.oldTWidth = ds.oldWidth.indexOf('%') != -1 ? ds.oldWidth : ds.oldTWidth;
+
+ tableElm.style.position = 'absolute';
+ tableElm.style.zIndex = 1000;
+ tableElm.style.left = tableElm.style.top = '0';
+
+ tableElm.style.width = vp.width + 'px';
+ tableElm.style.height = vp.height + 'px';
+
+ if (tinyMCE.isRealIE) {
+ iframe.style.width = vp.width + 'px';
+ iframe.style.height = vp.height + 'px';
+
+ // Calc new width/height based on overflow
+ w = iframe.parentNode.clientWidth - (tableElm.offsetWidth - vp.width);
+ h = iframe.parentNode.clientHeight - (tableElm.offsetHeight - vp.height);
+ } else {
+ w = iframe.parentNode.clientWidth;
+ h = iframe.parentNode.clientHeight;
+ }
+
+ iframe.style.width = w + "px";
+ iframe.style.height = h + "px";
+
+ tinyMCE.selectElements(cd, 'SELECT,INPUT,BUTTON,TEXTAREA', function (n) {
+ tinyMCE.addCSSClass(n, 'mceItemFullScreenHidden');
+
+ return false;
+ });
+
+ tinyMCE.switchClass(inst.editorId + '_fullscreen',
'mceButtonSelected');
+ ds.enabled = true;
+ } else {
+ si = 0;
+ tinyMCE.getParentNode(tableElm.parentNode, function (n) {
+ var st = n.style, s = ds.parents[si++];
+
+ if (n.nodeName == 'BODY')
+ return true;
+
+ if (st) {
+ st.position = s.position;
+ st.left = s.left;
+ st.top = s.top;
+ st.bottom = s.bottom;
+ st.right = s.right;
+ st.width = s.width;
+ st.height = s.height;
+ st.margin = s.margin;
+ st.padding = s.padding;
+ st.border = s.border;
+ }
+ });
+
+ ds.parents = [];
+
+ cd.body.style.overflow = ds.oldOverflow ? ds.oldOverflow : '';
+
+ if (re && tinyMCE.getParam("theme_advanced_resizing", false))
+ re.style.display = 'block';
+
+ tableElm.style.position = 'static';
+ tableElm.style.zIndex = '';
+ tableElm.style.width = '';
+ tableElm.style.height = '';
+
+ tableElm.style.width = ds.oldTWidth ? ds.oldTWidth : '';
+ tableElm.style.height = ds.oldTHeight ? ds.oldTHeight : '';
+
+ iframe.style.width = ds.oldWidth ? ds.oldWidth : '';
+ iframe.style.height = ds.oldHeight ? ds.oldHeight : '';
+
+ tinyMCE.selectElements(cd, 'SELECT,INPUT,BUTTON,TEXTAREA', function (n) {
+ tinyMCE.removeCSSClass(n, 'mceItemFullScreenHidden');
+
+ return false;
+ });
+
+ tinyMCE.switchClass(inst.editorId + '_fullscreen',
'mceButtonNormal');
+ ds.enabled = false;
+ }
+ }
+};
+
+tinyMCE.addPlugin("fullscreen", TinyMCE_FullScreenPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/images/fullscreen.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+fullscreen_desc : 'Toggle fullscreen mode'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/fullscreen/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,37 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('iespell', 'uk,se');
-
-/**
- * Returns the HTML contents of the iespell control.
- */
-function TinyMCE_iespell_getControlHTML(control_name) {
- // Is it the iespell control and is the brower MSIE.
- if (control_name == "iespell" && tinyMCE.isMSIE)
- return '<img id="{$editor_id}_iespell"
src="{$pluginurl}/images/iespell.gif" title="{$lang_iespell_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');">';
-
- return "";
-}
-
-/**
- * Executes the mceIESpell command.
- */
-function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface, value)
{
- // Handle ieSpellCommand
- if (command == "mceIESpell") {
- try {
- var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
- ieSpell.CheckDocumentNode(tinyMCE._getInstanceById(editor_id).contentDocument.documentElement);
- } catch (e) {
- if (e.number == -2146827859) {
- if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
-
window.open('http://www.iespell.com/download.php';,
'ieSpellDownload', '');
- } else
- alert("Error Loading ieSpell: Exception " + e.number);
- }
-
- return true;
- }
-
- // Pass to next handler in chain
- return false;
-}
\ No newline at end of file
+tinyMCE.importPluginLanguagePack('iespell');var
TinyMCE_IESpellPlugin={getInfo:function(){return{longname:'IESpell (MSIE
Only)',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_iespell_desc','{$pluginurl}/images/iespell.gif','mceIESpell');return""},execCommand:function(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var
ieSpell=new
ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocument...
alert("Error Loading ieSpell: Exception "+e.nu!
mber)}return true}return
false}};tinyMCE.addPlugin("iespell",TinyMCE_IESpellPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,58 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('iespell');
+
+var TinyMCE_IESpellPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'IESpell (MSIE Only)',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_iespell.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ /**
+ * Returns the HTML contents of the iespell control.
+ */
+ getControlHTML : function(cn) {
+ // Is it the iespell control and is the brower MSIE.
+ if (cn == "iespell" && (tinyMCE.isMSIE && !tinyMCE.isOpera))
+ return tinyMCE.getButtonHTML(cn, 'lang_iespell_desc',
'{$pluginurl}/images/iespell.gif', 'mceIESpell');
+
+ return "";
+ },
+
+ /**
+ * Executes the mceIESpell command.
+ */
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle ieSpellCommand
+ if (command == "mceIESpell") {
+ try {
+ var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
+ ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
+ } catch (e) {
+ if (e.number == -2146827859) {
+ if (confirm(tinyMCE.getLang("lang_iespell_download", "",
true)))
+
window.open('http://www.iespell.com/download.php';,
'ieSpellDownload', '');
+ } else
+ alert("Error Loading ieSpell: Exception " + e.number);
+ }
+
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ }
+};
+
+tinyMCE.addPlugin("iespell", TinyMCE_IESpellPlugin);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/images/iespell.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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."
+});
+
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/iespell/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,20 +1 @@
- ieSpell plugin for TinyMCE
-----------------------------
-
-Installation instructions:
- * Copy the iespell directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "iespell".
- * Add the iespell button name to button list, example: theme_advanced_buttons3_add :
"iespell".
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "iespell",
- theme_advanced_buttons3_add : "iespell"
- });
-
-Requirements:
- The end user will need MSIE on Windows with the ieSpell installed. This can be
downloaded
- from
http://www.iespell.com/download.php. Notice on other browsers than MSIE the
spellchecking
- button will not be visible.
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/css/inlinepopup.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+var TinyMCE_InlinePopupsPlugin={getInfo:function(){return{longname:'Inline
Popups',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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'])))w!
idth=320;if(!(height=parseInt(template['height'])))height=200;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');var
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)};TinyMCE_Engine.prototype.orgCloseWindow=TinyMCE_Engine.prototype.closeWindow;TinyMCE_Engine.prototype.closeWindow=function(win){if(mcWindows.selectedWindow!=null)mcWindows.selectedWindow.close();else
this.orgCloseWindow(win)};!
TinyMCE_Engine.prototype.setWindowTitle=function(win_ref,title){for(va
r 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=100;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);el!
se
this.addEvent(window,"mousemove",mcWindows.eventDispatcher);this.addEvent(document,"mouseup",mcWindows.eventDispatcher);this.doc=document};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}};TinyMCE_Windows.prototype.addE!
vent=function(obj,name,handler){if(this.isMSIE)obj.attachEvent("on"+na
me,handler);else
obj.addEventListener(name,handler,true)};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['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<optionChunks.length;i++){var
parts=optionChunks[i].split('=');if(parts.length==2)options[parts[0]]=parts[1]}options['left']=parseInt(options['left']);options['top']=parseInt(options['top']);options['width']=parseInt(options['width']);options['height']=parseIn!
t(options['height']);return
options};TinyMCE_Windows.prototype.open=function(url,name,features){this.lastSelectedWindow=this.selectedWindow;var
win=new TinyMCE_Window();var winDiv,html="",id;var
imgPath=this.getParam("images_path");features=this.parseFeatures(features);id="mcWindow_"+name;win.deltaHeight=18;if(features['statusbar']=="yes"){win.deltaHeight+=13;if(this.isMSIE)win.deltaHeight+=1}width=parseInt(features['width']);height=parseInt(features['height'])-win.deltaHeight;if(this.isMSIE)width-=2;win.id=id;win.url=url;win.name=name;win.features=features;this.windows[name]=win;iframeWidth=width;iframeHeight=height;html+='<!DOCTYPE
html PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">';html+='<html>';html+='<head>';html+='<title>Wrapper
iframe</title>';html+='<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">';html+='<link
href="'+this.getParam("css_file")+'"
rel="stylesheet" type="text/css"
/>';html+='</head>';html+='<body
onload="parent.mcWindows.onLoad(!
\''+name+'\');">';html+='<div
id="'+id+'_container" class="mceWindow">
';html+='<div id="'+id+'_head"
class="mceWindowHead"
onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();">';html+='
<div id="'+id+'_title"
class="mceWindowTitle"';html+=' onselectstart="return false;"
unselectable="on" style="-moz-user-select: none
!important;"></div>';html+=' <div
class="mceWindowHeadTools">';html+=' <a
href="javascript:parent.mcWindows.windows[\''+name+'\'].close();"
target="_self" onmousedown="return false;"
class="mceWindowClose"><img border="0"
src="'+imgPath+'/window_close.gif" /></a>';html+='
</div>';html+='</div><div id="'+id+'_body"
class="mceWindowBody" style="width: '+width+'px; height:
'+height+'px;">';html+='<iframe
id="'+id+'_iframe" name="'+id+'_iframe"
frameborder="0" width="'+iframeWidth+'"
height="'+iframeHeight+'" src="'+url+'"
class="mceWindowBodyIframe"
scrolling="'+features['scrollbars']+'"></iframe></div>';if(features['statusbar']=="yes"){html+='<div
id="'+id+'_statusbar" class="mceWindowStatusbar"
onmousedown="pa!
rent.mcWindows.windows[\''+name+'\'].focus();">';if(features['resizable']=="yes"){if(this.isGecko)html+='<div
id="'+id+'_resize" class="mceWindowResize"><div
style="background-image: url(\''+imgPath+'/window_resize.gif\');
width: 12px; height: 12px;"></div></div>';else html+='<div
id="'+id+'_resize" class="mceWindowResize"><img
onmousedown="parent.mcWindows.windows[\''+name+'\'].focus();"
border="0" src="'+imgPath+'/window_resize.gif"
/></div>'}html+='</div>'}html+='</div>';html+='</body>';html+='</html>';this.createFloatingIFrame(id,features['left'],features['top'],features['width'],features['height'],html)};TinyMCE_Windows.prototype.setDocumentLock=function(state){if(state){var
elm=document.getElementById('mcWindowEventBlocker');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 w!
idth=document.body.clientWidth;var height=document.body.clientHeight;e
lm.style.width=width;elm.style.height=height;elm.innerHTML='<img
src="'+imgPath+'/spacer.gif" width="'+width+'"
height="'+height+'"
/>';elm.style.zIndex=mcWindows.zindex-1;elm.style.display="block"}else{var
elm=document.getElementById('mcWindowEventBlocker');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.resizeElem!
ent=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<window.frames.length;i++){if(!window.frames[i]._hasMouseHandlers){if(mcWindows.isMSIE){mcWindows.addEvent(wi!
ndow.frames[i].document,"mousemove",mcWindows.eventDispatcher);mcWindo
ws.addEvent(window.frames[i].document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(window.frames[i],"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(window.frames[i],"mouseup",mcWindows.eventDispatcher)}window.frames[i]._hasMouseHandlers=true}}if(mcWindows.isMSIE){mcWindows.addEvent(win.frame.document,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame.document,"mouseup",mcWindows.eventDispatcher)}else{mcWindows.addEvent(win.frame,"mousemove",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"mouseup",mcWindows.eventDispatcher);mcWindows.addEvent(win.frame,"focus",mcWindows.eventDispatcher)}var
func=this.getParam("on_open_window","");if(func!="")eval(func+"(win);");win.focus();if(win.features['modal']=="yes")mcWindows.setDocumentLock(true)};TinyMCE_Windows.prototype.createFloatingIFrame=function(id_prefix,left,top,width,height,html){var
iframe=document.createElement("iframe");var
div=document.createElement("div"),doc;width=parse!
Int(width);height=parseInt(height)+1;div.setAttribute("id",id_prefix+"_div");div.setAttribute("width",width);div.setAttribute("height",(height));div.style.position="absolute";div.style.left=left+"px";div.style.top=top+"px";div.style.width=width+"px";div.style.height=(height)+"px";div.style.backgroundColor="white";div.style.display="none";if(this.isGecko){iframeWidth=width+2;iframeHeight=height+2}else{iframeWidth=width;iframeHeight=height+1}iframe.setAttribute("id",id_prefix+"_iframe");iframe.setAttribute("name",id_prefix+"_iframe");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",iframeWidth);iframe.setAttribute("height",iframeHeight);iframe.setAttribute("scrolling","no");iframe.style.width=iframeWidth+"px";iframe.style.height=iframeHeight+"px";iframe.style.backgroundColo!
r="white";div.appendChild(iframe);document.body.appendChild(div);div.i
nnerHTML=div.innerHTML;if(this.isSafari){window.setTimeout(function(){var
doc=window.frames[id_prefix+'_iframe'].document;doc.open();doc.write(html);doc.close()},10)}else{doc=window.frames[id_prefix+'_iframe'].window.document;doc.open();doc.write(html);doc.close()}div.style.display="block";return
div};function
TinyMCE_Window(){};TinyMCE_Window.prototype.focus=function(){if(this!=mcWindows.selectedWindow){this.winElement.style.zIndex=++mcWindows.zindex;mcWindows.lastSelectedWindow=mcWindows.selectedWindow;mcWindows.selectedWindow=this}};TinyMCE_Window.prototype.minimize=function(){};TinyMCE_Window.prototype.maximize=function(){};TinyMCE_Window.prototype.startResize=function(){mcWindows.action="resize"};TinyMCE_Window.prototype.startMove=function(e){mcWindows.action="move"};TinyMCE_Window.prototype.close=function(){if(this.frame&&this.frame['tinyMCEPopup'])this.frame['tinyMCEPopup'].restoreSelection();if(mcWindows.lastSelectedWindow!=null)mcWindows.lastSelectedWindow.focus();v!
ar mcWindowsNew=new Array();for(var n in mcWindows.windows){var
win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(win.name!=this.name)mcWindowsNew[n]=win}mcWindows.windows=mcWindowsNew;var
e=mcWindows.doc.getElementById(this.id+"_iframe");e.parentNode.removeChild(e);var
e=mcWindows.doc.getElementById(this.id+"_div");e.parentNode.removeChild(e);mcWindows.setDocumentLock(false)};TinyMCE_Window.prototype.onMouseMove=function(e){var
scrollX=0;var scrollY=0;var dx=e.screenX-mcWindows.mouseDownScreenX;var
dy=e.screenY-mcWindows.mouseDownScreenY;switch(mcWindows.action){case"resize":width=mcWindows.mouseDownWidth+(e.screenX-mcWindows.mouseDownScreenX);height=mcWindows.mouseDownHeight+(e.screenY-mcWindows.mouseDownScreenY);width=width<100?100:width;height=height<100?100:height;this.wrapperIFrameElement.style.width=width+2;this.wrapperIFrameElement.style.height=height+2;this.wrapperIFrameElement.width=width+2;this.wrapperIFrameElement.height=height+2;this.winElement.st!
yle.width=width;this.winElement.style.height=height;height=height-this
.deltaHeight;this.containerElement.style.width=width;this.iframeElement.style.width=width;this.iframeElement.style.height=height;this.bodyElement.style.width=width;this.bodyElement.style.height=height;this.headElement.style.width=width;mcWindows.cancelEvent(e);break;case"move":this.left=mcWindows.mouseDownLayerX+(e.screenX-mcWindows.mouseDownScreenX);this.top=mcWindows.mouseDownLayerY+(e.screenY-mcWindows.mouseDownScreenY);this.winElement.style.left=this.left+"px";this.winElement.style.top=this.top+"px";mcWindows.cancelEvent(e);break}};function
debug(msg){document.getElementById('debug').value+=msg+"\n"}TinyMCE_Window.prototype.onMouseUp=function(e){mcWindows.action="none"};TinyMCE_Window.prototype.onFocus=function(e){var
winRef=e.currentTarget;for(var n in mcWindows.windows){var
win=mcWindows.windows[n];if(typeof(win)=='function')continue;if(winRef.name==win.id+"_iframe"){win.focus();return}}};TinyMCE_Window.prototype.onMouseDown=function(e){var
elm=mcWindows.isMSIE?this.wr!
apperFrame.event.srcElement:e.target;var scrollX=0;var
scrollY=0;mcWindows.mouseDownScreenX=e.screenX;mcWindows.mouseDownScreenY=e.screenY;mcWindows.mouseDownLayerX=this.left;mcWindows.mouseDownLayerY=this.top;mcWindows.mouseDownWidth=parseInt(this.winElement.style.width);mcWindows.mouseDownHeight=parseInt(this.winElement.style.height);if(this.resizeElement!=null&&elm==this.resizeElement.firstChild)this.startResize(e);else
this.startMove(e);mcWindows.cancelEvent(e)};var mcWindows=new
TinyMCE_Windows();mcWindows.init({images_path:tinyMCE.baseURL+"/plugins/inlinepopups/images",css_file:tinyMCE.baseURL+"/plugins/inlinepopups/css/inlinepopup.css"});
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,660 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * Moxiecode DHTML Windows script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+// Patch openWindow, closeWindow TinyMCE functions
+
+var TinyMCE_InlinePopupsPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Inline Popups',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl :
'http://tinymce.moxiecode.com/tinymce/docs/plugin_inlinepopups.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ }
+};
+
+tinyMCE.addPlugin("inlinepopups", TinyMCE_InlinePopupsPlugin);
+
+// Patch openWindow, closeWindow TinyMCE functions
+
+TinyMCE_Engine.prototype.orgOpenWindow = TinyMCE_Engine.prototype.openWindow;
+
+TinyMCE_Engine.prototype.openWindow = function(template, args) {
+ // Does the caller support inline
+ 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;
+
+ resizable = (args && args['resizable']) ? args['resizable'] :
"no";
+ scrollbars = (args && args['scrollbars']) ? args['scrollbars'] :
"no";
+
+ height += 18;
+
+ // Replace all args as variables in URL
+ 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');
+ var pos = tinyMCE.getAbsPosition(elm);
+
+ // Center div in editor area
+ 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);
+};
+
+TinyMCE_Engine.prototype.orgCloseWindow = TinyMCE_Engine.prototype.closeWindow;
+
+TinyMCE_Engine.prototype.closeWindow = function(win) {
+ if (mcWindows.selectedWindow != null)
+ mcWindows.selectedWindow.close();
+ else
+ this.orgCloseWindow(win);
+};
+
+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;
+ }
+};
+
+// * * * * * TinyMCE_Windows classes below
+
+// Windows handler
+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 = 100;
+ 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.doc = document;
+};
+
+TinyMCE_Windows.prototype.getParam = function(name, default_value) {
+ var value = null;
+
+ value = (typeof(this.settings[name]) == "undefined") ? default_value :
this.settings[name];
+
+ // Fix bool values
+ 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;
+
+ // Switch focus
+ 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;
+ }
+};
+
+TinyMCE_Windows.prototype.addEvent = function(obj, name, handler) {
+ if (this.isMSIE)
+ obj.attachEvent("on" + name, handler);
+ else
+ obj.addEventListener(name, handler, true);
+};
+
+TinyMCE_Windows.prototype.cancelEvent = function(e) {
+ if (this.isMSIE) {
+ e.returnValue = false;
+ e.cancelBubble = true;
+ } else
+ e.preventDefault();
+};
+
+TinyMCE_Windows.prototype.parseFeatures = function(opts) {
+ // Cleanup the options
+ 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['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<optionChunks.length; i++) {
+ var parts = optionChunks[i].split('=');
+
+ if (parts.length == 2)
+ options[parts[0]] = parts[1];
+ }
+
+ options['left'] = parseInt(options['left']);
+ options['top'] = parseInt(options['top']);
+ options['width'] = parseInt(options['width']);
+ options['height'] = parseInt(options['height']);
+
+ return options;
+};
+
+TinyMCE_Windows.prototype.open = function(url, name, features) {
+ this.lastSelectedWindow = this.selectedWindow;
+
+ var win = new TinyMCE_Window();
+ var winDiv, html = "", id;
+ var imgPath = this.getParam("images_path");
+
+ features = this.parseFeatures(features);
+
+ // Create div
+ id = "mcWindow_" + name;
+ win.deltaHeight = 18;
+
+ if (features['statusbar'] == "yes") {
+ win.deltaHeight += 13;
+
+ if (this.isMSIE)
+ win.deltaHeight += 1;
+ }
+
+ width = parseInt(features['width']);
+ height = parseInt(features['height'])-win.deltaHeight;
+
+ if (this.isMSIE)
+ width -= 2;
+
+ // Setup first part of window
+ win.id = id;
+ win.url = url;
+ win.name = name;
+ win.features = features;
+ this.windows[name] = win;
+
+ iframeWidth = width;
+ iframeHeight = height;
+
+ // Create inner content
+ html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">';
+ html += '<html>';
+ html += '<head>';
+ html += '<title>Wrapper iframe</title>';
+ html += '<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">';
+ html += '<link href="' + this.getParam("css_file") +
'" rel="stylesheet" type="text/css" />';
+ html += '</head>';
+ html += '<body onload="parent.mcWindows.onLoad(\'' + name +
'\');">';
+
+ html += '<div id="' + id + '_container"
class="mceWindow">';
+ html += '<div id="' + id + '_head"
class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' +
name + '\'].focus();">';
+ html += ' <div id="' + id + '_title"
class="mceWindowTitle"';
+ html += ' onselectstart="return false;" unselectable="on"
style="-moz-user-select: none !important;"></div>';
+ html += ' <div class="mceWindowHeadTools">';
+ html += ' <a href="javascript:parent.mcWindows.windows[\'' +
name + '\'].close();" target="_self" onmousedown="return
false;" class="mceWindowClose"><img border="0"
src="' + imgPath + '/window_close.gif" /></a>';
+// html += ' <a href="javascript:mcWindows.windows[\'' + name +
'\'].maximize();" target="_self" onmousedown="return
false;" class="mceWindowMaximize"></a>';
+// html += ' <a href="javascript:mcWindows.windows[\'' + name +
'\'].minimize();" target="_self" onmousedown="return
false;" class="mceWindowMinimize"></a>';
+ html += ' </div>';
+ html += '</div><div id="' + id + '_body"
class="mceWindowBody" style="width: ' + width + 'px; height: '
+ height + 'px;">';
+ html += '<iframe id="' + id + '_iframe" name="' + id +
'_iframe" frameborder="0" width="' + iframeWidth + '"
height="' + iframeHeight + '" src="' + url + '"
class="mceWindowBodyIframe" scrolling="' +
features['scrollbars'] + '"></iframe></div>';
+
+ if (features['statusbar'] == "yes") {
+ html += '<div id="' + id + '_statusbar"
class="mceWindowStatusbar"
onmousedown="parent.mcWindows.windows[\'' + name +
'\'].focus();">';
+
+ if (features['resizable'] == "yes") {
+ if (this.isGecko)
+ html += '<div id="' + id + '_resize"
class="mceWindowResize"><div style="background-image: url(\''
+ imgPath + '/window_resize.gif\'); width: 12px; height:
12px;"></div></div>';
+ else
+ html += '<div id="' + id + '_resize"
class="mceWindowResize"><img
onmousedown="parent.mcWindows.windows[\'' + name +
'\'].focus();" border="0" src="' + imgPath +
'/window_resize.gif" /></div>';
+ }
+
+ html += '</div>';
+ }
+
+ html += '</div>';
+
+ html += '</body>';
+ 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) {
+ if (state) {
+ var elm = document.getElementById('mcWindowEventBlocker');
+ 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 = '<img src="' + imgPath + '/spacer.gif"
width="' + width + '" height="' + height + '"
/>';
+
+ elm.style.zIndex = mcWindows.zindex-1;
+ elm.style.display = "block";
+ } else {
+ var elm = document.getElementById('mcWindowEventBlocker');
+
+ 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; i<window.frames.length; i++) {
+ if (!window.frames[i]._hasMouseHandlers) {
+ if (mcWindows.isMSIE) {
+ mcWindows.addEvent(window.frames[i].document, "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(window.frames[i].document, "mouseup",
mcWindows.eventDispatcher);
+ } else {
+ mcWindows.addEvent(window.frames[i], "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(window.frames[i], "mouseup",
mcWindows.eventDispatcher);
+ }
+
+ window.frames[i]._hasMouseHandlers = true;
+ }
+ }
+
+ if (mcWindows.isMSIE) {
+ mcWindows.addEvent(win.frame.document, "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame.document, "mouseup",
mcWindows.eventDispatcher);
+ } else {
+ mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
+ }
+
+ // Dispatch open window event
+ var func = this.getParam("on_open_window", "");
+ if (func != "")
+ eval(func + "(win);");
+
+ win.focus();
+
+ if (win.features['modal'] == "yes")
+ mcWindows.setDocumentLock(true);
+};
+
+TinyMCE_Windows.prototype.createFloatingIFrame = function(id_prefix, left, top, width,
height, html) {
+ var iframe = document.createElement("iframe");
+ var div = document.createElement("div"), doc;
+
+ width = parseInt(width);
+ height = parseInt(height)+1;
+
+ // Create wrapper div
+ div.setAttribute("id", id_prefix + "_div");
+ div.setAttribute("width", width);
+ div.setAttribute("height", (height));
+ div.style.position = "absolute";
+ div.style.left = left + "px";
+ div.style.top = top + "px";
+ div.style.width = width + "px";
+ div.style.height = (height) + "px";
+ div.style.backgroundColor = "white";
+ div.style.display = "none";
+
+ if (this.isGecko) {
+ iframeWidth = width + 2;
+ iframeHeight = height + 2;
+ } else {
+ iframeWidth = width;
+ iframeHeight = height + 1;
+ }
+
+ // Create iframe
+ iframe.setAttribute("id", id_prefix + "_iframe");
+ iframe.setAttribute("name", id_prefix + "_iframe");
+ 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", iframeWidth);
+ iframe.setAttribute("height", iframeHeight);
+// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
+ // iframe.setAttribute("allowtransparency", "false");
+ iframe.setAttribute("scrolling", "no");
+ iframe.style.width = iframeWidth + "px";
+ iframe.style.height = iframeHeight + "px";
+ iframe.style.backgroundColor = "white";
+ div.appendChild(iframe);
+
+ document.body.appendChild(div);
+
+ // Fixed MSIE 5.0 issue
+ div.innerHTML = div.innerHTML;
+
+ if (this.isSafari) {
+ // Give Safari some time to setup
+ window.setTimeout(function() {
+ var doc = window.frames[id_prefix + '_iframe'].document;
+ doc.open();
+ doc.write(html);
+ doc.close();
+ }, 10);
+ } else {
+ doc = window.frames[id_prefix + '_iframe'].window.document;
+ doc.open();
+ doc.write(html);
+ doc.close();
+ }
+
+ div.style.display = "block";
+
+ return div;
+};
+
+// Window instance
+function TinyMCE_Window() {
+};
+
+TinyMCE_Window.prototype.focus = function() {
+ if (this != mcWindows.selectedWindow) {
+ this.winElement.style.zIndex = ++mcWindows.zindex;
+ mcWindows.lastSelectedWindow = mcWindows.selectedWindow;
+ mcWindows.selectedWindow = this;
+ }
+};
+
+TinyMCE_Window.prototype.minimize = function() {
+};
+
+TinyMCE_Window.prototype.maximize = function() {
+
+};
+
+TinyMCE_Window.prototype.startResize = function() {
+ mcWindows.action = "resize";
+};
+
+TinyMCE_Window.prototype.startMove = function(e) {
+ mcWindows.action = "move";
+};
+
+TinyMCE_Window.prototype.close = function() {
+ if (this.frame && this.frame['tinyMCEPopup'])
+ this.frame['tinyMCEPopup'].restoreSelection();
+
+ if (mcWindows.lastSelectedWindow != null)
+ mcWindows.lastSelectedWindow.focus();
+
+ var mcWindowsNew = new Array();
+ for (var n in mcWindows.windows) {
+ var win = mcWindows.windows[n];
+ if (typeof(win) == 'function')
+ continue;
+
+ if (win.name != this.name)
+ mcWindowsNew[n] = win;
+ }
+
+ mcWindows.windows = mcWindowsNew;
+
+// alert(mcWindows.doc.getElementById(this.id + "_iframe"));
+
+ var e = mcWindows.doc.getElementById(this.id + "_iframe");
+ e.parentNode.removeChild(e);
+
+ var e = mcWindows.doc.getElementById(this.id + "_div");
+ e.parentNode.removeChild(e);
+
+ mcWindows.setDocumentLock(false);
+};
+
+TinyMCE_Window.prototype.onMouseMove = function(e) {
+ var scrollX = 0;//this.doc.body.scrollLeft;
+ var scrollY = 0;//this.doc.body.scrollTop;
+
+ // Calculate real X, Y
+ var dx = e.screenX - mcWindows.mouseDownScreenX;
+ var dy = e.screenY - mcWindows.mouseDownScreenY;
+
+ switch (mcWindows.action) {
+ case "resize":
+ width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
+ height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
+
+ width = width < 100 ? 100 : width;
+ height = height < 100 ? 100 : height;
+
+ this.wrapperIFrameElement.style.width = width+2;
+ this.wrapperIFrameElement.style.height = height+2;
+ this.wrapperIFrameElement.width = width+2;
+ this.wrapperIFrameElement.height = height+2;
+ this.winElement.style.width = width;
+ this.winElement.style.height = height;
+
+ height = height - this.deltaHeight;
+
+ this.containerElement.style.width = width;
+
+ this.iframeElement.style.width = width;
+ this.iframeElement.style.height = height;
+ this.bodyElement.style.width = width;
+ this.bodyElement.style.height = height;
+ this.headElement.style.width = width;
+ //this.statusElement.style.width = width;
+
+ mcWindows.cancelEvent(e);
+ break;
+
+ case "move":
+ this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
+ this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
+ this.winElement.style.left = this.left + "px";
+ this.winElement.style.top = this.top + "px";
+
+ mcWindows.cancelEvent(e);
+ break;
+ }
+};
+
+function debug(msg) {
+ document.getElementById('debug').value += msg + "\n";
+}
+
+TinyMCE_Window.prototype.onMouseUp = function(e) {
+ mcWindows.action = "none";
+};
+
+TinyMCE_Window.prototype.onFocus = function(e) {
+ // Gecko only handler
+ var winRef = e.currentTarget;
+
+ for (var n in mcWindows.windows) {
+ var win = mcWindows.windows[n];
+ if (typeof(win) == 'function')
+ continue;
+
+ if (winRef.name == win.id + "_iframe") {
+ win.focus();
+ return;
+ }
+ }
+};
+
+TinyMCE_Window.prototype.onMouseDown = function(e) {
+ var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
+
+ var scrollX = 0;//this.doc.body.scrollLeft;
+ var scrollY = 0;//this.doc.body.scrollTop;
+
+ mcWindows.mouseDownScreenX = e.screenX;
+ mcWindows.mouseDownScreenY = e.screenY;
+ mcWindows.mouseDownLayerX = this.left;
+ mcWindows.mouseDownLayerY = this.top;
+ mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
+ mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
+
+ if (this.resizeElement != null && elm == this.resizeElement.firstChild)
+ this.startResize(e);
+ else
+ this.startMove(e);
+
+ mcWindows.cancelEvent(e);
+};
+
+// Global instance
+var mcWindows = new TinyMCE_Windows();
+
+// Initialize windows
+mcWindows.init({
+ images_path : tinyMCE.baseURL + "/plugins/inlinepopups/images",
+ css_file : tinyMCE.baseURL + "/plugins/inlinepopups/css/inlinepopup.css"
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/spacer.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_maximize.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_minimize.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/images/window_resize.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/jscripts/mcwindows.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,453 @@
+/**
+ * $Id: mcwindows.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode DHTML Windows script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004, Moxiecode Systems AB, All rights reserved.
+ */
+
+// Windows handler
+function MCWindows() {
+ 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.zindex = 100;
+ this.mouseDownScreenX = 0;
+ this.mouseDownScreenY = 0;
+ this.mouseDownLayerX = 0;
+ this.mouseDownLayerY = 0;
+ this.mouseDownWidth = 0;
+ this.mouseDownHeight = 0;
+};
+
+MCWindows.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);
+};
+
+MCWindows.prototype.getParam = function(name, default_value) {
+ var value = null;
+
+ value = (typeof(this.settings[name]) == "undefined") ? default_value :
this.settings[name];
+
+ // Fix bool values
+ if (value == "true" || value == "false")
+ return (value == "true");
+
+ return value;
+};
+
+MCWindows.prototype.eventDispatcher = function(e) {
+ e = typeof(e) == "undefined" ? window.event : e;
+
+ if (mcWindows.selectedWindow == null)
+ return;
+
+ // Switch focus
+ if (mcWindows.isGecko && e.type == "mousedown") {
+ var elm = e.currentTarget;
+
+ for (var n in mcWindows.windows) {
+ var win = mcWindows.windows[n];
+ if (typeof(win) == 'function')
+ continue;
+
+ 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;
+ }
+}
+
+MCWindows.prototype.addEvent = function(obj, name, handler) {
+ if (this.isMSIE)
+ obj.attachEvent("on" + name, handler);
+ else
+ obj.addEventListener(name, handler, true);
+};
+
+MCWindows.prototype.cancelEvent = function(e) {
+ if (this.isMSIE) {
+ e.returnValue = false;
+ e.cancelBubble = true;
+ } else
+ e.preventDefault();
+};
+
+MCWindows.prototype.parseFeatures = function(opts) {
+ // Cleanup the options
+ 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['resizable'] = true;
+ options['minimizable'] = true;
+ options['maximizable'] = true;
+ options['close'] = true;
+ options['movable'] = true;
+
+ if (opts == "")
+ return options;
+
+ for (var i=0; i<optionChunks.length; i++) {
+ var parts = optionChunks[i].split('=');
+
+ if (parts.length == 2)
+ options[parts[0]] = parts[1];
+ }
+
+ return options;
+};
+
+MCWindows.prototype.open = function(url, name, features) {
+ var win = new MCWindow();
+ var winDiv, html = "", id;
+
+ features = this.parseFeatures(features);
+
+ // Create div
+ id = "mcWindow_" + name;
+
+ width = parseInt(features['width']);
+ height = parseInt(features['height'])-12-19;
+
+ if (this.isMSIE)
+ width -= 2;
+
+ // Setup first part of window
+ win.id = id;
+ win.url = url;
+ win.name = name;
+ win.features = features;
+ this.windows[name] = win;
+
+ iframeWidth = width;
+ iframeHeight = height;
+
+ // Create inner content
+ html += '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">';
+ html += '<html>';
+ html += '<head>';
+ html += '<title>Wrapper iframe</title>';
+ html += '<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">';
+ html += '<link
href="../jscripts/tiny_mce/themes/advanced/css/editor_ui.css"
rel="stylesheet" type="text/css" />';
+ html += '</head>';
+ html += '<body onload="parent.mcWindows.onLoad(\'' + name +
'\');">';
+
+ html += '<div id="' + id + '_container"
class="mceWindow">';
+ html += '<div id="' + id + '_head"
class="mceWindowHead" onmousedown="parent.mcWindows.windows[\'' +
name + '\'].focus();">';
+ html += ' <div id="' + id + '_title"
class="mceWindowTitle"';
+ html += ' onselectstart="return false;" unselectable="on"
style="-moz-user-select: none !important;">No name window</div>';
+ html += ' <div class="mceWindowHeadTools">';
+ html += ' <a href="javascript:parent.mcWindows.windows[\'' +
name + '\'].close();" onmousedown="return false;"
class="mceWindowClose"><img border="0"
src="../jscripts/tiny_mce/themes/advanced/images/window_close.gif"
/></a>';
+// html += ' <a href="javascript:mcWindows.windows[\'' + name +
'\'].maximize();" onmousedown="return false;"
class="mceWindowMaximize"></a>';
+// html += ' <a href="javascript:mcWindows.windows[\'' + name +
'\'].minimize();" onmousedown="return false;"
class="mceWindowMinimize"></a>';
+ html += ' </div>';
+ html += '</div><div id="' + id + '_body"
class="mceWindowBody" style="width: ' + width + 'px; height: '
+ height + 'px;">';
+ html += '<iframe id="' + id + '_iframe" name="' + id +
'_iframe" onfocus="parent.mcWindows.windows[\'' + name +
'\'].focus();" frameborder="0" width="' + iframeWidth +
'" height="' + iframeHeight + '" src="' + url +
'" class="mceWindowBodyIframe"></iframe></div>';
+ html += '<div id="' + id + '_statusbar"
class="mceWindowStatusbar"
onmousedown="parent.mcWindows.windows[\'' + name +
'\'].focus();">';
+ html += '<div id="' + id + '_resize"
class="mceWindowResize"><img
onmousedown="parent.mcWindows.windows[\'' + name +
'\'].focus();" border="0"
src="../jscripts/tiny_mce/themes/advanced/images/window_resize.gif"
/></div>';
+ html += '</div>';
+ html += '</div>';
+
+ html += '</body>';
+ 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; i<window.frames.length; i++) {
+ if (!window.frames[i]._hasMouseHandlers) {
+ if (mcWindows.isMSIE) {
+ mcWindows.addEvent(window.frames[i].document, "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(window.frames[i].document, "mouseup",
mcWindows.eventDispatcher);
+ } else {
+ mcWindows.addEvent(window.frames[i], "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(window.frames[i], "mouseup",
mcWindows.eventDispatcher);
+ }
+
+ window.frames[i]._hasMouseHandlers = true;
+ }
+ }
+
+ if (mcWindows.isMSIE) {
+ mcWindows.addEvent(win.frame.document, "mousemove",
mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame.document, "mouseup",
mcWindows.eventDispatcher);
+ } else {
+ mcWindows.addEvent(win.frame, "mousemove", mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame, "mouseup", mcWindows.eventDispatcher);
+ mcWindows.addEvent(win.frame, "focus", mcWindows.eventDispatcher);
+ }
+
+ this.selectedWindow = win;
+};
+
+MCWindows.prototype.createFloatingIFrame = function(id_prefix, left, top, width, height,
html) {
+ var iframe = document.createElement("iframe");
+ var div = document.createElement("div");
+
+ width = parseInt(width);
+ height = parseInt(height)+1;
+
+ // Create wrapper div
+ div.setAttribute("id", id_prefix + "_div");
+ div.setAttribute("width", width);
+ div.setAttribute("height", (height));
+ div.style.position = "absolute";
+ div.style.left = left + "px";
+ div.style.top = top + "px";
+ div.style.width = width + "px";
+ div.style.height = (height) + "px";
+ div.style.backgroundColor = "white";
+ div.style.display = "none";
+
+ if (this.isGecko) {
+ iframeWidth = width + 2;
+ iframeHeight = height + 2;
+ } else {
+ iframeWidth = width;
+ iframeHeight = height + 1;
+ }
+
+ // Create iframe
+ iframe.setAttribute("id", id_prefix + "_iframe");
+ iframe.setAttribute("name", id_prefix + "_iframe");
+ 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", iframeWidth);
+ iframe.setAttribute("height", iframeHeight);
+// iframe.setAttribute("src", "../jscripts/tiny_mce/blank.htm");
+ // iframe.setAttribute("allowtransparency", "false");
+ iframe.setAttribute("scrolling", "no");
+ iframe.style.width = iframeWidth + "px";
+ iframe.style.height = iframeHeight + "px";
+ iframe.style.backgroundColor = "white";
+ div.appendChild(iframe);
+
+ document.body.appendChild(div);
+
+ // Fixed MSIE 5.0 issue
+ div.innerHTML = div.innerHTML;
+
+ if (this.isSafari) {
+ // Give Safari some time to setup
+ window.setTimeout(function() {
+ doc = window.frames[id_prefix + '_iframe'].document;
+ doc.open();
+ doc.write(html);
+ doc.close();
+ }, 10);
+ } else {
+ doc = window.frames[id_prefix + '_iframe'].window.document
+ doc.open();
+ doc.write(html);
+ doc.close();
+ }
+
+ div.style.display = "block";
+
+ return div;
+};
+
+// Window instance
+function MCWindow() {
+};
+
+MCWindow.prototype.focus = function() {
+ this.winElement.style.zIndex = mcWindows.zindex++;
+ mcWindows.selectedWindow = this;
+};
+
+MCWindow.prototype.minimize = function() {
+};
+
+MCWindow.prototype.maximize = function() {
+
+};
+
+MCWindow.prototype.startResize = function() {
+ mcWindows.action = "resize";
+};
+
+MCWindow.prototype.startMove = function(e) {
+ mcWindows.action = "move";
+};
+
+MCWindow.prototype.close = function() {
+ document.body.removeChild(this.winElement);
+ mcWindows.windows[this.name] = null;
+};
+
+MCWindow.prototype.onMouseMove = function(e) {
+ var scrollX = 0;//this.doc.body.scrollLeft;
+ var scrollY = 0;//this.doc.body.scrollTop;
+
+ // Calculate real X, Y
+ var dx = e.screenX - mcWindows.mouseDownScreenX;
+ var dy = e.screenY - mcWindows.mouseDownScreenY;
+
+ switch (mcWindows.action) {
+ case "resize":
+ width = mcWindows.mouseDownWidth + (e.screenX - mcWindows.mouseDownScreenX);
+ height = mcWindows.mouseDownHeight + (e.screenY - mcWindows.mouseDownScreenY);
+
+ width = width < 100 ? 100 : width;
+ height = height < 100 ? 100 : height;
+
+ this.wrapperIFrameElement.style.width = width+2;
+ this.wrapperIFrameElement.style.height = height+2;
+ this.wrapperIFrameElement.width = width+2;
+ this.wrapperIFrameElement.height = height+2;
+ this.winElement.style.width = width;
+ this.winElement.style.height = height;
+
+ height = height-12-19;
+
+ this.containerElement.style.width = width;
+
+ this.iframeElement.style.width = width;
+ this.iframeElement.style.height = height;
+ this.bodyElement.style.width = width;
+ this.bodyElement.style.height = height;
+ this.headElement.style.width = width;
+ //this.statusElement.style.width = width;
+
+ mcWindows.cancelEvent(e);
+ break;
+
+ case "move":
+ this.left = mcWindows.mouseDownLayerX + (e.screenX - mcWindows.mouseDownScreenX);
+ this.top = mcWindows.mouseDownLayerY + (e.screenY - mcWindows.mouseDownScreenY);
+ this.winElement.style.left = this.left + "px";
+ this.winElement.style.top = this.top + "px";
+
+ mcWindows.cancelEvent(e);
+ break;
+ }
+};
+
+MCWindow.prototype.onMouseUp = function(e) {
+ mcWindows.action = "none";
+};
+
+MCWindow.prototype.onFocus = function(e) {
+ // Gecko only handler
+ var winRef = e.currentTarget;
+
+ for (var n in mcWindows.windows) {
+ var win = mcWindows.windows[n];
+ if (typeof(win) == 'function')
+ continue;
+
+ if (winRef.name == win.id) {
+ win.focus();
+ return;
+ }
+ }
+};
+
+MCWindow.prototype.onMouseDown = function(e) {
+ var elm = mcWindows.isMSIE ? this.wrapperFrame.event.srcElement : e.target;
+
+ var scrollX = 0;//this.doc.body.scrollLeft;
+ var scrollY = 0;//this.doc.body.scrollTop;
+
+ mcWindows.mouseDownScreenX = e.screenX;
+ mcWindows.mouseDownScreenY = e.screenY;
+ mcWindows.mouseDownLayerX = this.left;
+ mcWindows.mouseDownLayerY = this.top;
+ mcWindows.mouseDownWidth = parseInt(this.winElement.style.width);
+ mcWindows.mouseDownHeight = parseInt(this.winElement.style.height);
+
+ if (elm == this.resizeElement.firstChild)
+ this.startResize(e);
+ else
+ this.startMove(e);
+
+ mcWindows.cancelEvent(e);
+};
+
+// Global instance
+var mcWindows = new MCWindows();
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/inlinepopups/readme.txt
===================================================================
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,63 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('insertdatetime', 'uk,se');
-
-/**
- * Returns the HTML contents of the insertdate, inserttime controls.
- */
-function TinyMCE_insertdatetime_getControlHTML(control_name) {
- switch (control_name) {
- case "insertdate":
- return '<img id="{$editor_id}_insertdate"
src="{$pluginurl}/images/insertdate.gif"
title="{$lang_insertdate_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertDate\');">';
-
- case "inserttime":
- return '<img id="{$editor_id}_inserttime"
src="{$pluginurl}/images/inserttime.gif"
title="{$lang_inserttime_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');">';
- }
-
- return "";
-}
-
-/**
- * Executes the mceInsertDate command.
- */
-function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_interface,
value) {
- /* Adds zeros infront of value */
- function addZeros(value, len) {
- value = "" + value;
-
- if (value.length < len) {
- for (var i=0; i<(len-value.length); i++)
- value = "0" + value;
- }
-
- return value;
- }
-
- /* Returns the date object in the specified format */
- function getDateTime(date, format) {
- format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y");
- format = tinyMCE.regexpReplace(format, "%Y", "" +
date.getFullYear());
- format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear());
- format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1,
2));
- format = tinyMCE.regexpReplace(format, "%d", addZeros(date.getDate(), 2));
- format = tinyMCE.regexpReplace(format, "%H", "" +
addZeros(date.getHours(), 2));
- format = tinyMCE.regexpReplace(format, "%M", "" +
addZeros(date.getMinutes(), 2));
- format = tinyMCE.regexpReplace(format, "%S", "" +
addZeros(date.getSeconds(), 2));
- format = tinyMCE.regexpReplace(format, "%%", "%");
-
- return format;
- }
-
- // Handle commands
- switch (command) {
- case "mceInsertDate":
- tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,
getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat",
"%Y-%m-%d")));
- return true;
-
- case "mceInsertTime":
- tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,
getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat",
"%H:%M:%S")));
- return true;
- }
-
- // Pass to next handler in chain
- return false;
-}
+tinyMCE.importPluginLanguagePack('insertdatetime');var
TinyMCE_InsertDateTimePlugin={getInfo:function(){return{longname:'Insert
date/time',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_insertdate_desc','{$pluginurl}/images/insertdate.gif','mceInsertDate');case"inserttime":return
tinyMCE.getButtonHTML(cn,'lang_inserttime_desc','{$pluginurl}/images/inserttime.gif','mceInsertTime')}return""},execCommand:function(editor_id,element,command,user_interface,value){function
addZeros(value,len){value=""+value;if(value.length<len){for(var
i=0;i<(len-value.length);i++)value="0"+value}return value}function
getDateTime(d,fmt){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_inserttime_months_long")[d.getMonth()]);fmt=fmt.replace("%b",""+tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);fmt=fmt.replace("%A",""+tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);fmt=fmt.replace("%a",""+tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);fmt=fmt.replace("%%","%");return
fmt}switch(command){case"mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new
Date(),tinyMCE.getParam("plugin_insertdate_dateFormat",tinyMCE.getLang('lang_insertdate_def_fmt'))));return
true;ca!
se"mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertCont
ent',false,getDateTime(new
Date(),tinyMCE.getParam("plugin_insertdate_timeFormat",tinyMCE.getLang('lang_inserttime_def_fmt'))));return
true}return
false}};tinyMCE.addPlugin("insertdatetime",TinyMCE_InsertDateTimePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,90 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('insertdatetime');
+
+var TinyMCE_InsertDateTimePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Insert date/time',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl :
'http://tinymce.moxiecode.com/tinymce/docs/plugin_insertdatetime.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ /**
+ * Returns the HTML contents of the insertdate, inserttime controls.
+ */
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "insertdate":
+ return tinyMCE.getButtonHTML(cn, 'lang_insertdate_desc',
'{$pluginurl}/images/insertdate.gif', 'mceInsertDate');
+
+ case "inserttime":
+ return tinyMCE.getButtonHTML(cn, 'lang_inserttime_desc',
'{$pluginurl}/images/inserttime.gif', 'mceInsertTime');
+ }
+
+ return "";
+ },
+
+ /**
+ * Executes the mceInsertDate command.
+ */
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ /* Adds zeros infront of value */
+ function addZeros(value, len) {
+ value = "" + value;
+
+ if (value.length < len) {
+ for (var i=0; i<(len-value.length); i++)
+ value = "0" + value;
+ }
+
+ return value;
+ }
+
+ function getDateTime(d, fmt) {
+ 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_inserttime_months_long")[d.getMonth()]);
+ fmt = fmt.replace("%b", "" +
tinyMCE.getLang("lang_inserttime_months_short")[d.getMonth()]);
+ fmt = fmt.replace("%A", "" +
tinyMCE.getLang("lang_inserttime_day_long")[d.getDay()]);
+ fmt = fmt.replace("%a", "" +
tinyMCE.getLang("lang_inserttime_day_short")[d.getDay()]);
+ fmt = fmt.replace("%%", "%");
+
+ return fmt;
+ }
+
+ // Handle commands
+ switch (command) {
+ case "mceInsertDate":
+ tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,
getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat",
tinyMCE.getLang('lang_insertdate_def_fmt'))));
+ return true;
+
+ case "mceInsertTime":
+ tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,
getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat",
tinyMCE.getLang('lang_inserttime_def_fmt'))));
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ }
+};
+
+tinyMCE.addPlugin("insertdatetime", TinyMCE_InsertDateTimePlugin);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/insertdate.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/images/inserttime.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,12 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+insertdate_def_fmt : '%Y-%m-%d',
+inserttime_def_fmt : '%H:%M:%S',
+insertdate_desc : 'Insert date',
+inserttime_desc : 'Insert time',
+inserttime_months_long : new Array("January", "February",
"March", "April", "May", "June", "July",
"August", "September", "October", "November",
"December"),
+inserttime_months_short : new Array("Jan", "Feb", "Mar",
"Apr", "May", "Jun", "Jul", "Aug",
"Sep", "Oct", "Nov", "Dec"),
+inserttime_day_long : new Array("Sunday", "Monday",
"Tuesday", "Wednesday", "Thursday", "Friday",
"Saturday", "Sunday"),
+inserttime_day_short : new Array("Sun", "Mon", "Tue",
"Wed", "Thu", "Fri", "Sat", "Sun")
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/insertdatetime/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,32 +1 @@
- InsertDateTime plugin for TinyMCE
------------------------------------
-
-Installation instructions:
- * Copy the insertdatetime directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins :
"insertdatetime".
- * Add the insertdate or inserttime button name to button list, example:
theme_advanced_buttons3_add : "insertdate,inserttime".
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "insertdatetime",
- theme_advanced_buttons3_add : "insertdate,inserttime",
- plugin_insertdate_dateFormat : "%Y-%m-%d",
- plugin_insertdate_timeFormat : "%H:%M:%S"
- });
-
-Configuration:
- plugin_insertdate_dateFormat - Format that the date is output as. Defaults to:
"%Y-%m-%d".
- Replacement variables:
- %y - year as a decimal number without a century (range 00 to 99)
- %Y - year as a decimal number including the century
- %d - day of the month as a decimal number (range 01 to 31)
- %m - month as a decimal number (range 01 to 12)
- %D - same as %m/%d/%y
- %H - hour as a decimal number using a 24-hour clock (range 00 to 23)
- %M - minute as a decimal number (range 00-59)
- %S - second as a decimal number (range 00-59)
- %% - a literal `%' character
-
- plugin_insertdate_timeFormat - Format that the time is output as. Defaults to:
"%H:%M:%S".
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('layer');var
TinyMCE_LayerPlugin={getInfo:function(){return{longname:'Layer',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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<nl.length;i++){if(new
RegExp('absolute|relative|static','gi!
').test(nl[i].style.position)){if(state)tinyMCE.addCSSClass(nl[i],'mceVisualAid');else
tinyMCE.removeCSSClass(nl[i],'mceVisualAid')}}},getControlHTML:function(cn){switch(cn){case"moveforward":return
tinyMCE.getButtonHTML(cn,'lang_layer_forward_desc','{$pluginurl}/images/moveforward.gif','mceMoveForward',true);case"movebackward":return
tinyMCE.getButtonHTML(cn,'lang_layer_backward_desc','{$pluginurl}/images/movebackward.gif','mceMoveBackward',true);case"absolute":return
tinyMCE.getButtonHTML(cn,'lang_layer_absolute_desc','{$pluginurl}/images/absolute.gif','mceMakeAbsolute',true);case"insertlayer":return
tinyMCE.getButtonHTML(cn,'lang_layer_insertlayer_desc','{$pluginurl}/images/insertlayer.gif','mceInsertLayer',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceInsertLayer":this._insertLayer();return
true;case"mceMoveForward":this._move(1);return
true;case"mceMoveBackward":this._move(-1);return true;case"mceMakeAbsolu!
te":this._toggleAbsolute();return true}return false},handleNodeChange:
function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){var
inst=tinyMCE.getInstanceById(editor_id);var
le=this._getParentLayer(inst.getFocusElement());var
p=tinyMCE.getParentElement(inst.getFocusElement(),'div,p,img');tinyMCE.switchClass(editor_id+'_absolute','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonDisabled');if(p)tinyMCE.switchClass(editor_id+'_absolute','mceButtonNormal');if(le&&le.style.position.toLowerCase()=="absolute"){tinyMCE.switchClass(editor_id+'_absolute','mceButtonSelected');tinyMCE.switchClass(editor_id+'_moveforward','mceButtonNormal');tinyMCE.switchClass(editor_id+'_movebackward','mceButtonNormal')}},_move:function(d){var
inst=tinyMCE.selectedInstance,i,z=new Array();var
le=this._getParentLayer(inst.getFocusElement()),ci=-1,fi=-1;var
nl=tinyMCE.selectNodes(inst.getBody(),function(n){return n.nodeType==1&&new
RegExp('absolute|relative|static'!
,'gi').test(n.style.position)});for(i=0;i<nl.length;i++){z[i]=nl[i].style.zIndex?parseInt(nl[i].style.zIndex):0;if(ci<0&&nl[i]==le)ci=i}if(d<0){for(i=0;i<z.length;i++){if(z[i]<z[ci]){fi=i;break}}if(fi>-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;i<z.length;i++){if(z[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();ne.style.position='absolute';ne.style.left=p.absLeft+'px';ne.style.top=(p.absTop>20?p.absTop:20)+'px';ne.style.width='100p!
x';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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,248 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_layer.html',
+ 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<nl.length; i++) {
+ if (new RegExp('absolute|relative|static',
'gi').test(nl[i].style.position)) {
+ if (state)
+ tinyMCE.addCSSClass(nl[i], 'mceVisualAid');
+ else
+ tinyMCE.removeCSSClass(nl[i], 'mceVisualAid');
+ }
+ }
+ },
+
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "moveforward":
+ return tinyMCE.getButtonHTML(cn, 'lang_layer_forward_desc',
'{$pluginurl}/images/moveforward.gif', 'mceMoveForward', true);
+
+ case "movebackward":
+ return tinyMCE.getButtonHTML(cn, 'lang_layer_backward_desc',
'{$pluginurl}/images/movebackward.gif', 'mceMoveBackward', true);
+
+ case "absolute":
+ return tinyMCE.getButtonHTML(cn, 'lang_layer_absolute_desc',
'{$pluginurl}/images/absolute.gif', 'mceMakeAbsolute', true);
+
+ case "insertlayer":
+ return tinyMCE.getButtonHTML(cn, 'lang_layer_insertlayer_desc',
'{$pluginurl}/images/insertlayer.gif', 'mceInsertLayer', true);
+ }
+
+ return "";
+ },
+
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ switch (command) {
+ case "mceInsertLayer":
+ this._insertLayer();
+ return true;
+
+ case "mceMoveForward":
+ this._move(1);
+ return true;
+
+ case "mceMoveBackward":
+ this._move(-1);
+ return true;
+
+ case "mceMakeAbsolute":
+ this._toggleAbsolute();
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid,
any_selection) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+ var le = this._getParentLayer(inst.getFocusElement());
+ var p = tinyMCE.getParentElement(inst.getFocusElement(), 'div,p,img');
+
+ tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonDisabled');
+ tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonDisabled');
+ tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonDisabled');
+
+ if (p)
+ tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonNormal');
+
+ if (le && le.style.position.toLowerCase() == "absolute") {
+ tinyMCE.switchClass(editor_id + '_absolute', 'mceButtonSelected');
+ tinyMCE.switchClass(editor_id + '_moveforward', 'mceButtonNormal');
+ tinyMCE.switchClass(editor_id + '_movebackward', 'mceButtonNormal');
+ }
+ },
+
+ // Private plugin specific methods
+
+ _move : function(d) {
+ var inst = tinyMCE.selectedInstance, i, z = new Array();
+ var le = this._getParentLayer(inst.getFocusElement()), ci = -1, fi = -1;
+ var nl = tinyMCE.selectNodes(inst.getBody(), function(n) {
+ return n.nodeType == 1 && new RegExp('absolute|relative|static',
'gi').test(n.style.position);
+ });
+
+ // Find z-indexes
+ for (i=0; i<nl.length; i++) {
+ z[i] = nl[i].style.zIndex ? parseInt(nl[i].style.zIndex) : 0;
+
+ if (ci < 0 && nl[i] == le)
+ ci = i;
+ }
+
+ if (d < 0) {
+ // Move back
+
+ // Try find a lower one
+ for (i=0; i<z.length; i++) {
+ if (z[i] < z[ci]) {
+ fi = i;
+ break;
+ }
+ }
+
+ if (fi > -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.length; i++) {
+ if (z[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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/absolute.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/backward.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/forward.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insert_layer.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/insertlayer.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/movebackward.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/images/moveforward.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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...'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/layer/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/content.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/content.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/content.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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');
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/media.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/media.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/css/media.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('media');var
TinyMCE_MediaPlugin={getInfo:function(){return{longname:'Media',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,'<img
class="mceItem$1" title="$2" src="'+img+'"
/>');content=content.replace(/<object([^>]*)>/gi,'<div
class="mceItemObject"
$1>');content=content.replace(/<embed([^>]*)>/gi,'<div
class="mceItemObjectEmbed"
$1>');content=content.replace(/<\/(object|embed)([^>]*)>/gi,'</div>');content=content.replace(/<param([^>]*)>/gi,'<div
$1 class="mceItemParam"></div>');content=content.replace(new
RegExp('\\/
class="mceItemParam"><\\/div>','gi'),'class="mceItemParam"></div>');break;case"insert_to_editor_dom":d=inst.getDoc();nl=content.getElementsByTagName("img");for(i=0;i<nl.length;i++){if(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)){nl[i].width=nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g,'$1');nl[i].heig!
ht=nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g,'$1');}}nl=tiny
MCE.selectElements(content,'DIV',function(n){return
tinyMCE.hasCSSClass(n,'mceItemObject')});for(i=0;i<nl.length;i++){ci=tinyMCE.getAttrib(nl[i],"classid").toLowerCase().replace(/\s+/g,'');switch(ci){case'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',d,nl[i]),nl[i]);break;case'clsid:166b1bca-3f9c-11cf-8075-444553540000':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',d,nl[i]),nl[i]);break;case'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',d,nl[i]),nl[i]);break;case'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',d,nl[i]),nl[i]);break;case'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':case'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':case'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':nl[i].parentNode.replaceChild(TinyMCE_M!
ediaPlugin._createImg('mceItemRealMedia',d,nl[i]),nl[i]);break}}nl=tinyMCE.selectNodes(content,function(n){return
n.className=='mceItemObjectEmbed'});for(i=0;i<nl.length;i++){switch(tinyMCE.getAttrib(nl[i],'type')){case'application/x-shockwave-flash':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemFlash');break;case'application/x-director':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemShockWave');break;case'application/x-mplayer2':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemWindowsMedia');break;case'video/quicktime':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemQuickTime');break;case'audio/x-pn-realaudio-plugin':TinyMCE_MediaPlugin._createImgFromEmbed(nl[i],d,'mceItemRealMedia');break}}break;case"get_from_editor":var
startPos=-1,endPos,attribs,chunkBefore,chunkAfter,embedHTML,at,pl,cb,mt,ex;while((startPos=content.indexOf('<img',startPos+1))!=-1){endPos=content.indexOf('/>',startPos);attribs=TinyMCE_MediaPlugin._parseAttributes(conten!
t.substring(startPos+4,endPos));if(!/mceItem(Flash|ShockWave|WindowsMe
dia|QuickTime|RealMedia)/.test(attribs['class']))continue;endPos+...!
;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.convertRel!
ativeToAbsoluteURL(tinyMCE.settings['base_href'],pl.src);at=at.replace
(new
RegExp("src:'[^']*'","g"),"src:'"+pl.src+"'")}embedHTML='<script
type="text/javascript">'+s+'({'+at+'});</script>'}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<at.length;i++){if(at[i].specified&&at[i].nodeValue){!
an=at[i].nodeName.toLowerCase();if(an=='src')continue;if(an=='mce_src')an='src';if(an.indexOf('mce_')==-1&&!new
RegExp('^(class|type)$').test(an))ti+=an.toLowerCase()+':\''+at[i].nodeValue+"',"}}ti=ti.length>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<nl.length;i++){av=tinyMCE.getAttrib(nl[i],'value');av=av.replace(new
RegExp('\\\\','g'),'\\\\');av=av.replace(new
RegExp('"','g'),'\\"');av=av.!
replace(new
RegExp("'",'g'),"\\'");an=tinyMCE.getAttrib(nl[i],'name');
al[an]=av}if(al.movie){al.src=al.movie;al.movie=null}for(an in
al){if(al[an]!=null&&typeof(al[an])!="function"&&al[an]!='')ti+=an.toLowerCase()+':\''+al[an]+"',"}ti=ti.length>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+='<object
classid="clsid:'+cls+'"
codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'
id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'
name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'
width="'+p.width+'"':'';h+=typeof(p.height)!="undefined"?'
height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'
align="'+p.align+'"':'';h+='>';for(n in
p){if(p[n]&&typeof(p[n])!="function"){h+='<param
name="'+n+'" value="'+p[n]+'"
/>';if(n=='src'&&p[n].indexOf('://')!=-1&&mt=='application/x-mplayer2')h+='<param
name="url" value="'+p[n]+'" />'}}h+='<embed
type="'+mt+'"';for(n in
p){if(typeof(p[n])=="function")continue;if(!(n=='url'&&mt==!
'application/x-mplayer2'))h+='
'+n+'="'+p[n]+'"'}h+='></embed></object>';return
h},_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<attribute_string.length;i++){var
chr=attribute_string.charAt(i);if((chr=='"'||chr=="'")&&!withInValue)withInValue=true;else
if((chr=='"'||chr=="'")&&withInValue){withInValue=false;var
pos=attributeName.lastIndexOf('
');if(pos!=-1)attributeName=attributeName.substring(pos+1);attributes[attributeName.toLowerCase()]=attributeValue.substring(1);attributeName="";attributeValue=""}else
if(!whiteSpaceRegExp.test(chr)&&!withInName&&!withInValue)withInName=true;if(chr=='='&&withInName)withInName=false;if(withInName)attributeName+=chr;if(withInValue)attributeValue+=chr}return
attributes}};tinyMCE.addPlug!
in("media",TinyMCE_MediaPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,428 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('media');
+
+var TinyMCE_MediaPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Media',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_media.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ 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) {
+ // Handle commands
+ 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;
+ }
+
+ // Pass to next handler in chain
+ 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(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi,
'<img class="mceItem$1" title="$2" src="' + img +
'" />');
+ content = content.replace(/<object([^>]*)>/gi, '<div
class="mceItemObject" $1>');
+ content = content.replace(/<embed([^>]*)>/gi, '<div
class="mceItemObjectEmbed" $1>');
+ content = content.replace(/<\/(object|embed)([^>]*)>/gi,
'</div>');
+ content = content.replace(/<param([^>]*)>/gi, '<div $1
class="mceItemParam"></div>');
+ content = content.replace(new RegExp('\\/
class="mceItemParam"><\\/div>', 'gi'),
'class="mceItemParam"></div>');
+ break;
+
+ case "insert_to_editor_dom":
+ d = inst.getDoc();
+ nl = content.getElementsByTagName("img");
+ for (i=0; i<nl.length; i++) {
+ if
(/mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(nl[i].className)) {
+ nl[i].width = nl[i].title.replace(/.*width:[^0-9]?([0-9]+)%?.*/g, '$1');
+ nl[i].height = nl[i].title.replace(/.*height:[^0-9]?([0-9]+)%?.*/g, '$1');
+ //nl[i].align = nl[i].title.replace(/.*align:([a-z]+).*/gi, '$1');
+ }
+ }
+
+ nl = tinyMCE.selectElements(content, 'DIV', function (n) {return
tinyMCE.hasCSSClass(n, 'mceItemObject');});
+ for (i=0; i<nl.length; i++) {
+ ci = tinyMCE.getAttrib(nl[i], "classid").toLowerCase().replace(/\s+/g,
'');
+
+ switch (ci) {
+ case 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000':
+ nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemFlash',
d, nl[i]), nl[i]);
+ break;
+
+ case 'clsid:166b1bca-3f9c-11cf-8075-444553540000':
+ nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemShockWave',
d, nl[i]), nl[i]);
+ break;
+
+ case 'clsid:6bf52a52-394a-11d3-b153-00c04f79faa6':
+ nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemWindowsMedia',
d, nl[i]), nl[i]);
+ break;
+
+ case 'clsid:02bf25d5-8c17-4b23-bc80-d3488abddc6b':
+ nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemQuickTime',
d, nl[i]), nl[i]);
+ break;
+
+ case 'clsid:cfcdaa03-8be4-11cf-b84b-0020afbbccfa':
+ case 'clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95':
+ case 'clsid:05589fa1-c356-11ce-bf01-00aa0055595a':
+ nl[i].parentNode.replaceChild(TinyMCE_MediaPlugin._createImg('mceItemRealMedia',
d, nl[i]), nl[i]);
+ break;
+ }
+ }
+
+ // Handle embed (if any)
+ nl = tinyMCE.selectNodes(content, function (n) {return n.className ==
'mceItemObjectEmbed';});
+ for (i=0; i<nl.length; i++) {
+ switch (tinyMCE.getAttrib(nl[i], 'type')) {
+ case 'application/x-shockwave-flash':
+ TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemFlash');
+ break;
+
+ case 'application/x-director':
+ TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemShockWave');
+ break;
+
+ case 'application/x-mplayer2':
+ TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemWindowsMedia');
+ break;
+
+ case 'video/quicktime':
+ TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemQuickTime');
+ break;
+
+ case 'audio/x-pn-realaudio-plugin':
+ TinyMCE_MediaPlugin._createImgFromEmbed(nl[i], d, 'mceItemRealMedia');
+ break;
+ }
+ }
+ break;
+
+ case "get_from_editor":
+ var startPos = -1, endPos, attribs, chunkBefore, chunkAfter, embedHTML, at, pl, cb,
mt, ex;
+
+ while ((startPos = content.indexOf('<img', startPos+1)) != -1) {
+ endPos = content.indexOf('/>', 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(/'/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 = '<script type="text/javascript">' + s +
'({' + at + '});</script>';
+ }
+
+ // 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<at.length; i++) {
+ if (at[i].specified && at[i].nodeValue) {
+ an = at[i].nodeName.toLowerCase();
+
+ if (an == 'src')
+ continue;
+
+ if (an == 'mce_src')
+ an = 'src';
+
+ if (an.indexOf('mce_') == -1 && !new
RegExp('^(class|type)$').test(an))
+ ti += an.toLowerCase() + ':\'' + at[i].nodeValue + "',";
+ }
+ }
+
+ ti = ti.length > 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<nl.length; i++) {
+ av = tinyMCE.getAttrib(nl[i], 'value');
+ av = av.replace(new RegExp('\\\\', 'g'), '\\\\');
+ av = av.replace(new RegExp('"', 'g'), '\\"');
+ av = av.replace(new RegExp("'", 'g'), "\\'");
+ an = tinyMCE.getAttrib(nl[i], 'name');
+ al[an] = av;
+ }
+
+ if (al.movie) {
+ al.src = al.movie;
+ al.movie = null;
+ }
+
+ for (an in al) {
+ if (al[an] != null && typeof(al[an]) != "function" && al[an]
!= '')
+ ti += an.toLowerCase() + ':\'' + al[an] + "',";
+ }
+
+ ti = ti.length > 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 += '<object classid="clsid:' + cls + '" codebase="'
+ cb + '"';
+ h += typeof(p.id) != "undefined" ? ' id="' + p.id +
'"' : '';
+ h += typeof(p.name) != "undefined" ? ' name="' + p.name +
'"' : '';
+ h += typeof(p.width) != "undefined" ? ' width="' + p.width +
'"' : '';
+ h += typeof(p.height) != "undefined" ? ' height="' + p.height +
'"' : '';
+ h += typeof(p.align) != "undefined" ? ' align="' + p.align +
'"' : '';
+ h += '>';
+
+ for (n in p) {
+ if (p[n] && typeof(p[n]) != "function") {
+ h += '<param name="' + n + '" value="' + p[n] +
'" />';
+
+ // Add extra url parameter if it's an absolute URL on WMP
+ if (n == 'src' && p[n].indexOf('://') != -1 && mt ==
'application/x-mplayer2')
+ h += '<param name="url" value="' + p[n] + '"
/>';
+ }
+ }
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p) {
+ if (typeof(p[n]) == "function")
+ continue;
+
+ // Skip url parameter for embed tag on WMP
+ if (!(n == 'url' && mt == 'application/x-mplayer2'))
+ h += ' ' + n + '="' + p[n] + '"';
+ }
+
+ h += '></embed></object>';
+
+ return h;
+ },
+
+ _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<attribute_string.length; i++) {
+ var chr = attribute_string.charAt(i);
+
+ if ((chr == '"' || chr == "'") && !withInValue)
+ withInValue = true;
+ else if ((chr == '"' || chr == "'") && withInValue)
{
+ withInValue = false;
+
+ var pos = attributeName.lastIndexOf(' ');
+ if (pos != -1)
+ attributeName = attributeName.substring(pos+1);
+
+ attributes[attributeName.toLowerCase()] = attributeValue.substring(1);
+
+ attributeName = "";
+ attributeValue = "";
+ } else if (!whiteSpaceRegExp.test(chr) && !withInName &&
!withInValue)
+ withInName = true;
+
+ if (chr == '=' && withInName)
+ withInName = false;
+
+ if (withInName)
+ attributeName += chr;
+
+ if (withInValue)
+ attributeValue += chr;
+ }
+
+ return attributes;
+ }
+};
+
+tinyMCE.addPlugin("media", TinyMCE_MediaPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/flash.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/media.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/quicktime.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/realmedia.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/shockwave.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/images/windowsmedia.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/embed.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 += '<object classid="clsid:' + cls + '" codebase="'
+ cb + '"';
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id +
'"' : '';
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name +
'"' : '';
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width +
'"' : '';
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height +
'"' : '';
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align +
'"' : '';
+ h += '>';
+
+ for (n in p)
+ h += '<param name="' + n + '" value="' + p[n] +
'">';
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p)
+ h += n + '="' + p[n] + '" ';
+
+ h += '></embed></object>';
+
+ document.write(h);
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/jscripts/media.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,572 @@
+var oldWidth, oldHeight;
+var url = tinyMCE.getParam("media_external_list_url");
+if (url != null) {
+ // Fix relative
+ if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+ url = tinyMCE.documentBasePath + "/" + url;
+
+ document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+}
+
+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 = '<img src="' + tinyMCE.getParam("theme_href") +
'/images/spacer.gif"' ;
+
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ h += ' class="mceItemFlash"';
+ break;
+
+ case "shockwave":
+ h += ' class="mceItemShockWave"';
+ break;
+
+ case "qt":
+ h += ' class="mceItemQuickTime"';
+ break;
+
+ case "wmp":
+ h += ' class="mceItemWindowsMedia"';
+ break;
+
+ case "rmp":
+ h += ' class="mceItemRealMedia"';
+ break;
+ }
+
+ h += ' title="' + serializeParameters() + '"';
+ h += ' width="' + f.width.value + '"';
+ h += ' height="' + f.height.value + '"';
+ h += ' align="' + f.align.options[f.align.selectedIndex].value +
'"';
+
+ h += ' />';
+
+ tinyMCE.selectedInstance.execCommand('mceInsertContent', false, h);
+ }
+
+ tinyMCEPopup.close();
+}
+
+function getMediaListHTML() {
+ if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length
> 0) {
+ var html = "";
+
+ html += '<select id="linklist" name="linklist"
style="width: 250px" onfocus="tinyMCE.addSelectAccessibility(event, this,
window);"
onchange="this.form.src.value=this.options[this.selectedIndex].value;">';
+ html += '<option value="">---</option>';
+
+ for (var i=0; i<tinyMCEMediaList.length; i++)
+ html += '<option value="' + tinyMCEMediaList[i][1] +
'">' + tinyMCEMediaList[i][0] + '</option>';
+
+ html += '</select>';
+
+ 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<fo.length; i++) {
+ c = fo[i].split('=');
+
+ el = c[1].split(',');
+ for (x=0; x<el.length; x++)
+ if (v.indexOf('.' + el[x]) != -1)
+ return c[0];
+ }
+
+ return null;
+}
+
+function switchType(v) {
+ var t = getType(v), d = document, f = d.forms[0];
+
+ if (!t)
+ return;
+
+ selectByValue(d.forms[0], 'media_type', t);
+ changedType(t);
+
+ // Update qtsrc also
+ if (t == 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') !=
-1) {
+ alert(tinyMCE.getLang("lang_media_qt_stream_warn"));
+
+ if (f.qt_qtsrc.value == '')
+ f.qt_qtsrc.value = f.src.value;
+ }
+}
+
+function changedType(t) {
+ var d = document;
+
+ d.getElementById('flash_options').style.display = 'none';
+ d.getElementById('qt_options').style.display = 'none';
+ d.getElementById('shockwave_options').style.display = 'none';
+ d.getElementById('wmp_options').style.display = 'none';
+ d.getElementById('rmp_options').style.display = 'none';
+ d.getElementById(t + '_options').style.display = 'block';
+}
+
+function serializeParameters() {
+ var d = document, f = d.forms[0], s = '';
+
+ switch (f.media_type.options[f.media_type.selectedIndex].value) {
+ case "flash":
+ s += getBool('flash', 'play', true);
+ s += getBool('flash', 'loop', true);
+ s += getBool('flash', 'menu', true);
+ s += getBool('flash', 'swliveconnect', false);
+ s += getStr('flash', 'quality');
+ s += getStr('flash', 'scale');
+ s += getStr('flash', 'salign');
+ s += getStr('flash', 'wmode');
+ s += getStr('flash', 'base');
+ s += getStr('flash', 'flashvars');
+ break;
+
+ case "qt":
+ s += getBool('qt', 'loop', false);
+ s += getBool('qt', 'autoplay', false);
+ s += getBool('qt', 'cache', false);
+ s += getBool('qt', 'controller', true);
+ s += getBool('qt', 'correction', false, 'none',
'full');
+ s += getBool('qt', 'enablejavascript', false);
+ s += getBool('qt', 'kioskmode', false);
+ s += getBool('qt', 'autohref', false);
+ s += getBool('qt', 'playeveryframe', false);
+ s += getBool('qt', 'targetcache', false);
+ s += getStr('qt', 'scale');
+ s += getStr('qt', 'starttime');
+ s += getStr('qt', 'endtime');
+ s += getStr('qt', 'target');
+ s += getStr('qt', 'qtsrcchokespeed');
+ s += getStr('qt', 'volume');
+ s += getStr('qt', 'qtsrc');
+ break;
+
+ case "shockwave":
+ s += getBool('shockwave', 'sound');
+ s += getBool('shockwave', 'progress');
+ s += getBool('shockwave', 'autostart');
+ s += getBool('shockwave', 'swliveconnect');
+ s += getStr('shockwave', 'swvolume');
+ s += getStr('shockwave', 'swstretchstyle');
+ s += getStr('shockwave', 'swstretchhalign');
+ s += getStr('shockwave', 'swstretchvalign');
+ break;
+
+ case "wmp":
+ s += getBool('wmp', 'autostart', true);
+ s += getBool('wmp', 'enabled', false);
+ s += getBool('wmp', 'enablecontextmenu', true);
+ s += getBool('wmp', 'fullscreen', false);
+ s += getBool('wmp', 'invokeurls', true);
+ s += getBool('wmp', 'mute', false);
+ s += getBool('wmp', 'stretchtofit', false);
+ s += getBool('wmp', 'windowlessvideo', false);
+ s += getStr('wmp', 'balance');
+ s += getStr('wmp', 'baseurl');
+ s += getStr('wmp', 'captioningid');
+ s += getStr('wmp', 'currentmarker');
+ s += getStr('wmp', 'currentposition');
+ s += getStr('wmp', 'defaultframe');
+ s += getStr('wmp', 'playcount');
+ s += getStr('wmp', 'rate');
+ s += getStr('wmp', 'uimode');
+ s += getStr('wmp', 'volume');
+ break;
+
+ case "rmp":
+ s += getBool('rmp', 'autostart', false);
+ s += getBool('rmp', 'loop', false);
+ s += getBool('rmp', 'autogotourl', true);
+ s += getBool('rmp', 'center', false);
+ s += getBool('rmp', 'imagestatus', true);
+ s += getBool('rmp', 'maintainaspect', false);
+ s += getBool('rmp', 'nojava', false);
+ s += getBool('rmp', 'prefetch', false);
+ s += getBool('rmp', 'shuffle', false);
+ s += getStr('rmp', 'console');
+ s += getStr('rmp', 'controls');
+ s += getStr('rmp', 'numloop');
+ s += getStr('rmp', 'scriptcallbacks');
+ break;
+ }
+
+ s += getStr(null, 'id');
+ s += getStr(null, 'name');
+ s += getStr(null, 'src');
+ s += getStr(null, 'align');
+ s += getStr(null, 'bgcolor');
+ s += getInt(null, 'vspace');
+ s += getInt(null, 'hspace');
+ s += getStr(null, 'width');
+ s += getStr(null, 'height');
+
+ s = s.length > 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 = '<!-- x --->';
+
+ 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 += '<object classid="clsid:' + cls + '" codebase="'
+ codebase + '" width="' + pl.width + '" height="' +
pl.height + '" id="' + pl.id + '" name="' + pl.name +
'" align="' + pl.align + '">';
+
+ for (n in pl) {
+ h += '<param name="' + n + '" value="' + pl[n] +
'">';
+
+ // Add extra url parameter if it's an absolute URL
+ if (n == 'src' && pl[n].indexOf('://') != -1)
+ h += '<param name="url" value="' + pl[n] + '"
/>';
+ }
+
+ h += '<embed type="' + type + '" ';
+
+ for (n in pl)
+ h += n + '="' + pl[n] + '" ';
+
+ h += '></embed></object>';
+
+ p.innerHTML = "<!-- x --->" + h;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,85 @@
+// UK lang variables
+
+tinyMCE.addToLang('media',{
+title : 'Insert / edit embedded media',
+desc : 'Insert / edit embedded media',
+general : 'General',
+advanced : 'Advanced',
+file : 'File',
+list : 'List',
+size : 'Dimensions',
+preview : 'Preview',
+constrain_proportions : 'Constrain proportions',
+type : 'Type',
+id : 'Id',
+name : 'Name',
+class_name : 'Class',
+vspace : 'V-Space',
+hspace : 'H-Space',
+play : 'Auto play',
+loop : 'Loop',
+menu : 'Show menu',
+quality : 'Quality',
+scale : 'Scale',
+align : 'Align',
+salign : 'SAlign',
+wmode : 'WMode',
+bgcolor : 'Background',
+base : 'Base',
+flashvars : 'Flashvars',
+liveconnect : 'SWLiveConnect',
+autohref : 'AutoHREF',
+cache : 'Cache',
+hidden : 'Hidden',
+controller : 'Controller',
+kioskmode : 'Kiosk mode',
+playeveryframe : 'Play every frame',
+targetcache : 'Target cache',
+correction : 'No correction',
+enablejavascript : 'Enable JavaScript',
+starttime : 'Start time',
+endtime : 'End time',
+href : 'Href',
+qtsrcchokespeed : 'Choke speed',
+target : 'Target',
+volume : 'Volume',
+autostart : 'Auto start',
+enabled : 'Enabled',
+fullscreen : 'Fullscreen',
+invokeurls : 'Invoke URLs',
+mute : 'Mute',
+stretchtofit : 'Stretch to fit',
+windowlessvideo : 'Windowless video',
+balance : 'Balance',
+baseurl : 'Base URL',
+captioningid : 'Captioning id',
+currentmarker : 'Current marker',
+currentposition : 'Current position',
+defaultframe : 'Default frame',
+playcount : 'Play count',
+rate : 'Rate',
+uimode : 'UI Mode',
+flash_options : 'Flash options',
+qt_options : 'Quicktime options',
+wmp_options : 'Windows media player options',
+rmp_options : 'Real media player options',
+shockwave_options : 'Shockwave options',
+autogotourl : 'Auto goto URL',
+center : 'Center',
+imagestatus : 'Image status',
+maintainaspect : 'Maintain aspect',
+nojava : 'No java',
+prefetch : 'Prefetch',
+shuffle : 'Shuffle',
+console : 'Console',
+numloop : 'Num loops',
+controls : 'Controls',
+scriptcallbacks : 'Script callbacks',
+swstretchstyle : 'Stretch style',
+swstretchhalign : 'Stretch H-Align',
+swstretchvalign : 'Stretch V-Align',
+sound : 'Sound',
+progress : 'Progress',
+qtsrc : 'QT Src',
+qt_stream_warn : 'Streamed rtsp resources should be added to the QT Src field under
the advanced tab.\nYou should also add a non streamed version to the Src field..'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/media.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/media.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/media/media.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,723 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_media_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/media.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/validate.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <link href="css/media.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+ <form onsubmit="insertMedia();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');generatePreview();"
onmousedown="return
false;">{$lang_media_general}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_media_advanced}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_media_general}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td><label
for="media_type">{$lang_media_type}</label></td>
+ <td>
+ <select id="media_type" name="media_type"
onchange="changedType(this.value);generatePreview();">
+ <option value="flash">Flash</option>
+ <option value="qt">Quicktime</option>
+ <option value="shockwave">Shockware</option>
+ <option value="wmp">Windows Media</option>
+ <option value="rmp">Real Media</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="src">{$lang_media_file}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="src" name="src"
type="text" value=""
onchange="switchType(this.value);generatePreview();" /></td>
+ <td id="filebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr id="linklistrow">
+ <td><label
for="linklist">{$lang_media_list}</label></td>
+ <td id="linklistcontainer"> </td>
+ </tr>
+ <tr>
+ <td><label
for="width">{$lang_media_size}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="text" id="width"
name="width" value="" class="size"
onchange="generatePreview('width');" /> x <input
type="text" id="height" name="height" value=""
class="size" onchange="generatePreview('height');"
/></td>
+ <td> <input id="constrain"
type="checkbox" name="constrain" class="checkbox"
/></td>
+ <td><label id="constrainlabel"
for="constrain">{$lang_media_constrain_proportions}</label></td>
+ </tr>
+ </table>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset>
+ <legend>{$lang_media_preview}</legend>
+ <div id="prev"></div>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_media_advanced}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0"
width="100%">
+ <tr>
+ <td><label
for="id">{$lang_media_id}</label></td>
+ <td><input type="text" id="id" name="id"
onchange="generatePreview();" /></td>
+ <td><label
for="name">{$lang_media_name}</label></td>
+ <td><input type="text" id="name"
name="name" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="align">{$lang_media_align}</label></td>
+ <td>
+ <select id="align" name="align"
onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="top">top</option>
+ <option value="right">right</option>
+ <option value="bottom">bottom</option>
+ <option value="left">left</option>
+ </select>
+ </td>
+
+ <td><label
for="bgcolor">{$lang_media_bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor"
type="text" value="" size="9"
onchange="updateColor('bgcolor_pick','bgcolor');generatePreview();"
/></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="vspace">{$lang_media_vspace}</label></td>
+ <td><input type="text" id="vspace"
name="vspace" class="number" onchange="generatePreview();"
/></td>
+ <td><label
for="hspace">{$lang_media_hspace}</label></td>
+ <td><input type="text" id="hspace"
name="hspace" class="number" onchange="generatePreview();"
/></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="flash_options">
+ <legend>{$lang_media_flash_options}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td><label
for="flash_quality">{$lang_media_quality}</label></td>
+ <td>
+ <select id="flash_quality" name="flash_quality"
onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="high">high</option>
+ <option value="low">low</option>
+ <option value="autolow">autolow</option>
+ <option value="autohigh">autohigh</option>
+ <option value="best">best</option>
+ </select>
+ </td>
+
+ <td><label
for="flash_scale">{$lang_media_scale}</label></td>
+ <td>
+ <select id="flash_scale" name="flash_scale"
onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="showall">showall</option>
+ <option value="noborder">noborder</option>
+ <option value="exactfit">exactfit</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="flash_wmode">{$lang_media_wmode}</label></td>
+ <td>
+ <select id="flash_wmode" name="flash_wmode"
onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="window">window</option>
+ <option value="opaque">opaque</option>
+ <option value="transparent">transparent</option>
+ </select>
+ </td>
+
+ <td><label
for="flash_salign">{$lang_media_salign}</label></td>
+ <td>
+ <select id="flash_salign" name="flash_salign"
onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="l">left</option>
+ <option value="t">top</option>
+ <option value="r">right</option>
+ <option value="b">bottom</option>
+ <option value="tl">top-left</option>
+ <option value="tr">top_right</option>
+ <option value="bl">bottom-left</option>
+ <option value="br">bottom-right</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="flash_play" name="flash_play" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="flash_play">{$lang_media_play}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="flash_loop" name="flash_loop" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="flash_loop">{$lang_media_loop}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="flash_menu" name="flash_menu" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="flash_menu">{$lang_media_menu}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="flash_swliveconnect" name="flash_swliveconnect"
onchange="generatePreview();" /></td>
+ <td><label
for="flash_swliveconnect">{$lang_media_liveconnect}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <table>
+ <tr>
+ <td><label
for="flash_base">{$lang_media_base}</label></td>
+ <td><input type="text" id="flash_base"
name="flash_base" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="flash_flashvars">{$lang_media_flashvars}</label></td>
+ <td><input type="text" id="flash_flashvars"
name="flash_flashvars" onchange="generatePreview();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="qt_options">
+ <legend>{$lang_media_qt_options}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_loop" name="qt_loop" onchange="generatePreview();"
/></td>
+ <td><label
for="qt_loop">{$lang_media_loop}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_autoplay" name="qt_autoplay"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_autoplay">{$lang_media_play}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_cache" name="qt_cache" onchange="generatePreview();"
/></td>
+ <td><label
for="qt_cache">{$lang_media_cache}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_controller" name="qt_controller" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_controller">{$lang_media_controller}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_correction" name="qt_correction"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_correction">{$lang_media_correction}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_enablejavascript" name="qt_enablejavascript"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_enablejavascript">{$lang_media_enablejavascript}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_kioskmode" name="qt_kioskmode"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_kioskmode">{$lang_media_kioskmode}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_autohref" name="qt_autohref"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_autohref">{$lang_media_autohref}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_playeveryframe" name="qt_playeveryframe"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_playeveryframe">{$lang_media_playeveryframe}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="qt_targetcache" name="qt_targetcache"
onchange="generatePreview();" /></td>
+ <td><label
for="qt_targetcache">{$lang_media_targetcache}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="qt_scale">{$lang_media_scale}</label></td>
+ <td><select id="qt_scale" name="qt_scale"
class="mceEditableSelect" onchange="generatePreview();">
+ <option value="">{$lang_not_set}</option>
+ <option value="tofit">tofit</option>
+ <option value="aspect">aspect</option>
+ </select>
+ </td>
+
+ <td colspan="2"> </td>
+ </tr>
+
+ <tr>
+ <td><label
for="qt_starttime">{$lang_media_starttime}</label></td>
+ <td><input type="text" id="qt_starttime"
name="qt_starttime" onchange="generatePreview();" /></td>
+
+ <td><label
for="qt_endtime">{$lang_media_endtime}</label></td>
+ <td><input type="text" id="qt_endtime"
name="qt_endtime" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="qt_target">{$lang_media_target}</label></td>
+ <td><input type="text" id="qt_target"
name="qt_target" onchange="generatePreview();" /></td>
+
+ <td><label
for="qt_href">{$lang_media_href}</label></td>
+ <td><input type="text" id="qt_href"
name="qt_href" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="qt_qtsrcchokespeed">{$lang_media_qtsrcchokespeed}</label></td>
+ <td><input type="text" id="qt_qtsrcchokespeed"
name="qt_qtsrcchokespeed" onchange="generatePreview();"
/></td>
+
+ <td><label
for="qt_volume">{$lang_media_volume}</label></td>
+ <td><input type="text" id="qt_volume"
name="qt_volume" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="qt_qtsrc">{$lang_media_qtsrc}</label></td>
+ <td colspan="4">
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="qt_qtsrc"
name="qt_qtsrc" onchange="generatePreview();" /></td>
+ <td id="qtsrcfilebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="wmp_options">
+ <legend>{$lang_media_wmp_options}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_autostart" name="wmp_autostart" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_autostart">{$lang_media_autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_enabled" name="wmp_enabled"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_enabled">{$lang_media_enabled}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_enablecontextmenu" name="wmp_enablecontextmenu"
checked="checked" onchange="generatePreview();" /></td>
+ <td><label
for="wmp_enablecontextmenu">{$lang_media_menu}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_fullscreen" name="wmp_fullscreen"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_fullscreen">{$lang_media_fullscreen}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_invokeurls" name="wmp_invokeurls" checked="checked"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_invokeurls">{$lang_media_invokeurls}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_mute" name="wmp_mute" onchange="generatePreview();"
/></td>
+ <td><label
for="wmp_mute">{$lang_media_mute}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_stretchtofit" name="wmp_stretchtofit"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_stretchtofit">{$lang_media_stretchtofit}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="wmp_windowlessvideo" name="wmp_windowlessvideo"
onchange="generatePreview();" /></td>
+ <td><label
for="wmp_windowlessvideo">{$lang_media_windowlessvideo}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="wmp_balance">{$lang_media_balance}</label></td>
+ <td><input type="text" id="wmp_balance"
name="wmp_balance" onchange="generatePreview();" /></td>
+
+ <td><label
for="wmp_baseurl">{$lang_media_baseurl}</label></td>
+ <td><input type="text" id="wmp_baseurl"
name="wmp_baseurl" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="wmp_captioningid">{$lang_media_captioningid}</label></td>
+ <td><input type="text" id="wmp_captioningid"
name="wmp_captioningid" onchange="generatePreview();"
/></td>
+
+ <td><label
for="wmp_currentmarker">{$lang_media_currentmarker}</label></td>
+ <td><input type="text" id="wmp_currentmarker"
name="wmp_currentmarker" onchange="generatePreview();"
/></td>
+ </tr>
+
+ <tr>
+ <td><label
for="wmp_currentposition">{$lang_media_currentposition}</label></td>
+ <td><input type="text" id="wmp_currentposition"
name="wmp_currentposition" onchange="generatePreview();"
/></td>
+
+ <td><label
for="wmp_defaultframe">{$lang_media_defaultframe}</label></td>
+ <td><input type="text" id="wmp_defaultframe"
name="wmp_defaultframe" onchange="generatePreview();"
/></td>
+ </tr>
+
+ <tr>
+ <td><label
for="wmp_playcount">{$lang_media_playcount}</label></td>
+ <td><input type="text" id="wmp_playcount"
name="wmp_playcount" onchange="generatePreview();" /></td>
+
+ <td><label
for="wmp_rate">{$lang_media_rate}</label></td>
+ <td><input type="text" id="wmp_rate"
name="wmp_rate" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="wmp_uimode">{$lang_media_uimode}</label></td>
+ <td><input type="text" id="wmp_uimode"
name="wmp_uimode" onchange="generatePreview();" /></td>
+
+ <td><label
for="wmp_volume">{$lang_media_volume}</label></td>
+ <td><input type="text" id="wmp_volume"
name="wmp_volume" onchange="generatePreview();" /></td>
+ </tr>
+
+ </table>
+ </fieldset>
+
+ <fieldset id="rmp_options">
+ <legend>{$lang_media_rmp_options}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_autostart" name="rmp_autostart"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_autostart">{$lang_media_autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_loop" name="rmp_loop" onchange="generatePreview();"
/></td>
+ <td><label
for="rmp_loop">{$lang_media_loop}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_autogotourl" name="rmp_autogotourl"
checked="checked" onchange="generatePreview();" /></td>
+ <td><label
for="rmp_autogotourl">{$lang_media_autogotourl}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_center" name="rmp_center"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_center">{$lang_media_center}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_imagestatus" name="rmp_imagestatus"
checked="checked" onchange="generatePreview();" /></td>
+ <td><label
for="rmp_imagestatus">{$lang_media_imagestatus}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_maintainaspect" name="rmp_maintainaspect"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_maintainaspect">{$lang_media_maintainaspect}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_nojava" name="rmp_nojava"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_nojava">{$lang_media_nojava}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_prefetch" name="rmp_prefetch"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_prefetch">{$lang_media_prefetch}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="rmp_shuffle" name="rmp_shuffle"
onchange="generatePreview();" /></td>
+ <td><label
for="rmp_shuffle">{$lang_media_shuffle}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="rmp_console">{$lang_media_console}</label></td>
+ <td><input type="text" id="rmp_console"
name="rmp_console" onchange="generatePreview();" /></td>
+
+ <td><label
for="rmp_controls">{$lang_media_controls}</label></td>
+ <td><input type="text" id="rmp_controls"
name="rmp_controls" onchange="generatePreview();" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="rmp_numloop">{$lang_media_numloop}</label></td>
+ <td><input type="text" id="rmp_numloop"
name="rmp_numloop" onchange="generatePreview();" /></td>
+
+ <td><label
for="rmp_scriptcallbacks">{$lang_media_scriptcallbacks}</label></td>
+ <td><input type="text" id="rmp_scriptcallbacks"
name="rmp_scriptcallbacks" onchange="generatePreview();"
/></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <fieldset id="shockwave_options">
+ <legend>{$lang_media_shockwave_options}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td><label
for="shockwave_swstretchstyle">{$lang_media_swstretchstyle}</label></td>
+ <td>
+ <select id="shockwave_swstretchstyle"
name="shockwave_swstretchstyle" onchange="generatePreview();">
+ <option value="none">None</option>
+ <option value="meet">Meet</option>
+ <option value="fill">Fill</option>
+ <option value="stage">Stage</option>
+ </select>
+ </td>
+
+ <td><label
for="shockwave_swvolume">{$lang_media_volume}</label></td>
+ <td><input type="text" id="shockwave_swvolume"
name="shockwave_swvolume" onchange="generatePreview();"
/></td>
+ </tr>
+
+ <tr>
+ <td><label
for="shockwave_swstretchhalign">{$lang_media_swstretchhalign}</label></td>
+ <td>
+ <select id="shockwave_swstretchhalign"
name="shockwave_swstretchhalign" onchange="generatePreview();">
+ <option value="none">None</option>
+ <option value="left">left</option>
+ <option value="center">center</option>
+ <option value="right">right</option>
+ </select>
+ </td>
+
+ <td><label
for="shockwave_swstretchvalign">{$lang_media_swstretchvalign}</label></td>
+ <td>
+ <select id="shockwave_swstretchvalign"
name="shockwave_swstretchvalign" onchange="generatePreview();">
+ <option value="none">None</option>
+ <option value="meet">Top</option>
+ <option value="fill">Center</option>
+ <option value="stage">Bottom</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="shockwave_autostart" name="shockwave_autostart"
onchange="generatePreview();" checked="checked" /></td>
+ <td><label
for="shockwave_autostart">{$lang_media_autostart}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="shockwave_sound" name="shockwave_sound"
onchange="generatePreview();" checked="checked" /></td>
+ <td><label
for="shockwave_sound">{$lang_media_sound}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="shockwave_swliveconnect" name="shockwave_swliveconnect"
onchange="generatePreview();" /></td>
+ <td><label
for="shockwave_swliveconnect">{$lang_media_liveconnect}</label></td>
+ </tr>
+ </table>
+ </td>
+
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input type="checkbox" class="checkbox"
id="shockwave_progress" name="shockwave_progress"
onchange="generatePreview();" checked="checked" /></td>
+ <td><label
for="shockwave_progress">{$lang_media_progress}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertMedia();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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)?'<span
class="mceItemHiddenVisualChar">·</span>':' ';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('nonbr!
eaking_force_tab',false)){inst=tinyMCE.selectedInstance;h=(inst.visualChars&&inst.visualChars.state)?'<span
class="mceItemHiddenVisualChar">···</span>':' ';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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,62 @@
+/**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_nonbreaking.html',
+ 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) ? '<span
class="mceItemHiddenVisualChar">·</span>' :
' ';
+ 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) ? '<span
class="mceItemHiddenVisualChar">···</span>'
: ' ';
+ tinyMCE.execInstanceCommand(inst.editorId, 'mceInsertContent', false, h);
+
+ tinyMCE.cancelEvent(e);
+ return false;
+ }
+
+ return true;
+ }
+};
+
+tinyMCE.addPlugin("nonbreaking", TinyMCE_NonBreakingPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/images/nonbreaking.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/nonbreaking/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('nonbreaking',{
+desc : 'Insert non-breaking space character'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/css/noneditable.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,9 @@
+/* This is the CSS file for the noneditable elements plugin */
+
+.mceItemEditable {
+ /*border: 1px dotted #0000cc;*/
+}
+
+.mceItemNonEditable {
+ /*border: 1px dotted #cc0000;*/
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+var TinyMCE_NonEditablePlugin={getInfo:function(){return{longname:'Non editable
elements',author:'Moxiecode Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
this._moveSelection(e,tinyMCE.selectedInstance)},cleanup:function(type,content,inst){if(tinyMCE.isGecko)return
content;switch(type){case"insert_to_editor_dom":var
nodes=tinyMCE.getNodeTree(content,new Array(),1);var
editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var
nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");for(var
i=0;i<nodes.length;i++){var elm=nodes[i]!
;var editable=tinyMCE.getAttrib(elm,"contenteditable");if(new
RegExp("true|false","gi").test(editable))TinyMCE_NonEditablePlugin._setEditable(elm,editable=="true");if(tinyMCE.isMSIE){var
className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1)elm.contentEditable=true;if(className.indexOf(nonEditClass)!=-1)elm.contentEditable=false}}break;case"insert_to_editor":if(tinyMCE.isMSIE){var
editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var
nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");content=content.replace(new
RegExp("class=\"(.*)("+editClass+")([^\"]*)\"","gi"),'class="$1$2$3"
contenteditable="true"');content=content.replace(new
RegExp("class=\"(.*)("+nonEditClass+")([^\"]*)\"","gi"),'class="$1$2$3"
contenteditable="false"')}break;case"get_from_editor_dom":if(tinyMCE.getParam("noneditable_leave_contenteditable",false)){var
nodes=tinyMCE.getNodeTree(content,new Array(),1);for(var i=0;i<nodes.l!
ength;i++)nodes[i].removeAttribute("contenteditable")}break}return con
tent},_moveSelection:function(e,inst){var
s,r,sc,ec,el,c=tinyMCE.getParam('noneditable_editable_class','mceItemNonEditable');if(!inst)return
true;if(tinyMCE.isGecko){s=inst.selection.getSel();r=s.getRangeAt(0);sc=tinyMCE.getParentNode(r.startContainer,function(n){return
tinyMCE.hasCSSClass(n,c)});ec=tinyMCE.getParentNode(r.endContainer,function(n){return
tinyMCE.hasCSSClass(n,c)});sc&&r.setStartBefore(sc);ec&&r.setEndAfter(ec);if(sc||ec){if(e.type=='keypress'&&e.keyCode==39){el=sc||ec;}s.removeAllRanges();s.addRange(r);return
tinyMCE.cancelEvent(e)}}return true},_setEditable:function(elm,state){var
editClass=tinyMCE.getParam("noneditable_editable_class","mceItemEditable");var
nonEditClass=tinyMCE.getParam("noneditable_noneditable_class","mceItemNonEditable");var
className=elm.className?elm.className:"";if(className.indexOf(editClass)!=-1||className.indexOf(nonEditClass)!=-1)return;if((className=tinyMCE.getAttrib(elm,"class"))!="")className+="
";className+=state?editClass:non!
EditClass;elm.setAttribute("class",className);elm.className=className}};tinyMCE.addPlugin("noneditable",TinyMCE_NonEditablePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,140 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_NonEditablePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Non editable elements',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl :
'http://tinymce.moxiecode.com/tinymce/docs/plugin_noneditable.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ tinyMCE.importCSS(inst.getDoc(), tinyMCE.baseURL +
"/plugins/noneditable/css/noneditable.css");
+
+ // Ugly hack
+ 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) {
+ // Pass through Gecko
+ if (tinyMCE.isGecko)
+ return content;
+
+ switch (type) {
+ case "insert_to_editor_dom":
+ var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
+ var editClass = tinyMCE.getParam("noneditable_editable_class",
"mceItemEditable");
+ var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class",
"mceItemNonEditable");
+
+ for (var i=0; i<nodes.length; i++) {
+ var elm = nodes[i];
+
+ // Convert contenteditable to classes
+ var editable = tinyMCE.getAttrib(elm, "contenteditable");
+ if (new RegExp("true|false","gi").test(editable))
+ TinyMCE_NonEditablePlugin._setEditable(elm, editable == "true");
+
+ if (tinyMCE.isMSIE) {
+ var className = elm.className ? elm.className : "";
+
+ if (className.indexOf(editClass) != -1)
+ elm.contentEditable = true;
+
+ if (className.indexOf(nonEditClass) != -1)
+ elm.contentEditable = false;
+ }
+ }
+
+ break;
+
+ case "insert_to_editor":
+ if (tinyMCE.isMSIE) {
+ var editClass = tinyMCE.getParam("noneditable_editable_class",
"mceItemEditable");
+ var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class",
"mceItemNonEditable");
+
+ content = content.replace(new RegExp("class=\"(.*)(" + editClass +
")([^\"]*)\"", "gi"), 'class="$1$2$3"
contenteditable="true"');
+ content = content.replace(new RegExp("class=\"(.*)(" + nonEditClass +
")([^\"]*)\"", "gi"), 'class="$1$2$3"
contenteditable="false"');
+ }
+
+ break;
+
+ case "get_from_editor_dom":
+ if (tinyMCE.getParam("noneditable_leave_contenteditable", false)) {
+ var nodes = tinyMCE.getNodeTree(content, new Array(), 1);
+
+ for (var i=0; i<nodes.length; i++)
+ nodes[i].removeAttribute("contenteditable");
+ }
+
+ break;
+ }
+
+ return content;
+ },
+
+ _moveSelection : function(e, inst) {
+ var s, r, sc, ec, el, c = tinyMCE.getParam('noneditable_editable_class',
'mceItemNonEditable');
+
+ if (!inst)
+ return true;
+
+ // Always select whole element
+ if (tinyMCE.isGecko) {
+ s = inst.selection.getSel();
+ r = s.getRangeAt(0);
+ sc = tinyMCE.getParentNode(r.startContainer, function (n) {return
tinyMCE.hasCSSClass(n, c);});
+ ec = tinyMCE.getParentNode(r.endContainer, function (n) {return tinyMCE.hasCSSClass(n,
c);});
+
+ sc && r.setStartBefore(sc);
+ ec && r.setEndAfter(ec);
+
+ if (sc || ec) {
+ if (e.type == 'keypress' && e.keyCode == 39) {
+ el = sc || ec;
+
+ // Try!!
+ }
+
+ s.removeAllRanges();
+ s.addRange(r);
+
+ return tinyMCE.cancelEvent(e);
+ }
+ }
+
+ return true;
+ },
+
+ _setEditable : function(elm, state) {
+ var editClass = tinyMCE.getParam("noneditable_editable_class",
"mceItemEditable");
+ var nonEditClass = tinyMCE.getParam("noneditable_noneditable_class",
"mceItemNonEditable");
+
+ var className = elm.className ? elm.className : "";
+
+ if (className.indexOf(editClass) != -1 || className.indexOf(nonEditClass) != -1)
+ return;
+
+ if ((className = tinyMCE.getAttrib(elm, "class")) != "")
+ className += " ";
+
+ className += state ? editClass : nonEditClass;
+
+ elm.setAttribute("class", className);
+ elm.className = className;
+ }
+};
+
+tinyMCE.addPlugin("noneditable", TinyMCE_NonEditablePlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/noneditable/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/blank.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/blank.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/blank.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,19 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>blank_page</title>
+ <meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
+ <script language="javascript">
+ function init() {
+ document.body.contentEditable = true;
+ document.designMode = 'on';
+ parent.initIframe(document);
+ window.focus();
+ }
+ </script>
+ <link href="css/blank.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body onload="init();">
+
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/blank.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/css/pasteword.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,3 @@
+.sourceIframe {
+ border: 1px solid #808080;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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_interf!
ace,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:pla!
in_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,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var
i=0;i<rl.length;i+=2)content=content.replace(new
RegExp(rl[i],'gi'),rl[i+1]);content=tinyMCE.regexpReplace(content,"\r\n\r\n","</p><p>","gi");content=tinyMCE.regexpReplace(content,"\r\r","</p><p>","gi"!
);content=tinyMCE.regexpReplace(content,"\n\n","</p><p>","gi");if((pos=content.indexOf('</p><p>'))!=-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="</p>";before+=content.substring(0,pos);for(var
i=0;i<breakElms.length;i++){before+="</"+breakElms[i].nodeName+">";after+="<"+breakElms[(breakElms.length-1)-i].nodeName+">"}before+="<p>";content=before+content.substring(pos+7)+after}}if(tinyMCE.getParam("paste_create_linebreaks",true)){content=tinyMCE.regexpReplace(content,"\r\n","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\r","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\n","<br
/>","gi")}}tinyMCE.execCommand("mceInsertRawHTML",false,content)}},_insertWordContent:function(content){if(content&&content.length>0){var
bull=String.fromCharCode(82!
26);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,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');for(var
i=0;i<rl.length;i+=2)content=content.replace(new
RegExp(rl[i],'gi'),rl[i+1]);if(tinyMCE.getParam("paste_convert_headers_to_strong",false)){content=content.replace(new
RegExp('<p
class=MsoHeading.*?>(.*?)<\/p>','gi'),'<p><b>$1</b></p>')}content=content.replace(new
RegExp('tab-stops: list
[0-9]+.0pt">','gi'),'">'+"--list--");content=content.replace(new
RegExp(bull+"(.*?)<BR>","gi"),"<p>"+middot+"$1</p>");content=content.replace(new
RegExp('<SPAN style="mso-list:
Ignore">','gi'),"<span>"+bull);content=content.replace(/<o:p><\/o:p>/gi,"");content=content.replace(new
RegExp('<br style="page-break-before: always;.*>','gi'),'--
page break --');content=content.replace(new
RegExp('<(!--)([^>]*)(--)>','g'),"");if(tinyMCE.getParam("paste_remove_span!
s",true))content=content.replace(/<\/?span[^>]*>/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> <\/p>/gi,"");content=content.replace(/-- page
break
--/gi,"");if(!tinyMCE.settings['force_p_newlines']){content=content.!
replace('','','gi');content=content.replace('</p>','<br
/><br />','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]> <\/h[1-6]>/gi,'<p> </p>');content=content.replace(/<h[1-6]>/gi,'<p><b>');content=content.replace(/<\/h[1-6]>/gi,'</b></p>');content=content.replace(/<b> <\/b>/gi,'<b> </b>');content=content.replace(/^( )*/gi,'')}content=content.replace(/--list--/gi,"");if((cb=tinyMCE.getParam("paste_insert_word_content_callbac!
k",""))!="")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<s.length;i++){var
c=s.charAt(i);if(l.indexOf(c)!=-1)o+='\\'+c;else o+=c}return
o},_convertMiddots:function(div,search,class_name){var mdot=String.fromCharCode(183);var
bull=String.fromCharCode(8226);var nodes=div.getElementsByTagName("p");var
prevul;for(var i=0;i<nodes.length;i++){var
p=nodes[i];if(p.innerHTML.indexOf(search)==0){var
ul=document.createElement("ul");if(class_name)ul.className=class_name;var
li=document.createElement("li");li.innerHTML=p.innerHTML.replace(new
RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');ul.appendChild(li);var
np=p.nextSibling;while(np){if(np.nodeType==3&&new
RegExp('^\\s$','m').test(np.nodeValue)){np=np.nextSibling;continue}if(search==mdot){if(np.n!
odeType==1&&new
RegExp('^o(\\s+| )').test(np.innerHTML)){if(!prev
ul){prevul=ul;ul=document.createElement("ul");prevul.appendChild(ul)}np.innerHTML=np.innerHTML.replace(/^o/,'')}else{if(prevul){ul=prevul;prevul=null}if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}}else{if(np.nodeType!=1||np.innerHTML.indexOf(search)!=0)break}var
cp=np.nextSibling;var
li=document.createElement("li");li.innerHTML=np.innerHTML.replace(new
RegExp(''+mdot+'|'+bull+'|--list--| ',"gi"),'');np.parentNode.removeChild(np);ul.appendChild(li);np=cp}p.parentNode.replaceChild(ul,p);return
true}}return false},_clipboardHTML:function(){var
div=document.getElementById('_TinyMCE_clipboardHTML');if(!div){var
div=document.createElement('DIV');div.id='_TinyMCE_clipboardHTML';with(div.style){visibility='hidden';overflow='hidden';position='absolute';width=1;height=1}document.body.appendChild(div)}div.innerHTML='';var
rng=document.body.createTextRange();rng.moveToElementText(div);rng.execCommand('Paste');var
html=div.innerHTML;div.innerHTML='';return html}};tinyMCE.!
addPlugin("paste",TinyMCE_PastePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,385 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('paste');
+
+var TinyMCE_PastePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Paste text/word',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_paste.html',
+ 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);
+ },
+
+ 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'; // Relative
to theme
+ 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'; // Relative
to theme
+ 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;
+
+ }
+
+ // Pass to next handler in chain
+ return false;
+ },
+
+ // Private plugin internal methods
+
+ _handlePasteEvent : function(e) {
+ switch (e.type) {
+ case "paste":
+ var html = TinyMCE_PastePlugin._clipboardHTML();
+ var r, inst = tinyMCE.selectedInstance;
+
+ // Removes italic, strong etc, the if was needed due to bug #1437114
+ 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) {
+ // Special paragraph treatment
+ if (tinyMCE.getParam("paste_create_paragraphs", true)) {
+ var rl = tinyMCE.getParam("paste_replace_list",
'\u2122,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
+ for (var i=0; i<rl.length; i+=2)
+ content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
+
+ content = tinyMCE.regexpReplace(content, "\r\n\r\n",
"</p><p>", "gi");
+ content = tinyMCE.regexpReplace(content, "\r\r",
"</p><p>", "gi");
+ content = tinyMCE.regexpReplace(content, "\n\n",
"</p><p>", "gi");
+
+ // Has paragraphs
+ if ((pos = content.indexOf('</p><p>')) != -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 = "</p>";
+ before += content.substring(0, pos);
+
+ for (var i=0; i<breakElms.length; i++) {
+ before += "</" + breakElms[i].nodeName + ">";
+ after += "<" + breakElms[(breakElms.length-1)-i].nodeName +
">";
+ }
+
+ before += "<p>";
+ content = before + content.substring(pos+7) + after;
+ }
+ }
+
+ if (tinyMCE.getParam("paste_create_linebreaks", true)) {
+ content = tinyMCE.regexpReplace(content, "\r\n", "<br />",
"gi");
+ content = tinyMCE.regexpReplace(content, "\r", "<br />",
"gi");
+ content = tinyMCE.regexpReplace(content, "\n", "<br />",
"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,<sup>TM</sup>,\u2026,...,\u201c|\u201d,",\u2019,\',\u2013|\u2014|\u2015|\u2212,-').split(',');
+ for (var i=0; i<rl.length; i+=2)
+ content = content.replace(new RegExp(rl[i], 'gi'), rl[i+1]);
+
+ if (tinyMCE.getParam("paste_convert_headers_to_strong", false)) {
+ content = content.replace(new RegExp('<p
class=MsoHeading.*?>(.*?)<\/p>', 'gi'),
'<p><b>$1</b></p>');
+ }
+
+ content = content.replace(new RegExp('tab-stops: list [0-9]+.0pt">',
'gi'), '">' + "--list--");
+ content = content.replace(new RegExp(bull + "(.*?)<BR>",
"gi"), "<p>" + middot + "$1</p>");
+ content = content.replace(new RegExp('<SPAN style="mso-list:
Ignore">', 'gi'), "<span>" + bull); // Covert to bull
list
+ content = content.replace(/<o:p><\/o:p>/gi, "");
+ content = content.replace(new RegExp('<br style="page-break-before:
always;.*>', 'gi'), '-- page break --'); // Replace pagebreaks
+ content = content.replace(new RegExp('<(!--)([^>]*)(--)>',
'g'), ""); // Word comments
+
+ if (tinyMCE.getParam("paste_remove_spans", true))
+ content = content.replace(/<\/?span[^>]*>/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> <\/p>/gi,
""); // Remove pagebreaks
+ content = content.replace(/-- page break --/gi, ""); // Remove pagebreaks
+
+ // content = content.replace(/\/? */gi, "");
+ // content = content.replace(/<p> <\/p>/gi, '');
+
+ if (!tinyMCE.settings['force_p_newlines']) {
+ content = content.replace('', '' ,'gi');
+ content = content.replace('</p>', '<br /><br />'
,'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]> <\/h[1-6]>/gi,
'<p> </p>');
+ content = content.replace(/<h[1-6]>/gi, '<p><b>');
+ content = content.replace(/<\/h[1-6]>/gi, '</b></p>');
+ content = content.replace(/<b> <\/b>/gi,
'<b> </b>');
+ 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; i<s.length; i++) {
+ var c = s.charAt(i);
+
+ if (l.indexOf(c) != -1)
+ o += '\\' + c;
+ else
+ o += c;
+ }
+
+ return o;
+ },
+
+ _convertMiddots : function(div, search, class_name) {
+ var mdot = String.fromCharCode(183);
+ var bull = String.fromCharCode(8226);
+
+ var nodes = div.getElementsByTagName("p");
+ var prevul;
+ for (var i=0; i<nodes.length; i++) {
+ var p = nodes[i];
+
+ // Is middot
+ if (p.innerHTML.indexOf(search) == 0) {
+ var ul = document.createElement("ul");
+
+ if (class_name)
+ ul.className = class_name;
+
+ // Add the first one
+ var li = document.createElement("li");
+ li.innerHTML = p.innerHTML.replace(new RegExp('' + mdot + '|' + bull
+ '|--list--| ', "gi"), '');
+ ul.appendChild(li);
+
+ // Add the rest
+ var np = p.nextSibling;
+ while (np) {
+ // If the node is whitespace, then
+ // ignore it and continue on.
+ if (np.nodeType == 3 && new RegExp('^\\s$',
'm').test(np.nodeValue)) {
+ np = np.nextSibling;
+ continue;
+ }
+
+ if (search == mdot) {
+ if (np.nodeType == 1 && new
RegExp('^o(\\s+| )').test(np.innerHTML)) {
+ // Second level of nesting
+ if (!prevul) {
+ prevul = ul;
+ ul = document.createElement("ul");
+ prevul.appendChild(ul);
+ }
+ np.innerHTML = np.innerHTML.replace(/^o/, '');
+ } else {
+ // Pop the stack if we're going back up to the first level
+ if (prevul) {
+ ul = prevul;
+ prevul = null;
+ }
+ // Not element or middot paragraph
+ if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
+ break;
+ }
+ } else {
+ // Not element or middot paragraph
+ if (np.nodeType != 1 || np.innerHTML.indexOf(search) != 0)
+ break;
+ }
+
+ var cp = np.nextSibling;
+ var li = document.createElement("li");
+ li.innerHTML = np.innerHTML.replace(new RegExp('' + mdot + '|' +
bull + '|--list--| ', "gi"), '');
+ np.parentNode.removeChild(np);
+ ul.appendChild(li);
+ np = cp;
+ }
+
+ p.parentNode.replaceChild(ul, p);
+
+ return true;
+ }
+ }
+
+ return false;
+ },
+
+ _clipboardHTML : function() {
+ var div = document.getElementById('_TinyMCE_clipboardHTML');
+
+ if (!div) {
+ var div = document.createElement('DIV');
+ div.id = '_TinyMCE_clipboardHTML';
+
+ with (div.style) {
+ visibility = 'hidden';
+ overflow = 'hidden';
+ position = 'absolute';
+ width = 1;
+ height = 1;
+ }
+
+ document.body.appendChild(div);
+ }
+
+ div.innerHTML = '';
+ var rng = document.body.createTextRange();
+ rng.moveToElementText(div);
+ rng.execCommand('Paste');
+ var html = div.innerHTML;
+ div.innerHTML = '';
+ return html;
+ }
+};
+
+tinyMCE.addPlugin("paste", TinyMCE_PastePlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pastetext.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/pasteword.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/images/selectall.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pastetext.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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';
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/jscripts/pasteword.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 = '<iframe
id="frmData" name="frmData" class="sourceIframe"
src="blank.htm" height="280" width="400"
frameborder="0" style="background-color:#FFFFFF; width:100%;"
dir="ltr" wrap="soft"></iframe>';
+}
+
+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';
+ }
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pastetext.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,34 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_paste_text_desc}</title>
+ <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/pastetext.js"></script>
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');"
onresize="resizeInputs();" style="display: none">
+<form name="source" onsubmit="saveContent();">
+ <div style="float: left"
class="title">{$lang_paste_text_desc}</div>
+
+ <div style="float: right">
+ <input type="checkbox" name="linebreaks"
id="linebreaks" class="wordWrapCode" checked="checked"
/><label for="linebreaks">{$lang_paste_text_linebreaks}</label>
+ </div>
+
+ <br style="clear: both" />
+
+ <div>{$lang_paste_text_title}</div>
+
+ <textarea name="htmlSource" id="htmlSource" rows="15"
cols="100" style="width: 100%; height: 100%; font-family: 'Courier
New',Courier,mono; font-size: 12px;" dir="ltr"
wrap="soft"></textarea>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" name="insert"
value="{$lang_insert}" onclick="saveContent();" id="insert"
/>
+ </div>
+
+ <div style="float: right">
+ <input type="button" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();"
id="cancel" />
+ </div>
+ </div>
+</form>
+</body>
+</html>
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/pasteword.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,29 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
+ <title>{$lang_paste_word_desc}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/pasteword.js"></script>
+ <link href="css/pasteword.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');"
onresize="resizeInputs();" style="display: none">
+ <form name="source" onsubmit="saveContent();"
action="#">
+ <div class="title">{$lang_paste_word_desc}</div>
+
+ <div>{$lang_paste_word_title}</div>
+
+ <div id="iframecontainer"></div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="saveContent();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/paste/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,62 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('preview', 'uk,se,de');
-
-/**
- * Returns the HTML contents of the preview control.
- */
-function TinyMCE_preview_getControlHTML(control_name) {
- switch (control_name) {
- case "preview":
- return '<img id="{$editor_id}_preview"
src="{$pluginurl}/images/preview.gif" title="{$lang_preview_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');"
/>';
- }
-
- return "";
-}
-
-/**
- * Executes the mcePreview command.
- */
-function TinyMCE_preview_execCommand(editor_id, element, command, user_interface, value)
{
- // Handle commands
- 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");
-
- // Use a custom preview page
- 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", 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 = "";
-
- html += '<!doctype html public "-//w3c//dtd html 4.0
transitional//en">';
- html += '<html>';
- html += '<head>';
- html += '<title>' + tinyMCE.getLang('lang_preview_desc') +
'</title>';
- html += '<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">';
- html += '<link href="' + tinyMCE.getParam("content_css") +
'" rel="stylesheet" type="text/css">';
- html += '<base href="' +
tinyMCE.getParam("document_base_url") + '">';
- html += '</head>';
- html += '<body>';
- html += tinyMCE.getContent();
- html += '</body>';
- html += '</html>';
-
- win.document.write(html);
- win.document.close();
- }
-
- return true;
- }
-
- // Pass to next handler in chain
- return false;
-}
+tinyMCE.importPluginLanguagePack('preview');var
TinyMCE_PreviewPlugin={getInfo:function(){return{longname:'Preview',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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('<body'),pos2,css=tinyMCE.getParam("content_css").split(',');if(pos!=-1){pos=c.indexOf('>',pos);pos2=c.lastIndexOf('</body>');c=c.substring(pos+1,pos2)}html+=tinyMCE.getParam('doctype');html+='<html
xmlns="http://www.w3.org/1999/xhtml">';html+='<he...
href="'+tinyMCE.settings['base_href']+'"
/>';html+='<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"
/>';for(i=0;i<css.length;i++)html+='<link
href="'+css[i]+'" rel="stylesheet" type="text/css"
/>';html+='<script
type="text/javascript">';html+='window.opener.TinyMCE_PreviewPlugin._setDoc(document);';html+='window.opener.TinyMCE_Previe!
wPlugin._setWin(window);';html+='writeFlash = window.opener.TinyMCE_Pr
eviewPlugin._writeFlash;';html+='writeShockWave =
window.opener.TinyMCE_PreviewPlugin._writeShockWave;';html+='writeQuickTime =
window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';html+='writeRealMedia =
window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';html+='writeWindowsMedia =
window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';html+='writeEmbed =
window.opener.TinyMCE_PreviewPlugin._writeEmbed;';html+='</script>';html+='</head>';html+='<body
dir="'+tinyMCE.getParam("directionality")+'"
onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';html+=c;html+='</body>';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<nl.length;i++){sv=tinyMCE.isMSIE?nl[i].innerHTML:nl[i].firstChild.n!
odeValue;if(new
RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*&...!
2BF25D5-8C17-4B23-BC80-D3488ABDDC6B','http://www.apple.com/qtacti...
tplugin.cab#version=6,0,2,0','video/quicktime',p)},_writeReal...
h='',n,d=TinyMCE_PreviewPlugin._doc,ne,c;h+='<object
classid="clsid:'+cls+'"
codebase="'+cb+'"';h+=typeof(p.id)!="undefined"?'id="'+p.id+'"':'';h+=typeof(p.name)!="undefined"?'name="'+p.name+'"':'';h+=typeof(p.width)!="undefined"?'width="'+p.width+'"':'';h+=typeof(p.height)!="undef!
ined"?'height="'+p.height+'"':'';h+=typeof(p.align)!="undefined"?'align="'+p.align+'"':'';h+='>';for(n
in p)h+='<param name="'+n+'"
value="'+p[n]+'">';h+='<embed
type="'+mt+'"';for(n in p)h+=n+'="'+p[n]+'"
';h+='></embed></object>';d._embeds[d._embeds.length]=h}};tinyMCE.addPlugin("preview",TinyMCE_PreviewPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,205 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('preview');
+
+var TinyMCE_PreviewPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Preview',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_preview.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ /**
+ * Returns the HTML contents of the preview control.
+ */
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "preview":
+ return tinyMCE.getButtonHTML(cn, 'lang_preview_desc',
'{$pluginurl}/images/preview.gif', 'mcePreview');
+ }
+
+ return "";
+ },
+
+ /**
+ * Executes the mcePreview command.
+ */
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ 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");
+
+ // Use a custom preview page
+ 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('<body'), pos2, css =
tinyMCE.getParam("content_css").split(',');
+
+ if (pos != -1) {
+ pos = c.indexOf('>', pos);
+ pos2 = c.lastIndexOf('</body>');
+ c = c.substring(pos + 1, pos2);
+ }
+
+ html += tinyMCE.getParam('doctype');
+ html += '<html
xmlns="http://www.w3.org/1999/xhtml">';
+ html += '<head>';
+ html += '<title>' + tinyMCE.getLang('lang_preview_desc') +
'</title>';
+ html += '<base href="' + tinyMCE.settings['base_href'] +
'" />';
+ html += '<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />';
+
+ for (i=0; i<css.length; i++)
+ html += '<link href="' + css[i] + '"
rel="stylesheet" type="text/css" />';
+
+ html += '<script type="text/javascript">';
+ html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
+ html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
+ html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
+ html += 'writeShockWave =
window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
+ html += 'writeQuickTime =
window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
+ html += 'writeRealMedia =
window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
+ html += 'writeWindowsMedia =
window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
+ html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
+ html += '</script>';
+ html += '</head>';
+ html += '<body dir="' + tinyMCE.getParam("directionality")
+ '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
+ html += c;
+ html += '</body>';
+ 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<nl.length; i++) {
+ sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
+
+ if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*',
'g').test(sv))
+ el[el.length] = nl[i];
+ }
+
+ for (i=0; i<el.length; i++) {
+ ne = d.createElement("div");
+ ne.innerHTML = d._embeds[i];
+ el[i].parentNode.insertBefore(ne.firstChild, el[i]);
+ }
+ },
+
+ _writeFlash : function(p) {
+ p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
p.src);
+ TinyMCE_PreviewPlugin._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
+ );
+ },
+
+ _writeShockWave : function(p) {
+ p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
p.src);
+ TinyMCE_PreviewPlugin._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
+ );
+ },
+
+ _writeQuickTime : function(p) {
+ p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
p.src);
+ TinyMCE_PreviewPlugin._writeEmbed(
+ '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+ 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+ 'video/quicktime',
+ p
+ );
+ },
+
+ _writeRealMedia : function(p) {
+ p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
p.src);
+ TinyMCE_PreviewPlugin._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
+ );
+ },
+
+ _writeWindowsMedia : function(p) {
+ p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
p.src);
+ p.url = p.src;
+ TinyMCE_PreviewPlugin._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
+ );
+ },
+
+ _writeEmbed : function(cls, cb, mt, p) {
+ var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
+
+ h += '<object classid="clsid:' + cls + '" codebase="'
+ cb + '"';
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id +
'"' : '';
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name +
'"' : '';
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width +
'"' : '';
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height +
'"' : '';
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align +
'"' : '';
+ h += '>';
+
+ for (n in p)
+ h += '<param name="' + n + '" value="' + p[n] +
'">';
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p)
+ h += n + '="' + p[n] + '" ';
+
+ h += '></embed></object>';
+
+ d._embeds[d._embeds.length] = h;
+ }
+};
+
+tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/example.html
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/example.html 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/example.html 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,9 +1,9 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript"
src="../../tiny_mce_popup.js"></script>
+<script type="text/javascript"
src="jscripts/embed.js"></script>
<title>Example of a custom preview page</title>
-<link href="{$content_css}" rel="stylesheet"
type="text/css">
+<link href="{$content_css}" rel="stylesheet"
type="text/css" />
</head>
<body>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/images/preview.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/jscripts/embed.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 += '<object classid="clsid:' + cls + '" codebase="'
+ cb + '"';
+ h += typeof(p.id) != "undefined" ? 'id="' + p.id +
'"' : '';
+ h += typeof(p.name) != "undefined" ? 'name="' + p.name +
'"' : '';
+ h += typeof(p.width) != "undefined" ? 'width="' + p.width +
'"' : '';
+ h += typeof(p.height) != "undefined" ? 'height="' + p.height +
'"' : '';
+ h += typeof(p.align) != "undefined" ? 'align="' + p.align +
'"' : '';
+ h += '>';
+
+ for (n in p)
+ h += '<param name="' + n + '" value="' + p[n] +
'">';
+
+ h += '<embed type="' + mt + '"';
+
+ for (n in p)
+ h += n + '="' + p[n] + '" ';
+
+ h += '></embed></object>';
+
+ document.write(h);
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+preview_desc : 'Preview'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/preview/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,23 +1 @@
- Preview plugin for TinyMCE
------------------------------------
-
-Installation instructions:
- * Copy the preview directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "preview".
- * Add the preview button name to button list, example: theme_advanced_buttons3_add :
"preview".
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "preview",
- theme_advanced_buttons3_add : "preview",
- plugin_preview_width : "500",
- plugin_preview_height : "600"
- });
-
-Configuration:
- plugin_preview_width - Preview window width. Defaults to 550.
- plugin_preview_height - Preview window height. Defaults to 600.
- plugin_preview_pageurl - Custom preview page URL relative from theme
- use "../../plugins/preview/example.html" for a
example.
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('print');var
TinyMCE_PrintPlugin={getInfo:function(){return{longname:'Print',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_print_desc','{$pluginurl}/images/print.gif','mcePrint')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return
true}return false}};tinyMCE.addPlugin("print",TinyMCE_PrintPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,47 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import theme specific language pack */
+tinyMCE.importPluginLanguagePack('print');
+
+var TinyMCE_PrintPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Print',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_print.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "print":
+ return tinyMCE.getButtonHTML(cn, 'lang_print_desc',
'{$pluginurl}/images/print.gif', 'mcePrint');
+ }
+
+ return "";
+ },
+
+ /**
+ * Executes the search/replace commands.
+ */
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ switch (command) {
+ case "mcePrint":
+ tinyMCE.getInstanceById(editor_id).contentWindow.print();
+ return true;
+ }
+
+ // Pass to next handler in chain
+ return false;
+ }
+};
+
+tinyMCE.addPlugin("print", TinyMCE_PrintPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/images/print.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+print_desc : 'Print'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/print/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('save');var
TinyMCE_SavePlugin={getInfo:function(){return{longname:'Save',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
tinyMCE.getButtonHTML(cn,'lang_save_desc','{$pluginurl}/images/save.gif','mceSave')}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceSave":if(tinyMCE.getParam("fullscreen_is_enabled"))return
true;var inst=tinyMCE.selectedInstance;var
formObj=inst.formElement.form;if(tinyMCE.getParam("save_enablewhendirty")&&!inst.isDirty())return
true;if(formObj){tinyMCE.triggerSave();var
os;if((os=tinyMCE.getParam("save_onsavecallback"))){if(eval(os+'(inst);')){inst.startContent=tinyMCE.trim(inst.get!
Body().innerHTML);tinyMCE.triggerNodeChange(false,true)}return true}for(var
i=0;i<formObj.elements.length;i++){var
elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true}tinyMCE.isNotDirty=true;if(formObj.onsubmit==null||formObj.onsubmit()!=false)inst.formElement.form.submit()}else
alert("Error: No form element found.");return true}return
false},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(tinyMCE.getParam("fullscreen_is_enabled")){tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled');return
true}if(tinyMCE.getParam("save_enablewhendirty")){var
inst=tinyMCE.getInstanceById(editor_id);if(inst.isDirty()){tinyMCE.switchClass(editor_id+'_save','mceButtonNormal');return
true}tinyMCE.switchClass(editor_id+'_save','mceButtonDisabled')}return
true}};tinyMCE.addPlugin("save",TinyMCE_SavePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,115 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('save');
+
+var TinyMCE_SavePlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Save',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://tinymce.moxiecode.com/tinymce/docs/plugin_save.html',
+ version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
+ };
+ },
+
+ initInstance : function(inst) {
+ inst.addShortcut('ctrl', 's', 'lang_save_desc',
'mceSave');
+ },
+
+ /**
+ * Returns the HTML contents of the save control.
+ */
+ getControlHTML : function(cn) {
+ switch (cn) {
+ case "save":
+ return tinyMCE.getButtonHTML(cn, 'lang_save_desc',
'{$pluginurl}/images/save.gif', 'mceSave');
+ }
+
+ return "";
+ },
+
+ /**
+ * Executes the save command.
+ */
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ // Handle commands
+ switch (command) {
+ case "mceSave":
+ if (tinyMCE.getParam("fullscreen_is_enabled"))
+ return true;
+
+ var inst = tinyMCE.selectedInstance;
+ var formObj = inst.formElement.form;
+
+ if (tinyMCE.getParam("save_enablewhendirty") && !inst.isDirty())
+ return true;
+
+ if (formObj) {
+ tinyMCE.triggerSave();
+
+ // Use callback instead
+ var os;
+ if ((os = tinyMCE.getParam("save_onsavecallback"))) {
+ if (eval(os + '(inst);')) {
+ inst.startContent = tinyMCE.trim(inst.getBody().innerHTML);
+ /*inst.undoLevels = new Array();
+ inst.undoIndex = 0;
+ inst.typingUndoIndex = -1;
+ inst.undoRedo = true;
+ inst.undoLevels[inst.undoLevels.length] = inst.startContent;*/
+ tinyMCE.triggerNodeChange(false, true);
+ }
+
+ return true;
+ }
+
+ // Disable all UI form elements that TinyMCE created
+ for (var i=0; i<formObj.elements.length; i++) {
+ var elementId = formObj.elements[i].name ? formObj.elements[i].name :
formObj.elements[i].id;
+
+ if (elementId.indexOf('mce_editor_') == 0)
+ formObj.elements[i].disabled = true;
+ }
+
+ tinyMCE.isNotDirty = true;
+
+ if (formObj.onsubmit == null || formObj.onsubmit() != false)
+ inst.formElement.form.submit();
+ } else
+ alert("Error: No form element found.");
+
+ return true;
+ }
+ // Pass to next handler in chain
+ return false;
+ },
+
+ handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid,
any_selection) {
+ if (tinyMCE.getParam("fullscreen_is_enabled")) {
+ tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
+ return true;
+ }
+
+ if (tinyMCE.getParam("save_enablewhendirty")) {
+ var inst = tinyMCE.getInstanceById(editor_id);
+
+ if (inst.isDirty()) {
+ tinyMCE.switchClass(editor_id + '_save', 'mceButtonNormal');
+ return true;
+ }
+
+ tinyMCE.switchClass(editor_id + '_save', 'mceButtonDisabled');
+ }
+
+ return true;
+ }
+};
+
+tinyMCE.addPlugin("save", TinyMCE_SavePlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/images/save.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+save_desc : 'Save'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/save/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/css/searchreplace.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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); }
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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(valu!
e[key])=="undefined"?default_value:value[key]}function
replaceSel(search_str,str,back){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"mceResetSearch":tinyMCE.lastSearchRng=null;return
true;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.execCommand('SelectAll');if(tinyMCE.isMSIE){var
r=inst.selection.getRng();r.collapse(true);r.select()}!
else inst.selection.getSel().collapseToStart();tinyMCE.openWindow(temp
late,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;if(body.innerHTML==""){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,false);return
true}if(tinyMCE.isMSIE){var
rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var
flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(!rng.findText){alert('This
operation is currently not supported by this browser.');return
true}if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string']!
,value['replacestring'],value['backwards'])}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return
true}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng}else
alert(tinyMCE.getLang('lang_searchreplace_notfound'))}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring'],value['backwards']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return
true}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))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("searchr!
eplace",TinyMCE_SearchReplacePlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,164 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_searchreplace.html',
+ 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) {
+ 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 "mceResetSearch" :
+ tinyMCE.lastSearchRng = null;
+ return true;
+
+ 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.execCommand('SelectAll');
+
+ if (tinyMCE.isMSIE) {
+ var r = inst.selection.getRng();
+ r.collapse(true);
+ r.select();
+ } else
+ inst.selection.getSel().collapseToStart();
+
+ 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;
+ if (body.innerHTML == "") {
+ 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,
false);
+ return true;
+ }
+
+ if (tinyMCE.isMSIE) {
+ var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng :
doc.selection.createRange();
+ var flags = 0;
+ if (value['wholeword'])
+ flags = flags | 2;
+
+ if (value['casesensitive'])
+ flags = flags | 4;
+
+ if (!rng.findText) {
+ alert('This operation is currently not supported by this browser.');
+ return true;
+ }
+
+ if (value['replacemode'] == "all") {
+ while (rng.findText(value['string'], value['backwards'] ? -1 : 1,
flags)) {
+ rng.scrollIntoView();
+ rng.select();
+ rng.collapse(false);
+ replaceSel(value['string'], value['replacestring'],
value['backwards']);
+ }
+
+ alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+ return true;
+ }
+
+ if (rng.findText(value['string'], value['backwards'] ? -1 : 1,
flags)) {
+ rng.scrollIntoView();
+ rng.select();
+ rng.collapse(value['backwards']);
+ tinyMCE.lastSearchRng = rng;
+ } else
+ alert(tinyMCE.getLang('lang_searchreplace_notfound'));
+
+ } else {
+ if (value['replacemode'] == "all") {
+ while (win.find(value['string'], value['casesensitive'],
value['backwards'], value['wrap'], value['wholeword'], false,
false))
+ replaceSel(value['string'], value['replacestring'],
value['backwards']);
+
+ alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
+ return true;
+ }
+
+ if (!win.find(value['string'], value['casesensitive'],
value['backwards'], value['wrap'], value['wholeword'], false,
false))
+ 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_all_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/replace_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/images/search.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/jscripts/searchreplace.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,85 @@
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ // start with appropiate tab
+ var task = (tinyMCE.getWindowArg("replacestring") != null) ?
"replace" : "search";
+ mcTabs.displayTab(task + '_tab', task +'_panel');
+ manageReplaceButtons();
+
+ var formObj = document.forms[0];
+
+ formObj[task + "_panel_searchstring"].value =
tinyMCE.getWindowArg("searchstring");
+ formObj["replace_panel_replacestring"].value =
(tinyMCE.getWindowArg("replacestring") != null) ?
tinyMCE.getWindowArg("replacestring") : "";
+ formObj[task + "_panel_casesensitivebox"].checked =
tinyMCE.getWindowArg("casesensitive");
+ formObj[task + "_panel_backwardsu"].checked =
tinyMCE.getWindowArg("backwards");
+ formObj[task + "_panel_backwardsd"].checked =
!tinyMCE.getWindowArg("backwards");
+
+ tinyMCEPopup.execCommand("mceResetSearch", false, {dummy : ""},
false);
+}
+
+function searchNext(replacemode) {
+ // "search" or "replace" mode of operation?
+ var task = (document.getElementById("search_tab").className ==
"current") ? "search" : "replace";
+
+ var formObj = document.forms[0];
+
+ if (task == "replace") {
+ // Whats the point?
+ if (formObj[task + "_panel_searchstring"].value == "" ||
formObj[task + "_panel_searchstring"].value == formObj[task +
"_panel_replacestring"].value)
+ return;
+ }
+
+ // Do search
+ tinyMCEPopup.execCommand('mceSearch', false, {
+ string : formObj[task + "_panel_searchstring"].value,
+ replacestring : formObj["replace_panel_replacestring"].value,
+ replacemode : replacemode,
+ casesensitive : formObj[task + "_panel_casesensitivebox"].checked,
+ backwards : false
+ }, false);
+
+ window.focus();
+}
+
+function cancelAction() {
+ tinyMCEPopup.close();
+}
+
+function manageReplaceButtons() {
+ // "search" or "replace" mode of operation?
+ var task = (document.getElementById("search_tab").className ==
"current") ? "search" : "replace";
+ document.getElementById("replace_buttons").style.visibility = (task ==
"replace") ? "visible" : "hidden";
+}
+
+function copyValues(link) {
+ // check if tab is already active
+ var tab = link;
+ while (tab.tagName && tab.tagName.toLowerCase() != "li") tab =
tab.parentNode;
+ if (tab.className) return false; // tab is already active -> 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/searchreplace/searchreplace.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,104 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_searchreplace_replace_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/searchreplace.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/searchreplace.css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none; margin: 4px;">
+<form onsubmit="return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="search_tab"><span><a
href="javascript:mcTabs.displayTab('search_tab','search_panel');manageReplaceButtons();"
onmousedown="return
copyValues(this);">{$lang_searchreplace_search_desc}</a></span></li>
+ <li id="replace_tab"><span><a
href="javascript:mcTabs.displayTab('replace_tab','replace_panel');manageReplaceButtons();"
onmousedown="return
copyValues(this);">{$lang_searchreplace_replace}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+
+ <div id="search_panel" class="panel">
+ <table border="0" cellspacing="0"
cellpadding="2">
+ <tr>
+ <td><label
for="search_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
+ <td><input type="text" id="search_panel_searchstring"
name="search_panel_searchstring" style="width: 200px"
/></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0"
class="direction">
+ <tr>
+ <td><label>{$lang_searchreplace_direction}</label></td>
+ <td><input id="search_panel_backwardsu"
name="search_panel_backwards" class="radio" type="radio"
/></td>
+ <td><label
for="search_panel_backwardsu">{$lang_searchreplace_up}</label></td>
+ <td><input id="search_panel_backwardsd"
name="search_panel_backwards" class="radio" type="radio"
/></td>
+ <td><label
for="search_panel_backwardsd">{$lang_searchreplace_down}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="search_panel_casesensitivebox"
name="search_panel_casesensitivebox" class="checkbox"
type="checkbox" /></td>
+ <td><label
for="search_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ <div id="replace_panel" class="panel">
+ <table border="0" cellspacing="0"
cellpadding="2">
+ <tr>
+ <td><label
for="replace_panel_searchstring">{$lang_searchreplace_findwhat}</label></td>
+ <td><input type="text" id="replace_panel_searchstring"
name="replace_panel_searchstring" style="width: 200px"
/></td>
+ </tr>
+ <tr>
+ <td><label
for="replace_panel_replacestring">{$lang_searchreplace_replacewith}</label></td>
+ <td><input type="text" id="replace_panel_replacestring"
name="replace_panel_replacestring" style="width: 200px"
/></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0" cellpadding="0"
class="direction">
+ <tr>
+ <td><label>{$lang_searchreplace_direction}</label></td>
+ <td><input id="replace_panel_backwardsu"
name="replace_panel_backwards" class="radio" type="radio"
/></td>
+ <td><label
for="replace_panel_backwardsu">{$lang_searchreplace_up}</label></td>
+ <td><input id="replace_panel_backwardsd"
name="replace_panel_backwards" class="radio" type="radio"
/></td>
+ <td><label
for="replace_panel_backwardsd">{$lang_searchreplace_down}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="replace_panel_casesensitivebox"
name="replace_panel_casesensitivebox" class="checkbox"
type="checkbox" /></td>
+ <td><label
for="replace_panel_casesensitivebox">{$lang_searchreplace_case}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </div>
+
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="text-align: center;">
+ <input type="button" id="insert" name="insert"
value="{$lang_searchreplace_findnext}"
onclick="searchNext('none');" />
+ <span id="replace_buttons">
+ <input type="button" id="replaceBtn"
name="replaceBtn" value="{$lang_searchreplace_replace}"
onclick="searchNext('current');" />
+ <input type="button" id="replaceAllBtn"
name="replaceAllBtn" value="{$lang_searchreplace_replaceall}"
onclick="searchNext('all');;" />
+ </span>
+ <input type="button" id="cancel" name="cancel"
value="{$lang_searchreplace_cancel}" onclick="tinyMCEPopup.close();"
/>
+ </div>
+ </div>
+</form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/css/props.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/css/props.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/css/props.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
+
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('style');var
TinyMCE_StylePlugin={getInfo:function(){return{longname:'Style',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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){},_styleProps:function(){var
e=tinyMCE.selectedInstance.selection.getFocusE!
lement();if(!e)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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,79 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_style.html',
+ 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) {
+ },
+
+ // Private plugin specific methods
+
+ _styleProps : function() {
+ var e = tinyMCE.selectedInstance.selection.getFocusElement();
+
+ if (!e)
+ 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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/apply_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/style_info.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/images/styleprops.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/jscripts/props.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,633 @@
+var defaultFonts = "" +
+ "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Courier New, Courier, mono=Courier New, Courier, mono;" +
+ "Times New Roman, Times, serif=Times New Roman, Times, serif;" +
+ "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times,
serif;" +
+ "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;"
+
+ "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif";
+
+var defaultSizes =
"9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger";
+var defaultMeasurement = "+pixels=px;points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultSpacingMeasurement =
"pixels=px;points=pt;in;cm;mm;picas;+ems;exs;%";
+var defaultIndentMeasurement =
"pixels=px;+points=pt;in;cm;mm;picas;ems;exs;%";
+var defaultWeight =
"normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900";
+var defaultTextStyle = "normal;italic;oblique";
+var defaultVariant = "normal;small-caps";
+var defaultLineHeight = "normal";
+var defaultAttachment = "fixed;scroll";
+var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y";
+var defaultPosH = "left;center;right";
+var defaultPosV = "top;center;bottom";
+var defaultVAlign =
"baseline;sub;super;top;text-top;middle;bottom;text-bottom";
+var defaultDisplay =
"inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none";
+var defaultBorderStyle =
"none;solid;dashed;dotted;double;groove;ridge;inset;outset";
+var defaultBorderWidth = "thin;medium;thick";
+var defaultListType =
"disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none";
+
+function init() {
+ var ce = document.getElementById('container'), h;
+
+ ce.style.cssText = tinyMCEPopup.getWindowArg('style_text');
+
+ h =
getBrowserHTML('background_image_browser','background_image','image','advimage');
+ document.getElementById("background_image_browser").innerHTML = h;
+
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('text_color_pickcontainer').innerHTML =
getColorPickerHTML('text_color_pick','text_color');
+ document.getElementById('background_color_pickcontainer').innerHTML =
getColorPickerHTML('background_color_pick','background_color');
+ document.getElementById('border_color_top_pickcontainer').innerHTML =
getColorPickerHTML('border_color_top_pick','border_color_top');
+ document.getElementById('border_color_right_pickcontainer').innerHTML =
getColorPickerHTML('border_color_right_pick','border_color_right');
+ document.getElementById('border_color_bottom_pickcontainer').innerHTML =
getColorPickerHTML('border_color_bottom_pick','border_color_bottom');
+ document.getElementById('border_color_left_pickcontainer').innerHTML =
getColorPickerHTML('border_color_left_pick','border_color_left');
+
+ fillSelect(0, 'text_font', 'style_font', defaultFonts, ';',
true);
+ fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';',
true);
+ fillSelect(0, 'text_size_measurement', 'style_font_size_measurement',
defaultMeasurement, ';', true);
+ fillSelect(0, 'text_case', 'style_text_case',
"capitalize;uppercase;lowercase", ';', true);
+ fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight,
';', true);
+ fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle,
';', true);
+ fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant,
';', true);
+ fillSelect(0, 'text_lineheight', 'style_font_line_height',
defaultLineHeight, ';', true);
+ fillSelect(0, 'text_lineheight_measurement',
'style_font_line_height_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_attachment', 'style_background_attachment',
defaultAttachment, ';', true);
+ fillSelect(0, 'background_repeat', 'style_background_repeat',
defaultRepeat, ';', true);
+
+ fillSelect(0, 'background_hpos_measurement',
'style_background_hpos_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'background_vpos_measurement',
'style_background_vpos_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH,
';', true);
+ fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV,
';', true);
+
+ fillSelect(0, 'block_wordspacing', 'style_wordspacing',
'normal', ';', true);
+ fillSelect(0, 'block_wordspacing_measurement',
'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_letterspacing', 'style_letterspacing',
'normal', ';', true);
+ fillSelect(0, 'block_letterspacing_measurement',
'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true);
+ fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment',
defaultVAlign, ';', true);
+ fillSelect(0, 'block_text_align', 'style_text_align',
"left;right;center;justify", ';', true);
+ fillSelect(0, 'block_whitespace', 'style_whitespace',
"normal;pre;nowrap", ';', true);
+ fillSelect(0, 'block_display', 'style_display', defaultDisplay,
';', true);
+ fillSelect(0, 'block_text_indent_measurement',
'style_text_indent_measurement', defaultIndentMeasurement, ';', true);
+
+ fillSelect(0, 'box_width_measurement', 'style_box_width_measurement',
defaultMeasurement, ';', true);
+ fillSelect(0, 'box_height_measurement', 'style_box_height_measurement',
defaultMeasurement, ';', true);
+ fillSelect(0, 'box_float', 'style_float', 'left;right;none',
';', true);
+ fillSelect(0, 'box_clear', 'style_clear',
'left;right;both;none', ';', true);
+ fillSelect(0, 'box_padding_left_measurement',
'style_padding_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_top_measurement',
'style_padding_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_bottom_measurement',
'style_padding_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_padding_right_measurement',
'style_padding_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_left_measurement',
'style_margin_left_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_top_measurement',
'style_margin_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_bottom_measurement',
'style_margin_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'box_margin_right_measurement',
'style_margin_right_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'border_style_top', 'style_border_style_top',
defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_right', 'style_border_style_right',
defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_bottom', 'style_border_style_bottom',
defaultBorderStyle, ';', true);
+ fillSelect(0, 'border_style_left', 'style_border_style_left',
defaultBorderStyle, ';', true);
+
+ fillSelect(0, 'border_width_top', 'style_border_width_top',
defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_right', 'style_border_width_right',
defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_bottom', 'style_border_width_bottom',
defaultBorderWidth, ';', true);
+ fillSelect(0, 'border_width_left', 'style_border_width_left',
defaultBorderWidth, ';', true);
+
+ fillSelect(0, 'border_width_top_measurement',
'style_border_width_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_right_measurement',
'style_border_width_right_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_bottom_measurement',
'style_border_width_bottom_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'border_width_left_measurement',
'style_border_width_left_measurement', defaultMeasurement, ';', true);
+
+ fillSelect(0, 'list_type', 'style_list_type', defaultListType,
';', true);
+ fillSelect(0, 'list_position', 'style_list_position',
"inside;outside", ';', true);
+
+ fillSelect(0, 'positioning_type', 'style_positioning_type',
"absolute;relative;static", ';', true);
+ fillSelect(0, 'positioning_visibility', 'style_positioning_visibility',
"inherit;visible;hidden", ';', true);
+
+ fillSelect(0, 'positioning_width_measurement',
'style_positioning_width_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_height_measurement',
'style_positioning_height_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_overflow', 'style_positioning_overflow',
"visible;hidden;scroll;auto", ';', true);
+
+ fillSelect(0, 'positioning_placement_top_measurement',
'style_positioning_placement_top_measurement', defaultMeasurement, ';',
true);
+ fillSelect(0, 'positioning_placement_right_measurement',
'style_positioning_placement_right_measurement', defaultMeasurement, ';',
true);
+ fillSelect(0, 'positioning_placement_bottom_measurement',
'style_positioning_placement_bottom_measurement', defaultMeasurement, ';',
true);
+ fillSelect(0, 'positioning_placement_left_measurement',
'style_positioning_placement_left_measurement', defaultMeasurement, ';',
true);
+
+ fillSelect(0, 'positioning_clip_top_measurement',
'style_positioning_clip_top_measurement', defaultMeasurement, ';', true);
+ fillSelect(0, 'positioning_clip_right_measurement',
'style_positioning_clip_right_measurement', defaultMeasurement, ';',
true);
+ fillSelect(0, 'positioning_clip_bottom_measurement',
'style_positioning_clip_bottom_measurement', defaultMeasurement, ';',
true);
+ fillSelect(0, 'positioning_clip_left_measurement',
'style_positioning_clip_left_measurement', defaultMeasurement, ';',
true);
+
+ TinyMCE_EditableSelects.init();
+ setupFormData();
+ showDisabledControls();
+}
+
+function setupFormData() {
+ var ce = document.getElementById('container'), f = document.forms[0], s, b, i;
+
+ // Setup text fields
+
+ selectByValue(f, 'text_font', ce.style.fontFamily, true, true);
+ selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true);
+ selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize));
+ selectByValue(f, 'text_weight', ce.style.fontWeight, true, true);
+ selectByValue(f, 'text_style', ce.style.fontStyle, true, true);
+ selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true);
+ selectByValue(f, 'text_lineheight_measurement',
getMeasurement(ce.style.lineHeight));
+ selectByValue(f, 'text_case', ce.style.textTransform, true, true);
+ selectByValue(f, 'text_variant', ce.style.fontVariant, true, true);
+ f.text_color.value = ce.style.color;
+ updateColor('text_color_pick', 'text_color');
+ f.text_underline.checked = inStr(ce.style.textDecoration, 'underline');
+ f.text_overline.checked = inStr(ce.style.textDecoration, 'overline');
+ f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through');
+ f.text_blink.checked = inStr(ce.style.textDecoration, 'blink');
+
+ // Setup background fields
+
+ f.background_color.value = ce.style.backgroundColor;
+ updateColor('background_color_pick', 'background_color');
+ f.background_image.value = ce.style.backgroundImage.replace(new
RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+ selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true);
+ selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true,
true);
+ selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition,
0)), true, true);
+ selectByValue(f, 'background_hpos_measurement',
getMeasurement(getVal(ce.style.backgroundPosition, 0)));
+ selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition,
1)), true, true);
+ selectByValue(f, 'background_vpos_measurement',
getMeasurement(getVal(ce.style.backgroundPosition, 1)));
+
+ // Setup block fields
+
+ selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true,
true);
+ selectByValue(f, 'block_wordspacing_measurement',
getMeasurement(ce.style.wordSpacing));
+ selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true,
true);
+ selectByValue(f, 'block_letterspacing_measurement',
getMeasurement(ce.style.letterSpacing));
+ selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true,
true);
+ selectByValue(f, 'block_text_align', ce.style.textAlign, true, true);
+ f.block_text_indent.value = getNum(ce.style.textIndent);
+ selectByValue(f, 'block_text_indent_measurement',
getMeasurement(ce.style.textIndent));
+ selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true);
+ selectByValue(f, 'block_display', ce.style.display, true, true);
+
+ // Setup box fields
+
+ f.box_width.value = getNum(ce.style.width);
+ selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width));
+
+ f.box_height.value = getNum(ce.style.height);
+ selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height));
+
+ if (tinyMCE.isGecko)
+ selectByValue(f, 'box_float', ce.style.cssFloat, true, true);
+ else
+ selectByValue(f, 'box_float', ce.style.styleFloat, true, true);
+
+ selectByValue(f, 'box_clear', ce.style.clear, true, true);
+
+ setupBox(f, ce, 'box_padding', 'padding', '');
+ setupBox(f, ce, 'box_margin', 'margin', '');
+
+ // Setup border fields
+
+ setupBox(f, ce, 'border_style', 'border', 'Style');
+ setupBox(f, ce, 'border_width', 'border', 'Width');
+ setupBox(f, ce, 'border_color', 'border', 'Color');
+
+ updateColor('border_color_top_pick', 'border_color_top');
+ updateColor('border_color_right_pick', 'border_color_right');
+ updateColor('border_color_bottom_pick', 'border_color_bottom');
+ updateColor('border_color_left_pick', 'border_color_left');
+
+ // Setup list fields
+
+ selectByValue(f, 'list_type', ce.style.listStyleType, true, true);
+ selectByValue(f, 'list_position', ce.style.listStylePosition, true, true);
+ f.list_bullet_image.value = ce.style.listStyleImage.replace(new
RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
+
+ // Setup box fields
+
+ selectByValue(f, 'positioning_type', ce.style.position, true, true);
+ selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true);
+ selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true);
+ f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : "";
+
+ f.positioning_width.value = getNum(ce.style.width);
+ selectByValue(f, 'positioning_width_measurement',
getMeasurement(ce.style.width));
+
+ f.positioning_height.value = getNum(ce.style.height);
+ selectByValue(f, 'positioning_height_measurement',
getMeasurement(ce.style.height));
+
+ setupBox(f, ce, 'positioning_placement', '', '', new
Array('top', 'right', 'bottom', 'left'));
+
+ s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)",
'gi'), "$1");
+ s = s.replace(/,/g, ' ');
+
+ if (!hasEqualValues(new Array(getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3))))
{
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s,
0)));
+ f.positioning_clip_right.value = getNum(getVal(s, 1));
+ selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s,
1)));
+ f.positioning_clip_bottom.value = getNum(getVal(s, 2));
+ selectByValue(f, 'positioning_clip_bottom_measurement',
getMeasurement(getVal(s, 2)));
+ f.positioning_clip_left.value = getNum(getVal(s, 3));
+ selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s,
3)));
+ } else {
+ f.positioning_clip_top.value = getNum(getVal(s, 0));
+ selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s,
0)));
+ f.positioning_clip_right.value = f.positioning_clip_bottom.value =
f.positioning_clip_left.value;
+ }
+
+// setupBox(f, ce, '', 'border', 'Color');
+}
+
+function getMeasurement(s) {
+ return s.replace(/^([0-9]+)(.*)$/, "$2");
+}
+
+function getNum(s) {
+ if (new RegExp('^[0-9]+[a-z%]+$', 'gi').test(s))
+ return s.replace(/[^0-9]/g, '');
+
+ return s;
+}
+
+function inStr(s, n) {
+ return new RegExp(n, 'gi').test(s);
+}
+
+function getVal(s, i) {
+ var a = tinyMCE.explode(' ', s);
+
+ if (a.length > 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<a.length; i++) {
+ if (a[i] == null)
+ return false;
+
+ for (x=0; x<a.length; x++) {
+ if (a[x] != a[i])
+ return false;
+ }
+ }
+
+ return true;
+};
+
+function hasEqualValues(a) {
+ var i, x;
+
+ for (i=0; i<a.length; i++) {
+ if (a[i] == null)
+ return false;
+
+ for (x=0; x<a.length; x++) {
+ if (a[x] != a[i])
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function applyAction() {
+ var ce = document.getElementById('container');
+
+ generateCSS();
+
+ tinyMCEPopup.execCommand('mceSetElementStyle', false,
tinyMCE.serializeStyle(tinyMCE.parseStyle(ce.style.cssText)));
+}
+
+function updateAction() {
+ applyAction();
+ tinyMCEPopup.close();
+}
+
+function generateCSS() {
+ var ce = document.getElementById('container'), f = document.forms[0], num = new
RegExp('[0-9]+', 'g'), s, t;
+
+ ce.style.cssText = "";
+
+ // Build text styles
+ ce.style.fontFamily = f.text_font.value;
+ ce.style.fontSize = f.text_size.value + (isNum(f.text_size.value) ?
f.text_size_measurement.value : "");
+ ce.style.fontStyle = f.text_style.value;
+ ce.style.lineHeight = f.text_lineheight.value + (isNum(f.text_lineheight.value) ?
f.text_lineheight_measurement.value : "");
+ ce.style.textTransform = f.text_case.value;
+ ce.style.fontWeight = f.text_weight.value;
+ ce.style.fontVariant = f.text_variant.value;
+ ce.style.color = f.text_color.value;
+
+ s = "";
+ s += f.text_underline.checked ? " underline" : "";
+ s += f.text_overline.checked ? " overline" : "";
+ s += f.text_linethrough.checked ? " line-through" : "";
+ s += f.text_blink.checked ? " blink" : "";
+ s = s.length > 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<f.length; i++) {
+ for (a=0; a<f[i].elements.length; a++) {
+ if (f[i].elements[a].disabled)
+ tinyMCE.addCSSClass(f[i].elements[a], "disabled");
+ else
+ tinyMCE.removeCSSClass(f[i].elements[a], "disabled");
+ }
+ }
+}
+
+function fillSelect(f, s, param, dval, sep, em) {
+ var i, ar, p, se;
+
+ f = document.forms[f];
+ sep = typeof(sep) == "undefined" ? ";" : sep;
+
+ if (em)
+ addSelectValue(f, s, "", "");
+
+ ar = tinyMCE.getParam(param, dval).split(sep);
+ for (i=0; i<ar.length; i++) {
+ se = false;
+
+ if (ar[i].charAt(0) == '+') {
+ ar[i] = ar[i].substring(1);
+ se = true;
+ }
+
+ p = ar[i].split('=');
+
+ if (p.length > 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);
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/props.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/props.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/props.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,698 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_style_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/props.js"></script>
+ <link href="css/props.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+
+<body id="styleprops"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+<form onsubmit="updateAction();return false;" action="#">
+<div class="tabs">
+ <ul>
+ <li id="text_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('text_tab','text_panel');"
onmousedown="return
false;">{$lang_style_text_tab}</a></span></li>
+ <li id="background_tab"><span><a
href="javascript:mcTabs.displayTab('background_tab','background_panel');"
onmousedown="return
false;">{$lang_style_background_tab}</a></span></li>
+ <li id="block_tab"><span><a
href="javascript:mcTabs.displayTab('block_tab','block_panel');"
onmousedown="return
false;">{$lang_style_block_tab}</a></span></li>
+ <li id="box_tab"><span><a
href="javascript:mcTabs.displayTab('box_tab','box_panel');"
onmousedown="return
false;">{$lang_style_box_tab}</a></span></li>
+ <li id="border_tab"><span><a
href="javascript:mcTabs.displayTab('border_tab','border_panel');"
onmousedown="return
false;">{$lang_style_border_tab}</a></span></li>
+ <li id="list_tab"><span><a
href="javascript:mcTabs.displayTab('list_tab','list_panel');"
onmousedown="return
false;">{$lang_style_list_tab}</a></span></li>
+ <li id="positioning_tab"><span><a
href="javascript:mcTabs.displayTab('positioning_tab','positioning_panel');"
onmousedown="return
false;">{$lang_style_positioning_tab}</a></span></li>
+ </ul>
+</div>
+
+<div class="panel_wrapper">
+<div id="text_panel" class="panel current">
+ <table border="0" width="100%">
+ <tr>
+ <td><label
for="text_font">{$lang_style_text_font}</label></td>
+ <td colspan="3">
+ <select id="text_font" name="text_font"
class="mceEditableSelect"
onchange="alert(this.options[this.selectedIndex].value);"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="text_size">{$lang_style_text_size}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><select id="text_size" name="text_size"
class="mceEditableSelect"></select></td>
+ <td> <select id="text_size_measurement"
name="text_size_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td><label
for="text_weight">{$lang_style_text_weight}</label></td>
+ <td>
+ <select id="text_weight"
name="text_weight"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="text_style">{$lang_style_text_style}</label></td>
+ <td>
+ <select id="text_style" name="text_style"
class="mceEditableSelect"></select>
+ </td>
+ <td><label
for="text_variant">{$lang_style_text_variant}</label></td>
+ <td>
+ <select id="text_variant"
name="text_variant"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="text_lineheight">{$lang_style_text_lineheight}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td>
+ <select id="text_lineheight" name="text_lineheight"
class="mceEditableSelect"></select>
+ </td>
+ <td> <select id="text_lineheight_measurement"
name="text_lineheight_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td><label
for="text_case">{$lang_style_text_case}</label></td>
+ <td>
+ <select id="text_case" name="text_case"></select>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="text_color">{$lang_style_text_color}</label></td>
+ <td colspan="2">
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="text_color" name="text_color"
type="text" value="" size="9"
onchange="updateColor('text_color_pick','text_color');"
/></td>
+ <td id="text_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_text_decoration}</td>
+ <td colspan="2">
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="text_underline" name="text_underline"
class="checkbox" type="checkbox" /></td>
+ <td><label
for="text_underline">{$lang_style_text_underline}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_overline" name="text_overline"
class="checkbox" type="checkbox" /></td>
+ <td><label
for="text_overline">{$lang_style_text_overline}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_linethrough"
name="text_linethrough" class="checkbox" type="checkbox"
/></td>
+ <td><label
for="text_linethrough">{$lang_style_text_striketrough}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_blink" name="text_blink"
class="checkbox" type="checkbox" /></td>
+ <td><label
for="text_blink">{$lang_style_text_blink}</label></td>
+ </tr>
+ <tr>
+ <td><input id="text_none" name="text_none"
class="checkbox" type="checkbox" /></td>
+ <td><label
for="text_none">{$lang_style_text_none}</label></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</div>
+
+<div id="background_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label
for="background_color">{$lang_style_background_color}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="background_color"
name="background_color" type="text" value=""
size="9"
onchange="updateColor('background_color_pick','background_color');"
/></td>
+ <td id="background_color_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="background_image">{$lang_style_background_image}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="background_image"
name="background_image" type="text" /></td>
+ <td id="background_image_browser"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="background_repeat">{$lang_style_background_repeat}</label></td>
+ <td><select id="background_repeat"
name="background_repeat"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="background_attachment">{$lang_style_background_attachment}</label></td>
+ <td><select id="background_attachment"
name="background_attachment"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="background_hpos">{$lang_style_background_hpos}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><select id="background_hpos"
name="background_hpos"
class="mceEditableSelect"></select></td>
+ <td> <select id="background_hpos_measurement"
name="background_hpos_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="background_vpos">{$lang_style_background_vpos}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><select id="background_vpos"
name="background_vpos"
class="mceEditableSelect"></select></td>
+ <td> <select id="background_vpos_measurement"
name="background_vpos_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+</div>
+
+<div id="block_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label
for="block_wordspacing">{$lang_style_block_wordspacing}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><select id="block_wordspacing"
name="block_wordspacing"
class="mceEditableSelect"></select></td>
+ <td> <select id="block_wordspacing_measurement"
name="block_wordspacing_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_letterspacing">{$lang_style_block_letterspacing}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><select id="block_letterspacing"
name="block_letterspacing"
class="mceEditableSelect"></select></td>
+ <td> <select id="block_letterspacing_measurement"
name="block_letterspacing_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_vertical_alignment">{$lang_style_block_vertical_alignment}</label></td>
+ <td><select id="block_vertical_alignment"
name="block_vertical_alignment"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_text_align">{$lang_style_block_text_align}</label></td>
+ <td><select id="block_text_align" name="block_text_align"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_text_indent">{$lang_style_block_text_indent}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="block_text_indent"
name="block_text_indent" /></td>
+ <td> <select id="block_text_indent_measurement"
name="block_text_indent_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_whitespace">{$lang_style_block_whitespace}</label></td>
+ <td><select id="block_whitespace" name="block_whitespace"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="block_display">{$lang_style_block_display}</label></td>
+ <td><select id="block_display" name="block_display"
class="mceEditableSelect"></select></td>
+ </tr>
+ </table>
+</div>
+
+<div id="box_panel" class="panel">
+<table border="0">
+ <tr>
+ <td><label
for="box_width">{$lang_style_box_width}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_width"
name="box_width" class="mceEditableSelect"
onchange="synch('box_width','positioning_width');"
/></td>
+ <td> <select id="box_width_measurement"
name="box_width_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td> <label
for="box_float">{$lang_style_box_float}</label></td>
+ <td><select id="box_float" name="box_float"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="box_height">{$lang_style_box_height}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_height"
name="box_height" class="mceEditableSelect"
onchange="synch('box_height','positioning_height');"
/></td>
+ <td> <select id="box_height_measurement"
name="box_height_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td> <label
for="box_clear">{$lang_style_box_clear}</label></td>
+ <td><select id="box_clear" name="box_clear"
class="mceEditableSelect"></select></td>
+ </tr>
+</table>
+<div style="float: left; width: 49%">
+ <fieldset>
+ <legend>{$lang_style_padding}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="box_padding_same"
name="box_padding_same" class="checkbox" checked="checked"
onclick="toggleSame(this,'box_padding');" /> <label
for="box_padding_same">{$lang_style_same}</label></td>
+ </tr>
+ <tr>
+ <td><label
for="box_padding_top">{$lang_style_top}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_top"
name="box_padding_top" class="mceEditableSelect" /></td>
+ <td> <select id="box_padding_top_measurement"
name="box_padding_top_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_padding_right">{$lang_style_right}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_right"
name="box_padding_right" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_padding_right_measurement"
name="box_padding_right_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_padding_bottom">{$lang_style_bottom}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_bottom"
name="box_padding_bottom" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_padding_bottom_measurement"
name="box_padding_bottom_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_padding_left">{$lang_style_left}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_padding_left"
name="box_padding_left" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_padding_left_measurement"
name="box_padding_left_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+ <fieldset>
+ <legend>{$lang_style_margin}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="box_margin_same"
name="box_margin_same" class="checkbox" checked="checked"
onclick="toggleSame(this,'box_margin');" /> <label
for="box_margin_same">{$lang_style_same}</label></td>
+ </tr>
+ <tr>
+ <td><label
for="box_margin_top">{$lang_style_top}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_top"
name="box_margin_top" class="mceEditableSelect" /></td>
+ <td> <select id="box_margin_top_measurement"
name="box_margin_top_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_margin_right">{$lang_style_right}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_right"
name="box_margin_right" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_margin_right_measurement"
name="box_margin_right_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_margin_bottom">{$lang_style_bottom}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_bottom"
name="box_margin_bottom" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_margin_bottom_measurement"
name="box_margin_bottom_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td><label
for="box_margin_left">{$lang_style_left}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="box_margin_left"
name="box_margin_left" class="mceEditableSelect"
disabled="disabled" /></td>
+ <td> <select id="box_margin_left_measurement"
name="box_margin_left_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+<br style="clear: both" />
+</div>
+
+<div id="border_panel" class="panel">
+<table border="0" cellspacing="0" cellpadding="0"
width="100%">
+<tr>
+ <td class="tdelim"> </td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{$lang_style_style}</td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{$lang_style_width}</td>
+ <td class="tdelim delim"> </td>
+ <td class="tdelim">{$lang_style_color}</td>
+</tr>
+
+<tr>
+ <td> </td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_style_same"
name="border_style_same" class="checkbox" checked="checked"
onclick="toggleSame(this,'border_style');" /> <label
for="border_style_same">{$lang_style_same}</label></td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_width_same"
name="border_width_same" class="checkbox" checked="checked"
onclick="toggleSame(this,'border_width');" /> <label
for="border_width_same">{$lang_style_same}</label></td>
+ <td class="delim"> </td>
+ <td><input type="checkbox" id="border_color_same"
name="border_color_same" class="checkbox" checked="checked"
onclick="toggleSame(this,'border_color');" /> <label
for="border_color_same">{$lang_style_same}</label></td>
+</tr>
+
+<tr>
+ <td>{$lang_style_top}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_top" name="border_style_top"
class="mceEditableSelect"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_top"
name="border_width_top"
class="mceEditableSelect"></select></td>
+ <td> <select id="border_width_top_measurement"
name="border_width_top_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_top" name="border_color_top"
type="text" value="" size="9"
onchange="updateColor('border_color_top_pick','border_color_top');"
/></td>
+ <td id="border_color_top_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{$lang_style_right}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_right"
name="border_style_right" class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_right"
name="border_width_right" class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td> <select id="border_width_right_measurement"
name="border_width_right_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_right"
name="border_color_right" type="text" value=""
size="9"
onchange="updateColor('border_color_right_pick','border_color_right');"
disabled="disabled" /></td>
+ <td id="border_color_right_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{$lang_style_bottom}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_bottom"
name="border_style_bottom" class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_bottom"
name="border_width_bottom" class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td> <select id="border_width_bottom_measurement"
name="border_width_bottom_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_bottom"
name="border_color_bottom" type="text" value=""
size="9"
onchange="updateColor('border_color_bottom_pick','border_color_bottom');"
disabled="disabled" /></td>
+ <td id="border_color_bottom_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+
+<tr>
+ <td>{$lang_style_left}</td>
+ <td class="delim"> </td>
+ <td><select id="border_style_left" name="border_style_left"
class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td><select id="border_width_left"
name="border_width_left" class="mceEditableSelect"
disabled="disabled"></select></td>
+ <td> <select id="border_width_left_measurement"
name="border_width_left_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ <td class="delim"> </td>
+ <td>
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td><input id="border_color_left"
name="border_color_left" type="text" value=""
size="9"
onchange="updateColor('border_color_left_pick','border_color_left');"
disabled="disabled" /></td>
+ <td id="border_color_left_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+</div>
+
+<div id="list_panel" class="panel">
+ <table border="0">
+ <tr>
+ <td><label
for="list_type">{$lang_style_list_type}</label></td>
+ <td><select id="list_type" name="list_type"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="list_bullet_image">{$lang_style_bullet_image}</label></td>
+ <td><input id="list_bullet_image"
name="list_bullet_image" type="text" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="list_position">{$lang_style_position}</label></td>
+ <td><select id="list_position" name="list_position"
class="mceEditableSelect"></select></td>
+ </tr>
+ </table>
+</div>
+
+<div id="positioning_panel" class="panel">
+<table border="0">
+ <tr>
+ <td><label
for="positioning_type">{$lang_style_positioning_type}</label></td>
+ <td><select id="positioning_type" name="positioning_type"
class="mceEditableSelect"></select></td>
+ <td> <label
for="positioning_visibility">{$lang_style_visibility}</label></td>
+ <td><select id="positioning_visibility"
name="positioning_visibility"
class="mceEditableSelect"></select></td>
+ </tr>
+
+ <tr>
+ <td><label
for="positioning_width">{$lang_style_width}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_width"
name="positioning_width"
onchange="synch('positioning_width','box_width');"
/></td>
+ <td> <select id="positioning_width_measurement"
name="positioning_width_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td> <label
for="positioning_zindex">{$lang_style_zindex}</label></td>
+ <td><input type="text" id="positioning_zindex"
name="positioning_zindex" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="positioning_height">{$lang_style_height}</label></td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_height"
name="positioning_height"
onchange="synch('positioning_height','box_height');"
/></td>
+ <td> <select id="positioning_height_measurement"
name="positioning_height_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ <td> <label
for="positioning_overflow">{$lang_style_overflow}</label></td>
+ <td><select id="positioning_overflow"
name="positioning_overflow"
class="mceEditableSelect"></select></td>
+ </tr>
+</table>
+
+<div style="float: left; width: 49%">
+ <fieldset>
+ <legend>{$lang_style_placement}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox"
id="positioning_placement_same" name="positioning_placement_same"
class="checkbox" checked="checked"
onclick="toggleSame(this,'positioning_placement');" /> <label
for="positioning_placement_same">{$lang_style_same}</label></td>
+ </tr>
+ <tr>
+ <td>{$lang_style_top}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_placement_top"
name="positioning_placement_top" /></td>
+ <td> <select
id="positioning_placement_top_measurement"
name="positioning_placement_top_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_right}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text"
id="positioning_placement_right" name="positioning_placement_right"
disabled="disabled" /></td>
+ <td> <select
id="positioning_placement_right_measurement"
name="positioning_placement_right_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_bottom}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text"
id="positioning_placement_bottom" name="positioning_placement_bottom"
disabled="disabled" /></td>
+ <td> <select
id="positioning_placement_bottom_measurement"
name="positioning_placement_bottom_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_left}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text"
id="positioning_placement_left" name="positioning_placement_left"
disabled="disabled" /></td>
+ <td> <select
id="positioning_placement_left_measurement"
name="positioning_placement_left_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+
+<div style="float: right; width: 49%">
+ <fieldset>
+ <legend>{$lang_style_clip}</legend>
+
+ <table border="0">
+ <tr>
+ <td> </td>
+ <td><input type="checkbox" id="positioning_clip_same"
name="positioning_clip_same" class="checkbox"
checked="checked"
onclick="toggleSame(this,'positioning_clip');" /> <label
for="positioning_clip_same">{$lang_style_same}</label></td>
+ </tr>
+ <tr>
+ <td>{$lang_style_top}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_top"
name="positioning_clip_top" /></td>
+ <td> <select id="positioning_clip_top_measurement"
name="positioning_clip_top_measurement"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_right}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_right"
name="positioning_clip_right" disabled="disabled" /></td>
+ <td> <select id="positioning_clip_right_measurement"
name="positioning_clip_right_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_bottom}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_bottom"
name="positioning_clip_bottom" disabled="disabled" /></td>
+ <td> <select id="positioning_clip_bottom_measurement"
name="positioning_clip_bottom_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{$lang_style_left}</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input type="text" id="positioning_clip_left"
name="positioning_clip_left" disabled="disabled" /></td>
+ <td> <select id="positioning_clip_left_measurement"
name="positioning_clip_left_measurement"
disabled="disabled"></select>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+</div>
+<br style="clear: both" />
+</div>
+</div>
+
+<div class="mceActionPanel">
+ <div style="float: left">
+ <div style="float: left"><input type="button"
id="insert" name="insert" value="{$lang_update}"
onclick="updateAction();" /></div>
+
+ <div style="float: left"> <input type="button"
id="apply" name="apply" value="{$lang_style_apply}"
onclick="applyAction();" class="updateButton" /></div>
+ <br style="clear: both" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+</div>
+</form>
+
+<div style="display: none">
+ <div id="container"></div>
+</div>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/style/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/cell.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/cell.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/cell.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,182 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_table_cell_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/cell.js"></script>
+ <link href="css/cell.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="tablecell"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="updateAction();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_table_general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_table_advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_table_general_props}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td><label
for="align">{$lang_table_align}</label></td>
+ <td>
+ <select id="align" name="align">
+ <option value="">{$lang_not_set}</option>
+ <option
value="center">{$lang_table_align_middle}</option>
+ <option value="left">{$lang_table_align_left}</option>
+ <option value="right">{$lang_table_align_right}</option>
+ </select>
+ </td>
+
+ <td><label
for="celltype">{$lang_table_cell_type}</label></td>
+ <td>
+ <select id="celltype" name="celltype">
+ <option value="td">{$lang_table_td}</option>
+ <option value="th">{$lang_table_th}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="valign">{$lang_table_valign}</label></td>
+ <td>
+ <select id="valign" name="valign">
+ <option value="">{$lang_not_set}</option>
+ <option value="top">{$lang_table_align_top}</option>
+ <option
value="middle">{$lang_table_align_middle}</option>
+ <option
value="bottom">{$lang_table_align_bottom}</option>
+ </select>
+ </td>
+
+ <td><label
for="scope">{$lang_table_scope}</label></td>
+ <td>
+ <select id="scope" name="scope">
+ <option value="">{$lang_not_set}</option>
+ <option value="col">{$lang_table_col}</option>
+ <option value="row">{$lang_table_row}</option>
+ <option value="rowgroup">{$lang_table_rowgroup}</option>
+ <option value="colgroup">{$lang_table_colgroup}</option>
+ </select>
+ </td>
+
+ </tr>
+
+ <tr>
+ <td><label
for="width">{$lang_table_width}</label></td>
+ <td><input id="width" name="width"
type="text" value="" size="4" maxlength="4"
onchange="changedSize();" /></td>
+
+ <td><label
for="height">{$lang_table_height}</label></td>
+ <td><input id="height" name="height"
type="text" value="" size="4" maxlength="4"
onchange="changedSize();" /></td>
+ </tr>
+
+ <tr id="styleSelectRow">
+ <td><label
for="class">{$lang_class_name}</label></td>
+ <td colspan="3">
+ <select id="class" name="class">
+ <option value=""
selected="selected">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_table_advanced_props}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="column1"><label
for="id">{$lang_table_id}</label></td>
+ <td><input id="id" name="id" type="text"
value="" style="width: 200px" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="style">{$lang_table_style}</label></td>
+ <td><input type="text" id="style"
name="style" value="" style="width: 200px;"
onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="dir">{$lang_table_langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" style="width:
200px">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_table_ltr}</option>
+ <option value="rtl">{$lang_table_rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="lang">{$lang_table_langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" style="width: 200px" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="backgroundimage">{$lang_table_bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage"
name="backgroundimage" type="text" value=""
style="width: 200px" onchange="changedBackgroundImage();"
/></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="bordercolor">{$lang_table_bordercolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bordercolor" name="bordercolor"
type="text" value="" size="9"
onchange="updateColor('bordercolor_pick','bordercolor');changedColor();"
/></td>
+ <td id="bordercolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="bgcolor">{$lang_table_bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor"
type="text" value="" size="9"
onchange="updateColor('bgcolor_pick','bgcolor');changedColor();"
/></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div>
+ <select id="action" name="action">
+ <option value="cell">{$lang_table_cell_cell}</option>
+ <option value="row">{$lang_table_cell_row}</option>
+ <option value="all">{$lang_table_cell_all}</option>
+ </select>
+ </div>
+
+ <div style="float: left">
+ <div><input type="button" id="insert"
name="insert" value="{$lang_update}"
onclick="updateAction();" /></div>
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/cell.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/cell.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/cell.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/row.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/row.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/row.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/table.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/table.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/css/table.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+tinyMCE.importPluginLanguagePack('table');var
TinyMCE_TablePlugin={getInfo:function(){return{longname:'Tables',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
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','lan!
g_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;i<controls.length;i++){var but=controls[i];var
cmd='tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\',
'+(but.length>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))}if(control_name=="tablecontrol!
s"){var
html="";html+=tinyMCE.getControlHTML("table");html+=tinyMCE.ge
tControlHTML("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"mceTableCutR!
ow":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_befor!
e','mceButtonDisabled');tinyMCE.switchClass(editor_id+'_col_after','mc
eButtonDisabled');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_c!
ells','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.getParen!
tElement(focusElm,"tr");var tdElm=tinyMCE.getParentElement(focusElm,"t
d,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;i<ar.length;i++){if(ar[i].length>0&&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;y<grid.length;y++){for(x=0;x<grid[y].length;x++){if(grid[y][x]==td)return{cellindex:x,rowindex:y}}}return
null}function getCell(grid,row,col){if(grid[row]&&grid[row][col])return
grid[row][col];return null}function getTableGrid(table){var grid=new
Array(),rows=table.rows,x,y,td,sd,xstart,x2,y2!
;for(y=0;y<rows.length;y++){for(x=0;x<rows[y].cells.length;x++){td=rows[y].cells[x];sd=getColRowSpan(td);for(xstart=x;grid[y]&&grid[y][xstart];xstart++);for(y2=y;y2<y+sd['rowspan'];y2++){if(!grid[y2])grid[y2]=new
Array();for(x2=xstart;x2<xstart+sd['colspan'];x2++)grid[y2][x2]=td}}}return
grid}function trimRow(table,tr,td,new_tr){var
grid=getTableGrid(table),cpos=getCellPos(grid,td);var
cells,lastElm;if(new_tr.cells.length!=tr.childNodes.length){cells=tr.childNodes;lastElm=null;for(var
x=0;td=getCell(grid,cpos.rowindex,x);x++){var remove=true;var
sd=getColRowSpan(td);if(inArray(cells,td)){new_tr.childNodes[x]._delete=true}else
if((lastElm==null||td!=lastElm)&&sd.colspan>1){for(var
i=x;i<x+td.colSpan;i++)new_tr.childNodes[i]._delete=true}if((lastElm==null||td!=lastElm)&&sd.rowspan>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)!=nu
ll){for(var
i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase())return
node}}return null}function deleteMarked(tbl){if(tbl.rows==0)return;var
tr=tbl.rows[0];do{var
next=nextElm(tr,"TR");if(tr._delete){tr.parentNode.removeChild(tr);continue}var
td=tr.cells[0];if(td.cells>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){td_elm.rowSpan=1;var
trNext=nextElm(tr_elm,"TR");for(var i=1;i<rowspan&&trNext;i++){var
newTD=doc.createElement("td");newTD.innerHTML=" ";if(tinyMCE.isMSIE)trNext.insertBefore(newTD,trNext.cells(td_elm.cellIndex));else
trNext.insertBefore(newTD,trNext.cells[td_elm.cellIndex]);trNext=nextElm(trNext,"TR")}}function
copyRow(doc,table,tr){var grid=getTableGrid(table);var newTR=tr.cloneNode(false);var
cpos=getCellPos(grid,tr.cells[0]);var lastCell=null;var
tableBorder=tinyMCE.getAttrib(table,"border");var tdElm=!
null;for(var x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){var
newTD=null;if(lastCell!=tdElm){for(var
i=0;i<tr.cells.length;i++){if(tdElm==tr.cells[i]){newTD=tdElm.cloneNode(true);break}}}if(newTD==null){newTD=doc.createElement("td");newTD.innerHTML=" "}newTD.colSpan=1;newTD.rowSpan=1;newTR.appendChild(newTD);lastCell=tdElm}return
newTR}switch(command){case"mceTableRowProps":if(trElm==null)return
true;if(user_interface){var template=new
Array();template['file']='../../plugins/table/row.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_rowprops_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_rowprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return
true;case"mceTableCellProps":if(tdElm==null)return true;if(user_interface){var
template=new
Array();template['file']='../../plugins/table/cell.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.ge!
tLang('lang_table_cellprops_delta_width',0);template['height']+=tinyMC
E.getLang('lang_table_cellprops_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes"})}return
true;case"mceInsertTable":if(user_interface){var template=new
Array();template['file']='../../plugins/table/table.htm';template['width']=380;template['height']=295;template['width']+=tinyMCE.getLang('lang_table_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_table_table_delta_height',0);tinyMCE.openWindow(template,{editor_id:inst.editorId,inline:"yes",action:value})}return
true;case"mceTableDelete":var
table=tinyMCE.getParentElement(inst.getFocusElement(),"table");if(table){table.parentNode.removeChild(table);inst.repaint()}return
true;case"mceTableSplitCells":case"mceTableMergeCells":case"mceTableInsertRowBefore":case"mceTableInsertRowAfter":case"mceTableDeleteRow":case"mceTableInsertColBefore":case"mceTableInsertColAfter":case"mceTableDeleteCol":case"mceTableCutRow":case"mceTableCopyRow":case"mceTablePasteRowBefore":case"mceTablePasteR!
owAfter":if(!tableElm)return
true;if(trElm&&tableElm!=trElm.parentNode)tableElm=trElm.parentNode;if(tableElm&&trElm){switch(command){case"mceTableCutRow":if(!trElm||!tdElm)return
true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);inst.execCommand("mceTableDeleteRow");break;case"mceTableCopyRow":if(!trElm||!tdElm)return
true;inst.tableRowClipboard=copyRow(doc,tableElm,trElm);break;case"mceTablePasteRowBefore":if(!trElm||!tdElm)return
true;var newTR=inst.tableRowClipboard.cloneNode(true);var
prevTR=prevElm(trElm,"TR");if(prevTR!=null)trimRow(tableElm,prevTR,prevTR.cells[0],newTR);trElm.parentNode.insertBefore(newTR,trElm);break;case"mceTablePasteRowAfter":if(!trElm||!tdElm)return
true;var nextTR=nextElm(trElm,"TR");var
newTR=inst.tableRowClipboard.cloneNode(true);trimRow(tableElm,trElm,tdElm,newTR);if(nextTR==null)trElm.parentNode.appendChild(newTR);else
nextTR.parentNode.insertBefore(newTR,nextTR);break;case"mceTableInsertRowBefore":if(!trElm||!tdElm)return
true;var gri!
d=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var newTR=doc
.createElement("tr");var
lastTDElm=null;cpos.rowindex--;if(cpos.rowindex<0)cpos.rowindex=0;for(var
x=0;tdElm=getCell(grid,cpos.rowindex,x);x++){if(tdElm!=lastTDElm){var
sd=getColRowSpan(tdElm);if(sd['rowspan']==1){var
newTD=doc.createElement("td");newTD.innerHTML=" ";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else
tdElm.rowSpan=sd['rowspan']+1;lastTDElm=tdElm}}trElm.parentNode.insertBefore(newTR,trElm);grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex+1,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableInsertRowAfter":if(!trElm||!tdElm)return
true;var grid=getTableGrid(tableElm);var cpos=getCellPos(grid,tdElm);var
newTR=doc.createElement("tr");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){var
newTD=doc.createElement("td");newTD.innerHTML=" ";newTD.colSpan=tdElm.colSpan;newTR.appendChild(newTD)}else
tdElm.rowSpan=sd['rowspan!
']+1;lastTDElm=tdElm}}if(newTR.hasChildNodes()){var
nextTR=nextElm(trElm,"TR");if(nextTR)nextTR.parentNode.insertBefore(newTR,nextTR);else
tableElm.appendChild(newTR)}grid=getTableGrid(tableElm);inst.selection.selectNode(getCell(grid,cpos.rowindex,cpos.cellindex),tinyMCE.isGecko,true);break;case"mceTableDeleteRow":if(!trElm||!tdElm)return
true;var grid=getTableGrid(tableElm);var
cpos=getCellPos(grid,tdElm);if(grid.length==1){tableElm=tinyMCE.getParentElement(tableElm,"table");tableElm.parentNode.removeChild(tableElm);return
true}var cells=trElm.cells;var nextTR=nextElm(trElm,"TR");for(var
x=0;x<cells.length;x++){if(cells[x].rowSpan>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)}}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.cellin!
dex--;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;i<colspan;i++){var
newTD=doc.createElement("td");newTD.innerHTML=" ";trElm.insertBefore(newTD,nextElm(tdElm,"TD,TH"));if(rowspan>1)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']+=tinyMC!
E.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;y<grid.length;y++){var rowCells=new
Array();for(var x=cpos.cellindex;x<grid[y].length;x++){var
td=getCell(grid,y,x);if(td&&!inArray(rows,td)&&!inArray(rowCells,td)){var
cp=getCellPos(grid,td);if(cp.cellindex<cpos.cellindex+numCols&&cp.rowindex<cpos.rowindex+numRows)rowCells[rowCells.length]=td}}if(rowCells.length>0)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;i<sel.rangeCount;i++){var rng=sel.getRangeAt(i);var tdElm=rng.startContainer.chil!
dNodes[rng.startOffset];if(!tdElm)break;if(tdElm.nodeName=="TD")cells[
cells.length]=tdElm}var tRows=tableElm.rows;for(var y=0;y<tRows.length;y++){var
rowCells=new Array();for(var x=0;x<tRows[y].cells.length;x++){var
td=tRows[y].cells[x];for(var
i=0;i<cells.length;i++){if(td==cells[i]){rowCells[rowCells.length]=td}}}if(rowCells.length>0)rows[rows.length]=rowCells}var
curRow=new Array();var lastTR=null;for(var y=0;y<grid.length;y++){for(var
x=0;x<grid[y].length;x++){grid[y][x]._selected=false;for(var
i=0;i<cells.length;i++){if(grid[y][x]==cells[i]){if(x1==-1){x1=x;y1=y}x2=x;y2=y;grid[y][x]._selected=true}}}}for(var
y=y1;y<=y2;y++){for(var
x=x1;x<=x2;x++){if(!grid[y][x]._selected){alert("Invalid selection for
merge.");return true}}}}var rowSpan=1,colSpan=1;var lastRowSpan=-1;for(var
y=0;y<rows.length;y++){var rowColSpan=0;for(var x=0;x<rows[y].length;x++){var
sd=getColRowSpan(rows[y][x]);rowColSpan+=sd['colspan'];if(lastRowSpan!=-1&&sd['rowspan']!=lastRowSpan){alert("Invalid
selection for merge.");return true}lastRowSpan=sd['rowspan']}if(rowColSp!
an>colSpan)colSpan=rowColSpan;lastRowSpan=-1}var lastColSpan=-1;for(var
x=0;x<rows[0].length;x++){var colRowSpan=0;for(var y=0;y<rows.length;y++){var
sd=getColRowSpan(rows[y][x]);colRowSpan+=sd['rowspan'];if(lastColSpan!=-1&&sd['colspan']!=lastColSpan){alert("Invalid
selection for merge.");return
true}lastColSpan=sd['colspan']}if(colRowSpan>rowSpan)rowSpan=colRowSpan;lastColSpan=-1}tdElm=rows[0][0];tdElm.rowSpan=rowSpan;tdElm.colSpan=colSpan;for(var
y=0;y<rows.length;y++){for(var x=0;x<rows[y].length;x++){var
html=rows[y][x].innerHTML;var chk=tinyMCE.regexpReplace(html,"[
\t\r\n]","");if(chk!="<br/>"&&chk!="<br>"&&chk!=" "&&(x+y>0))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.ro!
wSpan>1)cellElm.rowSpan--;lastCell=cellElm}if(tdElm.rowSpan>1)tdElm.ro
wSpan--}}}}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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,1073 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_table.html',
+ 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<controls.length; i++) {
+ var but = controls[i];
+ var cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' +
but[3] + '\', ' + (but.length > 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<ar.length; i++) {
+ // Is array
+ if (ar[i].length > 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<grid.length; y++) {
+ for (x=0; x<grid[y].length; x++) {
+ if (grid[y][x] == td)
+ return {cellindex : x, rowindex : y};
+ }
+ }
+
+ return null;
+ }
+
+ function getCell(grid, row, col) {
+ if (grid[row] && grid[row][col])
+ return grid[row][col];
+
+ return null;
+ }
+
+ function getTableGrid(table) {
+ var grid = new Array(), rows = table.rows, x, y, td, sd, xstart, x2, y2;
+
+ for (y=0; y<rows.length; y++) {
+ for (x=0; x<rows[y].cells.length; x++) {
+ td = rows[y].cells[x];
+ sd = getColRowSpan(td);
+
+ // All ready filled
+ for (xstart = x; grid[y] && grid[y][xstart]; xstart++) ;
+
+ // Fill box
+ for (y2=y; y2<y+sd['rowspan']; y2++) {
+ if (!grid[y2])
+ grid[y2] = new Array();
+
+ for (x2=xstart; x2<xstart+sd['colspan']; x2++)
+ grid[y2][x2] = td;
+ }
+ }
+ }
+
+ return grid;
+ }
+
+ function trimRow(table, tr, td, new_tr) {
+ var grid = getTableGrid(table), cpos = getCellPos(grid, td);
+ var cells, lastElm;
+
+ // Time to crop away some
+ if (new_tr.cells.length != tr.childNodes.length) {
+ cells = tr.childNodes;
+ lastElm = null;
+
+ for (var x=0; td = getCell(grid, cpos.rowindex, x); x++) {
+ var remove = true;
+ var sd = getColRowSpan(td);
+
+ // Remove due to rowspan
+ if (inArray(cells, td)) {
+ new_tr.childNodes[x]._delete = true;
+ } else if ((lastElm == null || td != lastElm) && sd.colspan > 1) { //
Remove due to colspan
+ for (var i=x; i<x+td.colSpan; i++)
+ new_tr.childNodes[i]._delete = true;
+ }
+
+ if ((lastElm == null || td != lastElm) && sd.rowspan > 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<namesAr.length; i++) {
+ if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() )
+ return node;
+ }
+ }
+
+ return null;
+ }
+
+ function deleteMarked(tbl) {
+ if (tbl.rows == 0)
+ return;
+
+ var tr = tbl.rows[0];
+ do {
+ var next = nextElm(tr, "TR");
+
+ // Delete row
+ if (tr._delete) {
+ tr.parentNode.removeChild(tr);
+ continue;
+ }
+
+ // Delete cells
+ var td = tr.cells[0];
+ if (td.cells > 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<rowspan && trNext; i++) {
+ var newTD = doc.createElement("td");
+ newTD.innerHTML = " ";
+
+ if (tinyMCE.isMSIE)
+ trNext.insertBefore(newTD, trNext.cells(td_elm.cellIndex));
+ else
+ trNext.insertBefore(newTD, trNext.cells[td_elm.cellIndex]);
+
+ trNext = nextElm(trNext, "TR");
+ }
+ }
+
+ function copyRow(doc, table, tr) {
+ var grid = getTableGrid(table);
+ var newTR = tr.cloneNode(false);
+ var cpos = getCellPos(grid, tr.cells[0]);
+ var lastCell = null;
+ var tableBorder = tinyMCE.getAttrib(table, "border");
+ var tdElm = null;
+
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+ var newTD = null;
+
+ if (lastCell != tdElm) {
+ for (var i=0; i<tr.cells.length; i++) {
+ if (tdElm == tr.cells[i]) {
+ newTD = tdElm.cloneNode(true);
+ break;
+ }
+ }
+ }
+
+ if (newTD == null) {
+ newTD = doc.createElement("td");
+ newTD.innerHTML = " ";
+ }
+
+ // Reset col/row span
+ newTD.colSpan = 1;
+ newTD.rowSpan = 1;
+
+ newTR.appendChild(newTD);
+
+ lastCell = tdElm;
+ }
+
+ return newTR;
+ }
+
+ // ---- Commands -----
+
+ // Handle commands
+ switch (command) {
+ case "mceTableRowProps":
+ if (trElm == null)
+ return true;
+
+ if (user_interface) {
+ // Setup template
+ var template = new Array();
+
+ template['file'] = '../../plugins/table/row.htm';
+ template['width'] = 380;
+ template['height'] = 295;
+
+ // Language specific width and height addons
+ template['width'] +=
tinyMCE.getLang('lang_table_rowprops_delta_width', 0);
+ template['height'] +=
tinyMCE.getLang('lang_table_rowprops_delta_height', 0);
+
+ // Open window
+ tinyMCE.openWindow(template, {editor_id : inst.editorId, inline :
"yes"});
+ }
+
+ return true;
+
+ case "mceTableCellProps":
+ if (tdElm == null)
+ return true;
+
+ if (user_interface) {
+ // Setup template
+ var template = new Array();
+
+ template['file'] = '../../plugins/table/cell.htm';
+ template['width'] = 380;
+ template['height'] = 295;
+
+ // Language specific width and height addons
+ template['width'] +=
tinyMCE.getLang('lang_table_cellprops_delta_width', 0);
+ template['height'] +=
tinyMCE.getLang('lang_table_cellprops_delta_height', 0);
+
+ // Open window
+ tinyMCE.openWindow(template, {editor_id : inst.editorId, inline :
"yes"});
+ }
+
+ return true;
+
+ case "mceInsertTable":
+ if (user_interface) {
+ // Setup template
+ var template = new Array();
+
+ template['file'] = '../../plugins/table/table.htm';
+ template['width'] = 380;
+ template['height'] = 295;
+
+ // Language specific width and height addons
+ template['width'] += tinyMCE.getLang('lang_table_table_delta_width',
0);
+ template['height'] +=
tinyMCE.getLang('lang_table_table_delta_height', 0);
+
+ // Open window
+ tinyMCE.openWindow(template, {editor_id : inst.editorId, inline : "yes",
action : value});
+ }
+
+ return true;
+
+ case "mceTableDelete":
+ var table = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+ if (table) {
+ table.parentNode.removeChild(table);
+ inst.repaint();
+ }
+ return true;
+
+ case "mceTableSplitCells":
+ case "mceTableMergeCells":
+ case "mceTableInsertRowBefore":
+ case "mceTableInsertRowAfter":
+ case "mceTableDeleteRow":
+ case "mceTableInsertColBefore":
+ case "mceTableInsertColAfter":
+ case "mceTableDeleteCol":
+ case "mceTableCutRow":
+ case "mceTableCopyRow":
+ case "mceTablePasteRowBefore":
+ case "mceTablePasteRowAfter":
+ // No table just return (invalid command)
+ if (!tableElm)
+ return true;
+
+ // Table has a tbody use that reference
+ // Changed logic by ApTest 2005.07.12 (
www.aptest.com)
+ // Now lookk at the focused element and take its parentNode. That will be a tbody or
a table.
+ if (trElm && tableElm != trElm.parentNode)
+ tableElm = trElm.parentNode;
+
+ if (tableElm && trElm) {
+ switch (command) {
+ case "mceTableCutRow":
+ if (!trElm || !tdElm)
+ return true;
+
+ inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+ inst.execCommand("mceTableDeleteRow");
+ break;
+
+ case "mceTableCopyRow":
+ if (!trElm || !tdElm)
+ return true;
+
+ inst.tableRowClipboard = copyRow(doc, tableElm, trElm);
+ break;
+
+ case "mceTablePasteRowBefore":
+ if (!trElm || !tdElm)
+ return true;
+
+ var newTR = inst.tableRowClipboard.cloneNode(true);
+
+ var prevTR = prevElm(trElm, "TR");
+ if (prevTR != null)
+ trimRow(tableElm, prevTR, prevTR.cells[0], newTR);
+
+ trElm.parentNode.insertBefore(newTR, trElm);
+ break;
+
+ case "mceTablePasteRowAfter":
+ if (!trElm || !tdElm)
+ return true;
+
+ var nextTR = nextElm(trElm, "TR");
+ var newTR = inst.tableRowClipboard.cloneNode(true);
+
+ trimRow(tableElm, trElm, tdElm, newTR);
+
+ if (nextTR == null)
+ trElm.parentNode.appendChild(newTR);
+ else
+ nextTR.parentNode.insertBefore(newTR, nextTR);
+
+ break;
+
+ case "mceTableInsertRowBefore":
+ if (!trElm || !tdElm)
+ return true;
+
+ var grid = getTableGrid(tableElm);
+ var cpos = getCellPos(grid, tdElm);
+ var newTR = doc.createElement("tr");
+ var lastTDElm = null;
+
+ cpos.rowindex--;
+ if (cpos.rowindex < 0)
+ cpos.rowindex = 0;
+
+ // Create cells
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+ if (tdElm != lastTDElm) {
+ var sd = getColRowSpan(tdElm);
+
+ if (sd['rowspan'] == 1) {
+ var newTD = doc.createElement("td");
+
+ newTD.innerHTML = " ";
+ newTD.colSpan = tdElm.colSpan;
+
+ newTR.appendChild(newTD);
+ } else
+ tdElm.rowSpan = sd['rowspan'] + 1;
+
+ lastTDElm = tdElm;
+ }
+ }
+
+ trElm.parentNode.insertBefore(newTR, trElm);
+
+ grid = getTableGrid(tableElm);
+ inst.selection.selectNode(getCell(grid, cpos.rowindex + 1, cpos.cellindex),
tinyMCE.isGecko, true); // Only collape on gecko
+ break;
+
+ case "mceTableInsertRowAfter":
+ if (!trElm || !tdElm)
+ return true;
+
+ var grid = getTableGrid(tableElm);
+ var cpos = getCellPos(grid, tdElm);
+ var newTR = doc.createElement("tr");
+ var lastTDElm = null;
+
+ // Create cells
+ for (var x=0; tdElm = getCell(grid, cpos.rowindex, x); x++) {
+ if (tdElm != lastTDElm) {
+ var sd = getColRowSpan(tdElm);
+
+ if (sd['rowspan'] == 1) {
+ var newTD = doc.createElement("td");
+
+ newTD.innerHTML = " ";
+ newTD.colSpan = tdElm.colSpan;
+
+ newTR.appendChild(newTD);
+ } else
+ tdElm.rowSpan = sd['rowspan'] + 1;
+
+ lastTDElm = tdElm;
+ }
+ }
+
+ if (newTR.hasChildNodes()) {
+ var nextTR = nextElm(trElm, "TR");
+ if (nextTR)
+ nextTR.parentNode.insertBefore(newTR, nextTR);
+ else
+ tableElm.appendChild(newTR);
+ }
+
+ grid = getTableGrid(tableElm);
+ inst.selection.selectNode(getCell(grid, cpos.rowindex, cpos.cellindex),
tinyMCE.isGecko, true); // Only collape on gecko
+ break;
+
+ case "mceTableDeleteRow":
+ if (!trElm || !tdElm)
+ return true;
+
+ var grid = getTableGrid(tableElm);
+ var cpos = getCellPos(grid, tdElm);
+
+ // Only one row, remove whole table
+ if (grid.length == 1) {
+ tableElm = tinyMCE.getParentElement(tableElm, "table"); // Look for
table instead of tbody
+ tableElm.parentNode.removeChild(tableElm);
+ return true;
+ }
+
+ // Move down row spanned cells
+ var cells = trElm.cells;
+ var nextTR = nextElm(trElm, "TR");
+ for (var x=0; x<cells.length; x++) {
+ if (cells[x].rowSpan > 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<colspan; i++) {
+ var newTD = doc.createElement("td");
+
+ newTD.innerHTML = " ";
+
+ trElm.insertBefore(newTD, nextElm(tdElm, "TD,TH"));
+
+ if (rowspan > 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<grid.length; y++) {
+ var rowCells = new Array();
+
+ for (var x=cpos.cellindex; x<grid[y].length; x++) {
+ var td = getCell(grid, y, x);
+
+ if (td && !inArray(rows, td) && !inArray(rowCells, td)) {
+ var cp = getCellPos(grid, td);
+
+ // Within range
+ if (cp.cellindex < cpos.cellindex+numCols && cp.rowindex <
cpos.rowindex+numRows)
+ rowCells[rowCells.length] = td;
+ }
+ }
+
+ if (rowCells.length > 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<sel.rangeCount; i++) {
+ var rng = sel.getRangeAt(i);
+ var tdElm = rng.startContainer.childNodes[rng.startOffset];
+
+ if (!tdElm)
+ break;
+
+ if (tdElm.nodeName == "TD")
+ cells[cells.length] = tdElm;
+ }
+
+ // Get rows and cells
+ var tRows = tableElm.rows;
+ for (var y=0; y<tRows.length; y++) {
+ var rowCells = new Array();
+
+ for (var x=0; x<tRows[y].cells.length; x++) {
+ var td = tRows[y].cells[x];
+
+ for (var i=0; i<cells.length; i++) {
+ if (td == cells[i]) {
+ rowCells[rowCells.length] = td;
+ }
+ }
+ }
+
+ if (rowCells.length > 0)
+ rows[rows.length] = rowCells;
+ }
+
+ // Find selected cells in grid and box
+ var curRow = new Array();
+ var lastTR = null;
+ for (var y=0; y<grid.length; y++) {
+ for (var x=0; x<grid[y].length; x++) {
+ grid[y][x]._selected = false;
+
+ for (var i=0; i<cells.length; i++) {
+ if (grid[y][x] == cells[i]) {
+ // Get start pos
+ if (x1 == -1) {
+ x1 = x;
+ y1 = y;
+ }
+
+ // Get end pos
+ x2 = x;
+ y2 = y;
+
+ grid[y][x]._selected = true;
+ }
+ }
+ }
+ }
+
+ // Is there gaps, if so deny
+ for (var y=y1; y<=y2; y++) {
+ for (var x=x1; x<=x2; x++) {
+ if (!grid[y][x]._selected) {
+ alert("Invalid selection for merge.");
+ return true;
+ }
+ }
+ }
+ }
+
+ // Validate selection and get total rowspan and colspan
+ var rowSpan = 1, colSpan = 1;
+
+ // Validate horizontal and get total colspan
+ var lastRowSpan = -1;
+ for (var y=0; y<rows.length; y++) {
+ var rowColSpan = 0;
+
+ for (var x=0; x<rows[y].length; x++) {
+ var sd = getColRowSpan(rows[y][x]);
+
+ rowColSpan += sd['colspan'];
+
+ if (lastRowSpan != -1 && sd['rowspan'] != lastRowSpan) {
+ alert("Invalid selection for merge.");
+ return true;
+ }
+
+ lastRowSpan = sd['rowspan'];
+ }
+
+ if (rowColSpan > colSpan)
+ colSpan = rowColSpan;
+
+ lastRowSpan = -1;
+ }
+
+ // Validate vertical and get total rowspan
+ var lastColSpan = -1;
+ for (var x=0; x<rows[0].length; x++) {
+ var colRowSpan = 0;
+
+ for (var y=0; y<rows.length; y++) {
+ var sd = getColRowSpan(rows[y][x]);
+
+ colRowSpan += sd['rowspan'];
+
+ if (lastColSpan != -1 && sd['colspan'] != lastColSpan) {
+ alert("Invalid selection for merge.");
+ return true;
+ }
+
+ lastColSpan = sd['colspan'];
+ }
+
+ if (colRowSpan > rowSpan)
+ rowSpan = colRowSpan;
+
+ lastColSpan = -1;
+ }
+
+ // Setup td
+ tdElm = rows[0][0];
+ tdElm.rowSpan = rowSpan;
+ tdElm.colSpan = colSpan;
+
+ // Merge cells
+ for (var y=0; y<rows.length; y++) {
+ for (var x=0; x<rows[y].length; x++) {
+ var html = rows[y][x].innerHTML;
+ var chk = tinyMCE.regexpReplace(html, "[ \t\r\n]", "");
+
+ if (chk != "<br/>" && chk != "<br>"
&& chk != " " && (x+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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_cell_props.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_col.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_delete_row.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_after.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_col_before.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_after.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_insert_row_before.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_merge_cells.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_row_props.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/images/table_split_cells.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/cell.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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<rows.length; i++) {
+ var cell = rows[i].firstChild;
+
+ if (cell.nodeName != "TD" && cell.nodeName != "TH")
+ cell = nextCell(cell);
+
+ do {
+ cell = updateCell(cell, true);
+ } while ((cell = nextCell(cell)) != null);
+ }
+
+ break;
+ }
+
+ tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+ tinyMCE.triggerNodeChange();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function nextCell(elm) {
+ while ((elm = elm.nextSibling) != null) {
+ if (elm.nodeName == "TD" || elm.nodeName == "TH")
+ return elm;
+ }
+
+ return null;
+}
+
+function updateCell(td, skip_id) {
+ var inst = tinyMCE.selectedInstance;
+ var formObj = document.forms[0];
+ var curCellType = td.nodeName.toLowerCase();
+ var celltype = getSelectValue(formObj, 'celltype');
+ var doc = inst.getDoc();
+
+ if (!skip_id)
+ td.setAttribute('id', formObj.id.value);
+
+ td.setAttribute('align', formObj.align.value);
+ td.setAttribute('vAlign', formObj.valign.value);
+ td.setAttribute('lang', formObj.lang.value);
+ td.setAttribute('dir', getSelectValue(formObj, 'dir'));
+ td.setAttribute('style',
tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+ td.setAttribute('scope', formObj.scope.value);
+ tinyMCE.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
+
+ // Clear deprecated attributes
+ tinyMCE.setAttrib(td, 'width', '');
+ tinyMCE.setAttrib(td, 'height', '');
+ tinyMCE.setAttrib(td, 'bgColor', '');
+ tinyMCE.setAttrib(td, 'borderColor', '');
+ tinyMCE.setAttrib(td, 'background', '');
+
+ // Set styles
+ td.style.width = getCSSSize(formObj.width.value);
+ td.style.height = getCSSSize(formObj.height.value);
+ if (formObj.bordercolor.value != "") {
+ td.style.borderColor = formObj.bordercolor.value;
+ td.style.borderStyle = td.style.borderStyle == "" ? "solid" :
td.style.borderStyle;
+ td.style.borderWidth = td.style.borderWidth == "" ? "1px" :
td.style.borderWidth;
+ } else
+ td.style.borderColor = '';
+
+ td.style.backgroundColor = formObj.bgcolor.value;
+
+ if (formObj.backgroundimage.value != "")
+ td.style.backgroundImage = "url('" + formObj.backgroundimage.value +
"')";
+ else
+ td.style.backgroundImage = '';
+
+ if (curCellType != celltype) {
+ // changing to a different node type
+ var newCell = doc.createElement(celltype);
+
+ for (var c=0; c<td.childNodes.length; c++)
+ newCell.appendChild(td.childNodes[c].cloneNode(1));
+
+ for (var a=0; a<td.attributes.length; a++) {
+ var attr = td.attributes[a];
+ newCell.setAttribute(attr.name, attr.value);
+ }
+
+ td.parentNode.replaceChild(newCell, td);
+ td = newCell;
+ }
+
+ return td;
+}
+
+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 changedSize() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ var width = formObj.width.value;
+ if (width != "")
+ st['width'] = 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 changedColor() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ st['background-color'] = formObj.bgcolor.value;
+ st['border-color'] = formObj.bordercolor.value;
+
+ 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');
+ }
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/merge_cells.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,24 @@
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ var formObj = document.forms[0];
+
+ formObj.numcols.value = tinyMCE.getWindowArg('numcols', 1);
+ formObj.numrows.value = tinyMCE.getWindowArg('numrows', 1);
+}
+
+function mergeCells() {
+ var args = new Array();
+ var formObj = document.forms[0];
+
+ if (!AutoValidator.validate(formObj)) {
+ alert(tinyMCE.getLang('lang_invalid_data'));
+ return false;
+ }
+
+ args["numcols"] = formObj.numcols.value;
+ args["numrows"] = formObj.numrows.value;
+
+ tinyMCEPopup.execCommand("mceTableMergeCells", false, args);
+ tinyMCEPopup.close();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/row.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,200 @@
+function init() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ document.getElementById('backgroundimagebrowsercontainer').innerHTML =
getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
+ document.getElementById('bgcolor_pickcontainer').innerHTML =
getColorPickerHTML('bgcolor_pick','bgcolor');
+
+ var inst = tinyMCE.selectedInstance;
+ var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(tinyMCE.getAttrib(trElm, "style"));
+
+ // Get table row data
+ var rowtype = trElm.parentNode.nodeName.toLowerCase();
+ var align = tinyMCE.getAttrib(trElm, 'align');
+ var valign = tinyMCE.getAttrib(trElm, 'valign');
+ var height = trimSize(getStyle(trElm, 'height', 'height'));
+ var className = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(trElm, 'class'),
false);
+ var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor',
'backgroundColor'));
+ var backgroundimage = getStyle(trElm, 'background',
'backgroundImage').replace(new
RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");;
+ var id = tinyMCE.getAttrib(trElm, 'id');
+ var lang = tinyMCE.getAttrib(trElm, 'lang');
+ var dir = tinyMCE.getAttrib(trElm, 'dir');
+
+ // Setup form
+ addClassesToList('class', 'table_row_styles');
+ formObj.bgcolor.value = bgcolor;
+ formObj.backgroundimage.value = backgroundimage;
+ 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, 'rowtype', rowtype);
+ selectByValue(formObj, 'dir', dir);
+
+ // Resize some elements
+ if (isVisible('backgroundimagebrowser'))
+ document.getElementById('backgroundimage').style.width = '180px';
+
+ updateColor('bgcolor_pick', 'bgcolor');
+}
+
+function updateAction() {
+ tinyMCEPopup.restoreSelection();
+
+ var inst = tinyMCE.selectedInstance;
+ var trElm = tinyMCE.getParentElement(inst.getFocusElement(), "tr");
+ var tableElm = tinyMCE.getParentElement(inst.getFocusElement(), "table");
+ var formObj = document.forms[0];
+ var action = getSelectValue(formObj, 'action');
+
+ inst.execCommand('mceBeginUndoLevel');
+
+ switch (action) {
+ case "row":
+ updateRow(trElm);
+ break;
+
+ case "all":
+ var rows = tableElm.getElementsByTagName("tr");
+
+ for (var i=0; i<rows.length; i++)
+ updateRow(rows[i], true);
+
+ break;
+
+ case "odd":
+ case "even":
+ var rows = tableElm.getElementsByTagName("tr");
+
+ for (var i=0; i<rows.length; i++) {
+ if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 &&
action == "even"))
+ updateRow(rows[i], true, true);
+ }
+
+ break;
+ }
+
+ tinyMCE.handleVisualAid(inst.getBody(), true, inst.visualAid, inst);
+ tinyMCE.triggerNodeChange();
+ inst.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function updateRow(tr_elm, skip_id, skip_parent) {
+ var inst = tinyMCE.selectedInstance;
+ var formObj = document.forms[0];
+ var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
+ var rowtype = getSelectValue(formObj, 'rowtype');
+ var doc = inst.getDoc();
+
+ // Update row element
+ if (!skip_id)
+ tr_elm.setAttribute('id', formObj.id.value);
+
+ tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
+ tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
+ tr_elm.setAttribute('lang', formObj.lang.value);
+ tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
+ tr_elm.setAttribute('style',
tinyMCE.serializeStyle(tinyMCE.parseStyle(formObj.style.value)));
+ tinyMCE.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
+
+ // Clear deprecated attributes
+ tr_elm.setAttribute('background', '');
+ tr_elm.setAttribute('bgColor', '');
+ tr_elm.setAttribute('height', '');
+
+ // Set styles
+ tr_elm.style.height = getCSSSize(formObj.height.value);
+ tr_elm.style.backgroundColor = formObj.bgcolor.value;
+
+ if (formObj.backgroundimage.value != "")
+ tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value +
"')";
+ else
+ tr_elm.style.backgroundImage = '';
+
+ // Setup new rowtype
+ if (curRowType != rowtype && !skip_parent) {
+ // first, clone the node we are working on
+ var newRow = tr_elm.cloneNode(1);
+
+ // next, find the parent of its new destination (creating it if necessary)
+ var theTable = tinyMCE.getParentElement(tr_elm, "table");
+ var dest = rowtype;
+ var newParent = null;
+ for (var i = 0; i < theTable.childNodes.length; i++) {
+ if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
+ newParent = theTable.childNodes[i];
+ }
+
+ if (newParent == null) {
+ newParent = doc.createElement(dest);
+
+ if (dest == "thead")
+ theTable.insertBefore(newParent, theTable.firstChild);
+ else
+ theTable.appendChild(newParent);
+ }
+
+ // append the row to the new parent
+ newParent.appendChild(newRow);
+
+ // remove the original
+ tr_elm.parentNode.removeChild(tr_elm);
+
+ // set tr_elm to the new node
+ tr_elm = newRow;
+ }
+}
+
+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 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['height'])
+ formObj.height.value = trimSize(st['height']);
+
+ if (st['background-color']) {
+ formObj.bgcolor.value = st['background-color'];
+ updateColor('bgcolor_pick','bgcolor');
+ }
+}
+
+function changedSize() {
+ var formObj = document.forms[0];
+ var st = tinyMCE.parseStyle(formObj.style.value);
+
+ var height = formObj.height.value;
+ if (height != "")
+ st['height'] = getCSSSize(height);
+ else
+ st['height'] = "";
+
+ 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;
+
+ formObj.style.value = tinyMCE.serializeStyle(st);
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/jscripts/table.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,349 @@
+var action, orgTableWidth, orgTableHeight;
+
+function insertTable() {
+ var formObj = document.forms[0];
+ var inst = tinyMCE.selectedInstance;
+ var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width,
height, className;
+ var html = '';
+ var elm = tinyMCE.tableElm;
+ var cellLimit, rowLimit, colLimit;
+
+ if (!AutoValidator.validate(formObj)) {
+ alert(tinyMCE.getLang('lang_invalid_data'));
+ return false;
+ }
+
+ tinyMCEPopup.restoreSelection();
+
+ // Get form data
+ cols = formObj.elements['cols'].value;
+ rows = formObj.elements['rows'].value;
+ border = formObj.elements['border'].value != "" ?
formObj.elements['border'].value : 0;
+ cellpadding = formObj.elements['cellpadding'].value != "" ?
formObj.elements['cellpadding'].value : "";
+ cellspacing = formObj.elements['cellspacing'].value != "" ?
formObj.elements['cellspacing'].value : "";
+ align =
formObj.elements['align'].options[formObj.elements['align'].selectedIndex].value;
+ width = formObj.elements['width'].value;
+ height = formObj.elements['height'].value;
+ bordercolor = formObj.elements['bordercolor'].value;
+ bgcolor = formObj.elements['bgcolor'].value;
+ className =
formObj.elements['class'].options[formObj.elements['class'].selectedIndex].value;
+ id = formObj.elements['id'].value;
+ summary = formObj.elements['summary'].value;
+ style = formObj.elements['style'].value;
+ dir = formObj.elements['dir'].value;
+ lang = formObj.elements['lang'].value;
+ background = formObj.elements['backgroundimage'].value;
+
+ cellLimit = tinyMCE.getParam('table_cell_limit', false);
+ rowLimit = tinyMCE.getParam('table_row_limit', false);
+ colLimit = tinyMCE.getParam('table_col_limit', false);
+
+ // Validate table size
+ if (colLimit && cols > 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);
+
+ // 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 += '<table';
+
+ html += makeAttrib('id', id);
+ html += makeAttrib('border', border);
+ html += makeAttrib('cellpadding', cellpadding);
+ html += makeAttrib('cellspacing', cellspacing);
+ html += makeAttrib('width', width);
+ //html += makeAttrib('height', height);
+ //html += makeAttrib('bordercolor', bordercolor);
+ //html += makeAttrib('bgcolor', bgcolor);
+ html += makeAttrib('align', align);
+ html += makeAttrib('class', tinyMCE.getVisualAidClass(className, border == 0));
+ html += makeAttrib('style', style);
+ html += makeAttrib('summary', summary);
+ html += makeAttrib('dir', dir);
+ html += makeAttrib('lang', lang);
+
+ html += '>';
+
+ for (var y=0; y<rows; y++) {
+ html += "<tr>";
+
+ for (var x=0; x<cols; x++)
+ html += '<td> </td>';
+
+ html += "</tr>";
+ }
+
+ html += "</table>";
+
+ inst.execCommand('mceBeginUndoLevel');
+ inst.execCommand('mceInsertContent', false, html);
+ tinyMCE.handleVisualAid(inst.getBody(), true, tinyMCE.settings['visual']);
+ inst.execCommand('mceEndUndoLevel');
+
+ tinyMCEPopup.close();
+}
+
+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, '<');
+ value = value.replace(/>/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<rowsAr.length; i++)
+ if (rowsAr[i].cells.length > 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");
+
+ 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');
+ }
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,78 @@
+// 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.'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/merge_cells.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,38 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_table_merge_cells_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/validate.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/merge_cells.js"></script>
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="margin: 8px" style="display: none">
+<form onsubmit="insertTable();return false;" action="#">
+ <fieldset>
+ <legend>{$lang_table_merge_cells_title}</legend>
+ <table border="0" cellpadding="0" cellspacing="3"
width="100%">
+ <tr>
+ <td>{$lang_table_cols}:</td>
+ <td align="right"><input type="text"
name="numcols" value="" class="number min1"
style="width: 30px" /></td>
+ <td>
+ </tr>
+ <tr>
+ <td>{$lang_table_rows}:</td>
+ <td align="right"><input type="text"
name="numrows" value="" class="number min1"
style="width: 30px" /></td>
+ </tr>
+ </table>
+ </fieldset>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="mergeCells();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+</form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1 @@
+Check the TinyMCE documentation for details on this plugin.
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/row.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/row.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/row.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,159 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_table_row_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/row.js"></script>
+ <link href="css/row.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="tablerow"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="updateAction();return false;">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_table_general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_table_advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_table_general_props}</legend>
+
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td><label
for="rowtype">{$lang_table_rowtype}</label></td>
+ <td class="col2">
+ <select id="rowtype" name="rowtype">
+ <option value="thead">{$lang_table_thead}</option>
+ <option value="tbody">{$lang_table_tbody}</option>
+ <option value="tfoot">{$lang_table_tfoot}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="align">{$lang_table_align}</label></td>
+ <td class="col2">
+ <select id="align" name="align">
+ <option value="">{$lang_not_set}</option>
+ <option
value="center">{$lang_table_align_middle}</option>
+ <option value="left">{$lang_table_align_left}</option>
+ <option value="right">{$lang_table_align_right}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="valign">{$lang_table_valign}</label></td>
+ <td class="col2">
+ <select id="valign" name="valign">
+ <option value="">{$lang_not_set}</option>
+ <option value="top">{$lang_table_align_top}</option>
+ <option
value="middle">{$lang_table_align_middle}</option>
+ <option
value="bottom">{$lang_table_align_bottom}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr id="styleSelectRow">
+ <td><label
for="class">{$lang_class_name}</label></td>
+ <td class="col2">
+ <select id="class" name="class">
+ <option value=""
selected="selected">{$lang_not_set}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td><label
for="height">{$lang_table_height}</label></td>
+ <td class="col2"><input name="height"
type="text" id="height" value="" size="4"
maxlength="4" onchange="changedSize();" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_table_advanced_props}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="column1"><label
for="id">{$lang_table_id}</label></td>
+ <td><input id="id" name="id" type="text"
value="" style="width: 200px" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="style">{$lang_table_style}</label></td>
+ <td><input type="text" id="style"
name="style" value="" style="width: 200px;"
onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="dir">{$lang_table_langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" style="width:
200px">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_table_ltr}</option>
+ <option value="rtl">{$lang_table_rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="lang">{$lang_table_langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" style="width: 200px" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="backgroundimage">{$lang_table_bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage"
name="backgroundimage" type="text" value=""
style="width: 200px" onchange="changedBackgroundImage();"
/></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="bgcolor">{$lang_table_bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor"
type="text" value="" size="9"
onchange="updateColor('bgcolor_pick','bgcolor');changedColor();"
/></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div>
+ <select id="action" name="action">
+ <option value="row">{$lang_table_row_row}</option>
+ <option value="odd">{$lang_table_row_odd}</option>
+ <option value="even">{$lang_table_row_even}</option>
+ <option value="all">{$lang_table_row_all}</option>
+ </select>
+ </div>
+
+ <div style="float: left">
+ <div><input type="button" id="insert"
name="insert" value="{$lang_update}"
onclick="updateAction();" /></div>
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/table.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/table.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/table/table.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,156 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_table_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/validate.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/table.js"></script>
+ <link href="css/table.css" rel="stylesheet"
type="text/css" />
+ <base target="_self" />
+</head>
+<body id="table"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <form onsubmit="insertTable();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_table_general_tab}</a></span></li>
+ <li id="advanced_tab"><span><a
href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');"
onmousedown="return
false;">{$lang_table_advanced_tab}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_table_general_props}</legend>
+
+ <table border="0" cellpadding="4" cellspacing="0"
width="100%">
+ <tr>
+ <td><label id="colslabel"
for="cols">{$lang_table_cols}</label></td>
+ <td><input id="cols" name="cols"
type="text" value="" size="3" maxlength="3"
class="required number min1" /></td>
+ <td><label id="rowslabel"
for="rows">{$lang_table_rows}</label></td>
+ <td><input id="rows" name="rows"
type="text" value="" size="3" maxlength="3"
class="required number min1" /></td>
+ </tr>
+ <tr>
+ <td><label id="cellpaddinglabel"
for="cellpadding">{$lang_table_cellpadding}</label></td>
+ <td><input id="cellpadding" name="cellpadding"
type="text" value="" size="3" maxlength="3"
class="number" /></td>
+ <td><label id="cellspacinglabel"
for="cellspacing">{$lang_table_cellspacing}</label></td>
+ <td><input id="cellspacing" name="cellspacing"
type="text" value="" size="3" maxlength="3"
class="number" /></td>
+ </tr>
+ <tr>
+ <td><label id="alignlabel"
for="align">{$lang_table_align}</label></td>
+ <td><select id="align" name="align">
+ <option value="">{$lang_not_set}</option>
+ <option
value="center">{$lang_table_align_middle}</option>
+ <option value="left">{$lang_table_align_left}</option>
+ <option value="right">{$lang_table_align_right}</option>
+ </select></td>
+ <td><label id="borderlabel"
for="border">{$lang_table_border}</label></td>
+ <td><input id="border" name="border"
type="text" value="" size="3" maxlength="3"
onchange="changedBorder();" class="number" /></td>
+ </tr>
+ <tr id="width_row">
+ <td><label id="widthlabel"
for="width">{$lang_table_width}</label></td>
+ <td><input name="width" type="text"
id="width" value="" size="4" maxlength="4"
onchange="changedSize();" class="size" /></td>
+ <td><label id="heightlabel"
for="height">{$lang_table_height}</label></td>
+ <td><input name="height" type="text"
id="height" value="" size="4" maxlength="4"
onchange="changedSize();" class="size" /></td>
+ </tr>
+ <tr id="styleSelectRow">
+ <td><label id="classlabel"
for="class">{$lang_class_name}</label></td>
+ <td colspan="3">
+ <select id="class" name="class">
+ <option value="" selected>{$lang_not_set}</option>
+ </select></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+
+ <div id="advanced_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_table_advanced_props}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="column1"><label
for="id">{$lang_table_id}</label></td>
+ <td><input id="id" name="id" type="text"
value="" class="advfield" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="summary">{$lang_table_summary}</label></td>
+ <td><input id="summary" name="summary"
type="text" value="" class="advfield" /></td>
+ </tr>
+
+ <tr>
+ <td><label
for="style">{$lang_table_style}</label></td>
+ <td><input type="text" id="style"
name="style" value="" class="advfield"
onchange="changedStyle();" /></td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="dir">{$lang_table_langdir}</label></td>
+ <td>
+ <select id="dir" name="dir" class="advfield">
+ <option value="">{$lang_not_set}</option>
+ <option value="ltr">{$lang_table_ltr}</option>
+ <option value="rtl">{$lang_table_rtl}</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label id="langlabel"
for="lang">{$lang_table_langcode}</label></td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="advfield" />
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="backgroundimage">{$lang_table_bgimage}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="backgroundimage"
name="backgroundimage" type="text" value=""
class="advfield" onchange="changedBackgroundImage();"
/></td>
+ <td id="backgroundimagebrowsercontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="bordercolor">{$lang_table_bordercolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bordercolor" name="bordercolor"
type="text" value="" size="9"
onchange="updateColor('bordercolor_pick','bordercolor');changedColor();"
/></td>
+ <td id="bordercolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="column1"><label
for="bgcolor">{$lang_table_bgcolor}</label></td>
+ <td>
+ <table border="0" cellpadding="0"
cellspacing="0">
+ <tr>
+ <td><input id="bgcolor" name="bgcolor"
type="text" value="" size="9"
onchange="updateColor('bgcolor_pick','bgcolor');changedColor();"
/></td>
+ <td id="bgcolor_pickcontainer"> </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertTable();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+ </form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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},_tog!
gleVisualChars: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<nl.length;i++){nv=nl[i].nodeValue;nv=nv.replace(/(\u00a0+)/g,'<span
class="mceItemHiddenVisualChar">$1</span>');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<nl.length;i++)tinyMCE.setOuterHTML(nl[i],nl[i].innerHTML.replace(/(·|\u00b7)/g,' '),d)}}};tinyMCE.addPlugin("visualchars",TinyMCE_VisualCharsPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,89 @@
+/**
+ * $Id: editor_plugin_src.js 42 2006-08-08 14:32:24Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/* Import plugin specific language pack */
+tinyMCE.importPluginLanguagePack('visualchars');
+
+var TinyMCE_VisualCharsPlugin = {
+ getInfo : function() {
+ return {
+ longname : 'Visual characters',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl :
'http://tinymce.moxiecode.com/tinymce/docs/plugin_visualchars.html',
+ 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;
+ },
+
+ // Private plugin internal methods
+
+ _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<nl.length; i++) {
+ nv = nl[i].nodeValue;
+ nv = nv.replace(/(\u00a0+)/g, '<span
class="mceItemHiddenVisualChar">$1</span>');
+ 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<nl.length; i++)
+ tinyMCE.setOuterHTML(nl[i], nl[i].innerHTML.replace(/(·|\u00b7)/g,
' '), d);
+ }
+
+ //s.moveToBookmark(bo);
+ }
+};
+
+tinyMCE.addPlugin("visualchars", TinyMCE_VisualCharsPlugin);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/images/visualchars.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/visualchars/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,5 @@
+// EN lang variables
+
+tinyMCE.addToLang('visualchars',{
+desc : 'Visual control characters on/off.'
+});
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/abbr.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,148 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_xhtmlxtras_title_abbr_element}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/element_common.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/abbr.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/popup.css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+<form onsubmit="insertAbbr();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel"
for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
+ <td><input id="title" name="title"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel"
for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text"
value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel"
for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field
mceEditableSelect">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel"
for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
+ <td><input id="style" name="style"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel"
for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ <option
value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
+ <option
value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel"
for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label
for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertAbbr();" />
+ </div>
+ <div style="float: left">
+ <input type="button" id="remove" name="remove"
value="{$lang_xhtmlxtras_remove}" onclick="removeAbbr();"
style="display: none;" />
+ </div>
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
+</form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/acronym.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,148 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_xhtmlxtras_title_acronym_element}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/element_common.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/acronym.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/popup.css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+<form onsubmit="insertAcronym();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel"
for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
+ <td><input id="title" name="title"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel"
for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text"
value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel"
for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field
mceEditableSelect">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel"
for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
+ <td><input id="style" name="style"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel"
for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ <option
value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
+ <option
value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel"
for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label
for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertAcronym();" />
+ </div>
+ <div style="float: left">
+ <input type="button" id="remove" name="remove"
value="{$lang_xhtmlxtras_remove}" onclick="removeAcronym();"
style="display: none;" />
+ </div>
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
+</form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/cite.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,148 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_xhtmlxtras_title_cite_element}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/element_common.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/cite.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/popup.css" />
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+<form onsubmit="insertCite();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel"
for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
+ <td><input id="title" name="title"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel"
for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text"
value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel"
for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field
mceEditableSelect">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel"
for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
+ <td><input id="style" name="style"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel"
for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ <option
value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
+ <option
value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel"
for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label
for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertCite();" />
+ </div>
+ <div style="float: left">
+ <input type="button" id="remove" name="remove"
value="{$lang_xhtmlxtras_remove}" onclick="removeCite();"
style="display: none;" />
+ </div>
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
+</form>
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/popup.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/css/xhtmlxtras.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/del.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,169 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_xhtmlxtras_title_del_element}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/element_common.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/del.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/popup.css" />
+ <base target="_self" />
+</head>
+<body id="xhtmlxtrasins"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+<form onsubmit="insertDel();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="datetimelabel"
for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="datetime" name="datetime"
type="text" value="" maxlength="19" class="field"
/></td>
+ <td><a href="javascript:insertDateTime('datetime');"
class="mceButtonNormal"><img src="images/date_time.gif"
class="picker" alt="{$lang_xhtmlxtras_insert_date}"
title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="citelabel"
for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
+ <td><input id="cite" name="cite" type="text"
value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel"
for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
+ <td><input id="title" name="title"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel"
for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text"
value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel"
for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field
mceEditableSelect">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel"
for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
+ <td><input id="style" name="style"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel"
for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ <option
value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
+ <option
value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel"
for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label
for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertDel();" />
+ </div>
+ <div style="float: left">
+ <input type="button" id="remove" name="remove"
value="{$lang_xhtmlxtras_remove}" onclick="removeDel();"
style="display: none;" />
+ </div>
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
+</form>
+
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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:'htt...
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":retur!
n
tinyMCE.getButtonHTML(cn,'lang_xhtmlxtras_ins_desc','{$pluginurl}/images/ins.gif','mceIns',true)}return""},execCommand:function(editor_id,element,command,user_interface,value){var
template;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 A!
rray();template['file']='../../plugins/xhtmlxtras/ins.htm';template['w
idth']=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}return
false},cleanup:function(type,content,inst){if(type=='insert_to_editor'&&tinyMCE.isIE&&!tinyMCE.isOpera){content=content.replace(/<abbr([^>]+)>/gi,'<html:ABBR
$1>');content=content.replace(/<\/abbr>/gi,'</html:ABBR>')}return
content},handleNodeChange:function(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){if(node==null)return;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','mceButtonDis!
abled')}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')}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.addPlugi
n("xhtmlxtras",TinyMCE_XHTMLXtrasPlugin);
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,175 @@
+ /**
+ * $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.
+ */
+
+/* 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://tinymce.moxiecode.com/tinymce/docs/plugin_xhtmlxtras.html',
+ 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);
+ }
+
+ return "";
+ },
+
+ execCommand : function(editor_id, element, command, user_interface, value) {
+ var template;
+
+ 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;
+ }
+
+ return false;
+ },
+
+ cleanup : function(type, content, inst) {
+ if (type == 'insert_to_editor' && tinyMCE.isIE &&
!tinyMCE.isOpera) {
+ content = content.replace(/<abbr([^>]+)>/gi, '<html:ABBR
$1>');
+ content = content.replace(/<\/abbr>/gi, '</html:ABBR>');
+ }
+
+ return content;
+ },
+
+ handleNodeChange : function(editor_id, node, undo_index,undo_levels, visual_aid,
any_selection) {
+ if (node == null)
+ return;
+
+ 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');
+ }
+
+ 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);
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/abbr.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/acronym.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/cite.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/date_time.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/del.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/ins.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/images/remove_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/ins.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,169 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_xhtmlxtras_title_ins_element}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/editable_selects.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/element_common.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/ins.js"></script>
+ <link rel="stylesheet" type="text/css"
href="css/popup.css" />
+ <base target="_self" />
+</head>
+<body id="xhtmlxtrasins"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+<form onsubmit="insertIns();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_general_tab}</a></span></li>
+ <!-- <li id="events_tab"><span><a
href="javascript:mcTabs.displayTab('events_tab','events_panel');"
onmousedown="return
false;">{$lang_xhtmlxtras_events_tab}</a></span></li> -->
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_general_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="datetimelabel"
for="datetime">{$lang_xhtmlxtras_attribute_label_datetime}</label>:</td>
+ <td>
+ <table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="datetime" name="datetime"
type="text" value="" maxlength="19" class="field"
/></td>
+ <td><a href="javascript:insertDateTime('datetime');"
class="mceButtonNormal"><img src="images/date_time.gif"
class="picker" alt="{$lang_xhtmlxtras_insert_date}"
title="{$lang_xhtmlxtras_insert_date}" /></a></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="citelabel"
for="cite">{$lang_xhtmlxtras_attribute_label_cite}</label>:</td>
+ <td><input id="cite" name="cite" type="text"
value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_attrib_tab}</legend>
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label id="titlelabel"
for="title">{$lang_xhtmlxtras_attribute_label_title}</label>:</td>
+ <td><input id="title" name="title"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="idlabel"
for="id">{$lang_xhtmlxtras_attribute_label_id}</label>:</td>
+ <td><input id="id" name="id" type="text"
value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="classlabel"
for="class">{$lang_xhtmlxtras_attribute_label_class}</label>:</td>
+ <td>
+ <select id="class" name="class" class="field
mceEditableSelect">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="stylelabel"
for="class">{$lang_xhtmlxtras_attribute_label_style}</label>:</td>
+ <td><input id="style" name="style"
type="text" value="" class="field" /></td>
+ </tr>
+ <tr>
+ <td class="label"><label id="dirlabel"
for="dir">{$lang_xhtmlxtras_attribute_label_langdir}</label>:</td>
+ <td>
+ <select id="dir" name="dir" class="field">
+ <option value="">{$lang_xhtmlxtras_not_set}</option>
+ <option
value="ltr">{$lang_xhtmlxtras_attribute_option_ltr}</option>
+ <option
value="rtl">{$lang_xhtmlxtras_attribute_option_rtl}</option>
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <td class="label"><label id="langlabel"
for="lang">{$lang_xhtmlxtras_attribute_label_langcode}</label>:</td>
+ <td>
+ <input id="lang" name="lang" type="text"
value="" class="field" />
+ </td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ <div id="events_panel" class="panel">
+ <fieldset>
+ <legend>{$lang_xhtmlxtras_fieldset_events_tab}</legend>
+
+ <table border="0" cellpadding="0"
cellspacing="4">
+ <tr>
+ <td class="label"><label
for="onfocus">onfocus</label>:</td>
+ <td><input id="onfocus" name="onfocus"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onblur">onblur</label>:</td>
+ <td><input id="onblur" name="onblur"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onclick">onclick</label>:</td>
+ <td><input id="onclick" name="onclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="ondblclick">ondblclick</label>:</td>
+ <td><input id="ondblclick" name="ondblclick"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousedown">onmousedown</label>:</td>
+ <td><input id="onmousedown" name="onmousedown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseup">onmouseup</label>:</td>
+ <td><input id="onmouseup" name="onmouseup"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseover">onmouseover</label>:</td>
+ <td><input id="onmouseover" name="onmouseover"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmousemove">onmousemove</label>:</td>
+ <td><input id="onmousemove" name="onmousemove"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onmouseout">onmouseout</label>:</td>
+ <td><input id="onmouseout" name="onmouseout"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeypress">onkeypress</label>:</td>
+ <td><input id="onkeypress" name="onkeypress"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeydown">onkeydown</label>:</td>
+ <td><input id="onkeydown" name="onkeydown"
type="text" value="" class="field" /></td>
+ </tr>
+
+ <tr>
+ <td class="label"><label
for="onkeyup">onkeyup</label>:</td>
+ <td><input id="onkeyup" name="onkeyup"
type="text" value="" class="field" /></td>
+ </tr>
+ </table>
+ </fieldset>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertIns();" />
+ </div>
+ <div style="float: left">
+ <input type="button" id="remove" name="remove"
value="{$lang_xhtmlxtras_remove}" onclick="removeIns();"
style="display: none;" />
+ </div>
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
+</form>
+
+</body>
+</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/abbr.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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-2006, 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/acronym.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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-2006, 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/cite.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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-2006, 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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/del.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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-2006, 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, '<del
id="#sxe_temp_del#">' + s + '</del>');
+ var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(),
'del', 'id', '#sxe_temp_del#');
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+ setElementAttribs(elm);
+ }
+ }
+ } else {
+ setElementAttribs(elm);
+ }
+ tinyMCE.triggerNodeChange();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function removeDel() {
+ SXE.removeElement('del');
+ tinyMCEPopup.close();
+}
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/element_common.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,241 @@
+ /**
+ * $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 initCommonAttributes(elm) {
+ var formObj = document.forms[0];
+
+ // Setup form data for common element attributes
+ setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
+ setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
+ selectByValue(formObj, 'class', tinyMCE.getAttrib(elm, 'class'), true);
+ setFormValue('style', tinyMCE.getAttrib(elm, 'style'));
+ selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
+ setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
+ setFormValue('onfocus', tinyMCE.getAttrib(elm, 'onfocus'));
+ setFormValue('onblur', tinyMCE.getAttrib(elm, 'onblur'));
+ setFormValue('onclick', tinyMCE.getAttrib(elm, 'onclick'));
+ setFormValue('ondblclick', tinyMCE.getAttrib(elm, 'ondblclick'));
+ setFormValue('onmousedown', tinyMCE.getAttrib(elm, 'onmousedown'));
+ setFormValue('onmouseup', tinyMCE.getAttrib(elm, 'onmouseup'));
+ setFormValue('onmouseover', tinyMCE.getAttrib(elm, 'onmouseover'));
+ setFormValue('onmousemove', tinyMCE.getAttrib(elm, 'onmousemove'));
+ setFormValue('onmouseout', tinyMCE.getAttrib(elm, 'onmouseout'));
+ setFormValue('onkeypress', tinyMCE.getAttrib(elm, 'onkeypress'));
+ setFormValue('onkeydown', tinyMCE.getAttrib(elm, 'onkeydown'));
+ setFormValue('onkeyup', tinyMCE.getAttrib(elm, 'onkeyup'));
+}
+
+function setFormValue(name, value) {
+ if(document.forms[0].elements[name]) document.forms[0].elements[name].value = value;
+}
+
+function insertDateTime(id) {
+ document.getElementById(id).value = getDateTime(new Date(),
"%Y-%m-%dT%H:%M:%S");
+}
+
+function getDateTime(d, fmt) {
+ 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("%%", "%");
+
+ return fmt;
+}
+
+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;
+}
+
+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<sel.options.length; i++) {
+ var option = sel.options[i];
+
+ if (option.value == value || (ignore_case && option.value.toLowerCase() ==
value.toLowerCase())) {
+ option.selected = true;
+ found = true;
+ } else
+ option.selected = false;
+ }
+
+ if (!found && add_custom && value != '') {
+ var option = new Option('Value: ' + value, value);
+ option.selected = true;
+ sel.options[sel.options.length] = option;
+ }
+
+ return found;
+}
+
+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 != "") {
+ if (attrib == "style")
+ attrib = "style.cssText";
+
+ if (attrib.substring(0, 2) == 'on')
+ value = 'return true;' + value;
+
+ if (attrib == "class") {
+ tinyMCE.addCSSClass(elm, value);
+ return;
+ }
+
+ elm.setAttribute(attrib.toLowerCase(), value);
+ } else
+ elm.removeAttribute(attrib);
+}
+
+function setAllCommonAttribs(elm) {
+ setAttrib(elm, 'title');
+ setAttrib(elm, 'id');
+ setAttrib(elm, 'class');
+ setAttrib(elm, 'style');
+ setAttrib(elm, 'dir');
+ setAttrib(elm, 'lang');
+ /*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');*/
+}
+
+SXE = {
+ currentAction : "insert",
+ inst : tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id')),
+ updateElement : null
+}
+
+SXE.focusElement = SXE.inst.getFocusElement();
+
+SXE.initElementDialog = function(element_name) {
+ addClassesToList('class', 'xhtmlxtras_styles');
+ TinyMCE_EditableSelects.init();
+
+ element_name = element_name.toLowerCase();
+ var elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
+ if (elm != null && elm.nodeName == element_name.toUpperCase()) {
+ SXE.currentAction = "update";
+ }
+
+ if (SXE.currentAction == "update") {
+ initCommonAttributes(elm);
+ SXE.updateElement = elm;
+ }
+
+ document.forms[0].insert.value = tinyMCE.getLang('lang_' + SXE.currentAction,
'Insert', true);
+}
+
+SXE.insertElement = function(element_name) {
+ var elm = tinyMCE.getParentElement(SXE.focusElement, element_name), h, tagName;
+
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ if (elm == null) {
+ var s = SXE.inst.selection.getSelectedHTML();
+ if(s.length > 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 + '</' + tagName + '>';
+
+ tinyMCEPopup.execCommand('mceInsertContent', false, h);
+
+ var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(),
element_name, 'id', '#sxe_temp_' + element_name + '#');
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+
+ elm.id = '';
+ elm.setAttribute('id', '');
+ elm.removeAttribute('id');
+
+ setAllCommonAttribs(elm);
+ }
+ }
+ } else {
+ setAllCommonAttribs(elm);
+ }
+ tinyMCE.triggerNodeChange();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+}
+
+SXE.removeElement = function(element_name){
+ element_name = element_name.toLowerCase();
+ elm = tinyMCE.getParentElement(SXE.focusElement, element_name);
+ if(elm && elm.nodeName == element_name.toUpperCase()){
+ tinyMCEPopup.execCommand('mceBeginUndoLevel');
+ tinyMCE.execCommand('mceRemoveNode', false, elm);
+ tinyMCE.triggerNodeChange();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ }
+}
+
+SXE.showRemoveButton = function() {
+ document.getElementById("remove").style.display = 'block';
+}
+
+SXE.containsClass = function(elm,cl) {
+ return (elm.className.indexOf(cl) > -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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/jscripts/ins.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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-2006, 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, '<ins
id="#sxe_temp_ins#">' + s + '</ins>');
+ var elementArray = tinyMCE.getElementsByAttributeValue(SXE.inst.getBody(),
'ins', 'id', '#sxe_temp_ins#');
+ for (var i=0; i<elementArray.length; i++) {
+ var elm = elementArray[i];
+ setElementAttribs(elm);
+ }
+ }
+ } else {
+ setElementAttribs(elm);
+ }
+ tinyMCE.triggerNodeChange();
+ tinyMCEPopup.execCommand('mceEndUndoLevel');
+ tinyMCEPopup.close();
+}
+
+function removeIns() {
+ SXE.removeElement('ins');
+ tinyMCEPopup.close();
+}
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/xhtmlxtras/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,33 @@
+// UK lang variables
+
+tinyMCE.addToLang('xhtmlxtras',{
+cite_desc : 'Citation',
+abbr_desc : 'Abbreviation',
+acronym_desc : 'Acronym',
+del_desc : 'Deletion',
+ins_desc : 'Insertion',
+attribute_label_title : 'Title',
+attribute_label_id : 'ID',
+attribute_label_class : 'Class',
+attribute_label_style : 'Style',
+attribute_label_cite : 'Cite',
+attribute_label_datetime : 'Date/Time',
+attribute_label_langdir : 'Text Direction',
+attribute_option_ltr : 'Left to right',
+attribute_option_rtl : 'Right to left',
+attribute_label_langcode : 'Language',
+general_tab : 'General',
+attrib_tab : 'Attributes',
+events_tab : 'Events',
+fieldset_general_tab : 'General Settings',
+fieldset_attrib_tab : 'Element Attributes',
+fieldset_events_tab : 'Element Events',
+title_ins_element : 'Insertion Element',
+title_del_element : 'Deletion Element',
+title_acronym_element : 'Acronym Element',
+title_abbr_element : 'Abbreviation Element',
+title_cite_element : 'Citation Element',
+remove : 'Remove',
+not_set : '--not set--',
+insert_date : 'Insert current date/time'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,38 +1 @@
-/* Import theme specific language pack */
-tinyMCE.importPluginLanguagePack('zoom', 'uk,se');
-
-/**
- * Returns the HTML contents of the zoom control.
- */
-function TinyMCE_zoom_getControlHTML(control_name) {
- if (!tinyMCE.isMSIE)
- return "";
-
- switch (control_name) {
- case "zoom":
- return '<select id="{$editor_id}_formatSelect"
name="{$editor_id}_zoomSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">\
- <option value="100%">{$lang_zoom_prefix} 100%</option>\
- <option value="150%">{$lang_zoom_prefix} 150%</option>\
- <option value="200%">{$lang_zoom_prefix} 200%</option>\
- <option value="250%">{$lang_zoom_prefix} 250%</option>\
- </select>';
- }
-
- return "";
-}
-
-/**
- * Executes the mceZoom command.
- */
-function TinyMCE_zoom_execCommand(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;
-}
+var
TinyMCE_ZoomPlugin={getInfo:function(){return{longname:'Zoom',author:'Moxiecode
Systems
AB',authorurl:'http://tinymce.moxiecode.com',infourl:'htt...
id="{$editor_id}_zoomSelect" name="{$editor_id}_zoomSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">'+'<option value="100%">+
100%</option>'+'<option value="150%">+
150%</option>'+'<option value="200%">+
200%</option>'+'<option value="250%">+
250%</option>'+'</select>'}return""},execCommand:function(editor_id,element,command,user_interface,value){switch(command){case"mceZoom":tinyMCE.getInstanceById(editor_id).con!
tentDocument.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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/editor_plugin_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,56 @@
+/**
+ * $Id: editor_plugin_src.js 126 2006-10-22 16:19:55Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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://tinymce.moxiecode.com/tinymce/docs/plugin_zoom.html',
+ 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 '<select id="{$editor_id}_zoomSelect"
name="{$editor_id}_zoomSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">' +
+ '<option value="100%">+ 100%</option>' +
+ '<option value="150%">+ 150%</option>' +
+ '<option value="200%">+ 200%</option>' +
+ '<option value="250%">+ 250%</option>' +
+ '</select>';
+ }
+
+ 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);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/plugins/zoom/readme.txt 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,22 +1 @@
- Zoom plugin for TinyMCE
---------------------------
-
-About:
- Adds a zoom drop list in MSIE, this plugin was mostly created to
- show how to add custom droplists as plugins.
-
-Installation instructions:
- * Copy the zoom directory to the plugins directory of TinyMCE
(/jscripts/tiny_mce/plugins).
- * Add plugin to TinyMCE plugin option list example: plugins : "zoom".
- * Add the preview button name to button list, example: theme_advanced_buttons3_add :
"zoom".
-
-Initialization example:
- tinyMCE.init({
- theme : "advanced",
- mode : "textareas",
- plugins : "preview",
- theme_advanced_buttons3_add : "zoom"
- });
-
-Requirement:
- This plugin requires MSIE on Mozilla the button will not be visible.
+Check the TinyMCE documentation for details on this plugin.
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/about.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/about.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/about.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,52 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <title>{$lang_about_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/about.js"></script>
+ <base target="_self" />
+</head>
+<body id="about"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return false;">{$lang_about}</a></span></li>
+ <li id="help_tab"><span><a
href="javascript:mcTabs.displayTab('help_tab','help_panel');"
onmousedown="return false;">{$lang_help}</a></span></li>
+ <li id="plugins_tab"><span><a
href="javascript:mcTabs.displayTab('plugins_tab','plugins_panel');"
onmousedown="return
false;">{$lang_plugins}</a></span></li>
+ </ul>
+ </div>
+
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <h3>{$lang_about_title}</h3>
+ <p>Version: {$tinymce_version} ({$tinymce_releasedate})</p>
+ <p>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor
control released as Open Source under <a href="../../license.txt"
target="_blank">LGPL</a>
+ by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other
HTML elements to editor instances.</p>
+ <p>Copyright © 2003-2006, <a
href="http://www.moxiecode.com" target="_blank">Moxiecode Systems
AB</a>, All rights reserved.</p>
+ <p>For more information about this software visit the <a
href="http://tinymce.moxiecode.com" target="_blank">TinyMCE
website</a>.</p>
+
+ <div id="buttoncontainer"></div>
+ </div>
+
+ <div id="plugins_panel" class="panel">
+ <div id="pluginscontainer">
+ <h3>{$lang_loaded_plugins}</h3>
+
+ <div id="plugintablecontainer">
+ </div>
+
+ <p> </p>
+ </div>
+ </div>
+
+ <div id="help_panel" class="panel noscroll"
style="overflow: visible;">
+ <div id="iframecontainer"></div>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_close}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+</body>
+</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/anchor.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,46 +1,33 @@
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_anchor_title}</title>
-<script language="javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
- function init() {
- document.forms[0].anchorName.value = tinyMCE.getWindowArg('name');
- document.forms[0].insert.value = tinyMCE.getLang('lang_' +
tinyMCE.getWindowArg('action'));
- window.focus();
- }
+ <title>{$lang_insert_anchor_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/anchor.js"></script>
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
+<form onsubmit="insertAnchor();return false;" action="#">
- function insertAnchor() {
- if (window.opener) {
- tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),
'mceAnchor', false, document.forms[0].anchorName.value);
- top.close();
- }
- }
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td colspan="2"
class="title">{$lang_insert_anchor_title}</td>
+ </tr>
+ <tr>
+ <td nowrap="nowrap">{$lang_insert_anchor_name}:</td>
+ <td><input name="anchorName" type="text"
id="anchorName" value="" style="width: 200px"
/></td>
+ </tr>
+ </table>
- function cancelAction() {
- top.close();
- }
-</script>
-</head>
-<body onload="init();">
-<form onsubmit="insertAnchor();return false;">
- <table border="0" cellpadding="0" cellspacing="0"
width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
- <tr>
- <td colspan="2"
class="title">{$lang_insert_anchor_title}</td>
- </tr>
- <tr>
- <td>{$lang_insert_anchor_name}:</td>
- <td><input name="anchorName" type="text"
id="anchorName" value="" style="width:
200px"></td>
- </tr>
- <tr>
- <td><input type="button" id="insert"
name="insert" value="{$lang_insert}"
onclick="insertAnchor();">
- </td>
- <td align="right"><input type="button"
id="cancel" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();"></td>
- </tr>
- </table></td>
- </tr>
- </table>
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_update}" onclick="insertAnchor();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
+
</form>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/charmap.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,351 +1,22 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_theme_charmap_title}</title>
-<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- 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 = '<table border="0" cellspacing="1"
cellpadding="0" width="' + (tdWidth*charsPerRow) +
'"><tr height="' + tdHeight + '">';
- var cols=-1;
- for (var i=0; i<charmap.length; i++) {
- if (charmap[i][2]==true) {
- cols++;
- html += ''
- + '<td width="' + tdWidth + '"
height="' + tdHeight + '" class="charmap"'
- + '
onmouseover="tinyMCE.switchClass(this,\'charmapOver\');'
- + 'previewChar(\'' +
charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' +
charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3]
+ '\');"'
- + '
onmouseout="tinyMCE.restoreClass(this,\'charmapOver\');"'
- + ' onclick="insertChar(\'' +
charmap[i][1].substring(2,charmap[i][1].length-1) + '\');return false;"'
- + ' title="' + charmap[i][3] + '"
nowrap="nowrap">'
- + charmap[i][1]
- + '</td>';
- if ((cols+1) % charsPerRow == 0)
- html += '</tr><tr height="' + tdHeight +
'">';
- }
- }
- if (cols % charsPerRow > 0) {
- var padd = charsPerRow - (cols % charsPerRow);
- for (var i=0; i<padd-1; i++)
- html += '<td width="' + tdWidth + '"
height="' + tdHeight + '"
class="charmap"> </td>';
- }
- html += '</tr></table>';
- document.write(html);
- }
-
- function insertChar(chr) {
- tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),
'mceInsertContent', false, '\&#' + chr + ';');
- //window.close();
- self.focus();
- }
-
- 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;
- }
-
- window.focus();
-//-->
-</script>
+ <title>{$lang_theme_charmap_title}</title>
+ <meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1" />
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/charmap.js"></script>
+ <base target="_self" />
</head>
-<body>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="display: none">
<table align="center" border="0" cellspacing="0"
cellpadding="2">
<tr>
<td colspan="2"
class="title">{$lang_theme_charmap_title}</td>
</tr>
<tr>
<td rowspan="2" align="left" valign="top">
- <script language="javascript"
type="text/javascript">
- <!--
- renderCharMapHTML();
- //-->
- </script>
+ <script language="javascript"
type="text/javascript">renderCharMapHTML();</script>
</td>
<td width="100" align="center" valign="top">
- <table border="0" cellpadding="0"
cellspacing="0" width="100" height="100">
+ <table border="0" cellpadding="0"
cellspacing="0" width="100" style="height: 100px">
<tr>
<td class="charmapOver" style="font-size: 40px;
height:80px;" id="codeV"> </td>
</tr>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/color_picker.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,272 +1,13 @@
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_theme_colorpicker_title}</title>
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- function selectColor() {
- var color = document.getElementById("selectedColorBox").value;
- if (window.opener)
-
window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color);
- window.close();
- }
- function showColor(color) {
- document.getElementById("selectedColor").style.backgroundColor =
color;
- document.getElementById("selectedColorBox").value = color;
- }
-
- window.focus();
-
- var colorPicker = "";
- 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"
- );
-
- colorPicker += '<table border="0" cellspacing="1"
cellpadding="0">'
- + '<tr>';
- for (var i=0; i<colors.length; i++) {
- colorPicker += '<td bgcolor="' + colors[i] +
'">'
- + '<a href="#top" onclick="selectColor();return
false;" onmouseover="showColor(\'' + colors[i] +
'\');">'
- + '<img border="0" src="images/spacer.gif"
width="10" height="10" /></a></td>';
- if ((i+1) % 18 == 0)
- colorPicker += '</tr><tr>';
- }
- colorPicker += '<tr><td colspan="18">'
- + '<table width="100%" border="0"
cellspacing="0" cellpadding="0">'
- + '<tr><td>'
- + '<img id="selectedColor" style="background-color:' +
tinyMCE.getWindowArg('input_color') + '" border="0"
src="images/spacer.gif" width="80" height="16" />'
- + '</td><td align="right">'
- + '<input id="selectedColorBox"
name="selectedColorBox" type="text" size="7"
maxlength="7" style="width:65px" value="' +
tinyMCE.getWindowArg('input_color') + '" />'
- + '</td></tr>'
- + '</table>'
- + '<input type="button" id="insert"
name="insert" value="{$lang_theme_colorpicker_apply}"
style="margin-top:3px" onclick="selectColor();">'
- + '</td></tr>'
- + '</table>';
-//-->
-</script>
+ <title>{$lang_theme_colorpicker_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/color_picker.js"></script>
+ <base target="_self" />
</head>
-<body marginheight="3" topmargin="3" leftmargin="3"
marginwidth="3">
-<div align="center">
- <script language="javascript" type="text/javascript">
- <!--
- document.write(colorPicker);
- //-->
- </script>
-</div>
+<body onload="tinyMCEPopup.executeOnLoad('init();');"
style="margin: 3px; display: none">
+ <div align="center">
+ <script language="javascript"
type="text/javascript">renderColorMap();</script>
+ </div>
</body>
</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_content.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_popup.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
+*/
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/css/editor_ui.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 {position: relative; left: 0; top: 0; display: block;}
+.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: 100;
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: 130px; margin: 0; padding: 0; margin-left: 3px;
margin-bottom: 3px; text-align: center; border: 1px solid white;}
+.mceColorPreview {position: absolute; 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: 132px;}
+* 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: 132px;}
+*:first-child+html .mceColors td a {width: 10px; height: 10px;}
+*:first-child+html .mceColorPreview {margin: 0; padding-left: 4px; margin-top: 14px;
width: 14px;}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/about.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,31 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>About TinyMCE</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">About TinyMCE</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+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.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/common_buttons.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,162 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Common buttons</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Common buttons</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+Below is a short description about each button.
+<br>
+<br>
+<table border="1" cellpadding="3" cellspacing="0">
+ <tr>
+ <td><img src="../../images/bold.gif" width="20"
height="20" alt="Bold text icon" /></td>
+ <td>Bold text style (Ctrl+B).</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/italic.gif" width="20"
height="20" alt="Italic text icon" /></td>
+ <td>Italic text style (Ctrl+I).</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/underline.gif" width="20"
height="20" alt="Underline text icon." /></td>
+ <td>Underline text style (Ctrl+U).</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/strikethrough.gif" width="20"
height="20" alt="Strikethrough text icon." /></td>
+ <td>Strikethrough text style.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/justifyleft.gif" width="20"
height="20" alt="Align left icon." /></td>
+ <td>Align left.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/justifycenter.gif" width="20"
height="20" alt="Align center icon." /></td>
+ <td>Align center.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/justifyright.gif" width="20"
height="20" alt="Align right icon." /></td>
+ <td>Align right.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/justifyfull.gif" width="20"
height="20" alt="Align full icon." /></td>
+ <td>Align full.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/bullist.gif" width="20"
height="20" alt="Unordered list/bullet list icon." /></td>
+ <td>Unordered list/bullet list.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/numlist.gif" width="20"
height="20" alt="Ordered list/numbered list icon." /></td>
+ <td>Ordered list/numbered list</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/outdent.gif" width="20"
height="20" alt="Outdent/decrease indentation icon." /></td>
+ <td>Outdent/decrease indentation.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/indent.gif" width="20"
height="20" alt="Indent/increase indentation icon." /></td>
+ <td>Indent/increase indentation.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/undo.gif" width="20"
height="20" alt="Undo the last operation." /></td>
+ <td>Undo the last operation (Ctrl+Z).</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/redo.gif" width="20"
height="20" alt="Redo the last operation icon." /></td>
+ <td>Redo the last operation (Ctrl+Y).</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/link.gif" width="20"
height="20" alt="Insert a new link icon." /></td>
+ <td>Insert a new link, read more about this function in the <a
href="insert_link_button.htm">Insert
+ link section</a>.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/unlink.gif" width="20"
height="20" alt="Unlinks the current selection icon."
/></td>
+ <td>Unlinks the current selection/removes all selected links.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/anchor.gif" width="20"
height="20" alt="Insert a new anchor icon." /></td>
+ <td>Insert a new anchor, read more about this function in the <a
href="insert_anchor_button.htm">Insert anchor section.</a></td>
+ </tr>
+ <tr>
+ <td><img src="../../images/image.gif" width="20"
height="20" alt="Insert a new image icon." /></td>
+ <td>Insert a new image, read more about this function in the <a
href="insert_image_button.htm">Insert
+ image section</a>.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/cleanup.gif" width="20"
height="20" alt="Cleanup code icon." /></td>
+ <td>Cleanup code/Removes unwanted formating. This function is useful when
+ you copy contents from for example a office product.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/help.gif" width="20"
height="20" alt="Show help icon." /></td>
+ <td>Shows this help window.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/code.gif" width="20"
height="20" alt="Source code editor icon." /></td>
+ <td>Opens HTML source code editor. </td>
+ </tr>
+ <tr>
+ <td><img src="../../../../plugins/table/images/table.gif"
width="20" height="20" alt="Insert table icon."
/></td>
+ <td>Inserts a new table at the current location. </td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_insert_row_before.gif"
width="20" height="20" alt="Adds a row above icon."
/></td>
+ <td>Adds a row above the current one. </td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_insert_row_after.gif"
width="20" height="20" alt="Adds a row under icon."
/></td>
+ <td>Adds a row under the current one. </td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_delete_row.gif" width="20"
height="20" alt="Remove row icon." /></td>
+ <td>Removes the row. </td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_insert_col_before.gif"
width="20" height="20" alt="Add column before icon."
/></td>
+ <td>Adds a column before the current one.</td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_insert_col_after.gif"
width="20" height="20" alt="Add column after icon."
/></td>
+ <td>Adds a column after the current one.</td>
+ </tr>
+ <tr>
+ <td><img
src="../../../../plugins/table/images/table_delete_col.gif" width="20"
height="20" alt="Remove column icon." /></td>
+ <td>Removes the current column.</td>
+ </tr>
+ <tr>
+ <td><img src="../../images/hr.gif" width="20"
height="20" alt="Insert horizontal ruler icon." /></td>
+ <td>Inserts a new horizontal ruler </td>
+ </tr>
+ <tr>
+ <td><img src="../../images/removeformat.gif" width="20"
height="20" alt="Remove formatting icon." /></td>
+ <td>Removes formatting from the selection. </td>
+ </tr>
+ <tr>
+ <td><img src="../../images/sub.gif" width="20"
height="20" alt="Subscript icon." /></td>
+ <td>Makes the selection to be subscript. </td>
+ </tr>
+ <tr>
+ <td><img src="../../images/sup.gif" width="20"
height="20" alt="Superscript icon." /></td>
+ <td>Makes the selection to be superscripted. </td>
+ </tr>
+</table>
+<br>
+<hr noshade="noshade" />
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,45 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Create accessible
content</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<p>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. </p>
+
+<p><strong>Things you can do to make your content
accessible:</strong></p>
+<ol>
+<li><strong>Include an Image Description:</strong> 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. <br
/><br /></li>
+
+<li> <strong>Add Scope to data table header cells:</strong> 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. <br /><br
/></li>
+
+<li><strong> Structure content with properly nested headings:</strong>
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.<br
/><br /></li>
+
+<li><strong> Include alternate content:</strong> 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.<br /><br /></li>
+
+<li><strong> Check accessbility: </strong> When the AChecker plugin is
installed with TinyMCE, click on the Check Accessibility button to generate a report of
potential accessibility problems.<br /><br /></li>
+
+</ol>
+
+<p>See the <a href="http://checker.atrc.utoronto.ca"
target="_new">AChecker Web Site</a> for further details about creating
content that will be accessible to all users.<br />
+</p>
+
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/index.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,27 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Help Index</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+<BODY onload="window.focus();">
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Table of
contents</span></td>
+ <td align="right"> </td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+Click the links below to go to the different help sections.
+<ul class="toc_ul">
+ <li class="toc_li"><a href="about.htm">About
TinyMCE</a></li>
+ <li class="toc_li"><a href="common_buttons.htm">Common
buttons</a></li>
+ <li class="toc_li"><a
href="insert_image_button.htm">Insert image button</a></li>
+ <li class="toc_li"><a
href="insert_link_button.htm">Insert link button</a></li>
+ <li class="toc_li"><a
href="insert_anchor_button.htm">Insert anchor button</a></li>
+ <li class="toc_li"><a
href="insert_table_button.htm">Insert table button</a></li>
+ <li class="toc_li"><a
href="create_accessible_content.htm">Create accessible
content</a></li>
+</ul>
+<hr noshade>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,32 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert anchor button</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Insert anchor
button</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit anchor function.<br>
+<br>
+<img src="images/insert_anchor_window.gif" width="330"
height="139" alt="Anchor dialog/window" /><br>
+<br>
+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. <br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_image_button.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,65 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert image button</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Insert image
button</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+The insert image button opens the window shown below.<br>
+<br>
+<img src="images/insert_image_window.gif" alt="Insert image
dialog/window" /><br>
+<br>
+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.<br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+ <tr>
+ <td width="150"><strong>Image URL </strong></td>
+ <td>URL/path to the image.</td>
+ </tr>
+ <tr>
+ <td width="150"><strong>Image description
</strong></td>
+ <td>Alternative description of image contents.</td>
+ </tr>
+ <tr>
+ <td><strong>Dimentions</strong></td>
+ <td>Image width/height. </td>
+ </tr>
+ <tr>
+ <td><strong>Alignment</strong></td>
+ <td>Image alignment, useful when wrapping text around images.</td>
+ </tr>
+ <tr>
+ <td><strong>Border</strong></td>
+ <td>Border thickness. </td>
+ </tr>
+ <tr>
+ <td><strong>VSpace</strong></td>
+ <td>Vertical space, useful when wrapping text around images.</td>
+ </tr>
+ <tr>
+ <td><strong>HSpace</strong></td>
+ <td>Horizontal space, useful when wrapping text around images.</td>
+ </tr>
+</table>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_link_button.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,33 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert link button</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Insert link
button</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+This button opens a new window with the insert/edit link function.<br>
+<br>
+<img src="images/insert_link_window.gif" width="330"
height="159" alt="Insert link dialog/window" /><br>
+<br>
+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.<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/insert_table_button.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,71 @@
+<html
xmlns="http://www.w3.org/1999/xhtml">
+<HEAD>
+<TITLE>Insert table button</TITLE>
+<link href="style.css" rel="stylesheet"
type="text/css">
+</HEAD>
+
+<BODY>
+
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pageheader">
+ <tr>
+ <td><span class="title">Insert table
button</span></td>
+ <td align="right"><a href="index.htm"><acronym
title="Table of contents">TOC</acronym></a></td>
+ </tr>
+</table>
+<hr noshade>
+<br>
+The insert table button opens the window shown below. This action enables you to create
tables. <br>
+<br>
+<img src="images/insert_table_window.gif" width="340"
height="229" alt="Image of table window" /><br>
+<br>
+<strong>Field descriptions:</strong><br>
+<table border="1" cellspacing="0">
+ <tr>
+ <td width="150"><strong>Columns</strong></td>
+ <td>Number of columns in the table. </td>
+ </tr>
+ <tr>
+ <td width="150"><strong>Rows</strong></td>
+ <td>Number of rows in the new table.</td>
+ </tr>
+ <tr>
+ <td><strong>Cellpadding</strong></td>
+ <td>Cellpadding of the table . </td>
+ </tr>
+ <tr>
+ <td><strong>Cellspacing</strong></td>
+ <td>Cellspacing of the table .</td>
+ </tr>
+ <tr>
+ <td><strong>Alignment</strong></td>
+ <td>Table alignment . </td>
+ </tr>
+ <tr>
+ <td><strong>Border</strong></td>
+ <td>Border thinkness of table.</td>
+ </tr>
+ <tr>
+ <td><strong>Width</strong></td>
+ <td>Width in pixels of table .</td>
+ </tr>
+ <tr>
+ <td><strong>Height</strong></td>
+ <td>Height in pixels of table.</td>
+ </tr>
+ <tr>
+ <td><strong>Class</strong></td>
+ <td>Style or CSS class of table.</td>
+ </tr>
+</table>
+<br>
+<br>
+<hr noshade>
+<table width="100%" border="0" cellpadding="1"
cellspacing="3" class="pagefooter">
+ <tr>
+ <td>Go to: <a href="index.htm">Table of
contents</a></td>
+ <td align="right"><a
href="#">Top</a></td>
+ </tr>
+</table>
+<br>
+</BODY>
+</HTML>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/docs/en/style.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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; }
+
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,20 +1 @@
-/* Import theme specific language pack */
- tinyMCE.importThemeLanguagePack();var TinyMCE_advanced_autoImportCSSClasses=true;var
TinyMCE_advanced_foreColor="#000000";var
TinyMCE_advanced_anchorName="";var
TinyMCE_advanced_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','left.gif','{$lang_justifyleft_desc}','JustifyLeft'],['justifycenter','center.gif','{$lang_justifycenter_desc}','JustifyCenter'],['justifyright','right.gif','{$lang_justifyright_desc}','JustifyRight'],['justifyfull','full.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'],['table','table.gif','{$lang_theme_table_desc}','mceInsertTable',true],['row_before','table_insert_row_before.gif','{$lang_theme_table_insert_row_before_desc}','mceTableInsertRowBefore'],['row_after','table_insert_row_after.gif','{$lang_theme_table_insert_row_after_desc}','mceTableInsertRowAfter'],['delete_row','table_delete_row.gif','{$lang_theme_table_delete_row_desc}','mceTableDeleteRow'],['!
col_before','table_insert_col_before.gif','{$lang_theme_table_insert_c
ol_before_desc}','mceTableInsertColBefore'],['col_after','table_insert_col_after.gif','{$lang_theme_table_insert_col_after_desc}','mceTableInsertColAfter'],['delete_col','table_delete_col.gif','{$lang_theme_table_delete_col_desc}','mceTableDeleteCol'],['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}','mceForeColor'],['charmap','charmap.gif','{$lang_theme_charmap_desc}','mceCharMap'],['visualaid','visualaid.gif','{$lang_theme_visualaid_desc}','mceToggleVisualAid'],['anchor','anchor.gif','{$lang_theme_anchor_desc}','mceInsertAnchor']];function
TinyMCE_advanced_getControlHTML(button_name){for(var
i=0;i<TinyMCE_advanced_buttons.length;i++){var
but=TinyMCE_advanced_buttons[i];if(but[0]==button_name)return '<img id=!
"{$editor_id}_'+but[0]+'"
src="{$themeurl}/images/'+but[1]+'" title="'+but[2]+'"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\''+but[3]+'\',
'+(but.length>4?but[4]:false)+(but.length>5?',
\''+but[5]+'\'':'')+')">';}switch(button_name){case
"formatselect":var html='<select id="{$editor_id}_formatSelect"
name="{$editor_id}_formatSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">';var
formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var
lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_theme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],['h2','{$lang_theme_h2}'],['h3','{$lan!
g_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6
','{$lang_theme_h6}']];for(var i=0;i<formats.length;i++){for(var
x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option
value="<'+lookup[x][0]+'>">'+lookup[x][1]+'</option>';}}html+='</select>';return
html;case "styleselect":return '<select
id="{$editor_id}_styleSelect"
onmousedown="TinyMCE_advanced_setupCSSClasses(\'{$editor_id}\');"
name="{$editor_id}_styleSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">{$style_select_options}</select>';case
"fontselect":return '<select id="{$editor_id}_fontNameSelect"
name="{$editor_id}_fontNameSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">\
- <option value="">{$lang_theme_fontdefault}</option>\
- <option value="arial,helvetica,sans-serif">Arial</option>\
- <option value="times new roman,times,serif">Times New
Roman</option>\
- <option
value="verdana,arial,helvetica,sans-serif">Verdana</option>\
- <option value="courier
new,courier,monospace">Courier</option>\
- <option value="georgia,times new
roman,times,serif">Georgia</option>\
- <option
value="tahoma,arial,helvetica,sans-serif">Tahoma</option>\
- </select>';case "fontsizeselect":return '<select
id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">\
- <option value="1">1 (8 pt)</option>\
- <option value="2">2 (10 pt)</option>\
- <option value="3">3 (12 pt)</option>\
- <option value="4">4 (14 pt)</option>\
- <option value="5">5 (18 pt)</option>\
- <option value="6">6 (24 pt)</option>\
- <option value="7">7 (36 pt)</option>\
- </select>';case "separator":return '<img
src="{$themeurl}/images/spacer.gif" width="1" height="15"
class="mceSeparatorLine">';case "spacer":return '<img
src="{$themeurl}/images/spacer.gif" width="1" height="15"
border="0" class="mceSeparatorLine" style="vertical-align:
middle" />';case "rowseparator":return '<br
/>';}return "";}function
TinyMCE_advanced_execCommand(editor_id,element,command,user_interface,value){switch(command){case
"mceForeColor":var template=new Array();var
inputColor=TinyMCE_advanced_foreColor;if(!inputColor)inputColor="#000000";template['file']='color_picker.htm';template['width']=210;template['height']=200;tinyMCE.openWindow(template,{editor_id:editor_id,command:"forecolor",input_color:inputColor});return
true;case "mceCodeEditor":var template=new
Array();template['file']='source_editor.htm';template['width']=tinyMCE.getParam("theme_advanced_source_editor_width",500);template['height']=tinyMCE.getParam("theme_advanced_source_editor_height",400);ti!
nyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"no"});return
true;case "mceCharMap":var template=new
Array();template['file']='charmap.htm';template['width']=550;template['height']=280;tinyMCE.openWindow(template,{editor_id:editor_id});return
true;case "mceInsertAnchor":var template=new
Array();template['file']='anchor.htm';template['width']=320;template['height']=130;tinyMCE.openWindow(template,{editor_id:editor_id,name:TinyMCE_advanced_anchorName,action:(TinyMCE_advanced_anchorName==""?"insert":"update")});return
true;}return false;}function TinyMCE_advanced_getEditorTemplate(settings){function
removeFromArray(in_array,remove_array){var outArray=new Array();for(var
i=0;i<in_array.length;i++){skip=false;for(var
j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j])skip=true;}if(!skip)outArray[outArray.length]=in_array[i];}return
outArray;}function addToArray(in_array,add_array){for(var
i=0;i<add_array.length;i++)in_array[in_array.length]!
=add_array[i];return in_array;}var template=new Array();var toolbarHTM
L="";var
toolbarLocation=tinyMCE.getParam("theme_advanced_toolbar_location","bottom");var
buttonNamesRow1=tinyMCE.getParam("theme_advanced_buttons1","bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",true,',');buttonNamesRow1=removeFromArray(buttonNamesRow1,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow1=addToArray(buttonNamesRow1,tinyMCE.getParam("theme_advanced_buttons1_add","",true,','));buttonNamesRow1=addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before","",true,','),buttonNamesRow1);for(var
i=0;i<buttonNamesRow1.length;i++)toolbarHTML+=tinyMCE.getControlHTML(buttonNamesRow1[i]);if(buttonNamesRow1.length>0)toolbarHTML+="<br
/>";var
buttonNamesRow2=tinyMCE.getParam("theme_advanced_buttons2","bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",true,',');buttonNamesRow2=removeFromArray(buttonNam!
esRow2,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow2=addToArray(buttonNamesRow2,tinyMCE.getParam("theme_advanced_buttons2_add","",true,','));buttonNamesRow2=addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before","",true,','),buttonNamesRow2);for(var
i=0;i<buttonNamesRow2.length;i++)toolbarHTML+=tinyMCE.getControlHTML(buttonNamesRow2[i]);if(buttonNamesRow2.length>0)toolbarHTML+="<br
/>";var
buttonNamesRow3=tinyMCE.getParam("theme_advanced_buttons3","table,separator,row_before,row_after,delete_row,separator,col_before,col_after,delete_col,separator,hr,removeformat,visualaid,separator,sub,sup,separator,charmap",true,',');buttonNamesRow3=removeFromArray(buttonNamesRow3,tinyMCE.getParam("theme_advanced_disable","",true,','));buttonNamesRow3=addToArray(buttonNamesRow3,tinyMCE.getParam("theme_advanced_buttons3_add","",true,','));buttonNamesRow3=addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before","",true,','),buttonNamesRow3);for(var!
i=0;i<buttonNamesRow3.length;i++)toolbarHTML+=tinyMCE.getControlHTML(
buttonNamesRow3[i]);template['html']='<table class="mceEditor"
border="0" cellpadding="0" cellspacing="0"
width="{$width}"
height="{$height}">';if(toolbarLocation=="top")template['html']+='<tr><td
class="mceToolbarTop" align="center"
height="1">'+toolbarHTML+'</td></tr>';template['html']+='<tr><td
align="center">\
- <span id="{$editor_id}"></span>\
- </td></tr>';if(toolbarLocation=="bottom")template['html']+='<tr><td
class="mceToolbarBottom" align="center"
height="1">'+toolbarHTML+'</td></tr>';template['html']+='</table>';var
styleSelectHTML='<option value="">-- {$lang_theme_style_select}
--</option>';if(settings['theme_advanced_styles']){var
stylesAr=settings['theme_advanced_styles'].split(';');for(var
i=0;i<stylesAr.length;i++){var
key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option
value="'+value+'">'+key+'</option>';}TinyMCE_advanced_autoImportCSSClasses=false;}template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;template['delta_height']=-40;return
template;}function TinyMCE_advanced_getInsertLinkTemplate(){var template=new
Array();template['file']='link.htm';template['width']=320;template['height']=170;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLa!
ng('lang_insert_link_delta_height',0);return template;}function
TinyMCE_advanced_getInsertImageTemplate(){var template=new
Array();template['file']='image.htm';template['width']=340;template['height']=280;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return
template;}function TinyMCE_advanced_getInsertTableTemplate(settings){var template=new
Array();template['file']='table.htm';template['width']=340;template['height']=220;template['width']+=tinyMCE.getLang('lang_insert_table_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_table_delta_height',0);return
template;}function
TinyMCE_advanced_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){function
selectByValue(select_elm,value){if(select_elm){for(var
i=0;i<select_elm.options.length;i++){if(select_elm.options[i].value==value){select_elm.selectedIndex=i;return
true;}}}return false;}func!
tion getAttrib(elm,name){return elm.getAttribute(name)?elm.getAttribut
e(name):"";}var
colorElm=tinyMCE.getParentElement(node,"font","color");if(colorElm)TinyMCE_advanced_foreColor=""+colorElm.color.toUpperCase();tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyright','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_sup','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_ta!
ble','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_anchor','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_link','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_unlink','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_col_after','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_image','mceButtonNormal');tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonNormal');var
anchorName=tinyMCE.getParentElement(node,"a","name");TinyMCE_advanced_anchorName="";if(anchorName){Ti!
nyMCE_advanced_anchorName=anchorName.getAttribute("name");tinyMCE.swit
chClassSticky(editor_id+'_anchor','mceButtonSelected');}var
anchorLink=tinyMCE.getParentElement(node,"a","href");if(anchorLink||any_selection){tinyMCE.switchClassSticky(editor_id+'_link',anchorLink?'mceButtonSelected':'mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_unlink',anchorLink?'mceButtonSelected':'mceButtonNormal',false);}tinyMCE.switchClassSticky(editor_id+'_visualaid',visual_aid?'mceButtonSelected':'mceButtonNormal',false);if(undo_levels!=-1){tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonDisabled',true);tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonDisabled',true);}if(tinyMCE.getParentElement(node,"td")){tinyMCE.switchClassSticky(editor_id+'_row_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_row_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_row','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_col_before','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_!
col_after','mceButtonNormal',false);tinyMCE.switchClassSticky(editor_id+'_delete_col','mceButtonNormal',false);}if(tinyMCE.getParentElement(node,"table"))tinyMCE.switchClassSticky(editor_id+'_table','mceButtonSelected');if(tinyMCE.getParentElement(node,"li,blockquote"))tinyMCE.switchClassSticky(editor_id+'_outdent','mceButtonNormal',false);if(undo_index!=-1&&(undo_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClassSticky(editor_id+'_redo','mceButtonNormal',false);if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE.switchClassSticky(editor_id+'_undo','mceButtonNormal',false);var
selectElm=document.getElementById(editor_id+"_styleSelect");if(selectElm){TinyMCE_advanced_setupCSSClasses(editor_id);classNode=node;breakOut=false;var
index=0;do{if(classNode&&classNode.className){for(var
i=0;i<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break;}}}}while(!breakOut&&(classNode=classNode.parentNode));selectElm.selecte!
dIndex=index;}var selectElm=document.getElementById(editor_id+"_format
Select");if(selectElm){var
elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm){selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");}else
selectByValue(selectElm,"<p>");}var
selectElm=document.getElementById(editor_id+"_fontNameSelect");if(selectElm){var
elm=tinyMCE.getParentElement(node,"font","face");if(elm)selectByValue(selectElm,elm.getAttribute("face"));else
selectByValue(selectElm,"");}var
selectElm=document.getElementById(editor_id+"_fontSizeSelect");if(selectElm){var
elm=tinyMCE.getParentElement(node,"font","size");if(elm)selectByValue(selectElm,elm.getAttribute("size"));else
selectByValue(selectElm,"1");}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case
"left":tinyMCE.switchClassSticky(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;break;case
"right":tinyMCE.switchClassSticky(editor_id+'_justifyright','mceBu!
ttonSelected');breakOut=true;break;case "middle":case
"center":tinyMCE.switchClassSticky(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case
"justify":tinyMCE.switchClassSticky(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break;}}while(!breakOut&&(alignNode=alignNode.parentNode));do{switch(node.nodeName.toLowerCase()){case
"b":case
"strong":tinyMCE.switchClassSticky(editor_id+'_bold','mceButtonSelected');break;case
"i":case
"em":tinyMCE.switchClassSticky(editor_id+'_italic','mceButtonSelected');break;case
"u":tinyMCE.switchClassSticky(editor_id+'_underline','mceButtonSelected');break;case
"strike":tinyMCE.switchClassSticky(editor_id+'_strikethrough','mceButtonSelected');break;case
"ul":tinyMCE.switchClassSticky(editor_id+'_bullist','mceButtonSelected');break;case
"ol":tinyMCE.switchClassSticky(editor_id+'_numlist','mceButtonSelected');break;case
"sub":tinyMCE.switchClassSticky(editor_id+'_sub','mceButtonSelected');break;case
"sup":tinyMCE!
.switchClassSticky(editor_id+'_sup','mceButtonSelected');break;case
"h
r":tinyMCE.switchClassSticky(editor_id+'_hr','mceButtonSelected');break;case
"img":if(getAttrib(node,'name').indexOf('mce_')!=0)tinyMCE.switchClassSticky(editor_id+'_image','mceButtonSelected');break;}}while((node=node.parentNode));}function
TinyMCE_advanced_setupCSSClasses(editor_id){if(!TinyMCE_advanced_autoImportCSSClasses)return;var
selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var
csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(var
i=0;i<csses.length;i++)selectElm.options[selectElm.length]=new
Option(csses[i],csses[i]);}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true');}}
\ No newline at end of file
+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','l!
ang_theme_sup_desc','superscript'],['forecolor','forecolor.gif','lang_
theme_forecolor_desc','forecolor',true],['backcolor','backcolor.gif','lang_theme_backcolor_desc','HiliteColor',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;i<TinyMCE_AdvancedTheme._buttons.length;i++){but=TinyMCE_AdvancedTheme._buttons[i];if(but[0]==button_name&&(button_name=="forecolor"||button_name=="backcolor"))return
tinyMCE.getMenuButtonHTML(but[0],but[2],'{$themeurl}/images/'+but[1],but[3]+"Menu",but[3],(but.length>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))}switch(button_name){case"formatselect":var
html='<select id="{$editor_id}_formatSelect"
name="{$editor_id}_formatSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">';var
formats=tinyMCE.getParam("theme_advanced_blockformats","p,address,pre,h1,h2,h3,h4,h5,h6",true).split(',');var
lookup=[['p','{$lang_theme_paragraph}'],['address','{$lang_t!
heme_address}'],['pre','{$lang_theme_pre}'],['h1','{$lang_theme_h1}'],
['h2','{$lang_theme_h2}'],['h3','{$lang_theme_h3}'],['h4','{$lang_theme_h4}'],['h5','{$lang_theme_h5}'],['h6','{$lang_theme_h6}'],['div','{$lang_theme_div}'],['blockquote','{$lang_theme_blockquote}'],['code','{$lang_theme_code}'],['dt','{$lang_theme_dt}'],['dd','{$lang_theme_dd}'],['samp','{$lang_theme_samp}']];html+='<option
value="">{$lang_theme_block}</option>';for(var
i=0;i<formats.length;i++){for(var
x=0;x<lookup.length;x++){if(formats[i]==lookup[x][0])html+='<option
value="<'+lookup[x][0]+'>">'+lookup[x][1]+'</option>'}}html+='</select>';return
html;case"styleselect":return'<select
id="{$editor_id}_styleSelect"
onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');"
name="{$editor_id}_styleSelect"
onfocus="tinyMCE.addSelectAccessibility(event,this,window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">{$style_select_options}</select>';case"fontsele!
ct":var fontHTML='<select id="{$editor_id}_fontNameSelect"
name="{$editor_id}_fontNameSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);"
class="mceSelectList"><option
value="">{$lang_theme_fontdefault}</option>';var
iFonts='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
nFonts='Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial
Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans
ms,sand;Courier New=courier
new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=term!
inal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuch
et ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf
dingbats';var
fonts=tinyMCE.getParam("theme_advanced_fonts",nFonts).split(';');for(i=0;i<fonts.length;i++){if(fonts[i]!=''){var
parts=fonts[i].split('=');fontHTML+='<option
value="'+parts[1]+'">'+parts[0]+'</option>'}}fontHTML+='</select>';return
fontHTML;case"fontsizeselect":return'<select
id="{$editor_id}_fontSizeSelect" name="{$editor_id}_fontSizeSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">'+'<option
value="0">{$lang_theme_font_size}</option>'+'<option
value="1">1 (8 pt)</option>'+'<option
value="2">2 (10 pt)</option>'+'<option
value="3">3 (12 pt)</option>'+'<option
value="4">4 (14 pt)</option>'+'<option
value="5">5 (18 pt)</option>'+'<option
value="6">6 (24 pt)</option>'+'<option
value="7">7 (36
pt)</option>'+'</select>';case"|":ca!
se"separator":return'<img
src="{$themeurl}/images/separator.gif" width="2" height="20"
class="mceSeparatorLine" />';case"spacer":return'<img
src="{$themeurl}/images/separator.gif" width="2" height="15"
border="0" class="mceSeparatorLine" style="vertical-align:
middle" />';case"rowseparator":return'<br
/>'}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.to
LowerCase()=="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;templ!
ate['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=im!
g}if(img){if(tinyMCE.getAttrib(img,'name').indexOf('mce_')==0)return t
rue;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_callba!
ck']+"(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:onmouseo!
ut,action:action,inline:"yes"});return true;case"forecolor":var
fcp=ne
w
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"forecolorMenu":TinyMCE_AdvancedTheme._hideMenus(editor_id);var ml=new
TinyMCE_Layer(editor_id+'_fcMenu');if(!ml.exi!
sts())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.getAb
sPosition(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"mceColorPicker":if(user_interface){var template=new Array();var
inputColor=value['document'].getElementById(value['element_id']).value;template['file']='color_picker.htm';template['width']=220;template['height']=190;template['close_previous']="no";templat!
e['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:inputColor})}else{var
savedVal=tinyMCE.lastColorPickerValue;var
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<in_array.length;i++){skip=false;for(var
j=0;j<remove_array.length;j++){if(in_array[i]==remove_array[j]){skip=true}}if(!skip){outArray[outArray.length]=in_array[i]}}return
outArray}function addToArray(in_array,add_array){for(var
i=0;i<add_array.length;i++){in_array[in_array.length]=add_array[i]}return in_array}var
template=new Array();var deltaHeight=0;var
resizing=tinyMCE.getParam("theme_advanced_resizing",false);var
path=tinyMCE.getParam("theme_advanced_path",true);var statusbarHTML='<div
id="{$editor_id}_path" class="mceStatusbarPathText"
style="display:
'+(path?"block":"none")+'"> </div><div
id="{$editor_id}_resize" class="mceStatusbarResize"
style="display: '+(resizing?"block":"none")+'"
onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br
style="clear: both" />';var
layoutManager=tinyMCE.getParam("theme_advanced_layout_manager","SimpleLayout");var
styleSelectHTML='<option value="">{$lang_theme_style_select}</opt!
ion>';if(settings['theme_advanced_styles']){var
stylesAr=settings['the
me_advanced_styles'].split(';');for(var i=0;i<stylesAr.length;i++){var
key,value;key=stylesAr[i].split('=')[0];value=stylesAr[i].split('=')[1];styleSelectHTML+='<option
value="'+value+'">'+key+'</option>'}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,visu!
alaid,separator,sub,sup,separator,charmap"};toolbarHTML+='<a
href="#" accesskey="q"
title="'+tinyMCE.getLang("lang_toolbar_focus")+'"';if(!tinyMCE.getParam("accessibility_focus"))toolbarHTML+='
onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus();"';toolbarHTML+='></a>';for(var
i=1;i<100;i++){var def=defVals["theme_advanced_buttons"+i];var
buttons=tinyMCE.getParam("theme_advanced_buttons"+i,def==null?'':def,true,',');if(buttons.length==0)break;buttons=removeFromArray(buttons,tinyMCE.getParam("theme_advanced_disable","",true,','));buttons=addToArray(buttons,tinyMCE.getParam("theme_advanced_buttons"+i+"_add","",true,','));buttons=addToArray(tinyMCE.getParam("theme_advanced_buttons"+i+"_add_before","",true,','),buttons);for(var
b=0;b<buttons.length;b++)toolbarHTML+=tinyMCE.getControlHTML(buttons[b]);if(buttons.length>0){toolbarHTML+="<br
/>";deltaHeight-=23}}toolbarHTML+='<a href="#"
accesskey="z"
onfocus="tinyMCE.getInstanceById(\''+editorId+'\').getWin().focus!
();"></a>';template['html']='<table
class="mceEditor" border="0" cellp
adding="0" cellspacing="0" width="{$width}"
height="{$height}"
style="width:{$width_style};height:{$height_style}"><tbody>';if(toolbarLocation=="top"){template['html']+='<tr><td
class="mceToolbarTop" align="'+toolbarAlign+'"
height="1" nowrap="nowrap"><span
id="'+editorId+'_toolbar"
class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>'}if(statusbarLocation=="top"){template['html']+='<tr><td
class="mceStatusbarTop"
height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='<tr><td
align="center"><span
id="{$editor_id}"></span></td></tr>';if(toolbarLocation=="bottom"){template['html']+='<tr><td
class="mceToolbarBottom" align="'+toolbarAlign+'"
height="1"><span id="'+editorId+'_toolbar"
class="mceToolbarContainer">'+toolbarHTML+'</span></td></tr>'}if(toolbarLocation=="external"){var
bod=document.body;var
elm=document.createElement("div");toolbarHTML=tinyMCE.replaceVar(toolbarHTML,'style_select_options',styleSelectHTML);toolbarHTML=tinyMCE.applyTemplate(t!
oolbarHTML,{editor_id:editorId});elm.className="mceToolbarExternal";elm.id=editorId+"_toolbar";elm.innerHTML='<table
width="100%" border="0" align="center"><tr><td
align="center">'+toolbarHTML+'</td></tr></table>';bod.appendChild(elm);deltaHeight=0;tinyMCE.getInstanceById(editorId).toolbarElement=elm;}else{tinyMCE.getInstanceById(editorId).toolbarElement=null}if(statusbarLocation=="bottom"){template['html']+='<tr><td
class="mceStatusbarBottom"
height="1">'+statusbarHTML+'</td></tr>';deltaHeight-=23}template['html']+='</tbody></table>';break;case"RowLayout":template['html']='<table
class="mceEditor" border="0" cellpadding="0"
cellspacing="0" width="{$width}" height="{$height}"
style="width:{$width}px;height:{$height}px"><tbody>';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_ali!
gn","center");for(var
i=0;i<containers.length;i++){if(containers[i]=="
mceEditor")template['html']+='<tr><td align="center"
class="mceEditor_border"><span
id="{$editor_id}"></span></td></tr>';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']+='<tr><td
class="'+pathClass+'"
height="1">'+statusbarHTML+'</td></tr>';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;j<curContainer.length;j++)curContainerHTML+=tinyMCE.getControlHTML(curContainer[j]);if(curContainer.length>0){cur!
ContainerHTML+="<br
/>";deltaHeight-=23}template['html']+='<tr><td
class="'+curCSS+'" align="'+curAlign+'"
height="1">'+curContainerHTML+'</td></tr>'}}template['html']+='</tbody></table>';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']+='<span
id="{$editor_id}_resize_box"
class="mceResizeBox"></span>';template['html']=tinyMCE.replaceVar(template['html'],'style_select_options',styleSelectHTML);template['delta_width']=0;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._res!
izeTo(inst,w,h,tinyMCE.getParam("theme_advanced_resize_horizontal",tru
e))}}inst.addShortcut('ctrl','k','lang_link_desc','mceLink')},_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<select_elm.options.length;i++){var
ov=""+select_elm.options[i].value;if(first_index&&ov.to!
LowerCase().indexOf(value.toLowerCase())==0){select_elm.selectedIndex=i;return
true}if(ov==value){select_elm.selectedIndex=i;return true}}}return false};function
getAttrib(elm,name){return
elm.getAttribute(name)?elm.getAttribute(name):""};if(node==null)return;var
pathElm=document.getElementById(editor_id+"_path");var
inst=tinyMCE.getInstanceById(editor_id);var
doc=inst.getDoc();TinyMCE_AdvancedTheme._hideMenus(editor_id);if(pathElm){var
parentNode=node;var path=new
Array();while(parentNode!=null){if(parentNode.nodeName.toUpperCase()=="BODY"){break}if(parentNode.nodeType==1&&tinyMCE.getAttrib(parentNode,"class").indexOf('mceItemHidden')==-1){path[path.length]=parentNode}parentNode=parentNode.parentNode}var
html="";for(var i=path.length-1;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.getA!
ttrib(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:
"+st+"
"}}if(nodeName=="font"){if(tinyMCE.getParam("convert_fonts_to_spans"))nodeName="span";var
face=tinyMCE.getAttrib(path[i],"face");if(face!="")nodeData+="font:
"+face+" ";var
size=tinyMCE.getAttrib(path[i],"size");if(size!="")nodeData+="size:
"+size+" ";var
color=tinyMCE.getAttrib(path[i],"color");if(color!="")nodeData+="color:
"+color+"
"}if(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(getAttrib(path[i],'src')!=""){var
src=tinyMCE.getAttrib(path[i],"mce_src");if(src=="")src=tinyMCE.getAttrib(path[i],"src");nodeData+="src:
"+src+"
"}if(path[i].nodeName=='A'&&getAttrib(path[i],'href')!=""){var
href=tinyMCE.getAttrib(path[i],"mce_href");i!
f(href=="")href=tinyMCE.getAttrib(path[i],"href");nodeData+="href:
"+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+="#"+anchor;nodeData=""}if(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+='<a
title="'+nodeData+'" href="javascript:'+cmd+'"
onclick="'+cmd+'return false;" onmousedown="return false;"
target="_self"
class="mcePathItem">'+nodeName+'</a>';if(i>0){html+="
» "}}pathElm.innerHTML='<a href="#"
accesskey="x"></a>'+tinyMCE.getLang('lang!
_theme_path')+":
"+html+' '}tinyMCE.switchClass(editor_id+'_justi
fyleft','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','mceButtonN!
ormal');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_index<undo_levels-1&&undo_levels>0))tinyMCE.switchClass(editor_id+'_redo','mceButtonNormal');if(undo_index!=-1&&(undo_index>0&&undo_levels>0))tinyMCE!
.switchClass(editor_id+'_undo','mceButtonNormal');var selectElm=docume
nt.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<selectElm.options.length;i++){if(selectElm.options[i].value==classNode.className){index=i;breakOut=true;break}}}}while(!breakOut&&classNode!=null&&(classNode=classNode.parentNode)!=null);selectElm.selectedIndex=index}var
selectElm=document.getElementById(editor_id+"_formatSelect");if(selectElm){var
elm=tinyMCE.getParentElement(node,"p,div,h1,h2,h3,h4,h5,h6,pre,address");if(elm)selectByValue(selectElm,"<"+elm.nodeName.toLowerCase()+">");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;i<sizes.length;i++){if((''+sizes[i])==size){size=i;break}}}if(!selectByValue(selectElm,size))selectByValue(selectElm,"")}else
selectByValue(selectElm,"0")}}alignNode=node;breakOut=false;do{if(!alignNode.getAttribute||!alignNode.getAttribute('align'))continue;switch(alignNode.getAttribute('align').toLowerCase()){case"left":tinyMCE.swi!
tchClass(editor_id+'_justifyleft','mceButtonSelected');breakOut=true;b
reak;case"right":tinyMCE.switchClass(editor_id+'_justifyright','mceButtonSelected');breakOut=true;break;case"middle":case"center":tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');breakOut=true;break;case"justify":tinyMCE.switchClass(editor_id+'_justifyfull','mceButtonSelected');breakOut=true;break}}while(!breakOut&&(alignNode=alignNode.parentNode)!=null);var
div=tinyMCE.getParentElement(node,"div");if(div&&div.style.textAlign=="center")tinyMCE.switchClass(editor_id+'_justifycenter','mceButtonSelected');if(!setup_content){var
ar=new
Array("Bold","_bold","Italic","_italic","Strikethrough","_strikethrough","superscript","_sup","subscript","_sub");for(var
i=0;i<ar.length;i+=2){if(inst.queryCommandState(ar[i]))tinyMCE.switchClass(editor_id+ar[i+1],'mceButtonSelected')}if(inst.queryCommandState("Underline")&&(node.parentNode==null||node.parentNode.nodeName!="A"))tinyMCE.switchClass(editor_id+'_underline','mceButtonSelected')}do{switch(node.nodeName){case"UL":tin!
yMCE.switchClass(editor_id+'_bullist','mceButtonSelected');break;case"OL":tinyMCE.switchClass(editor_id+'_numlist','mceButtonSelected');break;case"HR":tinyMCE.switchClass(editor_id+'_hr','mceButtonSelected');break;case"IMG":if(getAttrib(node,'name').indexOf('mce_')!=0&&tinyMCE.getAttrib(node,'class').indexOf('mceItem')==-1){tinyMCE.switchClass(editor_id+'_image','mceButtonSelected')}break}}while((node=node.parentNode)!=null)},_setupCSSClasses:function(editor_id){var
i,selectElm;if(!TinyMCE_AdvancedTheme._autoImportCSSClasses)return;selectElm=document.getElementById(editor_id+'_styleSelect');if(selectElm&&selectElm.getAttribute('cssImported')!='true'){var
csses=tinyMCE.getCSSClasses(editor_id);if(csses&&selectElm){for(i=0;i<csses.length;i++)selectElm.options[selectElm.options.length]=new
Option(csses[i],csses[i])}if(csses!=null&&csses.length>0)selectElm.setAttribute('cssImported','true')}},_setCookie:function(name,value,expires,path,domain,secure){var
curCookie=name+"="+esca!
pe(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<minIframeWidth){dx=minIframeWidth-inst.iframeElement.clientWidth;inst.iframeElement.style.width=(iw+dx)+"px"}}inst.useCSS=false},_resizeEventHandler:function(e){var
resizer=TinyMCE_AdvancedTheme._resizer;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);if(tinyMCE.getParam("theme_advanced_resizing_!
use_cookie",true)){var expires=new Date();expires.setTime(expires.getT
ime()+3600000*24*30);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_width",""+(resizer.horizontal?resizer.width+dx:""),expires);TinyMCE_AdvancedTheme._setCookie("TinyMCE_"+editorId+"_height",""+(resizer.height+dy),expires)}break}},_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){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;editorArea.style.display="none";resizeBox.style.display="block";if(!resizer.eventHandlers){if(tinyMCE.isMSIE)tinyMCE.addEvent(documen!
t,"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='<span
class="mceMenuLine"></span>';cl=tinyMCE.getParam(n,TinyMCE_AdvancedTheme._defColors).split(',');h+='<table
class="mceColors"><tr>';for(i=0;i<cl.length;i++){c='tinyMCE.execInstanceCommand(\''+id+'\',
\''+cm+'\', false!
, \'#'+cl[i]+'\');';h+='<td><a
href="javascript:'+c+'" style="backgrou
nd-color: #'+cl[i]+'" onclick="'+c+';return
false;"></a></td>';if((i+1)%8==0)h+='</tr><tr>'}h+='</tr></table>';return
h},_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+='<img src="'+src+'"
alt="'+alt+'"';html+=' border="'+border+'"
hspace="'+hspace+'"';html+='
vspace="'+vspace+'" width="'+width+'"';html+='
height="'+height+'" align="'+align+'"
title="'+title+'" onmouseover="'+onmouseover+'"
onmouseout="'+onmouseout+'"
/>';tinyMCE.execCommand("mceInsertContent",false,html)}else{if(!tinyMCE.imgElement&&tinyMCE.selectedInstance){if(tinyMCE.isSafari)tinyMCE.execCommand("mceInsertContent",false,'<img
src="'+tinyMCE.uniqueURL+'" />');else
tinyMCE.selectedInstance.contentDocument.execCommand("insertimage",false,tinyMCE.uniqueURL);tinyMCE.imgElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.conten!
tDocument.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);tiny!
MCE.setAttrib(tinyMCE.imgElement,'border',border,true);tinyMCE.setAttr
ib(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 t!
href=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,'<a
href="'+tinyMCE.uniqueURL+'">'+tinyMCE.selectedInstance.selection.getSelectedHTML()+'</a>')}else
tinyMCE.selectedInstance.contentDocument.execCommand("createlink",false,tinyMCE.uniqueURL);tinyMCE.linkElement=tinyMCE.getElementByAttributeValue(tinyMCE.selectedInstance.contentDocument.body!
,"a","href",tinyMCE.uniqueURL);var
elementArray=tinyMCE.getElementsByA
ttributeValue(tinyMCE.selectedInstance.contentDocument.body,"a","href",tinyMCE.uniqueURL);for(var
i=0;i<elementArray.length;i++){var mhref=href;var
thref=eval(tinyMCE.settings['urlconverter_callback']+"(href,
elementArray[i]);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(elementArray[i],'href',thref);tinyMCE.setAttrib(elementArray[i],'mce_href',mhref);tinyMCE.setAttrib(elementArray[i],'target',target);tinyMCE.setAttrib(elementArray[i],'title',title);tinyMCE.setAttrib(elementArray[i],'onclick',onclick);tinyMCE.setAttrib(elementArray[i],'class',style_class)}tinyMCE.linkElement=elementArray[0]}if(tinyMCE.linkElement){var
mhref=href;href=eval(tinyMCE.settings['urlconverter_callback']+"(href,
tinyMCE.linkElement);");mhref=tinyMCE.getParam('convert_urls')?href:mhref;tinyMCE.setAttrib(tinyMCE.linkElement,'href',href);tinyMCE.setAttrib(tinyMCE.linkElement,'mce_href',mhref);tinyMCE.setAttrib(tinyMCE.linkElement,'target',target);tinyMCE.setAttrib(tinyMCE.linkE!
lement,'title',title);tinyMCE.setAttrib(tinyMCE.linkElement,'onclick',onclick);tinyMCE.setAttrib(tinyMCE.linkElement,'class',style_class)}tinyMCE.execCommand('mceEndUndoLevel')}};tinyMCE.addTheme("advanced",TinyMCE_AdvancedTheme);tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
\ No newline at end of file
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/editor_template_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,591 +1,1534 @@
+/**
+ * $Id$
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
/* Import theme specific language pack */
-tinyMCE.importThemeLanguagePack();
+tinyMCE.importThemeLanguagePack('advanced');
-// Variable declarations
-var TinyMCE_advanced_autoImportCSSClasses = true;
-var TinyMCE_advanced_foreColor = "#000000";
-var TinyMCE_advanced_anchorName = "";
-var TinyMCE_advanced_buttons = [
+var TinyMCE_AdvancedTheme = {
+ // Private theme fields
+ _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 : [
// Control id, button img, button title, command, user_interface, value
- ['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', 'left.gif', '{$lang_justifyleft_desc}',
'JustifyLeft'],
- ['justifycenter', 'center.gif', '{$lang_justifycenter_desc}',
'JustifyCenter'],
- ['justifyright', 'right.gif', '{$lang_justifyright_desc}',
'JustifyRight'],
- ['justifyfull', 'full.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'],
- ['table', 'table.gif', '{$lang_theme_table_desc}',
'mceInsertTable', true],
- ['row_before', 'table_insert_row_before.gif',
'{$lang_theme_table_insert_row_before_desc}', 'mceTableInsertRowBefore'],
- ['row_after', 'table_insert_row_after.gif',
'{$lang_theme_table_insert_row_after_desc}', 'mceTableInsertRowAfter'],
- ['delete_row', 'table_delete_row.gif',
'{$lang_theme_table_delete_row_desc}', 'mceTableDeleteRow'],
- ['col_before', 'table_insert_col_before.gif',
'{$lang_theme_table_insert_col_before_desc}', 'mceTableInsertColBefore'],
- ['col_after', 'table_insert_col_after.gif',
'{$lang_theme_table_insert_col_after_desc}', 'mceTableInsertColAfter'],
- ['delete_col', 'table_delete_col.gif',
'{$lang_theme_table_delete_col_desc}', 'mceTableDeleteCol'],
- ['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}',
'mceForeColor'],
- ['charmap', 'charmap.gif', '{$lang_theme_charmap_desc}',
'mceCharMap'],
- ['visualaid', 'visualaid.gif', '{$lang_theme_visualaid_desc}',
'mceToggleVisualAid'],
- ['anchor', 'anchor.gif', '{$lang_theme_anchor_desc}',
'mceInsertAnchor']
- ];
+ ['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],
+ ['backcolor', 'backcolor.gif', 'lang_theme_backcolor_desc',
'HiliteColor', 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']
+ ],
-/**
- * Returns HTML code for the specificed control.
- */
-function TinyMCE_advanced_getControlHTML(button_name) {
- // Lookup button in button list
- for (var i=0; i<TinyMCE_advanced_buttons.length; i++) {
- var but = TinyMCE_advanced_buttons[i];
- if (but[0] == button_name)
- return '<img id="{$editor_id}_' + but[0] + '"
src="{$themeurl}/images/' + but[1] + '" title="' + but[2] +
'" width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + but[3] +
'\', ' + (but.length > 4 ? but[4] : false) + (but.length > 5 ? ',
\'' + but[5] + '\'' : '') + ')">';
- }
+ _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',
- // Custom controlls other than buttons
- switch (button_name) {
- case "formatselect":
- var html = '<select id="{$editor_id}_formatSelect"
name="{$editor_id}_formatSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">';
- var formats = tinyMCE.getParam("theme_advanced_blockformats",
"p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
- var lookup = [
- ['p', '{$lang_theme_paragraph}'],
- ['address', '{$lang_theme_address}'],
- ['pre', '{$lang_theme_pre}'],
- ['h1', '{$lang_theme_h1}'],
- ['h2', '{$lang_theme_h2}'],
- ['h3', '{$lang_theme_h3}'],
- ['h4', '{$lang_theme_h4}'],
- ['h5', '{$lang_theme_h5}'],
- ['h6', '{$lang_theme_h6}']
- ];
+ /**
+ * Returns HTML code for the specificed control.
+ */
+ getControlHTML : function(button_name) {
+ var i, x, but;
- // Build format select
- for (var i=0; i<formats.length; i++) {
- for (var x=0; x<lookup.length; x++) {
- if (formats[i] == lookup[x][0])
- html += '<option value="<' + lookup[x][0] +
'>">' + lookup[x][1] + '</option>';
- }
- }
+ // Lookup button in button list
+ for (i=0; i<TinyMCE_AdvancedTheme._buttons.length; i++) {
+ but = TinyMCE_AdvancedTheme._buttons[i];
- html += '</select>';
+ if (but[0] == button_name && (button_name == "forecolor" ||
button_name == "backcolor"))
+ return tinyMCE.getMenuButtonHTML(but[0], but[2], '{$themeurl}/images/' +
but[1], but[3] + "Menu", but[3], (but.length > 4 ? but[4] : false),
(but.length > 5 ? but[5] : null));
- return html;
+ 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 = '<select id="{$editor_id}_formatSelect"
name="{$editor_id}_formatSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FormatBlock\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">';
+ var formats = tinyMCE.getParam("theme_advanced_blockformats",
"p,address,pre,h1,h2,h3,h4,h5,h6", true).split(',');
+ var lookup = [
+ ['p', '{$lang_theme_paragraph}'],
+ ['address', '{$lang_theme_address}'],
+ ['pre', '{$lang_theme_pre}'],
+ ['h1', '{$lang_theme_h1}'],
+ ['h2', '{$lang_theme_h2}'],
+ ['h3', '{$lang_theme_h3}'],
+ ['h4', '{$lang_theme_h4}'],
+ ['h5', '{$lang_theme_h5}'],
+ ['h6', '{$lang_theme_h6}'],
+ ['div', '{$lang_theme_div}'],
+ ['blockquote', '{$lang_theme_blockquote}'],
+ ['code', '{$lang_theme_code}'],
+ ['dt', '{$lang_theme_dt}'],
+ ['dd', '{$lang_theme_dd}'],
+ ['samp', '{$lang_theme_samp}']
+ ];
- case "styleselect":
- return '<select id="{$editor_id}_styleSelect"
onmousedown="TinyMCE_advanced_setupCSSClasses(\'{$editor_id}\');"
name="{$editor_id}_styleSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">{$style_select_options}</select>';
+ html += '<option
value="">{$lang_theme_block}</option>';
- case "fontselect":
- return '<select id="{$editor_id}_fontNameSelect"
name="{$editor_id}_fontNameSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">\
- <option value="">{$lang_theme_fontdefault}</option>\
- <option value="arial,helvetica,sans-serif">Arial</option>\
- <option value="times new roman,times,serif">Times New
Roman</option>\
- <option
value="verdana,arial,helvetica,sans-serif">Verdana</option>\
- <option value="courier
new,courier,monospace">Courier</option>\
- <option value="georgia,times new
roman,times,serif">Georgia</option>\
- <option
value="tahoma,arial,helvetica,sans-serif">Tahoma</option>\
- </select>';
+ // Build format select
+ for (var i=0; i<formats.length; i++) {
+ for (var x=0; x<lookup.length; x++) {
+ if (formats[i] == lookup[x][0])
+ html += '<option value="<' + lookup[x][0] +
'>">' + lookup[x][1] + '</option>';
+ }
+ }
- case "fontsizeselect":
- return '<select id="{$editor_id}_fontSizeSelect"
name="{$editor_id}_fontSizeSelect"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">\
- <option value="1">1 (8 pt)</option>\
- <option value="2">2 (10 pt)</option>\
- <option value="3">3 (12 pt)</option>\
- <option value="4">4 (14 pt)</option>\
- <option value="5">5 (18 pt)</option>\
- <option value="6">6 (24 pt)</option>\
- <option value="7">7 (36 pt)</option>\
- </select>';
+ html += '</select>';
- case "separator":
- return '<img src="{$themeurl}/images/spacer.gif" width="1"
height="15" class="mceSeparatorLine">';
+ return html;
- case "spacer":
- return '<img src="{$themeurl}/images/spacer.gif" width="1"
height="15" border="0" class="mceSeparatorLine"
style="vertical-align: middle" />';
+ case "styleselect":
+ return '<select id="{$editor_id}_styleSelect"
onmousedown="tinyMCE.themes.advanced._setupCSSClasses(\'{$editor_id}\');"
name="{$editor_id}_styleSelect"
onfocus="tinyMCE.addSelectAccessibility(event,this,window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSetCSSClass\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">{$style_select_options}</select>';
- case "rowseparator":
- return '<br />';
- }
+ case "fontselect":
+ var fontHTML = '<select id="{$editor_id}_fontNameSelect"
name="{$editor_id}_fontNameSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontName\',false,this.options[this.selectedIndex].value);"
class="mceSelectList"><option
value="">{$lang_theme_fontdefault}</option>';
+ var iFonts = '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 nFonts = 'Andale Mono=andale
mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book
Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sand;Courier New=courier
new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times
New Roman=times new roman,times;Trebuchet MS=trebuchet
ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf
dingbats';
+ var fonts = tinyMCE.getParam("theme_advanced_fonts",
nFonts).split(';');
+ for (i=0; i<fonts.length; i++) {
+ if (fonts[i] != '') {
+ var parts = fonts[i].split('=');
+ fontHTML += '<option value="' + parts[1] + '">' +
parts[0] + '</option>';
+ }
+ }
- return "";
-}
+ fontHTML += '</select>';
+ return fontHTML;
-/**
- * Theme specific exec command handeling.
- */
-function TinyMCE_advanced_execCommand(editor_id, element, command, user_interface, value)
{
- switch (command) {
- case "mceForeColor":
- var template = new Array();
- var inputColor = TinyMCE_advanced_foreColor;
+ case "fontsizeselect":
+ return '<select id="{$editor_id}_fontSizeSelect"
name="{$editor_id}_fontSizeSelect"
onfocus="tinyMCE.addSelectAccessibility(event, this, window);"
onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'FontSize\',false,this.options[this.selectedIndex].value);"
class="mceSelectList">'+
+ '<option
value="0">{$lang_theme_font_size}</option>'+
+ '<option value="1">1 (8 pt)</option>'+
+ '<option value="2">2 (10 pt)</option>'+
+ '<option value="3">3 (12 pt)</option>'+
+ '<option value="4">4 (14 pt)</option>'+
+ '<option value="5">5 (18 pt)</option>'+
+ '<option value="6">6 (24 pt)</option>'+
+ '<option value="7">7 (36 pt)</option>'+
+ '</select>';
- if (!inputColor)
- inputColor = "#000000";
+ case "|":
+ case "separator":
+ return '<img src="{$themeurl}/images/separator.gif"
width="2" height="20" class="mceSeparatorLine" />';
- template['file'] = 'color_picker.htm';
- template['width'] = 210;
- template['height'] = 200;
+ case "spacer":
+ return '<img src="{$themeurl}/images/separator.gif"
width="2" height="15" border="0"
class="mceSeparatorLine" style="vertical-align: middle" />';
- tinyMCE.openWindow(template, {editor_id : editor_id, command : "forecolor",
input_color : inputColor});
+ case "rowseparator":
+ return '<br />';
+ }
+
+ 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 "mceCodeEditor":
- var template = new Array();
+ case "mceLink":
+ var inst = tinyMCE.getInstanceById(editor_id);
+ var doc = inst.getDoc();
+ var selectedText = "";
- template['file'] = 'source_editor.htm';
- template['width'] =
tinyMCE.getParam("theme_advanced_source_editor_width", 500);
- template['height'] =
tinyMCE.getParam("theme_advanced_source_editor_height", 400);
+ if (tinyMCE.isMSIE) {
+ var rng = doc.selection.createRange();
+ selectedText = rng.text;
+ } else
+ selectedText = inst.getSel().toString();
- tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes",
scrollbars : "no"});
+ 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 "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 "mceCharMap":
- var template = new Array();
+ case "HiliteColor":
+ var bcp = new TinyMCE_Layer(editor_id + '_bcPreview', false), p, img;
- template['file'] = 'charmap.htm';
- template['width'] = 550;
- template['height'] = 280;
+ TinyMCE_AdvancedTheme._hideMenus(editor_id);
- tinyMCE.openWindow(template, {editor_id : 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 "mceInsertAnchor":
- var template = new Array();
+ case "mceColorPicker":
+ if (user_interface) {
+ var template = new Array();
+ var inputColor =
value['document'].getElementById(value['element_id']).value;
- template['file'] = 'anchor.htm';
- template['width'] = 320;
- template['height'] = 130;
+ template['file'] = 'color_picker.htm';
+ template['width'] = 220;
+ template['height'] = 190;
+ template['close_previous'] = "no";
- tinyMCE.openWindow(template, {editor_id : editor_id, name :
TinyMCE_advanced_anchorName, action : (TinyMCE_advanced_anchorName == "" ?
"insert" : "update")});
+ 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 : inputColor});
+ } else {
+ var savedVal = tinyMCE.lastColorPickerValue;
+ var elm =
savedVal['document'].getElementById(savedVal['element_id']);
+ elm.value = value;
+
+ if (elm.onchange != null && elm.onchange != '')
+ eval('elm.onchange();');
+ }
return true;
- }
- // Default behavior
- return false;
-}
+ case "mceCodeEditor":
+ var template = new Array();
-/**
- * Editor instance template function.
- */
-function TinyMCE_advanced_getEditorTemplate(settings) {
- function removeFromArray(in_array, remove_array) {
- var outArray = new Array();
- for (var i=0; i<in_array.length; i++) {
- skip = false;
+ 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));
- for (var j=0; j<remove_array.length; j++) {
- if (in_array[i] == remove_array[j])
- skip = true;
+ 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<in_array.length; i++) {
+ skip = false;
+
+ for (var j=0; j<remove_array.length; j++) {
+ if (in_array[i] == remove_array[j]) {
+ skip = true;
+ }
+ }
+
+ if (!skip) {
+ outArray[outArray.length] = in_array[i];
+ }
}
- if (!skip)
- outArray[outArray.length] = in_array[i];
+ return outArray;
}
- return outArray;
- }
+ function addToArray(in_array, add_array) {
+ for (var i=0; i<add_array.length; i++) {
+ in_array[in_array.length] = add_array[i];
+ }
- function addToArray(in_array, add_array) {
- for (var i=0; i<add_array.length; i++)
- in_array[in_array.length] = add_array[i];
+ return in_array;
+ }
- return in_array;
- }
+ var template = new Array();
+ var deltaHeight = 0;
+ var resizing = tinyMCE.getParam("theme_advanced_resizing", false);
+ var path = tinyMCE.getParam("theme_advanced_path", true);
+ var statusbarHTML = '<div id="{$editor_id}_path"
class="mceStatusbarPathText" style="display: ' + (path ?
"block" : "none") + '"> </div><div
id="{$editor_id}_resize" class="mceStatusbarResize"
style="display: ' + (resizing ? "block" : "none") +
'"
onmousedown="tinyMCE.themes.advanced._setResizing(event,\'{$editor_id}\',true);"></div><br
style="clear: both" />';
+ var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager",
"SimpleLayout");
- var template = new Array();
- var toolbarHTML = "";
- var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location",
"bottom");
+ // Setup style select options -- MOVED UP FOR EXTERNAL TOOLBAR COMPATABILITY!
+ var styleSelectHTML = '<option
value="">{$lang_theme_style_select}</option>';
+ if (settings['theme_advanced_styles']) {
+ var stylesAr = settings['theme_advanced_styles'].split(';');
+
+ for (var i=0; i<stylesAr.length; i++) {
+ var key, value;
- // Render row 1
- var buttonNamesRow1 = tinyMCE.getParam("theme_advanced_buttons1",
"bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect",
true, ',');
- buttonNamesRow1 = removeFromArray(buttonNamesRow1,
tinyMCE.getParam("theme_advanced_disable", "", true, ','));
- buttonNamesRow1 = addToArray(buttonNamesRow1,
tinyMCE.getParam("theme_advanced_buttons1_add", "", true,
','));
- buttonNamesRow1 =
addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before", "",
true, ','), buttonNamesRow1);
- for (var i=0; i<buttonNamesRow1.length; i++)
- toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow1[i]);
+ key = stylesAr[i].split('=')[0];
+ value = stylesAr[i].split('=')[1];
- if (buttonNamesRow1.length > 0)
- toolbarHTML += "<br />";
+ styleSelectHTML += '<option value="' + value + '">' +
key + '</option>';
+ }
- // Render row 2
- var buttonNamesRow2 = tinyMCE.getParam("theme_advanced_buttons2",
"bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code",
true, ',');
- buttonNamesRow2 = removeFromArray(buttonNamesRow2,
tinyMCE.getParam("theme_advanced_disable", "", true, ','));
- buttonNamesRow2 = addToArray(buttonNamesRow2,
tinyMCE.getParam("theme_advanced_buttons2_add", "", true,
','));
- buttonNamesRow2 =
addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before", "",
true, ','), buttonNamesRow2);
- for (var i=0; i<buttonNamesRow2.length; i++)
- toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow2[i]);
+ TinyMCE_AdvancedTheme._autoImportCSSClasses = false;
+ }
- if (buttonNamesRow2.length > 0)
- toolbarHTML += "<br />";
+ 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"
+ };
- // Render row 3
- var buttonNamesRow3 = tinyMCE.getParam("theme_advanced_buttons3",
"table,separator,row_before,row_after,delete_row,separator,col_before,col_after,delete_col,separator,hr,removeformat,visualaid,separator,sub,sup,separator,charmap",
true, ',');
- buttonNamesRow3 = removeFromArray(buttonNamesRow3,
tinyMCE.getParam("theme_advanced_disable", "", true, ','));
- buttonNamesRow3 = addToArray(buttonNamesRow3,
tinyMCE.getParam("theme_advanced_buttons3_add", "", true,
','));
- buttonNamesRow3 =
addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before", "",
true, ','), buttonNamesRow3);
- for (var i=0; i<buttonNamesRow3.length; i++)
- toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow3[i]);
+ // Add accessibility control
+ toolbarHTML += '<a href="#" accesskey="q"
title="' + tinyMCE.getLang("lang_toolbar_focus") + '"';
- // Setup template html
- template['html'] = '<table class="mceEditor"
border="0" cellpadding="0" cellspacing="0"
width="{$width}" height="{$height}">';
+ if (!tinyMCE.getParam("accessibility_focus"))
+ toolbarHTML += ' onfocus="tinyMCE.getInstanceById(\'' + editorId +
'\').getWin().focus();"';
- if (toolbarLocation == "top")
- template['html'] += '<tr><td class="mceToolbarTop"
align="center" height="1">' + toolbarHTML +
'</td></tr>';
+ toolbarHTML += '></a>';
-/* template['html'] += '<tr><td align="center">\
- <iframe id="{$editor_id}" class="mceEditorArea"
border="1" frameborder="0" src="{$default_document}"
marginwidth="0" marginheight="0" leftmargin="0"
topmargin="0" style="width:{$area_width};height:{$area_height}"
width="{$area_width}" height="{$area_height}"></iframe>\
- </td></tr>';*/
- template['html'] += '<tr><td align="center">\
- <span id="{$editor_id}"></span>\
- </td></tr>';
+ // Render rows
+ for (var i=1; i<100; i++) {
+ var def = defVals["theme_advanced_buttons" + i];
- if (toolbarLocation == "bottom")
- template['html'] += '<tr><td class="mceToolbarBottom"
align="center" height="1">' + toolbarHTML +
'</td></tr>';
+ var buttons = tinyMCE.getParam("theme_advanced_buttons" + i, def == null ?
'' : def, true, ',');
+ if (buttons.length == 0)
+ break;
- template['html'] += '</table>';
+ buttons = removeFromArray(buttons,
tinyMCE.getParam("theme_advanced_disable", "", true, ','));
+ buttons = addToArray(buttons, tinyMCE.getParam("theme_advanced_buttons" +
i + "_add", "", true, ','));
+ buttons = addToArray(tinyMCE.getParam("theme_advanced_buttons" + i +
"_add_before", "", true, ','), buttons);
- // Setup style select options
- var styleSelectHTML = '<option value="">--
{$lang_theme_style_select} --</option>';
- if (settings['theme_advanced_styles']) {
- var stylesAr = settings['theme_advanced_styles'].split(';');
- for (var i=0; i<stylesAr.length; i++) {
- var key, value;
+ for (var b=0; b<buttons.length; b++)
+ toolbarHTML += tinyMCE.getControlHTML(buttons[b]);
- key = stylesAr[i].split('=')[0];
- value = stylesAr[i].split('=')[1];
+ if (buttons.length > 0) {
+ toolbarHTML += "<br />";
+ deltaHeight -= 23;
+ }
+ }
- styleSelectHTML += '<option value="' + value + '">' +
key + '</option>';
+ // Add accessibility control
+ toolbarHTML += '<a href="#" accesskey="z"
onfocus="tinyMCE.getInstanceById(\'' + editorId +
'\').getWin().focus();"></a>';
+
+ // Setup template html
+ template['html'] = '<table class="mceEditor"
border="0" cellpadding="0" cellspacing="0"
width="{$width}" height="{$height}"
style="width:{$width_style};height:{$height_style}"><tbody>';
+
+ if (toolbarLocation == "top") {
+ template['html'] += '<tr><td class="mceToolbarTop"
align="' + toolbarAlign + '" height="1"
nowrap="nowrap"><span id="' + editorId + '_toolbar"
class="mceToolbarContainer">' + toolbarHTML +
'</span></td></tr>';
+ }
+
+ if (statusbarLocation == "top") {
+ template['html'] += '<tr><td class="mceStatusbarTop"
height="1">' + statusbarHTML + '</td></tr>';
+ deltaHeight -= 23;
+ }
+
+ template['html'] += '<tr><td
align="center"><span
id="{$editor_id}"></span></td></tr>';
+
+ if (toolbarLocation == "bottom") {
+ template['html'] += '<tr><td class="mceToolbarBottom"
align="' + toolbarAlign + '" height="1"><span
id="' + editorId + '_toolbar"
class="mceToolbarContainer">' + toolbarHTML +
'</span></td></tr>';
+ }
+
+ // 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 = '<table width="100%" border="0"
align="center"><tr><td
align="center">'+toolbarHTML+'</td></tr></table>';
+ bod.appendChild (elm);
+ // bod.style.marginTop = elm.offsetHeight + "px";
+
+ deltaHeight = 0;
+ tinyMCE.getInstanceById(editorId).toolbarElement = elm;
+
+ //template['html'] = '<div id="mceExternalToolbar"
align="center" class="mceToolbarExternal"><table
width="100%" border="0" align="center"><tr><td
align="center">'+toolbarHTML+'</td></tr></table></div>'
+ template["html"];
+ } else {
+ tinyMCE.getInstanceById(editorId).toolbarElement = null;
+ }
+
+ if (statusbarLocation == "bottom") {
+ template['html'] += '<tr><td
class="mceStatusbarBottom" height="1">' + statusbarHTML +
'</td></tr>';
+ deltaHeight -= 23;
+ }
+
+ template['html'] += '</tbody></table>';
+ //"SimpleLayout"
+ break;
+
+ case "RowLayout" : //Container Layout - containers defined in
"theme_advanced_containers" are rendered from top to bottom.
+ template['html'] = '<table class="mceEditor"
border="0" cellpadding="0" cellspacing="0"
width="{$width}" height="{$height}"
style="width:{$width}px;height:{$height}px"><tbody>';
+
+ 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'] += '<tr><td align="center"
class="mceEditor_border"><span
id="{$editor_id}"></span></td></tr>';
+ 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'] += '<tr><td class="' + pathClass +
'" height="1">' + statusbarHTML +
'</td></tr>';
+ 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<curContainer.length; j++)
+ curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
+
+ if (curContainer.length > 0) {
+ curContainerHTML += "<br />";
+ deltaHeight -= 23;
+ }
+
+ template['html'] += '<tr><td class="' + curCSS +
'" align="' + curAlign + '" height="1">' +
curContainerHTML + '</td></tr>';
+ }
+ }
+
+ template['html'] += '</tbody></table>';
+ //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;
}
- TinyMCE_advanced_autoImportCSSClasses = false;
- }
+ if (resizing)
+ template['html'] += '<span id="{$editor_id}_resize_box"
class="mceResizeBox"></span>';
- template['html'] = tinyMCE.replaceVar(template['html'],
'style_select_options', styleSelectHTML);
- template['delta_width'] = 0;
- template['delta_height'] = -40;
+ template['html'] = tinyMCE.replaceVar(template['html'],
'style_select_options', styleSelectHTML);
+ template['delta_width'] = 0;
+ template['delta_height'] = deltaHeight;
- return template;
-}
+ return template;
+ },
-/**
- * Insert link template function.
- */
-function TinyMCE_advanced_getInsertLinkTemplate() {
- var template = new Array();
+ 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");
- template['file'] = 'link.htm';
- template['width'] = 320;
- template['height'] = 170;
+ TinyMCE_AdvancedTheme._resizeTo(inst, w, h,
tinyMCE.getParam("theme_advanced_resize_horizontal", true));
+ }
+ }
- // 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);
+ inst.addShortcut('ctrl', 'k', 'lang_link_desc',
'mceLink');
+ },
- return template;
-}
+ _handleMenuEvent : function(e) {
+ var te = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+ tinyMCE._menuButtonEvent(e.type == "mouseover" ? "over" :
"out", document.getElementById(te._switchId));
-/**
- * Insert image template function.
- */
-function TinyMCE_advanced_getInsertImageTemplate() {
- var template = new Array();
+ if (e.type == "click")
+ tinyMCE.execInstanceCommand(te._editor_id, te._command);
+ },
- template['file'] = 'image.htm';
- template['width'] = 340;
- template['height'] = 280;
+ _hideMenus : function(id) {
+ var fcml = new TinyMCE_Layer(id + '_fcMenu'), bcml = new TinyMCE_Layer(id +
'_bcMenu');
- // 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 (fcml.exists() && fcml.isVisible()) {
+ tinyMCE.switchClass(id + '_forecolor', 'mceMenuButton');
+ fcml.hide();
+ }
- return template;
-}
+ if (bcml.exists() && bcml.isVisible()) {
+ tinyMCE.switchClass(id + '_backcolor', 'mceMenuButton');
+ bcml.hide();
+ }
+ },
-/**
- * Insert table template function.
- */
-function TinyMCE_advanced_getInsertTableTemplate(settings) {
- var template = new Array();
+ /**
+ * Node change handler.
+ */
+ handleNodeChange : function(editor_id, node, undo_index, undo_levels, visual_aid,
any_selection, setup_content) {
+ var alignNode, breakOut, classNode;
- template['file'] = 'table.htm';
- template['width'] = 340;
- template['height'] = 220;
+ function selectByValue(select_elm, value, first_index) {
+ first_index = typeof(first_index) == "undefined" ? false : true;
- // Language specific width and height addons
- template['width'] += tinyMCE.getLang('lang_insert_table_delta_width',
0);
- template['height'] += tinyMCE.getLang('lang_insert_table_delta_height',
0);
+ if (select_elm) {
+ for (var i=0; i<select_elm.options.length; i++) {
+ var ov = "" + select_elm.options[i].value;
- return template;
-}
+ if (first_index && ov.toLowerCase().indexOf(value.toLowerCase()) == 0) {
+ select_elm.selectedIndex = i;
+ return true;
+ }
-/**
- * Node change handler.
- */
-function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_levels,
visual_aid, any_selection) {
- function selectByValue(select_elm, value) {
- if (select_elm) {
- for (var i=0; i<select_elm.options.length; i++) {
- if (select_elm.options[i].value == value) {
- select_elm.selectedIndex = i;
- return true;
+ if (ov == value) {
+ select_elm.selectedIndex = i;
+ return true;
+ }
}
}
+
+ return false;
+ };
+
+ function getAttrib(elm, name) {
+ return elm.getAttribute(name) ? elm.getAttribute(name) : "";
+ };
+
+ // No node provided
+ if (node == null)
+ return;
+
+ // Update path
+ var pathElm = document.getElementById(editor_id + "_path");
+ var inst = tinyMCE.getInstanceById(editor_id);
+ var doc = inst.getDoc();
+ TinyMCE_AdvancedTheme._hideMenus(editor_id);
+
+ if (pathElm) {
+ // Get node path
+ var parentNode = node;
+ var path = new Array();
+
+ while (parentNode != null) {
+ if (parentNode.nodeName.toUpperCase() == "BODY") {
+ break;
+ }
+
+ // Only append element nodes to path
+ if (parentNode.nodeType == 1 && tinyMCE.getAttrib(parentNode,
"class").indexOf('mceItemHidden') == -1) {
+ path[path.length] = parentNode;
+ }
+
+ parentNode = parentNode.parentNode;
+ }
+
+ // Setup HTML
+ var html = "";
+ for (var i=path.length-1; 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: " + st + " ";
+ }
+ }
+
+ if (nodeName == "font") {
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ nodeName = "span";
+
+ var face = tinyMCE.getAttrib(path[i], "face");
+ if (face != "")
+ nodeData += "font: " + face + " ";
+
+ var size = tinyMCE.getAttrib(path[i], "size");
+ if (size != "")
+ nodeData += "size: " + size + " ";
+
+ var color = tinyMCE.getAttrib(path[i], "color");
+ if (color != "")
+ nodeData += "color: " + color + " ";
+ }
+
+ if (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 (getAttrib(path[i], 'src') != "") {
+ var src = tinyMCE.getAttrib(path[i], "mce_src");
+
+ if (src == "")
+ src = tinyMCE.getAttrib(path[i], "src");
+
+ nodeData += "src: " + src + " ";
+ }
+
+ if (path[i].nodeName == 'A' && getAttrib(path[i], 'href') !=
"") {
+ var href = tinyMCE.getAttrib(path[i], "mce_href");
+
+ if (href == "")
+ href = tinyMCE.getAttrib(path[i], "href");
+
+ nodeData += "href: " + 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 += "#" + anchor;
+ nodeData = "";
+ }
+
+ if (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 += '<a title="' + nodeData + '"
href="javascript:' + cmd + '" onclick="' + cmd + 'return
false;" onmousedown="return false;" target="_self"
class="mcePathItem">' + nodeName + '</a>';
+
+ if (i > 0) {
+ html += " » ";
+ }
+ }
+
+ pathElm.innerHTML = '<a href="#"
accesskey="x"></a>' + tinyMCE.getLang('lang_theme_path') +
": " + html + ' ';
}
- return false;
- }
+ // 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');
- function getAttrib(elm, name) {
- return elm.getAttribute(name) ? elm.getAttribute(name) : "";
- }
+ if (node.nodeName == "A" && tinyMCE.getAttrib(node,
"class").indexOf('mceItemAnchor') != -1)
+ tinyMCE.switchClass(editor_id + '_anchor', 'mceButtonSelected');
- // Get element color
- var colorElm = tinyMCE.getParentElement(node, "font", "color");
- if (colorElm)
- TinyMCE_advanced_foreColor = "" + colorElm.color.toUpperCase();
+ // Get link
+ var anchorLink = tinyMCE.getParentElement(node, "a", "href");
- // Reset old states
- tinyMCE.switchClassSticky(editor_id + '_justifyleft',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_justifyright',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_justifycenter',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_justifyfull',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_strikethrough',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_row_before',
'mceButtonDisabled', true);
- tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_delete_row',
'mceButtonDisabled', true);
- tinyMCE.switchClassSticky(editor_id + '_col_before',
'mceButtonDisabled', true);
- tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_delete_col',
'mceButtonDisabled', true);
- tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal');
+ if (anchorLink || any_selection) {
+ tinyMCE.switchClass(editor_id + '_link', anchorLink ?
'mceButtonSelected' : 'mceButtonNormal');
+ tinyMCE.switchClass(editor_id + '_unlink', anchorLink ?
'mceButtonSelected' : 'mceButtonNormal');
+ }
- // Get anchor name
- var anchorName = tinyMCE.getParentElement(node, "a", "name");
- TinyMCE_advanced_anchorName = "";
- if (anchorName) {
- TinyMCE_advanced_anchorName = anchorName.getAttribute("name");
- tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonSelected');
- }
+ // Handle visual aid
+ tinyMCE.switchClass(editor_id + '_visualaid', visual_aid ?
'mceButtonSelected' : 'mceButtonNormal');
- // Get link
- var anchorLink = tinyMCE.getParentElement(node, "a", "href");
- if (anchorLink || any_selection) {
- tinyMCE.switchClassSticky(editor_id + '_link', anchorLink ?
'mceButtonSelected' : 'mceButtonNormal', false);
- tinyMCE.switchClassSticky(editor_id + '_unlink', anchorLink ?
'mceButtonSelected' : 'mceButtonNormal', false);
- }
+ if (undo_levels != -1) {
+ tinyMCE.switchClass(editor_id + '_undo', 'mceButtonDisabled');
+ tinyMCE.switchClass(editor_id + '_redo', 'mceButtonDisabled');
+ }
- // Handle visual aid
- tinyMCE.switchClassSticky(editor_id + '_visualaid', visual_aid ?
'mceButtonSelected' : 'mceButtonNormal', false);
+ // Within li, blockquote
+ if (tinyMCE.getParentElement(node, "li,blockquote"))
+ tinyMCE.switchClass(editor_id + '_outdent', 'mceButtonNormal');
- if (undo_levels != -1) {
- tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonDisabled',
true);
- tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled',
true);
- }
+ // Has redo levels
+ if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels
> 0))
+ tinyMCE.switchClass(editor_id + '_redo', 'mceButtonNormal');
- // Within a td element
- if (tinyMCE.getParentElement(node, "td")) {
- tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonNormal',
false);
- tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonNormal',
false);
- tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonNormal',
false);
- tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonNormal',
false);
- tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonNormal',
false);
- tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonNormal',
false);
- }
+ // Has undo levels
+ if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
+ tinyMCE.switchClass(editor_id + '_undo', 'mceButtonNormal');
- // Within table
- if (tinyMCE.getParentElement(node, "table"))
- tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonSelected');
+ // Select class in select box
+ var selectElm = document.getElementById(editor_id + "_styleSelect");
+
+ if (selectElm) {
+ TinyMCE_AdvancedTheme._setupCSSClasses(editor_id);
- // Within li, blockquote
- if (tinyMCE.getParentElement(node, "li,blockquote"))
- tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal',
false);
+ classNode = node;
+ breakOut = false;
+ var index = 0;
- // Has redo levels
- if (undo_index != -1 && (undo_index < undo_levels-1 && undo_levels
> 0))
- tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonNormal',
false);
+ do {
+ if (classNode && classNode.className) {
+ for (var i=0; i<selectElm.options.length; i++) {
+ if (selectElm.options[i].value == classNode.className) {
+ index = i;
+ breakOut = true;
+ break;
+ }
+ }
+ }
+ } while (!breakOut && classNode != null && (classNode =
classNode.parentNode) != null);
- // Has undo levels
- if (undo_index != -1 && (undo_index > 0 && undo_levels > 0))
- tinyMCE.switchClassSticky(editor_id + '_undo', 'mceButtonNormal',
false);
+ selectElm.selectedIndex = index;
+ }
- // Select class in select box
- var selectElm = document.getElementById(editor_id + "_styleSelect");
- if (selectElm) {
- TinyMCE_advanced_setupCSSClasses(editor_id);
+ // Select formatblock
+ var selectElm = document.getElementById(editor_id + "_formatSelect");
+ if (selectElm) {
+ var elm = tinyMCE.getParentElement(node,
"p,div,h1,h2,h3,h4,h5,h6,pre,address");
- classNode = node;
+ if (elm)
+ selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() +
">");
+ 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<sizes.length; i++) {
+ if (('' + sizes[i]) == size) {
+ size = i;
+ break;
+ }
+ }
+ }
+
+ if (!selectByValue(selectElm, size))
+ selectByValue(selectElm, "");
+ } else
+ selectByValue(selectElm, "0");
+ }
+ }
+
+ // Handle align attributes
+ alignNode = node;
breakOut = false;
- var index = 0;
+ do {
+ if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
+ continue;
+ switch (alignNode.getAttribute('align').toLowerCase()) {
+ case "left":
+ tinyMCE.switchClass(editor_id + '_justifyleft',
'mceButtonSelected');
+ breakOut = true;
+ break;
+
+ case "right":
+ tinyMCE.switchClass(editor_id + '_justifyright',
'mceButtonSelected');
+ breakOut = true;
+ break;
+
+ case "middle":
+ case "center":
+ tinyMCE.switchClass(editor_id + '_justifycenter',
'mceButtonSelected');
+ breakOut = true;
+ break;
+
+ case "justify":
+ tinyMCE.switchClass(editor_id + '_justifyfull',
'mceButtonSelected');
+ breakOut = true;
+ break;
+ }
+ } while (!breakOut && (alignNode = alignNode.parentNode) != null);
+
+ // Div justification
+ var div = tinyMCE.getParentElement(node, "div");
+ if (div && div.style.textAlign == "center")
+ tinyMCE.switchClass(editor_id + '_justifycenter',
'mceButtonSelected');
+
+ // Do special text
+ if (!setup_content) {
+ // , "JustifyLeft", "_justifyleft", "JustifyCenter",
"justifycenter", "JustifyRight", "justifyright",
"JustifyFull", "justifyfull", "InsertUnorderedList",
"bullist", "InsertOrderedList", "numlist",
"InsertUnorderedList", "bullist", "Outdent",
"outdent", "Indent", "indent", "subscript",
"sub"
+ var ar = new Array("Bold", "_bold", "Italic",
"_italic", "Strikethrough", "_strikethrough",
"superscript", "_sup", "subscript", "_sub");
+ for (var i=0; i<ar.length; i+=2) {
+ if (inst.queryCommandState(ar[i]))
+ tinyMCE.switchClass(editor_id + ar[i+1], 'mceButtonSelected');
+ }
+
+ if (inst.queryCommandState("Underline") && (node.parentNode == null
|| node.parentNode.nodeName != "A"))
+ tinyMCE.switchClass(editor_id + '_underline', 'mceButtonSelected');
+ }
+
+ // Handle elements
do {
- if (classNode && classNode.className) {
- for (var i=0; i<selectElm.options.length; i++) {
- if (selectElm.options[i].value == classNode.className) {
- index = i;
- breakOut = true;
- break;
- }
+ switch (node.nodeName) {
+ case "UL":
+ tinyMCE.switchClass(editor_id + '_bullist', 'mceButtonSelected');
+ break;
+
+ case "OL":
+ tinyMCE.switchClass(editor_id + '_numlist', 'mceButtonSelected');
+ break;
+
+ case "HR":
+ tinyMCE.switchClass(editor_id + '_hr', 'mceButtonSelected');
+ break;
+
+ case "IMG":
+ if (getAttrib(node, 'name').indexOf('mce_') != 0 &&
tinyMCE.getAttrib(node, 'class').indexOf('mceItem') == -1) {
+ tinyMCE.switchClass(editor_id + '_image', 'mceButtonSelected');
}
+ break;
}
- } while (!breakOut && (classNode = classNode.parentNode));
+ } while ((node = node.parentNode) != null);
+ },
- selectElm.selectedIndex = index;
- }
+ // Private theme internal functions
- // Select formatblock
- var selectElm = document.getElementById(editor_id + "_formatSelect");
- if (selectElm) {
- var elm = tinyMCE.getParentElement(node,
"p,div,h1,h2,h3,h4,h5,h6,pre,address");
- if (elm) {
- selectByValue(selectElm, "<" + elm.nodeName.toLowerCase() +
">");
+ // This function auto imports CSS classes into the class selection droplist
+ _setupCSSClasses : function(editor_id) {
+ var i, selectElm;
+
+ if (!TinyMCE_AdvancedTheme._autoImportCSSClasses)
+ return;
+
+ selectElm = document.getElementById(editor_id + '_styleSelect');
+
+ if (selectElm && selectElm.getAttribute('cssImported') !=
'true') {
+ var csses = tinyMCE.getCSSClasses(editor_id);
+ if (csses && selectElm) {
+ for (i=0; i<csses.length; i++)
+ selectElm.options[selectElm.options.length] = new Option(csses[i], csses[i]);
+ }
+
+ // Only do this once
+ if (csses != null && csses.length > 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
- selectByValue(selectElm, "<p>");
- }
+ begin += 2;
- // Select fontselect
- var selectElm = document.getElementById(editor_id + "_fontNameSelect");
- if (selectElm) {
- var elm = tinyMCE.getParentElement(node, "font", "face");
- if (elm)
- selectByValue(selectElm, elm.getAttribute("face"));
- else
- selectByValue(selectElm, "");
- }
+ var end = document.cookie.indexOf(";", begin);
- // Select fontsize
- var selectElm = document.getElementById(editor_id + "_fontSizeSelect");
- if (selectElm) {
- var elm = tinyMCE.getParentElement(node, "font", "size");
- if (elm)
- selectByValue(selectElm, elm.getAttribute("size"));
- else
- selectByValue(selectElm, "1");
- }
+ if (end == -1)
+ end = dc.length;
- // Handle align attributes
- alignNode = node;
- breakOut = false;
- do {
- if (!alignNode.getAttribute || !alignNode.getAttribute('align'))
- continue;
+ return unescape(dc.substring(begin + prefix.length, end));
+ },
- switch (alignNode.getAttribute('align').toLowerCase()) {
- case "left":
- tinyMCE.switchClassSticky(editor_id + '_justifyleft',
'mceButtonSelected');
- breakOut = true;
- break;
+ _resizeTo : function(inst, w, h, set_w) {
+ var editorContainer = document.getElementById(inst.editorId + '_parent');
+ var tableElm = editorContainer.firstChild;
+ var iframe = inst.iframeElement;
- case "right":
- tinyMCE.switchClassSticky(editor_id + '_justifyright',
'mceButtonSelected');
- breakOut = true;
- break;
+ if (w == null || w == "null") {
+ set_w = false;
+ w = 0;
+ }
- case "middle":
- case "center":
- tinyMCE.switchClassSticky(editor_id + '_justifycenter',
'mceButtonSelected');
- breakOut = true;
- break;
+ if (h == null || h == "null")
+ return;
- case "justify":
- tinyMCE.switchClassSticky(editor_id + '_justifyfull',
'mceButtonSelected');
- breakOut = true;
- break;
+ w = parseInt(w);
+ h = parseInt(h);
+
+ if (tinyMCE.isGecko) {
+ w += 2;
+ h += 2;
}
- } while (!breakOut && (alignNode = alignNode.parentNode));
- // Handle elements
- do {
- switch (node.nodeName.toLowerCase()) {
- case "b":
- case "strong":
- tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
- break;
+ var dx = w - tableElm.clientWidth;
+ var dy = h - tableElm.clientHeight;
- case "i":
- case "em":
- tinyMCE.switchClassSticky(editor_id + '_italic',
'mceButtonSelected');
- break;
+ w = w < 1 ? 30 : w;
+ h = h < 1 ? 30 : h;
- case "u":
- tinyMCE.switchClassSticky(editor_id + '_underline',
'mceButtonSelected');
- break;
+ if (set_w)
+ tableElm.style.width = w + "px";
- case "strike":
- tinyMCE.switchClassSticky(editor_id + '_strikethrough',
'mceButtonSelected');
- break;
-
- case "ul":
- tinyMCE.switchClassSticky(editor_id + '_bullist',
'mceButtonSelected');
- break;
+ tableElm.style.height = h + "px";
- case "ol":
- tinyMCE.switchClassSticky(editor_id + '_numlist',
'mceButtonSelected');
- break;
+ iw = iframe.clientWidth + dx;
+ ih = iframe.clientHeight + dy;
- case "sub":
- tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonSelected');
- break;
+ iw = iw < 1 ? 30 : iw;
+ ih = ih < 1 ? 30 : ih;
- case "sup":
- tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonSelected');
- break;
+ if (tinyMCE.isGecko) {
+ iw -= 2;
+ ih -= 2;
+ }
- case "hr":
- tinyMCE.switchClassSticky(editor_id + '_hr',
'mceButtonSelected');
- break;
+ if (set_w)
+ iframe.style.width = iw + "px";
- case "img":
- if (getAttrib(node, 'name').indexOf('mce_') != 0)
- tinyMCE.switchClassSticky(editor_id + '_image',
'mceButtonSelected');
- break;
+ 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";
+ }
}
- } while ((node = node.parentNode));
-}
-// This function auto imports CSS classes into the class selection droplist
-function TinyMCE_advanced_setupCSSClasses(editor_id) {
- if (!TinyMCE_advanced_autoImportCSSClasses)
- return;
+ // Remove pesky table controls
+ inst.useCSS = false;
+ },
- var selectElm = document.getElementById(editor_id + '_styleSelect');
+ /**
+ * Handles resizing events.
+ */
+ _resizeEventHandler : function(e) {
+ var resizer = TinyMCE_AdvancedTheme._resizer;
- if (selectElm && selectElm.getAttribute('cssImported') !=
'true') {
- var csses = tinyMCE.getCSSClasses(editor_id);
- if (csses && selectElm) {
- for (var i=0; i<csses.length; i++)
- selectElm.options[selectElm.length] = new Option(csses[i], csses[i]);
+ // 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;
}
+ },
- // Only do this once
- if (csses != null && csses.length > 0)
- selectElm.setAttribute('cssImported', 'true');
+ /**
+ * 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 = '<span class="mceMenuLine"></span>';
+ cl = tinyMCE.getParam(n, TinyMCE_AdvancedTheme._defColors).split(',');
+
+ h += '<table class="mceColors"><tr>';
+ for (i=0; i<cl.length; i++) {
+ c = 'tinyMCE.execInstanceCommand(\'' + id + '\', \'' + cm
+ '\', false, \'#' + cl[i] + '\');';
+ h += '<td><a href="javascript:' + c + '"
style="background-color: #' + cl[i] + '" onclick="' + c +
';return false;"></a></td>';
+
+ if ((i+1) % 8 == 0)
+ h += '</tr><tr>';
+ }
+
+ h += '</tr></table>';
+ /*
+ h += '<a href="" class="mceMoreColors">More
colors</a>';
+ */
+
+ return h;
+ },
+
+ _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 += '<img src="' + src + '" alt="' + alt +
'"';
+ html += ' border="' + border + '" hspace="' + hspace +
'"';
+ html += ' vspace="' + vspace + '" width="' + width +
'"';
+ html += ' height="' + height + '" align="' + align +
'" title="' + title + '" onmouseover="' + onmouseover
+ '" onmouseout="' + onmouseout + '" />';
+
+ tinyMCE.execCommand("mceInsertContent", false, html);
+ } else {
+ if (!tinyMCE.imgElement && tinyMCE.selectedInstance) {
+ if (tinyMCE.isSafari)
+ tinyMCE.execCommand("mceInsertContent", false, '<img
src="' + tinyMCE.uniqueURL + '" />');
+ 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, '<a href="'
+ tinyMCE.uniqueURL + '">' +
tinyMCE.selectedInstance.selection.getSelectedHTML() + '</a>');
+ } 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<elementArray.length; i++) {
+ var mhref = href;
+ var thref = eval(tinyMCE.settings['urlconverter_callback'] + "(href,
elementArray[i]);");
+ mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
+
+ tinyMCE.setAttrib(elementArray[i], 'href', thref);
+ tinyMCE.setAttrib(elementArray[i], 'mce_href', mhref);
+ tinyMCE.setAttrib(elementArray[i], 'target', target);
+ tinyMCE.setAttrib(elementArray[i], 'title', title);
+ tinyMCE.setAttrib(elementArray[i], 'onclick', onclick);
+ tinyMCE.setAttrib(elementArray[i], 'class', style_class);
+ }
+
+ tinyMCE.linkElement = elementArray[0];
+ }
+
+ if (tinyMCE.linkElement) {
+ var mhref = href;
+ href = eval(tinyMCE.settings['urlconverter_callback'] + "(href,
tinyMCE.linkElement);");
+ mhref = tinyMCE.getParam('convert_urls') ? href : mhref;
+
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'href', href);
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'mce_href', mhref);
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'target', target);
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'title', title);
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'onclick', onclick);
+ tinyMCE.setAttrib(tinyMCE.linkElement, 'class', style_class);
+ }
+
+ tinyMCE.execCommand('mceEndUndoLevel');
}
-}
+};
+
+tinyMCE.addTheme("advanced", TinyMCE_AdvancedTheme);
+
+// Add default buttons maps for advanced theme and all internal plugins
+tinyMCE.addButtonMap(TinyMCE_AdvancedTheme._buttonMap);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/image.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/image.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/image.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,69 +1,57 @@
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_image_title}</title>
-<script language="javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
- function insertImage() {
- if (window.opener) {
- 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;
+ <title>{$lang_insert_image_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/image.js"></script>
+ <base target="_self" />
+</head>
+<body id="image"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+<form onsubmit="insertImage();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_insert_image_title}</a></span></li>
+ </ul>
+ </div>
- window.opener.tinyMCE.insertImage(src, alt, border, hspace, vspace, width, height,
align);
- top.close();
- }
- }
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
+ <table border="0" cellpadding="4"
cellspacing="0">
+ <tr>
+ <td nowrap="nowrap"><label
for="src">{$lang_insert_image_src}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="src" name="src"
type="text" value="" style="width: 200px"
onchange="getImageData();"></td>
+ <td id="srcbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <!-- Image list -->
+ <script language="javascript">
+ if (typeof(tinyMCEImageList) != "undefined" &&
tinyMCEImageList.length > 0) {
+ var html = "";
- function init() {
- var formObj = document.forms[0];
+ html += '<tr><td><label
for="image_list">{$lang_image_list}</label></td>';
+ html += '<td><select id="image_list"
name="image_list" style="width: 200px"
onchange="this.form.src.value=this.options[this.selectedIndex].value;resetImageData();getImageData();">';
+ html += '<option value="">---</option>';
- for (var i=0; i<document.forms[0].align.options.length; i++) {
- if (document.forms[0].align.options[i].value ==
tinyMCE.getWindowArg('align'))
- document.forms[0].align.options.selectedIndex = i;
- }
+ for (var i=0; i<tinyMCEImageList.length; i++)
+ html += '<option value="' + tinyMCEImageList[i][1] +
'">' + tinyMCEImageList[i][0] + '</option>';
- formObj.src.value = tinyMCE.getWindowArg('src');
- formObj.alt.value = tinyMCE.getWindowArg('alt');
- formObj.border.value = tinyMCE.getWindowArg('border');
- formObj.vspace.value = tinyMCE.getWindowArg('vspace');
- formObj.hspace.value = tinyMCE.getWindowArg('hspace');
- formObj.width.value = tinyMCE.getWindowArg('width');
- formObj.height.value = tinyMCE.getWindowArg('height');
- formObj.height.value = tinyMCE.getWindowArg('height');
- formObj.insert.value = tinyMCE.getLang('lang_' +
tinyMCE.getWindowArg('action'));
+ html += '</select></td></tr>';
- window.focus();
- }
-
- function cancelAction() {
- top.close();
- }
-</script>
-</head>
-<body onload="window.focus();init();">
-<form onsubmit="insertImage();return false;">
- <table border="0" cellpadding="0" cellspacing="0"
width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
+ document.write(html);
+ }
+ </script>
+ <!-- /Image list -->
<tr>
- <td colspan="2"
class="title">{$lang_insert_image_title}</td>
+ <td nowrap="nowrap"><label
for="alt">{$lang_insert_image_alt}</label></td>
+ <td><input id="alt" name="alt"
type="text" value="" style="width: 200px"></td>
</tr>
<tr>
- <td>{$lang_insert_image_src}:</td>
- <td><input name="src" type="text"
id="src" value="" style="width: 200px"></td>
- </tr>
- <tr>
- <td>{$lang_insert_image_alt}:</td>
- <td><input name="alt" type="text"
id="alt" value="" style="width: 200px"></td>
- </tr>
- <tr>
- <td>{$lang_insert_image_align}:</td>
- <td><select name="align">
+ <td nowrap="nowrap"><label
for="align">{$lang_insert_image_align}</label></td>
+ <td><select id="align" name="align">
<option
value="">{$lang_insert_image_align_default}</option>
<option
value="baseline">{$lang_insert_image_align_baseline}</option>
<option
value="top">{$lang_insert_image_align_top}</option>
@@ -77,31 +65,36 @@
</select></td>
</tr>
<tr>
- <td>{$lang_insert_image_dimensions}:</td>
- <td><input name="width" type="text"
id="width" value="" size="3" maxlength="3">
+ <td nowrap="nowrap"><label
for="width">{$lang_insert_image_dimensions}</label></td>
+ <td><input id="width" name="width"
type="text" value="" size="3" maxlength="3">
x
- <input name="height" type="text"
id="height" value="" size="3"
maxlength="3"></td>
+ <input id="height" name="height"
type="text" value="" size="3"
maxlength="3"></td>
</tr>
<tr>
- <td>{$lang_insert_image_border}:</td>
- <td><input name="border" type="text"
id="border" value="" size="3"
maxlength="3"></td>
+ <td nowrap="nowrap"><label
for="border">{$lang_insert_image_border}</label></td>
+ <td><input id="border" name="border"
type="text" value="" size="3"
maxlength="3"></td>
</tr>
<tr>
- <td>{$lang_insert_image_vspace}:</td>
- <td><input name="vspace" type="text"
id="vspace" value="" size="3"
maxlength="3"></td>
+ <td nowrap="nowrap"><label
for="vspace">{$lang_insert_image_vspace}</label></td>
+ <td><input id="vspace" name="vspace"
type="text" value="" size="3"
maxlength="3"></td>
</tr>
<tr>
- <td>{$lang_insert_image_hspace}:</td>
- <td><input name="hspace" type="text"
id="hspace" value="" size="3"
maxlength="3"></td>
+ <td nowrap="nowrap"><label
for="hspace">{$lang_insert_image_hspace}</label></td>
+ <td><input id="hspace" name="hspace"
type="text" value="" size="3"
maxlength="3"></td>
</tr>
- <tr>
- <td><input type="button" id="insert"
name="insert" value="{$lang_insert}"
onclick="insertImage();">
- </td>
- <td align="right"><input type="button"
id="cancel" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();"></td>
- </tr>
- </table></td>
- </tr>
- </table>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertImage();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
</form>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/anchor.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/anchor_symbol.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/backcolor.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_de_se.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_es.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_fr.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bold_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/browse.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/bullist.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/button_menu.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cancel_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/charmap.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cleanup.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/close.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/code.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/color.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/copy.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/custom_1.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/cut.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/forecolor.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/help.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/hr.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/image.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/indent.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/insert_button_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_de_se.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_es.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/italic_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifycenter.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyfull.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyleft.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/justifyright.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/link.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/menu_check.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/newdocument.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/numlist.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/opacity.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/outdent.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/paste.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/redo.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/removeformat.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/separator.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/spacer.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/statusbar_resize.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/strikethrough.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/sub.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/sup.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_es.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_fr.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/underline_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/undo.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/unlink.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/visualaid.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_end.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/images/xp/tabs_bg.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/about.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,75 @@
+function init() {
+ var inst;
+
+ tinyMCEPopup.resizeToInnerSize();
+ inst = tinyMCE.selectedInstance;
+
+ // Give FF some time
+ window.setTimeout('insertHelpIFrame();', 10);
+
+ var tcont = document.getElementById('plugintablecontainer');
+ var plugins = tinyMCE.getParam('plugins', '', true, ',');
+ if (plugins.length == 0)
+ document.getElementById('plugins_tab').style.display = 'none';
+
+ var html = "";
+ html += '<table id="plugintable">';
+ html += '<thead>';
+ html += '<tr>';
+ html += '<td>' + tinyMCE.getLang('lang_plugin') +
'</td>';
+ html += '<td>' + tinyMCE.getLang('lang_author') +
'</td>';
+ html += '<td>' + tinyMCE.getLang('lang_version') +
'</td>';
+ html += '</tr>';
+ html += '</thead>';
+ html += '<tbody>';
+
+ for (var i=0; i<inst.plugins.length; i++) {
+ var info = getPluginInfo(inst.plugins[i]);
+
+ html += '<tr>';
+
+ if (info.infourl != null && info.infourl != '')
+ html += '<td width="50%" title="' + plugins[i] +
'"><a href="' + info.infourl + '"
target="mceplugin">' + info.longname + '</a></td>';
+ else
+ html += '<td width="50%" title="' + plugins[i] +
'">' + info.longname + '</td>';
+
+ if (info.authorurl != null && info.authorurl != '')
+ html += '<td width="35%"><a href="' + info.authorurl +
'" target="mceplugin">' + info.author +
'</a></td>';
+ else
+ html += '<td width="35%">' + info.author +
'</td>';
+
+ html += '<td width="15%">' + info.version +
'</td>';
+ html += '</tr>';
+ }
+
+ html += '</tbody>';
+ html += '</table>';
+
+ 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 = '<iframe width="100%" height="300" src="'
+ tinyMCE.themeURL + "/docs/" + tinyMCE.settings['docs_language'] +
"/index.htm" + '"></iframe>';
+
+ document.getElementById('iframecontainer').innerHTML = html;
+
+ html = '';
+ html += '<a href="http://www.moxiecode.com"
target="_blank"><img
src="http://tinymce.moxiecode.com/images/gotmoxie.png" alt="Got
Moxie?" border="0" /></a> ';
+ html += '<a
href="http://sourceforge.net/projects/tinymce/"
target="_blank"><img
src="http://sourceforge.net/sflogo.php?group_id=103281" alt="Hosted By
Sourceforge" border="0" /></a> ';
+ html += '<a
href="http://www.freshmeat.net/projects/tinymce"
target="_blank"><img
src="http://tinymce.moxiecode.com/images/fm.gif" alt="Also on
freshmeat" border="0" /></a> ';
+
+ document.getElementById('buttoncontainer').innerHTML = html;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/anchor.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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, '<');
+ name = name.replace(/>/g, '>');
+
+ // Fix for bug #1447335
+ if (tinyMCE.isGecko)
+ html = '<a id="mceNewAnchor" name="' + name +
'"></a>';
+ else
+ html = '<a name="' + name + '"></a>';
+
+ 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();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/charmap.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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 = '<table border="0" cellspacing="1"
cellpadding="0" width="' + (tdWidth*charsPerRow) +
'"><tr height="' + tdHeight + '">';
+ var cols=-1;
+ for (var i=0; i<charmap.length; i++) {
+ if (charmap[i][2]==true) {
+ cols++;
+ html += ''
+ + '<td width="' + tdWidth + '" height="' + tdHeight
+ '" class="charmap"'
+ + ' onmouseover="this.className=\'charmapOver\';'
+ + 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) +
'\',\'' + charmap[i][0].substring(1,charmap[i][0].length) +
'\',\'' + charmap[i][3] + '\');"'
+ + ' onmouseout="this.className=\'charmap\';"'
+ + ' nowrap="nowrap" onclick="insertChar(\'' +
charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"><a
style="text-decoration: none;" onfocus="previewChar(\'' +
charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' +
charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3]
+ '\');" href="javascript:insertChar(\'' +
charmap[i][1].substring(2,charmap[i][1].length-1) + '\');"
onclick="return false;" onmousedown="return false;" title="'
+ charmap[i][3] + '">'
+ + charmap[i][1]
+ + '</a></td>';
+ if ((cols+1) % charsPerRow == 0)
+ html += '</tr><tr height="' + tdHeight + '">';
+ }
+ }
+ if (cols % charsPerRow > 0) {
+ var padd = charsPerRow - (cols % charsPerRow);
+ for (var i=0; i<padd-1; i++)
+ html += '<td width="' + tdWidth + '" height="' +
tdHeight + '" class="charmap"> </td>';
+ }
+ html += '</tr></table>';
+ 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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/color_picker.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,108 @@
+function init() {
+ if (tinyMCE.isMSIE)
+ tinyMCEPopup.resizeToInnerSize();
+}
+
+function selectColor() {
+ var color = document.getElementById("selectedColorBox").value;
+
+ tinyMCEPopup.execCommand(tinyMCE.getWindowArg('command'), false, color);
+ tinyMCEPopup.close();
+}
+
+function showColor(color) {
+ document.getElementById("selectedColor").style.backgroundColor = color;
+ document.getElementById("selectedColorBox").value = color;
+}
+
+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"
+);
+
+function convertRGBToHex(col) {
+ var re = new
RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)",
"gi");
+
+ 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 "rgb(" + r + "," + g + "," + b + ")";
+ }
+
+ return col;
+}
+
+function renderColorMap() {
+ var html = "";
+ var inputColor = convertRGBToHex(tinyMCE.getWindowArg('input_color'));
+
+ html += '<table border="0" cellspacing="1"
cellpadding="0">'
+ + '<tr>';
+ for (var i=0; i<colors.length; i++) {
+ html += '<td bgcolor="' + colors[i] + '">'
+ + '<a href="javascript:selectColor();"
onfocus="showColor(\'' + colors[i] + '\');"
onmouseover="showColor(\'' + colors[i] + '\');">'
+ + '<img border="0" src="images/spacer.gif"
width="10" height="10" title="' + colors[i] + '"
alt="' + colors[i] + '" /></a></td>';
+ if ((i+1) % 18 == 0)
+ html += '</tr><tr>';
+ }
+ html += '<tr><td colspan="18">'
+ + '<table width="100%" border="0" cellspacing="0"
cellpadding="0">'
+ + '<tr><td>'
+ + '<img id="selectedColor" style="background-color:' +
tinyMCE.getWindowArg('input_color') + '" border="0"
src="images/spacer.gif" width="80" height="16" />'
+ + '</td><td align="right">'
+ + '<input id="selectedColorBox" name="selectedColorBox"
type="text" size="7" maxlength="7"
style="width:65px" value="' + inputColor + '" />'
+ + '</td></tr>'
+ + '</table>'
+ + '<div style="float: left"><input type="button"
id="insert" name="insert"
value="{$lang_theme_colorpicker_apply}" style="margin-top:3px"
onclick="selectColor();"></div>'
+ + '<div style="float: right"><input type="button"
name="cancel" value="{$lang_cancel}" style="margin-top:3px"
onclick="tinyMCEPopup.close();" id="cancel" /></div>'
+ + '</td></tr>'
+ + '</table>';
+
+ document.write(html);
+}
\ No newline at end of file
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/image.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,81 @@
+var url = tinyMCE.getParam("external_image_list_url");
+if (url != null) {
+ // Fix relative
+ if (url.charAt(0) != '/' && url.indexOf('://') == -1)
+ url = tinyMCE.documentBasePath + "/" + url;
+
+ document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+}
+
+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<document.forms[0].align.options.length; i++) {
+ if (document.forms[0].align.options[i].value == tinyMCE.getWindowArg('align'))
+ document.forms[0].align.options.selectedIndex = i;
+ }
+
+ formObj.src.value = tinyMCE.getWindowArg('src');
+ formObj.alt.value = tinyMCE.getWindowArg('alt');
+ formObj.border.value = tinyMCE.getWindowArg('border');
+ formObj.vspace.value = tinyMCE.getWindowArg('vspace');
+ formObj.hspace.value = tinyMCE.getWindowArg('hspace');
+ formObj.width.value = tinyMCE.getWindowArg('width');
+ formObj.height.value = tinyMCE.getWindowArg('height');
+ formObj.insert.value = tinyMCE.getLang('lang_' +
tinyMCE.getWindowArg('action'), 'Insert', true);
+
+ // Handle file browser
+ if (isVisible('srcbrowser'))
+ document.getElementById('src').style.width = '180px';
+
+ // Auto select image in list
+ if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length
> 0) {
+ for (var i=0; i<formObj.image_list.length; i++) {
+ if (formObj.image_list.options[i].value == tinyMCE.getWindowArg('src'))
+ formObj.image_list.options[i].selected = true;
+ }
+ }
+}
+
+var preloadImg = new Image();
+
+function resetImageData() {
+ var formObj = document.forms[0];
+ formObj.width.value = formObj.height.value = "";
+}
+
+function updateImageData() {
+ var formObj = document.forms[0];
+
+ if (formObj.width.value == "")
+ formObj.width.value = preloadImg.width;
+
+ if (formObj.height.value == "")
+ formObj.height.value = preloadImg.height;
+}
+
+function getImageData() {
+ preloadImg = new Image();
+ tinyMCE.addEvent(preloadImg, "load", updateImageData);
+ tinyMCE.addEvent(preloadImg, "error", function () {var formObj =
document.forms[0];formObj.width.value = formObj.height.value = "";});
+ preloadImg.src =
tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
document.forms[0].src.value);
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/link.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,70 @@
+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('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></sc'+'ript>');
+}
+
+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<document.forms[0].target.options.length; i++) {
+ var option = document.forms[0].target.options[i];
+
+ if (option.value == tinyMCE.getWindowArg('target'))
+ option.selected = true;
+ }
+
+ document.forms[0].href.value = tinyMCE.getWindowArg('href');
+ document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
+ document.forms[0].insert.value = tinyMCE.getLang('lang_' +
tinyMCE.getWindowArg('action'), 'Insert', true);
+
+ addClassesToList('styleSelect', 'theme_advanced_link_styles');
+ selectByValue(formObj, 'styleSelect', tinyMCE.getWindowArg('className'),
true);
+
+ // Hide css select row if no CSS classes
+ if (formObj.styleSelect && formObj.styleSelect.options.length <= 1) {
+ var sr = document.getElementById('styleSelectRow');
+ sr.style.display = 'none';
+ sr.parentNode.removeChild(sr);
+ }
+
+ // Auto select link in list
+ if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length
> 0) {
+ var formObj = document.forms[0];
+
+ for (var i=0; i<formObj.link_list.length; i++) {
+ if (formObj.link_list.options[i].value == tinyMCE.getWindowArg('href'))
+ formObj.link_list.options[i].selected = true;
+ }
+ }
+}
+
+function insertLink() {
+ var href = document.forms[0].href.value;
+ var target =
document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
+ var title = document.forms[0].linktitle.value;
+ var style_class = document.forms[0].styleSelect ? document.forms[0].styleSelect.value :
"";
+ var dummy;
+
+ // Make anchors absolute
+ if (href.charAt(0) == '#')
+ href = tinyMCE.settings['document_base_url'] + href;
+
+ if (target == '_self')
+ target = '';
+
+ tinyMCEPopup.restoreSelection();
+ tinyMCE.themes['advanced']._insertLink(href, target, title, dummy,
style_class);
+ tinyMCEPopup.close();
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/jscripts/source_editor.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,60 @@
+function saveContent() {
+ tinyMCE.setContent(document.getElementById('htmlSource').value);
+ tinyMCE.closeWindow(window);
+}
+
+function onLoadInit() {
+ tinyMCEPopup.resizeToInnerSize();
+
+ // Remove Gecko spellchecking
+ if (tinyMCE.isGecko)
+ document.body.spellcheck = tinyMCE.getParam("gecko_spellcheck");
+
+ document.getElementById('htmlSource').value =
tinyMCE.getContent(tinyMCE.getWindowArg('editor_id'));
+
+ resizeInputs();
+
+ if (tinyMCE.getParam("theme_advanced_source_editor_wrap", true)) {
+ setWrap('soft');
+ document.getElementById('wraped').checked = true;
+ }
+}
+
+function setWrap(val) {
+ var s = document.getElementById('htmlSource');
+
+ s.wrap = val;
+
+ if (tinyMCE.isGecko) {
+ var v = s.value;
+ var n = s.cloneNode(false);
+ n.setAttribute("wrap", val);
+ s.parentNode.replaceChild(n, s);
+ n.value = v;
+ }
+}
+
+function toggleWordWrap(elm) {
+ if (elm.checked)
+ setWrap('soft');
+ else
+ setWrap('off');
+}
+
+var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
+
+function resizeInputs() {
+ var el = document.getElementById('htmlSource');
+
+ if (!tinyMCE.isMSIE) {
+ wHeight = self.innerHeight-80;
+ wWidth = self.innerWidth-16;
+ } else {
+ wHeight = document.body.clientHeight - 80;
+ wWidth = document.body.clientWidth - 16;
+ }
+
+ el.style.height = Math.abs(wHeight) + 'px';
+ el.style.width = Math.abs(wWidth) + 'px';
+}
+
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/langs/en.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,82 @@
+// UK lang variables
+
+tinyMCE.addToLang('',{
+theme_style_select : '-- Styles --',
+theme_code_desc : 'Edit HTML Source',
+theme_code_title : 'HTML Source Editor',
+theme_code_wordwrap : 'Word wrap',
+theme_sub_desc : 'Subscript',
+theme_sup_desc : 'Superscript',
+theme_hr_desc : 'Insert horizontal ruler',
+theme_removeformat_desc : 'Remove formatting',
+theme_custom1_desc : 'Your custom description here',
+insert_image_border : 'Border',
+insert_image_dimensions : 'Dimensions',
+insert_image_vspace : 'Vertical space',
+insert_image_hspace : 'Horizontal space',
+insert_image_align : 'Alignment',
+insert_image_align_default : '-- Not set --',
+insert_image_align_baseline : 'Baseline',
+insert_image_align_top : 'Top',
+insert_image_align_middle : 'Middle',
+insert_image_align_bottom : 'Bottom',
+insert_image_align_texttop : 'TextTop',
+insert_image_align_absmiddle : 'Absolute Middle',
+insert_image_align_absbottom : 'Absolute Bottom',
+insert_image_align_left : 'Left',
+insert_image_align_right : 'Right',
+theme_font_size : '-- Font size --',
+theme_fontdefault : '-- Font family --',
+theme_block : '-- Format --',
+theme_paragraph : 'Paragraph',
+theme_div : 'Div',
+theme_address : 'Address',
+theme_pre : 'Preformatted',
+theme_h1 : 'Heading 1',
+theme_h2 : 'Heading 2',
+theme_h3 : 'Heading 3',
+theme_h4 : 'Heading 4',
+theme_h5 : 'Heading 5',
+theme_h6 : 'Heading 6',
+theme_blockquote : 'Blockquote',
+theme_code : 'Code',
+theme_samp : 'Code sample',
+theme_dt : 'Definition term ',
+theme_dd : 'Definition description',
+theme_colorpicker_title : 'Select a color',
+theme_colorpicker_apply : 'Apply',
+theme_forecolor_desc : 'Select text color',
+theme_backcolor_desc : 'Select background color',
+theme_charmap_title : 'Select custom character',
+theme_charmap_desc : 'Insert custom character',
+theme_visualaid_desc : 'Toggle guidelines/invisible elements',
+insert_anchor_title : 'Insert/edit anchor',
+insert_anchor_name : 'Anchor name',
+theme_anchor_desc : 'Insert/edit anchor',
+theme_insert_link_titlefield : 'Title',
+theme_clipboard_msg : 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo
you want more information about this issue?',
+theme_path : 'Path',
+cut_desc : 'Cut',
+copy_desc : 'Copy',
+paste_desc : 'Paste',
+link_list : 'Link list',
+image_list : 'Image list',
+browse : 'Browse',
+image_props_desc : 'Image properties',
+newdocument_desc : 'New document',
+class_name : 'Class',
+newdocument : 'Are you sure you want clear all contents?',
+about_title : 'About TinyMCE',
+about : 'About',
+license : 'License',
+plugins : 'Plugins',
+plugin : 'Plugin',
+author : 'Author',
+version : 'Version',
+loaded_plugins : 'Loaded plugins',
+help : 'Help',
+not_set : '-- Not set --',
+close : 'Close',
+toolbar_focus : 'Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to
element path - Alt-X',
+invalid_data : 'Error: Invalid values entered, these are marked in red.'
+});
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/link.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/link.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/link.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,70 +1,100 @@
-<html>
+<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_insert_link_title}</title>
-<script language="javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript">
- function init() {
- for (var i=0; i<document.forms[0].target.options.length; i++) {
- var option = document.forms[0].target.options[i];
+ <title>{$lang_insert_link_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/mctabs.js"></script>
+ <script language="javascript" type="text/javascript"
src="../../utils/form_utils.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/link.js"></script>
+ <base target="_self" />
+</head>
+<body id="link"
onload="tinyMCEPopup.executeOnLoad('init();');" style="display:
none">
+<form onsubmit="insertLink();return false;" action="#">
+ <div class="tabs">
+ <ul>
+ <li id="general_tab" class="current"><span><a
href="javascript:mcTabs.displayTab('general_tab','general_panel');"
onmousedown="return
false;">{$lang_insert_link_title}</a></span></li>
+ </ul>
+ </div>
- if (option.value == tinyMCE.getWindowArg('target'))
- option.selected = true;
- }
+ <div class="panel_wrapper">
+ <div id="general_panel" class="panel current">
- document.forms[0].href.value = tinyMCE.getWindowArg('href');
- document.forms[0].linktitle.value = tinyMCE.getWindowArg('title');
- document.forms[0].insert.value = tinyMCE.getLang('lang_' +
tinyMCE.getWindowArg('action'));
+ <table border="0" cellpadding="4" cellspacing="0">
+ <tr>
+ <td nowrap="nowrap"><label
for="href">{$lang_insert_link_url}</label></td>
+ <td><table border="0" cellspacing="0"
cellpadding="0">
+ <tr>
+ <td><input id="href" name="href" type="text"
value="" style="width: 200px" /></td>
+ <td id="hrefbrowsercontainer"> </td>
+ </tr>
+ </table></td>
+ </tr>
+ <!-- Link list -->
+ <script language="javascript">
+ if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length
> 0) {
+ var html = "";
- window.focus();
- }
+ html += '<tr><td><label
for="link_list">{$lang_link_list}</label></td>';
+ html += '<td><select id="link_list" name="link_list"
style="width: 200px"
onchange="this.form.href.value=this.options[this.selectedIndex].value;">';
+ html += '<option value="">---</option>';
- function insertLink() {
- if (window.opener) {
- var href = document.forms[0].href.value;
- var target =
document.forms[0].target.options[document.forms[0].target.selectedIndex].value;
- var title = document.forms[0].linktitle.value;
+ for (var i=0; i<tinyMCELinkList.length; i++)
+ html += '<option value="' + tinyMCELinkList[i][1] +
'">' + tinyMCELinkList[i][0] + '</option>';
- window.opener.tinyMCE.insertLink(href, target, title);
- top.close();
- }
- }
+ html += '</select></td></tr>';
- function cancelAction() {
- top.close();
- }
-</script>
-</head>
-<body onload="init();">
-<form onsubmit="insertLink();return false;">
- <table border="0" cellpadding="0" cellspacing="0"
width="100%">
- <tr>
- <td align="center" valign="middle"><table
border="0" cellpadding="4" cellspacing="0">
+ document.write(html);
+ }
+ </script>
+ <!-- /Link list -->
<tr>
- <td colspan="2"
class="title">{$lang_insert_link_title}</td>
- </tr>
- <tr>
- <td>{$lang_insert_link_url}:</td>
- <td><input name="href" type="text"
id="href" value="" style="width: 200px"></td>
- </tr>
- <tr>
- <td>{$lang_insert_link_target}:</td>
- <td><select name="target" style="width:
200px">
+ <td nowrap="nowrap"><label
for="target">{$lang_insert_link_target}</label></td>
+ <td><select id="target" name="target"
style="width: 200px">
<option
value="_self">{$lang_insert_link_target_same}</option>
<option
value="_blank">{$lang_insert_link_target_blank}</option>
+ <script language="javascript">
+ var html = "";
+ var targets = tinyMCE.getParam('theme_advanced_link_targets',
'').split(';');
+
+ for (var i=0; i<targets.length; i++) {
+ var key, value;
+
+ if (targets[i] == "")
+ continue;
+
+ key = targets[i].split('=')[0];
+ value = targets[i].split('=')[1];
+
+ html += '<option value="' + value + '">' + key +
'</option>';
+ }
+
+ document.write(html);
+ </script>
</select></td>
</tr>
<tr>
- <td>{$lang_theme_insert_link_titlefield}:</td>
- <td><input name="linktitle" type="text"
id="linktitle" value="" style="width: 200px"></td>
+ <td nowrap="nowrap"><label
for="linktitle">{$lang_theme_insert_link_titlefield}</label></td>
+ <td><input id="linktitle" name="linktitle"
type="text" value="" style="width: 200px"></td>
</tr>
- <tr>
- <td><input type="button" id="insert"
name="insert" value="{$lang_insert}"
onclick="insertLink();">
- </td>
- <td align="right"><input type="button"
id="cancel" name="cancel" value="{$lang_cancel}"
onclick="cancelAction();"></td>
+ <tr id="styleSelectRow">
+ <td><label
for="styleSelect">{$lang_class_name}</label></td>
+ <td>
+ <select id="styleSelect" name="styleSelect">
+ <option value=""
selected>{$lang_theme_style_select}</option>
+ </select></td>
</tr>
- </table></td>
- </tr>
- </table>
+ </table>
+ </div>
+ </div>
+
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" id="insert" name="insert"
value="{$lang_insert}" onclick="insertLink();" />
+ </div>
+
+ <div style="float: right">
+ <input type="button" id="cancel" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </div>
</form>
</body>
</html>
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/advanced/source_editor.htm 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,88 +1,32 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
-<title>{$lang_theme_code_title}</title>
-<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
-<script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
-<script language="javascript" type="text/javascript">
-<!--
- function saveContent() {
- if (window.opener) {
-
window.opener.tinyMCE.setContent(document.getElementById('htmlSource').value);
- window.close();
- }
- }
+ <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
+ <title>{$lang_theme_code_title}</title>
+ <script language="javascript" type="text/javascript"
src="../../tiny_mce_popup.js"></script>
+ <script language="javascript" type="text/javascript"
src="jscripts/source_editor.js"></script>
+ <base target="_self" />
+</head>
+<body onload="tinyMCEPopup.executeOnLoad('onLoadInit();');"
onresize="resizeInputs();" style="display: none">
+ <form name="source" onsubmit="saveContent();"
action="#">
+ <div style="float: left"
class="title">{$lang_theme_code_title}</div>
- // Fixes some charcode issues
- function fixContent(html) {
- html = html.replace(new
RegExp(/<(p|hr|table|tr|td|ol|ul|object|embed|li|blockquote)/gi),'\n<$1');
- html = html.replace(new
RegExp(/<\/(p|ol|ul|li|table|tr|td|blockquote|object)>/gi),'</$1>\n');
- html = tinyMCE.regexpReplace(html, '<br />','<br
/>\n','gi');
- html = tinyMCE.regexpReplace(html, '\n\n','\n','gi');
- return html;
- }
+ <div id="wrapline" style="float: right">
+ <input type="checkbox" name="wraped" id="wraped"
onclick="toggleWordWrap(this);" class="wordWrapCode" /><label
for="wraped">{$lang_theme_code_wordwrap}</label>
+ </div>
- function onLoadInit() {
- document.forms[0].htmlSource.value =
fixContent(tinyMCE.getContent(tinyMCE.getWindowArg('editor_id')));
- resizeInputs();
- setWrap('off');
- }
+ <br style="clear: both" />
- function setWrap(val) {
- // hard soft off
- document.forms[0].htmlSource.wrap = val;
- }
+ <textarea name="htmlSource" id="htmlSource" rows="15"
cols="100" style="width: 100%; height: 100%; font-family: 'Courier
New',Courier,mono; font-size: 12px" dir="ltr"
wrap="off"></textarea>
- function toggleWordWrap(elm) {
- if (elm.checked)
- setWrap('soft');
- else
- setWrap('off');
- }
+ <div class="mceActionPanel">
+ <div style="float: left">
+ <input type="button" name="insert"
value="{$lang_update}" onclick="saveContent();" id="insert"
/>
+ </div>
- var wHeight=0, wWidth=0, owHeight=0, owWidth=0;
-
- function resizeInputs() {
- if (!tinyMCE.isMSIE) {
- wHeight = self.innerHeight-80;
- wWidth = self.innerWidth-25;
- } else {
- wHeight = document.body.clientHeight-80;
- wWidth = document.body.clientWidth-25;
- }
-
- document.forms[0].htmlSource.style.height = Math.abs(wHeight) + 'px';
- document.forms[0].htmlSource.style.width = Math.abs(wWidth) + 'px';
-
- }
-
- window.focus();
-//-->
-</script>
-</head>
-<body scroll="no" onload="onLoadInit();"
onresize="resizeInputs();">
-<form name="source" onsubmit="saveContent();">
- <table border="0" cellpadding="0" cellspacing="2"
align="center">
- <tr>
- <td class="title">{$lang_theme_code_title}</td>
- <td align="right"><script language="javascript"
type="text/javascript">
-<!--
- if (tinyMCE.isMSIE) {
- document.write('<input type="checkbox" name="wraped"
id="wraped" onclick="toggleWordWrap(this);"
class="wordWrapCode" /><label
for="wraped">{$lang_theme_code_wordwrap}</label>');
- }
-//-->
- </script></td>
- </tr>
- <tr>
- <td colspan="2" align="center">
- <textarea name="htmlSource" id="htmlSource"
rows="15" cols="100" style="width: 100%; height: 100%;
font-family: 'Courier New',Courier,mono; font-size: 12px;"
dir="ltr" wrap="soft"></textarea>
- </td>
- </tr>
- <tr>
- <td colspan="2" align="right"><input
type="button" id="insert" name="insert"
value="{$lang_update}" onclick="saveContent();" /></td>
- </tr>
- </table>
-</form>
+ <div style="float: right">
+ <input type="button" name="cancel"
value="{$lang_cancel}" onclick="tinyMCEPopup.close();"
id="cancel" />
+ </div>
+ </div>
+ </form>
</body>
</html>
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_content.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_popup.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/css/editor_ui.css 2006-12-04
18:16:39 UTC (rev 5756)
@@ -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;
+}
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,70 +1 @@
-function TinyMCE_simple_getEditorTemplate() {
- var template = new Array();
-
- template['html'] = '\
-<table class="mceEditor" border="0" cellpadding="0"
cellspacing="0" width="{$width}" height="{$height}">\
-<tr><td align="center">\
-<span id="{$editor_id}">IFRAME</span>\
-</td></tr>\
-<tr><td class="mceToolbar" align="center"
height="1">\
-<img id="{$editor_id}_bold"
src="{$themeurl}/images/{$lang_bold_img}" title="{$lang_bold_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Bold\')">\
-<img id="{$editor_id}_italic"
src="{$themeurl}/images/{$lang_italic_img}"
title="{$lang_italic_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Italic\')">\
-<img id="{$editor_id}_underline"
src="{$themeurl}/images/{$lang_underline_img}"
title="{$lang_underline_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Underline\')">\
-<img id="{$editor_id}_strikethrough"
src="{$themeurl}/images/strikethrough.gif"
title="{$lang_striketrough_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Strikethrough\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1"
height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/undo.gif" title="{$lang_undo_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Undo\')">\
-<img src="{$themeurl}/images/redo.gif" title="{$lang_redo_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'Redo\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1"
height="15" class="mceSeparatorLine">\
-<img src="{$themeurl}/images/cleanup.gif"
title="{$lang_cleanup_desc}" width="20" height="20"
class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceCleanup\')">\
-<img src="{$themeurl}/images/spacer.gif" width="1"
height="15" class="mceSeparatorLine">\
-<img id="{$editor_id}_bullist"
src="{$themeurl}/images/bullist.gif" title="{$lang_bullist_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertUnorderedList\')">\
-<img id="{$editor_id}_numlist"
src="{$themeurl}/images/numlist.gif" title="{$lang_numlist_desc}"
width="20" height="20" class="mceButtonNormal"
onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"
onmouseout="tinyMCE.restoreClass(this);"
onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"
onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'InsertOrderedList\')">\
-</td></tr>\
-</table>';
-
- template['delta_width'] = 0;
- template['delta_height'] = -20;
-
- return template;
-}
-
-function TinyMCE_simple_handleNodeChange(editor_id, node) {
- // Reset old states
- tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_italic', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_underline', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_strikethrough',
'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonNormal');
- tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
-
- // Handle elements
- do {
- switch (node.nodeName.toLowerCase()) {
- case "b":
- case "strong":
- tinyMCE.switchClassSticky(editor_id + '_bold', 'mceButtonSelected');
- break;
-
- case "i":
- case "em":
- tinyMCE.switchClassSticky(editor_id + '_italic',
'mceButtonSelected');
- break;
-
- case "u":
- tinyMCE.switchClassSticky(editor_id + '_underline',
'mceButtonSelected');
- break;
-
- case "strike":
- tinyMCE.switchClassSticky(editor_id + '_strikethrough',
'mceButtonSelected');
- break;
-
- case "ul":
- tinyMCE.switchClassSticky(editor_id + '_bullist',
'mceButtonSelected');
- break;
-
- case "ol":
- tinyMCE.switchClassSticky(editor_id + '_numlist',
'mceButtonSelected');
- break;
- }
- } while ((node = node.parentNode));
-}
+var
TinyMCE_SimpleTheme={_buttonMap:'bold,bullist,cleanup,italic,numlist,redo,strikethrough,underline,undo',getEditorTemplate:function(){var
html='';html+='<table class="mceEditor" border="0"
cellpadding="0" cellspacing="0" width="{$width}"
height="{$height}">';html+='<tr><td
align="center">';html+='<span
id="{$editor_id}">IFRAME</span>';html+='</td></tr>';html+='<tr><td
class="mceToolbar" align="center"
height="1">';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+='<img
src="{$themeurl}/images/separator.gif" width="2" height="20"
class="mceSeparatorLine" />';html+=tinyMCE.getB!
uttonHTML('undo','lang_undo_desc','{$themeurl}/images/undo.gif','Undo');html+=tinyMCE.getButtonHTML('redo','lang_redo_desc','{$themeurl}/images/redo.gif','Redo');html+='<img
src="{$themeurl}/images/separator.gif" width="2" height="20"
class="mceSeparatorLine"
/>';html+=tinyMCE.getButtonHTML('cleanup','lang_cleanup_desc','{$themeurl}/images/cleanup.gif','mceCleanup');html+='<img
src="{$themeurl}/images/separator.gif" width="2" height="20"
class="mceSeparatorLine"
/>';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+='</td></tr></table>';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','mceButtonNorm!
al');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
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/editor_template_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,84 @@
+/**
+ * $Id: editor_template_src.js 114 2006-10-17 09:29:32Z spocke $
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, 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 += '<table class="mceEditor" border="0"
cellpadding="0" cellspacing="0" width="{$width}"
height="{$height}">';
+ html += '<tr><td align="center">';
+ html += '<span id="{$editor_id}">IFRAME</span>';
+ html += '</td></tr>';
+ html += '<tr><td class="mceToolbar" align="center"
height="1">';
+ 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 += '<img src="{$themeurl}/images/separator.gif"
width="2" height="20" class="mceSeparatorLine" />';
+ 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 += '<img src="{$themeurl}/images/separator.gif"
width="2" height="20" class="mceSeparatorLine" />';
+ html += tinyMCE.getButtonHTML('cleanup', 'lang_cleanup_desc',
'{$themeurl}/images/cleanup.gif', 'mceCleanup');
+ html += '<img src="{$themeurl}/images/separator.gif"
width="2" height="20" class="mceSeparatorLine" />';
+ 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 += '</td></tr></table>';
+
+ 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);
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_de_se.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_fr.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bold_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/bullist.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/buttons.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/cleanup.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_de_se.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/italic_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/numlist.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/redo.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/separator.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/spacer.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/strikethrough.gif
===================================================================
(Binary files differ)
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_fr.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_ru.gif
===================================================================
(Binary files differ)
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
===================================================================
(Binary files differ)
Property changes on:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/underline_tw.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/themes/simple/images/undo.gif
===================================================================
(Binary files differ)
Modified: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce.js
===================================================================
--- trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce.js 2006-12-04
17:57:10 UTC (rev 5755)
+++ trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,10 +1 @@
-/**
- * $RCSfile$
- * $Revision$
- * $Date$
- *
- * @author Moxiecode
- * @copyright Copyright � 2004, Moxiecode Systems AB, All rights reserved.
- */
- function TinyMCE(){this.instances=new Array();this.stickyClassesLookup=new
Array();this.windowArgs=new Array();this.isMSIE=(navigator.appName=="Microsoft
Internet
Explorer");this.isMSIE5=this.isMSIE&&(navigator.userAgent.indexOf('MSIE
5')!=-1);this.isGecko=navigator.userAgent.indexOf('Gecko')!=-1;this.idCounter=0;this.init=TinyMCE_init;this.addMCEControl=TinyMCE_addMCEControl;this.createMCEControl=TinyMCE_createMCEControl;this.triggerSave=TinyMCE_triggerSave;this._convertOnClick=TinyMCE__convertOnClick;this.resetForm=TinyMCE_resetForm;this.execCommand=TinyMCE_execCommand;this.execInstanceCommand=TinyMCE_execInstanceCommand;this._createIFrame=TinyMCE__createIFrame;this.setEditMode=TinyMCE_setEditMode;this.handleEvent=TinyMCE_handleEvent;this.setupContent=TinyMCE_setupContent;this.switchClass=TinyMCE_switchClass;this.restoreAndSwitchClass=TinyMCE_restoreAndSwitchClass;this.switchClassSticky=TinyMCE_switchClassSticky;this.restoreClass=TinyMCE_restoreClass;this.setClassLock=Ti!
nyMCE_setClassLock;this.onLoad=TinyMCE_onLoad;this.removeMCEControl=TinyMCE_removeMCEControl;this._initCleanup=TinyMCE__initCleanup;this._cleanupHTML=TinyMCE__cleanupHTML;this._cleanupAttribute=TinyMCE__cleanupAttribute;this._fixInlineStyles=TinyMCE__fixInlineStyles;this._cleanupElementName=TinyMCE__cleanupElementName;this._verifyClass=TinyMCE__verifyClass;this.cleanupNode=TinyMCE_cleanupNode;this.convertStringToXML=TinyMCE_convertStringToXML;this.insertLink=TinyMCE_insertLink;this.insertImage=TinyMCE_insertImage;this.getElementByAttributeValue=TinyMCE_getElementByAttributeValue;this.getElementsByAttributeValue=TinyMCE_getElementsByAttributeValue;this.getParentElement=TinyMCE_getParentElement;this.getParam=TinyMCE_getParam;this.getLang=TinyMCE_getLang;this.replaceVar=TinyMCE_replaceVar;this.replaceVars=TinyMCE_replaceVars;this.triggerNodeChange=TinyMCE_triggerNodeChange;this.parseURL=TinyMCE_parseURL;this.convertAbsoluteURLToRelativeURL=TinyMCE_convertAbsoluteURLToRelativeU!
RL;this.updateContent=TinyMCE_updateContent;this._customCleanup=TinyMC
E__customCleanup;this.getContent=TinyMCE_getContent;this.setContent=TinyMCE_setContent;this.importThemeLanguagePack=TinyMCE_importThemeLanguagePack;this.importPluginLanguagePack=TinyMCE_importPluginLanguagePack;this.applyTemplate=TinyMCE_applyTemplate;this.openWindow=TinyMCE_openWindow;this.handleVisualAid=TinyMCE_handleVisualAid;this.setAttrib=TinyMCE_setAttrib;this.getAttrib=TinyMCE_getAttrib;this._selectNode=TinyMCE__selectNode;this._getThemeFunction=TinyMCE__getThemeFunction;this._themeExecCommand=TinyMCE__themeExecCommand;this.getControlHTML=TinyMCE_getControlHTML;this._setHTML=TinyMCE__setHTML;this._getElementById=TinyMCE__getElementById;this._getInstanceById=TinyMCE__getInstanceById;this.getEditorId=TinyMCE_getEditorId;this.queryInstanceCommandValue=TinyMCE_queryInstanceCommandValue;this.queryInstanceCommandState=TinyMCE_queryInstanceCommandState;this.getWindowArg=TinyMCE_getWindowArg;this.getCSSClasses=TinyMCE_getCSSClasses;this.regexpReplace=TinyMCE_regexpReplace;th!
is.cleanupEventStr=TinyMCE_cleanupEventStr;}function TinyMCE_init(settings){var
theme;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var
elements=document.getElementsByTagName('script');for(var
i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1)){var
src=elements[i].src;src=src.substring(0,src.lastIndexOf('/'));tinyMCE.baseURL=src;break;}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL;}this.settings=settings;this.settings['mode']=tinyMCE.getParam("mode","none");this.settings['theme']=tinyMCE.getParam("theme","d!
efault");this.settings['plugins']=tinyMCE.getParam("plugins","",true);
this.settings['language']=tinyMCE.getParam("language","uk");this.settings['docs_language']=tinyMCE.getParam("docs_language",this.settings['language']);this.settings['elements']=tinyMCE.getParam("elements","");this.settings['textarea_trigger']=tinyMCE.getParam("textarea_trigger","mce_editable");this.settings['valid_elements']=tinyMCE.getParam("valid_elements","a[name|href|target|title],strong/b[class],em/i[class],strike[class],u[class],p[class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan],td[class|colspan|rowspan|width|height],div[class|align],span[class|align],pre[class|align],address[class|align],h1[class|align],h2[class|align],h3[class|align],h4[class|align],h5[class|align],h6[class|align],hr");this.settings['extended_valid_elements']=tinyMCE.getParam("extended_valid_elements","");this.settings['invalid_elements']=tinyMCE.!
getParam("invalid_elements","");this.settings['encoding']=tinyMCE.getParam("encoding","");this.settings['urlconvertor_callback']=tinyMCE.getParam("urlconvertor_callback","TinyMCE_convertURL");this.settings['save_callback']=tinyMCE.getParam("save_callback","");this.settings['debug']=tinyMCE.getParam("debug",false);this.settings['force_br_newlines']=tinyMCE.getParam("force_br_newlines",false);this.settings['add_form_submit_trigger']=tinyMCE.getParam("add_form_submit_trigger",true);this.settings['relative_urls']=tinyMCE.getParam("relative_urls",true);this.settings['remove_script_host']=tinyMCE.getParam("remove_script_host",true);this.settings['focus_alert']=tinyMCE.getParam("focus_alert",true);this.settings['document_base_url']=tinyMCE.getParam("document_base_url",""+document.location.href);this.settings['visual']=tinyMCE.getParam("visual",true);this.settings['visual_table_style']=tinyMCE.getParam("visual_table_style","border:
1px dashed #BBBBBB");this.settings['setupcontent_c!
allback']=tinyMCE.getParam("setupcontent_callback","");this.settings['
fix_content_duplication']=tinyMCE.getParam("fix_content_duplication",true);this.settings['custom_undo_redo']=tinyMCE.getParam("custom_undo_redo",true);this.settings['custom_undo_redo_levels']=tinyMCE.getParam("custom_undo_redo_levels",-1);this.settings['custom_undo_redo_keyboard_shortcuts']=tinyMCE.getParam("custom_undo_redo_keyboard_shortcuts",true);this.settings['verify_css_classes']=tinyMCE.getParam("verify_css_classes",true);this.settings['trim_span_elements']=tinyMCE.getParam("trim_span_elements",true);this.settings['verify_html']=tinyMCE.getParam("verify_html",true);this.settings['apply_source_formatting']=tinyMCE.getParam("apply_source_formatting",false);this.settings['directionality']=tinyMCE.getParam("directionality","ltr");this.settings['auto_cleanup_word']=tinyMCE.getParam("auto_cleanup_word",true);this.settings['cleanup_on_startup']=tinyMCE.getParam("cleanup_on_startup",false);this.settings['inline_styles']=tinyMCE.getParam("inline_styles",false);this.settings['c!
onvert_newlines_to_brs']=tinyMCE.getParam("convert_newlines_to_brs",false);this.settings['auto_reset_designmode']=tinyMCE.getParam("auto_reset_designmode",false);this.settings['entities']=tinyMCE.getParam("entities","160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,870!
7,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute
,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,352,Scaron,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,376,Yuml,222,THORN,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,353,scaron,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsil!
on,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy");this.settings['cleanup_callback']=tinyMCE.getParam("cleanup_callback","");var
baseHREF=tinyMCE.settings['document_base_url'];if(baseHREF.indexOf('?')!=-1)baseHREF=baseHREF.substring(0,baseHREF.indexOf('?'));this.settings['base_href']=baseHREF.substring(0,baseHREF.lastIndexOf('/'))+"/";theme=this.settings['theme']!
;this.settings['theme_href']=tinyMCE.baseURL+"/themes/"+theme;if(!tiny
MCE.isMSIE)this.settings['force_br_newlines']=false;if(tinyMCE.getParam("content_css",false)){var
cssPath=tinyMCE.getParam("content_css","");if(cssPath.indexOf('://')==-1&&cssPath.charAt(0)!='/')this.settings['content_css']=this.documentBasePath+"/"+cssPath;else
this.settings['content_css']=cssPath;}else
this.settings['content_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_content.css";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+"/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 this.settings['edi!
tor_css']=tinyMCE.baseURL+"/themes/"+theme+"/editor_ui.css";this.settings['ask']=tinyMCE.getParam("ask",false);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);}this._initCleanup();if(this.isMSIE)attachEvent("onload",TinyMCE_onLoad);else
addEventListener("load",TinyMCE_onLoad,false);document.write('<sc'+'ript
language="javascript" type="text/javascript"
src="'+tinyMCE.baseURL+'/themes/'+this.settings['theme']+'/editor_template.js"></script>');document.write('<sc'+'ript
language="javascript" type="text/javascript"
src="'+tinyMCE.baseURL+'/langs/'+this.settings['language']+'.js"></script>');document.write('<link
href="'+this.settings['editor_css']+'"
rel="stylesheet" type="text/css">');var
themePlugins=tinyMCE.getParam(!
'plugins','',true,',');if(this.settings['plugins']!=''){for(var
i=0;i<
themePlugins.length;i++)document.write('<sc'+'ript
language="javascript" type="text/javascript"
src="'+tinyMCE.baseURL+'/plugins/'+themePlugins[i]+'/editor_plugin.js"></script>');}}function
TinyMCE_confirmAdd(e){if(tinyMCE.isMSIE)var targetElement=event.srcElement;else var
targetElement=e.target;var
elementId=targetElement.name?targetElement.name:targetElement.id;if(!targetElement.getAttribute('mce_noask')&&confirm(tinyMCELang['lang_edit_confirm']))tinyMCE.addMCEControl(targetElement,elementId,tinyMCE.createMCEControl(tinyMCE.settings));else
targetElement.setAttribute('mce_noask','true');}function
TinyMCE_updateContent(form_element_name){var
formElement=document.getElementById(form_element_name);for(var instanceName in
tinyMCE.instances){var
instance=tinyMCE.instances[instanceName];if(instance.formElement==formElement){tinyMCE._setHTML(instance.contentWindow.document,instance.formElement.value);if(!tinyMCE.isMSIE)instance.contentWindow.document.body.innerHTML=tinyMCE._cleanu!
pHTML(instance.contentWindow.document,this.settings,instance.contentWindow.document.body,instance.visualAid);}}}function
TinyMCE_addMCEControl(replace_element,form_element_name,mce_control){var
editorId="mce_editor_"+tinyMCE.idCounter++;mce_control.editorId=editorId;this.instances[editorId]=mce_control;mce_control.onAdd(replace_element,form_element_name);}function
TinyMCE_createMCEControl(settings){return new TinyMCEControl(settings);}function
TinyMCE_triggerSave(skip_cleanup){for(var instanceName in tinyMCE.instances){var
instance=tinyMCE.instances[instanceName];tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;tinyMCE._setHTML(instance.contentWindow.document,instance.contentWindow.document.body.innerHTML);var
cleanedHTML=skip_cleanup?instance.contentWindow.document.body.innerHTML:tinyMCE._cleanupHTML(instance.contentWindow.document,this.settings,instance.contentWindow.document.body,this.visualAid,true);if(tinyMCE.settings["enco!
ding"]=="xml"||tinyMCE.settings["encoding"]=="html")cleanedHTML=tinyMC
E.convertStringToXML(cleanedHTML);if(tinyMCE.settings['save_callback']!="")var
content=eval(tinyMCE.settings['save_callback']+"(instance.formTargetElementId,cleanedHTML,instance.contentWindow.document.body);");if((typeof(content)!="undefined")&&content!=null)cleanedHTML=content;cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"(","(","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,")",")","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,";",";","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,""",""","gi");cleanedHTML=tinyMCE.regexpReplace(cleanedHTML,"^","^","gi");instance.formElement.value=cleanedHTML;}}function
TinyMCE__convertOnClick(node){if(tinyMCE.isMSIE5)return;var
elms=node.getElementsByTagName("a");for(var i=0;i<elms.length;i++){var
onclick=elms[i].getAttribute('onclick');if(onclick&&onclick!=""){elms[i].removeAttribute("onclick");elms[i].setAttribute("mce_onclick",tinyMCE.cleanupEventStr(""+onclick));elms[i].onclick=null;}}}function!
TinyMCE_resetForm(e){var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var
instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];for(var
i=0;i<formObj.elements.length;i++){if(instance.formTargetElementId==formObj.elements[i].name){instance.contentWindow.document.body.innerHTML=instance.startContent;return;}}}}function
TinyMCE_execInstanceCommand(editor_id,command,user_interface,value){var
mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl){mceControl.contentWindow.focus();mceControl.autoResetDesignMode();this.selectedElement=mceControl.getFocusElement();this.selectedInstance=mceControl;tinyMCE.execCommand(command,user_interface,value);}}function
TinyMCE_execCommand(command,user_interface,value){user_interface=user_interface?user_interface:false;value=value?value:null;switch(command){case
'mceHelp':window.open(tinyMCE.themeURL+"/docs/"+this.settings['docs_language']+"/index.htm","mceHelp","menubar=yes,toolbar=yes,scrollbars=!
yes,left=20,top=20,width=550,height=600");return;case 'mceFocus':var m
ceControl=tinyMCE._getInstanceById(value);if(mceControl)mceControl.contentWindow.focus();return;case
"mceAddControl":case
"mceAddEditor":tinyMCE.addMCEControl(tinyMCE._getElementById(value),value,tinyMCE.createMCEControl(tinyMCE.settings));return;case
"mceRemoveControl":case
"mceRemoveEditor":tinyMCE.removeMCEControl(value);return;case
"mceResetDesignMode":if(!tinyMCE.isMSIE){for(var instanceName in
tinyMCE.instances)tinyMCE.instances[instanceName].contentWindow.document.designMode="on";}return;}if(this.selectedInstance)this.selectedInstance.execCommand(command,user_interface,value);else
if(tinyMCE.settings['focus_alert'])alert(tinyMCELang['lang_focus_alert']);}function
TinyMCE_addEventHandlers(editor_id){if(tinyMCE.isMSIE){var patchFunc=function(){var
event=document.frames[editor_id].event;event.target=event.srcElement;event.target.editor_id=editor_id;TinyMCE_handleEvent(event);};document.frames[editor_id].document.onkeypress=patchFunc;document.frames[editor_id].document.on!
keyup=patchFunc;document.frames[editor_id].document.onkeydown=patchFunc;document.frames[editor_id].document.onmouseup=patchFunc;document.frames[editor_id].document.onclick=patchFunc;}else{var
instance=tinyMCE.instances[editor_id];instance.contentWindow.document.editor_id=editor_id;instance.contentWindow.document.addEventListener("keypress",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("keydown",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("keyup",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("click",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("mouseup",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("mousedown",tinyMCE.handleEvent,false);instance.contentWindow.document.addEventListener("focus",tinyMCE.handleEvent,false);instance.contentWindow.document.designMode="on";}}function
TinyMCE__createIFrame(replace_element){var ifram!
e=document.createElement("iframe");var id=replace_element.getAttribute
("id");iframe.setAttribute("id",id);iframe.setAttribute("className","mceEditorArea");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",tinyMCE.settings['area_width']);iframe.setAttribute("height",tinyMCE.settings['area_height']);if(tinyMCE.isMSIE)iframe.setAttribute("src",this.settings['default_document']);iframe.style.width=tinyMCE.settings['area_width'];iframe.style.height=tinyMCE.settings['area_height'];if(tinyMCE.isMSIE)replace_element.outerHTML=iframe.outerHTML;else
replace_element.parentNode.replaceChild(iframe,replace_element);if(tinyMCE.isMSIE)return
window.frames[id];else return iframe;}function TinyMCE_setEditMode(editor_id,mode){var
targetMCEControl=this.instances[editor_id];var dynamicIFrame=false;if(!this.isMSIE){var
targetElement=document.getElementById(editor!
_id);if(targetElement&&targetElement.nodeName.toLowerCase()=="span"){targetElement=tinyMCE._createIFrame(targetElement);dynamicIFrame=true;}targetMCEControl.targetElement=targetElement;targetMCEControl.contentDocument=targetElement.contentDocument;targetMCEControl.contentWindow=targetElement.contentWindow;}else{var
targetElement=document.getElementById(editor_id);if(targetElement&&targetElement.nodeName.toLowerCase()=="span")targetElement=tinyMCE._createIFrame(targetElement);else
targetElement=document.frames[editor_id];targetMCEControl.targetElement=targetElement;targetMCEControl.contentDocument=targetElement.window.document;targetMCEControl.contentWindow=targetElement.window;targetMCEControl.contentDocument.designMode=mode?"on":"off";}var
doc=targetMCEControl.contentDocument;if(dynamicIFrame){var
html=""+'<!doctype html public "-//w3c//dtd html 4.0
transitional//en">'+'<html>'+'<head>'+'<title>blank_page</title>'+'<meta
http-equiv="Content-Type" content="text/html; charse!
t=UTF-8">'+'</head>'+'<body>'+'</body>'+'</html>';try{targetMCEControl
.contentWindow.document.designMode="on";doc.open();doc.write(html);doc.close();}catch(e){targetMCEControl.contentWindow.document.location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("TinyMCE_addEventHandlers('"+editor_id+"');",1);tinyMCE.setupContent(editor_id);}function
TinyMCE_setupContent(editor_id){var instance=tinyMCE.instances[editor_id];var
doc=instance.contentWindow.document;var
head=doc.getElementsByTagName('head').item(0);if(!tinyMCE.isMSIE&&doc.title!="blank_page"){doc.location.href=tinyMCE.baseURL+"/blank.htm";window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",1000);return;}if(!head){window.setTimeout("tinyMCE.setupContent('"+editor_id+"');",10);return;}doc.body.dir=this.settings['directionality'];doc.editorId=editor_id;if(!tinyMCE.isMSIE)doc.documentElement.editorId=editor_id;base=doc.createElement("base");base.setAttribute('href',tinyMCE.settings['base_href']);head.appendChild(base);var
oldElement=instance.oldTargetElement;if!
(oldElement.nodeName.toLowerCase()=="textarea")var
content=oldElement.value;else var
content=instance.oldTargetElement.innerHTML;instance.startContent=content;if(tinyMCE.settings['convert_newlines_to_brs']){content=tinyMCE.regexpReplace(content,"\r\n","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\r","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\n","<br
/>","gi");}content=tinyMCE._customCleanup("insert_to_editor",content);if(tinyMCE.isMSIE){var
styleSheet=document.frames[editor_id].document.createStyleSheet(instance.settings['content_css']);window.setInterval('try{tinyMCE.getCSSClasses(document.frames["'+editor_id+'"].document,
"'+editor_id+'");}catch(e){}',500);if(tinyMCE.settings["force_br_newlines"])document.frames[editor_id].document.styleSheets[0].addRule("p","margin:
0px;");var patchFunc=function(){var
event=document.frames[editor_id].event;event.target=document.frames[editor_id].document;TinyMCE_handleEvent(event);};document.frames[editor_id].documen!
t.body.onbeforepaste=patchFunc;document.frames[editor_id].document.bod
y.onbeforecut=patchFunc;document.frames[editor_id].document.body.onpaste=patchFunc;document.frames[editor_id].document.body.editorId=editor_id;}else{var
targetDocument=document.getElementById(editor_id).contentWindow.document;var
cssImporter=targetDocument.createElement("link");cssImporter.rel="stylesheet";cssImporter.href=instance.settings['content_css'];if(headArr=targetDocument.getElementsByTagName("head"));headArr[0].appendChild(cssImporter);}if(!tinyMCE.isMSIE){if(tinyMCE.settings['cleanup_on_startup']){var
contentElement=instance.contentWindow.document.createElement("body");contentElement.innerHTML=content;instance.contentWindow.document.body.innerHTML=tinyMCE._cleanupHTML(instance.contentWindow.document,this.settings,contentElement);}else{var
contentElement=instance.contentWindow.document.createElement("body");var
doc=instance.contentWindow.document;content=tinyMCE.regexpReplace(content,"<strong","<b","gi");content=tinyMCE.regexpReplace(content,"<em","<i","gi");conten!
t=tinyMCE.regexpReplace(content,"</strong>","</b>","gi");content=tinyMCE.regexpReplace(content,"</em>","</i>","gi");contentElement.innerHTML=content;var
elms=contentElement.getElementsByTagName("img");for(var
i=0;i<elms.length;i++){var
src=elms[i].getAttribute('src');if(src&&src!=""){src=eval(tinyMCE.cleanup_urlconvertor_callback+"(src,
elms[i],
tinyMCE.cleanup_on_save);");elms[i].setAttribute("src",src);elms[i].setAttribute("mce_real_src",src);}}elms=contentElement.getElementsByTagName("a");for(var
i=0;i<elms.length;i++){var
href=elms[i].getAttribute('href');if(href&&href!=""){href=eval(tinyMCE.cleanup_urlconvertor_callback+"(href,
elms[i],
tinyMCE.cleanup_on_save);");elms[i].setAttribute("href",href);elms[i].setAttribute("mce_real_href",href);}}instance.contentWindow.document.body.innerHTML=contentElement.innerHTML;}}else{if(tinyMCE.settings['cleanup_on_startup']){tinyMCE._setHTML(instance.contentWindow.document,content);eval('try
{instance.contentWindow.document.body.inn!
erHTML = tinyMCE._cleanupHTML(instance.contentDocument, this.settings,
instance.contentDocument.body);} catch(e) {}');}else
instance.contentWindow.document.body.innerHTML=content;}tinyMCE._convertOnClick(instance.contentWindow.document.body);var
parentElm=document.getElementById(instance.editorId+'_parent');instance.formElement=parentElm.lastChild;if(tinyMCE.settings['handleNodeChangeCallback']){var
undoIndex=-1;var
undoLevels=-1;if(tinyMCE.settings['custom_undo_redo']){undoIndex=0;undoLevels=0;}eval(tinyMCE.settings['handleNodeChangeCallback']+'("'+editor_id+'",
tinyMCE.instances["'+editor_id+'"].contentWindow.document.body,undoIndex,undoLevels,tinyMCE.instances["'+editor_id+'"].visualAid,
false);');}tinyMCE.handleVisualAid(instance.contentWindow.document.body,true,tinyMCE.settings['visual']);if(tinyMCE.settings['setupcontent_callback']!="")eval(tinyMCE.settings['setupcontent_callback']+'(editor_id,instance.contentWindow.document.body);');if(!tinyMCE.isMSIE)TinyMCE_addEventHandlers(editor_id);}function
TinyMCE_handleEvent(e){switch(e.type){ca!
se "submit":var formObj=tinyMCE.isMSIE?window.event.srcElement:e.target;for(var
i=0;i<formObj.elements.length;i++){var
elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true;}TinyMCE_triggerSave();return;case
"reset":TinyMCE_resetForm(e);return;case
"paste":if(tinyMCE.settings['auto_cleanup_word'])window.setTimeout("tinyMCE.execInstanceCommand('"+e.target.editorId+"',
'mceCleanupWord', false, null);",1);break;case "beforecut":case
"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");break;case
"keypress":if(e.target.editorId){tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];}else{if(e.target.ownerDocument.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.ownerDocument.editorId];}if(!tinyMCE.isMSIE&&e.ctrlKey&&tinyMCE.settings['custom_undo_redo']){if(e.charCode==120||e.charCode==118){tinyMCE.selectedInstance!
.execCommand("mceAddUndoLevel");return;}if(tinyMCE.settings['custom_un
do_redo_keyboard_shortcuts']){if(e.charCode==122){tinyMCE.selectedInstance.execCommand("Undo");e.preventDefault();return
false;}if(e.charCode==121){tinyMCE.selectedInstance.execCommand("Redo");e.preventDefault();return
false;}}if(e.charCode==98){tinyMCE.selectedInstance.execCommand("Bold");e.preventDefault();return
false;}if(e.charCode==105){tinyMCE.selectedInstance.execCommand("Italic");e.preventDefault();return
false;}if(e.charCode==117){tinyMCE.selectedInstance.execCommand("Underline");e.preventDefault();return
false;}}if(tinyMCE.settings['custom_undo_redo']){var keys=new
Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var
i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;}}if(tinyMCE.isMSIE&&tinyMCE.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMC!
E.selectedInstance=tinyMCE.instances[e.target.editorId];if(tinyMCE.selectedInstance){var
sel=tinyMCE.selectedInstance.contentWindow.document.selection;var
rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return
false;if(tinyMCE.getParentElement(rng.parentElement(),"div")==null)return
false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br>");rng.collapse(false);rng.select();}}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":if(e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];else
return;tinyMCE.selectedElement=null;var
elm=tinyMCE.selectedInstance.getFocusElement();tinyMCE.linkElement=tinyMCE.getParentElement(elm,"a");tinyMCE.imgElement=tinyMCE.getParentElement(elm,"img");tinyMCE.selectedEl!
ement=elm;if(tinyMCE.isMSIE&&tinyMCE.settings['custom_undo_redo']){var
keys=new Array(13,45,36,35,33,34,37,38,39,40);var posKey=false;for(var
i=0;i<keys.length;i++){if(keys[i]==e.keyCode){tinyMCE.selectedInstance.typing=false;posKey=true;break;}}if(!tinyMCE.selectedInstance.typing&&!posKey&&(e.keyCode<16||e.keyCode>18&&e.keyCode!=255)){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.selectedInstance.typing=true;tinyMCE.triggerNodeChange(false);}if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);var
ctrlKeys=new Array(66,73,85,86,88);var keys=new Array(8,46);for(var
i=0;i<keys.length;i++){if((ctrlKeys[i]==e.keyCode&&e.ctrlKey)||keys[i]==e.keyCode){tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange(false);return
true;}}if(tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']){if(e.keyCode==90&&e.ctrlKey&&e.type=="keydown"){tinyMCE.selectedInstance.execCommand("Undo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return
false;}if(e.keyCode==89&&e.ctrlKey&&e.type=!
="keydown"){tinyMCE.selectedInstance.execCommand("Redo");tinyMCE.triggerNodeChange(false);e.returnValue=false;e.cancelBubble=true;return
false;}}}if(e.type=="keyup")tinyMCE.triggerNodeChange();break;case
"mousedown":case "mouseup":case "click":case
"focus":var
targetBody=tinyMCE.getParentElement(e.target,"body");for(var instanceName in
tinyMCE.instances){var
instance=tinyMCE.instances[instanceName];if(instance.contentWindow.document.body==targetBody){tinyMCE.selectedInstance=instance;tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");instance.autoResetDesignMode();tinyMCE.selectedInstance.typing=false;break;}}tinyMCE.triggerNodeChange(false);if(!tinyMCE.selectedInstance&&e.target.editorId)tinyMCE.selectedInstance=tinyMCE.instances[e.target.editorId];if(e.target.nodeName.toLowerCase()=="a"&&e.type=="click"&&e.altKey){var
evalCode=""+tinyMCE.clean!
upEventStr(e.target.getAttribute("mce_onclick"));eval(evalCode.replace
('return false;',''));}return false;break;}}function
TinyMCE_switchClass(element,class_name,lock_state){var
lockChanged=false;if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.oldClassName=element.className;element.className=class_name;}}function
TinyMCE_restoreAndSwitchClass(element,class_name){if(element!=null&&!element.classLock){this.restoreClass(element);this.switchClass(element,class_name);}}function
TinyMCE_switchClassSticky(element_name,class_name,lock_state){var
element,lockChanged=false;if(!this.stickyClassesLookup[element_name])this.stickyClassesLookup[element_name]=document.getElementById(element_name);element=this.stickyClassesLookup[element_name];if(typeof(lock_state)!="undefined"&&element!=null){element.classLock=lock_state;lockChanged=true;}if(element!=null&&(lockChanged||!element.classLock)){element.className=class_name;element.oldClassName=class_name!
;}}function
TinyMCE_restoreClass(element){if(element!=null&&element.oldClassName&&!element.classLock){element.className=element.oldClassName;element.oldClassName=null;}}function
TinyMCE_setClassLock(element,lock_state){if(element!=null)element.classLock=lock_state;}function
TinyMCE_onLoad(){if(tinyMCE.isMSIE){if(document.forms&&tinyMCE.settings['add_form_submit_trigger']){for(var
i=0;i<document.forms.length;i++){document.forms[i].attachEvent("onsubmit",TinyMCE_handleEvent);document.forms[i].attachEvent("onreset",TinyMCE_handleEvent);}}}else{if(document.forms&&tinyMCE.settings['add_form_submit_trigger']){for(var
i=0;i<document.forms.length;i++){document.forms[i].addEventListener("submit",TinyMCE_handleEvent,false);document.forms[i].addEventListener("reset",TinyMCE_handleEvent,false);}}}switch(tinyMCE.settings['mode']){case
"exact":var
elements=tinyMCE.getParam('elements','',true,',');for(var
i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);if(eleme!
nt)tinyMCE.addMCEControl(element,elements[i],tinyMCE.createMCEControl(
tinyMCE.settings));else alert("Error: Could not find element by id or name:
"+elements[i]);}break;case "specific_textareas":case
"textareas":var nodeList=document.getElementsByTagName("textarea");var
elementRefAr=new Array();for(var
i=0;i<nodeList.length;i++){if(tinyMCE.settings['mode']!="specific_textareas"||nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger'])=="true")elementRefAr[elementRefAr.length]=nodeList.item(i);}for(var
i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var
elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']){if(tinyMCE.isMSIE)element.attachEvent("onmousedown",TinyMCE_confirmAdd);else
element.addEventListener("mousedown",TinyMCE_confirmAdd,false);}else
tinyMCE.addMCEControl(element,elementId,tinyMCE.createMCEControl(tinyMCE.settings));}break;}}function
TinyMCE_removeMCEControl(editor_id){var
mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl){editor_id=mceControl.editorId;var
html=tinyMCE.getCont!
ent(editor_id);var tmpInstances=new Array();for(var instanceName in
tinyMCE.instances){var
instance=tinyMCE.instances[instanceName];if(instanceName!=editor_id)tmpInstances[instanceName]=instance;}tinyMCE.instances=tmpInstances;tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;var
replaceElement=document.getElementById(editor_id+"_parent");var
oldTargetElement=mceControl.oldTargetElement;var
targetName=oldTargetElement.nodeName.toLowerCase();if(targetName=="textarea"||targetName=="input")oldTargetElement.value=html;else
oldTargetElement.innerHTML=html;replaceElement.parentNode.insertBefore(oldTargetElement,replaceElement);replaceElement.parentNode.removeChild(replaceElement);}}function
TinyMCE__cleanupElementName(element_name,element){element_name=element_name.toLowerCase();if(element_name=="body")return
null;if(tinyMCE.cleanup_verify_html){for(var
i=0;i<tinyMCE.cleanup_invalidElements.length;i++){if(tinyMCE.cleanup_invalidElements[i]==element_name)return
null;}var !
validElement=false;var elementAttribs=null;for(var i=0;i<tinyMCE.clean
up_validElements.length&&!elementAttribs;i++){for(var
x=0;x<tinyMCE.cleanup_validElements[i][0].length;x++){var
elmMatch=tinyMCE.cleanup_validElements[i][0][x];if(elmMatch.match(new
RegExp('\\*|\\?|\\+','g'))!=null){elmMatch=elmMatch.replace(new
RegExp('\\?','g'),'(\\S?)');elmMatch=elmMatch.replace(new
RegExp('\\+','g'),'(\\S+)');elmMatch=elmMatch.replace(new
RegExp('\\*','g'),'(\\S*)');elmMatch="^"+elmMatch+"$";if(element_name.match(new
RegExp(elmMatch,'g'))){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;break;}}if(element_name==elmMatch){elementAttribs=tinyMCE.cleanup_validElements[i];validElement=true;element_name=elementAttribs[0][0];break;}}}if(!validElement)return
null;}if(!tinyMCE.isMSIE){if(element_name=="strong"&&!tinyMCE.cleanup_on_save)element_name="b";else
if(element_name=="em"&&!tinyMCE.cleanup_on_save)element_name="i";}if(tinyMCE.isMSIE){if(element_name=="table"){var
attribValue=element.style.pixelWidth==0?element.getAttribute("width"):eleme!
nt.style.pixelWidth;element.setAttribute("width",attribValue);attribValue=element.style.pixelHeight==0?element.getAttribute("height"):element.style.pixelHeight;element.setAttribute("height",attribValue);}}var
elmData=new
Object();elmData.element_name=element_name;elmData.valid_attribs=elementAttribs;return
elmData;}function
TinyMCE__fixInlineStyles(elm){if(elm.nodeName.toLowerCase()!="table"){var
value;value=tinyMCE.isMSIE?elm.width:elm.getAttribute("width");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.width=value;}value=tinyMCE.isMSIE?elm.height:elm.getAttribute("height");if(value&&value!=""){if(typeof(value)!="string"||!value.indexOf("%"))value+="px";elm.style.height=value;}value=tinyMCE.isMSIE?elm.border:elm.getAttribute("border");if(value&&value!="")elm.style.borderWidth=value+"px";}value=elm.getAttribute("align");if(value&&value!=""){if(elm.nodeName.toLowerCase()=="img"){if(tinyMCE.isMSIE)elm.style.styleFloat=value;else
elm!
.style.cssFloat=value;}else elm.style.textAlign=value;}value=elm.getAt
tribute("vspace");if(value&&value!="")elm.style.marginTop=value+"px";value=elm.getAttribute("hspace");if(value&&value!="")elm.style.marginBottom=value+"px";}function
TinyMCE__cleanupAttribute(valid_attributes,element_name,attribute_node,element_node){var
attribName=attribute_node.nodeName.toLowerCase();var
attribValue=attribute_node.nodeValue;var attribMustBeValue=null;var
verified=false;if(tinyMCE.cleanup_inline_styles&&element_name!="table"&&element_name!="td"){if(attribName=="width"||attribName=="height"||attribName=="border"||attribName=="align"||attribName=="valign"||attribName=="hspace"||attribName=="vspace")return
null;}if(attribName.indexOf('moz_')!=-1)return
null;if(!tinyMCE.isMSIE&&(attribName=="mce_real_href"||attribName=="mce_real_src")){if(!tinyMCE.cleanup_on_save){var
attrib=new Object();attrib.name=attribName;attrib.value=attribValue;return attrib;}else
return
null;}if(attribName=="mce_onclick")verified=true;if(tinyMCE.cleanup_verify_html&&!verified){for(var
i!
=1;i<valid_attributes.length;i++){var attribMatch=valid_attributes[i][0];var
re=null;if(attribMatch.match(new
RegExp('\\*|\\?|\\+','g'))!=null){attribMatch=attribMatch.replace(new
RegExp('\\?','g'),'(\\S?)');attribMatch=attribMatch.replace(new
RegExp('\\+','g'),'(\\S+)');attribMatch=attribMatch.replace(new
RegExp('\\*','g'),'(\\S*)');attribMatch="^"+attribMatch+"$";re=new
RegExp(attribMatch,'g');}if((re&&attribName.match(re)!=null)||attribName==attribMatch){verified=true;attribMustBeValue=valid_attributes[i][3];break;}}if((element_name=="table"||element_name=="td")&&attribName=="style")verified=true;if(!verified)return
false;}else verified=true;switch(attribName){case
"width":if(tinyMCE.isMSIE)attribValue=element_node.width;break;case
"height":if(tinyMCE.isMSIE)attribValue=element_node.height;break;case
"border":if(tinyMCE.isMSIE)attribValue=element_node.border;break;case
"class":if(!tinyMCE._verifyClass(element_node))return null;break;case
"style":if(element_name=="table"|!
|element_name=="td"){if(tinyMCE.cleanup_visual_table_style!=""){var
ta
bleElement=element_node;if(element_name=="td")tableElement=tinyMCE.getParentElement(tableElement,"table");if(tableElement&&tableElement.getAttribute("border")==0){if(tinyMCE.cleanup_visual_aid)attribValue=tinyMCE.cleanup_visual_table_style;else
return null;}}}else
attribValue=element_node.style.cssText.toLowerCase();if(tinyMCE.isMSIE){var
border=element_node.style.border;var bt=element_node.style.borderTop;var
bl=element_node.style.borderLeft;var br=element_node.style.borderRight;var
bb=element_node.style.borderBottom;if(border!=""&&(bt==border&&bl==border&&br==border&&bb==border)){attribValue=tinyMCE.regexpReplace(attribValue,'border-top:
'+border+'?;
?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-left:
'+border+'?;
?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-right:
'+border+'?;
?','');attribValue=tinyMCE.regexpReplace(attribValue,'border-bottom:
'+border+'?;( ?)','border: '+border+';$1');}}break;case
"onclick":case "mce_onclick":if(tinyMCE.is!
MSIE5)break;if(tinyMCE.cleanup_on_save){if(element_node.getAttribute("mce_onclick")){attribName="onclick";attribValue=""+element_node.getAttribute("mce_onclick");}}else{if(attribName=="onclick"&&!tinyMCE.cleanup_on_save)return
null;}break;case "href":case
"src":if(!tinyMCE.isMSIE&&attribName=="href"&&element_node.getAttribute("mce_real_href"))attribValue=element_node.getAttribute("mce_real_href");if(!tinyMCE.isMSIE&&attribName=="src"&&element_node.getAttribute("mce_real_src"))attribValue=element_node.getAttribute("mce_real_src");attribValue=eval(tinyMCE.cleanup_urlconvertor_callback+"(attribValue,
element_node, tinyMCE.cleanup_on_save);");break;case "colspan":case
"rowspan":if(attribValue=="1")return null;break;case
"_moz-userdefined":case "editorid":case "editor_id":case
"mce_real_href":case "mce_real_src":return
null;}if(attribMustBeValue!=null){var isCorrect=false;for(var
i=0;i<attribMustBeValue.length;i++){if(attribValue==attribMustBeValue[i]){isCorrect=true;break;}}if(!
!isCorrect)return null;}var attrib=new Object();attrib.name=attribName
;attrib.value=attribValue;return attrib;}function TinyMCE__verifyClass(node){var
className=node.getAttribute('class');if(tinyMCE.isMSIE)var
className=node.getAttribute('className');if(tinyMCE.cleanup_verify_css_classes&&tinyMCE.cleanup_on_save){var
csses=tinyMCE.getCSSClasses();nonDefinedCSS=true;for(var
c=0;c<csses.length;c++){if(csses[c]==className){nonDefinedCSS=false;break;}}if(nonDefinedCSS&&className.indexOf('mce_')!=0){node.removeAttribute('className');node.removeAttribute('class');return
false;}}return true;}function TinyMCE_cleanupNode(node){var
output="";switch(node.nodeType){case 1:var
elementData=tinyMCE._cleanupElementName(node.nodeName,node);var
elementName=elementData?elementData.element_name:null;var
elementValidAttribs=elementData?elementData.valid_attribs:null;var
elementAttribs="";if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var
lookup=tinyMCE.cleanup_elementLookupTable;for(var
i=0;i<lookup.length;i++){if(lookup[i]==node)return output;}l!
ookup[lookup.length]=node;}if(!elementName){if(node.hasChildNodes()){for(var
i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return
output;}if(node.style&&(node.style.cssText.indexOf('mso-')!=-1&&tinyMCE.settings['auto_cleanup_word'])||node.style.cssText==""){node.style.cssText="";node.removeAttribute("style");}if(tinyMCE.cleanup_inline_styles)tinyMCE._fixInlineStyles(node);if(elementValidAttribs){for(var
a=1;a<elementValidAttribs.length;a++){var
attribName,attribDefaultValue,attribForceValue,attribValue;attribName=elementValidAttribs[a][0];attribDefaultValue=elementValidAttribs[a][1];attribForceValue=elementValidAttribs[a][2];if(attribDefaultValue||attribForceValue){var
attribValue=node.getAttribute(attribName);if(node.getAttribute(attribName)==null||node.getAttribute(attribName)=="")attribValue=attribDefaultValue;attribValue=attribForceValue?attribForceValue:attribValue;if(attribValue=="{$uid}")attribValue="uid_"+(tinyMCE.cleanup_idCount++);!
node.setAttribute(attribName,attribValue);}}}if(elementName=="span"&&t
inyMCE.cleanup_trim_span_elements){var re=new RegExp('^[ \t]+','g');var
onlyWhiteSpace=true;for(var a=0;a<node.childNodes.length;a++){var
tmpNode=node.childNodes[a];if((tmpNode.nodeType==3&&!tmpNode.nodeValue.match(re))||tmpNode.nodeName.toLowerCase()!="span"){onlyWhiteSpace=false;break;}}tinyMCE._verifyClass(node);var
numAttribs=0;for(var
i=0;i<node.attributes.length;i++){if(node.attributes[i].specified)numAttribs++;}if(onlyWhiteSpace||numAttribs==0){if(node.hasChildNodes()){for(var
i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);}return
output;}}if(elementName=="table"||elementName=="td"){if(tinyMCE.cleanup_visual_table_style!=""){var
tableElement=node;if(elementName=="td")tableElement=tinyMCE.getParentElement(tableElement,"table");if(tableElement&&tableElement.getAttribute("border")==0){if(tinyMCE.cleanup_visual_aid)elementAttribs+="
style="+'"'+tinyMCE.cleanup_visual_table_style+'"';}}}if(node.attributes.length>0){for(var
i=0;i<node.attribut!
es.length;i++){if(node.attributes[i].specified){var
attrib=tinyMCE._cleanupAttribute(elementValidAttribs,elementName,node.attributes[i],node);if(attrib)elementAttribs+="
"+attrib.name+"="+'"'+attrib.value+'"';}}}if((elementName=="p"||elementName=="td")&&(node.innerHTML==""||node.innerHTML==" "))return
"<"+elementName+elementAttribs+"> </"+elementName+">";if(tinyMCE.isMSIE&&elementName=="script")return
"<"+elementName+elementAttribs+">"+node.text+"</"+elementName+">";if(node.hasChildNodes()){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="<div"+elementAttribs+">";else
output+="<"+elementName+elementAttribs+">";for(var
i=0;i<node.childNodes.length;i++)output+=this.cleanupNode(node.childNodes[i]);if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="</div><br
/>";else output+="</"+elementName+">";}else
output+="<"+elementName+elementAttribs+" />";return output;case
3:if(node.parentNode.nodeName.toLowerCase()=="script")return node.nodeValue;r!
eturn this.convertStringToXML(node.nodeValue);case 8:return "<!--"+nod
e.nodeValue+"-->";default:return "[UNKNOWN NODETYPE
"+node.nodeType+"]";}}function TinyMCE_convertStringToXML(html_data){var
output="";for(var i=0;i<html_data.length;i++){var
chr=html_data.charCodeAt(i);if(typeof(tinyMCE.cleanup_entities["c"+chr])!='undefined'&&tinyMCE.cleanup_entities["c"+chr]!='')output+='&'+tinyMCE.cleanup_entities["c"+chr]+';';else
output+=''+String.fromCharCode(chr);}return output;}function
TinyMCE__initCleanup(){function getElementName(chunk){var
pos;if((pos=chunk.indexOf('/'))!=-1)chunk=chunk.substring(0,pos);if((pos=chunk.indexOf('['))!=-1)chunk=chunk.substring(0,pos);return
chunk;}var
validElements=tinyMCE.settings["valid_elements"];validElements=validElements.split(',');var
extendedValidElements=tinyMCE.settings["extended_valid_elements"];extendedValidElements=extendedValidElements.split(',');for(var
i=0;i<extendedValidElements.length;i++){var
elementName=getElementName(extendedValidElements[i]);var skipAdd=false;for(var
x=0;x<validElements.length;!
x++){if(getElementName(validElements[x])==elementName){validElements[x]=extendedValidElements[i];skipAdd=true;break;}}if(!skipAdd)validElements[validElements.length]=extendedValidElements[i];}for(var
i=0;i<validElements.length;i++){var
item=validElements[i];item=item.replace('[','|');item=item.replace(']','');var
attribs=item.split('|');for(var
x=0;x<attribs.length;x++)attribs[x]=attribs[x].toLowerCase();attribs[0]=attribs[0].split('/');for(var
x=1;x<attribs.length;x++){var attribName=attribs[x];var attribDefault=null;var
attribForce=null;var
attribMustBe=null;if((pos=attribName.indexOf('='))!=-1){attribDefault=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf(':'))!=-1){attribForce=attribName.substring(pos+1);attribName=attribName.substring(0,pos);}if((pos=attribName.indexOf('<'))!=-1){attribMustBe=attribName.substring(pos+1).split('?');attribName=attribName.substring(0,pos);}attribs[x]=new
Array(attribName,attribDefault,attribF!
orce,attribMustBe);}validElements[i]=attribs;}var invalidElements=tiny
MCE.settings['invalid_elements'].split(',');for(var
i=0;i<invalidElements.length;i++)invalidElements[i]=invalidElements[i].toLowerCase();tinyMCE.cleanup_validElements=validElements;tinyMCE.cleanup_invalidElements=invalidElements;tinyMCE.cleanup_verify_html=tinyMCE.settings['verify_html'];tinyMCE.cleanup_force_br_newlines=tinyMCE.settings['force_br_newlines'];tinyMCE.cleanup_urlconvertor_callback=tinyMCE.settings['urlconvertor_callback'];tinyMCE.cleanup_verify_css_classes=tinyMCE.settings['verify_css_classes'];tinyMCE.cleanup_visual_table_style=tinyMCE.settings['visual_table_style'];tinyMCE.cleanup_apply_source_formatting=tinyMCE.settings['apply_source_formatting'];tinyMCE.cleanup_urlconvertor_callback=tinyMCE.settings['urlconvertor_callback'];tinyMCE.cleanup_trim_span_elements=tinyMCE.settings['trim_span_elements'];tinyMCE.cleanup_inline_styles=tinyMCE.settings['inline_styles'];tinyMCE.cleanup_entities=new
Array();var
entities=tinyMCE.getParam('entities','',true,',');for(var!
i=0;i<entities.length;i+=2)tinyMCE.cleanup_entities['c'+entities[i]]=entities[i+1];}function
TinyMCE__cleanupHTML(doc,config,element,visual,on_save){tinyMCE.cleanup_visual_aid=visual;tinyMCE.cleanup_on_save=on_save;tinyMCE.cleanup_idCount=0;tinyMCE.cleanup_elementLookupTable=new
Array();var startTime=new
Date().getTime();tinyMCE._convertOnClick(element);if(tinyMCE.isMSIE)element.innerHTML=tinyMCE.regexpReplace(element.innerHTML,'<!([^-(DOCTYPE)]*
)|<!/[^-]*>','','gi');var
html=this.cleanupNode(element);if(tinyMCE.settings['debug'])alert("Cleanup
process executed in: "+(new Date().getTime()-startTime)+"
ms.");html=tinyMCE.regexpReplace(html,'<p><hr
/></p>','<hr
/>');html=tinyMCE.regexpReplace(html,'<p> </p><hr
/><p> </p>','<hr
/>');if(!tinyMCE.isMSIE){html=html.replace(new RegExp('<o:p
_moz-userdefined=""
/>','g'),"");}if(tinyMCE.settings['apply_source_formatting']){html=html.replace(new
RegExp('<(p|div)([^>]*)>','g'),"\n<$1$2>\n");html=html.replace(new
RegExp('<\!
/(p|div)([^>]*)>','g'),"\n</$1$2>\n");html=html.replace(new
RegExp('<b
r />','g'),"<br
/>\n");}if(tinyMCE.settings['force_br_newlines']){var re=new
RegExp('<p> </p>','g');html=html.replace(re,"<br
/>");}if(html=="<br
/>"||html=="<p> </p>")html="";html=tinyMCE._customCleanup(on_save?"get_from_editor":"insert_to_editor",html);if(tinyMCE.settings["preformatted"])return
"<pre>"+html+"</pre>";return html;}function
TinyMCE_insertLink(href,target,title,onclick){function
setAttrib(element,name,value){if(value!=null&&value!="")element.setAttribute(name,value);else
element.removeAttribute(name);}this.execCommand("mceAddUndoLevel");if(this.selectedInstance&&this.selectedElement&&this.selectedElement.nodeName.toLowerCase()=="img"){var
doc=this.selectedInstance.contentWindow.document;var
linkElement=doc.createElement("a");href=eval(tinyMCE.settings['urlconvertor_callback']+"(href,
linkElement);");setAttrib(linkElement,'href',href);setAttrib(linkElement,'target',target);setAttrib(linkElement,'title',title);setAttrib(linkElement,'mce_onclick',onclic!
k);linkElement.appendChild(this.selectedElement.cloneNode(true));this.selectedElement.parentNode.replaceChild(linkElement,this.selectedElement);return;}if(!this.linkElement&&this.selectedInstance){this.selectedInstance.contentDocument.execCommand("createlink",false,"#mce_temp_url#");tinyMCE.linkElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");var
elementArray=this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,"a","href","#mce_temp_url#");for(var
i=0;i<elementArray.length;i++){href=eval(tinyMCE.settings['urlconvertor_callback']+"(href,
elementArray[i]);");setAttrib(elementArray[i],'href',href);setAttrib(elementArray[i],'mce_real_href',href);setAttrib(elementArray[i],'target',target);setAttrib(elementArray[i],'title',title);setAttrib(elementArray[i],'mce_onclick',onclick);}tinyMCE.linkElement=elementArray[0];}if(this.linkElement){href=eval(tinyMCE.settings['urlconvertor_callback']+"(href,
!
this.linkElement);");setAttrib(this.linkElement,'href',href);setAttrib
(this.linkElement,'mce_real_href',href);setAttrib(this.linkElement,'target',target);setAttrib(this.linkElement,'title',title);setAttrib(this.linkElement,'mce_onclick',onclick);}}function
TinyMCE_insertImage(src,alt,border,hspace,vspace,width,height,align,title,onmouseover,onmouseout){this.execCommand("mceAddUndoLevel");function
setAttrib(element,name,value,no_fix_value){if(!no_fix_value&&value!=null){var
re=new
RegExp('[^0-9%]','g');value=value.replace(re,'');}if(value!=null&&value!="")element.setAttribute(name,value);else
element.removeAttribute(name);}if(!this.imgElement&&this.selectedInstance){this.selectedInstance.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");tinyMCE.imgElement=this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,"img","src","#mce_temp_url#");}if(this.imgElement){src=eval(tinyMCE.settings['urlconvertor_callback']+"(src,
tinyMCE.imgElement);");if(typeof(title)=="undefined")title=alt;tinyMCE.setAttrib(this.imgEleme!
nt,'src',src,true);tinyMCE.setAttrib(this.imgElement,'mce_real_src',src,true);tinyMCE.setAttrib(this.imgElement,'alt',alt,true);tinyMCE.setAttrib(this.imgElement,'title',title,true);tinyMCE.setAttrib(this.imgElement,'align',align,true);tinyMCE.setAttrib(this.imgElement,'border',border);tinyMCE.setAttrib(this.imgElement,'hspace',hspace);tinyMCE.setAttrib(this.imgElement,'vspace',vspace);tinyMCE.setAttrib(this.imgElement,'width',width);tinyMCE.setAttrib(this.imgElement,'height',height);tinyMCE.setAttrib(this.imgElement,'border',border);tinyMCE.setAttrib(this.imgElement,'onmouseover',onmouseover,true);tinyMCE.setAttrib(this.imgElement,'onmouseout',onmouseout,true);if(width&&width!="")this.imgElement.style.pixelWidth=width;if(height&&height!="")this.imgElement.style.pixelHeight=height;}}function
TinyMCE_getElementByAttributeValue(node,element_name,attrib,value){var
elements=this.getElementsByAttributeValue(node,element_name,attrib,value);if(elements.length==0)return
null;return!
elements[0];}function TinyMCE_getElementsByAttributeValue(node,elemen
t_name,attrib,value){var elements=new
Array();if(node&&node.nodeName.toLowerCase()==element_name){if(node.getAttribute(attrib).indexOf(value)!=-1)elements[elements.length]=node;}if(node.hasChildNodes){for(var
x=0;x<node.childNodes.length;x++){var
childElements=this.getElementsByAttributeValue(node.childNodes[x],element_name,attrib,value);for(var
i=0;i<childElements.length;i++)elements[elements.length]=childElements[i];}}return
elements;}function TinyMCE_getParentElement(node,names,attrib_name,attrib_value){var
namesAr=names.split(',');if(node==null)return null;do{for(var
i=0;i<namesAr.length;i++){if(node.nodeName.toLowerCase()==namesAr[i].toLowerCase()||names=="*"){if(typeof(attrib_name)=="undefined")return
node;else
if(node.getAttribute(attrib_name)){if(typeof(attrib_value)=="undefined"){if(node.getAttribute(attrib_name)!="")return
node;}else if(node.getAttribute(attrib_name)==attrib_value)return
node;}}}}while(node=node.parentNode);return null;}function TinyMCE_convertURL(!
url,node,on_save){var
fileProto=(document.location.protocol=="file:");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.isMSIE&&!on_save&&url.indexOf("://")==-1&&url.charAt(0)!='/')return
tinyMCE.settings['base_href']+url;if(on_save&&tinyMCE.settings['relative_urls']){var
urlParts=tinyMCE.parseURL(url);if(!urlParts['protocol']&&!tinyMCE.isMSIE){var
urlPrefix="http://";urlPrefix+=document.location.hostname;if(document.location.port!="")urlPrefix+=document.location.port;url=urlPrefix+url;urlParts=tinyMCE.parseURL(url);}var
tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['document_base_url']);if(urlParts['host']==tmpUrlParts['host']&&(!urlParts['port']||urlParts['port']==tmpUrlParts['port']))return
tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],url);}if(!fileProto&&tinyMCE.settings['remove_script_h!
ost']){var start=document.location.protocol+"//"+document.location.hos
tname+"/";if(url.indexOf(start)==0)url=url.substring(start.length-1);if(!tinyMCE.settings['relative_urls']&&url.indexOf('://')==-1&&url.charAt(0)!='/')url='/'+url;}return
url;}function TinyMCE_parseURL(url_str){var urlParts=new Array();if(url_str){var
pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3;}for(var
i=lastPos;i<url_str.length;i++){var
chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break;}pos=i;urlParts['host']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos);}lastPos=pos;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.length;urlParts['query']=url_str.substring(lastPos+1,pos);}}return
urlParts;}
- function TinyMCE_convertAbsoluteURLToRelativeURL(base_url,url_to_relative){var
strTok1;var strTok2;var breakPoint=0;var
outputString="";base_url=base_url.substring(0,base_url.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=url_to_relative.split('/');if(strTok1.length>=strTok2.length){for(var
i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length<strTok2.length){for(var
i=0;i<strTok2.length;i++){if(i>=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return
url_to_relative;for(var
i=0;i<(strTok1.length-(breakPoint-1));i++)outputString+="../";for(var
i=breakPoint-1;i<strTok2.length;i++){if(i!=(breakPoint-1))outputString+="/"+strTok2[i];else
outputString+=strTok2[i];}return outputString;}function
TinyMCE_getParam(name,default_value,strip_whitespace,split_chr){var
value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(strip_whitespace)value=tinyMCE.reg!
expReplace(value,"[
\t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var
outArray=new Array();for(var
i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i];}value=outArray;}return
value;}function TinyMCE_getLang(name,default_value,parse_entities){var
value=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name];if(parse_entities){var
el=document.createElement("div");el.innerHTML=value;value=el.innerHTML;}return
value;}function TinyMCE_replaceVar(replace_haystack,replace_var,replace_str){var re=new
RegExp('{\\\$'+replace_var+'}','g');return
replace_haystack.replace(re,replace_str);}function
TinyMCE_replaceVars(replace_haystack,replace_vars){for(var key in replace_vars){var
value=replace_vars[key];replace_haystack=tinyMCE.replaceVar(replace_haystack,key,value);}return
replace_haystack;}function
TinyMCE_triggerNodeChange(focus){if(tinyMCE.settings['handleNodeChangeCallback']){if(tinyMC!
E.selectedInstance){var editorId=tinyMCE.selectedInstance.editorId;var
elm=tinyMCE.selectedInstance.getFocusElement();var undoIndex=-1;var undoLevels=-1;var
anySelection=false;var selectedText="";if(tinyMCE.isMSIE){var
documentRef=tinyMCE.selectedInstance.contentWindow.document;var
rng=documentRef.selection.createRange();selectedText=rng.text;}else
selectedText=tinyMCE.selectedInstance.contentWindow.getSelection().toString();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>0);if(tinyMCE.settings['custom_undo_redo']){undoIndex=tinyMCE.selectedInstance.undoIndex;undoLevels=tinyMCE.selectedInstance.undoLevels.length;}var
plugins=tinyMCE.getParam('plugins','',true,',');for(var
i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_handleNodeChange)")!="undefined")eval("TinyMCE_"+plugins[i]+"_handleNodeChange(editorId,
elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid,
anySelection);");}eval(tinyMCE.settings['handleNodeChangeCallback']+"(editor!
Id, elm, undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid,
anySelection);");}}if(tinyMCE.selectedInstance&&(typeof(focus)=="undefined"||focus))this.selectedInstance.contentWindow.focus();}function
TinyMCE__customCleanup(type,content){var
customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&eval("typeof("+customCleanup+")")!="undefined")content=eval(customCleanup+"(type,
content);");var
plugins=tinyMCE.getParam('plugins','',true,',');for(var
i=0;i<plugins.length;i++){if(eval("typeof(TinyMCE_"+plugins[i]+"_cleanup)")!="undefined")content=eval("TinyMCE_"+plugins[i]+"_cleanup(type,
content);");}return content;}function
TinyMCE_getContent(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.selectedInstance=tinyMCE._getInstanceById(editor_id);if(tinyMCE.selectedInstance){var
cleanedHTML=tinyMCE._cleanupHTML(this.selectedInstance.contentWindow.document,tinyMCE.settings,this.selectedInstance.contentWindow.document.body,false,true);return
cleanedHTML;}r!
eturn null;}function TinyMCE_setContent(html_content){if(tinyMCE.selec
tedInstance){var
doc=this.selectedInstance.contentWindow.document;html_content=tinyMCE._customCleanup("insert_to_editor",html_content);tinyMCE._setHTML(doc,html_content);doc.body.innerHTML=tinyMCE._cleanupHTML(doc,tinyMCE.settings,doc.body);tinyMCE.handleVisualAid(doc.body,true,tinyMCE.selectedInstance.visualAid);}}function
TinyMCE_importThemeLanguagePack(theme_name){if(typeof(theme_name)=="undefined")theme_name=tinyMCE.settings['theme'];document.write('<script
language="javascript" type="text/javascript"
src="'+tinyMCE.baseURL+'/themes/'+theme_name+'/langs/'+tinyMCE.settings['language']+'.js"></script>');}function
TinyMCE_importPluginLanguagePack(theme_name,valid_languages){var
lang="uk";valid_languages=valid_languages.split(',');for(var
i=0;i<valid_languages.length;i++){if(tinyMCE.settings['language']==valid_languages[i])lang=tinyMCE.settings['language'];}document.write('<script
language="javascript" type="text/javascript"
src="'+tinyMCE.baseURL+'/plugins/'+theme_name+'/la!
ngs/'+lang+'.js"></script>');}function
TinyMCE_applyTemplate(html,args){html=tinyMCE.replaceVar(html,"themeurl",tinyMCE.themeURL);if(typeof(args)!="undefined")html=tinyMCE.replaceVars(html,args);html=tinyMCE.replaceVars(html,tinyMCE.settings);html=tinyMCE.replaceVars(html,tinyMCELang);return
html;}function TinyMCE_openWindow(template,args,skip_lang){var
html,width,height,x,y,resizable,scrollbars,url;tinyMCE.windowArgs=args;html=template['html'];if(!(width=template['width']))width=320;if(!(height=template['height']))height=200;if(tinyMCE.isMSIE)height+=30;x=parseInt(screen.width/2.0)-(width/2.0);y=parseInt(screen.height/2.0)-(height/2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args,skip_lang);var
win=window.open("",!
"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",modal=yes,w
idth="+width+",height="+height+",resizable="+resizable);win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus();}else{if(tinyMCE.isMSIE&&resizable!='yes'){var
features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features);}else{var
win=window.open(url,"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",modal=yes,width="+width+",height="+height+",resizable="+resizable);win.resizeTo(width,height);win.focus();}}}function
TinyMCE_handleVisualAid(element,deep,state){var
tableElement=null;switch(element.nodeName.toLowerCase()){case "table":var
cssText=element.getAttribute("border")==0?tinyMCE.settings['visual_table_style']:"";element.style.cssText=state?cssText:"";for(var
y=0;y<element.rows.length;y++){for(var
x=0;x<element.rows[y].cells.length;x++)element.rows[y].cells[x].style.cssText=state?cssText:"";}break;}if(deep&&element.!
hasChildNodes()){for(var
i=0;i<element.childNodes.length;i++)tinyMCE.handleVisualAid(element.childNodes[i],deep,state);}}function
TinyMCE_getAttrib(elm,name,default_value){var
v=elm.getAttribute(name);return(v&&v!="")?v:default_value;}function
TinyMCE_setAttrib(element,name,value,no_fix_value){if(typeof(value)=="number")value=""+value;if(!no_fix_value&&value!=null&&value!=-1){var
re=new
RegExp('[^0-9%]','g');value=value.replace(re,'');}if(value!=null&&value!=""&&value!=-1)element.setAttribute(name,value);else
element.removeAttribute(name);}function
TinyMCE__setHTML(doc,html_content){if(tinyMCE.isMSIE){var re=new
RegExp('<p><hr
/></p>','g');html_content=html_content.replace(re,"<hr>");}doc.body.innerHTML=html_content;if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var
paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var
node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName.toLowerCase()=="p")node.outerHTML=node.innerHTML;}}var
!
html=doc.body.createTextRange().htmlText;if(html.indexOf('="mso')!=-1)
{for(var i=0;i<doc.body.all.length;i++){var
el=doc.body.all[i];el.removeAttribute("className","",0);el.removeAttribute("style","",0);}html=doc.body.createTextRange().htmlText;html=tinyMCE.regexpReplace(html,"<o:p><\/o:p>","<br
/>");html=tinyMCE.regexpReplace(html,"<o:p> <\/o:p>","");html=tinyMCE.regexpReplace(html,"<st1:.*?>","");html=tinyMCE.regexpReplace(html,"<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p><\/p>\r\n<p><\/p>","");html=tinyMCE.regexpReplace(html,"<p> <\/p>","<br
/>");html=tinyMCE.regexpReplace(html,"<p>\s*(<p>\s*)?","<p>");html=tinyMCE.regexpReplace(html,"<\/p>\s*(<\/p>\s*)?","</p>");}doc.body.innerHTML=html;}}function
TinyMCE__getElementById(element_id){var
elm=document.getElementById(element_id);if(!elm){for(var
j=0;j<document.forms.length;j++){for(var
k=0;k<document.forms[j].elements.length;k++){if(document.forms[j].elements[k].name==element_id){elm=document.forms[j].elements[k];break;}}}}return
elm;}function TinyMCE_getEditorId(form_element)!
{var mceControl=this._getInstanceById(form_element);if(!mceControl)return null;return
mceControl.editorId;}function TinyMCE__getInstanceById(editor_id){var
mceControl=this.instances[editor_id];if(!mceControl){for(var instanceName in
tinyMCE.instances){var
instance=tinyMCE.instances[instanceName];if(instance.formTargetElementId==editor_id){mceControl=instance;break;}}}return
mceControl;}function TinyMCE_queryInstanceCommandValue(editor_id,command){var
mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl)return
mceControl.queryCommandValue(command);return false;}function
TinyMCE_queryInstanceCommandState(editor_id,command){var
mceControl=tinyMCE._getInstanceById(editor_id);if(mceControl)return
mceControl.queryCommandState(command);return null;}function
TinyMCE_getWindowArg(name,default_value){return(typeof(this.windowArgs[name])=="undefined")?default_value:this.windowArgs[name];}function
TinyMCE_getCSSClasses(editor_id,doc){var output=new Array();if(typeof(tinyMCE.css!
Classes)!="undefined")return tinyMCE.cssClasses;if(typeof(editor_id)==
"undefined"&&typeof(doc)=="undefined"){var instance;for(var
instanceName in
tinyMCE.instances){instance=tinyMCE.instances[instanceName];break;}doc=instance.contentWindow.document;}if(typeof(doc)=="undefined"){var
instance=tinyMCE._getInstanceById(editor_id);doc=instance.contentWindow.document;}if(doc){var
styles=tinyMCE.isMSIE?doc.styleSheets:doc.styleSheets;if(styles&&styles.length>0){var
csses=null;eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules :
doc.styleSheets[0].cssRules;} catch(e) {}");if(!csses)return null;for(var
i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;var
rules=selectorText.split(',');for(var
c=0;c<rules.length;c++){if(rules[c].indexOf('
')!=-1||rules[c].indexOf(':')!=-1||rules[c].indexOf('mce_')==1)continue;if(rules[c].indexOf('.')!=-1){output[output.length]=rules[c].substring(rules[c].indexOf('.')+1);}}}}}if(output.length>0)tinyMCE.cssClasses=output;return
output;}function TinyMCE_regexpReplace(in_str,reg_exp,replace_str,op!
ts){if(typeof(opts)=="undefined")opts='g';var re=new
RegExp(reg_exp,opts);return in_str.replace(re,replace_str);}function
TinyMCE_cleanupEventStr(str){str=str.replace('function
anonymous()\n{\n','');str=str.replace('\n}','');return
str;}function TinyMCEControl(settings){this.undoLevels=new
Array();this.undoIndex=0;this.settings=settings;this.settings['theme']=tinyMCE.getParam("theme","default");this.settings['width']=tinyMCE.getParam("width",-1);this.settings['height']=tinyMCE.getParam("height",-1);this.execCommand=TinyMCEControl_execCommand;this.queryCommandValue=TinyMCEControl_queryCommandValue;this.queryCommandState=TinyMCEControl_queryCommandState;this.onAdd=TinyMCEControl_onAdd;this.getFocusElement=TinyMCEControl_getFocusElement;this.autoResetDesignMode=TinyMCEControl_autoResetDesignMode;}function
TinyMCEControl_autoResetDesignMode(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']){var
sel=this.contentWindow.getSelection();if(sel.rangeCount==0)this.conten!
tWindow.document.designMode="On";}}function TinyMCEControl_execCommand
(command,user_interface,value){function getAttrib(elm,name){return
elm.getAttribute(name)?elm.getAttribute(name):"";}if(!tinyMCE.isMSIE&&!this.useCSS){this.contentWindow.document.execCommand("useCSS",false,true);this.useCSS=true;}this.contentDocument=this.contentWindow.document;if(tinyMCE._themeExecCommand(this.editorId,this.contentDocument.body,command,user_interface,value))return;if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceImage"&&command!="mceLink"&&command!="mceToggleVisualAid"&&(command!="mceInsertTable"&&!user_interface))this.execCommand("mceAddUndoLevel");if(this.getFocusElement()&&this.getFocusElement().nodeName.toLowerCase()=="img"){var
align=this.getFocusElement().getAttribute('align');switch(command){case
"JustifyLeft":if(align=='left')this.getFocusElement().removeAttribute('align');else
this.getFocusElement().setAttribute('align','left');tinyMCE.triggerNodeChange();return;case
"JustifyCenter":if(align=='middle')this.getFocusEleme!
nt().removeAttribute('align');else
this.getFocusElement().setAttribute('align','middle');tinyMCE.triggerNodeChange();return;case
"JustifyRight":if(align=='right')this.getFocusElement().removeAttribute('align');else
this.getFocusElement().setAttribute('align','right');tinyMCE.triggerNodeChange();return;}}if(tinyMCE.settings['force_br_newlines']){var
documentRef=this.contentWindow.document;var
alignValue="";if(documentRef.selection.type!="Control"){switch(command){case
"JustifyLeft":alignValue="left";break;case
"JustifyCenter":alignValue="center";break;case
"JustifyFull":alignValue="justify";break;case
"JustifyRight":alignValue="right";break;}if(alignValue!=""){var
rng=documentRef.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else
if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div
align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return;}}}switch(command)!
{case "Cut":case "Copy":case "Paste":var
cmdFailed=false;eval('try {th
is.contentDocument.execCommand(command, user_interface, value);} catch (e) {cmdFailed =
true;}');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.ge...
tinyMCE.triggerNodeChange();break;case "mceLink":var
selectedText="";if(tinyMCE.isMSIE){var
documentRef=this.contentWindow.document;var
rng=documentRef.selection.createRange();selectedText=rng.text;}else
selectedText=this.contentWindow.getSelection().toString();if(!tinyMCE.linkElement){if((tinyMCE.selectedElement.nodeName.toLowerCase()!="img")&&(selectedText.length<=0))return;}var
href="",target="",title="",onclick="",action="insert";if(tinyMCE.selectedElement.nodeName.toLowerCase()=="a")tinyMCE.linkElement=tinyMCE.selectedElement;if(tinyMCE.linkElement!=null&&getAttrib(tinyMCE.linkElement,'href')=="")tinyMCE.linkElement=null;if(tinyMCE.linkElement){href=getAttrib(tinyMCE.linkElement,'href');target=ge!
tAttrib(tinyMCE.linkElement,'target');title=getAttrib(tinyMCE.linkElement,'title');onclick=getAttrib(tinyMCE.linkElement,'mce_onclick');if(onclick=="")onclick=getAttrib(tinyMCE.linkElement,'onclick');onclick=tinyMCE.cleanupEventStr(onclick);mceRealHref=getAttrib(tinyMCE.linkElement,'mce_real_href');if(mceRealHref!="")href=mceRealHref;href=eval(tinyMCE.settings['urlconvertor_callback']+"(href,
tinyMCE.linkElement,
true);");action="update";}if(this.settings['insertlink_callback']){var
returnVal=eval(this.settings['insertlink_callback']+"(href, target, title,
onclick,
action);");if(returnVal&&returnVal['href'])tinyMCE.insertLink(returnVal['href'],returnVal['target'],returnVal['title'],returnVal['onclick']);}else{tinyMCE.openWindow(this.insertLinkTemplate,{href:href,target:target,title:title,onclick:onclick,action:action});}break;case
"mceImage":var
src="",alt="",border="",hspace="",vspace="",width="",height="",align="";var
title="",onmouseover="",onmouseout="",action="insert";!
;if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.to
LowerCase()=="img")tinyMCE.imgElement=tinyMCE.selectedElement;if(tinyMCE.imgElement){name=getAttrib(tinyMCE.imgElement,'name');if(name.substring(0,4)=='mce_')return;src=getAttrib(tinyMCE.imgElement,'src');alt=getAttrib(tinyMCE.imgElement,'alt');if(alt=="")alt=getAttrib(tinyMCE.imgElement,'title');border=getAttrib(tinyMCE.imgElement,'border');hspace=getAttrib(tinyMCE.imgElement,'hspace');vspace=getAttrib(tinyMCE.imgElement,'vspace');width=getAttrib(tinyMCE.imgElement,'width');height=getAttrib(tinyMCE.imgElement,'height');align=getAttrib(tinyMCE.imgElement,'align');onmouseover=getAttrib(tinyMCE.imgElement,'onmouseover');onmouseout=getAttrib(tinyMCE.imgElement,'onmouseout');title=getAttrib(tinyMCE.imgElement,'title');onmouseover=tinyMCE.cleanupEventStr(onmouseover);onmouseout=tinyMCE.cleanupEventStr(onmouseout);mceRealSrc=getAttrib(tinyMCE.imgElement,'mce_real_src');if(mceRealSrc!="")src=mceRealSrc;src=eval(tinyMCE.settings['urlconvertor_callback']+"(src,
tinyMCE.imgElement, tr!
ue);");action="update";}if(this.settings['insertimage_callback']){var
returnVal=eval(this.settings['insertimage_callback']+"(src, alt, border,
hspace, vspace, width, height, align, title, onmouseover, onmouseout,
action);");if(returnVal&&returnVal['src'])tinyMCE.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(this.insertImageTemplate,{src:src,alt:alt,border:border,hspace:hspace,vspace:vspace,width:width,height:height,align:align,title:title,onmouseover:onmouseover,onmouseout:onmouseout,action:action});break;case
"mceCleanupWord":if(tinyMCE.isMSIE){var
html=this.contentDocument.body.createTextRange().htmlText;if(html.indexOf('="mso')!=-1){tinyMCE._setHTML(this.contentDocument,this.contentDocument.body.innerHTML);html=tinyMCE._cleanupHTML(this.contentDocument,this.setti!
ngs,this.contentDocument.body,this.visualAid);}this.contentDocument.bo
dy.innerHTML=html;}break;case
"mceCleanup":tinyMCE._setHTML(this.contentDocument,this.contentDocument.body.innerHTML);var
cleanedHTML=tinyMCE._cleanupHTML(this.contentDocument,this.settings,this.contentDocument.body,this.visualAid);this.contentDocument.body.innerHTML=cleanedHTML;break;case
"mceAnchor":if(!user_interface){var
aElm=tinyMCE.getParentElement(this.getFocusElement(),"a","name");if(aElm)aElm.setAttribute('name',value);else{this.contentDocument.execCommand("fontname",false,"#mce_temp_font#");var
elementArray=tinyMCE.getElementsByAttributeValue(this.contentDocument.body,"font","face","#mce_temp_font#");for(var
x=0;x<elementArray.length;x++){elm=elementArray[x];var
aElm=this.contentDocument.createElement("a");aElm.setAttribute('name',value);if(elm.hasChildNodes()){for(var
i=0;i<elm.childNodes.length;i++)aElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(aElm,elm);}}tinyMCE.triggerNodeChange();}break;case
"mceReplaceContent":var selectedTe!
xt="";if(tinyMCE.isMSIE){var documentRef=this.contentWindow.document;var
rng=documentRef.selection.createRange();selectedText=rng.text;}else
selectedText=this.contentWindow.getSelection().toString();if(selectedText.length>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":var selectedText=false;if(tinyMCE.isMSIE){var
documentRef=this.contentWindow.document;var
rng=documentRef.selection.createRange();selectedText=(rng.text&&rng.text.length>0);}else
selectedText=(this.contentWindow.getSelection().toString().length!
0);if(selectedText){this.contentDocument.execCommand("removeformat",f
alse,null);this.contentDocument.execCommand("fontname",false,"#mce_temp_font#");var
elementArray=tinyMCE.getElementsByAttributeValue(this.contentDocument.body,"font","face","#mce_temp_font#");for(var
x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var
spanElm=this.contentDocument.createElement("span");spanElm.className=value;if(elm.hasChildNodes()){for(var
i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true));}elm.parentNode.replaceChild(spanElm,elm);}}}else{var
targetElm=this.getFocusElement();if(tinyMCE.selectedElement.nodeName.toLowerCase()=="img"||tinyMCE.selectedElement.nodeName.toLowerCase()=="table")targetElm=tinyMCE.selectedElement;var
targetNode=tinyMCE.getParentElement(targetElm,"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");if(!tinyMCE.isMSIE&&!targetNode)targetNode=tinyMCE.imgElement;if(targetNode){if(targetNode.nodeName.toLowerCase()=="span"&&(!value||value=="")){if(targetNode.hasChildNodes()){for(var
i=0;i<targetN!
ode.childNodes.length;i++)targetNode.parentNode.insertBefore(targetNode.childNodes[i].cloneNode(true),targetNode);}targetNode.parentNode.removeChild(targetNode);}else{if(value!=null&&value!="")targetNode.className=value;else{targetNode.removeAttribute("className");targetNode.removeAttribute("class");}}}}tinyMCE.triggerNodeChange();break;case
"mceInsertContent":if(!tinyMCE.isMSIE){this.contentDocument.execCommand("insertimage",false,"#mce_temp_url#");elm=tinyMCE.getElementByAttributeValue(this.contentDocument.body,"img","src","#mce_temp_url#");if(elm){var
rng=elm.ownerDocument.createRange();rng.setStartBefore(elm);var
fragment=rng.createContextualFragment(value);elm.parentNode.replaceChild(fragment,elm);}}else{var
rng=this.contentWindow.document.selection.createRange();if(rng.item)rng.item(0).outerHTML=value;else
rng.pasteHTML(value);}tinyMCE.triggerNodeChange();break;case
"mceInsertTable":if(user_interface){var
cols=2,rows=2,border=0,cellpadding="",cellspacing="",align="",w!
idth="",height="",action="insert",className="";tinyMCE.tableElement=ti
nyMCE.getParentElement(this.getFocusElement(),"table");if(tinyMCE.tableElement){var
rowsAr=tinyMCE.tableElement.rows;var cols=0;for(var
i=0;i<rowsAr.length;i++)if(rowsAr[i].cells.length>cols)cols=rowsAr[i].cells.length;cols=cols;rows=rowsAr.length;border=tinyMCE.getAttrib(tinyMCE.tableElement,'border',border);cellpadding=tinyMCE.getAttrib(tinyMCE.tableElement,'cellpadding',"");cellspacing=tinyMCE.getAttrib(tinyMCE.tableElement,'cellspacing',"");width=tinyMCE.getAttrib(tinyMCE.tableElement,'width',width);height=tinyMCE.getAttrib(tinyMCE.tableElement,'height',height);align=tinyMCE.getAttrib(tinyMCE.tableElement,'align',align);className=tinyMCE.getAttrib(tinyMCE.tableElement,tinyMCE.isMSIE?'className':"class","");if(tinyMCE.isMSIE){width=tinyMCE.tableElement.style.pixelWidth==0?tinyMCE.tableElement.getAttribute("width"):tinyMCE.tableElement.style.pixelWidth;height=tinyMCE.tableElement.style.pixelHeight==0?tinyMCE.tableElement.getAttribute("height"):tinyMCE.tableElement.style.pi!
xelHeight;}action="update";}tinyMCE.openWindow(this.insertTableTemplate,{editor_id:this.editorId,cols:cols,rows:rows,border:border,cellpadding:cellpadding,cellspacing:cellspacing,align:align,width:width,height:height,action:action,className:className});}else{var
html='';var
cols=2,rows=2,border=0,cellpadding=-1,cellspacing=-1,align,width,height,className;if(typeof(value)=='object'){cols=value['cols'];rows=value['rows'];border=value['border']!=""?value['border']:0;cellpadding=value['cellpadding']!=""?value['cellpadding']:-1;cellspacing=value['cellspacing']!=""?value['cellspacing']:-1;align=value['align'];width=value['width'];height=value['height'];className=value['className'];}if(tinyMCE.tableElement){tinyMCE.setAttrib(tinyMCE.tableElement,'cellPadding',cellpadding);tinyMCE.setAttrib(tinyMCE.tableElement,'cellSpacing',cellspacing);tinyMCE.setAttrib(tinyMCE.tableElement,'border',border);tinyMCE.setAttrib(tinyMCE.tableElement,'width',width);tinyMCE.setAttrib(tinyMCE.tableEleme!
nt,'height',height);tinyMCE.setAttrib(tinyMCE.tableElement,'align',ali
gn,true);tinyMCE.setAttrib(tinyMCE.tableElement,tinyMCE.isMSIE?'className':"class",className,true);if(tinyMCE.isMSIE){tinyMCE.tableElement.style.pixelWidth=(width==null||width=="")?0:width;tinyMCE.tableElement.style.pixelHeight=(height==null||height=="")?0:height;}tinyMCE.handleVisualAid(tinyMCE.tableElement,false,this.visualAid);tinyMCE.tableElement.outerHTML=tinyMCE.tableElement.outerHTML;tinyMCE.triggerNodeChange();return;}html+='<table
border="'+border+'" ';var
visualAidStyle=this.visualAid?tinyMCE.settings['visual_table_style']:"";if(cellpadding!=-1)html+='cellpadding="'+cellpadding+'"
';if(cellspacing!=-1)html+='cellspacing="'+cellspacing+'"
';if(width!=0&&width!="")html+='width="'+width+'"
';if(height!=0&&height!="")html+='height="'+height+'"
';if(align)html+='align="'+align+'"
';if(className)html+='class="'+className+'"
';if(border==0&&tinyMCE.settings['visual'])html+='style="'+visualAidStyle+'"
';html+='>';for(var y=0;y<rows;y++){html+="<tr>";for(var
x=0;x<cols;x++)!
{if(border==0&&tinyMCE.settings['visual'])html+='<td
style="'+visualAidStyle+'">';else
html+='<td>';html+=" </td>";}html+="</tr>";}html+="</table>";this.execCommand('mceInsertContent',false,html);}break;case
"mceTableInsertRowBefore":case "mceTableInsertRowAfter":case
"mceTableDeleteRow":case "mceTableInsertColBefore":case
"mceTableInsertColAfter":case "mceTableDeleteCol":var
trElement=tinyMCE.getParentElement(this.getFocusElement(),"tr");var
tdElement=tinyMCE.getParentElement(this.getFocusElement(),"td");var
tableElement=tinyMCE.getParentElement(this.getFocusElement(),"table");if(!tableElement)return;var
documentRef=this.contentWindow.document;var
tableBorder=tableElement.getAttribute("border");var
visualAidStyle=this.visualAid?tinyMCE.settings['visual_table_style']:"";if(tableElement.firstChild&&tableElement.firstChild.nodeName.toLowerCase()=="tbody")tableElement=tableElement.firstChild;if(tableElement&&trElement){switch(command){case
"mceTableInsertRowBefore":var nu!
mcells=trElement.cells.length;var rowCount=0;var tmpTR=trElement;while
(tmpTR){if(tmpTR.nodeName.toLowerCase()=="tr")rowCount++;tmpTR=tmpTR.previousSibling;}var
r=tableElement.insertRow(rowCount==0?1:rowCount-1);for(var i=0;i<numcells;i++){var
newTD=documentRef.createElement("td");newTD.innerHTML=" ";if(tableBorder==0)newTD.style.cssText=visualAidStyle;var
c=r.appendChild(newTD);if(tdElement.parentNode.childNodes[i].colSpan)c.colSpan=tdElement.parentNode.childNodes[i].colSpan;}break;case
"mceTableInsertRowAfter":var numcells=trElement.cells.length;var rowCount=0;var
tmpTR=trElement;var
documentRef=this.contentWindow.document;while(tmpTR){if(tmpTR.nodeName.toLowerCase()=="tr")rowCount++;tmpTR=tmpTR.previousSibling;}var
r=tableElement.insertRow(rowCount==0?1:rowCount);for(var i=0;i<numcells;i++){var
newTD=documentRef.createElement("td");newTD.innerHTML=" ";if(tableBorder==0)newTD.style.cssText=visualAidStyle;var
c=r.appendChild(newTD);if(tdElement.parentNode.childNodes[i].colSpan)c.colSpan=tdElement.parentNode.childNodes[i].colSpan;}bre!
ak;case
"mceTableDeleteRow":if(tableElement.rows.length<=1){tableElement.parentNode.removeChild(tableElement);tinyMCE.triggerNodeChange();return;}var
selElm=this.contentWindow.document.body;if(trElement.previousSibling)selElm=trElement.previousSibling.cells[0];trElement.parentNode.removeChild(trElement);tinyMCE._selectNode(this.contentWindow,selElm);break;case
"mceTableInsertColBefore":var cellCount=tdElement.cellIndex;for(var
y=0;y<tableElement.rows.length;y++){var
cell=tableElement.rows[y].cells[cellCount];if(!cell)break;var
newTD=documentRef.createElement("td");newTD.innerHTML=" ";if(tableBorder==0)newTD.style.cssText=visualAidStyle;cell.parentNode.insertBefore(newTD,cell);}break;case
"mceTableInsertColAfter":var cellCount=tdElement.cellIndex;for(var
y=0;y<tableElement.rows.length;y++){var append=false;var
cell=tableElement.rows[y].cells[cellCount];if(cellCount==tableElement.rows[y].cells.length-1)append=true;else
cell=tableElement.rows[y].cells[cellCount+1];var new!
TD=documentRef.createElement("td");newTD.innerHTML=" ";if(tableBo
rder==0)newTD.style.cssText=visualAidStyle;if(append)cell.parentNode.appendChild(newTD);else
cell.parentNode.insertBefore(newTD,cell);}break;case "mceTableDeleteCol":var
index=tdElement.cellIndex;var selElm=this.contentWindow.document.body;var
numCols=0;for(var
y=0;y<tableElement.rows.length;y++){if(tableElement.rows[y].cells.length>numCols)numCols=tableElement.rows[y].cells.length;}if(numCols<=1){tinyMCE._selectNode(this.contentWindow,selElm);tableElement.parentNode.removeChild(tableElement);tinyMCE.triggerNodeChange();return;}for(var
y=0;y<tableElement.rows.length;y++){var
cell=tableElement.rows[y].cells[index];if(cell)cell.parentNode.removeChild(cell);}if(index>0)selElm=tableElement.rows[0].cells[index-1];tinyMCE._selectNode(this.contentWindow,selElm);break;}tinyMCE.triggerNodeChange();}break;case
"mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']){var
customUndoLevels=tinyMCE.settings['custom_undo_redo_levels'];var
newHTML=this.contentWindow.document.body.innerHTM!
L;if(newHTML!=this.undoLevels[this.undoLevels.length-1]){if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var
i=0;i<this.undoLevels.length-1;i++){this.undoLevels[i]=this.undoLevels[i+1];}this.undoLevels.length--;this.undoIndex--;}this.undoLevels[this.undoIndex++]=newHTML;this.undoLevels.length=this.undoIndex;}tinyMCE.triggerNodeChange(false);}break;case
"Undo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex==this.undoLevels.length){this.execCommand("mceAddUndoLevel");this.undoIndex--;}if(this.undoIndex>0){this.undoIndex--;this.contentWindow.document.body.innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else
this.contentDocument.execCommand(command,user_interface,value);break;case
"Redo":if(tinyMCE.settings['custom_undo_redo']){if(this.undoIndex<(this.undoLevels.length-1)){this.undoIndex++;this.contentWindow.document.body.innerHTML=this.undoLevels[this.undoIndex];}tinyMCE.triggerNodeChange();}else
this.contentDocument.ex!
ecCommand(command,user_interface,value);break;case "mceToggleVisualAid
":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.contentWindow.document.body,true,this.visualAid);tinyMCE.triggerNodeChange();break;default:this.contentDocument.execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();}}function
TinyMCE__selectNode(win,node,expand){if(!tinyMCE.isMSIE){var
rng=win.document.createRange();rng.selectNode(node);sel=win.getSelection();sel.addRange(rng);if(expand)sel.extend(node,0);else
sel.collapse(node,0);}}function TinyMCE_getControlHTML(control_name){var
themePlugins=tinyMCE.getParam('plugins','',true,',');var
templateFunction;for(var
i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_getControlHTML";if(eval("typeof("+templateFunction+")")!='undefined'){var
html=eval(templateFunction+"('"+control_name+"');");if(html!="")return
tinyMCE.replaceVar(html,"pluginurl",tinyMCE.baseURL+"/plugins/"+themePlugins[i]);}}return
eval('TinyMCE_'+tinyMCE.settings['theme']+"_getControlHTML"+"('"+control_name+!
"');");}function
TinyMCE__themeExecCommand(editor_id,element,command,user_interface,value){var
themePlugins=tinyMCE.getParam('plugins','',true,',');var
templateFunction;for(var
i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined'){if(eval(templateFunction+"(editor_id,
element, command, user_interface, value);"))return
true;}}templateFunction='TinyMCE_'+tinyMCE.settings['theme']+"_execCommand";if(eval("typeof("+templateFunction+")")!='undefined')return
eval(templateFunction+"(editor_id, element, command, user_interface,
value);");return false;}function
TinyMCE__getThemeFunction(suffix,skip_plugins){if(skip_plugins)return
'TinyMCE_'+tinyMCE.settings['theme']+suffix;var
themePlugins=tinyMCE.getParam('plugins','',true,',');var
templateFunction;for(var
i=themePlugins.length;i>=0;i--){templateFunction='TinyMCE_'+themePlugins[i]+suffix;if(eval("typeof("+templateFunction+")")!='undefined')ret!
urn templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suff
ix;}function TinyMCEControl_queryCommandValue(command){return
this.contentWindow.document.queryCommandValue(command);}function
TinyMCEControl_queryCommandState(command){return
this.contentWindow.document.queryCommandState(command);}function
TinyMCEControl_onAdd(replace_element,form_element_name){tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error:
Could not find the target element.");return false;}var
templateFunction=tinyMCE._getThemeFunction('_getInsertTableTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertTableTemplate=eval(templateFunction+'(this.settings);');var
templateFunction=tinyMCE._getThemeFunction('_getInsertLinkTemplate');if(eval("typeof("+templateFunction+")")!='undefined')this.insertLinkTemplate=eval(templateFunction+'(this.settings);');var
templateFunction=tinyMCE._getThemeFunction('_getInsertImageTemplate');if(eval("typeof("+templateFunction+"!
)")!='undefined')this.insertImageTemplate=eval(templateFunction+'(this.settings);');var
templateFunction=tinyMCE._getThemeFunction('_getEditorTemplate');if(eval("typeof("+templateFunction+")")=='undefined'){alert("Error:
Could not find the template function: "+templateFunction);return false;}var
editorTemplate=eval(templateFunction+'(this.settings, this.editorId);');var
deltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var
deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var
html='<span
id="'+this.editorId+'_parent">'+editorTemplate['html'];var
templateFunction=tinyMCE._getThemeFunction('_handleNodeChange',true);if(eval("typeof("+templateFunction+")")!='undefined')this.settings['handleNodeChangeCallback']=templateFunction;html=tinyMCE.replaceVar(html,"editor_id",this.editorId);html=tinyMCE.replaceVar(html,"default_document",tinyMCE.baseURL+"/blank.htm");this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.sett!
ings['old_width']=this.settings['width'];this.settings['old_height']=t
his.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;this.settings['area_width']=this.settings['width'];this.settings['area_height']=this.settings['height'];this.settings['area_width']+=deltaWidth;this.settings['area_height']+=deltaHeight;if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settin!
gs['visual'];this.oldTargetElement=replace_element.cloneNode(true);this.formTargetElementId=form_element_name;if(tinyMCE.settings['debug'])html+='<textarea
wrap="off" id="'+form_element_name+'"
name="'+form_element_name+'" cols="100"
rows="15"></textarea>';else html+='<input
type="hidden" type="text" id="'+form_element_name+'"
name="'+form_element_name+'"
/>';html+='</span>';if(!tinyMCE.isMSIE){var
rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var
fragment=rng.createContextualFragment(html);replace_element.parentNode.replaceChild(fragment,replace_element);}else
replace_element.outerHTML=html;tinyMCE.setEditMode(this.editorId,true);return
true;}function TinyMCEControl_getFocusElement(){if(tinyMCE.isMSIE){var
documentRef=this.contentWindow.document;var rng=documentRef.selection.createRange();var
elm=rng.item?rng.item(0):rng.parentElement();}else{var
sel=this.contentWindow.getSelection();var
elm=sel.anchorNode;if(tinyMCE.selectedElement!=n!
ull&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img")elm=tinyMCE
.selectedElement;}return elm;}var tinyMCE=new TinyMCE();var tinyMCELang=new Array();
\ No newline at end of file
+function TinyMCE_Engine(){var
ua;this.majorVersion="2";this.minorVersion="0.8";this.releaseDate="2006-10-23";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;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;if(this.isOpera){this.isMSIE=true;this.isGecko=false;this.isSafari=false}this.isIE=this.isMSIE;this.isRealIE=this.isMSIE&&!this.isOpera;this.idCounter=0};TinyMCE_Engine.prototype={init:function(settings){var
theme,nl,baseHREF="",i;if(this.isMSIE5_0)return;this.settings=settings;if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var
elements=document.getElementsByTagName('script');nl=document.getElementsByTagName('base');for(i=0;i<nl.length;i++){if(nl[i].href)baseHREF=nl[i].href}for(var
i=0;i<elements.length;i++){if(elements[i].src&&(elements[i].src.indexOf("tiny_mce.js")!=-1||elements[i].src.indexOf("tiny_mce_dev.js")!=-1||elements[i].src.indexOf("tiny_mce_src.js")!=-1||elements[i].src.indexOf("tiny_mce_gzip")!=-1)){var
src=elements[i].src;tinyMCE.srcMode=(src.indexOf('_src')!=-1||src.indexOf('_dev')!=-1)?'_src':'';tinyMCE.gzipMode=src.indexOf('_gzip')!=-1;s!
rc=src.substring(0,src.lastIndexOf('/'));if(settings.exec_mode=="src"|
|settings.exec_mode=="normal")tinyMCE.srcMode=settings.exec_mode=="src"?'_src':'';if(baseHREF!=""&&src.indexOf('://')==-1)tinyMCE.baseURL=baseHREF+src;else
tinyMCE.baseURL=src;break}}}this.documentBasePath=document.location.href;if(this.documentBasePath.indexOf('?')!=-1)this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.indexOf('?'));this.documentURL=this.documentBasePath;this.documentBasePath=this.documentBasePath.substring(0,this.documentBasePath.lastIndexOf('/'));if(tinyMCE.baseURL.indexOf('://')==-1&&tinyMCE.baseURL.charAt(0)!='/'){tinyMCE.baseURL=this.documentBasePath+"/"+tinyMCE.baseURL}this._def("mode","none");this._def("theme","advanced");this._def("plugins","",true);this._def("language","en");this._def("docs_language",this.settings['language']);this._def("elements","");this._def("textarea_trigger","mce_editable");this._def("editor_selector","");this._def("editor_deselector","mceNoEditor");this._def("valid_elements","+a[id|style|rel|rev|cha!
rset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|sc!
ope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-
span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");this._def("extended_valid_elements","");this._def("invalid_elements","");this._def("encoding","");this._def("urlconverter_callback",tinyMCE.getParam("urlconvertor_callback","TinyMCE_Engine.prototype.convertURL"));this._def("save_callback","");this._def("debug",false);this._def("force_br_newlines",false);this._def("force_p_newlines",true);this._def("add_form_sub!
mit_trigger",true);this._def("relative_urls",true);this._def("remove_script_host",true);this._def("focus_alert",true);this._def("document_base_url",this.documentURL);this._def("visual",true);this._def("visual_table_class","mceVisualAid");this._def("setupcontent_callback","");this._def("fix_content_duplication",true);this._def("custom_undo_redo",true);this._def("custom_undo_redo_levels",-1);this._def("custom_undo_redo_keyboard_shortcuts",true);this._def("custom_undo_redo_restore_selection",true);this._def("custom_undo_redo_global",false);this._def("verify_html",true);this._def("apply_source_formatting",false);this._def("directionality","ltr");this._def("cleanup_on_startup",false);this._def("inline_styles",false);this._def("convert_newlines_to_brs",false);this._def("auto_reset_designmode",true);this._def("entities","39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,1!
77,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,18
4,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947!
,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp!
,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,ci
rc,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",true);this._def("entity_encoding","named");this._def("cleanup_callback","");this._def("add_unload_trigger",true);this._def("ask",false);this._def("nowrap",false);this._def("auto_resize",false);this._def("auto_focus",false);this._def("cleanup",true);this._def("remove_linebreaks",true);this._def("button_tile_map",false);this._def("submit_patch",true);this._def("browsers","msie,safari,gecko,opera",true);this._def("dialog_type","window");this._def("accessibility_warnings",true);this._def("accessibility_focus",true);this._def("merge_styles_invalid_parents","");this._def("force_hex_style_colors",true);this._def("trim_span_elements",true);this._def("convert_fonts_to_spans",false);this._def("doctype",'<!DOCTYPE
html PUBLIC "-//W3C//DTD HTML 4.0 T!
ransitional//EN">');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",false);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);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('o!
pera')==-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=n!
ew
RegExp("^("+this.blockElms+")$","i");this.posKeyCodes=new
Array(13,45,36,35,33,34,37,38,39,40);this.uniqueURL='javascript:TINYMCE_UNIQUEURL();';this.uniqueTag='<div
id="mceTMPElement" style="display:
none">TMP</div>';this.callbacks=new
Array('onInit','getInfo','getEditorTemplate','setupContent','onChange','onPageLoad','handleNodeChange','initInstance','execCommand','getControlHTML','handleEvent','cleanup');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.d
ocumentBasePath+"/"+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.s!
ettings['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<p.length;i++){if(p[i].charAt(0)!='-')this.loadScript(tinyMCE.baseURL+'/plugins/'+p[i]+'/editor_plugin'+tinyMCE.srcMode+'.js')}}if(tinyMCE.getParam('entity_encoding')=='named'){settings['cleanup_entities']=new
Array();var
entities=tinyMCE.getParam('entities','',true,',');for(var
i=0;i<entities.length;i+=2)settings['cleanup_entities']['c'+entities[i]]=entities[i+1]}settings['index']=this.configs.length;this.configs[this.configs.length]=settings;this.loadNextScript();if(this.isIE&&!this.isOpera){try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}}},_addUnloadEvents:function(){if(tinyMCE.isIE){if(tinyMCE.settings['add_unload_trigger']){tinyMCE.addEvent(window,"unload",TinyMCE_Engine.prototype.unloadHandler);tinyM!
CE.addEvent(window.document,"beforeunload",TinyMCE_Engine.prototype.un
loadHandler)}}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.length;i++){if(this.loadedFiles[i]==url)return}if(tinyMCE.settings.strict_loading_mode)this.pendingFiles[this.pendingFiles.length]=url;else
document.write('<sc'+'ript language="javascript"
type="text/javascript"
src="'+url+'"></script>');this.loadedFiles[this.loadedFiles.length]=url},loadNextScript:function(){var
d=document,se;if(!tinyMCE.settings.strict_loading_mode)return;if(this.loa...
this.loadingIndex=-1;},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<csslen;x++){if(ar[x]!=null&&
ar[x]!='null'&&ar[x].length>0){for(i=0,lflen=this.loadedFiles.length;i<lflen;i++){if(this.loadedFiles[i]==ar[x]){skip=true;break}}if(!skip){if(tinyMCE.settings.strict_loading_mode){nl=document.getElementsByTagName("head");le=document.createElement('link');le.setAttribute('href',ar[x]);le.setAttribute('rel','stylesheet');le.setAttribute('type','text/css');nl[0].appendChild(le)}else
document.write('<link href="'+ar[x]+'" rel="stylesheet"
type="text/css"
/>');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<csslen;x++){css_file=css_ary[x];if(css_file!=null&&css_file!='null'&&css_file.length>0){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.getElementsByTagNa!
me("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++;va!
r inst=new TinyMCE_Control(tinyMCE.settings);inst.editorId=id;this.ins
tances[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;i<t.length;i++){if(t[i]!=ti)n.push(t[i])}tinyMCE.undoLevels=n;tinyMCE.undoIndex=n.length;return
ti},removeMCEControl:function(editor_id){var
inst=tinyMCE.getInstanceById(editor_id),h,re,ot,tn;if(inst){inst.switchSettings();editor_id=inst.editorId;h=tinyMCE.getContent(editor_id);this.removeInstance(inst);tinyMCE.selectedElement=null;tinyMCE.selectedInstance=null;re=document.getElementById(editor_id+"_parent");ot=inst.oldTargetElement;tn=ot.nodeName.toLowerCase();if(tn=="textarea"||tn=="input"){re.parentNode.removeChild(re);ot.style.display="inline";ot.value=h}else{ot.innerHTML=h;ot.style.display='block';re.parentNode.insertBefore(ot,re);re.parentNode.removeChild(re)}}},triggerSave:function(skip_cleanup,skip_callback!
){var
inst,n;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=false;for(n
in
tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.triggerSave(skip_cleanup,skip_callback)}},resetForm:function(form_index){var
i,inst,n,formObj=document.forms[form_index];for(n in
tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.switchSettings();for(i=0;i<formObj.elements.length;i++){if(inst.formTargetElementId==formObj.elements[i].name)inst.getBody().innerHTML=inst.startContent}}},execInstanceCommand:function(editor_id,command,user_interface,value,focus){var
inst=tinyMCE.getInstanceById(editor_id),r;if(inst){r=inst.selection.getRng();if(typeof(focus)=="undefined")focus=true;if(focus&&(!r||!r.item))inst.contentWindow.focus();inst.autoResetDesignMode();this.selectedElement=inst.getFocusElement();inst.select();tinyMCE.execCommand(command,user_interface,value);if(tiny!
MCE.isIE&&window.event!=null)tinyMCE.cancelEvent(window.event)}},execC
ommand:function(command,user_interface,value){var
inst=tinyMCE.selectedInstance;user_interface=user_interface?user_interface:false;value=value?value:null;if(inst)inst.switchSettings();switch(command){case"Undo":if(this.getParam('custom_undo_redo_global')){if(this.undoIndex>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"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.s
etAttribute("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.g!
etElementsByTagName('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,'&')}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,'<h'+i+'>');inst.addShortcut('ctrl','7','','FormatBlock',false,'<p>');inst.addShortcut('ctrl','8','','FormatBlock',false,'<div>');inst.addShortcut('ctrl','9','','FormatBlock',false,'<address>');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","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\r","<br
/>","gi");content=tinyMCE.regexpReplace(content,"\n","<br
/>","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, ins
t.getBody()));} catch(e) {}')}else tinyMCE._setHTML(inst.getDoc(),content)}var
parentElm=inst.targetDoc.getElementById(inst.editorId+'_parent');inst.formElement=tinyMCE.isGecko?parentElm.previousSibling:parentElm.nextSibling;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})}},handleEvent:function(e){var
inst=tinyMCE.selectedInstance;if(typeof(tinyMCE)=="undefined")return
true;if(tinyMCE.executeCallback(tinyMCE.selectedInstance,'handle_event_callback','handleEvent',e))return
false;switch(e.type){case"beforedeactivate":case"blur":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.execCommand('mceEndTyping');tinyMCE.hideMenus();return;case"drop":case"beforepaste":if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.setBaseHREF(null);if(tinyMCE.isRealIE){var
ife=tinyMCE.selectedInstance.iframeElement;if(ife.style.height.indexOf('%')!=-1){ife._oldHeight=ife.style.height;ife.style.height=ife.clientHeight}}window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings['base_href']);tinyMCE._resetIframeHeight();",1);return;case"submit":tinyMCE.triggerSave();tinyMCE.isNotDirty=true;r!
eturn;case"reset":var
formObj=tinyMCE.isIE?window.event.srcElement:e.target;for(var
i=0;i<document.forms.length;i++){if(document.forms[i]==formObj)window.setTimeout('tinyMCE.resetForm('+i+');',10)}return;case"keypress":if(inst&&inst.handleShortcut(e))return
false;if(e.target.editorId){tinyMCE.instances[e.target.editorId].select()}else{if(e.target.ownerDocument.editorId)tinyMCE.instances[e.target.ownerDocument.editorId].select()}if(tinyMCE.selectedInstance)tinyMCE.selectedInstance.switchSettings();if((tinyMCE.isGecko||tinyMCE.isOpera||tinyMCE.isSafari)&&tinyMCE.settings['force_p_newlines']&&e.keyCode==13&&!e.shiftKey){if(TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance,e)){tinyMCE.execCommand("mceAddUndoLevel");return
tinyMCE.cancelEvent(e)}}if((tinyMCE.isGecko&&!tinyMCE.isSafari)&&tinyMCE.settings['force_p_newlines']&&(e.keyCode==8||e.keyCode==46)&&!e.shiftKey){if(TinyMCE_ForceParagraphs._handleBackSpace(tinyMCE.selectedInstance,e.type)){tinyMCE.execCommand("mce!
AddUndoLevel");return tinyMCE.cancelEvent(e)}}if(tinyMCE.isIE&&tinyMCE
.settings['force_br_newlines']&&e.keyCode==13){if(e.target.editorId)tinyMCE.instances[e.target.editorId].select();if(tinyMCE.selectedInstance){var
sel=tinyMCE.selectedInstance.getDoc().selection;var
rng=sel.createRange();if(tinyMCE.getParentElement(rng.parentElement(),"li")!=null)return
false;e.returnValue=false;e.cancelBubble=true;rng.pasteHTML("<br
/>");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.sel!
ectedInstance;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<keys.length;i++){if(keys[i]==e.keyCode){posKey=true;break}}if(tinyMCE.isIE&&tinyMCE.settings['custom_undo_redo']){var
keys=new Array(8,46);for(var
i=0;i<keys.length;i++){if(keys[i]==e.keyCode){if(e.type=="keyup")tinyMCE.triggerNodeChange(false)}}}if(e.keyCode==17)return
true;if(tinyMCE.isGecko){if(!posKey&&e.type=="keyup"&&!e.ctrlKey||(e.ctrlKey&&(e.keyCode==86||e.keyCode==88)))tinyMCE.execCommand("mceStartTyping")}else{if(!posKey&&e.type=="keyup")tinyMCE.execCommand("mceStartTyping")}if(e.type=="keydown"&&(posKey||e.ctrlKey)&&inst)inst.undoBookmark=inst.selection.getBookmark();if(e.type=="keyup"&&(posKey||e.ctrlKey))tinyMCE.execCommand("mceEndTyping");if(posKey&&e.type=="keyup")tinyMCE.triggerNodeChange(false);if(tinyMCE.isIE&&e.ctrlKey)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);break;case"mousedown":case"mouseup":case"click":case"dblclick":case"focus":tinyMCE.hideMenus()!
;if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.switchSettings();tinyMCE.selectedInstance.isFocused=true}var
targetBody=tinyMCE.getParentElement(e.target,"html");for(var instanceName in
tinyMCE.instances){if(!tinyMCE.isInstance(tinyMCE.instances[instanceName]))continue;var
inst=tinyMCE.instances[instanceName];inst.autoResetDesignMode();if(inst.getBody().parentNode==targetBody){inst.select();tinyMCE.selectedElement=e.target;tinyMCE.linkElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"a");tinyMCE.imgElement=tinyMCE.getParentElement(tinyMCE.selectedElement,"img");break}}if(!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark&&(e.type=="mouseup"||e.type=="dblclick"))tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark=tinyMCE.selectedInstance.selection.getBookmark();if(e.type!="focus")tinyMCE.selectedNode=null;tinyMCE.triggerNodeChange(false);tinyMCE.execCommand("mceEndTyping");if(e.type=="mouseup")tinyMCE.execCommand("mceAddUndoLevel");if(!tinyMCE.sele!
ctedInstance&&e.target.editorId)tinyMCE.instances[e.target.editorId].s
elect();return false;break}},getButtonHTML:function(id,lang,img,cmd,ui,val){var
h='',m,x,io='';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.isRealIE)io='onmouseover="tinyMCE.lastHover
=
this;"';if(tinyMCE.getParam('button_tile_map')&&(!tinyMCE.isIE||tinyMCE.isOpera)&&(m=this.buttonMap[id])!=null&&(tinyMCE.getParam("language")=="en"||img.indexOf('$lang')==-1)){x=0-(m*20)==0?'0':0-(m*20);h+='<a
id="{$editor_id}_'+id+'" href="javascript:'+cmd+'"
onclick="'+cmd+'return false;" onmousedown="return false;"
'+io+' class="mceTiledButton mceButtonNormal"
target="_self">';h+='<img
src="{$themeurl}/images/spacer.gif" style="background-position:
'+x+'px 0" title="{$'+lang+'}"
/>';h+='</a>'}else{h+='<a
id="{$editor_id}_'+id+'" href="javascript:'+cmd+'"
onclick="'+cmd+'return false;" onmousedown="return false;"
'+io+' class="mceButtonNormal" targ!
et="_self">';h+='<img src="'+img+'"
title="{$'+lang+'}" />';h+='</a>'}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+='<span
id="{$editor_id}_'+id+'" class="mceMenuButton"
onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover =
this;"
onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else
h+='<span id="{$editor_id}_'+id+'"
class="mceMenuButton">';h+='<a
href="javascript:'+cmd+'" onclick="'+cmd+'return
false;" onmousedown="return false;" class="mceTiledButton mceMe!
nuButtonNormal" target="_self">';h+='<img
src="{$themeurl}/images/spac
er.gif" style="width: 20px; height: 20px; background-position: '+x+'px
0" title="{$'+lang+'}" /></a>';h+='<a
href="javascript:'+mcmd+'" onclick="'+mcmd+'return
false;" onmousedown="return false;"><img
src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}"
class="mceMenuButton"
/>';h+='</a></span>'}else{if(tinyMCE.isRealIE)h+='<span
id="{$editor_id}_'+id+'" class="mceMenuButton"
onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover =
this;"
onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';else
h+='<span id="{$editor_id}_'+id+'"
class="mceMenuButton">';h+='<a
href="javascript:'+cmd+'" onclick="'+cmd+'return
false;" onmousedown="return false;" class="mceMenuButtonNormal"
target="_self">';h+='<img src="'+img+'"
title="{$'+lang+'}" /></a>';h+='<a
href="javascript:'+mcmd+'" onclick="'+mcmd+'return
false;" onmousedown="return false;"><img
src="{$themeurl}/images/button_menu.gif" title="{$'+lang+'}"
class="mceMenuButton" />';h+='</a></span>'}return
h},_m!
enuButtonEvent: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<a.length;i++)this.buttonMap[a[i]]=i},submitPatch:function(){tinyMCE.triggerSave();tinyMCE.isNotDirty=true;this.mceOldSubmit()},onLoad:function(){var
r;if(tinyMCE.settings.strict_loading_mode&&this.loadingIndex!=-1){window.setTimeout('tinyMCE.onLoad();',1);return}if(tinyMCE.isRealIE&&window.event.type=="readystatechange"&&document.readyState!="complete")return
true;if(tinyMCE.isLoaded)return
true;tinyMCE.isLoaded=true;if(tinyMCE.isRealIE&&document.body){r=document.body.createTextRange();r.collapse(true);r.select()}tinyMCE.dispatchCallback(null,'onpageload','onPageLoad');for(var
c=0;c<tinyMCE.configs.length;c++){tinyMCE.settings=tinyMCE.configs[c];var
selector=tinyMCE.getParam("editor_selector");var
deselector=tinyMCE.getParam("ed!
itor_deselector");var elementRefAr=new Array();if(document.forms&&tiny
MCE.settings['add_form_submit_trigger']&&!tinyMCE.submitTriggers){for(var
i=0;i<document.forms.length;i++){var
form=document.forms[i];tinyMCE.addEvent(form,"submit",TinyMCE_Engine.prototype.handleEvent);tinyMCE.addEvent(form,"reset",TinyMCE_Engine.prototype.handleEvent);tinyMCE.submitTriggers=true;if(tinyMCE.settings['submit_patch']){try{form.mceOldSubmit=form.submit;form.submit=TinyMCE_Engine.prototype.submitPatch}catch(e){}}}}var
mode=tinyMCE.settings['mode'];switch(mode){case"exact":var
elements=tinyMCE.getParam('elements','',true,',');for(var
i=0;i<elements.length;i++){var element=tinyMCE._getElementById(elements[i]);var
trigger=element?element.getAttribute(tinyMCE.settings['textarea_trigger']):"";if(new
RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(element,"class")))continue;if(trigger=="false")continue;if((tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click'])&&element){elementRefAr[elementRefAr.length]=element;continue}if(element)tinyMCE.addMCEControl(!
element,elements[i]);else if(tinyMCE.settings['debug'])alert("Error: Could
not find element by id or name:
"+elements[i])}break;case"specific_textareas":case"textareas":var
nodeList=document.getElementsByTagName("textarea");for(var
i=0;i<nodeList.length;i++){var elm=nodeList.item(i);var
trigger=elm.getAttribute(tinyMCE.settings['textarea_trigger']);if(selector!=''&&!new
RegExp('\\b'+selector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if(selector!='')trigger=selector!=""?"true":"";if(new
RegExp('\\b'+deselector+'\\b').test(tinyMCE.getAttrib(elm,"class")))continue;if((mode=="specific_textareas"&&trigger=="true")||(mode=="textareas"&&trigger!="false"))elementRefAr[elementRefAr.length]=elm}break}for(var
i=0;i<elementRefAr.length;i++){var element=elementRefAr[i];var
elementId=element.name?element.name:element.id;if(tinyMCE.settings['ask']||tinyMCE.settings['convert_on_click']){if(tinyMCE.isGecko){var
settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(e!
){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,s
ettings)},10)});if(element.nodeName!="TEXTAREA"&&element.nodeName!="INPUT")tinyMCE.addEvent(element,"click",function(e){window.setTimeout(function(){TinyMCE_Engine.prototype.confirmAdd(e,settings)},10)});}else{var
settings=tinyMCE.settings;tinyMCE.addEvent(element,"focus",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});tinyMCE.addEvent(element,"click",function(){TinyMCE_Engine.prototype.confirmAdd(null,settings)});}}else
tinyMCE.addMCEControl(element,elementId)}if(tinyMCE.settings['auto_focus']){window.setTimeout(function(){var
inst=tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);inst.selection.selectNode(inst.getBody(),true,true);inst.contentWindow.focus()},100)}tinyMCE.dispatchCallback(null,'oninit','onInit')}},isInstance:function(o){return
o!=null&&typeof(o)=="object"&&o.isTinyMCE_Control},getParam:function(name,default_value,strip_whitespace,split_chr){var
value=(typeof(this.settings[name])=="undefined")?default_value:this.settings[name];if(value=!
="true"||value=="false")return(value=="true");if(strip_whitespace)value=tinyMCE.regexpReplace(value,"[
\t\r\n]","");if(typeof(split_chr)!="undefined"&&split_chr!=null){value=value.split(split_chr);var
outArray=new Array();for(var
i=0;i<value.length;i++){if(value[i]&&value[i]!="")outArray[outArray.length]=value[i]}value=outArray}return
value},getLang:function(name,default_value,parse_entities,va){var
v=(typeof(tinyMCELang[name])=="undefined")?default_value:tinyMCELang[name],n;if(parse_entities)v=tinyMCE.entityDecode(v);if(va){for(n
in va)v=this.replaceVar(v,n,va[n])}return v},entityDecode:function(s){var
e=document.createElement("div");e.innerHTML=s;return
e.firstChild.nodeValue},addToLang:function(prefix,ar){for(var key in
ar){if(typeof(ar[key])=='function')continue;tinyMCELang[(key.indexOf('lang_')==-1?'lang_':'')+(prefix!=''?(prefix+"_"):'')+key]=ar[key]}this.loadNextScript();},triggerNodeChange:function(focus,setup_content){if(tinyMCE.selectedInstance){var
inst=tinyMCE.s!
electedInstance;var editorId=inst.editorId;var elm=(typeof(setup_conte
nt)!="undefined"&&setup_content)?tinyMCE.selectedElement:inst.getFocusElement();var
undoIndex=-1,doc;var undoLevels=-1;var anySelection=false;var
selectedText=inst.selection.getSelectedText();if(tinyMCE.settings.auto_resize)inst.resizeToContent();if(setup_content&&tinyMCE.isGecko&&inst.isHidden())elm=inst.getBody();inst.switchSettings();if(tinyMCE.selectedElement)anySelection=(tinyMCE.selectedElement.nodeName.toLowerCase()=="img")||(selectedText&&selectedText.length>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;var
customCleanup=tinyMCE.settings['cleanup_callback'];if(customCleanup!=""&&ev!
al("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;i<pl.length;i++){po=tinyMCE.plugins[pl[i]];if(po&&po.cleanup)content=po.cleanup(type,content,inst)}return
content},setContent:function(h){if(tinyMCE.selectedInstance){tinyMCE.selectedInstance.execCommand('mceSetContent',false,h);tinyMCE.selectedInstance.repaint()}},importThemeLanguagePack:function(name){if(typeof(name)=="undefined")name=tinyMCE.settings['theme'];tinyMCE.loadScript(tinyMCE.baseURL+'/themes/'+name+'/langs/'+tinyMCE.settings['language']+'.js')},importPluginLanguagePack:function(name){var
b=tinyMCE.baseURL+'/plugins/'+name;if(this.plugins[name])b=this.plugins[name].baseURL;tinyMCE.loadScript(b+'/langs/'+tinyMCE.settings['language']+'.js')},applyTemplate:function(h,as){return
h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}','gi'),function(m,s){if(!
s.indexOf('lang_')==0&&tinyMCELang[s])return
tinyMCELang[s];if(as&&as[
s])return as[s];if(tinyMCE.settings[s])return
tinyMCE.settings[s];if(m=='themeurl')return tinyMCE.themeURL;return
m})},replaceVar:function(h,r,v){return h.replace(new
RegExp('{\\\$'+r+'}','g'),v)},openWindow:function(template,args){var
html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];args['mce_width']=template['width'];args['mce_height']=template['height'];tinyMCE.windowArgs=args;html=template['html'];if(!(width=parseInt(template['width'])))width=320;if(!(height=parseInt(template['height'])))height=200;if(tinyMCE.isIE)height+=40;else
height+=20;x=parseInt(screen.width/ 2.0) - (width /2.0);y=parseInt(screen.height/ 2.0) -
(height
/2.0);resizable=(args&&args['resizable'])?args['resizable']:"no";scrollbars=(args&&args['scrollbars'])?args['scrollbars']:"no";if(template['file'].charAt(0)!='/'&&template['file'].indexOf('://')==-1)url=tinyMCE.baseURL+"/themes/"+tinyMCE.getParam("theme")+"/"+template['file'];else
url=template['file'];for(var !
name in
args){if(typeof(args[name])=='function')continue;url=tinyMCE.replaceVar(url,name,escape(args[name]))}if(html){html=tinyMCE.replaceVar(html,"css",this.settings['popups_css']);html=tinyMCE.applyTemplate(html,args);var
win=window.open("","mcePopup"+new
Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return}win.document.write(html);win.document.close();win.resizeTo(width,height);win.focus()}else{if((tinyMCE.isRealIE)&&resizable!='yes'&&tinyMCE.settings["dialog_type"]=="modal"){height+=10;var
features="resizable:"+resizable+";scroll:"+scrollbars+";status:yes;center:yes;help:no;dialogWidth:"+width+"px;dialogHeight:"+height+"px;";window.showModalDialog(url,window,features)}else{var
modal=(resizable=="yes")?"no":"yes";if(tinyMCE.isGecko&&tinyMCE.isMac)modal="no";if(template['close_previous']!="no")try!
{tinyMCE.lastWindow.close()}catch(ex){}var win=window.open(url,"mcePop
up"+new
Date().getTime(),"top="+y+",left="+x+",scrollbars="+scrollbars+",dialog="+modal+",minimizable="+resizable+",modal="+modal+",width="+width+",height="+height+",resizable="+resizable);if(win==null){alert(tinyMCELang['lang_popup_blocked']);return}if(template['close_previous']!="no")tinyMCE.lastWindow=win;eval('try
{ win.resizeTo(width, height); } catch(e) {
}');if(tinyMCE.isGecko){if(win.document.defaultView.statusbar.visible)win.resizeBy(0,tinyMCE.isMac?10:24)}win.focus()}}},closeWindow:function(win){win.close()},getVisualAidClass:function(class_name,state){var
aidClass=tinyMCE.settings['visual_table_class'];if(typeof(state)=="undefined")state=tinyMCE.settings['visual'];var
classNames=new Array();var ar=class_name.split(' ');for(var
i=0;i<ar.length;i++){if(ar[i]==aidClass)ar[i]="";if(ar[i]!="")classNames[classNames.length]=ar[i]}if(state)classNames[classNames.length]=aidClass;var
className="";for(var i=0;i<classNames.length;i++){if(i>0)className+="
";className+=classNam!
es[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<el.rows.length;y++){for(var x=0;x<el.rows[y].cells.length;x++){var
cn=tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],"class"),state&&bo);tinyMCE.setAttrib(el.rows[y].cells[x],"class",cn)}}break;case"A":var
anchorName=tinyMCE.getAttrib(el,"name");if(anchorName!=''&&state){el.title=anchorName;tinyMCE.addCSSClass(el,'mceItemAnchor')}else
if(anchorName!=''&&!state)el.className='';break}if(deep&&el.hasChildNodes()){for(var
i=0;i<el.child!
Nodes.length;i++)tinyMCE.handleVisualAid(el.childNodes[i],deep,state,i
nst,true)}},fixGeckoBaseHREFBug:function(m,e,h){var
xsrc,xhref;if(tinyMCE.isGecko){if(m==1){h=h.replace(/\ssrc=/gi,"
mce_tsrc=");h=h.replace(/\shref=/gi," mce_thref=");return h}else{if(!new
RegExp('(src|href)=','g').test(h))return
h;tinyMCE.selectElements(e,'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK',function(n){xsrc=tinyMCE.getAttrib(n,"mce_tsrc");xhref=tinyMCE.getAttrib(n,"mce_thref");if(xsrc!=""){try{n.src=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xsrc)}catch(e){}n.removeAttribute("mce_tsrc")}if(xhref!=""){try{n.href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],xhref)}catch(e){}n.removeAttribute("mce_thref")}return
false});tinyMCE.selectNodes(e,function(n){if(n.nodeType==3||n.nodeType==8){n.nodeValue=n.nodeValue.replace(/\smce_tsrc=/gi,"
src=");n.nodeValue=n.nodeValue.replace(/\smce_thref=/gi," href=")}return
false})}}return
h},_setHTML:function(doc,html_content){html_content=tinyMCE.cleanupHTMLCode(html_co!
ntent);try{tinyMCE.setInnerHTML(doc.body,html_content)}catch(e){if(this.isMSIE)doc.body.createTextRange().pasteHTML(html_content)}if(tinyMCE.isIE&&tinyMCE.settings['fix_content_duplication']){var
paras=doc.getElementsByTagName("P");for(var i=0;i<paras.length;i++){var
node=paras[i];while((node=node.parentNode)!=null){if(node.nodeName=="P")node.outerHTML=node.innerHTML}}var
html=doc.body.innerHTML;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){v!
ar inst=tinyMCE.getInstanceById(editor_id);if(inst)return inst.queryCo
mmandValue(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
output=new Array();if(typeof(tinyMCE.cssClasses)!="undefined")return
tinyMCE.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<styles.length;x++){var csses=null;eval("try {var csses = tinyMCE.isIE ?
doc.styleSheets("+x+").rules : styles["+x+"].!
cssRules;} catch(e) {}");if(!csses)return new Array();for(var
i=0;i<csses.length;i++){var selectorText=csses[i].selectorText;if(selectorText){var
rules=selectorText.split(',');for(var c=0;c<rules.length;c++){var
rule=rules[c];while(rule.indexOf('
')==0)rule=rule.substring(1);if(rule.indexOf('
')!=-1||rule.indexOf(':')!=-1||rule.indexOf('mceItem')!=-1)continue;if(rule.indexOf(tinyMCE.settings['visual_table_class'])!=-1||rule.indexOf('mceEditable')!=-1||rule.indexOf('mceNonEditable')!=-1)continue;if(rule.indexOf('.')!=-1){var
cssClass=rule.substring(rule.indexOf('.')+1);var addClass=true;for(var
p=0;p<output.length&&addClass;p++){if(output[p]==cssClass)addClass=false}if(addClass)output[output.length]=cssClass}}}}}}}if(output.length>0)tinyMCE.cssClasses=output;return
output},regexpReplace:function(in_str,reg_exp,replace_str,opts){if(in_str==null)return
in_str;if(typeof(opts)=="undefined")opts='g';var re=new
RegExp(reg_exp,opts);return in_str.replace(re,replace_str)},trim:funct!
ion(s){return s.replace(/^\s*|\s*$/g,"")},cleanupEventStr:function(s){
s=""+s;s=s.replace('function
anonymous()\n{\n','');s=s.replace('\n}','');s=s.replace(/^return
true;/gi,'');return s},getControlHTML:function(c){var
i,l,n,o,v;l=tinyMCE.plugins;for(n in
l){o=l[n];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return
tinyMCE.replaceVar(v,"pluginurl",o.baseURL)}o=tinyMCE.themes[tinyMCE.settings['theme']];if(o.getControlHTML&&(v=o.getControlHTML(c))!='')return
v;return''},evalFunc:function(f,idx,a,o){var
s='(',i;for(i=idx;i<a.length;i++){s+='a['+i+']';if(i<a.length-1)s+=','}s+=');';return
o?eval("o."+f+s):eval("f"+s)},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(typeof(l)=="function"?l:eval(l)!
,3,a))==s&&m>0)return
true;if(ins!=null){for(i=0,l=ins.plugins;i<l.length;i++){o=tinyMCE.plugins[l[i]];if(o[n]&&(v=tinyMCE.evalFunc(n,3,a,o))==s&&m>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){return s?(''+s).replace(new
RegExp('[<>&"\']','g'),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.isTi!
nyMCE_Control=true;this.settings=s;this.settings['theme']=tinyMCE.getP
aram("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.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,url_converter:'TinyMCE_Cleanup.prototype._urlConverter',indent:s.apply_source_formatting,invalid_elements:s.invalid_elements,verify_html:s.verify_html,fix_content_duplication:s.fix_content_duplication});t=this.settings['theme'];if(!tinyMCE.hasTheme(t)){fn=tinyMCE.callbacks;to={};for(i=0;i<fn.length;i++){if((fu=window['TinyMCE_'+t+"_"+fn[i]]))to[fn[i]]=fu}tinyMCE.addTheme(t,to)}this.plugins=new
Array();p=tinyMCE!
.getParam('plugins','',true,',');if(p.length>0){for(i=0;i<p.length;i++){pn=p[i];if(pn.charAt(0)=='-')pn=pn.substring(1);if(!tinyMCE.hasPlugin(pn)){fn=tinyMCE.callbacks;to={};for(x=0;x<fn.length;x++){if((fu=window['TinyMCE_'+pn+"_"+fn[x]]))to[fn[x]]=fu}tinyMCE.addPlugin(pn,to)}this.plugins[this.plugins.length]=pn}}};TinyMCE_Control.prototype={selection:null,settings:null,cleanup:null,getData:function(na){var
o=this.data[na];if(!o)o=this.data[na]={};return o},hasPlugin:function(n){var
i;for(i=0;i<this.plugins.length;i++){if(this.plugins[i]==n)return true}return
false},addPlugin:function(n,p){if(!this.hasPlugin(n)){tinyMCE.addPlugin(n,p);this.plugins[this.plugins.length]=n}},repaint:function(){var
s,b,ex;if(tinyMCE.isRealIE)return;try{s=this.selection;b=s.getBookmark(true);this.getBody().style.display='none';this.getDoc().execCommand('selectall',false,null);this.getSel().collapseToStart();this.getBody().style.display='block';s.moveToBookmark(b)}catch(ex){}},switchSettings:func!
tion(){if(tinyMCE.configs.length>1&&tinyMCE.currentConfig!=this.settin
gs['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.documentEl!
ement;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<scl.length;i++){if(sc.alt==scl[i].alt&&sc.ctrl==scl[i].ctrl&&sc.shift==scl[i].shift&&sc.charCode==scl[i].charCode&&sc.keyCode==scl[i].keyCode){return
false}}scl[scl.length]=sc;return true},handleShortcut:function(e){var
i,s=this.shortcuts,o;for(i=0;i<s.length;i++){o=s[i];if(o.alt==e.altKey&&o.ctrl==e.ctrlKey&&(o.keyCode==e.keyCode||o.charCode==e.charCode)){if(o.cmd&&(e.type=="keydown"||(e.type=="keypress"&&!tinyMCE.isOpera)))tinyMCE.execCommand(o.cmd,o.!
ui,o.val);tinyMCE.cancelEvent(e);return true}}return false},autoResetD
esignMode:function(){if(!tinyMCE.isIE&&this.isHidden()&&tinyMCE.getParam('auto_reset_designmode'))eval('try
{ this.getDoc().designMode = "On"; this.useCSS = false; } catch(e)
{}')},isHidden:function(){var s;if(tinyMCE.isIE)return
false;s=this.getSel();return(!s||!s.rangeCount||s.rangeCount==0)},isDirty:function(){return
tinyMCE.trim(this.startContent)!=tinyMCE.trim(this.getBody().innerHTML)&&!tinyMCE.isNotDirty},_mergeElements:function(scmd,pa,ch,override){if(scmd=="removeformat"){pa.className="";pa.style.cssText="";ch.className="";ch.style.cssText="";return}var
st=tinyMCE.parseStyle(tinyMCE.getAttrib(pa,"style"));var
stc=tinyMCE.parseStyle(tinyMCE.getAttrib(ch,"style"));var
className=tinyMCE.getAttrib(pa,"class");className=tinyMCE.getAttrib(ch,"class");if(override){for(var
n in st){if(typeof(st[n])=='function')continue;stc[n]=st[n]}}else{for(var n in
stc){if(typeof(stc[n])=='function')continue;st[n]=stc[n]}}tinyMCE.setAttrib(pa,"style",tinyMCE.serializeStyle(st));tinyMCE.se!
tAttrib(pa,"class",tinyMCE.trim(className));ch.className="";ch.style.cssText="";ch.removeAttribute("class");ch.removeAttribute("style")},_setUseCSS:function(b){var
d=this.getDoc();try{d.execCommand("useCSS",false,!b)}catch(ex){}try{d.execCommand("styleWithCSS",false,b)}catch(ex){}if(!tinyMCE.getParam("table_inline_editing"))try{d.execCommand('enableInlineTableEditing',false,"false")}catch(ex){}if(!tinyMCE.getParam("object_resizing"))try{d.execCommand('enableObjectResizing',false,"false")}catch(ex){}},execCommand:function(command,user_interface,value){var
doc=this.getDoc(),win=this.getWin(),focusElm=this.getFocusElement();if(!new
RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel','gi').test(command))this.undoBookmark=null;if(!tinyMCE.isIE&&!this.useCSS){this._setUseCSS(false);this.useCSS=true}this.contentDocument=doc;if(tinyMCE.execCommandCallback(this,'execcommand_callback','execCommand',this.editorId,this.getBody(),command,user_interface!
,value))return;if(focusElm&&focusElm.nodeName=="IMG"){var align=focusE
lm.getAttribute('align');var
img=command=="JustifyCenter"?focusElm.cloneNode(false):focusElm;switch(command){case"JustifyLeft":if(align=='left')img.removeAttribute('align');else
img.setAttribute('align','left');var
div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyCenter":img.removeAttribute('align');var
div=tinyMCE.getParentElement(focusElm,"div");if(div&&div.style.textAlign=="center"){if(div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div)}else{var
div=this.getDoc().createElement("div");div.style.textAlign='center';div.appendChild(img);focusElm.parentNode.replaceChild(div,focusElm)}this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return;case"JustifyRight":if(align=='right')img.removeAttribute('align');else
img.setAttribute('align','!
right');var
div=focusElm.parentNode;if(div&&div.nodeName=="DIV"&&div.childNodes.length==1&&div.parentNode)div.parentNode.replaceChild(img,div);this.selection.selectNode(img);this.repaint();tinyMCE.triggerNodeChange();return}}if(tinyMCE.settings['force_br_newlines']){var
alignValue="";if(doc.selection.type!="Control"){switch(command){case"JustifyLeft":alignValue="left";break;case"JustifyCenter":alignValue="center";break;case"JustifyFull":alignValue="justify";break;case"JustifyRight":alignValue="right";break}if(alignValue!=""){var
rng=doc.selection.createRange();if((divElm=tinyMCE.getParentElement(rng.parentElement(),"div"))!=null)divElm.setAttribute("align",alignValue);else
if(rng.pasteHTML&&rng.htmlText.length>0)rng.pasteHTML('<div
align="'+alignValue+'">'+rng.htmlText+"</div>");tinyMCE.triggerNodeChange();return}}}switch(command){case"mceRepaint":this.repaint();return
true;case"unlink":if(tinyMCE.isGecko&&this.getSel().isCollapsed){focusElm=tinyMCE.getParentElement(focusEl!
m,'A');if(focusElm)this.selection.selectNode(focusElm,false)}this.getD
oc().execCommand(command,user_interface,value);tinyMCE.isGecko&&this.getSel().collapseToEnd();tinyMCE.triggerNodeChange();return
true;case"FormatBlock":if(!this.cleanup.isValid(value))return
true;this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();break;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(tinyMCE.isGecko&&new
RegExp('<(div|blockquote|code|dt|dd|dl|samp)>','gi').test(value))value=value.replace(/[^a-z]/g!
i,'');if(tinyMCE.isIE&&new
RegExp('blockquote|code|samp','gi').test(value)){var
b=this.selection.getBookmark();this.getDoc().execCommand("FormatBlock",false,'<p>');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.select!
Node(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNod
e=parentNode;return}parentNode=parentNode.parentNode}break;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(s!
cmd=="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<ch.length;z++){if(ch[z]==parentElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}else{this._setUseCSS(false);doc.execCommand("FontName",false,"#mce_temp_font#");var
elementArray=tinyMCE.getElementsByAttributeValue(this.getBody(),"font","face","#mce_temp_font#");for(var
x=0;x<elementArray.length;x++){elm=elementArray[x];if(elm){var
spanElm=doc.createElement(wrapper);if(scmd=="setstyle")tinyMCE.setStyleAttrib(spanElm,sname,svalue);if(scmd=="setattrib")tinyMCE.setAttrib(spanElm,sname,svalue);if(scmd=="removeformat"){spanElm.style.cssText=!
'';tinyMCE.setAttrib(spanElm,'class','')}if(elm.hasChildNodes()){for(v
ar
i=0;i<elm.childNodes.length;i++)spanElm.appendChild(elm.childNodes[i].cloneNode(true))}spanElm.setAttribute("mce_new","true");elm.parentNode.replaceChild(spanElm,elm);var
ch=tinyMCE.getNodeTree(spanElm,new Array(),1);for(var
z=0;z<ch.length;z++){if(ch[z]==spanElm)continue;if(scmd=="setstyle")tinyMCE.setStyleAttrib(ch[z],sname,'');if(scmd=="setattrib")tinyMCE.setAttrib(ch[z],sname,'');if(scmd=="removeformat"){ch[z].style.cssText='';tinyMCE.setAttrib(ch[z],'class','')}}}}}var
nodes=doc.getElementsByTagName(wrapper);for(var i=nodes.length-1;i>=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('<span>','gi').test(tmp.innerHTML)){for(var
x=0;x<elm.childNodes.length;x++){if(elm.parentNode!=null)elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true),elm)}elm.parentNode.removeChild(elm)}}if(scmd=="removeformat")tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"FontName":if(value==null){var
s=this.getSel();if(tinyMCE.isGecko&&s.isCollapsed){var
f=tinyMCE.getParentElement(this.getFocusElement(),"font");if(f!=null)this.selection.selectNode(f,false)}this.getDoc().execCommand("RemoveFormat",false,null);if(f!=null&&tinyMCE.isGecko){var
r=this.getRng().cloneRange();r.collapse(true);s.removeAllRange!
s();s.addRange(r)}}else this.getDoc().execCommand('FontName',false,val
ue);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"FontSize":this.getDoc().execCommand('FontSize',false,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);return;case"forecolor":value=value==null?this.foreColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.foreColor=value;this.getDoc().execCommand('forecolor',false,value);break;case"HiliteColor":value=value==null?this.backColor:value;value=tinyMCE.trim(value);value=value.charAt(0)!='#'?(isNaN('0x'+value)?value:'#'+value):value;this.backColor=value;if(tinyMCE.isGecko){this._setUseCSS(true);this.getDoc().execCommand('hilitecolor',false,value);this._setUseCSS(false)}else
this.getDoc().execCommand('BackColor',false,value);break;case"Cut":case"Copy":case"Paste":var
cmdFailed=false;eval('try {this.getDoc().execCommand(command, user_interface, value);}
catch (e) {cmdFailed = true;}');if(tinyMCE.isOper!
a&&cmdFailed)alert('Currently not supported by your browser, use keyboard
shortcuts
instead.');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE....
tinyMCE.triggerNodeChange();break;case"mceSetContent":if(!value)value="";value=tinyMCE.storeAwayURLs(value);value=tinyMCE._customCleanup(this,"insert_to_editor",value);if(this.getBody().nodeName=='BODY')tinyMCE._setHTML(doc,value);else
this.getBody().innerHTML=value;tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,doc,this.settings,this.getBody(),false,false,false,true));tinyMCE.convertAllRelativeURLs(this.getBody());tinyMCE._removeInternal(this.getBody());if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);return
true;case"mceClea!
nup":var b=this.selection.getBookmark();tinyMCE._setHTML(this.contentD
ocument,this.getBody().innerHTML);tinyMCE.setInnerHTML(this.getBody(),tinyMCE._cleanupHTML(this,this.contentDocument,this.settings,this.getBody(),this.visualAid));tinyMCE.convertAllRelativeURLs(doc.body);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(doc);tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE._setEventsEnabled(this.getBody(),false);this.repaint();this.selection.moveToBookmark(b);tinyMCE.triggerNodeChange();break;case"mceReplaceContent":if(!value)value='';this.getWin().focus();var
selectedText="";if(tinyMCE.isIE){var
rng=doc.selection.createRange();selectedText=rng.text}else
selectedText=this.getSel().toString();if(selectedText.length>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("SetStyleInfo",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.indexO!
f('<')==-1&&!value.match(/(&| |<|>)/g)){var
r=this.ge
tRng();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('<!--')!=-1;if(c)value=tinyMCE.uniqueTag+value;if(rng.item)rng.item(0).outerHTML=value;else
rng.pasteHTML(value);if(c){var
e=this.getDoc().getElementById('mceTMPElement');e.parentNode.removeChild(e)}}tinyMCE.execCommand("mceAddUndoLevel");tinyMCE.triggerNodeChange();break;case"mceStartTyping":if(tinyMCE.settings[!
'custom_undo_redo']&&this.undoRedo.typingUndoIndex==-1){this.undoRedo.
typingUndoIndex=this.undoRedo.undoIndex;tinyMCE.typingUndoIndex=tinyMCE.undoIndex;this.execCommand('mceAddUndoLevel')}break;case"mceEndTyping":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedo.typingUndoIndex!=-1){this.execCommand('mceAddUndoLevel');this.undoRedo.typingUndoIndex=-1}tinyMCE.typingUndoIndex=-1;break;case"mceBeginUndoLevel":this.undoRedoLevel=false;break;case"mceEndUndoLevel":this.undoRedoLevel=true;this.execCommand('mceAddUndoLevel');break;case"mceAddUndoLevel":if(tinyMCE.settings['custom_undo_redo']&&this.undoRedoLevel){if(this.undoRedo.add())tinyMCE.triggerNodeChange(false)}break;case"Undo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.undo();tinyMCE.triggerNodeChange()}else
this.getDoc().execCommand(command,user_interface,value);break;case"Redo":if(tinyMCE.settings['custom_undo_redo']){tinyMCE.execCommand("mceEndTyping");this.undoRedo.redo();tinyMCE.triggerNodeChange()}else
this.getDoc().execCommand(command,!
user_interface,value);break;case"mceToggleVisualAid":this.visualAid=!this.visualAid;tinyMCE.handleVisualAid(this.getBody(),true,this.visualAid,this);tinyMCE.triggerNodeChange();break;case"Indent":this.getDoc().execCommand(command,user_interface,value);tinyMCE.triggerNodeChange();if(tinyMCE.isIE){var
n=tinyMCE.getParentElement(this.getFocusElement(),"blockquote");do{if(n&&n.nodeName=="BLOCKQUOTE"){n.removeAttribute("dir");n.removeAttribute("style")}}while(n!=null&&(n=n.parentNode)!=null)}break;case"removeformat":var
text=this.selection.getSelectedText();if(tinyMCE.isOpera){this.getDoc().execCommand("RemoveFormat",false,null);return}if(tinyMCE.isIE){try{var
rng=doc.selection.createRange();rng.execCommand("RemoveFormat",false,null)}catch(e){}this.execCommand("SetStyleInfo",false,{command:"removeformat"})}else{this.getDoc().execCommand(command,user_interface,value);this.execCommand("SetStyleInfo",false,{command:"removeformat"})}if(text.length==0)this.execCommand("mceSetCSSClass!
",false,"");tinyMCE.triggerNodeChange();break;default:this.getDoc().ex
ecCommand(command,user_interface,value);if(tinyMCE.isGecko)window.setTimeout('tinyMCE.triggerNodeChange(false);',1);else
tinyMCE.triggerNodeChange()}if(command!="mceAddUndoLevel"&&command!="Undo"&&command!="Redo"&&command!="mceStartTyping"&&command!="mceEndTyping")tinyMCE.execCommand("mceAddUndoLevel")},queryCommandValue:function(c){try{return
this.getDoc().queryCommandValue(c)}catch(e){return
null}},queryCommandState:function(c){return
this.getDoc().queryCommandState(c)},_onAdd:function(replace_element,form_element_name,target_document){var
hc,th,to,editorTemplate;th=this.settings['theme'];to=tinyMCE.themes[th];var
targetDoc=target_document?target_document:document;this.targetDoc=targetDoc;tinyMCE.themeURL=tinyMCE.baseURL+"/themes/"+this.settings['theme'];this.settings['themeurl']=tinyMCE.themeURL;if(!replace_element){alert("Error:
Could not find the target element.");return
false}if(to.getEditorTemplate)editorTemplate=to.getEditorTemplate(this.settings,this.editorId);var
d!
eltaWidth=editorTemplate['delta_width']?editorTemplate['delta_width']:0;var
deltaHeight=editorTemplate['delta_height']?editorTemplate['delta_height']:0;var
html='<span id="'+this.editorId+'_parent"
class="mceEditorContainer">'+editorTemplate['html'];html=tinyMCE.replaceVar(html,"editor_id",this.editorId);this.settings['default_document']=tinyMCE.baseURL+"/blank.htm";this.settings['old_width']=this.settings['width'];this.settings['old_height']=this.settings['height'];if(this.settings['width']==-1)this.settings['width']=replace_element.offsetWidth;if(this.settings['height']==-1)this.settings['height']=replace_element.offsetHeight;if(this.settings['width']==0)this.settings['width']=replace_element.style.width;if(this.settings['height']==0)this.settings['height']=replace_element.style.height;if(this.settings['width']==0)this.settings['width']=320;if(this.settings['height']==0)this.settings['height']=240;this.settings['area_width']=parseInt(this.settings['width']);this.settings[!
'area_height']=parseInt(this.settings['height']);this.settings['area_w
idth']+=deltaWidth;this.settings['area_height']+=deltaHeight;this.settings['width_style']=""+this.settings['width'];this.settings['height_style']=""+this.settings['height'];if((""+this.settings['width']).indexOf('%')!=-1)this.settings['area_width']="100%";else
this.settings['width_style']+='px';if((""+this.settings['height']).indexOf('%')!=-1)this.settings['area_height']="100%";else
this.settings['height_style']+='px';if((""+replace_element.style.width).indexOf('%')!=-1){this.settings['width']=replace_element.style.width;this.settings['area_width']="100%";this.settings['width_style']="100%"}if((""+replace_element.style.height).indexOf('%')!=-1){this.settings['height']=replace_element.style.height;this.settings['area_height']="100%";this.settings['height_style']="100%"}html=tinyMCE.applyTemplate(html);this.settings['width']=this.settings['old_width'];this.settings['height']=this.settings['old_height'];this.visualAid=this.settings['visual'];this.formTargetElementId=form_elemen!
t_name;if(replace_element.nodeName=="TEXTAREA"||replace_element.nodeName=="INPUT")this.startContent=replace_element.value;else
this.startContent=replace_element.innerHTML;if(replace_element.nodeName!="TEXTAREA"&&replace_element.nodeName!="INPUT"){this.oldTargetElement=replace_element;if(tinyMCE.settings['debug']){hc='<textarea
wrap="off" id="'+form_element_name+'"
name="'+form_element_name+'" cols="100"
rows="15"></textarea>'}else{hc='<input
type="hidden" id="'+form_element_name+'"
name="'+form_element_name+'"
/>';this.oldTargetElement.style.display="none"}html+='</span>';if(tinyMCE.isGecko)html=hc+html;else
html+=hc;if(tinyMCE.isGecko){var
rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var
fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else
replace_element.insertAdjacentHTML("beforeBegin",html)}else{html+='</span>';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTarg!
etElement.style.display="none";if(tinyMCE.isGecko){var rng=replace_ele
ment.ownerDocument.createRange();rng.setStartBefore(replace_element);var
fragment=rng.createContextualFragment(html);tinyMCE.insertAfter(fragment,replace_element)}else
replace_element.insertAdjacentHTML("beforeBegin",html)}var
dynamicIFrame=false;var
tElm=targetDoc.getElementById(this.editorId);if(!tinyMCE.isIE){if(tElm&&(tElm.nodeName=="SPAN"||tElm.nodeName=="span")){tElm=tinyMCE._createIFrame(tElm,targetDoc);dynamicIFrame=true}this.targetElement=tElm;this.iframeElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName=="SPAN")tElm=tinyMCE._createIFrame(tElm,targetDoc,targetDoc.parentWindow);else
tElm=targetDoc.frames[this.editorId];this.targetElement=tElm;this.iframeElement=targetDoc.getElementById(this.editorId);if(tinyMCE.isOpera){this.contentDocument=this.iframeElement.contentDocument;this.contentWindow=this.iframeElement.contentWindow;dynamicIFrame=true}else{this.contentDocument=tElm.window.document;this.c!
ontentWindow=tElm.window}this.getDoc().designMode="on"}var
doc=this.contentDocument;if(dynamicIFrame){var
html=tinyMCE.getParam('doctype')+'<html><head
xmlns="http://www.w3.org/1999/xhtml"><base
href="'+tinyMCE.settings['base_href']+'"
/><title>blank_page</title><meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"></head><body
class="mceContentBody"></body></html>';try{if(!this.isHidden())this.getDoc().designMode="on";doc.open();doc.write(html);doc.close()}catch(e){this.getDoc().location.href=tinyMCE.baseURL+"/blank.htm"}}if(tinyMCE.isIE)window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\""+this.editorId+"\"]);",1);tinyMCE.setupContent(this.editorId,true);return
true},setBaseHREF:function(u){var
h,b,d,nl;d=this.getDoc();nl=d.getElementsByTagName("base");b=nl.length>0?nl[0]:null;if(!b){nl=d.getElementsByTagName("head");h=nl.length>0?nl[0]:null;b=d.createElement("base");b.setAttribute('href',u);h.appendChild(b)}else{if(u==""||u==null)b.parentNode.rem!
oveChild(b);else b.setAttribute('href',u)}},getHTML:function(r){var h,
d=this.getDoc(),b=this.getBody();if(r)return
b.innerHTML;h=tinyMCE._cleanupHTML(this,d,this.settings,b,false,true,false,true);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(d);return
h},setHTML:function(h){this.execCommand('mceSetContent',false,h);this.repaint()},getFocusElement:function(){return
this.selection.getFocusElement()},getSel:function(){return
this.selection.getSel()},getRng:function(){return
this.selection.getRng()},triggerSave:function(skip_cleanup,skip_callback){var
e,nl=[],i,s;this.switchSettings();s=tinyMCE.settings;if(tinyMCE.isRealIE){e=this.iframeElement;do{if(e.style&&e.style.display=='none'){e.style.display='block';nl[nl.length]={elm:e,type:'style'}}if(e.style&&s.hidden_tab_class.length>0&&e.className.indexOf(s.hidden_tab_class)!=-1){e.className=s.display_tab_class;nl[nl.length]={elm:e,type:'class'}}}while((e=e.parentNode)!=null)}tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(t!
ypeof(skip_callback)=="undefined")skip_callback=false;tinyMCE._setHTML(this.getDoc(),this.getBody().innerHTML);if(this.settings['cleanup']==false){tinyMCE.handleVisualAid(this.getBody(),true,false,this);tinyMCE._setEventsEnabled(this.getBody(),true)}tinyMCE._customCleanup(this,"submit_content_dom",this.contentWindow.document.body);var
htm=skip_cleanup?this.getBody().innerHTML:tinyMCE._cleanupHTML(this,this.getDoc(),this.settings,this.getBody(),tinyMCE.visualAid,true,true);htm=tinyMCE._customCleanup(this,"submit_content",htm);if(!skip_callback&&tinyMCE.settings['save_callback']!="")var
content=eval(tinyMCE.settings['save_callback']+"(this.formTargetElementId,htm,this.getBody());");if((typeof(content)!="undefined")&&content!=null)htm=content;htm=tinyMCE.regexpReplace(htm,"(","(","gi");htm=tinyMCE.regexpReplace(htm,")",")","gi");htm=tinyMCE.regexpReplace(htm,";",";","gi");htm=tinyMCE.regexpReplace(htm,""",""","gi");htm=tinyMCE.regexpReplace(htm,"^","^"!
,"gi");if(this.formElement)this.formElement.value=htm;if(tinyMCE.isSaf
ari&&this.formElement)this.formElement.innerText=htm;for(i=0;i<nl.length;i++){if(nl[i].type=='style')nl[i].elm.style.display='none';else
nl[i].elm.className=s.hidden_tab_class}}};TinyMCE_Engine.prototype.cleanupHTMLCode=function(s){s=s.replace(new
RegExp('<p
\\/>','gi'),'<p> </p>');s=s.replace(new
RegExp('<p>\\s*<\\/p>','gi'),'<p> </p>');s=s.replace(new
RegExp('<br>\\s*<\\/br>','gi'),'<br
/>');s=s.replace(new
RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>','gi'),'<$1$2$3></$1$2>');s=s.replace(new
RegExp('\\s+></','gi'),'></');s=s.replace(new
RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>','gi'),'<$1$2
/>');if(tinyMCE.isIE)s=s.replace(new RegExp('<p><hr
\\/><\\/p>','gi'),"<hr>");if(tinyMCE.isIE)s=s.replace(/<!(\s*)\/>/g,'');return
s};TinyMCE_Engine.prototype.parseStyle=function(str){var ar=new
Array();if(str==null)return ar;var
st=str.split(';');tinyMCE.clearArray(ar);for(var i=!
0;i<st.length;i++){if(st[i]=='')continue;var re=new
RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');var
pa=st[i].replace(re,'$1||$2').split('||');if(pa.length==2)ar[pa[0].toLowerCase()]=pa[1]}return
ar};TinyMCE_Engine.prototype.compressStyle=function(ar,pr,sf,res){var box=new
Array();box[0]=ar[pr+'-top'+sf];box[1]=ar[pr+'-left'+sf];box[2]=ar[pr+'-right'+sf];box[3]=ar[pr+'-bottom'+sf];for(var
i=0;i<box.length;i++){if(box[i]==null)return;for(var
a=0;a<box.length;a++){if(box[a]!=box[i])return}}ar[res]=box[0];ar[pr+'-top'+sf]=null;ar[pr+'-left'+sf]=null;ar[pr+'-right'+sf]=null;ar[pr+'-bottom'+sf]=null};TinyMCE_Engine.prototype.serializeStyle=function(ar){var
str="";tinyMCE.compressStyle(ar,"border","","border");tinyMCE.compressStyle(ar,"border","-width","border-width");tinyMCE.compressStyle(ar,"border","-color","border-color");tinyMCE.compressStyle(ar,"border","-style","border-style");tinyMCE.compressStyle(ar,"padding","","padding");tinyMCE.compressStyle(ar,"margin","","margin");for(var
k!
ey in ar){var val=ar[key];if(typeof(val)=='function')continue;if(key.i
ndexOf('mso-')==0)continue;if(val!=null&&val!=''){val=''+val;val=val.replace(new
RegExp("url\\(\\'?([^\\']*)\\'?\\)",'gi'),"url('$1')");if(val.indexOf('url(')!=-1&&tinyMCE.getParam('convert_urls')){var
m=new
RegExp("url\\('(.*?)'\\)").exec(val);if(m.length>1)val="url('"+eval(tinyMCE.getParam('urlconverter_callback')+"(m[1],
null,
true);")+"')"}if(tinyMCE.getParam("force_hex_style_colors"))val=tinyMCE.convertRGBToHex(val,true);if(val!="url('')")str+=key.toLowerCase()+":
"+val+"; "}}if(new RegExp(';
$').test(str))str=str.substring(0,str.length-2);return
str};TinyMCE_Engine.prototype.convertRGBToHex=function(s,k){if(s.toLowerCase().indexOf('rgb')!=-1){var
re=new
RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)","gi");var
rgb=s.replace(re,"$1,$2,$3,$4,$5").split(',');if(rgb.length==5){r=parseInt(rgb[1]).toString(16);g=parseInt(rgb[2]).toString(16);b=parseInt(rgb[3]).toString(16);r=r.length==1?'0'+r:r;g=g.length==1?'0'+g:g;b=b.length==1?'0'+b:b;s!
="#"+r+g+b;if(k)s=rgb[0]+s+rgb[4]}}return
s};TinyMCE_Engine.prototype.convertHexToRGB=function(s){if(s.indexOf('#')!=-1){s=s.replace(new
RegExp('[^0-9A-F]','gi'),'');return"rgb("+parseInt(s.substring(0,2),16)+","+parseInt(s.substring(2,4),16)+","+parseInt(s.substring(4,6),16)+")"}return
s};TinyMCE_Engine.prototype.convertSpansToFonts=function(doc){var
sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var
h=doc.body.innerHTML;h=h.replace(/<span/gi,'<font');h=h.replace(/<\/span/gi,'</font');tinyMCE.setInnerHTML(doc.body,h);var
s=doc.getElementsByTagName("font");for(var i=0;i<s.length;i++){var
size=tinyMCE.trim(s[i].style.fontSize).toLowerCase();var fSize=0;for(var
x=0;x<sizes.length;x++){if(sizes[x]==size){fSize=x+1;break}}if(fSize>0){tinyMCE.setAttrib(s[i],'size',fSize);s[i].style.fontSize=''}var
fFace=s[i].style.fontFamily;if(fFace!=null&&fFace!=""){tinyMCE.setAttrib(s[i],'face',fFace);s[i].style.fontFamily=''}var
fColor=s[i].style.color;if(fColo!
r!=null&&fColor!=""){tinyMCE.setAttrib(s[i],'color',tinyMCE.convertRGB
ToHex(fColor));s[i].style.color=''}}};TinyMCE_Engine.prototype.convertFontsToSpans=function(doc){var
sizes=tinyMCE.getParam('font_size_style_values').replace(/\s+/,'').split(',');var
h=doc.body.innerHTML;h=h.replace(/<font/gi,'<span');h=h.replace(/<\/font/gi,'</span');tinyMCE.setInnerHTML(doc.body,h);var
fsClasses=tinyMCE.getParam('font_size_classes');if(fsClasses!='')fsClasses=fsClasses.replace(/\s+/,'').split(',');else
fsClasses=null;var s=doc.getElementsByTagName("span");for(var
i=0;i<s.length;i++){var
fSize,fFace,fColor;fSize=tinyMCE.getAttrib(s[i],'size');fFace=tinyMCE.getAttrib(s[i],'face');fColor=tinyMCE.getAttrib(s[i],'color');if(fSize!=""){fSize=parseInt(fSize);if(fSize>0&&fSize<8){if(fsClasses!=null)tinyMCE.setAttrib(s[i],'class',fsClasses[fSize-1]);else
s[i].style.fontSize=sizes[fSize-1]}s[i].removeAttribute('size')}if(fFace!=""){s[i].style.fontFamily=fFace;s[i].removeAttribute('face')}if(fColor!=""){s[i].style.color=fColor;s[i].removeAttribute('color')}}};TinyMCE!
_Engine.prototype.cleanupAnchors=function(doc){var
i,cn,x,an=doc.getElementsByTagName("a");for(i=an.length-1;i>=0;i--){if(tinyMCE.getAttrib(an[i],"name")!=""&&tinyMCE.getAttrib(an[i],"href")==""){cn=an[i].childNodes;for(x=cn.length-1;x>=0;x--)tinyMCE.insertAfter(cn[x],an[i])}}};TinyMCE_Engine.prototype.getContent=function(editor_id){if(typeof(editor_id)!="undefined")tinyMCE.getInstanceById(editor_id).select();if(tinyMCE.selectedInstance)return
tinyMCE.selectedInstance.getHTML();return
null};TinyMCE_Engine.prototype._fixListElements=function(d){var
nl,x,a=['ol','ul'],i,n,p,r=new
RegExp('^(OL|UL)$'),np;for(x=0;x<a.length;x++){nl=d.getElementsByTagName(a[x]);for(i=0;i<nl.length;i++){n=nl[i];p=n.parentNode;if(r.test(p.nodeName)){np=tinyMCE.prevNode(n,'LI');if(!np){np=d.createElement('li');np.innerHTML=' ';np.appendChild(n);p.insertBefore(np,p.firstChild)}else
np.appendChild(n)}}}};TinyMCE_Engine.prototype._fixTables=function(d){var
nl,i,n,p,np,x,t;nl=d.getElementsByTagName!
('table');for(i=0;i<nl.length;i++){n=nl[i];if((p=tinyMCE.getParentElem
ent(n,'p,div,h1,h2,h3,h4,h5,h6'))!=null){np=p.cloneNode(false);np.removeAttribute('id');t=n;while((n=n.nextSibling))np.appendChild(n);tinyMCE.insertAfter(np,p);tinyMCE.insertAfter(t,p)}}};TinyMCE_Engine.prototype._cleanupHTML=function(inst,doc,config,elm,visual,on_save,on_submit,inn){var
h,d,t1,t2,t3,t4,t5,c,s,nb;if(!tinyMCE.getParam('cleanup'))return
elm.innerHTML;on_save=typeof(on_save)=='undefined'?false:on_save;c=inst.cleanup;s=inst.settings;d=c.settings.debug;if(d)t1=new
Date().getTime();if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertFontsToSpans(doc);if(tinyMCE.getParam("fix_list_elements"))tinyMCE._fixListElements(doc);if(tinyMCE.getParam("fix_table_elements"))tinyMCE._fixTables(doc);tinyMCE._customCleanup(inst,on_save?"get_from_editor_dom":"insert_to_editor_dom",doc.body);if(d)t2=new
Date().getTime();c.settings.on_save=on_save;c.idCount=0;c.serializationId++;c.serializedNodes=new
Array();c.sourceIndex=-1;if(s.cleanup_serializer=="xml")h=c.serializeNodeA!
sXML(elm,inn);else h=c.serializeNodeAsHTML(elm,inn);if(d)t3=new
Date().getTime();nb=tinyMCE.getParam('entity_encoding')=='numeric'?' ':' ';h=h.replace(/<\/?(body|head|html)[^>]*>/gi,'');h=h.replace(new
RegExp('
(rowspan="1"|colspan="1")','g'),'');h=h.replace(/<p><hr
\/><\/p>/g,'<hr
/>');h=h.replace(/<p>( | )<\/p><hr
\/><p>( | )<\/p>/g,'<hr
/>');h=h.replace(/<td>\s*<br
\/>\s*<\/td>/g,'<td>'+nb+'</td>');h=h.replace(/<p>\s*<br
\/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<br
\/>$/,'');h=h.replace(/<br
\/><\/p>/g,'</p>');h=h.replace(/<p>\s*( | )\s*<br
\/>\s*( | )\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*( | )\s*<br
\/>\s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(/<p>\s*<br
\/>\s* \s*<\/p>/g,'<p>'+nb+'</p>');h=h.replace(new
RegExp('<a>(.*?)<\\/a>','g'),'$1');h=h.replace(/<p([^>]*)>\s*<\/p>/g,'<p$1>'+nb+'</p>');if(/^\s*(<br
\/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))h='';if(s.preformatted){h=h.replace(/!
^<pre>/,'');h=h.replace(/<\/pre>$/,'');h='<pre>'+h+'</pre>'}if(tinyMCE
.isGecko){h=h.replace(/<o:p _moz-userdefined=""
\/>/g,'');h=h.replace(/<td([^>]*)>\s*<br
\/>\s*<\/td>/g,'<td$1>'+nb+'</td>')}if(s.force_br_newlines)h=h.replace(/<p>( | )<\/p>/g,'<br
/>');h=tinyMCE._customCleanup(inst,on_save?"get_from_editor":"insert_to_editor",h);if(on_save){h=h.replace(new
RegExp('
?(mceItem[a-zA-Z0-9]*|'+s.visual_table_class+')','g'),'');h=h.replace(new
RegExp('
?class=""','g'),'')}if(s.remove_linebreaks&&!c.settings.indent)h=h.replace(/\n|\r/g,'
');if(d)t4=new
Date().getTime();if(on_save&&c.settings.indent)h=c.formatHTML(h);if(on_submit&&(s.encoding=="xml"||s.encoding=="html"))h=c.xmlEncode(h);if(d)t5=new
Date().getTime();if(c.settings.debug)tinyMCE.debug("Cleanup in ms:
Pre="+(t2-t1)+", Serialize: "+(t3-t2)+", Post: "+(t4-t3)+",
Format: "+(t5-t4)+", Sum: "+(t5-t1)+".");return h};function
TinyMCE_Cleanup(){this.isIE=(navigator.appName=="Microsoft Internet
Explorer");this.rules=tinyMCE.clearArray(new
Array());this.settings={indent_elements:'head!
,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',newline_before_elements:'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',newline_after_elements:'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',newline_before_after_elements:'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',indent_char:'\t',indent_levels:1,entity_encoding:'raw',valid_elements:'*[*]',entities:'',url_converter:'',invalid_elements:'',verify_html:false};this.vElements=tinyMCE.clearArray(new
Array());this.vElementsRe='';this.closeElementsRe=/^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;this.codeElementsRe=/^(SCRIPT|STYLE)$/;this.serializationId=0;this.mceAttribs={href:'mce_href',src:'mce_src',type:'mce_type'}}TinyMCE_Cleanup.prototype={init:function(s){var
n,a,i,ir,or,st;for(n in
s)this.settings[n]=s[n];s=this.settings;this.inRe=this._arrayToRe(s.indent_elements.split(','),'','^<(',')[^>]*');this.ouRe=this._arrayToR!
e(s.indent_elements.split(','),'','^<\\/(',')[^>]*');this.nlBeforeRe=t
his._arrayToRe(s.newline_before_elements.split(','),'gi','<(',')([^>]*)>');this.nlAfterRe=this._arrayToRe(s.newline_after_elements.split(','),'gi','<(',')([^>]*)>');this.nlBeforeAfterRe=this._arrayToRe(s.newline_before_after_elements.split(','),'gi','<(\\/?)(',')([^>]*)>');this.serializedNodes=[];if(s.invalid_elements!='')this.iveRe=this._arrayToRe(s.invalid_elements.toUpperCase().split(','),'g','^(',')$');else
this.iveRe=null;st='';for(i=0;i<s.indent_levels;i++)st+=s.indent_char;this.inStr=st;if(!s.verify_html){s.valid_elements='*[*]';s.extended_valid_elements=''}this.fillStr=s.entity_encoding=="named"?" ":" ";this.idCount=0},addRuleStr:function(s){var
r=this.parseRuleStr(s);var n;for(n in
r){if(r[n])this.rules[n]=r[n]}this.vElements=tinyMCE.clearArray(new Array());for(n in
this.rules){if(this.rules[n])this.vElements[this.vElements.length]=this.rules[n].tag}this.vElementsRe=this._arrayToRe(this.vElements,'')},isValid:function(n){this._setupRules();n=n.replace(/[^a!
-z0-9]+/gi,'').toUpperCase();return!tinyMCE.getParam('cleanup')||this.vElementsRe.test(n)},addChildRemoveRuleStr:function(s){var
x,y,p,i,t,tn,ta,cl,r;if(!s)return;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else
t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r="^(";cl=this.split(/\|/,p[1]);for(i=0;i<cl.length;i++){if(cl[i]=='%istrict')r+=tinyMCE.inlineStrict;else
if(cl[i]=='%itrans')r+=tinyMCE.inlineTransitional;else
if(cl[i]=='%istrict_na')r+=tinyMCE.inlineStrict.substring(2);else
if(cl[i]=='%itrans_na')r+=tinyMCE.inlineTransitional.substring(2);else
if(cl[i]=='%btrans')r+=tinyMCE.blockElms;else
if(cl[i]=='%strict')r+=tinyMCE.blockStrict;else
r+=(cl[i].charAt(0)!='#'?cl[i].toUpperCase():cl[i]);r+=(i!=cl.length-1?'|':'')}r+=')$';if(this.childRules==null)this.childRules=tinyMCE.clearArray(new
Array());this.childRules[tn[y]]=new
RegExp(r);if(p.length>1)this.childRules[tn[y]].wrapTag=p[2]!
}}},parseRuleStr:function(s){var ta,p,r,a,i,x,px,t,tn,y,av,or=tinyMCE.
clearArray(new Array()),dv;if(s==null||s.length==0)return
or;ta=s.split(',');for(x=0;x<ta.length;x++){s=ta[x];if(s.length==0)continue;p=this.split(/\[|\]/,s);if(p==null||p.length<1)t=s.toUpperCase();else
t=p[0].toUpperCase();tn=this.split('/',t);for(y=0;y<tn.length;y++){r={};r.tag=tn[y];r.forceAttribs=null;r.defaultAttribs=null;r.validAttribValues=null;px=r.tag.charAt(0);r.forceOpen=px=='+';r.removeEmpty=px=='-';r.fill=px=='#';r.tag=r.tag.replace(/\+|-|#/g,'');r.oTagName=tn[0].replace(/\+|-|#/g,'').toLowerCase();r.isWild=new
RegExp('\\*|\\?|\\+','g').test(r.tag);r.validRe=new
RegExp(this._wildcardToRe('^'+r.tag+'$'));if(p.length>1){r.vAttribsRe='^(';a=this.split(/\|/,p[1]);for(i=0;i<a.length;i++){t=a[i];if(t.charAt(0)=='!'){a[i]=t=t.substring(1);if(!r.reqAttribsRe)r.reqAttribsRe='\\s+('+t;else
r.reqAttribsRe+='|'+t}av=new
RegExp('(=|:|<)(.*?)$').exec(t);t=t.replace(new
RegExp('(=|:|<).*?$'),'');if(av&&av.length>0){if(av[0].charAt(0)==':'){if(!r.forceAttribs)r.forceAttribs=ti!
nyMCE.clearArray(new Array());r.forceAttribs[t.toLowerCase()]=av[0].substring(1)}else
if(av[0].charAt(0)=='='){if(!r.defaultAttribs)r.defaultAttribs=tinyMCE.clearArray(new
Array());dv=av[0].substring(1);r.defaultAttribs[t.toLowerCase()]=dv==""?"mce_empty":dv}else
if(av[0].charAt(0)=='<'){if(!r.validAttribValues)r.validAttribValues=tinyMCE.clearArray(new
Array());r.validAttribValues[t.toLowerCase()]=this._arrayToRe(this.split('?',av[0].substring(1)),'i')}}r.vAttribsRe+=''+t.toLowerCase()+(i!=a.length-1?'|':'');a[i]=t.toLowerCase()}if(r.reqAttribsRe)r.reqAttribsRe=new
RegExp(r.reqAttribsRe+')=\"','g');r.vAttribsRe+=')$';r.vAttribsRe=this._wildcardToRe(r.vAttribsRe);r.vAttribsReIsWild=new
RegExp('\\*|\\?|\\+','g').test(r.vAttribsRe);r.vAttribsRe=new
RegExp(r.vAttribsRe);r.vAttribs=a.reverse();}else{r.vAttribsRe='';r.vAttribs=tinyMCE.clearArray(new
Array());r.vAttribsReIsWild=false}or[r.tag]=r}}return
or},serializeNodeAsXML:function(n){var s,b;if(!this.xmlDoc){if(this.isIE){try!
{this.xmlDoc=new ActiveXObject('MSXML2.DOMDocument')}catch(e){}if(!thi
s.xmlDoc)try{this.xmlDoc=new ActiveXObject('Microsoft.XmlDom')}catch(e){}}else
this.xmlDoc=document.implementation.createDocument('','',null);if(!this.xmlDoc)alert("Error
XML Parser could not be
found.")}if(this.xmlDoc.firstChild)this.xmlDoc.removeChild(this.xmlDoc.firstChild);b=this.xmlDoc.createElement("html");b=this.xmlDoc.appendChild(b);this._convertToXML(n,b);if(this.isIE)return
this.xmlDoc.xml;else return new
XMLSerializer().serializeToString(this.xmlDoc)},_convertToXML:function(n,xn){var
xd,el,i,l,cn,at,no,hc=false;if(this._isDuplicate(n))return;xd=this.xmlDoc;switch(n.nodeType){case
1:hc=n.hasChildNodes();el=xd.createElement(n.nodeName.toLowerCase());at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&no.nodeValue)el.setAttribute(no.nodeName.toLowerCase(),no.nodeValue)}if(!hc&&!this.closeElementsRe.test(n.nodeName))el.appendChild(xd.createTextNode(""));xn=xn.appendChild(el);break;case
3:xn.appendChild(xd.createTextNode(n.nodeValue));return;case 8:xn!
.appendChild(xd.createComment(n.nodeValue));return}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)this._convertToXML(cn[i],xn)}},serializeNodeAsHTML:function(n,inn){var
en,no,h='',i,l,t,st,r,cn,va=false,f=false,at,hc,cr;this._setupRules();if(this._isDuplicate(n))return'';if(n.parentNode&&this.childRules!=null){cr=this.childRules[n.parentNode.nodeName];if(typeof(cr)!="undefined"&&!cr.test(n.nodeName)){st=true;t=null}}switch(n.nodeType){case
1:hc=n.hasChildNodes();if(st)break;if((tinyMCE.isRealIE)&&n.nodeName.indexOf('/')!=-1)break;if(this.vElementsRe.test(n.nodeName)&&(!this.iveRe||!this.iveRe.test(n.nodeName))&&!inn){va=true;r=this.rules[n.nodeName];if(!r){at=this.rules;for(no
in
at){if(at[no]&&at[no].validRe.test(n.nodeName)){r=at[no];break}}}en=r.isWild?n.nodeName.toLowerCase():r.oTagName;f=r.fill;if(r.removeEmpty&&!hc)return"";t='<'+en;if(r.vAttribsReIsWild){at=n.attributes;for(i=at.length-1;i>-1;i--){no=at[i];if(no.specified&&r.vAttribsRe.test(no.nodeName))t+=this._!
serializeAttribute(n,r,no.nodeName)}}else{for(i=r.vAttribs.length-1;i>
-1;i--)t+=this._serializeAttribute(n,r,r.vAttribs[i])}if(!this.settings.on_save){at=this.mceAttribs;for(no
in
at){if(at[no])t+=this._serializeAttribute(n,r,at[no])}}if(r.reqAttribsRe&&!t.match(r.reqAttribsRe))t=null;if(t!=null&&this.closeElementsRe.test(n.nodeName))return
t+'
/>';if(t!=null)h+=t+'>';if(this.isIE&&this.codeElementsRe.test(n.nodeName))h+=n.innerHTML}break;case
3:if(st)break;if(n.parentNode&&this.codeElementsRe.test(n.parentNode.nodeName))return
this.isIE?'':n.nodeValue;return this.xmlEncode(n.nodeValue);case
8:if(st)break;return"<!--"+this._trimComment(n.nodeValue)+"-->"}if(hc){cn=n.childNodes;for(i=0,l=cn.length;i<l;i++)h+=this.serializeNodeAsHTML(cn[i])}if(f&&!hc)h+=this.fillStr;if(t!=null&&va)h+='</'+en+'>';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,a!
n);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&&this.settings.url_converter.length!=0&&/^(src|href|longdesc)$/.test(an))av=eval(this.settings.url_converter+'(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);return"
"+an+"="+'"'+av+'"'}return""},formatHTML:function(h){var
s=this.settings,p='',i=0,li=0,o='',l;h=h.replace(/<pre([^>]*)>(.*?)<\/pre>/gi,function(a,b,c){c=c.replace(/<br\s*\/>/gi,'\n');return'<pre'+b+'>'+c+'</pre>'});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.l
ength>=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){var
cl=this;this._setupEntities();switch(this.settings.entity_encoding){case"raw":return
tinyMCE.xmlEncode(s);case"named":return s.replace(new
RegExp('[\u007F-\uFFFF<>&"\']','g'),function(c,b){b=cl.entities[c.charCodeAt(0)];return
b?'&'+b+';':c});case"numeric":return s.replace(new
RegExp('[\u007F-\uFFFF<>&"\']','g'),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<l;i++){if(c[i]!='')o[i]=c[i]}return
o},_trimComment:function(s){s=s.replace(new
RegExp('\\smce_src=\"[^\"]*\"','gi'),"");s=s.replace(new
RegExp('\\smce_href=\"[^\"]*\"','gi'),"");return
s},_getAttrib:function(e,n,d){if(typeof(d)=="undefined")d="";if(!e||e.nodeType!=1)return
d;var
v=e.getAttribute(n,0);if(n=="class"&&!v)v=e.className;if(this.isIE&&n=="http-equiv")v=e.httpEquiv;if(this.is!
IE&&e.nodeName=="FORM"&&n=="enctype"&&v=="application/x-www-form-urlencoded")v="";if(this.isIE&&e.nodeName=="INPUT"&&n=="size"&&v=="20")v="";if(this.isIE&&e.nodeName=="INPUT"&&n=="maxlength"&&v=="2147483647")v="";if(n=="style"&&!tinyMCE.isOpera)v=e.style.cssText;if(n=='style')v=tinyMCE.serializeStyle(tinyMCE.parseStyle(v));if(this.settings.on_save&&n.indexOf('on')!=-1&&this.settings.on_save&&v&&v!="")v=tinyMCE.cleanupEventStr(v);return(v&&v!="")?''+v:d},_urlConverter:function(c,n,v){if(!c.settings.on_save)return
tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href,v);else
if(tinyMCE.getParam('convert_urls'))return
eval(tinyMCE.settings.urlconverter_callback+"(v, n, true);");return
v},_arrayToRe:function(a,op,be,af){var
i,r;op=typeof(op)=="undefined"?"gi":op;be=typeof(be)=="undefined"?"^(":be;af=typeof(af)=="undefined"?")$":af;r=be;for(i=0;i<a.length;i++)r+=this._wildcardToRe(a[i])+(i!=a.length-1?"|":"");r+=af;return
new RegExp(r,op)},_wildcardToRe:function(s){s=s!
.replace(/\?/g,'(\\S?)');s=s.replace(/\+/g,'(\\S+)');s=s.replace(/\*/g
,'(\\S*)');return s},_setupEntities:function(){var
n,a,i,s=this.settings;if(!this.entitiesDone){if(s.entity_encoding=="named"){n=tinyMCE.clearArray(new
Array());a=this.split(',',s.entities);for(i=0;i<a.length;i+=2)n[a[i]]=a[i+1];this.entities=n}this.entitiesDone=true}},_setupRules:function(){var
s=this.settings;if(!this.rulesDone){this.addRuleStr(s.valid_elements);this.addRuleStr(s.extended_valid_elements);this.addChildRemoveRuleStr(s.valid_child_elements);this.rulesDone=true}},_isDuplicate:function(n){var
i;if(!this.settings.fix_content_duplication)return
false;if(tinyMCE.isRealIE&&n.nodeType==1){if(n.mce_serialized==this.serializationId)return
true;n.setAttribute('mce_serialized',this.serializationId)}else{for(i=0;i<this.serializedNodes.length;i++){if(this.serializedNodes[i]==n)return
true}this.serializedNodes[this.serializedNodes.length]=n}return
false}};TinyMCE_Engine.prototype.createTagHTML=function(tn,a,h){var
o='',f=tinyMCE.xmlEncode;o='<'+tn;if(a){for(n in a){if(type!
of(a[n])!='function'&&a[n]!=null)o+='
'+f(n)+'="'+f(''+a[n])+'"'}}o+=!h?'
/>':'>'+h+'</'+tn+'>';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<nl.length;i++){if(tinyMCE.getAttrib(nl[i],a).indexOf(v)!=-1)o[o.length]=nl[i]}return
o};TinyMCE_Engine.prototype.isBlockElement=function(n){return
n!=null&&n.nodeType==1&&this.blockRegExp.test(n.nodeName)};TinyMCE_Engine.prototype.getParentBlockElement=function(n,r){return
this.getParentNode(n,function(n){return tinyMCE.isBlockElement(n)},r);return
null};TinyMCE_Engine.prototype.insertAfter=function(n,r){if(r.!
nextSibling)r.parentNode.insertBefore(n,r.nextSibling);else r.parentNo
de.appendChild(n)};TinyMCE_Engine.prototype.setInnerHTML=function(e,h){var
i,nl,n;if(tinyMCE.isGecko){h=h.replace(/<strong/gi,'<b');h=h.replace(/<em(\/?)/gi,'<i');h=h.replace(/<em
/gi,'<i');h=h.replace(/<\/strong>/gi,'</b>');h=h.replace(/<\/em>/gi,'</i>')}if(tinyMCE.isRealIE){h=h.replace(/\s\/>/g,'>');h=h.replace(/<p([^>]*)>\u00A0?<\/p>/gi,'<p$1
mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s* \s*<\/p>/gi,'<p$1
mce_keep="true"> </p>');h=h.replace(/<p([^>]*)>\s+<\/p>/gi,'<p$1
mce_keep="true"> </p>');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));retu!
rn 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<nl.length;i++)e.parentNode.insertBefore(nl[i].cloneNode(true),e);e.parentNode.removeChild(e)}};TinyMCE_Engine.prototype._getElementById=function(id,d){var
e,i,j,f;if(typeof(d)=="undefined")d=document;e=d.getElementById(id);if(!e){f=d.forms;for(i=0;i<f.length;i++){for(j=0;j<f[i].elements.length;j++){if(f[i].elements[j].name==id){e=f[i].elements[j];break}}}}return
e};TinyMCE_Engine.prototype.getNodeTree=function(n,na,t,nn){return
this.selectNodes(n,function(n){return(!t||n.nodeType==t)&&(!nn||n.nodeName==nn)},na?na:new
Array())};TinyMCE_Engine.prototype.getParentElement=function(n,na,f,r){var re=na?new
RegExp('^('+na.toUpperCase().replace(/,/g,'|')+')$'):0,v;if(f&&typeof(f)=='string')return
this.getParentElement(n,na,function(no){return tin!
yMCE.getAttrib(no,f)!=''});return this.getParentNode(n,function(n){ret
urn((n.nodeType==1&&!re)||(re&&re.test(n.nodeName)))&&(!f||f(n))},r)};TinyMCE_Engine.prototype.getParentNode=function(n,f,r){while(n){if(n==r)return
null;if(f(n))return n;n=n.parentNode}return
null};TinyMCE_Engine.prototype.getAttrib=function(elm,name,dv){var
v;if(typeof(dv)=="undefined")dv="";if(!elm||elm.nodeType!=1)return
dv;v=elm.getAttribute(name);if(name=="class"&&!v)v=elm.className;if(tinyMCE.isGecko&&name=="src"&&elm.src!=null&&elm.src!="")v=elm.src;if(tinyMCE.isGecko&&name=="href"&&elm.href!=null&&elm.href!="")v=elm.href;if(name=="http-equiv"&&tinyMCE.isIE)v=elm.httpEquiv;if(name=="style"&&!tinyMCE.isOpera)v=elm.style.cssText;return(v&&v!="")?v:dv};TinyMCE_Engine.prototype.setAttrib=function(el,name,va,fix){if(typeof(va)=="number"&&va!=null)va=""+va;if(fix){if(va==null)va="";va=va.replace(/[^0-9%]/g,'')}if(name=="style")el.style.cssText=va;if(name=="class")el.className=va;if(va!=null&&va!=""&&va!=-1)el.setAttribute(name,va);else
el.removeAttribute(name)};TinyMCE_Eng!
ine.prototype.setStyleAttrib=function(e,n,v){e.style[n]=v;if(tinyMCE.isIE&&v==null||v==''){v=tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));e.style.cssText=v;e.setAttribute("style",v)}};TinyMCE_Engine.prototype.switchClass=function(ei,c){var
e;if(tinyMCE.switchClassCache[ei])e=tinyMCE.switchClassCache[ei];else
e=tinyMCE.switchClassCache[ei]=document.getElementById(ei);if(e){if(tinyMCE.settings.button_tile_map&&e.className&&e.className.indexOf('mceTiledButton')==0)c='mceTiledButton
'+c;e.className=c}};TinyMCE_Engine.prototype.getAbsPosition=function(n,cn){var
l=0,t=0;while(n&&n!=cn){l+=n.offsetLeft;t+=n.offsetTop;n=n.offsetParent}return{absLeft:l,absTop:t}};TinyMCE_Engine.prototype.prevNode=function(e,n){var
a=n.split(','),i;while((e=e.previousSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==a[i])return
e}}return null};TinyMCE_Engine.prototype.nextNode=function(e,n){var
a=n.split(','),i;while((e=e.nextSibling)!=null){for(i=0;i<a.length;i++){if(e.nodeName==!
a[i])return e}}return null};TinyMCE_Engine.prototype.selectElements=fu
nction(n,na,f){var
i,a=[],nl,x;for(x=0,na=na.split(',');x<na.length;x++)for(i=0,nl=n.getElementsByTagName(na[x]);i<nl.length;i++)(!f||f(nl[i]))&&a.push(nl[i]);return
a};TinyMCE_Engine.prototype.selectNodes=function(n,f,a){var i;if(!a)a=new
Array();if(f(n))a[a.length]=n;if(n.hasChildNodes()){for(i=0;i<n.childNodes.length;i++)tinyMCE.selectNodes(n.childNodes[i],f,a)}return
a};TinyMCE_Engine.prototype.addCSSClass=function(e,c,b){var
o=this.removeCSSClass(e,c);return e.className=b?c+(o!=''?('
'+o):''):(o!=''?(o+'
'):'')+c};TinyMCE_Engine.prototype.removeCSSClass=function(e,c){c=e.className.replace(new
RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return
e.className=c!='
'?c:''};TinyMCE_Engine.prototype.hasCSSClass=function(n,c){return new
RegExp('\\b'+c+'\\b','g').test(n.className)};TinyMCE_Engine.prototype.renameElement=function(e,n,d){var
ne,i,ar;d=typeof(d)=="undefined"?tinyMCE.selectedInstance.getDoc():d;if(e){ne=d.createElement(n);ar=e.attributes;for(i=ar.length-1;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<ar.length;i++)ne.appendChild(ar[i].cloneNode(true));e.parentNode.replaceChild(ne,e)}};TinyMCE_Engine.prototype.getViewPort=function(w){var
d=w.document,m=d.compatMode=='CSS1Compat',b=d.body,de=d.documentElement;return{left:w.pageXOffset||(m?de.scrollLeft:b.scrollLeft),top:w.pageYOffset||(m?de.scrollTop:b.scrollTop),width:w.innerWidth||(m?de.clientWidth:b.clientWidth),height:w.innerHeight||(m?de.clientHeight:b.clientHeight)}};TinyMCE_Engine.prototype.parseURL=function(url_str){var
urlParts=new Array();if(url_str){var
pos,lastPos;pos=url_str.indexOf('://');if(pos!=-1){urlParts['protocol']=url_str.substring(0,pos);lastPos=pos+3}for(var
i=lastPos;i<url_str.length;i++){var
chr=url_str.charAt(i);if(chr==':')break;if(chr=='/')break}pos=i;urlParts['host']=url_str.substring(lastPos,pos);urlParts['port']="";lastPos=pos;if(url_str.charAt(pos)==':'){pos=url_str.indexOf('/!
',lastPos);urlParts['port']=url_str.substring(lastPos+1,pos)}lastPos=p
os;pos=url_str.indexOf('?',lastPos);if(pos==-1)pos=url_str.indexOf('#',lastPos);if(pos==-1)pos=url_str.length;urlParts['path']=url_str.substring(lastPos,pos);lastPos=pos;if(url_str.charAt(pos)=='?'){pos=url_str.indexOf('#');pos=(pos==-1)?url_str.length:pos;urlParts['query']=url_str.substring(lastPos+1,pos)}lastPos=pos;if(url_str.charAt(pos)=='#'){pos=url_str.length;urlParts['anchor']=url_str.substring(lastPos+1,pos)}}return
urlParts};TinyMCE_Engine.prototype.serializeURL=function(up){var
o="";if(up['protocol'])o+=up['protocol']+"://";if(up['host'])o+=up['host'];if(up['port'])o+=":"+up['port'];if(up['path'])o+=up['path'];if(up['query'])o+="?"+up['query'];if(up['anchor'])o+="#"+up['anchor'];return
o};TinyMCE_Engine.prototype.convertAbsoluteURLToRelativeURL=function(base_url,url_to_relative){var
baseURL=this.parseURL(base_url);var targetURL=this.parseURL(url_to_relative);var
strTok1;var strTok2;var breakPoint=0;var outPath="";var
forceSlash=false;if(targetURL.path=="")targetURL!
.path="/";else
forceSlash=true;base_url=baseURL.path.substring(0,baseURL.path.lastIndexOf('/'));strTok1=base_url.split('/');strTok2=targetURL.path.split('/');if(strTok1.length>=strTok2.length){for(var
i=0;i<strTok1.length;i++){if(i>=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break}}}if(strTok1.length<strTok2.length){for(var
i=0;i<strTok2.length;i++){if(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<strTok2.length;i++){if(i!=(breakPoint-1))outPath+="/"+strTok2[i];else
outPath+=strTok2[i]}targetURL.protocol=null;targetURL.host=null;targetURL.port=null;targetURL.path=outPath==""&&forceSlash?"/":outPath;var
fileName=baseURL.path;var
pos;if((pos=fileName.lastIndexOf('/'))!=-1)fileName=fileName.substring(pos+1);if(fileName==targetURL.path&&targetURL.anchor!="")targetURL.path="";if(targetURL.path==""&&!targetURL.anchor)targ!
etURL.path=fileName!=""?fileName:"/";return
this.serializeURL(targetUR
L)};TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL=function(base_url,relative_url){var
baseURL=this.parseURL(base_url),baseURLParts,relURLParts;var
relURL=this.parseURL(relative_url);if(relative_url==""||relative_url.indexOf('://')!=-1||/^(mailto:|javascript:|#|\/)/.test(relative_url))return
relative_url;baseURLParts=baseURL['path'].split('/');relURLParts=relURL['path'].split('/');var
newBaseURLParts=new Array();for(var
i=baseURLParts.length-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.sli!
ce(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.pa!
rseURL(curl);var tmpUrlParts=tinyMCE.parseURL(tinyMCE.settings['docume
nt_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;i<elms.length;i++){src=tinyMCE.getAttrib(elms[i],'src');msrc=tinyMCE.getAttrib(elms[i],'mce_src');if(msrc!="")src=msrc;if(src!=""){src=tinyMCE.convertRe!
lativeToAbsoluteURL(tinyMCE.settings['base_href'],src);elms[i].setAttribute("src",src)}}elms=body.getElementsByTagName("a");for(i=0;i<elms.length;i++){href=tinyMCE.getAttrib(elms[i],'href');mhref=tinyMCE.getAttrib(elms[i],'mce_href');if(mhref!="")href=mhref;if(href&&href!=""){href=tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],href);elms[i].setAttribute("href",href)}}};TinyMCE_Engine.prototype.clearArray=function(a){var
n;for(n in a)a[n]=null;return a};TinyMCE_Engine.prototype.explode=function(d,s){var
ar=s.split(d),oar=new
Array(),i;for(i=0;i<ar.length;i++){if(ar[i]!="")oar[oar.length]=ar[i]}return
oar};TinyMCE_Engine.prototype._setEventsEnabled=function(node,state){var
evs,x,y,elms,i,event;var
events=['onfocus','onblur','onclick','ondblclick','onmousedown','onmouseup','onmouseover','onmousemove','onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];evs=tinyMCE.settings['event_elements'].split(',');for(y=0;y<evs.length;y++){elms=node.getElementsB!
yTagName(evs[y]);for(i=0;i<elms.length;i++){event="";for(x=0;x<events.
length;x++){if((event=tinyMCE.getAttrib(elms[i],events[x]))!=''){event=tinyMCE.cleanupEventStr(""+event);if(!state)event="return
true;"+event;else event=event.replace(/^return
true;/gi,'');elms[i].removeAttribute(events[x]);elms[i].setAttribute(events[x],event)}}}}};TinyMCE_Engine.prototype._eventPatch=function(editor_id){var
n,inst,win,e;if(typeof(tinyMCE)=="undefined")return
true;try{if(tinyMCE.selectedInstance){win=tinyMCE.selectedInstance.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}for(n
in
tinyMCE.instances){inst=tinyMCE.instances[n];if(!tinyMCE.isInstance(inst))continue;inst.select();win=inst.getWin();if(win&&win.event){e=win.event;if(!e.target)e.target=e.srcElement;TinyMCE_Engine.prototype.handleEvent(e);return}}}catch(ex){}};TinyMCE_Engine.prototype.findEvent=function(e){var
n,inst;if(e)return e;for(n in
tinyMCE.instances){inst=tinyMCE.instances[n];if(tinyMCE.isInstance(inst)&&inst.getWin(!
).event)return inst.getWin().event}return
null};TinyMCE_Engine.prototype.unloadHandler=function(){tinyMCE.triggerSave(true,true)};TinyMCE_Engine.prototype.addEventHandlers=function(inst){this.setEventHandlers(inst,1)};TinyMCE_Engine.prototype.setEventHandlers=function(inst,s){var
doc=inst.getDoc(),ie,ot,i,f=s?tinyMCE.addEvent:tinyMCE.removeEvent;ie=['keypress','keyup','keydown','click','mouseup','mousedown','controlselect','dblclick'];ot=['keypress','keyup','keydown','click','mouseup','mousedown','focus','blur','dragdrop'];inst.switchSettings();if(tinyMCE.isIE){for(i=0;i<ie.length;i++)f(doc,ie[i],TinyMCE_Engine.prototype._eventPatch)}else{for(i=0;i<ot.length;i++)f(doc,ot[i],tinyMCE.handleEvent);eval('try
{ doc.designMode = "On"; } catch(e)
{}');}};TinyMCE_Engine.prototype.onMouseMove=function(){var
inst,lh;if(tinyMCE.lastHover){lh=tinyMCE.lastHover;if(lh.className.indexOf('mceMenu')!=-1)tinyMCE._menuButtonEvent('out',lh);else
lh.className=lh.className;tinyMCE.lastHover=null!
}if(!tinyMCE.hasMouseMoved){inst=tinyMCE.selectedInstance;if(inst.isFo
cused){inst.undoBookmark=inst.selection.getBookmark();tinyMCE.hasMouseMoved=true}}};TinyMCE_Engine.prototype.cancelEvent=function(e){if(!e)return
false;if(tinyMCE.isIE){e.returnValue=false;e.cancelBubble=true}else{e.preventDefault();e.stopPropagation&&e.stopPropagation()}return
false};TinyMCE_Engine.prototype.addEvent=function(o,n,h){if(n!='unload'){function
clean(){var
ex;try{tinyMCE.removeEvent(o,n,h);tinyMCE.removeEvent(window,'unload',clean);o=n=h=null}catch(ex){}}tinyMCE.addEvent(window,'unload',clean)}if(o.attachEvent)o.attachEvent("on"+n,h);else
o.addEventListener(n,h,false)};TinyMCE_Engine.prototype.removeEvent=function(o,n,h){if(o.detachEvent)o.detachEvent("on"+n,h);else
o.removeEventListener(n,h,false)};TinyMCE_Engine.prototype.addSelectAccessibility=function(e,s,w){if(!s._isAccessible){s.onkeydown=tinyMCE.accessibleEventHandler;s.onblur=tinyMCE.accessibleEventHandler;s._isAccessible=true;s._win=w}return
false};TinyMCE_Engine.prototype.accessibleEventHandler=functi!
on(e){var win=this._win;e=tinyMCE.isIE?win.event:e;var
elm=tinyMCE.isIE?e.srcElement:e.target;if(e.type=="blur"){if(elm.oldonchange){elm.onchange=elm.oldonchange;elm.oldonchange=null}return
true}if(elm.nodeName=="SELECT"&&!elm.oldonchange){elm.oldonchange=elm.onchange;elm.onchange=null}if(e.keyCode==13||e.keyCode==32){elm.onchange=elm.oldonchange;elm.onchange();elm.oldonchange=null;tinyMCE.cancelEvent(e);return
false}return true};TinyMCE_Engine.prototype._resetIframeHeight=function(){var
ife;if(tinyMCE.isRealIE){ife=tinyMCE.selectedInstance.iframeElement;if(ife._oldHeight){ife.style.height=ife._oldHeight;ife.height=ife._oldHeight}}};function
TinyMCE_Selection(inst){this.instance=inst};TinyMCE_Selection.prototype={getSelectedHTML:function(){var
inst=this.instance;var e,r=this.getRng(),h;if(!r)return
null;e=document.createElement("body");if(r.cloneContents)e.appendChild(r.cloneContents());else
if(typeof(r.item)!='undefined'||typeof(r.htmlText)!='undefined')e.innerHTML=r.item?!
r.item(0).outerHTML:r.htmlText;else e.innerHTML=r.toString();h=tinyMCE
._cleanupHTML(inst,inst.contentDocument,inst.settings,e,e,false,true,false);if(tinyMCE.getParam("convert_fonts_to_spans"))tinyMCE.convertSpansToFonts(inst.getDoc());return
h},getSelectedText:function(){var inst=this.instance;var
d,r,s,t;if(tinyMCE.isIE){d=inst.getDoc();if(d.selection.type=="Text"){r=d.selection.createRange();t=r.text}else
t=''}else{s=this.getSel();if(s&&s.toString)t=s.toString();else
t=''}return t},getBookmark:function(simple){var inst=this.instance;var
rng=this.getRng();var doc=inst.getDoc(),b=inst.getBody();var sp,le,s,e,nl,i,si,ei,w;var
trng,sx,sy,xx=-999999999,vp=inst.getViewPort();sx=vp.left;sy=vp.top;if(tinyMCE.isSafari||tinyMCE.isOpera||simple)return{rng:rng,scrollX:sx,scrollY:sy};if(tinyMCE.isIE){if(rng.item){e=rng.item(0);nl=b.getElementsByTagName(e.nodeName);for(i=0;i<nl.length;i++){if(e==nl[i]){sp=i;break}}return{tag:e.nodeName,index:sp,scrollX:sx,scrollY:sy}}else{trng=doc.body.createTextRange();trng.moveToElementText(inst.getBody());trng.collapse!
(true);bp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(true);sp=Math.abs(trng.move('character',xx));trng=rng.duplicate();trng.collapse(false);le=Math.abs(trng.move('character',xx))-sp;return{start:sp-bp,length:le,scrollX:sx,scrollY:sy}}}if(tinyMCE.isGecko){s=this.getSel();e=this.getFocusElement();if(!s)return
null;if(e&&e.nodeName=='IMG'){return{start:-1,end:-1,index:sp,scrollX:sx,scrollY:sy}}if(s.anchorNode==s.focusNode&&s.anchorOffset==s.focusOffset){e=this._getPosText(b,s.anchorNode,s.focusNode);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+s.anchorOffset,end:e.end+s.focusOffset,scrollX:sx,scrollY:sy}}else{e=this._getPosText(b,rng.startContainer,rng.endContainer);if(!e)return{scrollX:sx,scrollY:sy};return{start:e.start+rng.startOffset,end:e.end+rng.endOffset,scrollX:sx,scrollY:sy}}}return
null},moveToBookmark:function(bookmark){var inst=this.instance;var
rng,nl,i,ex,b=inst.getBody(),sd;var doc=inst.getDoc();var win=inst.getWin();var s!
el=this.getSel();if(!bookmark)return false;if(tinyMCE.isSafari){sel.se
tBaseAndExtent(bookmark.rng.startContainer,bookmark.rng.startOffset,bookmark.rng.endContainer,bookmark.rng.endOffset);return
true}if(tinyMCE.isRealIE){if(bookmark.rng){try{bookmark.rng.select()}catch(ex){}return
true}win.focus();if(bookmark.tag){rng=b.createControlRange();nl=b.getElementsByTagName(bookmark.tag);if(nl.length>bookmark.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(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,s!
d.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=tr!
ue;if(inst.settings.auto_resize)inst.resizeToContent();if(tinyMCE.isRe
alIE){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.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);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();return
s.getRangeAt(0)},getFocusElement:function(){var inst=this.inst!
ance,doc,rng,sel,elm;if(tinyMCE.isRealIE){doc=inst.getDoc();rng=doc.se
lection.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]&&newHT!
ML!=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;i<this.undoLevels.length-1;i++)this.undoLevels[i]=this.undoLevels[i+1];this.undoLevels.length--;this.undoIndex--;}b=inst.undoBookmark;if(!b)b=inst.selection.getBookmark();this.undoIndex++;this.undoLevels[this.undoIndex]={content:newHTML,bookmark:b};ul=tinyMCE.undoLevels;for(i=tinyMCE.undoIndex+1;i<ul.length;i++){ur=ul[i].undoRedo;if(ur.undoIndex==ur.undoLevels.length-1)ur.undoIndex--;ur.undoLevels.length--}tinyMCE.undoLevels[tinyMCE.undoIndex++]=inst;tinyMCE.undoLevels.length=tinyMCE.undoIndex;this.undoLevels.length=this.undoIndex+1;return
true}return false},undo:function(){var
inst=this.instance;if(this.undoIndex>0){this.undoIndex--;tinyMCE.setInnerHTML(inst.getBody(),this.undoLevels[this.undoIndex].content);inst.repaint();if(inst!
.settings.custom_undo_redo_restore_selection)inst.selection.moveToBook
mark(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.getEle!
mentsByTagName("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<nodes.length;i++){if(!isEmptyHTML(nodes[i].nodeValue))return false}return
true}rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;startNode=direct?sel.anchorNode:sel.focusNode;startOffset=direct?sel.anchorOffset:sel.focusOffset;endNode=direct?sel.focusNode:sel.anchorNode;endOffset=direct?sel.focusOffset:sel.anchorOffset;startNode=startNode.nodeName=="BODY"?startNode.firstChild:startNode;endNode=endNode.nodeName=="BODY"?endNode.firstChild:endNode;startBlock=inst.getParentBlockElement(startNode);endBlock=inst.getParentBlockElement(!
endNode);if(startBlock&&new
RegExp('absolute|relative|static','gi').te
st(startBlock.style.position))startBlock=null;if(endBlock&&new
RegExp('absolute|relative|static','gi').test(endBlock.style.position))endBlock=null;if(startBlock!=null){blockName=startBlock.nodeName;if(blockName=="TD"||blockName=="TABLE"||(blockName=="DIV"&&new
RegExp('left|right','gi').test(startBlock.style.cssFloat)))blockName="P"}if(tinyMCE.getParentElement(startBlock,"OL,UL",null,body)!=null)return
false;if((startBlock!=null&&startBlock.nodeName=="TABLE")||(endBlock!=null&&endBlock.nodeName=="TABLE"))startBlock=endBlock=null;paraBefore=(startBlock!=null&&startBlock.nodeName==blockName)?startBlock.cloneNode(false):doc.createElement(blockName);paraAfter=(endBlock!=null&&endBlock.nodeName==blockName)?endBlock.cloneNode(false):doc.createElement(blockName);if(/^(H[1-6])$/.test(blockName))paraAfter=doc.createElement("p");startChop=startNode;endChop=endNode;node=startChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;startChop=node}while((node=node.previ!
ousSibling?node.previousSibling:node.parentNode));node=endChop;do{if(node==body||node.nodeType==9||tinyMCE.isBlockElement(node))break;endChop=node}while((node=node.nextSibling?node.nextSibling:node.parentNode));if(startChop.nodeName=="TD")startChop=startChop.firstChild;if(endChop.nodeName=="TD")endChop=endChop.lastChild;if(startBlock==null){rng.deleteContents();if(!tinyMCE.isSafari)sel.removeAllRanges();if(startChop!=rootElm&&endChop!=rootElm){rngBefore=rng.cloneRange();if(startChop==body)rngBefore.setStart(startChop,0);else
rngBefore.setStartBefore(startChop);paraBefore.appendChild(rngBefore.cloneContents());if(endChop.parentNode.nodeName==blockName)endChop=endChop.parentNode;rng.setEndAfter(endChop);if(endChop.nodeName!="#text"&&endChop.nodeName!="BODY")rngBefore.setEndAfter(endChop);contents=rng.cloneContents();if(contents.firstChild&&(contents.firstChild.nodeName==blockName||contents.firstChild.nodeName=="BODY"))paraAfter.innerHTML=contents.firstChild.innerHTML;else
par!
aAfter.appendChild(contents);if(isEmpty(paraBefore))paraBefore.innerHT
ML=" ";if(isEmpty(paraAfter))paraAfter.innerHTML=" ";rng.deleteContents();rngAfter.deleteContents();rngBefore.deleteContents();if(tinyMCE.isOpera){paraBefore.normalize();rngBefore.insertNode(paraBefore);paraAfter.normalize();rngBefore.insertNode(paraAfter)}else{paraAfter.normalize();rngBefore.insertNode(paraAfter);paraBefore.normalize();rngBefore.insertNode(paraBefore)}}else{body.innerHTML="<"+blockName+"> </"+blockName+"><"+blockName+"> </"+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=conten!
ts.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},_handle!
BackSpace: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.g!
etElement();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(){this.getElement().style.display='block';this.updateBlocker()},hide:function(){this.getElement().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.sty
le.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)}};function TinyMCE_Me!
nu(){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+='<span
class="mceMenuLine"></spa!
n>';h+='<table border="0" cellpadding="0"
cellspacing="0">';for(i=0;i<
m.length;i++){t=tinyMCE.xmlEncode(m[i].text);c=m[i].class_name?'
class="'+m[i].class_name+'"':'';switch(m[i].type){case'separator':h+='<tr
class="'+s.separator_class+'"><td>';break;case'title':h+='<tr
class="'+s.title_class+'"><td><span'+c+'>'+t+'</span>';break;case'disabled':h+='<tr
class="'+s.disabled_class+'"><td><span'+c+'>'+t+'</span>';break;default:h+='<tr><td><a
href="#" onclick="return tinyMCE.cancelEvent(event);"
onmousedown="return tinyMCE.cancelEvent(event);"
onmouseup="'+tinyMCE.xmlEncode(m[i].js)+';return
tinyMCE.cancelEvent(event);"><span'+c+'>'+t+'</span></a>'}h+='</td></tr>'}h+='</table>';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=a!
rguments,s=a[0],i,as='',r,o;for(i=1;i<a.length;i++)as+=(i>1?',':'')+'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<a.length;i++){m+=a[i];if(i<a.length-1)m+=',
'}if(l<1000)tinyMCE.log[l]="[debug] "+m};
\ No newline at end of file
Modified: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_popup.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_popup.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_popup.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,35 +1,288 @@
-// Get tinyMCE reference
-var win = window.opener ? window.opener : window.dialogArguments;
+// Some global instances, this will be filled later
+var tinyMCE = null, tinyMCELang = null;
-// Setup window openerer
-if (!window.opener)
- window.opener = win;
+function TinyMCE_Popup() {
+};
-var tinyMCE = win.tinyMCE;
-var tinyMCELang = win.tinyMCELang;
+TinyMCE_Popup.prototype = {
+ findWin : function(w) {
+ var c;
-// Setup title
-var re = new RegExp('{|\\\$|}', 'g');
-var title = document.title.replace(re, "");
-if (typeof tinyMCELang[title] != "undefined") {
- var divElm = document.createElement("div");
- divElm.innerHTML = tinyMCELang[title];
- document.title = divElm.innerHTML;
-}
+ // Check parents
+ c = w;
+ while (c && (c = c.parent) != null) {
+ if (typeof(c.tinyMCE) != "undefined")
+ return c;
+ }
-// Setup dir
-if (tinyMCELang['lang_dir'])
- document.dir = tinyMCELang['lang_dir'];
+ // Check openers
+ c = w;
+ while (c && (c = c.opener) != null) {
+ if (typeof(c.tinyMCE) != "undefined")
+ return c;
+ }
-function TinyMCEPlugin_onLoad() {
- document.body.innerHTML = tinyMCE.applyTemplate(document.body.innerHTML,
tinyMCE.windowArgs);
-}
+ // Try top
+ if (typeof(top.tinyMCE) != "undefined")
+ return top;
-// Add onload trigger
-if (tinyMCE.isMSIE)
- attachEvent("onload", TinyMCEPlugin_onLoad);
-else
- addEventListener("load", TinyMCEPlugin_onLoad, false);
+ return null;
+ },
-// Output Popup CSS class
-document.write('<link href="' + tinyMCE.getParam("popups_css")
+ '" rel="stylesheet" type="text/css">');
+ init : function() {
+ var win = window.opener ? window.opener : window.dialogArguments, c;
+ var inst;
+
+ if (!win)
+ win = this.findWin(window);
+
+ if (!win) {
+ alert("tinyMCE object reference not found from popup.");
+ return;
+ }
+
+ window.opener = win;
+ this.windowOpener = win;
+ this.onLoadEval = "";
+
+ // Setup parent references
+ tinyMCE = win.tinyMCE;
+ tinyMCELang = win.tinyMCELang;
+
+ inst = tinyMCE.selectedInstance;
+ this.isWindow = tinyMCE.getWindowArg('mce_inside_iframe', false) == false;
+ this.storeSelection = (tinyMCE.isRealIE) && !this.isWindow &&
tinyMCE.getWindowArg('mce_store_selection', true);
+
+ if (this.isWindow)
+ window.focus();
+
+ // Store selection
+ if (this.storeSelection)
+ inst.selectionBookmark = inst.selection.getBookmark(true);
+
+ // Setup dir
+ if (tinyMCELang['lang_dir'])
+ document.dir = tinyMCELang['lang_dir'];
+
+ // Setup title
+ var re = new RegExp('{|\\\$|}', 'g');
+ var title = document.title.replace(re, "");
+ if (typeof tinyMCELang[title] != "undefined") {
+ var divElm = document.createElement("div");
+ divElm.innerHTML = tinyMCELang[title];
+ document.title = divElm.innerHTML;
+
+ if (tinyMCE.setWindowTitle != null)
+ tinyMCE.setWindowTitle(window, divElm.innerHTML);
+ }
+
+ // Output Popup CSS class
+ document.write('<link href="' +
tinyMCE.getParam("popups_css") + '" rel="stylesheet"
type="text/css">');
+
+ 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('<link href="' + c + '"
rel="stylesheet" type="text/css">');
+ }
+
+ 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<elms.length; i++) {
+ if ((elms[i].type == "text" || elms[i].type == "textarea")
&& elms[i].getAttribute("dir") != "ltr")
+ elms[i].dir = dir;
+ }
+ }
+
+ if (body.style.display == 'none')
+ body.style.display = 'block';
+
+ // Execute real onload (Opera fix)
+ if (tinyMCEPopup.onLoadEval != "")
+ eval(tinyMCEPopup.onLoadEval);
+ },
+
+ executeOnLoad : function(str) {
+ if (tinyMCE.isOpera)
+ this.onLoadEval = str;
+ else
+ eval(str);
+ },
+
+ resizeToInnerSize : function() {
+ // Netscape 7.1 workaround
+ if (this.isWindow && tinyMCE.isNS71) {
+ window.resizeBy(0, 10);
+ return;
+ }
+
+ if (this.isWindow) {
+ var doc = document;
+ var body = doc.body;
+ var oldMargin, wrapper, iframe, nodes, dx, dy;
+
+ if (body.style.display == 'none')
+ body.style.display = 'block';
+
+ // Remove margin
+ oldMargin = body.style.margin;
+ body.style.margin = '0';
+
+ // Create wrapper
+ wrapper = doc.createElement("div");
+ wrapper.id = 'mcBodyWrapper';
+ wrapper.style.display = 'none';
+ wrapper.style.margin = '0';
+
+ // Wrap body elements
+ nodes = doc.body.childNodes;
+ for (var i=nodes.length-1; 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();
Modified: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_src.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_src.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/tiny_mce_src.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -1,2051 +1,5419 @@
-/**
- * $RCSfile$
- * $Revision$
- * $Date$
- *
- * @author Moxiecode
- * @copyright Copyright � 2004, Moxiecode Systems AB, All rights reserved.
- */
-function TinyMCE() {
+/* file:jscripts/tiny_mce/classes/TinyMCE_Engine.class.js */
+
+function TinyMCE_Engine() {
+ var ua;
+
+ this.majorVersion = "2";
+ this.minorVersion = "0.8";
+ this.releaseDate = "2006-10-23";
+
this.instances = new Array();
- this.stickyClassesLookup = 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 && (navigator.userAgent.indexOf('MSIE 5') !=
-1);
- this.isGecko = navigator.userAgent.indexOf('Gecko') != -1;
+ 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;
+};
- // Editor functions
- this.init = TinyMCE_init;
- this.addMCEControl = TinyMCE_addMCEControl;
- this.createMCEControl = TinyMCE_createMCEControl;
- this.triggerSave = TinyMCE_triggerSave;
- this._convertOnClick = TinyMCE__convertOnClick;
- this.resetForm = TinyMCE_resetForm;
- this.execCommand = TinyMCE_execCommand;
- this.execInstanceCommand = TinyMCE_execInstanceCommand;
- this._createIFrame = TinyMCE__createIFrame;
- this.setEditMode = TinyMCE_setEditMode;
- this.handleEvent = TinyMCE_handleEvent;
- this.setupContent = TinyMCE_setupContent;
- this.switchClass = TinyMCE_switchClass;
- this.restoreAndSwitchClass = TinyMCE_restoreAndSwitchClass;
- this.switchClassSticky = TinyMCE_switchClassSticky;
- this.restoreClass = TinyMCE_restoreClass;
- this.setClassLock = TinyMCE_setClassLock;
- this.onLoad = TinyMCE_onLoad;
- this.removeMCEControl = TinyMCE_removeMCEControl;
- this._initCleanup = TinyMCE__initCleanup;
- this._cleanupHTML = TinyMCE__cleanupHTML;
- this._cleanupAttribute = TinyMCE__cleanupAttribute;
- this._fixInlineStyles = TinyMCE__fixInlineStyles;
- this._cleanupElementName = TinyMCE__cleanupElementName;
- this._verifyClass = TinyMCE__verifyClass;
- this.cleanupNode = TinyMCE_cleanupNode;
- this.convertStringToXML = TinyMCE_convertStringToXML;
- this.insertLink = TinyMCE_insertLink;
- this.insertImage = TinyMCE_insertImage;
- this.getElementByAttributeValue = TinyMCE_getElementByAttributeValue;
- this.getElementsByAttributeValue = TinyMCE_getElementsByAttributeValue;
- this.getParentElement = TinyMCE_getParentElement;
- this.getParam = TinyMCE_getParam;
- this.getLang = TinyMCE_getLang;
- this.replaceVar = TinyMCE_replaceVar;
- this.replaceVars = TinyMCE_replaceVars;
- this.triggerNodeChange = TinyMCE_triggerNodeChange;
- this.parseURL = TinyMCE_parseURL;
- this.convertAbsoluteURLToRelativeURL = TinyMCE_convertAbsoluteURLToRelativeURL;
- this.updateContent = TinyMCE_updateContent;
- this._customCleanup = TinyMCE__customCleanup;
- this.getContent = TinyMCE_getContent;
- this.setContent = TinyMCE_setContent;
- this.importThemeLanguagePack = TinyMCE_importThemeLanguagePack;
- this.importPluginLanguagePack = TinyMCE_importPluginLanguagePack;
- this.applyTemplate = TinyMCE_applyTemplate;
- this.openWindow = TinyMCE_openWindow;
- this.handleVisualAid = TinyMCE_handleVisualAid;
- this.setAttrib = TinyMCE_setAttrib;
- this.getAttrib = TinyMCE_getAttrib;
- this._selectNode = TinyMCE__selectNode;
- this._getThemeFunction = TinyMCE__getThemeFunction;
- this._themeExecCommand = TinyMCE__themeExecCommand;
- this.getControlHTML = TinyMCE_getControlHTML;
- this._setHTML = TinyMCE__setHTML;
- this._getElementById = TinyMCE__getElementById;
- this._getInstanceById = TinyMCE__getInstanceById;
- this.getEditorId = TinyMCE_getEditorId;
- this.queryInstanceCommandValue = TinyMCE_queryInstanceCommandValue;
- this.queryInstanceCommandState = TinyMCE_queryInstanceCommandState;
- this.getWindowArg = TinyMCE_getWindowArg;
- this.getCSSClasses = TinyMCE_getCSSClasses;
- this.regexpReplace = TinyMCE_regexpReplace;
- this.cleanupEventStr = TinyMCE_cleanupEventStr;
-}
+TinyMCE_Engine.prototype = {
+ init : function(settings) {
+ var theme, nl, baseHREF = "", i;
-function TinyMCE_init(settings) {
- var theme;
+ // 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;
- // Check if valid browser has execcommand support
- if (typeof(document.execCommand) == 'undefined')
- return;
+ this.settings = settings;
- // Get script base path
- if (!tinyMCE.baseURL) {
- var elements = document.getElementsByTagName('script');
+ // Check if valid browser has execcommand support
+ if (typeof(document.execCommand) == 'undefined')
+ return;
- for (var i=0; i<elements.length; i++) {
- if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") != -1
|| elements[i].src.indexOf("tiny_mce_src.js") != -1)) {
- var src = elements[i].src;
+ // Get script base path
+ if (!tinyMCE.baseURL) {
+ var elements = document.getElementsByTagName('script');
- src = src.substring(0, src.lastIndexOf('/'));
+ // If base element found, add that infront of baseURL
+ nl = document.getElementsByTagName('base');
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].href)
+ baseHREF = nl[i].href;
+ }
- tinyMCE.baseURL = src;
- break;
+ for (var i=0; i<elements.length; i++) {
+ if (elements[i].src && (elements[i].src.indexOf("tiny_mce.js") !=
-1 || elements[i].src.indexOf("tiny_mce_dev.js") != -1 ||
elements[i].src.indexOf("tiny_mce_src.js") != -1 ||
elements[i].src.indexOf("tiny_mce_gzip") != -1)) {
+ var src = elements[i].src;
+
+ tinyMCE.srcMode = (src.indexOf('_src') != -1 || src.indexOf('_dev')
!= -1) ? '_src' : '';
+ tinyMCE.gzipMode = src.indexOf('_gzip') != -1;
+ src = src.substring(0, src.lastIndexOf('/'));
+
+ if (settings.exec_mode == "src" || settings.exec_mode ==
"normal")
+ tinyMCE.srcMode = settings.exec_mode == "src" ? '_src' :
'';
+
+ // Force it absolute if page has a base href
+ if (baseHREF != "" && src.indexOf('://') == -1)
+ tinyMCE.baseURL = baseHREF + src;
+ else
+ tinyMCE.baseURL = src;
+
+ break;
+ }
}
}
- }
- // Get document base path
- this.documentBasePath = document.location.href;
- if (this.documentBasePath.indexOf('?') != -1)
- this.documentBasePath = this.documentBasePath.substring(0,
this.documentBasePath.indexOf('?'));
- this.documentBasePath = this.documentBasePath.substring(0,
this.documentBasePath.lastIndexOf('/'));
+ // Get document base path
+ this.documentBasePath = document.location.href;
+ if (this.documentBasePath.indexOf('?') != -1)
+ this.documentBasePath = this.documentBasePath.substring(0,
this.documentBasePath.indexOf('?'));
+ this.documentURL = this.documentBasePath;
+ this.documentBasePath = this.documentBasePath.substring(0,
this.documentBasePath.lastIndexOf('/'));
- // If not HTTP absolute
- if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0) !=
'/') {
- // If site absolute
- tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
- }
+ // If not HTTP absolute
+ if (tinyMCE.baseURL.indexOf('://') == -1 && tinyMCE.baseURL.charAt(0)
!= '/') {
+ // If site absolute
+ tinyMCE.baseURL = this.documentBasePath + "/" + tinyMCE.baseURL;
+ }
- this.settings = settings;
- this.settings['mode'] = tinyMCE.getParam("mode", "none");
- this.settings['theme'] = tinyMCE.getParam("theme",
"default");
- this.settings['plugins'] = tinyMCE.getParam("plugins", "",
true);
- this.settings['language'] = tinyMCE.getParam("language",
"uk");
- this.settings['docs_language'] = tinyMCE.getParam("docs_language",
this.settings['language']);
- this.settings['elements'] = tinyMCE.getParam("elements",
"");
- this.settings['textarea_trigger'] =
tinyMCE.getParam("textarea_trigger", "mce_editable");
- this.settings['valid_elements'] = tinyMCE.getParam("valid_elements",
"a[name|href|target|title],strong/b[class],em/i[class],strike[class],u[class],p[class|align],ol,ul,li,br,img[class|src|border=0|alt|title|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],table[border=0|cellspacing|cellpadding|width|height|class|align],tr[class|rowspan],td[class|colspan|rowspan|width|height],div[class|align],span[class|align],pre[class|align],address[class|align],h1[class|align],h2[class|align],h3[class|align],h4[class|align],h5[class|align],h6[class|align],hr");
- this.settings['extended_valid_elements'] =
tinyMCE.getParam("extended_valid_elements", "");
- this.settings['invalid_elements'] =
tinyMCE.getParam("invalid_elements", "");
- this.settings['encoding'] = tinyMCE.getParam("encoding",
"");
- this.settings['urlconvertor_callback'] =
tinyMCE.getParam("urlconvertor_callback", "TinyMCE_convertURL");
- this.settings['save_callback'] = tinyMCE.getParam("save_callback",
"");
- this.settings['debug'] = tinyMCE.getParam("debug", false);
- this.settings['force_br_newlines'] =
tinyMCE.getParam("force_br_newlines", false);
- this.settings['add_form_submit_trigger'] =
tinyMCE.getParam("add_form_submit_trigger", true);
- this.settings['relative_urls'] = tinyMCE.getParam("relative_urls",
true);
- this.settings['remove_script_host'] =
tinyMCE.getParam("remove_script_host", true);
- this.settings['focus_alert'] = tinyMCE.getParam("focus_alert", true);
- this.settings['document_base_url'] =
tinyMCE.getParam("document_base_url", "" + document.location.href);
- this.settings['visual'] = tinyMCE.getParam("visual", true);
- this.settings['visual_table_style'] =
tinyMCE.getParam("visual_table_style", "border: 1px dashed #BBBBBB");
- this.settings['setupcontent_callback'] =
tinyMCE.getParam("setupcontent_callback", "");
- this.settings['fix_content_duplication'] =
tinyMCE.getParam("fix_content_duplication", true);
- this.settings['custom_undo_redo'] =
tinyMCE.getParam("custom_undo_redo", true);
- this.settings['custom_undo_redo_levels'] =
tinyMCE.getParam("custom_undo_redo_levels", -1);
- this.settings['custom_undo_redo_keyboard_shortcuts'] =
tinyMCE.getParam("custom_undo_redo_keyboard_shortcuts", true);
- this.settings['verify_css_classes'] =
tinyMCE.getParam("verify_css_classes", true);
- this.settings['trim_span_elements'] =
tinyMCE.getParam("trim_span_elements", true);
- this.settings['verify_html'] = tinyMCE.getParam("verify_html", true);
- this.settings['apply_source_formatting'] =
tinyMCE.getParam("apply_source_formatting", false);
- this.settings['directionality'] = tinyMCE.getParam("directionality",
"ltr");
- this.settings['auto_cleanup_word'] =
tinyMCE.getParam("auto_cleanup_word", true);
- this.settings['cleanup_on_startup'] =
tinyMCE.getParam("cleanup_on_startup", false);
- this.settings['inline_styles'] = tinyMCE.getParam("inline_styles",
false);
- this.settings['convert_newlines_to_brs'] =
tinyMCE.getParam("convert_newlines_to_brs", false);
- this.settings['auto_reset_designmode'] =
tinyMCE.getParam("auto_reset_designmode", false);
- this.settings['entities'] = tinyMCE.getParam("entities",
"160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,181,micro,183,middot,8226,bull,8230,hellip,8242,prime,8243,Prime,167,sect,182,para,223,szlig,8249,lsaquo,8250,rsaquo,171,laquo,187,raquo,8216,lsquo,8217,rsquo,8220,ldquo,8221,rdquo,8218,sbquo,8222,bdquo,60,lt,62,gt,8804,le,8805,ge,8211,ndash,8212,mdash,175,macr,8254,oline,164,curren,166,brvbar,168,uml,161,iexcl,191,iquest,710,circ,732,tilde,176,deg,8722,minus,177,plusmn,247,divide,8260,frasl,215,times,185,sup1,178,sup2,179,sup3,188,frac14,189,frac12,190,frac34,402,fnof,8747,int,8721,sum,8734,infin,8730,radic,8764,sim,8773,cong,8776,asymp,8800,ne,8801,equiv,8712,isin,8713,notin,8715,ni,8719,prod,8743,and,8744,or,172,not,8745,cap,8746,cup,8706,part,8704,forall,8707,exist,8709,empty,8711,nabla,8727,lowast,8733,prop,8736,ang,180,acute,184,cedil,170,ordf,186,ordm,8224,dagger,8225,Dagger,192,Agrave,193,Aacute,194,Acirc,195!
,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,216,Oslash,338,OElig,352,Scaron,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,376,Yuml,222,THORN,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,248,oslash,339,oelig,353,scaron,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,255,yuml,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,om!
icron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,
967,chi,968,psi,969,omega,8501,alefsym,982,piv,8476,real,977,thetasym,978,upsih,8472,weierp,8465,image,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8756,there4,8834,sub,8835,sup,8836,nsub,8838,sube,8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,173,shy");
- this.settings['cleanup_callback'] =
tinyMCE.getParam("cleanup_callback", "");
+ // Set default values on settings
+ this._def("mode", "none");
+ this._def("theme", "advanced");
+ this._def("plugins", "", true);
+ this._def("language", "en");
+ this._def("docs_language", this.settings['language']);
+ this._def("elements", "");
+ this._def("textarea_trigger", "mce_editable");
+ this._def("editor_selector", "");
+ this._def("editor_deselector", "mceNoEditor");
+ this._def("valid_elements",
"+a[id|style|rel|rev|charset|hreflang|dir|lang|tabindex|accesskey|type|name|href|target|title|class|onfocus|onblur|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup],-strong/-b[class|style],-em/-i[class|style],-strike[class|style],-u[class|style],#p[id|style|dir|class|align],-ol[class|style],-ul[class|style],-li[class|style],br,img[id|dir|lang|longdesc|usemap|style|class|src|onmouseover|onmouseout|border|alt=|title|hspace|vspace|width|height|align],-sub[style|class],-sup[style|class],-blockquote[dir|style],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|style|dir|id|lang|bgcolor|background|bordercolor],-tr[id|lang|dir|class|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor],tbody[id|class],thead[id|class],tfoot[id|class],#td[id|lang|dir|class|colspan|rowspan|width|height|align|valign|style|bgcolor|background|bordercolor|scope],-th[id|lang|dir|cl!
ass|colspan|rowspan|width|height|align|valign|style|scope],caption[id|lang|dir|class|style],-div[id|dir|class|align|style],-span[style|class|align],-pre[class|align|style],address[class|align|style],-h1[id|style|dir|class|align],-h2[id|style|dir|class|align],-h3[id|style|dir|class|align],-h4[id|style|dir|class|align],-h5[id|style|dir|class|align],-h6[id|style|dir|class|align],hr[class|style],-font[face|size|style|id|class|dir|color],dd[id|class|title|style|dir|lang],dl[id|class|title|style|dir|lang],dt[id|class|title|style|dir|lang],cite[title|id|class|style|dir|lang],abbr[title|id|class|style|dir|lang],acronym[title|id|class|style|dir|lang],del[title|id|class|style|dir|lang|datetime|cite],ins[title|id|class|style|dir|lang|datetime|cite]");
+ this._def("extended_valid_elements", "");
+ this._def("invalid_elements", "");
+ this._def("encoding", "");
+ this._def("urlconverter_callback",
tinyMCE.getParam("urlconvertor_callback",
"TinyMCE_Engine.prototype.convertURL"));
+ this._def("save_callback", "");
+ this._def("debug", false);
+ this._def("force_br_newlines", false);
+ this._def("force_p_newlines", true);
+ this._def("add_form_submit_trigger", true);
+ this._def("relative_urls", true);
+ this._def("remove_script_host", true);
+ this._def("focus_alert", true);
+ this._def("document_base_url", this.documentURL);
+ this._def("visual", true);
+ this._def("visual_table_class", "mceVisualAid");
+ this._def("setupcontent_callback", "");
+ this._def("fix_content_duplication", true);
+ this._def("custom_undo_redo", true);
+ this._def("custom_undo_redo_levels", -1);
+ this._def("custom_undo_redo_keyboard_shortcuts", true);
+ this._def("custom_undo_redo_restore_selection", true);
+ this._def("custom_undo_redo_global", false);
+ this._def("verify_html", true);
+ this._def("apply_source_formatting", false);
+ this._def("directionality", "ltr");
+ this._def("cleanup_on_startup", false);
+ this._def("inline_styles", false);
+ this._def("convert_newlines_to_brs", false);
+ this._def("auto_reset_designmode", true);
+ this._def("entities",
"39,#39,160,nbsp,161,iexcl,162,cent,163,pound,164,curren,165,yen,166,brvbar,167,sect,168,uml,169,copy,170,ordf,171,laquo,172,not,173,shy,174,reg,175,macr,176,deg,177,plusmn,178,sup2,179,sup3,180,acute,181,micro,182,para,183,middot,184,cedil,185,sup1,186,ordm,187,raquo,188,frac14,189,frac12,190,frac34,191,iquest,192,Agrave,193,Aacute,194,Acirc,195,Atilde,196,Auml,197,Aring,198,AElig,199,Ccedil,200,Egrave,201,Eacute,202,Ecirc,203,Euml,204,Igrave,205,Iacute,206,Icirc,207,Iuml,208,ETH,209,Ntilde,210,Ograve,211,Oacute,212,Ocirc,213,Otilde,214,Ouml,215,times,216,Oslash,217,Ugrave,218,Uacute,219,Ucirc,220,Uuml,221,Yacute,222,THORN,223,szlig,224,agrave,225,aacute,226,acirc,227,atilde,228,auml,229,aring,230,aelig,231,ccedil,232,egrave,233,eacute,234,ecirc,235,euml,236,igrave,237,iacute,238,icirc,239,iuml,240,eth,241,ntilde,242,ograve,243,oacute,244,ocirc,245,otilde,246,ouml,247,divide,248,oslash,249,ugrave,250,uacute,251,ucirc,252,uuml,253,yacute,254,thorn,25!
5,yuml,402,fnof,913,Alpha,914,Beta,915,Gamma,916,Delta,917,Epsilon,918,Zeta,919,Eta,920,Theta,921,Iota,922,Kappa,923,Lambda,924,Mu,925,Nu,926,Xi,927,Omicron,928,Pi,929,Rho,931,Sigma,932,Tau,933,Upsilon,934,Phi,935,Chi,936,Psi,937,Omega,945,alpha,946,beta,947,gamma,948,delta,949,epsilon,950,zeta,951,eta,952,theta,953,iota,954,kappa,955,lambda,956,mu,957,nu,958,xi,959,omicron,960,pi,961,rho,962,sigmaf,963,sigma,964,tau,965,upsilon,966,phi,967,chi,968,psi,969,omega,977,thetasym,978,upsih,982,piv,8226,bull,8230,hellip,8242,prime,8243,Prime,8254,oline,8260,frasl,8472,weierp,8465,image,8476,real,8482,trade,8501,alefsym,8592,larr,8593,uarr,8594,rarr,8595,darr,8596,harr,8629,crarr,8656,lArr,8657,uArr,8658,rArr,8659,dArr,8660,hArr,8704,forall,8706,part,8707,exist,8709,empty,8711,nabla,8712,isin,8713,notin,8715,ni,8719,prod,8721,sum,8722,minus,8727,lowast,8730,radic,8733,prop,8734,infin,8736,ang,8743,and,8744,or,8745,cap,8746,cup,8747,int,8756,there4,8764,sim,8773,cong,8776,asymp,880!
0,ne,8801,equiv,8804,le,8805,ge,8834,sub,8835,sup,8836,nsub,8838,sube,
8839,supe,8853,oplus,8855,otimes,8869,perp,8901,sdot,8968,lceil,8969,rceil,8970,lfloor,8971,rfloor,9001,lang,9002,rang,9674,loz,9824,spades,9827,clubs,9829,hearts,9830,diams,34,quot,38,amp,60,lt,62,gt,338,OElig,339,oelig,352,Scaron,353,scaron,376,Yuml,710,circ,732,tilde,8194,ensp,8195,emsp,8201,thinsp,8204,zwnj,8205,zwj,8206,lrm,8207,rlm,8211,ndash,8212,mdash,8216,lsquo,8217,rsquo,8218,sbquo,8220,ldquo,8221,rdquo,8222,bdquo,8224,dagger,8225,Dagger,8240,permil,8249,lsaquo,8250,rsaquo,8364,euro",
true);
+ this._def("entity_encoding", "named");
+ this._def("cleanup_callback", "");
+ this._def("add_unload_trigger", true);
+ this._def("ask", false);
+ this._def("nowrap", false);
+ this._def("auto_resize", false);
+ this._def("auto_focus", false);
+ this._def("cleanup", true);
+ this._def("remove_linebreaks", true);
+ this._def("button_tile_map", false);
+ this._def("submit_patch", true);
+ this._def("browsers", "msie,safari,gecko,opera", true);
+ this._def("dialog_type", "window");
+ this._def("accessibility_warnings", true);
+ this._def("accessibility_focus", true);
+ this._def("merge_styles_invalid_parents", "");
+ this._def("force_hex_style_colors", true);
+ this._def("trim_span_elements", true);
+ this._def("convert_fonts_to_spans", false);
+ this._def("doctype", '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">');
+ 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", false);
+ 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);
- // Setup baseHREF
- var baseHREF = tinyMCE.settings['document_base_url'];
- if (baseHREF.indexOf('?') != -1)
- baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
- this.settings['base_href'] = baseHREF.substring(0,
baseHREF.lastIndexOf('/')) + "/";
+ // Force strict loading mode to false on non Gecko browsers
+ if (this.isMSIE && !this.isOpera)
+ this.settings.strict_loading_mode = false;
- theme = this.settings['theme'];
+ // Browser check IE
+ if (this.isMSIE && this.settings['browsers'].indexOf('msie') ==
-1)
+ return;
- // Theme url
- this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
+ // Browser check Gecko
+ if (this.isGecko && this.settings['browsers'].indexOf('gecko')
== -1)
+ return;
- if (!tinyMCE.isMSIE)
- this.settings['force_br_newlines'] = false;
+ // Browser check Safari
+ if (this.isSafari &&
this.settings['browsers'].indexOf('safari') == -1)
+ return;
- if (tinyMCE.getParam("content_css", false)) {
- var cssPath = tinyMCE.getParam("content_css", "");
+ // Browser check Opera
+ if (this.isOpera && this.settings['browsers'].indexOf('opera')
== -1)
+ return;
- // Is relative
- if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
- this.settings['content_css'] = this.documentBasePath + "/" +
cssPath;
- else
- this.settings['content_css'] = cssPath;
- } else
- this.settings['content_css'] = tinyMCE.baseURL + "/themes/" + theme +
"/editor_content.css";
+ // 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 (tinyMCE.getParam("popups_css", false)) {
- var cssPath = tinyMCE.getParam("popups_css", "");
+ if (baseHREF.indexOf('://') == -1)
+ baseHREF = h + baseHREF;
- // 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 +
"/editor_popup.css";
+ tinyMCE.settings['document_base_url'] = baseHREF;
+ tinyMCE.settings['document_base_prefix'] = h;
+ }
- if (tinyMCE.getParam("editor_css", false)) {
- var cssPath = tinyMCE.getParam("editor_css", "");
+ // Trim away query part
+ if (baseHREF.indexOf('?') != -1)
+ baseHREF = baseHREF.substring(0, baseHREF.indexOf('?'));
- // Is relative
- if (cssPath.indexOf('://') == -1 && cssPath.charAt(0) != '/')
- this.settings['editor_css'] = this.documentBasePath + "/" +
cssPath;
- else
- this.settings['editor_css'] = cssPath;
- } else
- this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme +
"/editor_ui.css";
+ this.settings['base_href'] = baseHREF.substring(0,
baseHREF.lastIndexOf('/')) + "/";
- this.settings['ask'] = tinyMCE.getParam("ask", false);
+ 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:TINYMCE_UNIQUEURL();'; // Make unique URL non real
URL
+ this.uniqueTag = '<div id="mceTMPElement" style="display:
none">TMP</div>';
+ this.callbacks = new Array('onInit', 'getInfo',
'getEditorTemplate', 'setupContent', 'onChange',
'onPageLoad', 'handleNodeChange', 'initInstance',
'execCommand', 'getControlHTML', 'handleEvent',
'cleanup');
- if (tinyMCE.settings['debug']) {
- var msg = "Debug: \n";
+ // Theme url
+ this.settings['theme_href'] = tinyMCE.baseURL + "/themes/" + theme;
- 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";
+ if (!tinyMCE.isIE || tinyMCE.isOpera)
+ this.settings['force_br_newlines'] = false;
- alert(msg);
- }
+ if (tinyMCE.getParam("popups_css", false)) {
+ var cssPath = tinyMCE.getParam("popups_css", "");
- // Init HTML cleanup
- this._initCleanup();
+ // 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 (this.isMSIE)
- attachEvent("onload", TinyMCE_onLoad);
- else
- addEventListener("load", TinyMCE_onLoad, false);
+ if (tinyMCE.getParam("editor_css", false)) {
+ var cssPath = tinyMCE.getParam("editor_css", "");
- document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + tinyMCE.baseURL + '/themes/' +
this.settings['theme'] + '/editor_template.js"></script>');
- document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + tinyMCE.baseURL + '/langs/' +
this.settings['language'] + '.js"></script>');
- document.write('<link href="' + this.settings['editor_css'] +
'" rel="stylesheet" type="text/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";
+ }
- // Add theme plugins
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- if (this.settings['plugins'] != '') {
- for (var i=0; i<themePlugins.length; i++)
- document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + tinyMCE.baseURL + '/plugins/' +
themePlugins[i] + '/editor_plugin.js"></script>');
- }
-}
+ if (tinyMCE.settings['debug']) {
+ var msg = "Debug: \n";
-function TinyMCE_confirmAdd(e) {
- if (tinyMCE.isMSIE)
- var targetElement = event.srcElement;
- else
- var targetElement = e.target;
+ 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";
- var elementId = targetElement.name ? targetElement.name : targetElement.id;
+ alert(msg);
+ }
- if (!targetElement.getAttribute('mce_noask') &&
confirm(tinyMCELang['lang_edit_confirm']))
- tinyMCE.addMCEControl(targetElement, elementId,
tinyMCE.createMCEControl(tinyMCE.settings));
- else
- targetElement.setAttribute('mce_noask', 'true');
-}
+ // Only do this once
+ if (this.configs.length == 0) {
+ if (typeof(TinyMCECompressed) == "undefined") {
+ tinyMCE.addEvent(window, "DOMContentLoaded",
TinyMCE_Engine.prototype.onLoad);
-function TinyMCE_updateContent(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 instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
- if (instance.formElement == formElement) {
- tinyMCE._setHTML(instance.contentWindow.document, instance.formElement.value);
+ if (tinyMCE.isRealIE) {
+ if (document.body)
+ tinyMCE.addEvent(document.body, "readystatechange",
TinyMCE_Engine.prototype.onLoad);
+ else
+ tinyMCE.addEvent(document, "readystatechange",
TinyMCE_Engine.prototype.onLoad);
+ }
- if (!tinyMCE.isMSIE)
- instance.contentWindow.document.body.innerHTML =
tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings,
instance.contentWindow.document.body, instance.visualAid);
+ tinyMCE.addEvent(window, "load", TinyMCE_Engine.prototype.onLoad);
+ tinyMCE._addUnloadEvents();
+ }
}
- }
-}
-function TinyMCE_addMCEControl(replace_element, form_element_name, mce_control) {
- var editorId = "mce_editor_" + tinyMCE.idCounter++;
- mce_control.editorId = editorId;
- this.instances[editorId] = mce_control;
- mce_control.onAdd(replace_element, form_element_name);
-}
+ 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']);
-function TinyMCE_createMCEControl(settings) {
- return new TinyMCEControl(settings);
-}
+ // Add plugins
+ var p = tinyMCE.getParam('plugins', '', true, ',');
+ if (p.length > 0) {
+ for (var i=0; i<p.length; i++) {
+ if (p[i].charAt(0) != '-')
+ this.loadScript(tinyMCE.baseURL + '/plugins/' + p[i] +
'/editor_plugin' + tinyMCE.srcMode + '.js');
+ }
+ }
-function TinyMCE_triggerSave(skip_cleanup) {
- // Cleanup and set all form fields
- for (var instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
- tinyMCE.settings['preformatted'] = false;
+ // Setup entities
+ if (tinyMCE.getParam('entity_encoding') == 'named') {
+ settings['cleanup_entities'] = new Array();
+ var entities = tinyMCE.getParam('entities', '', true, ',');
+ for (var i=0; i<entities.length; i+=2)
+ settings['cleanup_entities']['c' + entities[i]] = entities[i+1];
+ }
- // Default to false
- if (typeof(skip_cleanup) == "undefined")
- skip_cleanup = false;
+ // Save away this config
+ settings['index'] = this.configs.length;
+ this.configs[this.configs.length] = settings;
- tinyMCE._setHTML(instance.contentWindow.document,
instance.contentWindow.document.body.innerHTML);
- var cleanedHTML = skip_cleanup ? instance.contentWindow.document.body.innerHTML :
tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings,
instance.contentWindow.document.body, this.visualAid, true);
+ // Start loading first one in chain
+ this.loadNextScript();
- //var cleanedHTML = tinyMCE._cleanupHTML(instance.contentWindow.document,
tinyMCE.settings, instance.contentWindow.document.body, false, true);
+ // Force flicker free CSS backgrounds in IE
+ if (this.isIE && !this.isOpera) {
+ try {
+ document.execCommand('BackgroundImageCache', false, true);
+ } catch (e) {
+ }
+ }
+ },
- if (tinyMCE.settings["encoding"] == "xml" ||
tinyMCE.settings["encoding"] == "html")
- cleanedHTML = tinyMCE.convertStringToXML(cleanedHTML);
+ _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);});
+ }
+ },
- if (tinyMCE.settings['save_callback'] != "")
- var content = eval(tinyMCE.settings['save_callback'] +
"(instance.formTargetElementId,cleanedHTML,instance.contentWindow.document.body);");
+ _def : function(key, def_val, t) {
+ var v = tinyMCE.getParam(key, def_val);
- // Use callback content if available
- if ((typeof(content) != "undefined") && content != null)
- cleanedHTML = content;
+ v = t ? v.replace(/\s+/g, "") : v;
- // Replace some weird entities (Bug: #1056343)
- cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "(", "(",
"gi");
- cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, ")", ")",
"gi");
- cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, ";", ";",
"gi");
- cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, """,
""", "gi");
- cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "^", "^",
"gi");
+ this.settings[key] = v;
+ },
-//alert(cleanedHTML);
- instance.formElement.value = cleanedHTML;
- }
-}
+ hasPlugin : function(n) {
+ return typeof(this.plugins[n]) != "undefined" && this.plugins[n] !=
null;
+ },
-function TinyMCE__convertOnClick(node) {
- // Skip on MSIE < 6+
- if (tinyMCE.isMSIE5)
- return;
+ addPlugin : function(n, p) {
+ var op = this.plugins[n];
- // Convert all onclick to mce_onclick
- var elms = node.getElementsByTagName("a");
- for (var i=0; i<elms.length; i++) {
- var onclick = elms[i].getAttribute('onclick');
- if (onclick && onclick != "") {
- elms[i].removeAttribute("onclick");
- elms[i].setAttribute("mce_onclick", tinyMCE.cleanupEventStr("" +
onclick));
- elms[i].onclick = null;
+ // 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.length; i++) {
+ if (this.loadedFiles[i] == url)
+ return;
}
- }
-}
-function TinyMCE_resetForm(e) {
- var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+ if (tinyMCE.settings.strict_loading_mode)
+ this.pendingFiles[this.pendingFiles.length] = url;
+ else
+ document.write('<sc'+'ript language="javascript"
type="text/javascript" src="' + url +
'"></script>');
- for (var instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
+ this.loadedFiles[this.loadedFiles.length] = url;
+ },
- for (var i=0; i<formObj.elements.length; i++) {
- if (instance.formTargetElementId == formObj.elements[i].name) {
- instance.contentWindow.document.body.innerHTML = instance.startContent;
- return;
+ 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<csslen; x++) {
+ if (ar[x] != null && ar[x] != 'null' && ar[x].length > 0)
{
+ /* Make sure it doesn't exist. */
+ for (i=0, lflen=this.loadedFiles.length; i<lflen; i++) {
+ if (this.loadedFiles[i] == ar[x]) {
+ skip = true;
+ break;
+ }
+ }
+
+ if (!skip) {
+ if (tinyMCE.settings.strict_loading_mode) {
+ nl = document.getElementsByTagName("head");
+
+ le = document.createElement('link');
+ le.setAttribute('href', ar[x]);
+ le.setAttribute('rel', 'stylesheet');
+ le.setAttribute('type', 'text/css');
+
+ nl[0].appendChild(le);
+ } else
+ document.write('<link href="' + ar[x] + '"
rel="stylesheet" type="text/css" />');
+
+ this.loadedFiles[this.loadedFiles.length] = ar[x];
+ }
}
}
- }
-}
+ },
-function TinyMCE_execInstanceCommand(editor_id, command, user_interface, value) {
- var mceControl = tinyMCE._getInstanceById(editor_id);
- if (mceControl) {
- mceControl.contentWindow.focus();
+ importCSS : function(doc, css) {
+ var css_ary = css.replace(/\s+/, '').split(',');
+ var csslen, elm, headArr, x, css_file;
- // Reset design mode if lost
- mceControl.autoResetDesignMode();
+ for (x = 0, csslen = css_ary.length; x<csslen; x++) {
+ css_file = css_ary[x];
- this.selectedElement = mceControl.getFocusElement();
- this.selectedInstance = mceControl;
- tinyMCE.execCommand(command, user_interface, value);
- }
-}
+ if (css_file != null && css_file != 'null' && css_file.length
> 0) {
+ // Is relative, make absolute
+ if (css_file.indexOf('://') == -1 && css_file.charAt(0) !=
'/')
+ css_file = this.documentBasePath + "/" + css_file;
-function TinyMCE_execCommand(command, user_interface, value) {
- // Command within editor instance?
-/* if (this.selectedInstance && tinyMCE.isMSIE) {
- var node = this.selectedInstance.getFocusElement();
- while (node = node.parentNode) {
- if (node.nodeName == "#document" &&
(node.location.href.indexOf('blank.htm') == -1)) {
- this.selectedInstance = null;
- break;
+ 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);
}
}
- }*/
+ },
- // Default input
- user_interface = user_interface ? user_interface : false;
- value = value ? value : null;
+ confirmAdd : function(e, settings) {
+ var elm = tinyMCE.isIE ? event.srcElement : e.target;
+ var elementId = elm.name ? elm.name : elm.id;
- switch (command) {
- case 'mceHelp':
- window.open(tinyMCE.themeURL + "/docs/" +
this.settings['docs_language'] + "/index.htm", "mceHelp",
"menubar=yes,toolbar=yes,scrollbars=yes,left=20,top=20,width=550,height=600");
- return;
+ tinyMCE.settings = settings;
- case 'mceFocus':
- var mceControl = tinyMCE._getInstanceById(value);
- if (mceControl)
- mceControl.contentWindow.focus();
- return;
+ if (tinyMCE.settings['convert_on_click'] ||
(!elm.getAttribute('mce_noask') &&
confirm(tinyMCELang['lang_edit_confirm'])))
+ tinyMCE.addMCEControl(elm, elementId);
- case "mceAddControl":
- case "mceAddEditor":
- tinyMCE.addMCEControl(tinyMCE._getElementById(value), value,
tinyMCE.createMCEControl(tinyMCE.settings));
- return;
+ elm.setAttribute('mce_noask', 'true');
+ },
- case "mceRemoveControl":
- case "mceRemoveEditor":
- tinyMCE.removeMCEControl(value);
- return;
+ 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;
- case "mceResetDesignMode":
- // Resets the designmode state of the editors in Gecko
- if (!tinyMCE.isMSIE) {
- for (var instanceName in tinyMCE.instances)
- tinyMCE.instances[instanceName].contentWindow.document.designMode = "on";
+ 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);
}
+ }
+ },
- return;
- }
+ addMCEControl : function(replace_element, form_element_name, target_document) {
+ var id = "mce_editor_" + tinyMCE.idCounter++;
+ var inst = new TinyMCE_Control(tinyMCE.settings);
- if (this.selectedInstance)
- this.selectedInstance.execCommand(command, user_interface, value);
- else if (tinyMCE.settings['focus_alert'])
- alert(tinyMCELang['lang_focus_alert']);
-}
+ inst.editorId = id;
+ this.instances[id] = inst;
-function TinyMCE_addEventHandlers(editor_id) {
- if (tinyMCE.isMSIE) {
- var patchFunc = function() {
- var event = document.frames[editor_id].event;
+ inst._onAdd(replace_element, form_element_name, target_document);
+ },
- event.target = event.srcElement;
- event.target.editor_id = editor_id;
+ removeInstance : function(ti) {
+ var t = [], n, i;
- TinyMCE_handleEvent(event);
- };
+ // Remove from instances
+ for (n in tinyMCE.instances) {
+ i = tinyMCE.instances[n];
- // Event patch
- document.frames[editor_id].document.onkeypress = patchFunc;
- document.frames[editor_id].document.onkeyup = patchFunc;
- document.frames[editor_id].document.onkeydown = patchFunc;
+ if (tinyMCE.isInstance(i) && ti != i)
+ t[n] = i;
+ }
- // Due to stange focus bug in MSIE this line is disabled for now
- //document.frames[editor_id].document.onmousedown = patchFunc;
- document.frames[editor_id].document.onmouseup = patchFunc;
- document.frames[editor_id].document.onclick = patchFunc;
- } else {
- var instance = tinyMCE.instances[editor_id];
+ tinyMCE.instances = t;
- instance.contentWindow.document.editor_id = editor_id;
- instance.contentWindow.document.addEventListener("keypress",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("keydown",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("keyup",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("click",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("mouseup",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("mousedown",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.addEventListener("focus",
tinyMCE.handleEvent, false);
- instance.contentWindow.document.designMode = "on";
- }
-}
+ // Remove from global undo/redo
+ n = [];
+ t = tinyMCE.undoLevels;
+ for (i=0; i<t.length; i++) {
+ if (t[i] != ti)
+ n.push(t[i]);
+ }
-function TinyMCE__createIFrame(replace_element) {
- var iframe = document.createElement("iframe");
- var id = replace_element.getAttribute("id");
+ tinyMCE.undoLevels = n;
+ tinyMCE.undoIndex = n.length;
- iframe.setAttribute("id", id);
- iframe.setAttribute("className", "mceEditorArea");
- 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", tinyMCE.settings['area_width']);
- iframe.setAttribute("height", tinyMCE.settings['area_height']);
+ return ti;
+ },
- // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
- if (tinyMCE.isMSIE)
- iframe.setAttribute("src", this.settings['default_document']);
+ removeMCEControl : function(editor_id) {
+ var inst = tinyMCE.getInstanceById(editor_id), h, re, ot, tn;
- iframe.style.width = tinyMCE.settings['area_width'];
- iframe.style.height = tinyMCE.settings['area_height'];
+ if (inst) {
+ inst.switchSettings();
- // MSIE 5.0 issue
- if (tinyMCE.isMSIE)
- replace_element.outerHTML = iframe.outerHTML;
- else
- replace_element.parentNode.replaceChild(iframe, replace_element);
+ editor_id = inst.editorId;
+ h = tinyMCE.getContent(editor_id);
- if (tinyMCE.isMSIE)
- return window.frames[id];
- else
- return iframe;
-}
+ this.removeInstance(inst);
-function TinyMCE_setEditMode(editor_id, mode) {
- var targetMCEControl = this.instances[editor_id];
- var dynamicIFrame = false;
+ tinyMCE.selectedElement = null;
+ tinyMCE.selectedInstance = null;
- if (!this.isMSIE) {
- var targetElement = document.getElementById(editor_id);
- if (targetElement && targetElement.nodeName.toLowerCase() == "span")
{
- targetElement = tinyMCE._createIFrame(targetElement);
- dynamicIFrame = true;
+ // Remove element
+ re = document.getElementById(editor_id + "_parent");
+ ot = inst.oldTargetElement;
+ tn = ot.nodeName.toLowerCase();
+
+ if (tn == "textarea" || tn == "input") {
+ re.parentNode.removeChild(re);
+ ot.style.display = "inline";
+ ot.value = h;
+ } else {
+ ot.innerHTML = h;
+ ot.style.display = 'block';
+ re.parentNode.insertBefore(ot, re);
+ re.parentNode.removeChild(re);
+ }
}
+ },
- targetMCEControl.targetElement = targetElement;
- targetMCEControl.contentDocument = targetElement.contentDocument;
- targetMCEControl.contentWindow = targetElement.contentWindow;
+ triggerSave : function(skip_cleanup, skip_callback) {
+ var inst, n;
- //targetMCEControl.contentWindow.document.designMode = mode ? "on" :
"off";
- } else {
- var targetElement = document.getElementById(editor_id);
- if (targetElement && targetElement.nodeName.toLowerCase() == "span")
- targetElement = tinyMCE._createIFrame(targetElement);
- else
- targetElement = document.frames[editor_id];
+ // Default to false
+ if (typeof(skip_cleanup) == "undefined")
+ skip_cleanup = false;
- targetMCEControl.targetElement = targetElement;
- targetMCEControl.contentDocument = targetElement.window.document;
- targetMCEControl.contentWindow = targetElement.window;
+ // Default to false
+ if (typeof(skip_callback) == "undefined")
+ skip_callback = false;
- targetMCEControl.contentDocument.designMode = mode ? "on" : "off";
- }
+ // Cleanup and set all form fields
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
- // Setup base HTML
- var doc = targetMCEControl.contentDocument;
- if (dynamicIFrame) {
- var html = ""
- + '<!doctype html public "-//w3c//dtd html 4.0
transitional//en">'
- + '<html>'
- + '<head>'
- + '<title>blank_page</title>'
- + '<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8">'
- + '</head>'
- + '<body>'
- + '</body>'
- + '</html>';
+ if (!tinyMCE.isInstance(inst))
+ continue;
- try {
- targetMCEControl.contentWindow.document.designMode = "on";
- doc.open();
- doc.write(html);
- doc.close();
- } catch (e) {
- // Failed Mozilla 1.3
- targetMCEControl.contentWindow.document.location.href = tinyMCE.baseURL +
"/blank.htm";
+ inst.triggerSave(skip_cleanup, skip_callback);
}
- }
+ },
- // This timeout is needed in MSIE 5.5 for some odd reason
- // it seems that the document.frames isn't initialized yet?
- if (tinyMCE.isMSIE)
- window.setTimeout("TinyMCE_addEventHandlers('" + editor_id +
"');", 1);
+ resetForm : function(form_index) {
+ var i, inst, n, formObj = document.forms[form_index];
- //window.setTimeout("tinyMCE.setupContent('" + editor_id +
"');", (tinyMCE.isMSIE ? 1 : 1000));
- tinyMCE.setupContent(editor_id);
-}
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
-function TinyMCE_setupContent(editor_id) {
- var instance = tinyMCE.instances[editor_id];
- var doc = instance.contentWindow.document;
- var head = doc.getElementsByTagName('head').item(0);
+ if (!tinyMCE.isInstance(inst))
+ continue;
- // Not loaded correctly hit it again, Mozilla bug #997860
- if (!tinyMCE.isMSIE && doc.title != "blank_page") {
- // This part will remove the designMode status
- doc.location.href = tinyMCE.baseURL + "/blank.htm";
- window.setTimeout("tinyMCE.setupContent('" + editor_id +
"');", 1000);
- return;
- }
+ inst.switchSettings();
- if (!head) {
- window.setTimeout("tinyMCE.setupContent('" + editor_id +
"');", 10);
- return;
- }
+ for (i=0; i<formObj.elements.length; i++) {
+ if (inst.formTargetElementId == formObj.elements[i].name)
+ inst.getBody().innerHTML = inst.startContent;
+ }
+ }
+ },
- doc.body.dir = this.settings['directionality'];
- doc.editorId = editor_id;
+ execInstanceCommand : function(editor_id, command, user_interface, value, focus) {
+ var inst = tinyMCE.getInstanceById(editor_id), r;
- // Add on document element in Mozilla
- if (!tinyMCE.isMSIE)
- doc.documentElement.editorId = editor_id;
+ if (inst) {
+ r = inst.selection.getRng();
- // Setup base element
- base = doc.createElement("base");
- base.setAttribute('href', tinyMCE.settings['base_href']);
- head.appendChild(base);
+ if (typeof(focus) == "undefined")
+ focus = true;
- var oldElement = instance.oldTargetElement;
- if (oldElement.nodeName.toLowerCase() == "textarea")
- var content = oldElement.value;
- else
- var content = instance.oldTargetElement.innerHTML;
+ // IE bug lost focus on images in absolute divs Bug #1534575
+ if (focus && (!r || !r.item))
+ inst.contentWindow.focus();
- instance.startContent = content;
+ // Reset design mode if lost
+ inst.autoResetDesignMode();
- // Replace new line characters to BRs
- if (tinyMCE.settings['convert_newlines_to_brs']) {
- content = tinyMCE.regexpReplace(content, "\r\n", "<br />",
"gi");
- content = tinyMCE.regexpReplace(content, "\r", "<br />",
"gi");
- content = tinyMCE.regexpReplace(content, "\n", "<br />",
"gi");
- }
+ this.selectedElement = inst.getFocusElement();
+ inst.select();
+ tinyMCE.execCommand(command, user_interface, value);
- // Call custom cleanup code
- content = tinyMCE._customCleanup("insert_to_editor", content);
+ // Cancel event so it doesn't call onbeforeonunlaod
+ if (tinyMCE.isIE && window.event != null)
+ tinyMCE.cancelEvent(window.event);
+ }
+ },
- if (tinyMCE.isMSIE) {
- var styleSheet =
document.frames[editor_id].document.createStyleSheet(instance.settings['content_css']);
+ execCommand : function(command, user_interface, value) {
+ var inst = tinyMCE.selectedInstance;
- // Ugly!!!
- window.setInterval('try{tinyMCE.getCSSClasses(document.frames["' +
editor_id + '"].document, "' + editor_id +
'");}catch(e){}', 500);
+ // Default input
+ user_interface = user_interface ? user_interface : false;
+ value = value ? value : null;
- if (tinyMCE.settings["force_br_newlines"])
- document.frames[editor_id].document.styleSheets[0].addRule("p",
"margin: 0px;");
+ if (inst)
+ inst.switchSettings();
- var patchFunc = function() {
- var event = document.frames[editor_id].event;
- event.target = document.frames[editor_id].document;
+ switch (command) {
+ case "Undo":
+ if (this.getParam('custom_undo_redo_global')) {
+ if (this.undoIndex > 0) {
+ tinyMCE.nextUndoRedoAction = 'Undo';
+ inst = this.undoLevels[--this.undoIndex];
+ inst.select();
- TinyMCE_handleEvent(event);
- };
+ if (!tinyMCE.nextUndoRedoInstanceId)
+ inst.execCommand('Undo');
+ }
+ } else
+ inst.execCommand('Undo');
+ return true;
- document.frames[editor_id].document.body.onbeforepaste = patchFunc;
- document.frames[editor_id].document.body.onbeforecut = patchFunc;
- document.frames[editor_id].document.body.onpaste = patchFunc;
+ 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();
- document.frames[editor_id].document.body.editorId = editor_id;
- } else {
- var targetDocument = document.getElementById(editor_id).contentWindow.document;
+ if (!tinyMCE.nextUndoRedoInstanceId)
+ inst.execCommand('Redo');
+ }
+ } else
+ inst.execCommand('Redo');
- // Import editor css
- var cssImporter = targetDocument.createElement("link");
- cssImporter.rel = "stylesheet";
- cssImporter.href = instance.settings['content_css'];
- if (headArr = targetDocument.getElementsByTagName("head"));
- headArr[0].appendChild(cssImporter);
- }
+ return true;
- // Fix for bug #958637
- if (!tinyMCE.isMSIE) {
- if (tinyMCE.settings['cleanup_on_startup']) {
- var contentElement = instance.contentWindow.document.createElement("body");
- contentElement.innerHTML = content;
- instance.contentWindow.document.body.innerHTML =
tinyMCE._cleanupHTML(instance.contentWindow.document, this.settings, contentElement);
- } else {
- var contentElement = instance.contentWindow.document.createElement("body");
- var doc = instance.contentWindow.document;
+ case 'mceFocus':
+ var inst = tinyMCE.getInstanceById(value);
+ if (inst)
+ inst.getWin().focus();
+ return;
- // Convert all strong/em to b/i
- content = tinyMCE.regexpReplace(content, "<strong", "<b",
"gi");
- content = tinyMCE.regexpReplace(content, "<em", "<i",
"gi");
- content = tinyMCE.regexpReplace(content, "</strong>",
"</b>", "gi");
- content = tinyMCE.regexpReplace(content, "</em>",
"</i>", "gi");
- contentElement.innerHTML = content;
+ case "mceAddControl":
+ case "mceAddEditor":
+ tinyMCE.addMCEControl(tinyMCE._getElementById(value), value);
+ return;
- // Convert img src nodes
- var elms = contentElement.getElementsByTagName("img");
- for (var i=0; i<elms.length; i++) {
- var src = elms[i].getAttribute('src');
- if (src && src != "") {
- src = eval(tinyMCE.cleanup_urlconvertor_callback + "(src, elms[i],
tinyMCE.cleanup_on_save);");
- elms[i].setAttribute("src", src);
- elms[i].setAttribute("mce_real_src", src);
- }
- }
+ case "mceAddFrameControl":
+ tinyMCE.addMCEControl(tinyMCE._getElementById(value['element'],
value['document']), value['element'], value['document']);
+ return;
- // Convert anchor hrefs
- elms = contentElement.getElementsByTagName("a");
- for (var i=0; i<elms.length; i++) {
- var href = elms[i].getAttribute('href');
- if (href && href != "") {
- href = eval(tinyMCE.cleanup_urlconvertor_callback + "(href, elms[i],
tinyMCE.cleanup_on_save);");
- elms[i].setAttribute("href", href);
- elms[i].setAttribute("mce_real_href", href);
+ case "mceRemoveControl":
+ case "mceRemoveEditor":
+ tinyMCE.removeMCEControl(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
+ }
+ }
}
- }
- instance.contentWindow.document.body.innerHTML = contentElement.innerHTML;
+ return;
}
- } else {
- if (tinyMCE.settings['cleanup_on_startup']) {
- tinyMCE._setHTML(instance.contentWindow.document, content);
- // Produces permission denied error in MSIE 5.5
- eval('try {instance.contentWindow.document.body.innerHTML =
tinyMCE._cleanupHTML(instance.contentDocument, this.settings,
instance.contentDocument.body);} catch(e) {}');
- } else
- instance.contentWindow.document.body.innerHTML = content;
- }
- tinyMCE._convertOnClick(instance.contentWindow.document.body);
+ if (inst) {
+ inst.execCommand(command, user_interface, value);
+ } else if (tinyMCE.settings['focus_alert'])
+ alert(tinyMCELang['lang_focus_alert']);
+ },
- // Fix for bug #957681
- //instance.contentWindow.document.designMode =
instance.contentWindow.document.designMode;
+ _createIFrame : function(replace_element, doc, win) {
+ var iframe, id = replace_element.getAttribute("id");
+ var aw, ah;
- // Setup element references
- var parentElm = document.getElementById(instance.editorId + '_parent');
- instance.formElement = parentElm.lastChild;
+ if (typeof(doc) == "undefined")
+ doc = document;
- if (tinyMCE.settings['handleNodeChangeCallback']) {
- var undoIndex = -1;
- var undoLevels = -1;
+ if (typeof(win) == "undefined")
+ win = window;
- if (tinyMCE.settings['custom_undo_redo']) {
- undoIndex = 0;
- undoLevels = 0;
+ 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";
}
- eval(tinyMCE.settings['handleNodeChangeCallback'] + '("' +
editor_id + '", tinyMCE.instances["' + editor_id +
'"].contentWindow.document.body,undoIndex,undoLevels,tinyMCE.instances["'
+ editor_id + '"].visualAid, false);');
- //window.setTimeout(tinyMCE.settings['handleNodeChangeCallback'] +
'("' + editor_id + '", tinyMCE.instances["' + editor_id +
'"].contentWindow.document.body,undoIndex,undoLevels);', 10);
- }
+ if (ah.indexOf('%') == -1) {
+ ah = parseInt(ah);
+ ah = (isNaN(ah) || ah < 0) ? 240 : ah;
+ ah = ah + "px";
+ }
- tinyMCE.handleVisualAid(instance.contentWindow.document.body, true,
tinyMCE.settings['visual']);
+ 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';
- // Trigger setup content
- if (tinyMCE.settings['setupcontent_callback'] != "")
- eval(tinyMCE.settings['setupcontent_callback'] +
'(editor_id,instance.contentWindow.document.body);');
+ if (tinyMCE.settings["auto_resize"])
+ iframe.setAttribute("scrolling", "no");
- // Re-add design mode on mozilla
- if (!tinyMCE.isMSIE)
- TinyMCE_addEventHandlers(editor_id);
-}
+ // Must have a src element in MSIE HTTPs breaks aswell as absoute URLs
+ if (tinyMCE.isRealIE)
+ iframe.setAttribute("src", this.settings['default_document']);
-function TinyMCE_handleEvent(e) {
- //window.status = e.type + " " + e.target.nodeName + " " +
(e.relatedTarget ? e.relatedTarget.nodeName : "");
+ iframe.style.width = aw;
+ iframe.style.height = ah;
- switch (e.type) {
- case "submit":
- var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target;
+ // Ugly hack for Gecko problem in strict mode
+ if (tinyMCE.settings.strict_loading_mode)
+ iframe.style.marginBottom = '-5px';
- // Disable all UI form elements that TinyMCE created
- for (var i=0; i<formObj.elements.length; i++) {
- var elementId = formObj.elements[i].name ? formObj.elements[i].name :
formObj.elements[i].id;
+ // MSIE 5.0 issue
+ if (tinyMCE.isRealIE)
+ replace_element.outerHTML = iframe.outerHTML;
+ else
+ replace_element.parentNode.replaceChild(iframe, replace_element);
- if (elementId.indexOf('mce_editor_') == 0)
- formObj.elements[i].disabled = true;
- }
+ if (tinyMCE.isRealIE)
+ return win.frames[id];
+ else
+ return iframe;
+ },
- TinyMCE_triggerSave();
+ 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, '&');
+ }
+
+ 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;
+ }
- case "reset":
- TinyMCE_resetForm(e);
+ if (!head) {
+ window.setTimeout("tinyMCE.setupContent('" + editor_id +
"');", 10);
return;
+ }
- case "paste":
- if (tinyMCE.settings['auto_cleanup_word'])
- window.setTimeout("tinyMCE.execInstanceCommand('" + e.target.editorId +
"', 'mceCleanupWord', false, null);", 1);
- break;
+ // 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);
- case "beforecut":
- case "beforepaste":
- if (tinyMCE.selectedInstance)
- tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
- break;
+ // 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');
+ }
- case "keypress":
- if (e.target.editorId) {
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
- } else {
- if (e.target.ownerDocument.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.ownerDocument.editorId];
+ // BlockFormat shortcuts keys
+ for (i=1; i<=6; i++)
+ inst.addShortcut('ctrl', '' + i, '', 'FormatBlock',
false, '<h' + i + '>');
+
+ inst.addShortcut('ctrl', '7', '', 'FormatBlock', false,
'<p>');
+ inst.addShortcut('ctrl', '8', '', 'FormatBlock', false,
'<div>');
+ inst.addShortcut('ctrl', '9', '', 'FormatBlock', false,
'<address>');
+
+ // 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", "<br />",
"gi");
+ content = tinyMCE.regexpReplace(content, "\r", "<br />",
"gi");
+ content = tinyMCE.regexpReplace(content, "\n", "<br />",
"gi");
+ }
+
+ // Open closed anchors
+ // content = content.replace(new RegExp('<a(.*?)/>', 'gi'),
'<a$1></a>');
+
+ // 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;
+
+ // Setup element references
+ var parentElm = inst.targetDoc.getElementById(inst.editorId + '_parent');
+ inst.formElement = tinyMCE.isGecko ? parentElm.previousSibling :
parentElm.nextSibling;
+
+ 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);
}
+ }
- // Mozilla custom key handling
- if (!tinyMCE.isMSIE && e.ctrlKey &&
tinyMCE.settings['custom_undo_redo']) {
- if (e.charCode == 120 || e.charCode == 118) { // Ctrl+X, Ctrl+V
- tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
- return;
+ // 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;
+ });
+ }
+ },
+
+ handleEvent : function(e) {
+ var inst = tinyMCE.selectedInstance;
+
+ // Remove odd, error
+ if (typeof(tinyMCE) == "undefined")
+ return true;
+
+ //tinyMCE.debug(e.type + " " + e.target.nodeName + " " +
(e.relatedTarget ? e.relatedTarget.nodeName : ""));
+
+ if (tinyMCE.executeCallback(tinyMCE.selectedInstance, 'handle_event_callback',
'handleEvent', e))
+ return false;
+
+ switch (e.type) {
+ case "beforedeactivate": // Was added due to bug #1439953
+ case "blur":
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.execCommand('mceEndTyping');
+
+ tinyMCE.hideMenus();
+
+ return;
+
+ // Workaround for drag drop/copy paste base href bug
+ case "drop":
+ case "beforepaste":
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.setBaseHREF(null);
+
+ // Fixes odd MSIE bug where drag/droping elements in a iframe with height 100%
breaks
+ // This logic forces the width/height to be in pixels while the user is
drag/dropping
+ if (tinyMCE.isRealIE) {
+ var ife = tinyMCE.selectedInstance.iframeElement;
+
+ /*if (ife.style.width.indexOf('%') != -1) {
+ ife._oldWidth = ife.width.height;
+ ife.style.width = ife.clientWidth;
+ }*/
+
+ if (ife.style.height.indexOf('%') != -1) {
+ ife._oldHeight = ife.style.height;
+ ife.style.height = ife.clientHeight;
+ }
}
- if (tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']) {
- if (e.charCode == 122) { // Ctrl+Z
- tinyMCE.selectedInstance.execCommand("Undo");
+ window.setTimeout("tinyMCE.selectedInstance.setBaseHREF(tinyMCE.settings['base_href']);tinyMCE._resetIframeHeight();",
1);
+ return;
+ case "submit":
+ tinyMCE.triggerSave();
+ tinyMCE.isNotDirty = true;
+ return;
+
+ case "reset":
+ var formObj = tinyMCE.isIE ? window.event.srcElement : e.target;
+
+ for (var i=0; i<document.forms.length; i++) {
+ if (document.forms[i] == formObj)
+ window.setTimeout('tinyMCE.resetForm(' + i + ');', 10);
+ }
+
+ return;
+
+ case "keypress":
+ if (inst && inst.handleShortcut(e))
+ return false;
+
+ if (e.target.editorId) {
+ tinyMCE.instances[e.target.editorId].select();
+ } else {
+ if (e.target.ownerDocument.editorId)
+ tinyMCE.instances[e.target.ownerDocument.editorId].select();
+ }
+
+ if (tinyMCE.selectedInstance)
+ tinyMCE.selectedInstance.switchSettings();
+
+ // Insert P element
+ if ((tinyMCE.isGecko || tinyMCE.isOpera || tinyMCE.isSafari) &&
tinyMCE.settings['force_p_newlines'] && e.keyCode == 13 &&
!e.shiftKey) {
+ // Insert P element instead of BR
+ if (TinyMCE_ForceParagraphs._insertPara(tinyMCE.selectedInstance, e)) {
// Cancel event
- e.preventDefault();
- return false;
+ tinyMCE.execCommand("mceAddUndoLevel");
+ return tinyMCE.cancelEvent(e);
}
+ }
- if (e.charCode == 121) { // Ctrl+Y
- tinyMCE.selectedInstance.execCommand("Redo");
+ // Handle backspace
+ if ((tinyMCE.isGecko && !tinyMCE.isSafari) &&
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");
+ return tinyMCE.cancelEvent(e);
+ }
+ }
+ // Return key pressed
+ if (tinyMCE.isIE && tinyMCE.settings['force_br_newlines'] &&
e.keyCode == 13) {
+ if (e.target.editorId)
+ tinyMCE.instances[e.target.editorId].select();
+
+ if (tinyMCE.selectedInstance) {
+ var sel = tinyMCE.selectedInstance.getDoc().selection;
+ var rng = sel.createRange();
+
+ if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
+ return false;
+
// Cancel event
- e.preventDefault();
+ e.returnValue = false;
+ e.cancelBubble = true;
+
+ // Insert BR element
+ rng.pasteHTML("<br />");
+ rng.collapse(false);
+ rng.select();
+
+ tinyMCE.execCommand("mceAddUndoLevel");
+ tinyMCE.triggerNodeChange(false);
return false;
}
}
- if (e.charCode == 98) { // Ctrl+B
- tinyMCE.selectedInstance.execCommand("Bold");
+ // 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);
+ }
- // Cancel event
- e.preventDefault();
+ return false;
+ break;
+
+ case "keyup":
+ case "keydown":
+ tinyMCE.hideMenus();
+ tinyMCE.hasMouseMoved = false;
+
+ if (inst && inst.handleShortcut(e))
return false;
- }
- if (e.charCode == 105) { // Ctrl+I
- tinyMCE.selectedInstance.execCommand("Italic");
+ if (e.target.editorId)
+ tinyMCE.instances[e.target.editorId].select();
- // Cancel event
- e.preventDefault();
- return false;
+ 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;
+ }
}
- if (e.charCode == 117) { // Ctrl+U
- tinyMCE.selectedInstance.execCommand("Underline");
+ 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;
- // Cancel event
- e.preventDefault();
- return false;
+ // 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 = " ";
+ }
+ }
}
- }
- if (tinyMCE.settings['custom_undo_redo']) {
- // Check if it's a position key press
- var keys = new Array(13,45,36,35,33,34,37,38,39,40);
+ // Check if it's a position key
+ var keys = tinyMCE.posKeyCodes;
var posKey = false;
for (var i=0; i<keys.length; i++) {
if (keys[i] == e.keyCode) {
- tinyMCE.selectedInstance.typing = false;
posKey = true;
break;
}
}
- // Add typing undo level
- if (!tinyMCE.selectedInstance.typing && !posKey) {
- tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
- tinyMCE.selectedInstance.typing = true;
+ // MSIE custom key handling
+ if (tinyMCE.isIE && tinyMCE.settings['custom_undo_redo']) {
+ var keys = new Array(8,46); // Backspace,Delete
+
+ for (var i=0; i<keys.length; i++) {
+ if (keys[i] == e.keyCode) {
+ if (e.type == "keyup")
+ tinyMCE.triggerNodeChange(false);
+ }
+ }
}
- }
- //window.status = e.keyCode;
- //window.status = e.type + " " + e.target.nodeName;
+ // If Ctrl key
+ if (e.keyCode == 17)
+ return true;
- // Return key pressed
- if (tinyMCE.isMSIE && tinyMCE.settings['force_br_newlines'] &&
e.keyCode == 13) {
- if (e.target.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+ // Handle Undo/Redo when typing content
+ if (tinyMCE.isGecko) {
+ // Start typing (not a position key or ctrl key, but ctrl+x and ctrl+p is ok)
+ if (!posKey && e.type == "keyup" && !e.ctrlKey ||
(e.ctrlKey && (e.keyCode == 86 || e.keyCode == 88)))
+ tinyMCE.execCommand("mceStartTyping");
+ } else {
+ // IE seems to be working better with this setting
+ if (!posKey && e.type == "keyup")
+ tinyMCE.execCommand("mceStartTyping");
+ }
+
+ // Store undo bookmark
+ if (e.type == "keydown" && (posKey || e.ctrlKey) && inst)
+ inst.undoBookmark = inst.selection.getBookmark();
+
+ // End typing (position key) or some Ctrl event
+ if (e.type == "keyup" && (posKey || e.ctrlKey))
+ tinyMCE.execCommand("mceEndTyping");
+
+ if (posKey && e.type == "keyup")
+ tinyMCE.triggerNodeChange(false);
+
+ if (tinyMCE.isIE && e.ctrlKey)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+ break;
+
+ case "mousedown":
+ case "mouseup":
+ case "click":
+ case "dblclick":
+ case "focus":
+ tinyMCE.hideMenus();
+
if (tinyMCE.selectedInstance) {
- var sel = tinyMCE.selectedInstance.contentWindow.document.selection;
- var rng = sel.createRange();
+ tinyMCE.selectedInstance.switchSettings();
+ tinyMCE.selectedInstance.isFocused = true;
+ }
- if (tinyMCE.getParentElement(rng.parentElement(), "li") != null)
- return false;
+ // Check instance event trigged on
+ var targetBody = tinyMCE.getParentElement(e.target, "html");
+ for (var instanceName in tinyMCE.instances) {
+ if (!tinyMCE.isInstance(tinyMCE.instances[instanceName]))
+ continue;
- if (tinyMCE.getParentElement(rng.parentElement(), "div") == null)
- return false;
+ var inst = tinyMCE.instances[instanceName];
- // Cancel event
- e.returnValue = false;
- e.cancelBubble = true;
+ // Reset design mode if lost (on everything just in case)
+ inst.autoResetDesignMode();
- // Insert BR element
- rng.pasteHTML("<br>");
- rng.collapse(false);
- rng.select();
+ // Use HTML element since users might click outside of body element
+ if (inst.getBody().parentNode == targetBody) {
+ inst.select();
+ tinyMCE.selectedElement = e.target;
+ tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement,
"a");
+ tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement,
"img");
+ break;
+ }
}
- }
- // 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");
+ // Add first bookmark location
+ if (!tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark && (e.type ==
"mouseup" || e.type == "dblclick"))
+ tinyMCE.selectedInstance.undoRedo.undoLevels[0].bookmark =
tinyMCE.selectedInstance.selection.getBookmark();
+
+ // Reset selected node
+ if (e.type != "focus")
+ tinyMCE.selectedNode = null;
+
tinyMCE.triggerNodeChange(false);
- }
+ tinyMCE.execCommand("mceEndTyping");
- return false;
- break;
+ if (e.type == "mouseup")
+ tinyMCE.execCommand("mceAddUndoLevel");
- case "keyup":
- case "keydown":
- if (e.target.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+ // Just in case
+ if (!tinyMCE.selectedInstance && e.target.editorId)
+ tinyMCE.instances[e.target.editorId].select();
+
+ return false;
+ break;
+ }
+ },
+
+ getButtonHTML : function(id, lang, img, cmd, ui, val) {
+ var h = '', m, x, io = '';
+
+ cmd = 'tinyMCE.execInstanceCommand(\'{$editor_id}\',\'' + cmd +
'\'';
+
+ if (typeof(ui) != "undefined" && ui != null)
+ cmd += ',' + ui;
+
+ if (typeof(val) != "undefined" && val != null)
+ cmd += ",'" + val + "'";
+
+ cmd += ');';
+
+ // Patch for IE7 bug with hover out not restoring correctly
+ if (tinyMCE.isRealIE)
+ io = 'onmouseover="tinyMCE.lastHover = this;"';
+
+ // 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 = this.buttonMap[id]) != null &&
(tinyMCE.getParam("language") == "en" || img.indexOf('$lang')
== -1)) {
+ // Tiled button
+ x = 0 - (m * 20) == 0 ? '0' : 0 - (m * 20);
+ h += '<a id="{$editor_id}_' + id + '"
href="javascript:' + cmd + '" onclick="' + cmd + 'return
false;" onmousedown="return false;" ' + io + '
class="mceTiledButton mceButtonNormal" target="_self">';
+ h += '<img src="{$themeurl}/images/spacer.gif"
style="background-position: ' + x + 'px 0" title="{$' + lang +
'}" />';
+ h += '</a>';
+ } else {
+ // Normal button
+ h += '<a id="{$editor_id}_' + id + '"
href="javascript:' + cmd + '" onclick="' + cmd + 'return
false;" onmousedown="return false;" ' + io + '
class="mceButtonNormal" target="_self">';
+ h += '<img src="' + img + '" title="{$' + lang +
'}" />';
+ h += '</a>';
+ }
+
+ 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 += '<span id="{$editor_id}_' + id + '"
class="mceMenuButton"
onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover =
this;"
onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
else
- return;
+ h += '<span id="{$editor_id}_' + id + '"
class="mceMenuButton">';
- tinyMCE.selectedElement = null;
- var elm = tinyMCE.selectedInstance.getFocusElement();
- tinyMCE.linkElement = tinyMCE.getParentElement(elm, "a");
- tinyMCE.imgElement = tinyMCE.getParentElement(elm, "img");
- tinyMCE.selectedElement = elm;
+ h += '<a href="javascript:' + cmd + '" onclick="' +
cmd + 'return false;" onmousedown="return false;"
class="mceTiledButton mceMenuButtonNormal" target="_self">';
+ h += '<img src="{$themeurl}/images/spacer.gif" style="width:
20px; height: 20px; background-position: ' + x + 'px 0" title="{$' +
lang + '}" /></a>';
+ h += '<a href="javascript:' + mcmd + '" onclick="' +
mcmd + 'return false;" onmousedown="return false;"><img
src="{$themeurl}/images/button_menu.gif" title="{$' + lang +
'}" class="mceMenuButton" />';
+ h += '</a></span>';
+ } else {
+ if (tinyMCE.isRealIE)
+ h += '<span id="{$editor_id}_' + id + '"
class="mceMenuButton"
onmouseover="tinyMCE._menuButtonEvent(\'over\',this);tinyMCE.lastHover =
this;"
onmouseout="tinyMCE._menuButtonEvent(\'out\',this);">';
+ else
+ h += '<span id="{$editor_id}_' + id + '"
class="mceMenuButton">';
- // MSIE custom key handling
- if (tinyMCE.isMSIE && tinyMCE.settings['custom_undo_redo']) {
- // Check if it's a position key press
- var keys = new Array(13,45,36,35,33,34,37,38,39,40);
- var posKey = false;
- for (var i=0; i<keys.length; i++) {
- if (keys[i] == e.keyCode) {
- tinyMCE.selectedInstance.typing = false;
- posKey = true;
- break;
- }
- }
+ h += '<a href="javascript:' + cmd + '" onclick="' +
cmd + 'return false;" onmousedown="return false;"
class="mceMenuButtonNormal" target="_self">';
+ h += '<img src="' + img + '" title="{$' + lang +
'}" /></a>';
+ h += '<a href="javascript:' + mcmd + '" onclick="' +
mcmd + 'return false;" onmousedown="return false;"><img
src="{$themeurl}/images/button_menu.gif" title="{$' + lang +
'}" class="mceMenuButton" />';
+ h += '</a></span>';
+ }
- // Add typing undo level (unless pos keys or shift, alt, ctrl, capslock)
- if (!tinyMCE.selectedInstance.typing && !posKey && (e.keyCode < 16
|| e.keyCode > 18 && e.keyCode != 255)) {
- tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
- tinyMCE.selectedInstance.typing = true;
- tinyMCE.triggerNodeChange(false);
- }
+ return h;
+ },
- if (posKey && e.type == "keyup")
- tinyMCE.triggerNodeChange(false);
+ _menuButtonEvent : function(e, o) {
+ if (o.className == 'mceMenuButtonFocus')
+ return;
- var ctrlKeys = new Array(66,73,85,86,88); // B/I/U/V/X
- var keys = new Array(8,46); // Backspace,Delete
- for (var i=0; i<keys.length; i++) {
- if ((ctrlKeys[i] == e.keyCode && e.ctrlKey) || keys[i] == e.keyCode) {
- tinyMCE.selectedInstance.execCommand("mceAddUndoLevel");
- tinyMCE.triggerNodeChange(false);
- return true;
+ 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<a.length; i++)
+ this.buttonMap[a[i]] = i;
+ },
+
+ submitPatch : function() {
+ tinyMCE.triggerSave();
+ tinyMCE.isNotDirty = true;
+ this.mceOldSubmit();
+ },
+
+ onLoad : function() {
+ var r;
+
+ // Wait for everything to be loaded first
+ if (tinyMCE.settings.strict_loading_mode && this.loadingIndex != -1) {
+ window.setTimeout('tinyMCE.onLoad();', 1);
+ return;
+ }
+
+ if (tinyMCE.isRealIE && window.event.type == "readystatechange"
&& document.readyState != "complete")
+ return true;
+
+ if (tinyMCE.isLoaded)
+ return true;
+
+ tinyMCE.isLoaded = true;
+
+ // IE produces JS error if TinyMCE is placed in a frame
+ // It seems to have something to do with the selection not beeing
+ // correctly initialized in IE so this hack solves the problem
+ if (tinyMCE.isRealIE && document.body) {
+ r = document.body.createTextRange();
+ r.collapse(true);
+ r.select();
+ }
+
+ tinyMCE.dispatchCallback(null, 'onpageload', 'onPageLoad');
+
+ for (var c=0; c<tinyMCE.configs.length; c++) {
+ tinyMCE.settings = tinyMCE.configs[c];
+
+ var selector = tinyMCE.getParam("editor_selector");
+ var deselector = tinyMCE.getParam("editor_deselector");
+ var elementRefAr = new Array();
+
+ // Add submit triggers
+ if (document.forms && tinyMCE.settings['add_form_submit_trigger']
&& !tinyMCE.submitTriggers) {
+ for (var i=0; i<document.forms.length; i++) {
+ var form = document.forms[i];
+
+ tinyMCE.addEvent(form, "submit", TinyMCE_Engine.prototype.handleEvent);
+ tinyMCE.addEvent(form, "reset", TinyMCE_Engine.prototype.handleEvent);
+ tinyMCE.submitTriggers = true; // Do it only once
+
+ // Patch the form.submit function
+ if (tinyMCE.settings['submit_patch']) {
+ try {
+ form.mceOldSubmit = form.submit;
+ form.submit = TinyMCE_Engine.prototype.submitPatch;
+ } catch (e) {
+ // Do nothing
+ }
}
}
+ }
- if (tinyMCE.settings['custom_undo_redo_keyboard_shortcuts']) {
- if (e.keyCode == 90 && e.ctrlKey && e.type == "keydown") {
// Ctrl+Z
- tinyMCE.selectedInstance.execCommand("Undo");
- tinyMCE.triggerNodeChange(false);
+ // Add editor instances based on mode
+ var mode = tinyMCE.settings['mode'];
+ switch (mode) {
+ case "exact":
+ var elements = tinyMCE.getParam('elements', '', true, ',');
- // Cancel event
- e.returnValue = false;
- e.cancelBubble = true;
- return false;
+ for (var i=0; i<elements.length; i++) {
+ var element = tinyMCE._getElementById(elements[i]);
+ var trigger = element ?
element.getAttribute(tinyMCE.settings['textarea_trigger']) : "";
+
+ if (new RegExp('\\b' + deselector +
'\\b').test(tinyMCE.getAttrib(element, "class")))
+ continue;
+
+ if (trigger == "false")
+ continue;
+
+ if ((tinyMCE.settings['ask'] ||
tinyMCE.settings['convert_on_click']) && element) {
+ elementRefAr[elementRefAr.length] = element;
+ continue;
+ }
+
+ if (element)
+ tinyMCE.addMCEControl(element, elements[i]);
+ else if (tinyMCE.settings['debug'])
+ alert("Error: Could not find element by id or name: " + elements[i]);
}
+ break;
- if (e.keyCode == 89 && e.ctrlKey && e.type == "keydown") {
// Ctrl+Y
- tinyMCE.selectedInstance.execCommand("Redo");
- tinyMCE.triggerNodeChange(false);
+ case "specific_textareas":
+ case "textareas":
+ var nodeList = document.getElementsByTagName("textarea");
- // Cancel event
- e.returnValue = false;
- e.cancelBubble = true;
- return false;
+ for (var i=0; i<nodeList.length; i++) {
+ var elm = nodeList.item(i);
+ var trigger = elm.getAttribute(tinyMCE.settings['textarea_trigger']);
+
+ if (selector != '' && !new RegExp('\\b' + selector +
'\\b').test(tinyMCE.getAttrib(elm, "class")))
+ continue;
+
+ if (selector != '')
+ trigger = selector != "" ? "true" : "";
+
+ if (new RegExp('\\b' + deselector +
'\\b').test(tinyMCE.getAttrib(elm, "class")))
+ continue;
+
+ if ((mode == "specific_textareas" && trigger == "true")
|| (mode == "textareas" && trigger != "false"))
+ elementRefAr[elementRefAr.length] = elm;
}
- }
+ break;
}
- // Trigger some nodechange on keyup
- if (e.type == "keyup")
- tinyMCE.triggerNodeChange();
- break;
+ for (var i=0; i<elementRefAr.length; i++) {
+ var element = elementRefAr[i];
+ var elementId = element.name ? element.name : element.id;
- case "mousedown":
- case "mouseup":
- case "click":
- case "focus":
- // Check instance event trigged on
- var targetBody = tinyMCE.getParentElement(e.target, "body");
- for (var instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
- if (instance.contentWindow.document.body == targetBody) {
- tinyMCE.selectedInstance = instance;
- tinyMCE.selectedElement = e.target;
- tinyMCE.linkElement = tinyMCE.getParentElement(tinyMCE.selectedElement,
"a");
- tinyMCE.imgElement = tinyMCE.getParentElement(tinyMCE.selectedElement,
"img");
+ if (tinyMCE.settings['ask'] || tinyMCE.settings['convert_on_click'])
{
+ // Focus breaks in Mozilla
+ if (tinyMCE.isGecko) {
+ var settings = tinyMCE.settings;
- // Reset design mode if lost
- instance.autoResetDesignMode();
+ tinyMCE.addEvent(element, "focus", function (e)
{window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);},
10);});
- // Reset typing
- tinyMCE.selectedInstance.typing = false;
- break;
- }
+ if (element.nodeName != "TEXTAREA" && element.nodeName !=
"INPUT")
+ tinyMCE.addEvent(element, "click", function (e)
{window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);},
10);});
+ // tinyMCE.addEvent(element, "mouseover", function (e)
{window.setTimeout(function() {TinyMCE_Engine.prototype.confirmAdd(e, settings);},
10);});
+ } else {
+ var settings = tinyMCE.settings;
+
+ tinyMCE.addEvent(element, "focus", function () {
TinyMCE_Engine.prototype.confirmAdd(null, settings); });
+ tinyMCE.addEvent(element, "click", function () {
TinyMCE_Engine.prototype.confirmAdd(null, settings); });
+ // tinyMCE.addEvent(element, "mouseenter", function () {
TinyMCE_Engine.prototype.confirmAdd(null, settings); });
+ }
+ } else
+ tinyMCE.addMCEControl(element, elementId);
}
- tinyMCE.triggerNodeChange(false);
+ // Handle auto focus
+ if (tinyMCE.settings['auto_focus']) {
+ window.setTimeout(function () {
+ var inst = tinyMCE.getInstanceById(tinyMCE.settings['auto_focus']);
+ inst.selection.selectNode(inst.getBody(), true, true);
+ inst.contentWindow.focus();
+ }, 100);
+ }
- // Just in case
- if (!tinyMCE.selectedInstance && e.target.editorId)
- tinyMCE.selectedInstance = tinyMCE.instances[e.target.editorId];
+ tinyMCE.dispatchCallback(null, 'oninit', 'onInit');
+ }
+ },
- // Was it alt click on link
- if (e.target.nodeName.toLowerCase() == "a" && e.type ==
"click" && e.altKey) {
- var evalCode = "" +
tinyMCE.cleanupEventStr(e.target.getAttribute("mce_onclick"));
+ isInstance : function(o) {
+ return o != null && typeof(o) == "object" &&
o.isTinyMCE_Control;
+ },
- // Remove any return too
- eval(evalCode.replace('return false;', ''));
+ getParam : function(name, default_value, strip_whitespace, split_chr) {
+ var value = (typeof(this.settings[name]) == "undefined") ? default_value :
this.settings[name];
+
+ // Fix bool values
+ if (value == "true" || value == "false")
+ return (value == "true");
+
+ if (strip_whitespace)
+ value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
+
+ if (typeof(split_chr) != "undefined" && split_chr != null) {
+ value = value.split(split_chr);
+ var outArray = new Array();
+
+ for (var i=0; i<value.length; i++) {
+ if (value[i] && value[i] != "")
+ outArray[outArray.length] = value[i];
}
- return false;
- break;
- } // end switch
-} // end function
+ value = outArray;
+ }
-function TinyMCE_switchClass(element, class_name, lock_state) {
- var lockChanged = false;
+ return value;
+ },
- if (typeof(lock_state) != "undefined" && element != null) {
- element.classLock = lock_state;
- lockChanged = true;
- }
+ getLang : function(name, default_value, parse_entities, va) {
+ var v = (typeof(tinyMCELang[name]) == "undefined") ? default_value :
tinyMCELang[name], n;
- if (element != null && (lockChanged || !element.classLock)) {
- element.oldClassName = element.className;
- element.className = class_name;
- }
-}
+ if (parse_entities)
+ v = tinyMCE.entityDecode(v);
-function TinyMCE_restoreAndSwitchClass(element, class_name) {
- if (element != null && !element.classLock) {
- this.restoreClass(element);
- this.switchClass(element, class_name);
- }
-}
+ if (va) {
+ for (n in va)
+ v = this.replaceVar(v, n, va[n]);
+ }
-function TinyMCE_switchClassSticky(element_name, class_name, lock_state) {
- var element, lockChanged = false;
+ return v;
+ },
- // Performance issue
- if (!this.stickyClassesLookup[element_name])
- this.stickyClassesLookup[element_name] = document.getElementById(element_name);
+ entityDecode : function(s) {
+ var e = document.createElement("div");
-// element = document.getElementById(element_name);
- element = this.stickyClassesLookup[element_name];
+ e.innerHTML = s;
- if (typeof(lock_state) != "undefined" && element != null) {
- element.classLock = lock_state;
- lockChanged = true;
- }
+ return e.firstChild.nodeValue;
+ },
- if (element != null && (lockChanged || !element.classLock)) {
- element.className = class_name;
- element.oldClassName = class_name;
- }
-}
+ addToLang : function(prefix, ar) {
+ for (var key in ar) {
+ if (typeof(ar[key]) == 'function')
+ continue;
-function TinyMCE_restoreClass(element) {
- if (element != null && element.oldClassName && !element.classLock) {
- element.className = element.oldClassName;
- element.oldClassName = null;
- }
-}
+ tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') +
(prefix != '' ? (prefix + "_") : '') + key] = ar[key];
+ }
-function TinyMCE_setClassLock(element, lock_state) {
- if (element != null)
- element.classLock = lock_state;
-}
+ this.loadNextScript();
-function TinyMCE_onLoad() {
- // Add submit triggers
- if (tinyMCE.isMSIE) {
- if (document.forms && tinyMCE.settings['add_form_submit_trigger']) {
- for (var i=0; i<document.forms.length; i++) {
- document.forms[i].attachEvent("onsubmit", TinyMCE_handleEvent);
- document.forms[i].attachEvent("onreset", TinyMCE_handleEvent);
+ // for (var key in ar)
+ // tinyMCELang[(key.indexOf('lang_') == -1 ? 'lang_' : '') +
(prefix != '' ? (prefix + "_") : '') + key] = "|" +
ar[key] + "|";
+ },
+
+ triggerNodeChange : function(focus, setup_content) {
+ if (tinyMCE.selectedInstance) {
+ var inst = tinyMCE.selectedInstance;
+ var editorId = inst.editorId;
+ var elm = (typeof(setup_content) != "undefined" && setup_content) ?
tinyMCE.selectedElement : inst.getFocusElement();
+ var undoIndex = -1, doc;
+ var undoLevels = -1;
+ var anySelection = false;
+ var selectedText = inst.selection.getSelectedText();
+
+ if (tinyMCE.settings.auto_resize)
+ inst.resizeToContent();
+
+ if (setup_content && tinyMCE.isGecko && inst.isHidden())
+ elm = inst.getBody();
+
+ inst.switchSettings();
+
+ if (tinyMCE.selectedElement)
+ anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") ||
(selectedText && selectedText.length > 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);
}
- } else {
- if (document.forms && tinyMCE.settings['add_form_submit_trigger']) {
- for (var i=0; i<document.forms.length; i++) {
- document.forms[i].addEventListener("submit", TinyMCE_handleEvent, false);
- document.forms[i].addEventListener("reset", TinyMCE_handleEvent, false);
- }
+
+ 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<pl.length; i++) {
+ po = tinyMCE.plugins[pl[i]];
+
+ if (po && po.cleanup)
+ content = po.cleanup(type, content, inst);
}
- }
- // Add editor instances based on mode
- switch (tinyMCE.settings['mode']) {
- case "exact":
- var elements = tinyMCE.getParam('elements', '', true, ',');
+ return content;
+ },
- for (var i=0; i<elements.length; i++) {
- var element = tinyMCE._getElementById(elements[i]);
+ setContent : function(h) {
+ if (tinyMCE.selectedInstance) {
+ tinyMCE.selectedInstance.execCommand('mceSetContent', false, h);
+ tinyMCE.selectedInstance.repaint();
+ }
+ },
- if (element)
- tinyMCE.addMCEControl(element, elements[i],
tinyMCE.createMCEControl(tinyMCE.settings));
- else
- alert("Error: Could not find element by id or name: " + elements[i]);
- }
- break;
+ importThemeLanguagePack : function(name) {
+ if (typeof(name) == "undefined")
+ name = tinyMCE.settings['theme'];
- case "specific_textareas":
- case "textareas":
- var nodeList = document.getElementsByTagName("textarea");
- var elementRefAr = new Array();
+ tinyMCE.loadScript(tinyMCE.baseURL + '/themes/' + name + '/langs/' +
tinyMCE.settings['language'] + '.js');
+ },
- for (var i=0; i<nodeList.length; i++) {
- if (tinyMCE.settings['mode'] != "specific_textareas" ||
nodeList.item(i).getAttribute(tinyMCE.settings['textarea_trigger']) ==
"true")
- elementRefAr[elementRefAr.length] = nodeList.item(i);
+ importPluginLanguagePack : function(name) {
+ var b = tinyMCE.baseURL + '/plugins/' + name;
+
+ if (this.plugins[name])
+ b = this.plugins[name].baseURL;
+
+ tinyMCE.loadScript(b + '/langs/' + tinyMCE.settings['language'] +
'.js');
+ },
+
+ applyTemplate : function(h, as) {
+ return h.replace(new RegExp('\\{\\$([a-z0-9_]+)\\}', 'gi'), function(m,
s) {
+ if (s.indexOf('lang_') == 0 && tinyMCELang[s])
+ return tinyMCELang[s];
+
+ if (as && as[s])
+ return as[s];
+
+ if (tinyMCE.settings[s])
+ return tinyMCE.settings[s];
+
+ if (m == 'themeurl')
+ return tinyMCE.themeURL;
+
+ return m;
+ });
+ },
+
+ replaceVar : function(h, r, v) {
+ return h.replace(new RegExp('{\\\$' + r + '}', 'g'), v);
+ },
+
+ openWindow : function(template, args) {
+ var html, width, height, x, y, resizable, scrollbars, url;
+
+ args['mce_template_file'] = template['file'];
+ args['mce_width'] = template['width'];
+ args['mce_height'] = template['height'];
+ tinyMCE.windowArgs = args;
+
+ html = template['html'];
+ if (!(width = parseInt(template['width'])))
+ width = 320;
+
+ if (!(height = parseInt(template['height'])))
+ height = 200;
+
+ // Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of
windows!!
+ if (tinyMCE.isIE)
+ height += 40;
+ else
+ height += 20;
+
+ x = parseInt(screen.width / 2.0) - (width / 2.0);
+ y = parseInt(screen.height / 2.0) - (height / 2.0);
+
+ resizable = (args && args['resizable']) ? args['resizable'] :
"no";
+ scrollbars = (args && args['scrollbars']) ? args['scrollbars']
: "no";
+
+ if (template['file'].charAt(0) != '/' &&
template['file'].indexOf('://') == -1)
+ url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") +
"/" + template['file'];
+ else
+ url = template['file'];
+
+ // Replace all args as variables in URL
+ for (var name in args) {
+ if (typeof(args[name]) == 'function')
+ continue;
+
+ url = tinyMCE.replaceVar(url, name, escape(args[name]));
+ }
+
+ if (html) {
+ html = tinyMCE.replaceVar(html, "css",
this.settings['popups_css']);
+ html = tinyMCE.applyTemplate(html, args);
+
+ var win = window.open("", "mcePopup" + new Date().getTime(),
"top=" + y + ",left=" + x + ",scrollbars=" + scrollbars +
",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width +
",height=" + height + ",resizable=" + resizable);
+ if (win == null) {
+ alert(tinyMCELang['lang_popup_blocked']);
+ return;
}
- for (var i=0; i<elementRefAr.length; i++) {
- var element = elementRefAr[i];
- var elementId = element.name ? element.name : element.id;
+ win.document.write(html);
+ win.document.close();
+ win.resizeTo(width, height);
+ win.focus();
+ } else {
+ if ((tinyMCE.isRealIE) && resizable != 'yes' &&
tinyMCE.settings["dialog_type"] == "modal") {
+ height += 10;
- if (tinyMCE.settings['ask']) {
- if (tinyMCE.isMSIE)
- element.attachEvent("onmousedown", TinyMCE_confirmAdd);
- else
- element.addEventListener("mousedown", TinyMCE_confirmAdd, false);
- } else
- tinyMCE.addMCEControl(element, elementId,
tinyMCE.createMCEControl(tinyMCE.settings));
+ var features = "resizable:" + resizable
+ + ";scroll:"
+ + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:"
+ + width + "px;dialogHeight:" + height + "px;";
+
+ window.showModalDialog(url, window, features);
+ } else {
+ var modal = (resizable == "yes") ? "no" : "yes";
+
+ if (tinyMCE.isGecko && tinyMCE.isMac)
+ modal = "no";
+
+ if (template['close_previous'] != "no")
+ try {tinyMCE.lastWindow.close();} catch (ex) {}
+
+ var win = window.open(url, "mcePopup" + new Date().getTime(),
"top=" + y + ",left=" + x + ",scrollbars=" + scrollbars +
",dialog=" + modal + ",minimizable=" + resizable + ",modal="
+ modal + ",width=" + width + ",height=" + height +
",resizable=" + resizable);
+ if (win == null) {
+ alert(tinyMCELang['lang_popup_blocked']);
+ return;
+ }
+
+ if (template['close_previous'] != "no")
+ tinyMCE.lastWindow = win;
+
+ eval('try { win.resizeTo(width, height); } catch(e) { }');
+
+ // Make it bigger if statusbar is forced
+ if (tinyMCE.isGecko) {
+ if (win.document.defaultView.statusbar.visible)
+ win.resizeBy(0, tinyMCE.isMac ? 10 : 24);
+ }
+
+ win.focus();
}
- break;
- }
-}
+ }
+ },
-function TinyMCE_removeMCEControl(editor_id) {
- var mceControl = tinyMCE._getInstanceById(editor_id);
- if (mceControl) {
- editor_id = mceControl.editorId;
- var html = tinyMCE.getContent(editor_id);
+ closeWindow : function(win) {
+ win.close();
+ },
- // Remove editor instance from instances array
- var tmpInstances = new Array();
- for (var instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
- if (instanceName != editor_id)
- tmpInstances[instanceName] = instance;
+ getVisualAidClass : function(class_name, state) {
+ var aidClass = tinyMCE.settings['visual_table_class'];
+
+ if (typeof(state) == "undefined")
+ state = tinyMCE.settings['visual'];
+
+ // Split
+ var classNames = new Array();
+ var ar = class_name.split(' ');
+ for (var i=0; i<ar.length; i++) {
+ if (ar[i] == aidClass)
+ ar[i] = "";
+
+ if (ar[i] != "")
+ classNames[classNames.length] = ar[i];
}
- tinyMCE.instances = tmpInstances;
- tinyMCE.selectedElement = null;
- tinyMCE.selectedInstance = null;
+ if (state)
+ classNames[classNames.length] = aidClass;
- // Remove element
- var replaceElement = document.getElementById(editor_id + "_parent");
- var oldTargetElement = mceControl.oldTargetElement;
- var targetName = oldTargetElement.nodeName.toLowerCase();
- if (targetName == "textarea" || targetName == "input")
- oldTargetElement.value = html;
- else
- oldTargetElement.innerHTML = html;
+ // Glue
+ var className = "";
+ for (var i=0; i<classNames.length; i++) {
+ if (i > 0)
+ className += " ";
- replaceElement.parentNode.insertBefore(oldTargetElement, replaceElement);
- replaceElement.parentNode.removeChild(replaceElement);
- }
-}
+ className += classNames[i];
+ }
-function TinyMCE__cleanupElementName(element_name, element) {
- element_name = element_name.toLowerCase();
+ return className;
+ },
- // Never include body
- if (element_name == "body")
- return null;
+ handleVisualAid : function(el, deep, state, inst, skip_dispatch) {
+ if (!el)
+ return;
- // If verification mode
- if (tinyMCE.cleanup_verify_html) {
- // Check if invalid element
- for (var i=0; i<tinyMCE.cleanup_invalidElements.length; i++) {
- if (tinyMCE.cleanup_invalidElements[i] == element_name)
- return null;
+ 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<el.rows.length; y++) {
+ for (var x=0; x<el.rows[y].cells.length; x++) {
+ var cn = tinyMCE.getVisualAidClass(tinyMCE.getAttrib(el.rows[y].cells[x],
"class"), state && bo);
+ tinyMCE.setAttrib(el.rows[y].cells[x], "class", cn);
+ }
+ }
+
+ break;
+
+ case "A":
+ var anchorName = tinyMCE.getAttrib(el, "name");
+
+ if (anchorName != '' && state) {
+ el.title = anchorName;
+ tinyMCE.addCSSClass(el, 'mceItemAnchor');
+ } else if (anchorName != '' && !state)
+ el.className = '';
+
+ break;
}
- // Check if valid element
- var validElement = false;
- var elementAttribs = null;
- for (var i=0; i<tinyMCE.cleanup_validElements.length && !elementAttribs;
i++) {
- for (var x=0; x<tinyMCE.cleanup_validElements[i][0].length; x++) {
- var elmMatch = tinyMCE.cleanup_validElements[i][0][x];
+ if (deep && el.hasChildNodes()) {
+ for (var i=0; i<el.childNodes.length; i++)
+ tinyMCE.handleVisualAid(el.childNodes[i], deep, state, inst, true);
+ }
+ },
- // Handle wildcard/regexp
- if (elmMatch.match(new RegExp('\\*|\\?|\\+', 'g')) != null) {
- elmMatch = elmMatch.replace(new RegExp('\\?', 'g'),
'(\\S?)');
- elmMatch = elmMatch.replace(new RegExp('\\+', 'g'),
'(\\S+)');
- elmMatch = elmMatch.replace(new RegExp('\\*', 'g'),
'(\\S*)');
- elmMatch = "^" + elmMatch + "$";
- if (element_name.match(new RegExp(elmMatch, 'g'))) {
- elementAttribs = tinyMCE.cleanup_validElements[i];
- validElement = true;
+ /*
+ applyClassesToFonts : function(doc, size) {
+ var f = doc.getElementsByTagName("font");
+ for (var i=0; i<f.length; i++) {
+ var s = tinyMCE.getAttrib(f[i], "size");
+
+ if (s != "")
+ tinyMCE.setAttrib(f[i], 'class', "mceItemFont" + s);
+ }
+
+ if (typeof(size) != "undefined") {
+ var css = "";
+
+ for (var x=0; x<doc.styleSheets.length; x++) {
+ for (var i=0; i<doc.styleSheets[x].rules.length; i++) {
+ if (doc.styleSheets[x].rules[i].selectorText == '#mceSpanFonts .mceItemFont'
+ size) {
+ css = doc.styleSheets[x].rules[i].style.cssText;
break;
}
}
- // Handle non regexp
- if (element_name == elmMatch) {
- elementAttribs = tinyMCE.cleanup_validElements[i];
- validElement = true;
- element_name = elementAttribs[0][0];
+ if (css != "")
break;
- }
}
+
+ if (doc.styleSheets[0].rules[0].selectorText == "FONT")
+ doc.styleSheets[0].removeRule(0);
+
+ doc.styleSheets[0].addRule("FONT", css, 0);
}
+ },
+ */
- if (!validElement)
- return null;
- }
+ fixGeckoBaseHREFBug : function(m, e, h) {
+ var xsrc, xhref;
- // Special Mozilla stuff
- if (!tinyMCE.isMSIE) {
- // Fix for bug #958498
- if (element_name == "strong" && !tinyMCE.cleanup_on_save)
- element_name = "b";
- else if (element_name == "em" && !tinyMCE.cleanup_on_save)
- element_name = "i";
- }
+ if (tinyMCE.isGecko) {
+ if (m == 1) {
+ h = h.replace(/\ssrc=/gi, " mce_tsrc=");
+ h = h.replace(/\shref=/gi, " mce_thref=");
- // Special MSIE stuff
- if (tinyMCE.isMSIE) {
- if (element_name == "table") {
- var attribValue = element.style.pixelWidth == 0 ?
element.getAttribute("width") : element.style.pixelWidth;
- element.setAttribute("width", attribValue);
+ return h;
+ } else {
+ // Why bother if there is no src or href broken
+ if (!new RegExp('(src|href)=', 'g').test(h))
+ return h;
- attribValue = element.style.pixelHeight == 0 ?
element.getAttribute("height") : element.style.pixelHeight;
- element.setAttribute("height", attribValue);
- }
- }
+ // Restore src and href that gets messed up by Gecko
+ tinyMCE.selectElements(e,
'A,IMG,SELECT,AREA,IFRAME,BASE,INPUT,SCRIPT,EMBED,OBJECT,LINK', function (n) {
+ xsrc = tinyMCE.getAttrib(n, "mce_tsrc");
+ xhref = tinyMCE.getAttrib(n, "mce_thref");
- var elmData = new Object();
+ if (xsrc != "") {
+ try {
+ n.src =
tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xsrc);
+ } catch (e) {
+ // Ignore, Firefox cast exception if local file wasn't found
+ }
- elmData.element_name = element_name;
- elmData.valid_attribs = elementAttribs;
+ n.removeAttribute("mce_tsrc");
+ }
- return elmData;
-}
+ if (xhref != "") {
+ try {
+ n.href =
tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], xhref);
+ } catch (e) {
+ // Ignore, Firefox cast exception if local file wasn't found
+ }
-/**
- * Converts some element attributes to inline styles.
- */
-function TinyMCE__fixInlineStyles(elm) {
- // Handle non table elements
- if (elm.nodeName.toLowerCase() != "table") {
- var value;
+ n.removeAttribute("mce_thref");
+ }
- // Setup width
- value = tinyMCE.isMSIE ? elm.width : elm.getAttribute("width");
- if (value && value != "") {
- if (typeof(value) != "string" || !value.indexOf("%"))
- value += "px";
+ return false;
+ });
- elm.style.width = value;
+ // Restore text/comment nodes
+ tinyMCE.selectNodes(e, function(n) {
+ if (n.nodeType == 3 || n.nodeType == 8) {
+ n.nodeValue = n.nodeValue.replace(/\smce_tsrc=/gi, " src=");
+ n.nodeValue = n.nodeValue.replace(/\smce_thref=/gi, " href=");
+ }
+
+ return false;
+ });
+ }
}
- // Setup height
- value = tinyMCE.isMSIE ? elm.height : elm.getAttribute("height");
- if (value && value != "") {
- if (typeof(value) != "string" || !value.indexOf("%"))
- value += "px";
+ return h;
+ },
- elm.style.height = value;
+ _setHTML : function(doc, html_content) {
+ // Force closed anchors open
+ //html_content = html_content.replace(new RegExp('<a(.*?)/>',
'gi'), '<a$1></a>');
+
+ html_content = tinyMCE.cleanupHTMLCode(html_content);
+
+ // Try innerHTML if it fails use pasteHTML in MSIE
+ try {
+ tinyMCE.setInnerHTML(doc.body, html_content);
+ } catch (e) {
+ if (this.isMSIE)
+ doc.body.createTextRange().pasteHTML(html_content);
}
- // Setup border
- value = tinyMCE.isMSIE ? elm.border : elm.getAttribute("border");
- if (value && value != "")
- elm.style.borderWidth = value + "px";
- }
+ // Content duplication bug fix
+ if (tinyMCE.isIE && tinyMCE.settings['fix_content_duplication']) {
+ // Remove P elements in P elements
+ var paras = doc.getElementsByTagName("P");
+ for (var i=0; i<paras.length; i++) {
+ var node = paras[i];
+ while ((node = node.parentNode) != null) {
+ if (node.nodeName == "P")
+ node.outerHTML = node.innerHTML;
+ }
+ }
- // Setup align
- value = elm.getAttribute("align");
- if (value && value != "") {
- if (elm.nodeName.toLowerCase() == "img") {
- if (tinyMCE.isMSIE)
- elm.style.styleFloat = value;
- else
- elm.style.cssFloat = value;
- } else
- elm.style.textAlign = value;
- }
+ // Content duplication bug fix (Seems to be word crap)
+ var html = doc.body.innerHTML;
+/*
+ if (html.indexOf('="mso') != -1) {
+ for (var i=0; i<doc.body.all.length; i++) {
+ var el = doc.body.all[i];
+ el.removeAttribute("className","",0);
+ el.removeAttribute("style","",0);
+ }
- // Setup vspace
- value = elm.getAttribute("vspace");
- if (value && value != "")
- elm.style.marginTop = value + "px";
+ html = doc.body.innerHTML;
+ html = tinyMCE.regexpReplace(html, "<o:p><\/o:p>", "<br
/>");
+ html = tinyMCE.regexpReplace(html, "<o:p> <\/o:p>",
"");
+ html = tinyMCE.regexpReplace(html, "<st1:.*?>", "");
+ html = tinyMCE.regexpReplace(html, "<p><\/p>", "");
+ html = tinyMCE.regexpReplace(html,
"<p><\/p>\r\n<p><\/p>", "");
+ html = tinyMCE.regexpReplace(html, "<p> <\/p>",
"<br />");
+ html = tinyMCE.regexpReplace(html, "<p>\s*(<p>\s*)?",
"<p>");
+ html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?",
"</p>");
+ }*/
- // Setup hspace
- value = elm.getAttribute("hspace");
- if (value && value != "")
- elm.style.marginBottom = value + "px";
-}
+ // Always set the htmlText output
+ tinyMCE.setInnerHTML(doc.body, html);
+ }
-function TinyMCE__cleanupAttribute(valid_attributes, element_name, attribute_node,
element_node) {
- var attribName = attribute_node.nodeName.toLowerCase();
- var attribValue = attribute_node.nodeValue;
- var attribMustBeValue = null;
- var verified = false;
+ tinyMCE.cleanupAnchors(doc);
- // Inline styling, skip them
- if (tinyMCE.cleanup_inline_styles && element_name != "table"
&& element_name != "td") {
- if (attribName == "width" || attribName == "height" || attribName
== "border" || attribName == "align" || attribName ==
"valign" || attribName == "hspace" || attribName ==
"vspace")
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertSpansToFonts(doc);
+ },
+
+ getEditorId : function(form_element) {
+ var inst = this.getInstanceById(form_element);
+ if (!inst)
return null;
- }
- // Mozilla attibute, remove them
- if (attribName.indexOf('moz_') != -1)
+ 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;
+ },
- // Mozilla fix for drag-drop/copy/paste images
- if (!tinyMCE.isMSIE && (attribName == "mce_real_href" || attribName ==
"mce_real_src")) {
- if (!tinyMCE.cleanup_on_save) {
- var attrib = new Object();
+ setWindowArg : function(n, v) {
+ this.windowArgs[n] = v;
+ },
- attrib.name = attribName;
- attrib.value = attribValue;
+ getWindowArg : function(n, d) {
+ return (typeof(this.windowArgs[n]) == "undefined") ? d : this.windowArgs[n];
+ },
- return attrib;
- } else
- return null;
- }
+ getCSSClasses : function(editor_id, doc) {
+ var output = new Array();
- // Auto verify
- if (attribName == "mce_onclick")
- verified = true;
+ // Is cached, use that
+ if (typeof(tinyMCE.cssClasses) != "undefined")
+ return tinyMCE.cssClasses;
- // Verify attrib
- if (tinyMCE.cleanup_verify_html && !verified) {
- for (var i=1; i<valid_attributes.length; i++) {
- var attribMatch = valid_attributes[i][0];
- var re = null;
+ if (typeof(editor_id) == "undefined" && typeof(doc) ==
"undefined") {
+ var instance;
- // Build regexp from wildcard
- if (attribMatch.match(new RegExp('\\*|\\?|\\+', 'g')) != null) {
- attribMatch = attribMatch.replace(new RegExp('\\?', 'g'),
'(\\S?)');
- attribMatch = attribMatch.replace(new RegExp('\\+', 'g'),
'(\\S+)');
- attribMatch = attribMatch.replace(new RegExp('\\*', 'g'),
'(\\S*)');
- attribMatch = "^" + attribMatch + "$";
- re = new RegExp(attribMatch, 'g');
- }
+ for (var instanceName in tinyMCE.instances) {
+ instance = tinyMCE.instances[instanceName];
+ if (!tinyMCE.isInstance(instance))
+ continue;
- if ((re && attribName.match(re) != null) || attribName == attribMatch) {
- verified = true;
- attribMustBeValue = valid_attributes[i][3];
break;
}
+
+ doc = instance.getDoc();
}
-
- // Allways pass styles on table and td elements if visual_aid
- if ((element_name == "table" || element_name == "td") &&
attribName == "style")
- verified = true;
+ if (typeof(doc) == "undefined") {
+ var instance = tinyMCE.getInstanceById(editor_id);
+ doc = instance.getDoc();
+ }
- if (!verified)
- return false;
- } else
- verified = true;
+ if (doc) {
+ var styles = doc.styleSheets;
- // Treat some attribs diffrent
- switch (attribName) {
- case "width":
- // MSIE 5.5 issue
- if (tinyMCE.isMSIE)
- attribValue = element_node.width;
- break;
+ if (styles && styles.length > 0) {
+ for (var x=0; x<styles.length; x++) {
+ var csses = null;
- case "height":
- // MSIE 5.5 issue
- if (tinyMCE.isMSIE)
- attribValue = element_node.height;
- break;
+ // Just ignore any errors
+ eval("try {var csses = tinyMCE.isIE ? doc.styleSheets(" + x +
").rules : styles[" + x + "].cssRules;} catch(e) {}");
+ if (!csses)
+ return new Array();
- case "border":
- // MSIE 5.5 issue
- if (tinyMCE.isMSIE)
- attribValue = element_node.border;
- break;
+ for (var i=0; i<csses.length; i++) {
+ var selectorText = csses[i].selectorText;
- case "class":
- if (!tinyMCE._verifyClass(element_node))
- return null;
- break;
+ // Can be multiple rules per selector
+ if (selectorText) {
+ var rules = selectorText.split(',');
+ for (var c=0; c<rules.length; c++) {
+ var rule = rules[c];
- case "style":
- if (element_name == "table" || element_name == "td") {
- // Handle visual aid
- if (tinyMCE.cleanup_visual_table_style != "") {
- // Find parent table
- var tableElement = element_node;
- if (element_name == "td")
- tableElement = tinyMCE.getParentElement(tableElement, "table");
+ // Strip spaces between selectors
+ while (rule.indexOf(' ') == 0)
+ rule = rule.substring(1);
- if (tableElement && tableElement.getAttribute("border") == 0) {
- if (tinyMCE.cleanup_visual_aid)
- attribValue = tinyMCE.cleanup_visual_table_style;
- else
- return null;
+ // Invalid rule
+ if (rule.indexOf(' ') != -1 || rule.indexOf(':') != -1 ||
rule.indexOf('mceItem') != -1)
+ continue;
+
+ if (rule.indexOf(tinyMCE.settings['visual_table_class']) != -1 ||
rule.indexOf('mceEditable') != -1 || rule.indexOf('mceNonEditable') !=
-1)
+ continue;
+
+ // Is class rule
+ if (rule.indexOf('.') != -1) {
+ var cssClass = rule.substring(rule.indexOf('.') + 1);
+ var addClass = true;
+
+ for (var p=0; p<output.length && addClass; p++) {
+ if (output[p] == cssClass)
+ addClass = false;
+ }
+
+ if (addClass)
+ output[output.length] = cssClass;
+ }
+ }
+ }
}
}
- } else
- attribValue = element_node.style.cssText.toLowerCase();
+ }
+ }
- // Compress borders some
- if (tinyMCE.isMSIE) {
- var border = element_node.style.border;
- var bt = element_node.style.borderTop;
- var bl = element_node.style.borderLeft;
- var br = element_node.style.borderRight;
- var bb = element_node.style.borderBottom;
+ // Cache em
+ if (output.length > 0)
+ tinyMCE.cssClasses = output;
- // All the same
- if (border != "" && (bt == border && bl == border
&& br == border && bb == border)) {
- attribValue = tinyMCE.regexpReplace(attribValue, 'border-top: ' + border +
'?; ?', '');
- attribValue = tinyMCE.regexpReplace(attribValue, 'border-left: ' + border +
'?; ?', '');
- attribValue = tinyMCE.regexpReplace(attribValue, 'border-right: ' + border
+ '?; ?', '');
- attribValue = tinyMCE.regexpReplace(attribValue, 'border-bottom: ' + border
+ '?;( ?)', 'border: ' + border + ';$1');
- }
+ return output;
+ },
+
+ regexpReplace : function(in_str, reg_exp, replace_str, opts) {
+ if (in_str == null)
+ return in_str;
+
+ if (typeof(opts) == "undefined")
+ opts = 'g';
+
+ var re = new RegExp(reg_exp, opts);
+ return in_str.replace(re, replace_str);
+ },
+
+ trim : function(s) {
+ return s.replace(/^\s*|\s*$/g, "");
+ },
+
+ cleanupEventStr : function(s) {
+ s = "" + s;
+ s = s.replace('function anonymous()\n{\n', '');
+ s = s.replace('\n}', '');
+ s = s.replace(/^return true;/gi, ''); // Remove event blocker
+
+ return s;
+ },
+
+ getControlHTML : function(c) {
+ var i, l, n, o, v;
+
+ l = tinyMCE.plugins;
+ for (n in l) {
+ o = l[n];
+
+ if (o.getControlHTML && (v = o.getControlHTML(c)) != '')
+ return tinyMCE.replaceVar(v, "pluginurl", o.baseURL);
+ }
+
+ o = tinyMCE.themes[tinyMCE.settings['theme']];
+ if (o.getControlHTML && (v = o.getControlHTML(c)) != '')
+ return v;
+
+ return '';
+ },
+
+ evalFunc : function(f, idx, a, o) {
+ var s = '(', i;
+
+ for (i=idx; i<a.length; i++) {
+ s += 'a[' + i + ']';
+
+ if (i < a.length-1)
+ s += ',';
+ }
+
+ s += ');';
+
+ return o ? eval("o." + f + s) : eval("f" + s);
+ },
+
+ 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(typeof(l) == "function"
? l : eval(l), 3, a)) == s && m > 0)
+ return true;
+
+ if (ins != null) {
+ for (i=0, l = ins.plugins; i<l.length; i++) {
+ o = tinyMCE.plugins[l[i]];
+
+ if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
+ return true;
}
- break;
+ }
- // Handle onclick
- case "onclick":
- case "mce_onclick":
- // Skip on MSIE < 6+
- if (tinyMCE.isMSIE5)
- break;
+ l = tinyMCE.themes;
+ for (on in l) {
+ o = l[on];
- // Fix onclick attrib
- if (tinyMCE.cleanup_on_save) {
- if (element_node.getAttribute("mce_onclick")) {
- attribName = "onclick";
- attribValue = "" + element_node.getAttribute("mce_onclick");
- }
- } else {
- if (attribName == "onclick" && !tinyMCE.cleanup_on_save)
- return null;
+ if (o[n] && (v = tinyMCE.evalFunc(n, 3, a, o)) == s && m > 0)
+ return true;
+ }
+
+ return false;
+ },
+
+ xmlEncode : function(s) {
+ return s ? ('' + s).replace(new RegExp('[<>&"\']',
'g'), function (c, b) {
+ switch (c) {
+ case '&':
+ return '&';
+
+ case '"':
+ return '"';
+
+ case '\'':
+ return '''; // ' is not working in MSIE
+
+ case '<':
+ return '<';
+
+ case '>':
+ return '>';
}
- break;
+ return c;
+ }) : s;
+ },
- // Convert the URLs of these
- case "href":
- case "src":
- // Fix for dragdrop/copy paste Mozilla issue
- if (!tinyMCE.isMSIE && attribName == "href" &&
element_node.getAttribute("mce_real_href"))
- attribValue = element_node.getAttribute("mce_real_href");
+ extend : function(p, np) {
+ var o = {};
- // Fix for dragdrop/copy paste Mozilla issue
- if (!tinyMCE.isMSIE && attribName == "src" &&
element_node.getAttribute("mce_real_src"))
- attribValue = element_node.getAttribute("mce_real_src");
+ o.parent = p;
- attribValue = eval(tinyMCE.cleanup_urlconvertor_callback + "(attribValue,
element_node, tinyMCE.cleanup_on_save);");
- break;
+ for (n in p)
+ o[n] = p[n];
- case "colspan":
- case "rowspan":
- // Not needed
- if (attribValue == "1")
- return null;
- break;
+ for (n in np)
+ o[n] = np[n];
- // Skip these
- case "_moz-userdefined":
- case "editorid":
- case "editor_id":
- case "mce_real_href":
- case "mce_real_src":
- return null;
+ 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;
+ }
}
- // Not the must be value
- if (attribMustBeValue != null) {
- var isCorrect = false;
- for (var i=0; i<attribMustBeValue.length; i++) {
- if (attribValue == attribMustBeValue[i]) {
- isCorrect = true;
- break;
- }
+ };
+
+// 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.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,
+ url_converter : 'TinyMCE_Cleanup.prototype._urlConverter',
+ indent : s.apply_source_formatting,
+ invalid_elements : s.invalid_elements,
+ verify_html : s.verify_html,
+ fix_content_duplication : s.fix_content_duplication
+ });
+
+ // Wrap old theme
+ t = this.settings['theme'];
+ if (!tinyMCE.hasTheme(t)) {
+ fn = tinyMCE.callbacks;
+ to = {};
+
+ for (i=0; i<fn.length; i++) {
+ if ((fu = window['TinyMCE_' + t + "_" + fn[i]]))
+ to[fn[i]] = fu;
}
- if (!isCorrect)
- return null;
+ tinyMCE.addTheme(t, to);
}
- var attrib = new Object();
+ // Wrap old plugins
+ this.plugins = new Array();
+ p = tinyMCE.getParam('plugins', '', true, ',');
+ if (p.length > 0) {
+ for (i=0; i<p.length; i++) {
+ pn = p[i];
- attrib.name = attribName;
- attrib.value = attribValue;
+ if (pn.charAt(0) == '-')
+ pn = pn.substring(1);
- return attrib;
-}
+ if (!tinyMCE.hasPlugin(pn)) {
+ fn = tinyMCE.callbacks;
+ to = {};
-function TinyMCE__verifyClass(node) {
- var className = node.getAttribute('class');
+ for (x=0; x<fn.length; x++) {
+ if ((fu = window['TinyMCE_' + pn + "_" + fn[x]]))
+ to[fn[x]] = fu;
+ }
- // Trim CSS class
- if (tinyMCE.isMSIE)
- var className = node.getAttribute('className');
+ tinyMCE.addPlugin(pn, to);
+ }
- if (tinyMCE.cleanup_verify_css_classes && tinyMCE.cleanup_on_save) {
- var csses = tinyMCE.getCSSClasses();
- nonDefinedCSS = true;
- for (var c=0; c<csses.length; c++) {
- if (csses[c] == className) {
- nonDefinedCSS = false;
- break;
- }
+ this.plugins[this.plugins.length] = pn;
}
+ }
+};
- if (nonDefinedCSS && className.indexOf('mce_') != 0) {
- node.removeAttribute('className');
- node.removeAttribute('class');
+TinyMCE_Control.prototype = {
+ selection : null,
+
+ settings : null,
+
+ cleanup : null,
+
+ getData : function(na) {
+ var o = this.data[na];
+
+ if (!o)
+ o = this.data[na] = {};
+
+ return o;
+ },
+
+ hasPlugin : function(n) {
+ var i;
+
+ for (i=0; i<this.plugins.length; i++) {
+ if (this.plugins[i] == n)
+ return true;
+ }
+
+ return false;
+ },
+
+ addPlugin : function(n, p) {
+ if (!this.hasPlugin(n)) {
+ tinyMCE.addPlugin(n, p);
+ this.plugins[this.plugins.length] = n;
+ }
+ },
+
+ repaint : function() {
+ var s, b, ex;
+
+ if (tinyMCE.isRealIE)
+ return;
+
+ try {
+ s = this.selection;
+ b = s.getBookmark(true);
+ this.getBody().style.display = 'none';
+ this.getDoc().execCommand('selectall', false, null);
+ this.getSel().collapseToStart();
+ this.getBody().style.display = 'block';
+ s.moveToBookmark(b);
+ } catch (ex) {
+ // Ignore
+ }
+ },
+
+ switchSettings : function() {
+ if (tinyMCE.configs.length > 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<scl.length; i++) {
+ if (sc.alt == scl[i].alt && sc.ctrl == scl[i].ctrl && sc.shift ==
scl[i].shift
+ && sc.charCode == scl[i].charCode && sc.keyCode == scl[i].keyCode) {
+ return false;
+ }
}
- }
- return true;
-}
+ scl[scl.length] = sc;
-function TinyMCE_cleanupNode(node) {
- var output = "";
+ return true;
+ },
- switch (node.nodeType) {
- case 1: // Element
- var elementData = tinyMCE._cleanupElementName(node.nodeName, node);
- var elementName = elementData ? elementData.element_name : null;
- var elementValidAttribs = elementData ? elementData.valid_attribs : null;
- var elementAttribs = "";
+ handleShortcut : function(e) {
+ var i, s = this.shortcuts, o;
- // Checking DOM tree for MSIE weirdness!!
- if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {
- var lookup = tinyMCE.cleanup_elementLookupTable;
+ for (i=0; i<s.length; i++) {
+ o = s[i];
- for (var i=0; i<lookup.length; i++) {
- // Found element reference else were, hmm?
- if (lookup[i] == node)
- return output;
- }
+ if (o.alt == e.altKey && o.ctrl == e.ctrlKey && (o.keyCode ==
e.keyCode || o.charCode == e.charCode)) {
+ if (o.cmd && (e.type == "keydown" || (e.type ==
"keypress" && !tinyMCE.isOpera)))
+ tinyMCE.execCommand(o.cmd, o.ui, o.val);
- // Add element to lookup table
- lookup[lookup.length] = node;
+ tinyMCE.cancelEvent(e);
+ return true;
}
+ }
- // Element not valid (only render children)
- if (!elementName) {
- if (node.hasChildNodes()) {
- for (var i=0; i<node.childNodes.length; i++)
- output += this.cleanupNode(node.childNodes[i]);
- }
+ return false;
+ },
- return output;
+ autoResetDesignMode : function() {
+ // Add fix for tab/style.display none/block problems in Gecko
+ if (!tinyMCE.isIE && this.isHidden() &&
tinyMCE.getParam('auto_reset_designmode'))
+ eval('try { this.getDoc().designMode = "On"; this.useCSS = false; }
catch(e) {}');
+ },
+
+ isHidden : function() {
+ var s;
+
+ if (tinyMCE.isIE)
+ return false;
+
+ s = this.getSel();
+
+ // Weird, wheres that cursor selection?
+ return (!s || !s.rangeCount || s.rangeCount == 0);
+ },
+
+ isDirty : function() {
+ // Is content modified and not in a submit procedure
+ return tinyMCE.trim(this.startContent) != tinyMCE.trim(this.getBody().innerHTML)
&& !tinyMCE.isNotDirty;
+ },
+
+ _mergeElements : function(scmd, pa, ch, override) {
+ if (scmd == "removeformat") {
+ pa.className = "";
+ pa.style.cssText = "";
+ ch.className = "";
+ ch.style.cssText = "";
+ return;
+ }
+
+ var st = tinyMCE.parseStyle(tinyMCE.getAttrib(pa, "style"));
+ var stc = tinyMCE.parseStyle(tinyMCE.getAttrib(ch, "style"));
+ var className = tinyMCE.getAttrib(pa, "class");
+
+ // Removed class adding due to bug #1478272
+ className = tinyMCE.getAttrib(ch, "class");
+
+ if (override) {
+ for (var n in st) {
+ if (typeof(st[n]) == 'function')
+ continue;
+
+ stc[n] = st[n];
}
+ } else {
+ for (var n in stc) {
+ if (typeof(stc[n]) == 'function')
+ continue;
- // Has mso/microsuck crap or empty attrib
- if (node.style && (node.style.cssText.indexOf('mso-') != -1 &&
tinyMCE.settings['auto_cleanup_word']) || node.style.cssText == "") {
- node.style.cssText = "";
- node.removeAttribute("style");
+ st[n] = stc[n];
}
+ }
- // Handle inline styles
- if (tinyMCE.cleanup_inline_styles)
- tinyMCE._fixInlineStyles(node);
+ tinyMCE.setAttrib(pa, "style", tinyMCE.serializeStyle(st));
+ tinyMCE.setAttrib(pa, "class", tinyMCE.trim(className));
+ ch.className = "";
+ ch.style.cssText = "";
+ ch.removeAttribute("class");
+ ch.removeAttribute("style");
+ },
- // Set attrib data
- if (elementValidAttribs) {
- for (var a=1; a<elementValidAttribs.length; a++) {
- var attribName, attribDefaultValue, attribForceValue, attribValue;
+ _setUseCSS : function(b) {
+ var d = this.getDoc();
- attribName = elementValidAttribs[a][0];
- attribDefaultValue = elementValidAttribs[a][1];
- attribForceValue = elementValidAttribs[a][2];
+ try {d.execCommand("useCSS", false, !b);} catch (ex) {}
+ try {d.execCommand("styleWithCSS", false, b);} catch (ex) {}
- if (attribDefaultValue || attribForceValue) {
- var attribValue = node.getAttribute(attribName);
- if (node.getAttribute(attribName) == null || node.getAttribute(attribName) ==
"")
- attribValue = attribDefaultValue;
+ if (!tinyMCE.getParam("table_inline_editing"))
+ try {d.execCommand('enableInlineTableEditing', false, "false");}
catch (ex) {}
- attribValue = attribForceValue ? attribForceValue : attribValue;
+ if (!tinyMCE.getParam("object_resizing"))
+ try {d.execCommand('enableObjectResizing', false, "false");} catch
(ex) {}
+ },
- // Is to generate id
- if (attribValue == "{$uid}")
- attribValue = "uid_" + (tinyMCE.cleanup_idCount++);
+ execCommand : function(command, user_interface, value) {
+ var doc = this.getDoc(), win = this.getWin(), focusElm = this.getFocusElement();
- node.setAttribute(attribName, attribValue);
- //alert(attribName + "=" + attribValue);
+ // Is not a undo specific command
+ if (!new
RegExp('mceStartTyping|mceEndTyping|mceBeginUndoLevel|mceEndUndoLevel|mceAddUndoLevel',
'gi').test(command))
+ this.undoBookmark = null;
+
+ // Mozilla issue
+ if (!tinyMCE.isIE && !this.useCSS) {
+ this._setUseCSS(false);
+ this.useCSS = true;
+ }
+
+ //debug("command: " + command + ", user_interface: " +
user_interface + ", value: " + value);
+ this.contentDocument = doc; // <-- Strange, unless this is applied Mozilla 1.3
breaks
+
+ if (tinyMCE.execCommandCallback(this, 'execcommand_callback',
'execCommand', this.editorId, this.getBody(), command, user_interface, value))
+ return;
+
+ // Fix align on images
+ if (focusElm && focusElm.nodeName == "IMG") {
+ var align = focusElm.getAttribute('align');
+ var img = command == "JustifyCenter" ? focusElm.cloneNode(false) :
focusElm;
+
+ switch (command) {
+ case "JustifyLeft":
+ if (align == 'left')
+ img.removeAttribute('align');
+ else
+ img.setAttribute('align', 'left');
+
+ // Remove the div
+ var div = focusElm.parentNode;
+ if (div && div.nodeName == "DIV" && div.childNodes.length
== 1 && div.parentNode)
+ div.parentNode.replaceChild(img, div);
+
+ this.selection.selectNode(img);
+ this.repaint();
+ tinyMCE.triggerNodeChange();
+ return;
+
+ case "JustifyCenter":
+ img.removeAttribute('align');
+
+ // Is centered
+ var div = tinyMCE.getParentElement(focusElm, "div");
+ if (div && div.style.textAlign == "center") {
+ // Remove div
+ if (div.nodeName == "DIV" && div.childNodes.length == 1
&& div.parentNode)
+ div.parentNode.replaceChild(img, div);
+ } else {
+ // Add div
+ var div = this.getDoc().createElement("div");
+ div.style.textAlign = 'center';
+ div.appendChild(img);
+ focusElm.parentNode.replaceChild(div, focusElm);
}
+
+ this.selection.selectNode(img);
+ this.repaint();
+ tinyMCE.triggerNodeChange();
+ return;
+
+ case "JustifyRight":
+ if (align == 'right')
+ img.removeAttribute('align');
+ else
+ img.setAttribute('align', 'right');
+
+ // Remove the div
+ var div = focusElm.parentNode;
+ if (div && div.nodeName == "DIV" && div.childNodes.length
== 1 && div.parentNode)
+ div.parentNode.replaceChild(img, div);
+
+ this.selection.selectNode(img);
+ this.repaint();
+ tinyMCE.triggerNodeChange();
+ return;
+ }
+ }
+
+ if (tinyMCE.settings['force_br_newlines']) {
+ var alignValue = "";
+
+ if (doc.selection.type != "Control") {
+ switch (command) {
+ case "JustifyLeft":
+ alignValue = "left";
+ break;
+
+ case "JustifyCenter":
+ alignValue = "center";
+ break;
+
+ case "JustifyFull":
+ alignValue = "justify";
+ break;
+
+ case "JustifyRight":
+ alignValue = "right";
+ break;
}
+
+ if (alignValue != "") {
+ var rng = doc.selection.createRange();
+
+ if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) !=
null)
+ divElm.setAttribute("align", alignValue);
+ else if (rng.pasteHTML && rng.htmlText.length > 0)
+ rng.pasteHTML('<div align="' + alignValue + '">' +
rng.htmlText + "</div>");
+
+ tinyMCE.triggerNodeChange();
+ return;
+ }
}
+ }
- // Remove non needed span elements
- if (elementName == "span" && tinyMCE.cleanup_trim_span_elements) {
- var re = new RegExp('^[ \t]+', 'g');
- var onlyWhiteSpace = true;
- for (var a=0; a<node.childNodes.length; a++) {
- var tmpNode = node.childNodes[a];
- if ((tmpNode.nodeType == 3 && !tmpNode.nodeValue.match(re)) ||
tmpNode.nodeName.toLowerCase() != "span") {
- onlyWhiteSpace = false;
+ 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 "FormatBlock":
+ if (!this.cleanup.isValid(value))
+ return true;
+
+ this.getDoc().execCommand(command, user_interface, value);
+ tinyMCE.triggerNodeChange();
+ break;
+
+ 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 (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, '<p>');
+ 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;
}
- // Count attributes
- tinyMCE._verifyClass(node);
- var numAttribs = 0;
- for (var i=0; i<node.attributes.length; i++) {
- if (node.attributes[i].specified)
- numAttribs++;
+ break;
+
+ 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;
}
- // Is not a valid span, remove it
- if (onlyWhiteSpace || numAttribs == 0) {
- if (node.hasChildNodes()) {
- for (var i=0; i<node.childNodes.length; i++)
- output += this.cleanupNode(node.childNodes[i]);
+ // 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', '');
}
- return output;
+ // Remove style/attribs from all children
+ var ch = tinyMCE.getNodeTree(parentElm, new Array(), 1);
+ for (var z=0; z<ch.length; z++) {
+ if (ch[z] == parentElm)
+ continue;
+
+ if (scmd == "setstyle")
+ tinyMCE.setStyleAttrib(ch[z], sname, '');
+
+ if (scmd == "setattrib")
+ tinyMCE.setAttrib(ch[z], sname, '');
+
+ if (scmd == "removeformat") {
+ ch[z].style.cssText = '';
+ tinyMCE.setAttrib(ch[z], 'class', '');
+ }
+ }
+ } else {
+ this._setUseCSS(false); // Bug in FF when running in fullscreen
+ doc.execCommand("FontName", false, "#mce_temp_font#");
+ var elementArray = tinyMCE.getElementsByAttributeValue(this.getBody(),
"font", "face", "#mce_temp_font#");
+
+ // Change them all
+ for (var x=0; x<elementArray.length; x++) {
+ elm = elementArray[x];
+ if (elm) {
+ var spanElm = doc.createElement(wrapper);
+
+ if (scmd == "setstyle")
+ tinyMCE.setStyleAttrib(spanElm, sname, svalue);
+
+ if (scmd == "setattrib")
+ tinyMCE.setAttrib(spanElm, sname, svalue);
+
+ if (scmd == "removeformat") {
+ spanElm.style.cssText = '';
+ tinyMCE.setAttrib(spanElm, 'class', '');
+ }
+
+ if (elm.hasChildNodes()) {
+ for (var i=0; i<elm.childNodes.length; i++)
+ spanElm.appendChild(elm.childNodes[i].cloneNode(true));
+ }
+
+ spanElm.setAttribute("mce_new", "true");
+ elm.parentNode.replaceChild(spanElm, elm);
+
+ // Remove style/attribs from all children
+ var ch = tinyMCE.getNodeTree(spanElm, new Array(), 1);
+ for (var z=0; z<ch.length; z++) {
+ if (ch[z] == spanElm)
+ continue;
+
+ if (scmd == "setstyle")
+ tinyMCE.setStyleAttrib(ch[z], sname, '');
+
+ if (scmd == "setattrib")
+ tinyMCE.setAttrib(ch[z], sname, '');
+
+ if (scmd == "removeformat") {
+ ch[z].style.cssText = '';
+ tinyMCE.setAttrib(ch[z], 'class', '');
+ }
+ }
+ }
+ }
}
- }
- // Add some visual aids
- if (elementName == "table" || elementName == "td") {
- // Handle visual aid
- if (tinyMCE.cleanup_visual_table_style != "") {
- // Find parent table
- var tableElement = node;
- if (elementName == "td")
- tableElement = tinyMCE.getParentElement(tableElement, "table");
+ // Cleaup wrappers
+ var nodes = doc.getElementsByTagName(wrapper);
+ for (var i=nodes.length-1; i>=0; i--) {
+ var elm = nodes[i];
+ var isNew = tinyMCE.getAttrib(elm, "mce_new") == "true";
- if (tableElement && tableElement.getAttribute("border") == 0) {
- if (tinyMCE.cleanup_visual_aid)
- elementAttribs += " style=" + '"' +
tinyMCE.cleanup_visual_table_style + '"';
+ 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);
+ }
}
- }
- // Handle element attributes
- if (node.attributes.length > 0) {
- for (var i=0; i<node.attributes.length; i++) {
- if (node.attributes[i].specified) {
- var attrib = tinyMCE._cleanupAttribute(elementValidAttribs, elementName,
node.attributes[i], node);
- if (attrib)
- elementAttribs += " " + attrib.name + "=" + '"' +
attrib.value + '"';
+ // 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('<span>', 'gi').test(tmp.innerHTML)) {
+ for (var x=0; x<elm.childNodes.length; x++) {
+ if (elm.parentNode != null)
+ elm.parentNode.insertBefore(elm.childNodes[x].cloneNode(true), elm);
+ }
+
+ elm.parentNode.removeChild(elm);
}
}
- //alert(elementAttribs);
- }
+ // Re add the visual aids
+ if (scmd == "removeformat")
+ tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
- // Add nbsp to some elements
- if ((elementName == "p" || elementName == "td") &&
(node.innerHTML == "" || node.innerHTML == " "))
- return "<" + elementName + elementAttribs +
"> </" + elementName + ">";
+ tinyMCE.triggerNodeChange();
- // Is MSIE script element
- if (tinyMCE.isMSIE && elementName == "script")
- return "<" + elementName + elementAttribs + ">" + node.text
+ "</" + elementName + ">";
+ break;
- // Clean up children
- if (node.hasChildNodes()) {
- // Force BR
- if (elementName == "p" && tinyMCE.cleanup_force_br_newlines)
- output += "<div" + elementAttribs + ">";
+ case "FontName":
+ if (value == null) {
+ var s = this.getSel();
+
+ // Find font and select it
+ if (tinyMCE.isGecko && s.isCollapsed) {
+ var f = tinyMCE.getParentElement(this.getFocusElement(), "font");
+
+ if (f != null)
+ this.selection.selectNode(f, false);
+ }
+
+ // Remove format
+ this.getDoc().execCommand("RemoveFormat", false, null);
+
+ // Collapse range if font was found
+ if (f != null && tinyMCE.isGecko) {
+ var r = this.getRng().cloneRange();
+ r.collapse(true);
+ s.removeAllRanges();
+ s.addRange(r);
+ }
+ } else
+ this.getDoc().execCommand('FontName', false, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+
+ return;
+
+ case "FontSize":
+ this.getDoc().execCommand('FontSize', false, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
+
+ return;
+
+ case "forecolor":
+ value = value == null ? this.foreColor : value;
+ value = tinyMCE.trim(value);
+ value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value :
'#' + value) : value;
+
+ this.foreColor = value;
+ this.getDoc().execCommand('forecolor', false, value);
+ break;
+
+ case "HiliteColor":
+ value = value == null ? this.backColor : value;
+ value = tinyMCE.trim(value);
+ value = value.charAt(0) != '#' ? (isNaN('0x' + value) ? value :
'#' + value) : value;
+ this.backColor = value;
+
+ if (tinyMCE.isGecko) {
+ this._setUseCSS(true);
+ this.getDoc().execCommand('hilitecolor', false, value);
+ this._setUseCSS(false);
+ } else
+ this.getDoc().execCommand('BackColor', false, value);
+ break;
+
+ case "Cut":
+ case "Copy":
+ case "Paste":
+ var cmdFailed = false;
+
+ // Try executing command
+ eval('try {this.getDoc().execCommand(command, user_interface, value);} catch (e)
{cmdFailed = true;}');
+
+ if (tinyMCE.isOpera && cmdFailed)
+ alert('Currently not supported by your browser, use keyboard shortcuts
instead.');
+
+ // Alert error in gecko if command failed
+ if (tinyMCE.isGecko && cmdFailed) {
+ // Confirm more info
+ if (confirm(tinyMCE.entityDecode(tinyMCE.getLang('lang_clipboard_msg'))))
+
window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.ht...;,
'mceExternal');
+
+ return;
+ } else
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceSetContent":
+ if (!value)
+ value = "";
+
+ // Call custom cleanup code
+ value = tinyMCE.storeAwayURLs(value);
+ value = tinyMCE._customCleanup(this, "insert_to_editor", value);
+
+ if (this.getBody().nodeName == 'BODY')
+ tinyMCE._setHTML(doc, value);
else
- output += "<" + elementName + elementAttribs + ">";
+ this.getBody().innerHTML = value;
- for (var i=0; i<node.childNodes.length; i++)
- output += this.cleanupNode(node.childNodes[i]);
+ tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, doc, this.settings,
this.getBody(), false, false, false, true));
+ tinyMCE.convertAllRelativeURLs(this.getBody());
- // Force BR
- if (elementName == "p" && tinyMCE.cleanup_force_br_newlines)
- output += "</div><br />";
+ // Cleanup any mess left from storyAwayURLs
+ tinyMCE._removeInternal(this.getBody());
+
+ // When editing always use fonts internaly
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertSpansToFonts(doc);
+
+ tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+ tinyMCE._setEventsEnabled(this.getBody(), false);
+ return true;
+
+ case "mceCleanup":
+ var b = this.selection.getBookmark();
+ tinyMCE._setHTML(this.contentDocument, this.getBody().innerHTML);
+ tinyMCE.setInnerHTML(this.getBody(), tinyMCE._cleanupHTML(this, this.contentDocument,
this.settings, this.getBody(), this.visualAid));
+ tinyMCE.convertAllRelativeURLs(doc.body);
+
+ // When editing always use fonts internaly
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertSpansToFonts(doc);
+
+ tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+ tinyMCE._setEventsEnabled(this.getBody(), false);
+ this.repaint();
+ this.selection.moveToBookmark(b);
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceReplaceContent":
+ // Force empty string
+ if (!value)
+ value = '';
+
+ this.getWin().focus();
+
+ var selectedText = "";
+
+ if (tinyMCE.isIE) {
+ var rng = doc.selection.createRange();
+ selectedText = rng.text;
+ } else
+ selectedText = this.getSel().toString();
+
+ if (selectedText.length > 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("SetStyleInfo", 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('<!--') != -1;
+
+ // Fix comment bug, add tag before comments
+ if (c)
+ value = tinyMCE.uniqueTag + value;
+
+ // tmpRng = rng.duplicate(); // Store away range (Fixes Undo bookmark bug in IE)
+
+ if (rng.item)
+ rng.item(0).outerHTML = value;
+ else
+ rng.pasteHTML(value);
+
+ //if (tmpRng)
+ // tmpRng.select(); // Restore range (Fixes Undo bookmark bug in IE)
+
+ // Remove unique tag
+ if (c) {
+ var e = this.getDoc().getElementById('mceTMPElement');
+ e.parentNode.removeChild(e);
+ }
+ }
+
+ tinyMCE.execCommand("mceAddUndoLevel");
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "mceStartTyping":
+ if (tinyMCE.settings['custom_undo_redo'] &&
this.undoRedo.typingUndoIndex == -1) {
+ this.undoRedo.typingUndoIndex = this.undoRedo.undoIndex;
+ tinyMCE.typingUndoIndex = tinyMCE.undoIndex;
+ this.execCommand('mceAddUndoLevel');
+ }
+ break;
+
+ case "mceEndTyping":
+ if (tinyMCE.settings['custom_undo_redo'] &&
this.undoRedo.typingUndoIndex != -1) {
+ this.execCommand('mceAddUndoLevel');
+ this.undoRedo.typingUndoIndex = -1;
+ }
+
+ tinyMCE.typingUndoIndex = -1;
+ break;
+
+ case "mceBeginUndoLevel":
+ this.undoRedoLevel = false;
+ break;
+
+ case "mceEndUndoLevel":
+ this.undoRedoLevel = true;
+ this.execCommand('mceAddUndoLevel');
+ break;
+
+ case "mceAddUndoLevel":
+ if (tinyMCE.settings['custom_undo_redo'] && this.undoRedoLevel) {
+ if (this.undoRedo.add())
+ tinyMCE.triggerNodeChange(false);
+ }
+ break;
+
+ case "Undo":
+ if (tinyMCE.settings['custom_undo_redo']) {
+ tinyMCE.execCommand("mceEndTyping");
+ this.undoRedo.undo();
+ tinyMCE.triggerNodeChange();
+ } else
+ this.getDoc().execCommand(command, user_interface, value);
+ break;
+
+ case "Redo":
+ if (tinyMCE.settings['custom_undo_redo']) {
+ tinyMCE.execCommand("mceEndTyping");
+ this.undoRedo.redo();
+ tinyMCE.triggerNodeChange();
+ } else
+ this.getDoc().execCommand(command, user_interface, value);
+ break;
+
+ case "mceToggleVisualAid":
+ this.visualAid = !this.visualAid;
+ tinyMCE.handleVisualAid(this.getBody(), true, this.visualAid, this);
+ tinyMCE.triggerNodeChange();
+ break;
+
+ case "Indent":
+ this.getDoc().execCommand(command, user_interface, value);
+ tinyMCE.triggerNodeChange();
+
+ if (tinyMCE.isIE) {
+ var n = tinyMCE.getParentElement(this.getFocusElement(), "blockquote");
+ do {
+ if (n && n.nodeName == "BLOCKQUOTE") {
+ n.removeAttribute("dir");
+ n.removeAttribute("style");
+ }
+ } while (n != null && (n = n.parentNode) != null);
+ }
+ break;
+
+ case "removeformat":
+ var text = this.selection.getSelectedText();
+
+ if (tinyMCE.isOpera) {
+ this.getDoc().execCommand("RemoveFormat", false, null);
+ return;
+ }
+
+ if (tinyMCE.isIE) {
+ try {
+ var rng = doc.selection.createRange();
+ rng.execCommand("RemoveFormat", false, null);
+ } catch (e) {
+ // Do nothing
+ }
+
+ this.execCommand("SetStyleInfo", false, {command :
"removeformat"});
+ } else {
+ this.getDoc().execCommand(command, user_interface, value);
+
+ this.execCommand("SetStyleInfo", false, {command :
"removeformat"});
+ }
+
+ // Remove class
+ if (text.length == 0)
+ this.execCommand("mceSetCSSClass", false, "");
+
+ tinyMCE.triggerNodeChange();
+ break;
+
+ default:
+ this.getDoc().execCommand(command, user_interface, value);
+
+ if (tinyMCE.isGecko)
+ window.setTimeout('tinyMCE.triggerNodeChange(false);', 1);
else
- output += "</" + elementName + ">";
- } else // No children
- output += "<" + elementName + elementAttribs + " />";
+ tinyMCE.triggerNodeChange();
+ }
- return output;
+ // Add undo level after modification
+ if (command != "mceAddUndoLevel" && command != "Undo"
&& command != "Redo" && command != "mceStartTyping"
&& command != "mceEndTyping")
+ tinyMCE.execCommand("mceAddUndoLevel");
+ },
- case 3: // Text
- // Do not convert script elements
- if (node.parentNode.nodeName.toLowerCase() == "script")
- return node.nodeValue;
+ queryCommandValue : function(c) {
+ try {
+ return this.getDoc().queryCommandValue(c);
+ } catch (e) {
+ return null;
+ }
+ },
- return this.convertStringToXML(node.nodeValue);
+ queryCommandState : function(c) {
+ return this.getDoc().queryCommandState(c);
+ },
- case 8: // Comment
- return "<!--" + node.nodeValue + "-->";
+ _onAdd : function(replace_element, form_element_name, target_document) {
+ var hc, th, to, editorTemplate;
- default: // Unknown
- return "[UNKNOWN NODETYPE " + node.nodeType + "]";
- }
-}
+ th = this.settings['theme'];
+ to = tinyMCE.themes[th];
-function TinyMCE_convertStringToXML(html_data) {
- var output = "";
+ var targetDoc = target_document ? target_document : document;
- for (var i=0; i<html_data.length; i++) {
- var chr = html_data.charCodeAt(i);
+ this.targetDoc = targetDoc;
- // Check if a name exists in lookup table
- if (typeof(tinyMCE.cleanup_entities["c" + chr]) != 'undefined'
&& tinyMCE.cleanup_entities["c" + chr] != '')
- output += '&' + tinyMCE.cleanup_entities["c" + chr] +
';';
+ tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" +
this.settings['theme'];
+ this.settings['themeurl'] = tinyMCE.themeURL;
+
+ if (!replace_element) {
+ alert("Error: Could not find the target element.");
+ return false;
+ }
+
+ if (to.getEditorTemplate)
+ editorTemplate = to.getEditorTemplate(this.settings, this.editorId);
+
+ var deltaWidth = editorTemplate['delta_width'] ?
editorTemplate['delta_width'] : 0;
+ var deltaHeight = editorTemplate['delta_height'] ?
editorTemplate['delta_height'] : 0;
+ var html = '<span id="' + this.editorId + '_parent"
class="mceEditorContainer">' + editorTemplate['html'];
+
+ html = tinyMCE.replaceVar(html, "editor_id", this.editorId);
+ this.settings['default_document'] = tinyMCE.baseURL + "/blank.htm";
+
+ this.settings['old_width'] = this.settings['width'];
+ this.settings['old_height'] = this.settings['height'];
+
+ // Set default width, height
+ if (this.settings['width'] == -1)
+ this.settings['width'] = replace_element.offsetWidth;
+
+ if (this.settings['height'] == -1)
+ this.settings['height'] = replace_element.offsetHeight;
+
+ // Try the style width
+ if (this.settings['width'] == 0)
+ this.settings['width'] = replace_element.style.width;
+
+ // Try the style height
+ if (this.settings['height'] == 0)
+ this.settings['height'] = replace_element.style.height;
+
+ // If no width/height then default to 320x240, better than nothing
+ if (this.settings['width'] == 0)
+ this.settings['width'] = 320;
+
+ if (this.settings['height'] == 0)
+ this.settings['height'] = 240;
+
+ this.settings['area_width'] = parseInt(this.settings['width']);
+ this.settings['area_height'] = parseInt(this.settings['height']);
+ this.settings['area_width'] += deltaWidth;
+ this.settings['area_height'] += deltaHeight;
+
+ this.settings['width_style'] = "" + this.settings['width'];
+ this.settings['height_style'] = "" +
this.settings['height'];
+
+ // Special % handling
+ if (("" + this.settings['width']).indexOf('%') != -1)
+ this.settings['area_width'] = "100%";
else
- output += '' + String.fromCharCode(chr);
- }
+ this.settings['width_style'] += 'px';
- return output;
-}
+ if (("" + this.settings['height']).indexOf('%') != -1)
+ this.settings['area_height'] = "100%";
+ else
+ this.settings['height_style'] += 'px';
-function TinyMCE__initCleanup() {
- function getElementName(chunk) {
- var pos;
+ if (("" + replace_element.style.width).indexOf('%') != -1) {
+ this.settings['width'] = replace_element.style.width;
+ this.settings['area_width'] = "100%";
+ this.settings['width_style'] = "100%";
+ }
- if ((pos = chunk.indexOf('/')) != -1)
- chunk = chunk.substring(0, pos);
+ if (("" + replace_element.style.height).indexOf('%') != -1) {
+ this.settings['height'] = replace_element.style.height;
+ this.settings['area_height'] = "100%";
+ this.settings['height_style'] = "100%";
+ }
- if ((pos = chunk.indexOf('[')) != -1)
- chunk = chunk.substring(0, pos);
+ html = tinyMCE.applyTemplate(html);
- return chunk;
- }
+ this.settings['width'] = this.settings['old_width'];
+ this.settings['height'] = this.settings['old_height'];
- // Parse valid elements and attributes
- var validElements = tinyMCE.settings["valid_elements"];
- validElements = validElements.split(',');
+ this.visualAid = this.settings['visual'];
+ this.formTargetElementId = form_element_name;
- // Handle extended valid elements
- var extendedValidElements = tinyMCE.settings["extended_valid_elements"];
- extendedValidElements = extendedValidElements.split(',');
- for (var i=0; i<extendedValidElements.length; i++) {
- var elementName = getElementName(extendedValidElements[i]);
- var skipAdd = false;
+ // Get replace_element contents
+ if (replace_element.nodeName == "TEXTAREA" || replace_element.nodeName ==
"INPUT")
+ this.startContent = replace_element.value;
+ else
+ this.startContent = replace_element.innerHTML;
- // Check if it's defined before, if so override that one
- for (var x=0; x<validElements.length; x++) {
- if (getElementName(validElements[x]) == elementName) {
- validElements[x] = extendedValidElements[i];
- skipAdd = true;
- break;
+ // If not text area or input
+ if (replace_element.nodeName != "TEXTAREA" &&
replace_element.nodeName != "INPUT") {
+ this.oldTargetElement = replace_element;
+
+ // Debug mode
+ if (tinyMCE.settings['debug']) {
+ hc = '<textarea wrap="off" id="' + form_element_name +
'" name="' + form_element_name + '" cols="100"
rows="15"></textarea>';
+ } else {
+ hc = '<input type="hidden" id="' + form_element_name +
'" name="' + form_element_name + '" />';
+ this.oldTargetElement.style.display = "none";
}
- }
- if (!skipAdd)
- validElements[validElements.length] = extendedValidElements[i];
- }
+ html += '</span>';
- for (var i=0; i<validElements.length; i++) {
- var item = validElements[i];
- item = item.replace('[','|');
- item = item.replace(']','');
+ if (tinyMCE.isGecko)
+ html = hc + html;
+ else
+ html += hc;
- // Split and convert
- var attribs = item.split('|');
- for (var x=0; x<attribs.length; x++)
- attribs[x] = attribs[x].toLowerCase();
+ // Output HTML and set editable
+ if (tinyMCE.isGecko) {
+ var rng = replace_element.ownerDocument.createRange();
+ rng.setStartBefore(replace_element);
- // Handle change elements
- attribs[0] = attribs[0].split('/');
+ var fragment = rng.createContextualFragment(html);
+ tinyMCE.insertAfter(fragment, replace_element);
+ } else
+ replace_element.insertAdjacentHTML("beforeBegin", html);
+ } else {
+ html += '</span>';
- // Handle default attribute values
- for (var x=1; x<attribs.length; x++) {
- var attribName = attribs[x];
- var attribDefault = null;
- var attribForce = null;
- var attribMustBe = null;
+ // Just hide the textarea element
+ this.oldTargetElement = replace_element;
- // Default value
- if ((pos = attribName.indexOf('=')) != -1) {
- attribDefault = attribName.substring(pos+1);
- attribName = attribName.substring(0, pos);
+ if (!tinyMCE.settings['debug'])
+ this.oldTargetElement.style.display = "none";
+
+ // Output HTML and set editable
+ if (tinyMCE.isGecko) {
+ var rng = replace_element.ownerDocument.createRange();
+ rng.setStartBefore(replace_element);
+
+ var fragment = rng.createContextualFragment(html);
+ tinyMCE.insertAfter(fragment, replace_element);
+ } else
+ replace_element.insertAdjacentHTML("beforeBegin", html);
+ }
+
+ // Setup iframe
+ var dynamicIFrame = false;
+ var tElm = targetDoc.getElementById(this.editorId);
+
+ if (!tinyMCE.isIE) {
+ // Node case is preserved in XML strict mode
+ if (tElm && (tElm.nodeName == "SPAN" || tElm.nodeName ==
"span")) {
+ tElm = tinyMCE._createIFrame(tElm, targetDoc);
+ dynamicIFrame = true;
}
- // Force check
- if ((pos = attribName.indexOf(':')) != -1) {
- attribForce = attribName.substring(pos+1);
- attribName = attribName.substring(0, pos);
+ this.targetElement = tElm;
+ this.iframeElement = tElm;
+ this.contentDocument = tElm.contentDocument;
+ this.contentWindow = tElm.contentWindow;
+
+ //this.getDoc().designMode = "on";
+ } else {
+ if (tElm && tElm.nodeName == "SPAN")
+ tElm = tinyMCE._createIFrame(tElm, targetDoc, targetDoc.parentWindow);
+ else
+ tElm = targetDoc.frames[this.editorId];
+
+ this.targetElement = tElm;
+ this.iframeElement = targetDoc.getElementById(this.editorId);
+
+ if (tinyMCE.isOpera) {
+ this.contentDocument = this.iframeElement.contentDocument;
+ this.contentWindow = this.iframeElement.contentWindow;
+ dynamicIFrame = true;
+ } else {
+ this.contentDocument = tElm.window.document;
+ this.contentWindow = tElm.window;
}
- // Force check
- if ((pos = attribName.indexOf('<')) != -1) {
- attribMustBe = attribName.substring(pos+1).split('?');
- attribName = attribName.substring(0, pos);
+ this.getDoc().designMode = "on";
+ }
+
+ // Setup base HTML
+ var doc = this.contentDocument;
+ if (dynamicIFrame) {
+ var html = tinyMCE.getParam('doctype') + '<html><head
xmlns="http://www.w3.org/1999/xhtml"><base href="' +
tinyMCE.settings['base_href'] + '"
/><title>blank_page</title><meta http-equiv="Content-Type"
content="text/html; charset=UTF-8"></head><body
class="mceContentBody"></body></html>';
+
+ try {
+ if (!this.isHidden())
+ this.getDoc().designMode = "on";
+
+ doc.open();
+ doc.write(html);
+ doc.close();
+ } catch (e) {
+ // Failed Mozilla 1.3
+ this.getDoc().location.href = tinyMCE.baseURL + "/blank.htm";
}
+ }
- attribs[x] = new Array(attribName, attribDefault, attribForce, attribMustBe);
+ // This timeout is needed in MSIE 5.5 for some odd reason
+ // it seems that the document.frames isn't initialized yet?
+ if (tinyMCE.isIE)
+ window.setTimeout("tinyMCE.addEventHandlers(tinyMCE.instances[\"" +
this.editorId + "\"]);", 1);
+
+ tinyMCE.setupContent(this.editorId, true);
+
+ return true;
+ },
+
+ setBaseHREF : function(u) {
+ var h, b, d, nl;
+
+ d = this.getDoc();
+ nl = d.getElementsByTagName("base");
+ b = nl.length > 0 ? nl[0] : null;
+
+ if (!b) {
+ nl = d.getElementsByTagName("head");
+ h = nl.length > 0 ? nl[0] : null;
+
+ b = d.createElement("base");
+ b.setAttribute('href', u);
+ h.appendChild(b);
+ } else {
+ if (u == "" || u == null)
+ b.parentNode.removeChild(b);
+ else
+ b.setAttribute('href', u);
}
+ },
- validElements[i] = attribs;
+ getHTML : function(r) {
+ var h, d = this.getDoc(), b = this.getBody();
+
+ if (r)
+ return b.innerHTML;
+
+ h = tinyMCE._cleanupHTML(this, d, this.settings, b, false, true, false, true);
+
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertSpansToFonts(d);
+
+ return h;
+ },
+
+ setHTML : function(h) {
+ this.execCommand('mceSetContent', false, h);
+ this.repaint();
+ },
+
+ getFocusElement : function() {
+ return this.selection.getFocusElement();
+ },
+
+ getSel : function() {
+ return this.selection.getSel();
+ },
+
+ getRng : function() {
+ return this.selection.getRng();
+ },
+
+ triggerSave : function(skip_cleanup, skip_callback) {
+ var e, nl = [], i, s;
+
+ this.switchSettings();
+ s = tinyMCE.settings;
+
+ // Force hidden tabs visible while serializing
+ if (tinyMCE.isRealIE) {
+ e = this.iframeElement;
+
+ do {
+ if (e.style && e.style.display == 'none') {
+ e.style.display = 'block';
+ nl[nl.length] = {elm : e, type : 'style'};
+ }
+
+ if (e.style && s.hidden_tab_class.length > 0 &&
e.className.indexOf(s.hidden_tab_class) != -1) {
+ e.className = s.display_tab_class;
+ nl[nl.length] = {elm : e, type : 'class'};
+ }
+ } while ((e = e.parentNode) != null)
+ }
+
+ tinyMCE.settings['preformatted'] = false;
+
+ // Default to false
+ if (typeof(skip_cleanup) == "undefined")
+ skip_cleanup = false;
+
+ // Default to false
+ if (typeof(skip_callback) == "undefined")
+ skip_callback = false;
+
+ tinyMCE._setHTML(this.getDoc(), this.getBody().innerHTML);
+
+ // Remove visual aids when cleanup is disabled
+ if (this.settings['cleanup'] == false) {
+ tinyMCE.handleVisualAid(this.getBody(), true, false, this);
+ tinyMCE._setEventsEnabled(this.getBody(), true);
+ }
+
+ tinyMCE._customCleanup(this, "submit_content_dom",
this.contentWindow.document.body);
+ var htm = skip_cleanup ? this.getBody().innerHTML : tinyMCE._cleanupHTML(this,
this.getDoc(), this.settings, this.getBody(), tinyMCE.visualAid, true, true);
+ htm = tinyMCE._customCleanup(this, "submit_content", htm);
+
+ if (!skip_callback && tinyMCE.settings['save_callback'] !=
"")
+ var content = eval(tinyMCE.settings['save_callback'] +
"(this.formTargetElementId,htm,this.getBody());");
+
+ // Use callback content if available
+ if ((typeof(content) != "undefined") && content != null)
+ htm = content;
+
+ // Replace some weird entities (Bug: #1056343)
+ htm = tinyMCE.regexpReplace(htm, "(", "(",
"gi");
+ htm = tinyMCE.regexpReplace(htm, ")", ")",
"gi");
+ htm = tinyMCE.regexpReplace(htm, ";", ";",
"gi");
+ htm = tinyMCE.regexpReplace(htm, """, """,
"gi");
+ htm = tinyMCE.regexpReplace(htm, "^", "^",
"gi");
+
+ if (this.formElement)
+ this.formElement.value = htm;
+
+ if (tinyMCE.isSafari && this.formElement)
+ this.formElement.innerText = htm;
+
+ // Hide them again (tabs in MSIE)
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].type == 'style')
+ nl[i].elm.style.display = 'none';
+ else
+ nl[i].elm.className = s.hidden_tab_class;
+ }
}
- var invalidElements = tinyMCE.settings['invalid_elements'].split(',');
- for (var i=0; i<invalidElements.length; i++)
- invalidElements[i] = invalidElements[i].toLowerCase();
+ };
- // Set these for performance
- tinyMCE.cleanup_validElements = validElements;
- tinyMCE.cleanup_invalidElements = invalidElements;
- tinyMCE.cleanup_verify_html = tinyMCE.settings['verify_html'];
- tinyMCE.cleanup_force_br_newlines = tinyMCE.settings['force_br_newlines'];
- tinyMCE.cleanup_urlconvertor_callback =
tinyMCE.settings['urlconvertor_callback'];
- tinyMCE.cleanup_verify_css_classes = tinyMCE.settings['verify_css_classes'];
- tinyMCE.cleanup_visual_table_style = tinyMCE.settings['visual_table_style'];
- tinyMCE.cleanup_apply_source_formatting =
tinyMCE.settings['apply_source_formatting'];
- tinyMCE.cleanup_urlconvertor_callback =
tinyMCE.settings['urlconvertor_callback'];
- tinyMCE.cleanup_trim_span_elements = tinyMCE.settings['trim_span_elements'];
- tinyMCE.cleanup_inline_styles = tinyMCE.settings['inline_styles'];
+/* file:jscripts/tiny_mce/classes/TinyMCE_Cleanup.class.js */
- // Setup entities
- tinyMCE.cleanup_entities = new Array();
- var entities = tinyMCE.getParam('entities', '', true, ',');
- for (var i=0; i<entities.length; i+=2)
- tinyMCE.cleanup_entities['c' + entities[i]] = entities[i+1];
-}
+TinyMCE_Engine.prototype.cleanupHTMLCode = function(s) {
+ s = s.replace(new RegExp('<p \\/>', 'gi'),
'<p> </p>');
+ s = s.replace(new RegExp('<p>\\s*<\\/p>', 'gi'),
'<p> </p>');
-function TinyMCE__cleanupHTML(doc, config, element, visual, on_save) {
- // Set these for performance
- tinyMCE.cleanup_visual_aid = visual;
- tinyMCE.cleanup_on_save = on_save;
- tinyMCE.cleanup_idCount = 0;
- tinyMCE.cleanup_elementLookupTable = new Array();
+ // Fix close BR elements
+ s = s.replace(new RegExp('<br>\\s*<\\/br>', 'gi'),
'<br />');
- var startTime = new Date().getTime();
+ // Open closed tags like <b/> to <b></b>
+ s = s.replace(new
RegExp('<(h[1-6]|p|div|address|pre|form|table|li|ol|ul|td|b|font|em|strong|i|strike|u|span|a|ul|ol|li|blockquote)([a-z]*)([^\\\\|>]*)\\/>',
'gi'), '<$1$2$3></$1$2>');
- tinyMCE._convertOnClick(element);
+ // Remove trailing space <b > to <b>
+ s = s.replace(new RegExp('\\s+></', 'gi'), '></');
- // Cleanup madness that breaks the editor in MSIE
- if (tinyMCE.isMSIE)
- element.innerHTML = tinyMCE.regexpReplace(element.innerHTML, '<!([^-(DOCTYPE)]*
)|<!/[^-]*>', '', 'gi');
+ // Close tags <img></img> to <img/>
+ s = s.replace(new RegExp('<(img|br|hr)([^>]*)><\\/(img|br|hr)>',
'gi'), '<$1$2 />');
- var html = this.cleanupNode(element);
+ // Weird MSIE bug, <p><hr /></p> breaks runtime?
+ if (tinyMCE.isIE)
+ s = s.replace(new RegExp('<p><hr \\/><\\/p>', 'gi'),
"<hr>");
- if (tinyMCE.settings['debug'])
- alert("Cleanup process executed in: " + (new Date().getTime()-startTime) +
" ms.");
+ // Weird tags will make IE error #bug: 1538495
+ if (tinyMCE.isIE)
+ s = s.replace(/<!(\s*)\/>/g, '');
- // Remove pesky HR paragraphs
- html = tinyMCE.regexpReplace(html, '<p><hr /></p>',
'<hr />');
- html = tinyMCE.regexpReplace(html, '<p> </p><hr
/><p> </p>', '<hr />');
+ // Convert relative anchors to absolute URLs ex: #something to file.htm#something
+ // Removed: Since local document anchors should never be forced absolute example
edit.php?id=something
+ //if (tinyMCE.getParam('convert_urls'))
+ // s = s.replace(new RegExp('(href=\"{0,1})(\\s*#)', 'gi'),
'$1' + tinyMCE.settings['document_base_url'] + "#");
- // Remove some mozilla crap
- if (!tinyMCE.isMSIE) {
- html = html.replace(new RegExp('<o:p _moz-userdefined="" />',
'g'), "");
+ return s;
+};
+
+TinyMCE_Engine.prototype.parseStyle = function(str) {
+ var ar = new Array();
+
+ if (str == null)
+ return ar;
+
+ var st = str.split(';');
+
+ tinyMCE.clearArray(ar);
+
+ for (var i=0; i<st.length; i++) {
+ if (st[i] == '')
+ continue;
+
+ var re = new RegExp('^\\s*([^:]*):\\s*(.*)\\s*$');
+ var pa = st[i].replace(re, '$1||$2').split('||');
+//tinyMCE.debug(str, pa[0] + "=" + pa[1], st[i].replace(re,
'$1||$2'));
+ if (pa.length == 2)
+ ar[pa[0].toLowerCase()] = pa[1];
}
- if (tinyMCE.settings['apply_source_formatting']) {
- html = html.replace(new RegExp('<(p|div)([^>]*)>', 'g'),
"\n<$1$2>\n");
- html = html.replace(new RegExp('<\/(p|div)([^>]*)>', 'g'),
"\n</$1$2>\n");
- html = html.replace(new RegExp('<br />', 'g'), "<br
/>\n");
+ return ar;
+};
+
+TinyMCE_Engine.prototype.compressStyle = function(ar, pr, sf, res) {
+ var box = new Array();
+
+ box[0] = ar[pr + '-top' + sf];
+ box[1] = ar[pr + '-left' + sf];
+ box[2] = ar[pr + '-right' + sf];
+ box[3] = ar[pr + '-bottom' + sf];
+
+ for (var i=0; i<box.length; i++) {
+ if (box[i] == null)
+ return;
+
+ for (var a=0; a<box.length; a++) {
+ if (box[a] != box[i])
+ return;
+ }
}
- if (tinyMCE.settings['force_br_newlines']) {
- var re = new RegExp('<p> </p>', 'g');
- html = html.replace(re, "<br />");
+ // They are all the same
+ ar[res] = box[0];
+ ar[pr + '-top' + sf] = null;
+ ar[pr + '-left' + sf] = null;
+ ar[pr + '-right' + sf] = null;
+ ar[pr + '-bottom' + sf] = null;
+};
+
+TinyMCE_Engine.prototype.serializeStyle = function(ar) {
+ var str = "";
+
+ // Compress box
+ tinyMCE.compressStyle(ar, "border", "", "border");
+ tinyMCE.compressStyle(ar, "border", "-width",
"border-width");
+ tinyMCE.compressStyle(ar, "border", "-color",
"border-color");
+ tinyMCE.compressStyle(ar, "border", "-style",
"border-style");
+ tinyMCE.compressStyle(ar, "padding", "", "padding");
+ tinyMCE.compressStyle(ar, "margin", "", "margin");
+
+ for (var key in ar) {
+ var val = ar[key];
+
+ if (typeof(val) == 'function')
+ continue;
+
+ if (key.indexOf('mso-') == 0)
+ continue;
+
+ if (val != null && val != '') {
+ val = '' + val; // Force string
+
+ // Fix style URL
+ val = val.replace(new RegExp("url\\(\\'?([^\\']*)\\'?\\)",
'gi'), "url('$1')");
+
+ // Convert URL
+ if (val.indexOf('url(') != -1 &&
tinyMCE.getParam('convert_urls')) {
+ var m = new RegExp("url\\('(.*?)'\\)").exec(val);
+
+ if (m.length > 1)
+ val = "url('" + eval(tinyMCE.getParam('urlconverter_callback')
+ "(m[1], null, true);") + "')";
+ }
+
+ // Force HEX colors
+ if (tinyMCE.getParam("force_hex_style_colors"))
+ val = tinyMCE.convertRGBToHex(val, true);
+
+ if (val != "url('')")
+ str += key.toLowerCase() + ": " + val + "; ";
+ }
}
- // Emtpy node, return empty
- if (html == "<br />" || html ==
"<p> </p>")
- html = "";
+ if (new RegExp('; $').test(str))
+ str = str.substring(0, str.length - 2);
- // Call custom cleanup code
- html = tinyMCE._customCleanup(on_save ? "get_from_editor" :
"insert_to_editor", html);
+ return str;
+};
- if (tinyMCE.settings["preformatted"])
- return "<pre>" + html + "</pre>";
+TinyMCE_Engine.prototype.convertRGBToHex = function(s, k) {
+ if (s.toLowerCase().indexOf('rgb') != -1) {
+ var re = new
RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)",
"gi");
+ var rgb = s.replace(re, "$1,$2,$3,$4,$5").split(',');
+ if (rgb.length == 5) {
+ r = parseInt(rgb[1]).toString(16);
+ g = parseInt(rgb[2]).toString(16);
+ b = parseInt(rgb[3]).toString(16);
- return html;
-}
+ r = r.length == 1 ? '0' + r : r;
+ g = g.length == 1 ? '0' + g : g;
+ b = b.length == 1 ? '0' + b : b;
-function TinyMCE_insertLink(href, target, title, onclick) {
- function setAttrib(element, name, value) {
- if (value != null && value != "")
- element.setAttribute(name, value);
- else
- element.removeAttribute(name);
+ s = "#" + r + g + b;
+
+ if (k)
+ s = rgb[0] + s + rgb[4];
+ }
}
- this.execCommand("mceAddUndoLevel");
+ return s;
+};
- if (this.selectedInstance && this.selectedElement &&
this.selectedElement.nodeName.toLowerCase() == "img") {
- var doc = this.selectedInstance.contentWindow.document;
+TinyMCE_Engine.prototype.convertHexToRGB = function(s) {
+ if (s.indexOf('#') != -1) {
+ s = s.replace(new RegExp('[^0-9A-F]', 'gi'), '');
+ return "rgb(" + parseInt(s.substring(0, 2), 16) + "," +
parseInt(s.substring(2, 4), 16) + "," + parseInt(s.substring(4, 6), 16) +
")";
+ }
- var linkElement = doc.createElement("a");
+ return s;
+};
- href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href,
linkElement);");
- setAttrib(linkElement, 'href', href);
- setAttrib(linkElement, 'target', target);
- setAttrib(linkElement, 'title', title);
- setAttrib(linkElement, 'mce_onclick', onclick);
+TinyMCE_Engine.prototype.convertSpansToFonts = function(doc) {
+ var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/,
'').split(',');
- linkElement.appendChild(this.selectedElement.cloneNode(true));
+ var h = doc.body.innerHTML;
+ h = h.replace(/<span/gi, '<font');
+ h = h.replace(/<\/span/gi, '</font');
+ tinyMCE.setInnerHTML(doc.body, h);
- this.selectedElement.parentNode.replaceChild(linkElement, this.selectedElement);
+ var s = doc.getElementsByTagName("font");
+ for (var i=0; i<s.length; i++) {
+ var size = tinyMCE.trim(s[i].style.fontSize).toLowerCase();
+ var fSize = 0;
- return;
+ for (var x=0; x<sizes.length; x++) {
+ if (sizes[x] == size) {
+ fSize = x + 1;
+ break;
+ }
+ }
+
+ if (fSize > 0) {
+ tinyMCE.setAttrib(s[i], 'size', fSize);
+ s[i].style.fontSize = '';
+ }
+
+ var fFace = s[i].style.fontFamily;
+ if (fFace != null && fFace != "") {
+ tinyMCE.setAttrib(s[i], 'face', fFace);
+ s[i].style.fontFamily = '';
+ }
+
+ var fColor = s[i].style.color;
+ if (fColor != null && fColor != "") {
+ tinyMCE.setAttrib(s[i], 'color', tinyMCE.convertRGBToHex(fColor));
+ s[i].style.color = '';
+ }
}
+};
- if (!this.linkElement && this.selectedInstance) {
- this.selectedInstance.contentDocument.execCommand("createlink", false,
"#mce_temp_url#");
- tinyMCE.linkElement =
this.getElementByAttributeValue(this.selectedInstance.contentDocument.body, "a",
"href", "#mce_temp_url#");
+TinyMCE_Engine.prototype.convertFontsToSpans = function(doc) {
+ var sizes = tinyMCE.getParam('font_size_style_values').replace(/\s+/,
'').split(',');
- var elementArray =
this.getElementsByAttributeValue(this.selectedInstance.contentDocument.body,
"a", "href", "#mce_temp_url#");
+ var h = doc.body.innerHTML;
+ h = h.replace(/<font/gi, '<span');
+ h = h.replace(/<\/font/gi, '</span');
+ tinyMCE.setInnerHTML(doc.body, h);
- for (var i=0; i<elementArray.length; i++) {
- href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href,
elementArray[i]);");
- setAttrib(elementArray[i], 'href', href);
- setAttrib(elementArray[i], 'mce_real_href', href);
- setAttrib(elementArray[i], 'target', target);
- setAttrib(elementArray[i], 'title', title);
- setAttrib(elementArray[i], 'mce_onclick', onclick);
+ var fsClasses = tinyMCE.getParam('font_size_classes');
+ if (fsClasses != '')
+ fsClasses = fsClasses.replace(/\s+/, '').split(',');
+ else
+ fsClasses = null;
+
+ var s = doc.getElementsByTagName("span");
+ for (var i=0; i<s.length; i++) {
+ var fSize, fFace, fColor;
+
+ fSize = tinyMCE.getAttrib(s[i], 'size');
+ fFace = tinyMCE.getAttrib(s[i], 'face');
+ fColor = tinyMCE.getAttrib(s[i], 'color');
+
+ if (fSize != "") {
+ fSize = parseInt(fSize);
+
+ if (fSize > 0 && fSize < 8) {
+ if (fsClasses != null)
+ tinyMCE.setAttrib(s[i], 'class', fsClasses[fSize-1]);
+ else
+ s[i].style.fontSize = sizes[fSize-1];
+ }
+
+ s[i].removeAttribute('size');
}
- tinyMCE.linkElement = elementArray[0];
+ if (fFace != "") {
+ s[i].style.fontFamily = fFace;
+ s[i].removeAttribute('face');
+ }
+
+ if (fColor != "") {
+ s[i].style.color = fColor;
+ s[i].removeAttribute('color');
+ }
}
+};
- if (this.linkElement) {
- href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href,
this.linkElement);");
- setAttrib(this.linkElement, 'href', href);
- setAttrib(this.linkElement, 'mce_real_href', href);
- setAttrib(this.linkElement, 'target', target);
- setAttrib(this.linkElement, 'title', title);
- setAttrib(this.linkElement, 'mce_onclick', onclick);
+TinyMCE_Engine.prototype.cleanupAnchors = function(doc) {
+ var i, cn, x, an = doc.getElementsByTagName("a");
+
+ // Loops backwards due to bug #1467987
+ for (i=an.length-1; i>=0; i--) {
+ if (tinyMCE.getAttrib(an[i], "name") != "" &&
tinyMCE.getAttrib(an[i], "href") == "") {
+ cn = an[i].childNodes;
+
+ for (x=cn.length-1; x>=0; x--)
+ tinyMCE.insertAfter(cn[x], an[i]);
+ }
}
+};
+
+TinyMCE_Engine.prototype.getContent = function(editor_id) {
+ if (typeof(editor_id) != "undefined")
+ tinyMCE.getInstanceById(editor_id).select();
+
+ if (tinyMCE.selectedInstance)
+ return tinyMCE.selectedInstance.getHTML();
+
+ return null;
+};
+
+TinyMCE_Engine.prototype._fixListElements = function(d) {
+ var nl, x, a = ['ol', 'ul'], i, n, p, r = new
RegExp('^(OL|UL)$'), np;
+
+ for (x=0; x<a.length; x++) {
+ nl = d.getElementsByTagName(a[x]);
+
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+ p = n.parentNode;
+
+ if (r.test(p.nodeName)) {
+ np = tinyMCE.prevNode(n, 'LI');
+
+ if (!np) {
+ np = d.createElement('li');
+ np.innerHTML = ' ';
+ np.appendChild(n);
+ p.insertBefore(np, p.firstChild);
+ } else
+ np.appendChild(n);
+ }
+ }
+ }
+};
+
+TinyMCE_Engine.prototype._fixTables = function(d) {
+ var nl, i, n, p, np, x, t;
+
+ nl = d.getElementsByTagName('table');
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+
+ if ((p = tinyMCE.getParentElement(n, 'p,div,h1,h2,h3,h4,h5,h6')) != null) {
+ np = p.cloneNode(false);
+ np.removeAttribute('id');
+
+ t = n;
+
+ while ((n = n.nextSibling))
+ np.appendChild(n);
+
+ tinyMCE.insertAfter(np, p);
+ tinyMCE.insertAfter(t, p);
+ }
+ }
+};
+
+TinyMCE_Engine.prototype._cleanupHTML = function(inst, doc, config, elm, visual, on_save,
on_submit, inn) {
+ var h, d, t1, t2, t3, t4, t5, c, s, nb;
+
+ if (!tinyMCE.getParam('cleanup'))
+ return elm.innerHTML;
+
+ on_save = typeof(on_save) == 'undefined' ? false : on_save;
+
+ c = inst.cleanup;
+ s = inst.settings;
+ d = c.settings.debug;
+
+ if (d)
+ t1 = new Date().getTime();
+
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertFontsToSpans(doc);
+
+ if (tinyMCE.getParam("fix_list_elements"))
+ tinyMCE._fixListElements(doc);
+
+ if (tinyMCE.getParam("fix_table_elements"))
+ tinyMCE._fixTables(doc);
+
+ // Call custom cleanup code
+ tinyMCE._customCleanup(inst, on_save ? "get_from_editor_dom" :
"insert_to_editor_dom", doc.body);
+
+ if (d)
+ t2 = new Date().getTime();
+
+ c.settings.on_save = on_save;
+ //for (var i=0; i<100; i++)
+
+ c.idCount = 0;
+ c.serializationId++;
+ c.serializedNodes = new Array();
+ c.sourceIndex = -1;
+
+ if (s.cleanup_serializer == "xml")
+ h = c.serializeNodeAsXML(elm, inn);
+ else
+ h = c.serializeNodeAsHTML(elm, inn);
+
+ if (d)
+ t3 = new Date().getTime();
+
+ // Post processing
+ nb = tinyMCE.getParam('entity_encoding') == 'numeric' ?
' ' : ' ';
+ h = h.replace(/<\/?(body|head|html)[^>]*>/gi, '');
+ h = h.replace(new RegExp(' (rowspan="1"|colspan="1")',
'g'), '');
+ h = h.replace(/<p><hr \/><\/p>/g, '<hr />');
+ h = h.replace(/<p>( | )<\/p><hr
\/><p>( | )<\/p>/g, '<hr />');
+ h = h.replace(/<td>\s*<br \/>\s*<\/td>/g, '<td>' + nb +
'</td>');
+ h = h.replace(/<p>\s*<br \/>\s*<\/p>/g, '<p>' + nb +
'</p>');
+ h = h.replace(/<br \/>$/, ''); // Remove last BR for Gecko
+ h = h.replace(/<br \/><\/p>/g, '</p>'); // Remove last BR in P
tags for Gecko
+ h = h.replace(/<p>\s*( | )\s*<br
\/>\s*( | )\s*<\/p>/g, '<p>' + nb +
'</p>');
+ h = h.replace(/<p>\s*( | )\s*<br \/>\s*<\/p>/g,
'<p>' + nb + '</p>');
+ h = h.replace(/<p>\s*<br \/>\s* \s*<\/p>/g,
'<p>' + nb + '</p>');
+ h = h.replace(new RegExp('<a>(.*?)<\\/a>', 'g'),
'$1');
+ h = h.replace(/<p([^>]*)>\s*<\/p>/g, '<p$1>' + nb +
'</p>');
+
+ // Clean body
+ if (/^\s*(<br
\/>|<p> <\/p>|<p> <\/p>|<p><\/p>)\s*$/.test(h))
+ h = '';
+
+ // If preformatted
+ if (s.preformatted) {
+ h = h.replace(/^<pre>/, '');
+ h = h.replace(/<\/pre>$/, '');
+ h = '<pre>' + h + '</pre>';
+ }
+
+ // Gecko specific processing
+ if (tinyMCE.isGecko) {
+ h = h.replace(/<o:p _moz-userdefined="" \/>/g, '');
+ h = h.replace(/<td([^>]*)>\s*<br \/>\s*<\/td>/g,
'<td$1>' + nb + '</td>');
+ }
+
+ if (s.force_br_newlines)
+ h = h.replace(/<p>( | )<\/p>/g, '<br />');
+
+ // Call custom cleanup code
+ h = tinyMCE._customCleanup(inst, on_save ? "get_from_editor" :
"insert_to_editor", h);
+
+ // Remove internal classes
+ if (on_save) {
+ h = h.replace(new RegExp(' ?(mceItem[a-zA-Z0-9]*|' + s.visual_table_class +
')', 'g'), '');
+ h = h.replace(new RegExp(' ?class=""', 'g'), '');
+ }
+
+ if (s.remove_linebreaks && !c.settings.indent)
+ h = h.replace(/\n|\r/g, ' ');
+
+ if (d)
+ t4 = new Date().getTime();
+
+ if (on_save && c.settings.indent)
+ h = c.formatHTML(h);
+
+ // If encoding (not recommended option)
+ if (on_submit && (s.encoding == "xml" || s.encoding ==
"html"))
+ h = c.xmlEncode(h);
+
+ if (d)
+ t5 = new Date().getTime();
+
+ if (c.settings.debug)
+ tinyMCE.debug("Cleanup in ms: Pre=" + (t2-t1) + ", Serialize: " +
(t3-t2) + ", Post: " + (t4-t3) + ", Format: " + (t5-t4) + ", Sum:
" + (t5-t1) + ".");
+
+ return h;
+};
+
+function TinyMCE_Cleanup() {
+ this.isIE = (navigator.appName == "Microsoft Internet Explorer");
+ this.rules = tinyMCE.clearArray(new Array());
+
+ // Default config
+ this.settings = {
+ indent_elements :
'head,table,tbody,thead,tfoot,form,tr,ul,ol,blockquote,object',
+ newline_before_elements :
'h1,h2,h3,h4,h5,h6,pre,address,div,ul,ol,li,meta,option,area,title,link,base,script,td',
+ newline_after_elements :
'br,hr,p,pre,address,div,ul,ol,meta,option,area,link,base,script',
+ newline_before_after_elements :
'html,head,body,table,thead,tbody,tfoot,tr,form,ul,ol,blockquote,p,object,param,hr,div',
+ indent_char : '\t',
+ indent_levels : 1,
+ entity_encoding : 'raw',
+ valid_elements : '*[*]',
+ entities : '',
+ url_converter : '',
+ invalid_elements : '',
+ verify_html : false
+ };
+
+ this.vElements = tinyMCE.clearArray(new Array());
+ this.vElementsRe = '';
+ this.closeElementsRe = /^(IMG|BR|HR|LINK|META|BASE|INPUT|AREA)$/;
+ this.codeElementsRe = /^(SCRIPT|STYLE)$/;
+ this.serializationId = 0;
+ this.mceAttribs = {
+ href : 'mce_href',
+ src : 'mce_src',
+ type : 'mce_type'
+ };
}
-function TinyMCE_insertImage(src, alt, border, hspace, vspace, width, height, align,
title, onmouseover, onmouseout) {
- this.execCommand("mceAddUndoLevel");
+TinyMCE_Cleanup.prototype = {
+ init : function(s) {
+ var n, a, i, ir, or, st;
- function setAttrib(element, name, value, no_fix_value) {
- if (!no_fix_value && value != null) {
- var re = new RegExp('[^0-9%]', 'g');
- value = value.replace(re, '');
+ for (n in s)
+ this.settings[n] = s[n];
+
+ // Setup code formating
+ s = this.settings;
+
+ // Setup regexps
+ this.inRe = this._arrayToRe(s.indent_elements.split(','), '',
'^<(', ')[^>]*');
+ this.ouRe = this._arrayToRe(s.indent_elements.split(','), '',
'^<\\/(', ')[^>]*');
+ this.nlBeforeRe = this._arrayToRe(s.newline_before_elements.split(','),
'gi', '<(', ')([^>]*)>');
+ this.nlAfterRe = this._arrayToRe(s.newline_after_elements.split(','),
'gi', '<(', ')([^>]*)>');
+ this.nlBeforeAfterRe =
this._arrayToRe(s.newline_before_after_elements.split(','), 'gi',
'<(\\/?)(', ')([^>]*)>');
+ this.serializedNodes = [];
+
+ if (s.invalid_elements != '')
+ this.iveRe = this._arrayToRe(s.invalid_elements.toUpperCase().split(','),
'g', '^(', ')$');
+ else
+ this.iveRe = null;
+
+ // Setup separator
+ st = '';
+ for (i=0; i<s.indent_levels; i++)
+ st += s.indent_char;
+
+ this.inStr = st;
+
+ // If verify_html if false force *[*]
+ if (!s.verify_html) {
+ s.valid_elements = '*[*]';
+ s.extended_valid_elements = '';
}
- if (value != null && value != "")
- element.setAttribute(name, value);
+ this.fillStr = s.entity_encoding == "named" ? " " :
" ";
+ this.idCount = 0;
+ },
+
+ addRuleStr : function(s) {
+ var r = this.parseRuleStr(s);
+ var n;
+
+ for (n in r) {
+ if (r[n])
+ this.rules[n] = r[n];
+ }
+
+ this.vElements = tinyMCE.clearArray(new Array());
+
+ for (n in this.rules) {
+ if (this.rules[n])
+ this.vElements[this.vElements.length] = this.rules[n].tag;
+ }
+
+ this.vElementsRe = this._arrayToRe(this.vElements, '');
+ },
+
+ isValid : function(n) {
+ this._setupRules(); // Will initialize cleanup rules
+
+ // Clean the name up a bit
+ n = n.replace(/[^a-z0-9]+/gi, '').toUpperCase();
+
+ return !tinyMCE.getParam('cleanup') || this.vElementsRe.test(n);
+ },
+
+ addChildRemoveRuleStr : function(s) {
+ var x, y, p, i, t, tn, ta, cl, r;
+
+ if (!s)
+ return;
+
+ ta = s.split(',');
+ for (x=0; x<ta.length; x++) {
+ s = ta[x];
+
+ // Split tag/children
+ p = this.split(/\[|\]/, s);
+ if (p == null || p.length < 1)
+ t = s.toUpperCase();
+ else
+ t = p[0].toUpperCase();
+
+ // Handle all tag names
+ tn = this.split('/', t);
+ for (y=0; y<tn.length; y++) {
+ r = "^(";
+
+ // Build regex
+ cl = this.split(/\|/, p[1]);
+ for (i=0; i<cl.length; i++) {
+ if (cl[i] == '%istrict')
+ r += tinyMCE.inlineStrict;
+ else if (cl[i] == '%itrans')
+ r += tinyMCE.inlineTransitional;
+ else if (cl[i] == '%istrict_na')
+ r += tinyMCE.inlineStrict.substring(2);
+ else if (cl[i] == '%itrans_na')
+ r += tinyMCE.inlineTransitional.substring(2);
+ else if (cl[i] == '%btrans')
+ r += tinyMCE.blockElms;
+ else if (cl[i] == '%strict')
+ r += tinyMCE.blockStrict;
+ else
+ r += (cl[i].charAt(0) != '#' ? cl[i].toUpperCase() : cl[i]);
+
+ r += (i != cl.length - 1 ? '|' : '');
+ }
+
+ r += ')$';
+//tinyMCE.debug(t + "=" + r);
+ if (this.childRules == null)
+ this.childRules = tinyMCE.clearArray(new Array());
+
+ this.childRules[tn[y]] = new RegExp(r);
+
+ if (p.length > 1)
+ this.childRules[tn[y]].wrapTag = p[2];
+ }
+ }
+ },
+
+ parseRuleStr : function(s) {
+ var ta, p, r, a, i, x, px, t, tn, y, av, or = tinyMCE.clearArray(new Array()), dv;
+
+ if (s == null || s.length == 0)
+ return or;
+
+ ta = s.split(',');
+ for (x=0; x<ta.length; x++) {
+ s = ta[x];
+ if (s.length == 0)
+ continue;
+
+ // Split tag/attrs
+ p = this.split(/\[|\]/, s);
+ if (p == null || p.length < 1)
+ t = s.toUpperCase();
+ else
+ t = p[0].toUpperCase();
+
+ // Handle all tag names
+ tn = this.split('/', t);
+ for (y=0; y<tn.length; y++) {
+ r = {};
+
+ r.tag = tn[y];
+ r.forceAttribs = null;
+ r.defaultAttribs = null;
+ r.validAttribValues = null;
+
+ // Handle prefixes
+ px = r.tag.charAt(0);
+ r.forceOpen = px == '+';
+ r.removeEmpty = px == '-';
+ r.fill = px == '#';
+ r.tag = r.tag.replace(/\+|-|#/g, '');
+ r.oTagName = tn[0].replace(/\+|-|#/g, '').toLowerCase();
+ r.isWild = new RegExp('\\*|\\?|\\+', 'g').test(r.tag);
+ r.validRe = new RegExp(this._wildcardToRe('^' + r.tag + '$'));
+
+ // Setup valid attributes
+ if (p.length > 1) {
+ r.vAttribsRe = '^(';
+ a = this.split(/\|/, p[1]);
+
+ for (i=0; i<a.length; i++) {
+ t = a[i];
+
+ if (t.charAt(0) == '!') {
+ a[i] = t = t.substring(1);
+
+ if (!r.reqAttribsRe)
+ r.reqAttribsRe = '\\s+(' + t;
+ else
+ r.reqAttribsRe += '|' + t;
+ }
+
+ av = new RegExp('(=|:|<)(.*?)$').exec(t);
+ t = t.replace(new RegExp('(=|:|<).*?$'), '');
+ if (av && av.length > 0) {
+ if (av[0].charAt(0) == ':') {
+ if (!r.forceAttribs)
+ r.forceAttribs = tinyMCE.clearArray(new Array());
+
+ r.forceAttribs[t.toLowerCase()] = av[0].substring(1);
+ } else if (av[0].charAt(0) == '=') {
+ if (!r.defaultAttribs)
+ r.defaultAttribs = tinyMCE.clearArray(new Array());
+
+ dv = av[0].substring(1);
+
+ r.defaultAttribs[t.toLowerCase()] = dv == "" ? "mce_empty" :
dv;
+ } else if (av[0].charAt(0) == '<') {
+ if (!r.validAttribValues)
+ r.validAttribValues = tinyMCE.clearArray(new Array());
+
+ r.validAttribValues[t.toLowerCase()] = this._arrayToRe(this.split('?',
av[0].substring(1)), 'i');
+ }
+ }
+
+ r.vAttribsRe += '' + t.toLowerCase() + (i != a.length - 1 ? '|' :
'');
+
+ a[i] = t.toLowerCase();
+ }
+
+ if (r.reqAttribsRe)
+ r.reqAttribsRe = new RegExp(r.reqAttribsRe + ')=\"', 'g');
+
+ r.vAttribsRe += ')$';
+ r.vAttribsRe = this._wildcardToRe(r.vAttribsRe);
+ r.vAttribsReIsWild = new RegExp('\\*|\\?|\\+',
'g').test(r.vAttribsRe);
+ r.vAttribsRe = new RegExp(r.vAttribsRe);
+ r.vAttribs = a.reverse();
+
+ //tinyMCE.debug(r.tag, r.oTagName, r.vAttribsRe, r.vAttribsReWC);
+ } else {
+ r.vAttribsRe = '';
+ r.vAttribs = tinyMCE.clearArray(new Array());
+ r.vAttribsReIsWild = false;
+ }
+
+ or[r.tag] = r;
+ }
+ }
+
+ return or;
+ },
+
+ serializeNodeAsXML : function(n) {
+ var s, b;
+
+ if (!this.xmlDoc) {
+ if (this.isIE) {
+ try {this.xmlDoc = new ActiveXObject('MSXML2.DOMDocument');} catch (e) {}
+
+ if (!this.xmlDoc)
+ try {this.xmlDoc = new ActiveXObject('Microsoft.XmlDom');} catch (e) {}
+ } else
+ this.xmlDoc = document.implementation.createDocument('', '', null);
+
+ if (!this.xmlDoc)
+ alert("Error XML Parser could not be found.");
+ }
+
+ if (this.xmlDoc.firstChild)
+ this.xmlDoc.removeChild(this.xmlDoc.firstChild);
+
+ b = this.xmlDoc.createElement("html");
+ b = this.xmlDoc.appendChild(b);
+
+ this._convertToXML(n, b);
+
+ if (this.isIE)
+ return this.xmlDoc.xml;
else
- element.removeAttribute(name);
+ return new XMLSerializer().serializeToString(this.xmlDoc);
+ },
+
+ _convertToXML : function(n, xn) {
+ var xd, el, i, l, cn, at, no, hc = false;
+
+ if (this._isDuplicate(n))
+ return;
+
+ xd = this.xmlDoc;
+
+ switch (n.nodeType) {
+ case 1: // Element
+ hc = n.hasChildNodes();
+
+ el = xd.createElement(n.nodeName.toLowerCase());
+
+ at = n.attributes;
+ for (i=at.length-1; i>-1; i--) {
+ no = at[i];
+
+ if (no.specified && no.nodeValue)
+ el.setAttribute(no.nodeName.toLowerCase(), no.nodeValue);
+ }
+
+ if (!hc && !this.closeElementsRe.test(n.nodeName))
+ el.appendChild(xd.createTextNode(""));
+
+ xn = xn.appendChild(el);
+ break;
+
+ case 3: // Text
+ xn.appendChild(xd.createTextNode(n.nodeValue));
+ return;
+
+ case 8: // Comment
+ xn.appendChild(xd.createComment(n.nodeValue));
+ return;
+ }
+
+ if (hc) {
+ cn = n.childNodes;
+
+ for (i=0, l=cn.length; i<l; i++)
+ this._convertToXML(cn[i], xn);
+ }
+ },
+
+ serializeNodeAsHTML : function(n, inn) {
+ var en, no, h = '', i, l, t, st, r, cn, va = false, f = false, at, hc, cr;
+
+ this._setupRules(); // Will initialize cleanup rules
+
+ if (this._isDuplicate(n))
+ return '';
+
+ // Skip non valid child elements
+ if (n.parentNode && this.childRules != null) {
+ cr = this.childRules[n.parentNode.nodeName];
+
+ if (typeof(cr) != "undefined" && !cr.test(n.nodeName)) {
+ st = true;
+ t = null;
+ }
+ }
+
+ switch (n.nodeType) {
+ case 1: // Element
+ hc = n.hasChildNodes();
+
+ if (st)
+ break;
+
+ // MSIE sometimes produces <//tag>
+ if ((tinyMCE.isRealIE) && n.nodeName.indexOf('/') != -1)
+ break;
+
+ if (this.vElementsRe.test(n.nodeName) && (!this.iveRe ||
!this.iveRe.test(n.nodeName)) && !inn) {
+ va = true;
+
+ r = this.rules[n.nodeName];
+ if (!r) {
+ at = this.rules;
+ for (no in at) {
+ if (at[no] && at[no].validRe.test(n.nodeName)) {
+ r = at[no];
+ break;
+ }
+ }
+ }
+
+ en = r.isWild ? n.nodeName.toLowerCase() : r.oTagName;
+ f = r.fill;
+
+ if (r.removeEmpty && !hc)
+ return "";
+
+ t = '<' + en;
+
+ if (r.vAttribsReIsWild) {
+ // Serialize wildcard attributes
+ at = n.attributes;
+ for (i=at.length-1; i>-1; i--) {
+ no = at[i];
+ if (no.specified && r.vAttribsRe.test(no.nodeName))
+ t += this._serializeAttribute(n, r, no.nodeName);
+ }
+ } else {
+ // Serialize specific attributes
+ for (i=r.vAttribs.length-1; i>-1; i--)
+ t += this._serializeAttribute(n, r, r.vAttribs[i]);
+ }
+
+ // Serialize mce_ atts
+ if (!this.settings.on_save) {
+ at = this.mceAttribs;
+
+ for (no in at) {
+ if (at[no])
+ t += this._serializeAttribute(n, r, at[no]);
+ }
+ }
+
+ // Check for required attribs
+ if (r.reqAttribsRe && !t.match(r.reqAttribsRe))
+ t = null;
+
+ // Close these
+ if (t != null && this.closeElementsRe.test(n.nodeName))
+ return t + ' />';
+
+ if (t != null)
+ h += t + '>';
+
+ if (this.isIE && this.codeElementsRe.test(n.nodeName))
+ h += n.innerHTML;
+ }
+ break;
+
+ case 3: // Text
+ if (st)
+ break;
+
+ if (n.parentNode && this.codeElementsRe.test(n.parentNode.nodeName))
+ return this.isIE ? '' : n.nodeValue;
+
+ return this.xmlEncode(n.nodeValue);
+
+ case 8: // Comment
+ if (st)
+ break;
+
+ return "<!--" + this._trimComment(n.nodeValue) + "-->";
+ }
+
+ if (hc) {
+ cn = n.childNodes;
+
+ for (i=0, l=cn.length; i<l; i++)
+ h += this.serializeNodeAsHTML(cn[i]);
+ }
+
+ // Fill empty nodes
+ if (f && !hc)
+ h += this.fillStr;
+
+ // End element
+ if (t != null && va)
+ h += '</' + en + '>';
+
+ 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 && this.settings.url_converter.length != 0
&& /^(src|href|longdesc)$/.test(an))
+ av = eval(this.settings.url_converter + '(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);
+
+ 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([^>]*)>(.*?)<\/pre>/gi, function (a, b, c) {
+ c = c.replace(/<br\s*\/>/gi, '\n');
+ return '<pre' + b + '>' + c + '</pre>';
+ });
+
+ 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) {
+ var cl = this;
+
+ this._setupEntities(); // Will intialize lookup table
+
+ switch (this.settings.entity_encoding) {
+ case "raw":
+ return tinyMCE.xmlEncode(s);
+
+ case "named":
+ return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']',
'g'), function (c, b) {
+ b = cl.entities[c.charCodeAt(0)];
+
+ return b ? '&' + b + ';' : c;
+ });
+
+ case "numeric":
+ return s.replace(new RegExp('[\u007F-\uFFFF<>&"\']',
'g'), 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<l; i++) {
+ if (c[i] != '')
+ o[i] = c[i];
+ }
+
+ return o;
+ },
+
+ _trimComment : function(s) {
+ // Remove mce_src, mce_href
+ s = s.replace(new RegExp('\\smce_src=\"[^\"]*\"', 'gi'),
"");
+ s = s.replace(new RegExp('\\smce_href=\"[^\"]*\"',
'gi'), "");
+
+ return s;
+ },
+
+ _getAttrib : function(e, n, d) {
+ if (typeof(d) == "undefined")
+ d = "";
+
+ if (!e || e.nodeType != 1)
+ return d;
+
+ var v = e.getAttribute(n, 0);
+
+ if (n == "class" && !v)
+ v = e.className;
+
+ if (this.isIE && n == "http-equiv")
+ v = e.httpEquiv;
+
+ if (this.isIE && e.nodeName == "FORM" && n ==
"enctype" && v == "application/x-www-form-urlencoded")
+ v = "";
+
+ if (this.isIE && e.nodeName == "INPUT" && n ==
"size" && v == "20")
+ v = "";
+
+ if (this.isIE && e.nodeName == "INPUT" && n ==
"maxlength" && v == "2147483647")
+ v = "";
+
+ if (n == "style" && !tinyMCE.isOpera)
+ v = e.style.cssText;
+
+ if (n == 'style')
+ v = tinyMCE.serializeStyle(tinyMCE.parseStyle(v));
+
+ if (this.settings.on_save && n.indexOf('on') != -1 &&
this.settings.on_save && v && v != "")
+ v = tinyMCE.cleanupEventStr(v);
+
+ return (v && v != "") ? '' + v : d;
+ },
+
+ _urlConverter : function(c, n, v) {
+ if (!c.settings.on_save)
+ return tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings.base_href, v);
+ else if (tinyMCE.getParam('convert_urls'))
+ return eval(tinyMCE.settings.urlconverter_callback + "(v, n, true);");
+
+ return v;
+ },
+
+ _arrayToRe : function(a, op, be, af) {
+ var i, r;
+
+ op = typeof(op) == "undefined" ? "gi" : op;
+ be = typeof(be) == "undefined" ? "^(" : be;
+ af = typeof(af) == "undefined" ? ")$" : af;
+
+ r = be;
+
+ for (i=0; i<a.length; i++)
+ r += this._wildcardToRe(a[i]) + (i != a.length-1 ? "|" : "");
+
+ r += af;
+
+ return new RegExp(r, op);
+ },
+
+ _wildcardToRe : function(s) {
+ s = s.replace(/\?/g, '(\\S?)');
+ s = s.replace(/\+/g, '(\\S+)');
+ s = s.replace(/\*/g, '(\\S*)');
+
+ return s;
+ },
+
+ _setupEntities : function() {
+ var n, a, i, s = this.settings;
+
+ // Setup entities
+ if (!this.entitiesDone) {
+ if (s.entity_encoding == "named") {
+ n = tinyMCE.clearArray(new Array());
+ a = this.split(',', s.entities);
+ for (i=0; i<a.length; i+=2)
+ n[a[i]] = a[i+1];
+
+ this.entities = n;
+ }
+
+ this.entitiesDone = true;
+ }
+ },
+
+ _setupRules : function() {
+ var s = this.settings;
+
+ // Setup default rule
+ if (!this.rulesDone) {
+ this.addRuleStr(s.valid_elements);
+ this.addRuleStr(s.extended_valid_elements);
+ this.addChildRemoveRuleStr(s.valid_child_elements);
+
+ this.rulesDone = true;
+ }
+ },
+
+ _isDuplicate : function(n) {
+ var i;
+
+ if (!this.settings.fix_content_duplication)
+ return false;
+
+ if (tinyMCE.isRealIE && n.nodeType == 1) {
+ // Mark elements
+ if (n.mce_serialized == this.serializationId)
+ return true;
+
+ n.setAttribute('mce_serialized', this.serializationId);
+ } else {
+ // Search lookup table for text nodes and comments
+ for (i=0; i<this.serializedNodes.length; i++) {
+ if (this.serializedNodes[i] == n)
+ return true;
+ }
+
+ this.serializedNodes[this.serializedNodes.length] = n;
+ }
+
+ return false;
}
- if (!this.imgElement && this.selectedInstance) {
- this.selectedInstance.contentDocument.execCommand("insertimage", false,
"#mce_temp_url#");
- tinyMCE.imgElement =
this.getElementByAttributeValue(this.selectedInstance.contentDocument.body,
"img", "src", "#mce_temp_url#");
+ };
+
+/* file:jscripts/tiny_mce/classes/TinyMCE_DOMUtils.class.js */
+
+TinyMCE_Engine.prototype.createTagHTML = function(tn, a, h) {
+ var o = '', f = tinyMCE.xmlEncode;
+
+ o = '<' + tn;
+
+ if (a) {
+ for (n in a) {
+ if (typeof(a[n]) != 'function' && a[n] != null)
+ o += ' ' + f(n) + '="' + f('' + a[n]) +
'"';
+ }
}
- if (this.imgElement) {
- src = eval(tinyMCE.settings['urlconvertor_callback'] + "(src,
tinyMCE.imgElement);");
+ o += !h ? ' />' : '>' + h + '</' + tn +
'>';
- // Use alt as title if it's undefined
- if (typeof(title) == "undefined")
- title = alt;
+ return o;
+};
- tinyMCE.setAttrib(this.imgElement, 'src', src, true);
- tinyMCE.setAttrib(this.imgElement, 'mce_real_src', src, true);
- tinyMCE.setAttrib(this.imgElement, 'alt', alt, true);
- tinyMCE.setAttrib(this.imgElement, 'title', title, true);
- tinyMCE.setAttrib(this.imgElement, 'align', align, true);
- tinyMCE.setAttrib(this.imgElement, 'border', border);
- tinyMCE.setAttrib(this.imgElement, 'hspace', hspace);
- tinyMCE.setAttrib(this.imgElement, 'vspace', vspace);
- tinyMCE.setAttrib(this.imgElement, 'width', width);
- tinyMCE.setAttrib(this.imgElement, 'height', height);
- tinyMCE.setAttrib(this.imgElement, 'border', border);
- tinyMCE.setAttrib(this.imgElement, 'onmouseover', onmouseover, true);
- tinyMCE.setAttrib(this.imgElement, 'onmouseout', onmouseout, true);
+TinyMCE_Engine.prototype.createTag = function(d, tn, a, h) {
+ var o = d.createElement(tn);
- // Fix for bug #989846 - Image resize bug
- if (width && width != "")
- this.imgElement.style.pixelWidth = width;
+ if (a) {
+ for (n in a) {
+ if (typeof(a[n]) != 'function' && a[n] != null)
+ tinyMCE.setAttrib(o, n, a[n]);
+ }
+ }
- if (height && height != "")
- this.imgElement.style.pixelHeight = height;
+ 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<nl.length; i++) {
+ if (tinyMCE.getAttrib(nl[i], a).indexOf(v) != -1)
+ o[o.length] = nl[i];
}
-}
-function TinyMCE_getElementByAttributeValue(node, element_name, attrib, value) {
- var elements = this.getElementsByAttributeValue(node, element_name, attrib, value);
- if (elements.length == 0)
- return null;
+ return o;
+};
- return elements[0];
-}
+TinyMCE_Engine.prototype.isBlockElement = function(n) {
+ return n != null && n.nodeType == 1 &&
this.blockRegExp.test(n.nodeName);
+};
-function TinyMCE_getElementsByAttributeValue(node, element_name, attrib, value) {
- var elements = new Array();
+TinyMCE_Engine.prototype.getParentBlockElement = function(n, r) {
+ return this.getParentNode(n, function(n) {
+ return tinyMCE.isBlockElement(n);
+ }, r);
- if (node && node.nodeName.toLowerCase() == element_name) {
- if (node.getAttribute(attrib).indexOf(value) != -1)
- elements[elements.length] = node;
+ return null;
+};
+
+TinyMCE_Engine.prototype.insertAfter = function(n, r){
+ if (r.nextSibling)
+ r.parentNode.insertBefore(n, r.nextSibling);
+ else
+ r.parentNode.appendChild(n);
+};
+
+TinyMCE_Engine.prototype.setInnerHTML = function(e, h) {
+ var i, nl, n;
+
+ // Convert all strong/em to b/i in Gecko
+ if (tinyMCE.isGecko) {
+ h = h.replace(/<strong/gi, '<b');
+ h = h.replace(/<em(\/?)/gi, '<i');
+ h = h.replace(/<em /gi, '<i');
+ h = h.replace(/<\/strong>/gi, '</b>');
+ h = h.replace(/<\/em>/gi, '</i>');
}
- if (node.hasChildNodes) {
- for (var x=0; x<node.childNodes.length; x++) {
- var childElements = this.getElementsByAttributeValue(node.childNodes[x], element_name,
attrib, value);
- for (var i=0; i<childElements.length; i++)
- elements[elements.length] = childElements[i];
+ if (tinyMCE.isRealIE) {
+ // Since MSIE handles invalid HTML better that valid XHTML we
+ // need to make some things invalid. <hr /> gets converted to <hr>.
+ 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(/<p([^>]*)>\u00A0?<\/p>/gi, '<p$1
mce_keep="true"> </p>'); // Keep empty paragraphs
+ h = h.replace(/<p([^>]*)>\s* \s*<\/p>/gi, '<p$1
mce_keep="true"> </p>'); // Keep empty paragraphs
+ h = h.replace(/<p([^>]*)>\s+<\/p>/gi, '<p$1
mce_keep="true"> </p>'); // 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);
}
+};
- return elements;
-}
+TinyMCE_Engine.prototype.getOuterHTML = function(e) {
+ if (tinyMCE.isIE)
+ return e.outerHTML;
-function TinyMCE_getParentElement(node, names, attrib_name, attrib_value) {
- var namesAr = names.split(',');
+ var d = e.ownerDocument.createElement("body");
+ d.appendChild(e.cloneNode(true));
+ return d.innerHTML;
+};
- if (node == null)
- return null;
+TinyMCE_Engine.prototype.setOuterHTML = function(e, h, d) {
+ var d = typeof(d) == "undefined" ? e.ownerDocument : d, i, nl, t;
- do {
- for (var i=0; i<namesAr.length; i++) {
- if (node.nodeName.toLowerCase() == namesAr[i].toLowerCase() || names == "*")
{
- if (typeof(attrib_name) == "undefined")
- return node;
- else if (node.getAttribute(attrib_name)) {
- if (typeof(attrib_value) == "undefined") {
- if (node.getAttribute(attrib_name) != "")
- return node;
- } else if (node.getAttribute(attrib_name) == attrib_value)
- return node;
+ if (tinyMCE.isIE && e.nodeType == 1)
+ e.outerHTML = h;
+ else {
+ t = d.createElement("body");
+ t.innerHTML = h;
+
+ for (i=0, nl=t.childNodes; i<nl.length; i++)
+ e.parentNode.insertBefore(nl[i].cloneNode(true), e);
+
+ e.parentNode.removeChild(e);
+ }
+};
+
+TinyMCE_Engine.prototype._getElementById = function(id, d) {
+ var e, i, j, f;
+
+ if (typeof(d) == "undefined")
+ d = document;
+
+ e = d.getElementById(id);
+ if (!e) {
+ f = d.forms;
+
+ for (i=0; i<f.length; i++) {
+ for (j=0; j<f[i].elements.length; j++) {
+ if (f[i].elements[j].name == id) {
+ e = f[i].elements[j];
+ break;
}
}
}
- } while (node = node.parentNode);
+ }
+ return e;
+};
+
+TinyMCE_Engine.prototype.getNodeTree = function(n, na, t, nn) {
+ return this.selectNodes(n, function(n) {
+ return (!t || n.nodeType == t) && (!nn || n.nodeName == nn);
+ }, na ? na : new Array());
+};
+
+TinyMCE_Engine.prototype.getParentElement = function(n, na, f, r) {
+ var re = na ? new RegExp('^(' + na.toUpperCase().replace(/,/g, '|') +
')$') : 0, v;
+
+ // Compatiblity with old scripts where f param was a attribute string
+ if (f && typeof(f) == 'string')
+ return this.getParentElement(n, na, function(no) {return tinyMCE.getAttrib(no, f) !=
'';});
+
+ return this.getParentNode(n, function(n) {
+ return ((n.nodeType == 1 && !re) || (re && re.test(n.nodeName)))
&& (!f || f(n));
+ }, r);
+};
+
+TinyMCE_Engine.prototype.getParentNode = function(n, f, r) {
+ while (n) {
+ if (n == r)
+ return null;
+
+ if (f(n))
+ return n;
+
+ n = n.parentNode;
+ }
+
return null;
-}
+};
-function TinyMCE_convertURL(url, node, on_save) {
- var fileProto = (document.location.protocol == "file:");
+TinyMCE_Engine.prototype.getAttrib = function(elm, name, dv) {
+ var v;
- // Something is wrong, remove weirdness
- url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
+ if (typeof(dv) == "undefined")
+ dv = "";
- // 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;
+ // Not a element
+ if (!elm || elm.nodeType != 1)
+ return dv;
- // Fix relative/Mozilla
- if (!tinyMCE.isMSIE && !on_save && url.indexOf("://") == -1
&& url.charAt(0) != '/')
- return tinyMCE.settings['base_href'] + url;
+ v = elm.getAttribute(name);
- // Convert to relative urls
- if (on_save && tinyMCE.settings['relative_urls']) {
- var urlParts = tinyMCE.parseURL(url);
+ // Try className for class attrib
+ if (name == "class" && !v)
+ v = elm.className;
- // If not absolute url, do nothing (Mozilla)
- if (!urlParts['protocol'] && !tinyMCE.isMSIE) {
- var urlPrefix = "http://";
- urlPrefix += document.location.hostname;
- if (document.location.port != "")
- urlPrefix += document.location.port;
+ // Workaround for a issue with Firefox 1.5rc2+
+ if (tinyMCE.isGecko && name == "src" && elm.src != null
&& elm.src != "")
+ v = elm.src;
- url = urlPrefix + url;
- urlParts = tinyMCE.parseURL(url);
+ // Workaround for a issue with Firefox 1.5rc2+
+ if (tinyMCE.isGecko && name == "href" && elm.href != null
&& elm.href != "")
+ v = elm.href;
+
+ if (name == "http-equiv" && tinyMCE.isIE)
+ v = elm.httpEquiv;
+
+ if (name == "style" && !tinyMCE.isOpera)
+ v = elm.style.cssText;
+
+ return (v && v != "") ? v : dv;
+};
+
+TinyMCE_Engine.prototype.setAttrib = function(el, name, va, fix) {
+ if (typeof(va) == "number" && va != null)
+ va = "" + va;
+
+ if (fix) {
+ if (va == null)
+ va = "";
+
+ va = va.replace(/[^0-9%]/g, '');
+ }
+
+ if (name == "style")
+ el.style.cssText = va;
+
+ if (name == "class")
+ el.className = va;
+
+ if (va != null && va != "" && va != -1)
+ el.setAttribute(name, va);
+ else
+ el.removeAttribute(name);
+};
+
+TinyMCE_Engine.prototype.setStyleAttrib = function(e, n, v) {
+ e.style[n] = v;
+
+ // Style attrib deleted in IE
+ if (tinyMCE.isIE && v == null || v == '') {
+ v = tinyMCE.serializeStyle(tinyMCE.parseStyle(e.style.cssText));
+ e.style.cssText = v;
+ e.setAttribute("style", v);
+ }
+};
+
+TinyMCE_Engine.prototype.switchClass = function(ei, c) {
+ var e;
+
+ if (tinyMCE.switchClassCache[ei])
+ e = tinyMCE.switchClassCache[ei];
+ else
+ e = tinyMCE.switchClassCache[ei] = document.getElementById(ei);
+
+ if (e) {
+ // Keep tile mode
+ if (tinyMCE.settings.button_tile_map && e.className &&
e.className.indexOf('mceTiledButton') == 0)
+ c = 'mceTiledButton ' + c;
+
+ e.className = c;
+ }
+};
+
+TinyMCE_Engine.prototype.getAbsPosition = function(n, cn) {
+ var l = 0, t = 0;
+
+ while (n && n != cn) {
+ l += n.offsetLeft;
+ t += n.offsetTop;
+ n = n.offsetParent;
+ }
+
+ return {absLeft : l, absTop : t};
+};
+
+TinyMCE_Engine.prototype.prevNode = function(e, n) {
+ var a = n.split(','), i;
+
+ while ((e = e.previousSibling) != null) {
+ for (i=0; i<a.length; i++) {
+ if (e.nodeName == a[i])
+ return e;
}
+ }
- var tmpUrlParts = tinyMCE.parseURL(tinyMCE.settings['document_base_url']);
+ return null;
+};
- // Link is within this site
- if (urlParts['host'] == tmpUrlParts['host'] &&
(!urlParts['port'] || urlParts['port'] == tmpUrlParts['port']))
- return
tinyMCE.convertAbsoluteURLToRelativeURL(tinyMCE.settings['document_base_url'],
url);
+TinyMCE_Engine.prototype.nextNode = function(e, n) {
+ var a = n.split(','), i;
+
+ while ((e = e.nextSibling) != null) {
+ for (i=0; i<a.length; i++) {
+ if (e.nodeName == a[i])
+ return e;
+ }
}
- // Remove current domain
- if (!fileProto && tinyMCE.settings['remove_script_host']) {
- var start = document.location.protocol + "//" + document.location.hostname +
"/";
+ return null;
+};
- if (url.indexOf(start) == 0)
- url = url.substring(start.length-1);
+TinyMCE_Engine.prototype.selectElements = function(n, na, f) {
+ var i, a = [], nl, x;
- // Add first slash if missing on a absolute URL
- if (!tinyMCE.settings['relative_urls'] && url.indexOf('://') ==
-1 && url.charAt(0) != '/')
- url = '/' + url;
+ for (x=0, na = na.split(','); x<na.length; x++)
+ for (i=0, nl = n.getElementsByTagName(na[x]); i<nl.length; i++)
+ (!f || f(nl[i])) && a.push(nl[i]);
+
+ return a;
+};
+
+TinyMCE_Engine.prototype.selectNodes = function(n, f, a) {
+ var i;
+
+ if (!a)
+ a = new Array();
+
+ if (f(n))
+ a[a.length] = n;
+
+ if (n.hasChildNodes()) {
+ for (i=0; i<n.childNodes.length; i++)
+ tinyMCE.selectNodes(n.childNodes[i], f, a);
}
- return url;
-}
+ return a;
+};
-/**
- * Parses a URL in to its diffrent components.
- */
-function TinyMCE_parseURL(url_str) {
+TinyMCE_Engine.prototype.addCSSClass = function(e, c, b) {
+ var o = this.removeCSSClass(e, c);
+ return e.className = b ? c + (o != '' ? (' ' + o) : '') : (o !=
'' ? (o + ' ') : '') + c;
+};
+
+TinyMCE_Engine.prototype.removeCSSClass = function(e, c) {
+ c = e.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"),
' ');
+ return e.className = c != ' ' ? c : '';
+};
+
+TinyMCE_Engine.prototype.hasCSSClass = function(n, c) {
+ return new RegExp('\\b' + c + '\\b', 'g').test(n.className);
+};
+
+TinyMCE_Engine.prototype.renameElement = function(e, n, d) {
+ var ne, i, ar;
+
+ d = typeof(d) == "undefined" ? tinyMCE.selectedInstance.getDoc() : d;
+
+ if (e) {
+ ne = d.createElement(n);
+
+ ar = e.attributes;
+ for (i=ar.length-1; 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<ar.length; i++)
+ ne.appendChild(ar[i].cloneNode(true));
+
+ e.parentNode.replaceChild(ne, e);
+ }
+};
+
+TinyMCE_Engine.prototype.getViewPort = function(w) {
+ var d = w.document, m = d.compatMode == 'CSS1Compat', b = d.body, de =
d.documentElement;
+
+ return {
+ left : w.pageXOffset || (m ? de.scrollLeft : b.scrollLeft),
+ top : w.pageYOffset || (m ? de.scrollTop : b.scrollTop),
+ width : w.innerWidth || (m ? de.clientWidth : b.clientWidth),
+ height : w.innerHeight || (m ? de.clientHeight : b.clientHeight)
+ };
+};
+
+/* file:jscripts/tiny_mce/classes/TinyMCE_URL.class.js */
+
+TinyMCE_Engine.prototype.parseURL = function(url_str) {
var urlParts = new Array();
if (url_str) {
@@ -2074,6 +5442,7 @@
urlParts['host'] = url_str.substring(lastPos, pos);
// Get port
+ urlParts['port'] = "";
lastPos = pos;
if (url_str.charAt(pos) == ':') {
pos = url_str.indexOf('/', lastPos);
@@ -2083,7 +5452,11 @@
// Get path
lastPos = pos;
pos = url_str.indexOf('?', lastPos);
+
if (pos == -1)
+ pos = url_str.indexOf('#', lastPos);
+
+ if (pos == -1)
pos = url_str.length;
urlParts['path'] = url_str.substring(lastPos, pos);
@@ -2091,27 +5464,64 @@
// Get query
lastPos = pos;
if (url_str.charAt(pos) == '?') {
- pos = url_str.length;
+ pos = url_str.indexOf('#');
+ pos = (pos == -1) ? url_str.length : pos;
urlParts['query'] = url_str.substring(lastPos+1, pos);
}
+
+ // Get anchor
+ lastPos = pos;
+ if (url_str.charAt(pos) == '#') {
+ pos = url_str.length;
+ urlParts['anchor'] = url_str.substring(lastPos+1, pos);
+ }
}
return urlParts;
-}
+};
-/**
- * Converts an absolute path to relative path.
- */
-function TinyMCE_convertAbsoluteURLToRelativeURL(base_url, url_to_relative) {
+TinyMCE_Engine.prototype.serializeURL = function(up) {
+ var o = "";
+
+ if (up['protocol'])
+ o += up['protocol'] + "://";
+
+ if (up['host'])
+ o += up['host'];
+
+ if (up['port'])
+ o += ":" + up['port'];
+
+ if (up['path'])
+ o += up['path'];
+
+ if (up['query'])
+ o += "?" + up['query'];
+
+ if (up['anchor'])
+ o += "#" + up['anchor'];
+
+ return o;
+};
+
+TinyMCE_Engine.prototype.convertAbsoluteURLToRelativeURL = function(base_url,
url_to_relative) {
+ var baseURL = this.parseURL(base_url);
+ var targetURL = this.parseURL(url_to_relative);
var strTok1;
var strTok2;
var breakPoint = 0;
- var outputString = "";
+ var outPath = "";
+ var forceSlash = false;
+ if (targetURL.path == "")
+ targetURL.path = "/";
+ else
+ forceSlash = true;
+
// Crop away last path part
- base_url = base_url.substring(0, base_url.lastIndexOf('/'));
+ base_url = baseURL.path.substring(0, baseURL.path.lastIndexOf('/'));
strTok1 = base_url.split('/');
- strTok2 = url_to_relative.split('/');
+ strTok2 = targetURL.path.split('/');
if (strTok1.length >= strTok2.length) {
for (var i=0; i<strTok1.length; i++) {
@@ -2132,1502 +5542,1743 @@
}
if (breakPoint == 1)
- return url_to_relative;
+ return targetURL.path;
for (var i=0; i<(strTok1.length-(breakPoint-1)); i++)
- outputString += "../";
+ outPath += "../";
for (var i=breakPoint-1; i<strTok2.length; i++) {
if (i != (breakPoint-1))
- outputString += "/" + strTok2[i];
+ outPath += "/" + strTok2[i];
else
- outputString += strTok2[i];
+ outPath += strTok2[i];
}
- return outputString;
-}
+ targetURL.protocol = null;
+ targetURL.host = null;
+ targetURL.port = null;
+ targetURL.path = outPath == "" && forceSlash ? "/" :
outPath;
-function TinyMCE_getParam(name, default_value, strip_whitespace, split_chr) {
- var value = (typeof(this.settings[name]) == "undefined") ? default_value :
this.settings[name];
+ // Remove document prefix from local anchors
+ var fileName = baseURL.path;
+ var pos;
- if (strip_whitespace)
- value = tinyMCE.regexpReplace(value, "[ \t\r\n]", "");
+ if ((pos = fileName.lastIndexOf('/')) != -1)
+ fileName = fileName.substring(pos + 1);
- if (typeof(split_chr) != "undefined" && split_chr != null) {
- value = value.split(split_chr);
- var outArray = new Array();
+ // Is local anchor
+ if (fileName == targetURL.path && targetURL.anchor != "")
+ targetURL.path = "";
- for (var i=0; i<value.length; i++) {
- if (value[i] && value[i] != "")
- outArray[outArray.length] = value[i];
- }
+ // If empty and not local anchor force filename or slash
+ if (targetURL.path == "" && !targetURL.anchor)
+ targetURL.path = fileName != "" ? fileName : "/";
- value = outArray;
- }
+ return this.serializeURL(targetURL);
+};
- return value;
-}
+TinyMCE_Engine.prototype.convertRelativeToAbsoluteURL = function(base_url, relative_url)
{
+ var baseURL = this.parseURL(base_url), baseURLParts, relURLParts;
+ var relURL = this.parseURL(relative_url);
-function TinyMCE_getLang(name, default_value, parse_entities) {
- var value = (typeof(tinyMCELang[name]) == "undefined") ? default_value :
tinyMCELang[name];
+ if (relative_url == "" || relative_url.indexOf('://') != -1 ||
/^(mailto:|javascript:|#|\/)/.test(relative_url))
+ return relative_url;
- if (parse_entities) {
- var el = document.createElement("div");
- el.innerHTML = value;
- value = el.innerHTML;
+ // Split parts
+ baseURLParts = baseURL['path'].split('/');
+ relURLParts = relURL['path'].split('/');
+
+ // Remove empty chunks
+ var newBaseURLParts = new Array();
+ for (var i=baseURLParts.length-1; i>=0; i--) {
+ if (baseURLParts[i].length == 0)
+ continue;
+
+ newBaseURLParts[newBaseURLParts.length] = baseURLParts[i];
}
+ baseURLParts = newBaseURLParts.reverse();
- return value;
-}
+ // 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;
-function TinyMCE_replaceVar(replace_haystack, replace_var, replace_str) {
- var re = new RegExp('{\\\$' + replace_var + '}', 'g');
- return replace_haystack.replace(re, replace_str);
-}
+ if (relURLParts[i] == '..') {
+ numBack++;
+ continue;
+ }
-function TinyMCE_replaceVars(replace_haystack, replace_vars) {
- for (var key in replace_vars) {
- var value = replace_vars[key];
- replace_haystack = tinyMCE.replaceVar(replace_haystack, key, value);
+ if (numBack > 0) {
+ numBack--;
+ continue;
+ }
+
+ newRelURLParts[newRelURLParts.length] = relURLParts[i];
}
- return replace_haystack;
-}
+ relURLParts = newRelURLParts.reverse();
-function TinyMCE_triggerNodeChange(focus) {
- if (tinyMCE.settings['handleNodeChangeCallback']) {
- if (tinyMCE.selectedInstance) {
- var editorId = tinyMCE.selectedInstance.editorId;
- var elm = tinyMCE.selectedInstance.getFocusElement();
- var undoIndex = -1;
- var undoLevels = -1;
- var anySelection = false;
- var selectedText = "";
+ // Remove end from absolute path
+ var len = baseURLParts.length-numBack;
+ var absPath = (len <= 0 ? "" : "/") + baseURLParts.slice(0,
len).join('/') + "/" + relURLParts.join('/');
+ var start = "", end = "";
- if (tinyMCE.isMSIE) {
- var documentRef = tinyMCE.selectedInstance.contentWindow.document;
- var rng = documentRef.selection.createRange();
- selectedText = rng.text;
- } else
- selectedText = tinyMCE.selectedInstance.contentWindow.getSelection().toString();
+ // Build output URL
+ relURL.protocol = baseURL.protocol;
+ relURL.host = baseURL.host;
+ relURL.port = baseURL.port;
- if (tinyMCE.selectedElement)
- anySelection = (tinyMCE.selectedElement.nodeName.toLowerCase() == "img") ||
(selectedText && selectedText.length > 0);
+ // Re-add trailing slash if it's removed
+ if (relURL.path.charAt(relURL.path.length-1) == "/")
+ absPath += "/";
- if (tinyMCE.settings['custom_undo_redo']) {
- undoIndex = tinyMCE.selectedInstance.undoIndex;
- undoLevels = tinyMCE.selectedInstance.undoLevels.length;
- }
+ relURL.path = absPath;
- // Trigger plugin nodechanges
- var plugins = tinyMCE.getParam('plugins', '', true, ',');
- for (var i=0; i<plugins.length; i++) {
- if (eval("typeof(TinyMCE_" + plugins[i] + "_handleNodeChange)")
!= "undefined")
- eval("TinyMCE_" + plugins[i] + "_handleNodeChange(editorId, elm,
undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");
- }
+ return this.serializeURL(relURL);
+};
- eval(tinyMCE.settings['handleNodeChangeCallback'] + "(editorId, elm,
undoIndex, undoLevels, tinyMCE.selectedInstance.visualAid, anySelection);");
- }
- }
+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 (tinyMCE.selectedInstance && (typeof(focus) == "undefined" ||
focus))
- this.selectedInstance.contentWindow.focus();
-}
+ // Pass through file protocol
+ if (prot == "file:")
+ return url;
-function TinyMCE__customCleanup(type, content) {
- // Call custom cleanup
- var customCleanup = tinyMCE.settings['cleanup_callback'];
- if (customCleanup != "" && eval("typeof(" + customCleanup +
")") != "undefined")
- content = eval(customCleanup + "(type, content);");
+ // Something is wrong, remove weirdness
+ url = tinyMCE.regexpReplace(url, '(http|https):///', '/');
- // Trigger plugin cleanups
- var plugins = tinyMCE.getParam('plugins', '', true, ',');
- for (var i=0; i<plugins.length; i++) {
- if (eval("typeof(TinyMCE_" + plugins[i] + "_cleanup)") !=
"undefined")
- content = eval("TinyMCE_" + plugins[i] + "_cleanup(type,
content);");
+ // 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);
}
- return content;
-}
+ // Handle absolute URLs
+ if (!tinyMCE.getParam('relative_urls')) {
+ var urlParts = tinyMCE.parseURL(url);
+ var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings['base_href']);
-function TinyMCE_getContent(editor_id) {
- if (typeof(editor_id) != "undefined")
- tinyMCE.selectedInstance = tinyMCE._getInstanceById(editor_id);
+ // Force absolute URLs from relative URLs
+ url = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
url);
- if (tinyMCE.selectedInstance) {
- var cleanedHTML = tinyMCE._cleanupHTML(this.selectedInstance.contentWindow.document,
tinyMCE.settings, this.selectedInstance.contentWindow.document.body, false, true);
- return cleanedHTML;
+ // If anchor and path is the same page
+ if (urlParts['anchor'] && urlParts['path'] ==
baseUrlParts['path'])
+ return "#" + urlParts['anchor'];
}
- return null;
-}
+ // Remove current domain
+ if (tinyMCE.getParam('remove_script_host')) {
+ var start = "", portPart = "";
-function TinyMCE_setContent(html_content) {
- if (tinyMCE.selectedInstance) {
- var doc = this.selectedInstance.contentWindow.document;
+ if (port != "")
+ portPart = ":" + port;
- // Call custom cleanup code
- html_content = tinyMCE._customCleanup("insert_to_editor", html_content);
+ start = prot + "//" + host + portPart + "/";
- tinyMCE._setHTML(doc, html_content);
- doc.body.innerHTML = tinyMCE._cleanupHTML(doc, tinyMCE.settings, doc.body);
- tinyMCE.handleVisualAid(doc.body, true, tinyMCE.selectedInstance.visualAid);
+ if (url.indexOf(start) == 0)
+ url = url.substring(start.length-1);
}
-}
-function TinyMCE_importThemeLanguagePack(theme_name) {
- if (typeof(theme_name) == "undefined")
- theme_name = tinyMCE.settings['theme'];
+ return url;
+};
- document.write('<script language="javascript"
type="text/javascript" src="' + tinyMCE.baseURL + '/themes/' +
theme_name + '/langs/' + tinyMCE.settings['language'] +
'.js"></script>');
-}
+TinyMCE_Engine.prototype.convertAllRelativeURLs = function(body) {
+ var i, elms, src, href, mhref, msrc;
-function TinyMCE_importPluginLanguagePack(theme_name, valid_languages) {
- var lang = "uk";
+ // Convert all image URL:s to absolute URL
+ elms = body.getElementsByTagName("img");
+ for (i=0; i<elms.length; i++) {
+ src = tinyMCE.getAttrib(elms[i], 'src');
- valid_languages = valid_languages.split(',');
- for (var i=0; i<valid_languages.length; i++) {
- if (tinyMCE.settings['language'] == valid_languages[i])
- lang = tinyMCE.settings['language'];
+ msrc = tinyMCE.getAttrib(elms[i], 'mce_src');
+ if (msrc != "")
+ src = msrc;
+
+ if (src != "") {
+ src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
src);
+ elms[i].setAttribute("src", src);
+ }
}
- document.write('<script language="javascript"
type="text/javascript" src="' + tinyMCE.baseURL + '/plugins/' +
theme_name + '/langs/' + lang + '.js"></script>');
-}
+ // Convert all link URL:s to absolute URL
+ elms = body.getElementsByTagName("a");
+ for (i=0; i<elms.length; i++) {
+ href = tinyMCE.getAttrib(elms[i], 'href');
-/**
- * Adds themeurl, settings and lang to HTML code.
- */
-function TinyMCE_applyTemplate(html, args) {
- html = tinyMCE.replaceVar(html, "themeurl", tinyMCE.themeURL);
+ mhref = tinyMCE.getAttrib(elms[i], 'mce_href');
+ if (mhref != "")
+ href = mhref;
- if (typeof(args) != "undefined")
- html = tinyMCE.replaceVars(html, args);
+ if (href && href != "") {
+ href = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'],
href);
+ elms[i].setAttribute("href", href);
+ }
+ }
+};
- html = tinyMCE.replaceVars(html, tinyMCE.settings);
- html = tinyMCE.replaceVars(html, tinyMCELang);
+/* file:jscripts/tiny_mce/classes/TinyMCE_Array.class.js */
- return html;
-}
+TinyMCE_Engine.prototype.clearArray = function(a) {
+ var n;
-function TinyMCE_openWindow(template, args, skip_lang) {
- var html, width, height, x, y, resizable, scrollbars, url;
+ for (n in a)
+ a[n] = null;
- tinyMCE.windowArgs = args;
+ return a;
+};
- html = template['html'];
- if (!(width = template['width']))
- width = 320;
+TinyMCE_Engine.prototype.explode = function(d, s) {
+ var ar = s.split(d), oar = new Array(), i;
- if (!(height = template['height']))
- height = 200;
+ for (i = 0; i<ar.length; i++) {
+ if (ar[i] != "")
+ oar[oar.length] = ar[i];
+ }
- // Add to height in M$ due to SP2 WHY DON'T YOU GUYS IMPLEMENT innerWidth of
windows!!
- if (tinyMCE.isMSIE)
- height += 30;
+ return oar;
+};
- x = parseInt(screen.width / 2.0) - (width / 2.0);
- y = parseInt(screen.height / 2.0) - (height / 2.0);
+/* file:jscripts/tiny_mce/classes/TinyMCE_Event.class.js */
- resizable = (args && args['resizable']) ? args['resizable'] :
"no";
- scrollbars = (args && args['scrollbars']) ? args['scrollbars'] :
"no";
- url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") +
"/" + template['file'];
+TinyMCE_Engine.prototype._setEventsEnabled = function(node, state) {
+ var evs, x, y, elms, i, event;
+ var events =
['onfocus','onblur','onclick','ondblclick',
+ 'onmousedown','onmouseup','onmouseover','onmousemove',
+ 'onmouseout','onkeypress','onkeydown','onkeydown','onkeyup'];
- if (html) {
- html = tinyMCE.replaceVar(html, "css", this.settings['popups_css']);
- html = tinyMCE.applyTemplate(html, args, skip_lang);
+ evs = tinyMCE.settings['event_elements'].split(',');
+ for (y=0; y<evs.length; y++){
+ elms = node.getElementsByTagName(evs[y]);
+ for (i=0; i<elms.length; i++) {
+ event = "";
- var win = window.open("", "mcePopup", "top=" + y +
",left=" + x + ",scrollbars=" + scrollbars +
",modal=yes,width=" + width + ",height=" + height +
",resizable=" + resizable);
- win.document.write(html);
- win.document.close();
- win.resizeTo(width, height);
- win.focus();
- } else {
- if (tinyMCE.isMSIE && resizable != 'yes') {
- var features = "resizable:" + resizable
- + ";scroll:"
- + scrollbars + ";status:yes;center:yes;help:no;dialogWidth:"
- + width + "px;dialogHeight:" + height + "px;";
+ for (x=0; x<events.length; x++) {
+ if ((event = tinyMCE.getAttrib(elms[i], events[x])) != '') {
+ event = tinyMCE.cleanupEventStr("" + event);
- window.showModalDialog(url, window, features);
- } else {
- var win = window.open(url, "mcePopup", "top=" + y +
",left=" + x + ",scrollbars=" + scrollbars +
",modal=yes,width=" + width + ",height=" + height +
",resizable=" + resizable);
- win.resizeTo(width, height);
- win.focus();
+ if (!state)
+ event = "return true;" + event;
+ else
+ event = event.replace(/^return true;/gi, '');
+
+ elms[i].removeAttribute(events[x]);
+ elms[i].setAttribute(events[x], event);
+ }
+ }
}
}
-}
+};
-function TinyMCE_handleVisualAid(element, deep, state) {
- var tableElement = null;
+TinyMCE_Engine.prototype._eventPatch = function(editor_id) {
+ var n, inst, win, e;
- // Remove visual aid elements
-/* if (!state && element.getAttribute &&
element.getAttribute('mceVisualAid') == "true") {
- element.parentNode.removeChild(element);
- return;
- }*/
+ // Remove odd, error
+ if (typeof(tinyMCE) == "undefined")
+ return true;
- switch (element.nodeName.toLowerCase()) {
- case "table":
- var cssText = element.getAttribute("border") == 0 ?
tinyMCE.settings['visual_table_style'] : "";
+ try {
+ // Try selected instance first
+ if (tinyMCE.selectedInstance) {
+ win = tinyMCE.selectedInstance.getWin();
- element.style.cssText = state ? cssText : "";
+ if (win && win.event) {
+ e = win.event;
- for (var y=0; y<element.rows.length; y++) {
- for (var x=0; x<element.rows[y].cells.length; x++)
- element.rows[y].cells[x].style.cssText = state ? cssText : "";
- }
+ if (!e.target)
+ e.target = e.srcElement;
- break;
-
-/* case "a":
- var name = element.getAttribute("name");
- if (name && name != "" && state) {
- //element.innerHTML += '<img mceVisualAid="true" src="' +
(tinyMCE.themeURL + "/images/anchor.gif") + '" />';
+ TinyMCE_Engine.prototype.handleEvent(e);
return;
}
+ }
- break;*/
- }
+ // Search for it
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
- if (deep && element.hasChildNodes()) {
- for (var i=0; i<element.childNodes.length; i++)
- tinyMCE.handleVisualAid(element.childNodes[i], deep, state);
- }
-}
+ if (!tinyMCE.isInstance(inst))
+ continue;
-function TinyMCE_getAttrib(elm, name, default_value) {
- var v = elm.getAttribute(name);
- return (v && v != "") ? v : default_value;
-}
+ inst.select();
+ win = inst.getWin();
-function TinyMCE_setAttrib(element, name, value, no_fix_value) {
- if (typeof(value) == "number")
- value = "" + value;
+ if (win && win.event) {
+ e = win.event;
- if (!no_fix_value && value != null && value != -1) {
- var re = new RegExp('[^0-9%]', 'g');
- value = value.replace(re, '');
+ if (!e.target)
+ e.target = e.srcElement;
+
+ TinyMCE_Engine.prototype.handleEvent(e);
+ return;
+ }
+ }
+ } catch (ex) {
+ // Ignore error if iframe is pointing to external URL
}
+};
- if (value != null && value != "" && value != -1)
- element.setAttribute(name, value);
- else
- element.removeAttribute(name);
-}
+TinyMCE_Engine.prototype.findEvent = function(e) {
+ var n, inst;
-function TinyMCE__setHTML(doc, html_content) {
- // Weird MSIE bug, <p><hr /></p> breaks runtime?
- if (tinyMCE.isMSIE) {
- var re = new RegExp('<p><hr /></p>', 'g');
- html_content = html_content.replace(re, "<hr>");
+ if (e)
+ return e;
+
+ for (n in tinyMCE.instances) {
+ inst = tinyMCE.instances[n];
+
+ if (tinyMCE.isInstance(inst) && inst.getWin().event)
+ return inst.getWin().event;
}
- doc.body.innerHTML = html_content;
+ return null;
+};
- // *Content duplication bug fix
- if (tinyMCE.isMSIE && tinyMCE.settings['fix_content_duplication']) {
- // Remove P elements in P elements
- var paras = doc.getElementsByTagName("P");
- for (var i=0; i<paras.length; i++) {
- var node = paras[i];
- while ((node = node.parentNode) != null) {
- if (node.nodeName.toLowerCase() == "p")
- node.outerHTML = node.innerHTML;
- }
- }
+TinyMCE_Engine.prototype.unloadHandler = function() {
+ tinyMCE.triggerSave(true, true);
+};
- // Content duplication bug fix (Seems to be word crap)
- var html = doc.body.createTextRange().htmlText;
+TinyMCE_Engine.prototype.addEventHandlers = function(inst) {
+ this.setEventHandlers(inst, 1);
+};
- if (html.indexOf('="mso') != -1) {
- for (var i=0; i<doc.body.all.length; i++) {
- var el = doc.body.all[i];
- el.removeAttribute("className","",0);
- el.removeAttribute("style","",0);
- }
+TinyMCE_Engine.prototype.setEventHandlers = function(inst, s) {
+ var doc = inst.getDoc(), ie, ot, i, f = s ? tinyMCE.addEvent : tinyMCE.removeEvent;
- html = doc.body.createTextRange().htmlText;
+ ie = ['keypress', 'keyup', 'keydown', 'click',
'mouseup', 'mousedown', 'controlselect', 'dblclick'];
+ ot = ['keypress', 'keyup', 'keydown', 'click',
'mouseup', 'mousedown', 'focus', 'blur',
'dragdrop'];
- html = tinyMCE.regexpReplace(html, "<o:p><\/o:p>", "<br
/>");
- html = tinyMCE.regexpReplace(html, "<o:p> <\/o:p>",
"");
- html = tinyMCE.regexpReplace(html, "<st1:.*?>", "");
- html = tinyMCE.regexpReplace(html, "<p><\/p>", "");
- html = tinyMCE.regexpReplace(html,
"<p><\/p>\r\n<p><\/p>", "");
- html = tinyMCE.regexpReplace(html, "<p> <\/p>",
"<br />");
- html = tinyMCE.regexpReplace(html, "<p>\s*(<p>\s*)?",
"<p>");
- html = tinyMCE.regexpReplace(html, "<\/p>\s*(<\/p>\s*)?",
"</p>");
- }
+ inst.switchSettings();
- // Always set the htmlText output
- doc.body.innerHTML = html;
- }
-}
+ if (tinyMCE.isIE) {
+ for (i=0; i<ie.length; i++)
+ f(doc, ie[i], TinyMCE_Engine.prototype._eventPatch);
+ } else {
+ for (i=0; i<ot.length; i++)
+ f(doc, ot[i], tinyMCE.handleEvent);
-function TinyMCE__getElementById(element_id) {
- var elm = document.getElementById(element_id);
- if (!elm) {
- // Check for element in forms
- for (var j=0; j<document.forms.length; j++) {
- for (var k=0; k<document.forms[j].elements.length; k++) {
- if (document.forms[j].elements[k].name == element_id) {
- elm = document.forms[j].elements[k];
- break;
- }
- }
- }
+ eval('try { doc.designMode = "On"; } catch(e) {}'); // Force
designmode
}
+};
- return elm;
-}
+TinyMCE_Engine.prototype.onMouseMove = function() {
+ var inst, lh;
-function TinyMCE_getEditorId(form_element) {
- var mceControl = this._getInstanceById(form_element);
- if (!mceControl)
- return null;
+ // Fix for IE7 bug where it's not restoring hover on anchors correctly
+ if (tinyMCE.lastHover) {
+ lh = tinyMCE.lastHover;
- return mceControl.editorId;
-}
+ // Call out on menus and refresh class on normal buttons
+ if (lh.className.indexOf('mceMenu') != -1)
+ tinyMCE._menuButtonEvent('out', lh);
+ else
+ lh.className = lh.className;
-function TinyMCE__getInstanceById(editor_id) {
- var mceControl = this.instances[editor_id];
- if (!mceControl) {
- for (var instanceName in tinyMCE.instances) {
- var instance = tinyMCE.instances[instanceName];
- if (instance.formTargetElementId == editor_id) {
- mceControl = instance;
- break;
- }
+ tinyMCE.lastHover = null;
+ }
+
+ if (!tinyMCE.hasMouseMoved) {
+ inst = tinyMCE.selectedInstance;
+
+ // Workaround for bug #1437457 (Odd MSIE bug)
+ if (inst.isFocused) {
+ inst.undoBookmark = inst.selection.getBookmark();
+ tinyMCE.hasMouseMoved = true;
}
}
- return mceControl;
-}
+// tinyMCE.cancelEvent(inst.getWin().event);
+// return false;
+};
-function TinyMCE_queryInstanceCommandValue(editor_id, command) {
- var mceControl = tinyMCE._getInstanceById(editor_id);
- if (mceControl)
- return mceControl.queryCommandValue(command);
+TinyMCE_Engine.prototype.cancelEvent = function(e) {
+ if (!e)
+ return false;
+ if (tinyMCE.isIE) {
+ e.returnValue = false;
+ e.cancelBubble = true;
+ } else {
+ e.preventDefault();
+ e.stopPropagation && e.stopPropagation();
+ }
+
return false;
-}
+};
-function TinyMCE_queryInstanceCommandState(editor_id, command) {
- var mceControl = tinyMCE._getInstanceById(editor_id);
- if (mceControl)
- return mceControl.queryCommandState(command);
+TinyMCE_Engine.prototype.addEvent = function(o, n, h) {
+ // Add cleanup for all non unload events
+ if (n != 'unload') {
+ function clean() {
+ var ex;
- return null;
-}
+ try {
+ tinyMCE.removeEvent(o, n, h);
+ tinyMCE.removeEvent(window, 'unload', clean);
+ o = n = h = null;
+ } catch (ex) {
+ // IE may produce access denied exception on unload
+ }
+ }
-function TinyMCE_getWindowArg(name, default_value) {
- return (typeof(this.windowArgs[name]) == "undefined") ? default_value :
this.windowArgs[name];
-}
+ // Add memory cleaner
+ tinyMCE.addEvent(window, 'unload', clean);
+ }
-function TinyMCE_getCSSClasses(editor_id, doc) {
- var output = new Array();
+ if (o.attachEvent)
+ o.attachEvent("on" + n, h);
+ else
+ o.addEventListener(n, h, false);
+};
- // Is cached, use that
- if (typeof(tinyMCE.cssClasses) != "undefined")
- return tinyMCE.cssClasses;
+TinyMCE_Engine.prototype.removeEvent = function(o, n, h) {
+ if (o.detachEvent)
+ o.detachEvent("on" + n, h);
+ else
+ o.removeEventListener(n, h, false);
+};
- if (typeof(editor_id) == "undefined" && typeof(doc) ==
"undefined") {
- var instance;
+TinyMCE_Engine.prototype.addSelectAccessibility = function(e, s, w) {
+ // Add event handlers
+ if (!s._isAccessible) {
+ s.onkeydown = tinyMCE.accessibleEventHandler;
+ s.onblur = tinyMCE.accessibleEventHandler;
+ s._isAccessible = true;
+ s._win = w;
+ }
- for (var instanceName in tinyMCE.instances) {
- instance = tinyMCE.instances[instanceName];
- break;
+ return false;
+};
+
+TinyMCE_Engine.prototype.accessibleEventHandler = function(e) {
+ var win = this._win;
+ e = tinyMCE.isIE ? win.event : e;
+ var elm = tinyMCE.isIE ? e.srcElement : e.target;
+
+ // Unpiggyback onchange on blur
+ if (e.type == "blur") {
+ if (elm.oldonchange) {
+ elm.onchange = elm.oldonchange;
+ elm.oldonchange = null;
}
- doc = instance.contentWindow.document;
+ return true;
}
- if (typeof(doc) == "undefined") {
- var instance = tinyMCE._getInstanceById(editor_id);
- doc = instance.contentWindow.document;
+ // Piggyback onchange
+ if (elm.nodeName == "SELECT" && !elm.oldonchange) {
+ elm.oldonchange = elm.onchange;
+ elm.onchange = null;
}
- if (doc) {
- var styles = tinyMCE.isMSIE ? doc.styleSheets : doc.styleSheets;
+ // Execute onchange and remove piggyback
+ if (e.keyCode == 13 || e.keyCode == 32) {
+ elm.onchange = elm.oldonchange;
+ elm.onchange();
+ elm.oldonchange = null;
- if (styles && styles.length > 0) {
- var csses = null;
+ tinyMCE.cancelEvent(e);
+ return false;
+ }
- // Just ignore any errors
- eval("try {var csses = tinyMCE.isMSIE ? doc.styleSheets(0).rules :
doc.styleSheets[0].cssRules;} catch(e) {}");
- if (!csses)
- return null;
+ return true;
+};
- for (var i=0; i<csses.length; i++) {
- var selectorText = csses[i].selectorText;
+TinyMCE_Engine.prototype._resetIframeHeight = function() {
+ var ife;
- // Can be multiple rules per selector
- var rules = selectorText.split(',');
- for (var c=0; c<rules.length; c++) {
- // Invalid rule
- if (rules[c].indexOf(' ') != -1 || rules[c].indexOf(':') != -1 ||
rules[c].indexOf('mce_') == 1)
- continue;
+ if (tinyMCE.isRealIE) {
+ ife = tinyMCE.selectedInstance.iframeElement;
- // Is class rule
- if (rules[c].indexOf('.') != -1) {
- //alert(rules[c].substring(rules[c].indexOf('.')));
- output[output.length] = rules[c].substring(rules[c].indexOf('.')+1);
- }
- }
- }
+/* if (ife._oldWidth) {
+ ife.style.width = ife._oldWidth;
+ ife.width = ife._oldWidth;
+ }*/
+
+ if (ife._oldHeight) {
+ ife.style.height = ife._oldHeight;
+ ife.height = ife._oldHeight;
}
}
+};
- // Cache em
- if (output.length > 0)
- tinyMCE.cssClasses = output;
+/* file:jscripts/tiny_mce/classes/TinyMCE_Selection.class.js */
- return output;
-}
+function TinyMCE_Selection(inst) {
+ this.instance = inst;
+};
-function TinyMCE_regexpReplace(in_str, reg_exp, replace_str, opts) {
- if (typeof(opts) == "undefined")
- opts = 'g';
+TinyMCE_Selection.prototype = {
+ getSelectedHTML : function() {
+ var inst = this.instance;
+ var e, r = this.getRng(), h;
- var re = new RegExp(reg_exp, opts);
- return in_str.replace(re, replace_str);
-}
+ if (!r)
+ return null;
-function TinyMCE_cleanupEventStr(str) {
- str = str.replace('function anonymous()\n{\n', '');
- str = str.replace('\n}', '');
+ e = document.createElement("body");
- return str;
-}
+ if (r.cloneContents)
+ e.appendChild(r.cloneContents());
+ else if (typeof(r.item) != 'undefined' || typeof(r.htmlText) !=
'undefined')
+ e.innerHTML = r.item ? r.item(0).outerHTML : r.htmlText;
+ else
+ e.innerHTML = r.toString(); // Failed, use text for now
-// TinyMCEControl
-function TinyMCEControl(settings) {
- // Undo levels
- this.undoLevels = new Array();
- this.undoIndex = 0;
+ h = tinyMCE._cleanupHTML(inst, inst.contentDocument, inst.settings, e, e, false, true,
false);
- // Default settings
- this.settings = settings;
- this.settings['theme'] = tinyMCE.getParam("theme",
"default");
- this.settings['width'] = tinyMCE.getParam("width", -1);
- this.settings['height'] = tinyMCE.getParam("height", -1);
+ // When editing always use fonts internaly
+ if (tinyMCE.getParam("convert_fonts_to_spans"))
+ tinyMCE.convertSpansToFonts(inst.getDoc());
- // Functions
- this.execCommand = TinyMCEControl_execCommand;
- this.queryCommandValue = TinyMCEControl_queryCommandValue;
- this.queryCommandState = TinyMCEControl_queryCommandState;
- this.onAdd = TinyMCEControl_onAdd;
- this.getFocusElement = TinyMCEControl_getFocusElement;
- this.autoResetDesignMode = TinyMCEControl_autoResetDesignMode;
-}
+ return h;
+ },
-function TinyMCEControl_autoResetDesignMode() {
- // Add fix for tab/style.display none/block problems in Gecko
- if (!tinyMCE.isMSIE && tinyMCE.settings['auto_reset_designmode']) {
- var sel = this.contentWindow.getSelection();
+ getSelectedText : function() {
+ var inst = this.instance;
+ var d, r, s, t;
- // Werid, where that cursor selection
- if (sel.rangeCount == 0)
- this.contentWindow.document.designMode = "On";
- }
-}
+ if (tinyMCE.isIE) {
+ d = inst.getDoc();
-function TinyMCEControl_execCommand(command, user_interface, value) {
- function getAttrib(elm, name) {
- return elm.getAttribute(name) ? elm.getAttribute(name) : "";
- }
+ if (d.selection.type == "Text") {
+ r = d.selection.createRange();
+ t = r.text;
+ } else
+ t = '';
+ } else {
+ s = this.getSel();
- // Mozilla issue
- if (!tinyMCE.isMSIE && !this.useCSS) {
- this.contentWindow.document.execCommand("useCSS", false, true);
- this.useCSS = true;
- }
+ if (s && s.toString)
+ t = s.toString();
+ else
+ t = '';
+ }
- //alert("command: " + command + ", user_interface: " +
user_interface + ", value: " + value);
- this.contentDocument = this.contentWindow.document; // <-- Strange!!
+ return t;
+ },
- // Call theme execcommand
- if (tinyMCE._themeExecCommand(this.editorId, this.contentDocument.body, command,
user_interface, value))
- return;
+ getBookmark : function(simple) {
+ var inst = this.instance;
+ var rng = this.getRng();
+ var doc = inst.getDoc(), b = inst.getBody();
+ var sp, le, s, e, nl, i, si, ei, w;
+ var trng, sx, sy, xx = -999999999, vp = inst.getViewPort();
- // Add undo level of operation
- if (command != "mceAddUndoLevel" && command != "Undo"
&& command != "Redo" && command != "mceImage"
&& command != "mceLink" && command !=
"mceToggleVisualAid" && (command != "mceInsertTable"
&& !user_interface))
- this.execCommand("mceAddUndoLevel");
+ sx = vp.left;
+ sy = vp.top;
- // Fix align on images
- if (this.getFocusElement() && this.getFocusElement().nodeName.toLowerCase() ==
"img") {
- var align = this.getFocusElement().getAttribute('align');
+ if (tinyMCE.isSafari || tinyMCE.isOpera || simple)
+ return {rng : rng, scrollX : sx, scrollY : sy};
- switch (command) {
- case "JustifyLeft":
- if (align == 'left')
- this.getFocusElement().removeAttribute('align');
- else
- this.getFocusElement().setAttribute('align', 'left');
+ if (tinyMCE.isIE) {
+ if (rng.item) {
+ e = rng.item(0);
- tinyMCE.triggerNodeChange();
- return;
+ nl = b.getElementsByTagName(e.nodeName);
+ for (i=0; i<nl.length; i++) {
+ if (e == nl[i]) {
+ sp = i;
+ break;
+ }
+ }
- case "JustifyCenter":
- if (align == 'middle')
- this.getFocusElement().removeAttribute('align');
- else
- this.getFocusElement().setAttribute('align', 'middle');
+ return {
+ tag : e.nodeName,
+ index : sp,
+ scrollX : sx,
+ scrollY : sy
+ };
+ } else {
+ trng = doc.body.createTextRange();
+ trng.moveToElementText(inst.getBody());
+ trng.collapse(true);
+ bp = Math.abs(trng.move('character', xx));
- tinyMCE.triggerNodeChange();
- return;
+ trng = rng.duplicate();
+ trng.collapse(true);
+ sp = Math.abs(trng.move('character', xx));
- case "JustifyRight":
- if (align == 'right')
- this.getFocusElement().removeAttribute('align');
- else
- this.getFocusElement().setAttribute('align', 'right');
+ trng = rng.duplicate();
+ trng.collapse(false);
+ le = Math.abs(trng.move('character', xx)) - sp;
- tinyMCE.triggerNodeChange();
- return;
+ return {
+ start : sp - bp,
+ length : le,
+ scrollX : sx,
+ scrollY : sy
+ };
+ }
}
- }
- if (tinyMCE.settings['force_br_newlines']) {
- var documentRef = this.contentWindow.document;
- var alignValue = "";
+ if (tinyMCE.isGecko) {
+ s = this.getSel();
+ e = this.getFocusElement();
- if (documentRef.selection.type != "Control") {
- switch (command) {
- case "JustifyLeft":
- alignValue = "left";
- break;
+ if (!s)
+ return null;
- case "JustifyCenter":
- alignValue = "center";
+ if (e && e.nodeName == 'IMG') {
+ /*nl = b.getElementsByTagName('IMG');
+ for (i=0; i<nl.length; i++) {
+ if (e == nl[i]) {
+ sp = i;
break;
+ }
+ }*/
- case "JustifyFull":
- alignValue = "justify";
- break;
-
- case "JustifyRight":
- alignValue = "right";
- break;
+ return {
+ start : -1,
+ end : -1,
+ index : sp,
+ scrollX : sx,
+ scrollY : sy
+ };
}
- if (alignValue != "") {
- var rng = documentRef.selection.createRange();
+ // Caret or selection
+ if (s.anchorNode == s.focusNode && s.anchorOffset == s.focusOffset) {
+ e = this._getPosText(b, s.anchorNode, s.focusNode);
- if ((divElm = tinyMCE.getParentElement(rng.parentElement(), "div")) !=
null)
- divElm.setAttribute("align", alignValue);
- else if (rng.pasteHTML && rng.htmlText.length > 0)
- rng.pasteHTML('<div align="' + alignValue + '">' +
rng.htmlText + "</div>");
+ if (!e)
+ return {scrollX : sx, scrollY : sy};
- tinyMCE.triggerNodeChange();
- return;
+ return {
+ start : e.start + s.anchorOffset,
+ end : e.end + s.focusOffset,
+ scrollX : sx,
+ scrollY : sy
+ };
+ } else {
+ e = this._getPosText(b, rng.startContainer, rng.endContainer);
+
+ if (!e)
+ return {scrollX : sx, scrollY : sy};
+
+ return {
+ start : e.start + rng.startOffset,
+ end : e.end + rng.endOffset,
+ scrollX : sx,
+ scrollY : sy
+ };
}
}
- }
- switch (command) {
- case "Cut":
- case "Copy":
- case "Paste":
- var cmdFailed = false;
+ return null;
+ },
- // Try executing command
- eval('try {this.contentDocument.execCommand(command, user_interface, value);}
catch (e) {cmdFailed = true;}');
+ moveToBookmark : function(bookmark) {
+ var inst = this.instance;
+ var rng, nl, i, ex, b = inst.getBody(), sd;
+ var doc = inst.getDoc();
+ var win = inst.getWin();
+ var sel = this.getSel();
- // Alert error in gecko if command failed
- if (tinyMCE.isGecko && cmdFailed) {
- // Confirm more info
- if (confirm(tinyMCE.getLang('lang_clipboard_msg')))
-
window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.ht...;,
'mceExternal');
+ if (!bookmark)
+ return false;
- return;
- } else
- tinyMCE.triggerNodeChange();
- break;
+ if (tinyMCE.isSafari) {
+ sel.setBaseAndExtent(bookmark.rng.startContainer, bookmark.rng.startOffset,
bookmark.rng.endContainer, bookmark.rng.endOffset);
+ return true;
+ }
- case "mceLink":
- var selectedText = "";
+ if (tinyMCE.isRealIE) {
+ if (bookmark.rng) {
+ try {
+ bookmark.rng.select();
+ } catch (ex) {
+ // Ignore
+ }
- if (tinyMCE.isMSIE) {
- var documentRef = this.contentWindow.document;
- var rng = documentRef.selection.createRange();
- selectedText = rng.text;
- } else
- selectedText = this.contentWindow.getSelection().toString();
-
- if (!tinyMCE.linkElement) {
- if ((tinyMCE.selectedElement.nodeName.toLowerCase() != "img") &&
(selectedText.length <= 0))
- return;
+ return true;
}
- var href = "", target = "", title = "", onclick =
"", action = "insert";
+ win.focus();
- if (tinyMCE.selectedElement.nodeName.toLowerCase() == "a")
- tinyMCE.linkElement = tinyMCE.selectedElement;
+ if (bookmark.tag) {
+ rng = b.createControlRange();
- // Is anchor not a link
- if (tinyMCE.linkElement != null && getAttrib(tinyMCE.linkElement,
'href') == "")
- tinyMCE.linkElement = null;
+ nl = b.getElementsByTagName(bookmark.tag);
- if (tinyMCE.linkElement) {
- href = getAttrib(tinyMCE.linkElement, 'href');
- target = getAttrib(tinyMCE.linkElement, 'target');
- title = getAttrib(tinyMCE.linkElement, 'title');
- onclick = getAttrib(tinyMCE.linkElement, 'mce_onclick');
+ if (nl.length > 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;
- // Try old onclick to if copy/pasted content
- if (onclick == "")
- onclick = getAttrib(tinyMCE.linkElement, 'onclick');
+ 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;
+ }
+ }
- onclick = tinyMCE.cleanupEventStr(onclick);
+ rng.select();
- // Fix for drag-drop/copy paste bug in Mozilla
- mceRealHref = getAttrib(tinyMCE.linkElement, 'mce_real_href');
- if (mceRealHref != "")
- href = mceRealHref;
+ win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+ return true;
+ }
- href = eval(tinyMCE.settings['urlconvertor_callback'] + "(href,
tinyMCE.linkElement, true);");
- action = "update";
+ if (tinyMCE.isGecko || tinyMCE.isOpera) {
+ if (bookmark.rng) {
+ sel.removeAllRanges();
+ sel.addRange(bookmark.rng);
}
- if (this.settings['insertlink_callback']) {
- var returnVal = eval(this.settings['insertlink_callback'] + "(href,
target, title, onclick, action);");
- if (returnVal && returnVal['href'])
- tinyMCE.insertLink(returnVal['href'], returnVal['target'],
returnVal['title'], returnVal['onclick']);
- } else {
- tinyMCE.openWindow(this.insertLinkTemplate, {href : href, target : target, title :
title, onclick : onclick, action : action});
+ 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
+ }
}
- break;
- case "mceImage":
- var src = "", alt = "", border = "", hspace =
"", vspace = "", width = "", height = "", align =
"";
- var title = "", onmouseover = "", onmouseout = "",
action = "insert";;
+ /*
+ if (typeof(bookmark.index) != 'undefined') {
+ tinyMCE.selectElements(b, 'IMG', function (n) {
+ if (bookmark.index-- == 0) {
+ // Select image in Gecko here
+ }
- if (tinyMCE.selectedElement != null &&
tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
- tinyMCE.imgElement = tinyMCE.selectedElement;
+ return false;
+ });
+ }
+ */
- if (tinyMCE.imgElement) {
- // Is it a internal MCE visual aid image, then skip this one.
- name = getAttrib(tinyMCE.imgElement, 'name');
- if (name.substring(0, 4)=='mce_')
- return;
+ win.scrollTo(bookmark.scrollX, bookmark.scrollY);
+ return true;
+ }
- src = getAttrib(tinyMCE.imgElement, 'src');
- alt = getAttrib(tinyMCE.imgElement, 'alt');
+ return false;
+ },
- // Try polling out the title
- if (alt == "")
- alt = getAttrib(tinyMCE.imgElement, 'title');
+ _getPosText : function(r, sn, en) {
+ var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d =
{};
- border = getAttrib(tinyMCE.imgElement, 'border');
- hspace = getAttrib(tinyMCE.imgElement, 'hspace');
- vspace = getAttrib(tinyMCE.imgElement, 'vspace');
- width = getAttrib(tinyMCE.imgElement, 'width');
- height = getAttrib(tinyMCE.imgElement, 'height');
- align = getAttrib(tinyMCE.imgElement, 'align');
- onmouseover = getAttrib(tinyMCE.imgElement, 'onmouseover');
- onmouseout = getAttrib(tinyMCE.imgElement, 'onmouseout');
- title = getAttrib(tinyMCE.imgElement, 'title');
+ while ((n = w.nextNode()) != null) {
+ if (n == sn)
+ d.start = p;
- onmouseover = tinyMCE.cleanupEventStr(onmouseover);
- onmouseout = tinyMCE.cleanupEventStr(onmouseout);
+ if (n == en) {
+ d.end = p;
+ return d;
+ }
- // Fix for drag-drop/copy paste bug in Mozilla
- mceRealSrc = getAttrib(tinyMCE.imgElement, 'mce_real_src');
- if (mceRealSrc != "")
- src = mceRealSrc;
+ p += n.nodeValue ? n.nodeValue.length : 0;
+ }
- src = eval(tinyMCE.settings['urlconvertor_callback'] + "(src,
tinyMCE.imgElement, true);");
- action = "update";
- }
+ return null;
+ },
- if (this.settings['insertimage_callback']) {
- var returnVal = eval(this.settings['insertimage_callback'] + "(src, alt,
border, hspace, vspace, width, height, align, title, onmouseover, onmouseout,
action);");
- if (returnVal && returnVal['src'])
- tinyMCE.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(this.insertImageTemplate, {src : src, alt : alt, border : border,
hspace : hspace, vspace : vspace, width : width, height : height, align : align, title :
title, onmouseover : onmouseover, onmouseout : onmouseout, action : action});
- break;
+ _getTextPos : function(r, sp, ep) {
+ var w = document.createTreeWalker(r, NodeFilter.SHOW_TEXT, null, false), n, p = 0, d =
{};
- case "mceCleanupWord":
- if (tinyMCE.isMSIE) {
- var html = this.contentDocument.body.createTextRange().htmlText;
+ while ((n = w.nextNode()) != null) {
+ p += n.nodeValue ? n.nodeValue.length : 0;
- if (html.indexOf('="mso') != -1) {
- tinyMCE._setHTML(this.contentDocument, this.contentDocument.body.innerHTML);
- html = tinyMCE._cleanupHTML(this.contentDocument, this.settings,
this.contentDocument.body, this.visualAid);
- }
+ if (p >= sp && !d.startNode) {
+ d.startNode = n;
+ d.startOffset = sp - (p - n.nodeValue.length);
+ }
- this.contentDocument.body.innerHTML = html;
+ if (p >= ep) {
+ d.endNode = n;
+ d.endOffset = ep - (p - n.nodeValue.length);
+
+ return d;
}
- break;
+ }
- case "mceCleanup":
- tinyMCE._setHTML(this.contentDocument, this.contentDocument.body.innerHTML);
- var cleanedHTML = tinyMCE._cleanupHTML(this.contentDocument, this.settings,
this.contentDocument.body, this.visualAid);
- this.contentDocument.body.innerHTML = cleanedHTML;
- break;
+ return null;
+ },
- case "mceAnchor":
- if (!user_interface) {
- var aElm = tinyMCE.getParentElement(this.getFocusElement(), "a",
"name");
- if (aElm)
- aElm.setAttribute('name', value);
- else {
- this.contentDocument.execCommand("fontname", false,
"#mce_temp_font#");
- var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body,
"font", "face", "#mce_temp_font#");
- for (var x=0; x<elementArray.length; x++) {
- elm = elementArray[x];
+ selectNode : function(node, collapse, select_text_node, to_start) {
+ var inst = this.instance, sel, rng, nodes;
- var aElm = this.contentDocument.createElement("a");
- aElm.setAttribute('name', value);
+ if (!node)
+ return;
- if (elm.hasChildNodes()) {
- for (var i=0; i<elm.childNodes.length; i++)
- aElm.appendChild(elm.childNodes[i].cloneNode(true));
- }
+ if (typeof(collapse) == "undefined")
+ collapse = true;
- elm.parentNode.replaceChild(aElm, elm);
- }
- }
+ if (typeof(select_text_node) == "undefined")
+ select_text_node = false;
- tinyMCE.triggerNodeChange();
- }
- break;
+ if (typeof(to_start) == "undefined")
+ to_start = true;
- case "mceReplaceContent":
- var selectedText = "";
+ if (inst.settings.auto_resize)
+ inst.resizeToContent();
- if (tinyMCE.isMSIE) {
- var documentRef = this.contentWindow.document;
- var rng = documentRef.selection.createRange();
- selectedText = rng.text;
- } else
- selectedText = this.contentWindow.getSelection().toString();
+ if (tinyMCE.isRealIE) {
+ rng = inst.getDoc().body.createTextRange();
- if (selectedText.length > 0) {
- value = tinyMCE.replaceVar(value, "selection", selectedText);
- tinyMCE.execCommand('mceInsertContent',false,value);
+ 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();
- tinyMCE.triggerNodeChange();
- break;
+ if (!sel)
+ return;
- 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 (tinyMCE.isSafari) {
+ sel.setBaseAndExtent(node, 0, node, node.innerText.length);
- if (targetNode) {
- targetNode.setAttribute(value['name'], value['value']);
- tinyMCE.triggerNodeChange();
+ if (collapse) {
+ if (to_start)
+ sel.collapseToStart();
+ else
+ sel.collapseToEnd();
}
+
+ this.scrollToNode(node);
+
+ return;
}
- break;
- case "mceSetCSSClass":
- var selectedText = false;
+ rng = inst.getDoc().createRange();
- if (tinyMCE.isMSIE) {
- var documentRef = this.contentWindow.document;
- var rng = documentRef.selection.createRange();
- selectedText = (rng.text && rng.text.length > 0);
+ 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
- selectedText = (this.contentWindow.getSelection().toString().length > 0);
+ rng.selectNode(node);
- if (selectedText) {
- this.contentDocument.execCommand("removeformat", false, null);
- this.contentDocument.execCommand("fontname", false,
"#mce_temp_font#");
- var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body,
"font", "face", "#mce_temp_font#");
-/* this.contentDocument.execCommand("createlink", false,
"#mce_temp_url#");
- var elementArray = tinyMCE.getElementsByAttributeValue(this.contentDocument.body,
"a", "href", "#mce_temp_url#");
-*/
- // Change them all
- for (var x=0; x<elementArray.length; x++) {
- elm = elementArray[x];
- if (elm) {
- var spanElm = this.contentDocument.createElement("span");
- spanElm.className = value;
- if (elm.hasChildNodes()) {
- for (var i=0; i<elm.childNodes.length; i++)
- spanElm.appendChild(elm.childNodes[i].cloneNode(true));
- }
+ 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);
+ }
- elm.parentNode.replaceChild(spanElm, elm);
- }
- }
+ sel.removeAllRanges();
+ sel.addRange(rng);
+ }
- //tinyMCE.setContent(this.contentDocument.body.innerHTML);
- } else {
- var targetElm = this.getFocusElement();
- if (tinyMCE.selectedElement.nodeName.toLowerCase() == "img" ||
tinyMCE.selectedElement.nodeName.toLowerCase() == "table")
- targetElm = tinyMCE.selectedElement;
+ this.scrollToNode(node);
- var targetNode = tinyMCE.getParentElement(targetElm,
"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address");
+ // Set selected element
+ tinyMCE.selectedElement = null;
+ if (node.nodeType == 1)
+ tinyMCE.selectedElement = node;
+ },
- // Mozilla img patch
- if (!tinyMCE.isMSIE && !targetNode)
- targetNode = tinyMCE.imgElement;
+ scrollToNode : function(node) {
+ var inst = this.instance, w = inst.getWin(), vp = inst.getViewPort(), pos =
tinyMCE.getAbsPosition(node), cvp, p, cwin;
- if (targetNode) {
- if (targetNode.nodeName.toLowerCase() == "span" && (!value ||
value == "")) {
- if (targetNode.hasChildNodes()) {
- for (var i=0; i<targetNode.childNodes.length; i++)
- targetNode.parentNode.insertBefore(targetNode.childNodes[i].cloneNode(true),
targetNode);
- }
+ // 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);
- targetNode.parentNode.removeChild(targetNode);
- } else {
- if (value != null && value != "")
- targetNode.className = value;
- else {
- targetNode.removeAttribute("className");
- targetNode.removeAttribute("class");
- }
+ // 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();
+
+ return s.getRangeAt(0);
+ },
+
+ 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];
}
}
}
- tinyMCE.triggerNodeChange();
- break;
+ // Get the element parent of the node
+ elm = tinyMCE.getParentElement(elm);
- case "mceInsertContent":
- if (!tinyMCE.isMSIE) {
- this.contentDocument.execCommand("insertimage", false,
"#mce_temp_url#");
- elm = tinyMCE.getElementByAttributeValue(this.contentDocument.body, "img",
"src", "#mce_temp_url#");
+ //if (tinyMCE.selectedElement != null &&
tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
+ // elm = tinyMCE.selectedElement;
+ }
- if (elm) {
- var rng = elm.ownerDocument.createRange();
- rng.setStartBefore(elm);
- var fragment = rng.createContextualFragment(value);
- elm.parentNode.replaceChild(fragment, elm);
- }
- } else {
- var rng = this.contentWindow.document.selection.createRange();
+ return elm;
+ }
- if (rng.item)
- rng.item(0).outerHTML = value;
- else
- rng.pasteHTML(value);
- }
+ };
- tinyMCE.triggerNodeChange();
- break;
+/* file:jscripts/tiny_mce/classes/TinyMCE_UndoRedo.class.js */
- case "mceInsertTable":
- if (user_interface) {
- var cols = 2, rows = 2, border = 0, cellpadding = "", cellspacing =
"", align = "", width = "", height = "", action =
"insert", className = "";
+function TinyMCE_UndoRedo(inst) {
+ this.instance = inst;
+ this.undoLevels = new Array();
+ this.undoIndex = 0;
+ this.typingUndoIndex = -1;
+ this.undoRedo = true;
+};
- tinyMCE.tableElement = tinyMCE.getParentElement(this.getFocusElement(),
"table");
+TinyMCE_UndoRedo.prototype = {
+ add : function(l) {
+ var b, customUndoLevels, newHTML, inst = this.instance, i, ul, ur;
- if (tinyMCE.tableElement) {
- var rowsAr = tinyMCE.tableElement.rows;
- var cols = 0;
- for (var i=0; i<rowsAr.length; i++)
- if (rowsAr[i].cells.length > cols)
- cols = rowsAr[i].cells.length;
+ if (l) {
+ this.undoLevels[this.undoLevels.length] = l;
+ return true;
+ }
- cols = cols;
- rows = rowsAr.length;
+ if (this.typingUndoIndex != -1) {
+ this.undoIndex = this.typingUndoIndex;
- border = tinyMCE.getAttrib(tinyMCE.tableElement, 'border', border);
- cellpadding = tinyMCE.getAttrib(tinyMCE.tableElement, 'cellpadding',
"");
- cellspacing = tinyMCE.getAttrib(tinyMCE.tableElement, 'cellspacing',
"");
- width = tinyMCE.getAttrib(tinyMCE.tableElement, 'width', width);
- height = tinyMCE.getAttrib(tinyMCE.tableElement, 'height', height);
- align = tinyMCE.getAttrib(tinyMCE.tableElement, 'align', align);
- className = tinyMCE.getAttrib(tinyMCE.tableElement, tinyMCE.isMSIE ?
'className' : "class", "");
+ if (tinyMCE.typingUndoIndex != -1)
+ tinyMCE.undoIndex = tinyMCE.typingUndoIndex;
+ }
- if (tinyMCE.isMSIE) {
- width = tinyMCE.tableElement.style.pixelWidth == 0 ?
tinyMCE.tableElement.getAttribute("width") :
tinyMCE.tableElement.style.pixelWidth;
- height = tinyMCE.tableElement.style.pixelHeight == 0 ?
tinyMCE.tableElement.getAttribute("height") :
tinyMCE.tableElement.style.pixelHeight;
- }
+ 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);
- action = "update";
- }
+ tinyMCE.dispatchCallback(inst, 'onchange_callback', 'onChange',
inst);
- tinyMCE.openWindow(this.insertTableTemplate, {editor_id : this.editorId, cols : cols,
rows : rows, border : border, cellpadding : cellpadding, cellspacing : cellspacing, align
: align, width : width, height : height, action : action, className : className});
- } else {
- var html = '';
- var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width,
height, className;
+ // Time to compress
+ customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
+ if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels) {
+ for (i=0; i<this.undoLevels.length-1; i++)
+ this.undoLevels[i] = this.undoLevels[i+1];
- if (typeof(value) == 'object') {
- cols = value['cols'];
- rows = value['rows'];
- border = value['border'] != "" ? value['border'] : 0;
- cellpadding = value['cellpadding'] != "" ?
value['cellpadding'] : -1;
- cellspacing = value['cellspacing'] != "" ?
value['cellspacing'] : -1;
- align = value['align'];
- width = value['width'];
- height = value['height'];
- className = value['className'];
- }
+ this.undoLevels.length--;
+ this.undoIndex--;
- // Update table
- if (tinyMCE.tableElement) {
- tinyMCE.setAttrib(tinyMCE.tableElement, 'cellPadding', cellpadding);
- tinyMCE.setAttrib(tinyMCE.tableElement, 'cellSpacing', cellspacing);
- tinyMCE.setAttrib(tinyMCE.tableElement, 'border', border);
- tinyMCE.setAttrib(tinyMCE.tableElement, 'width', width);
- tinyMCE.setAttrib(tinyMCE.tableElement, 'height', height);
- tinyMCE.setAttrib(tinyMCE.tableElement, 'align', align, true);
- tinyMCE.setAttrib(tinyMCE.tableElement, tinyMCE.isMSIE ? 'className' :
"class", className, true);
+ // Todo: Implement global undo/redo logic here
+ }
- if (tinyMCE.isMSIE) {
- tinyMCE.tableElement.style.pixelWidth = (width == null || width == "") ?
0 : width;
- tinyMCE.tableElement.style.pixelHeight = (height == null || height == "")
? 0 : height;
- }
+ b = inst.undoBookmark;
- tinyMCE.handleVisualAid(tinyMCE.tableElement, false, this.visualAid);
+ if (!b)
+ b = inst.selection.getBookmark();
- // Fix for stange MSIE align bug
- tinyMCE.tableElement.outerHTML = tinyMCE.tableElement.outerHTML;
+ this.undoIndex++;
+ this.undoLevels[this.undoIndex] = {
+ content : newHTML,
+ bookmark : b
+ };
- //this.contentWindow.dispatchEvent(createEvent("click"));
+ // Remove all above from global undo/redo
+ ul = tinyMCE.undoLevels;
+ for (i=tinyMCE.undoIndex + 1; i<ul.length; i++) {
+ ur = ul[i].undoRedo;
- tinyMCE.triggerNodeChange();
- return;
- }
+ if (ur.undoIndex == ur.undoLevels.length -1)
+ ur.undoIndex--;
- // Create new table
- html += '<table border="' + border + '" ';
- var visualAidStyle = this.visualAid ? tinyMCE.settings['visual_table_style']
: "";
+ ur.undoLevels.length--;
+ }
- if (cellpadding != -1)
- html += 'cellpadding="' + cellpadding + '" ';
+ // Add global undo level
+ tinyMCE.undoLevels[tinyMCE.undoIndex++] = inst;
+ tinyMCE.undoLevels.length = tinyMCE.undoIndex;
- if (cellspacing != -1)
- html += 'cellspacing="' + cellspacing + '" ';
+ this.undoLevels.length = this.undoIndex + 1;
- if (width != 0 && width != "")
- html += 'width="' + width + '" ';
+ return true;
+ }
- if (height != 0 && height != "")
- html += 'height="' + height + '" ';
+ return false;
+ },
- if (align)
- html += 'align="' + align + '" ';
+ undo : function() {
+ var inst = this.instance;
- if (className)
- html += 'class="' + className + '" ';
+ // Do undo
+ if (this.undoIndex > 0) {
+ this.undoIndex--;
- if (border == 0 && tinyMCE.settings['visual'])
- html += 'style="' + visualAidStyle + '" ';
+ tinyMCE.setInnerHTML(inst.getBody(), this.undoLevels[this.undoIndex].content);
+ inst.repaint();
- html += '>';
+ if (inst.settings.custom_undo_redo_restore_selection)
+ inst.selection.moveToBookmark(this.undoLevels[this.undoIndex].bookmark);
+ }
+ },
- for (var y=0; y<rows; y++) {
- html += "<tr>";
- for (var x=0; x<cols; x++) {
- if (border == 0 && tinyMCE.settings['visual'])
- html += '<td style="' + visualAidStyle + '">';
- else
- html += '<td>';
+ redo : function() {
+ var inst = this.instance;
- html += " </td>";
- }
- html += "</tr>";
- }
+ tinyMCE.execCommand("mceEndTyping");
- html += "</table>";
+ if (this.undoIndex < (this.undoLevels.length-1)) {
+ this.undoIndex++;
- this.execCommand('mceInsertContent', false, html);
+ 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() == "";
}
- break;
- case "mceTableInsertRowBefore":
- case "mceTableInsertRowAfter":
- case "mceTableDeleteRow":
- case "mceTableInsertColBefore":
- case "mceTableInsertColAfter":
- case "mceTableDeleteCol":
- var trElement = tinyMCE.getParentElement(this.getFocusElement(), "tr");
- var tdElement = tinyMCE.getParentElement(this.getFocusElement(), "td");
- var tableElement = tinyMCE.getParentElement(this.getFocusElement(),
"table");
+ // Check for images
+ if (para.getElementsByTagName("img").length > 0)
+ return false;
- // No table just return (invalid command)
- if (!tableElement)
- return;
+ // Check for tables
+ if (para.getElementsByTagName("table").length > 0)
+ return false;
- var documentRef = this.contentWindow.document;
- var tableBorder = tableElement.getAttribute("border");
- var visualAidStyle = this.visualAid ? tinyMCE.settings['visual_table_style'] :
"";
+ // Check for HRs
+ if (para.getElementsByTagName("hr").length > 0)
+ return false;
- // Table has a tbody use that reference
- if (tableElement.firstChild && tableElement.firstChild.nodeName.toLowerCase()
== "tbody")
- tableElement = tableElement.firstChild;
+ // Check all textnodes
+ var nodes = tinyMCE.getNodeTree(para, new Array(), 3);
+ for (var i=0; i<nodes.length; i++) {
+ if (!isEmptyHTML(nodes[i].nodeValue))
+ return false;
+ }
- if (tableElement && trElement) {
- switch (command) {
- case "mceTableInsertRowBefore":
- var numcells = trElement.cells.length;
- var rowCount = 0;
- var tmpTR = trElement;
+ // No images, no tables, no hrs, no text content then it's empty
+ return true;
+ }
- // Count rows
- while (tmpTR) {
- if (tmpTR.nodeName.toLowerCase() == "tr")
- rowCount++;
+ // tinyMCE.debug(body.innerHTML);
- tmpTR = tmpTR.previousSibling;
- }
+ // debug(e.target, sel.anchorNode.nodeName, sel.focusNode.nodeName, rng.startContainer,
rng.endContainer, rng.commonAncestorContainer, sel.anchorOffset, sel.focusOffset,
rng.toString());
- var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount-1);
- for (var i=0; i<numcells; i++) {
- var newTD = documentRef.createElement("td");
- newTD.innerHTML = " ";
+ // Setup before range
+ rngBefore = doc.createRange();
+ rngBefore.setStart(sel.anchorNode, sel.anchorOffset);
+ rngBefore.collapse(true);
- if (tableBorder == 0)
- newTD.style.cssText = visualAidStyle;
+ // Setup after range
+ rngAfter = doc.createRange();
+ rngAfter.setStart(sel.focusNode, sel.focusOffset);
+ rngAfter.collapse(true);
- var c = r.appendChild(newTD);
+ // Setup start/end points
+ direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0;
+ startNode = direct ? sel.anchorNode : sel.focusNode;
+ startOffset = direct ? sel.anchorOffset : sel.focusOffset;
+ endNode = direct ? sel.focusNode : sel.anchorNode;
+ endOffset = direct ? sel.focusOffset : sel.anchorOffset;
- if (tdElement.parentNode.childNodes[i].colSpan)
- c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
- }
- break;
+ startNode = startNode.nodeName == "BODY" ? startNode.firstChild : startNode;
+ endNode = endNode.nodeName == "BODY" ? endNode.firstChild : endNode;
- case "mceTableInsertRowAfter":
- var numcells = trElement.cells.length;
- var rowCount = 0;
- var tmpTR = trElement;
- var documentRef = this.contentWindow.document;
+ // Get block elements
+ startBlock = inst.getParentBlockElement(startNode);
+ endBlock = inst.getParentBlockElement(endNode);
- // Count rows
- while (tmpTR) {
- if (tmpTR.nodeName.toLowerCase() == "tr")
- rowCount++;
+ // If absolute force paragraph generation within
+ if (startBlock && new RegExp('absolute|relative|static',
'gi').test(startBlock.style.position))
+ startBlock = null;
- tmpTR = tmpTR.previousSibling;
- }
+ if (endBlock && new RegExp('absolute|relative|static',
'gi').test(endBlock.style.position))
+ endBlock = null;
- var r = tableElement.insertRow(rowCount == 0 ? 1 : rowCount);
- for (var i=0; i<numcells; i++) {
- var newTD = documentRef.createElement("td");
- newTD.innerHTML = " ";
+ // Use current block name
+ if (startBlock != null) {
+ blockName = startBlock.nodeName;
- if (tableBorder == 0)
- newTD.style.cssText = visualAidStyle;
+ // Use P instead
+ if (blockName == "TD" || blockName == "TABLE" || (blockName ==
"DIV" && new RegExp('left|right',
'gi').test(startBlock.style.cssFloat)))
+ blockName = "P";
+ }
- var c = r.appendChild(newTD);
+ // Within a list use normal behaviour
+ if (tinyMCE.getParentElement(startBlock, "OL,UL", null, body) != null)
+ return false;
- if (tdElement.parentNode.childNodes[i].colSpan)
- c.colSpan = tdElement.parentNode.childNodes[i].colSpan;
- }
- break;
+ // Within a table create new paragraphs
+ if ((startBlock != null && startBlock.nodeName == "TABLE") ||
(endBlock != null && endBlock.nodeName == "TABLE"))
+ startBlock = endBlock = null;
- case "mceTableDeleteRow":
- // Remove whole table
- if (tableElement.rows.length <= 1) {
- tableElement.parentNode.removeChild(tableElement);
- tinyMCE.triggerNodeChange();
- return;
- }
+ // Setup new paragraphs
+ paraBefore = (startBlock != null && startBlock.nodeName == blockName) ?
startBlock.cloneNode(false) : doc.createElement(blockName);
+ paraAfter = (endBlock != null && endBlock.nodeName == blockName) ?
endBlock.cloneNode(false) : doc.createElement(blockName);
- var selElm = this.contentWindow.document.body;
- if (trElement.previousSibling)
- selElm = trElement.previousSibling.cells[0];
+ // Is header, then force paragraph under
+ if (/^(H[1-6])$/.test(blockName))
+ paraAfter = doc.createElement("p");
- // Delete row
- trElement.parentNode.removeChild(trElement);
+ // Setup chop nodes
+ startChop = startNode;
+ endChop = endNode;
- tinyMCE._selectNode(this.contentWindow, selElm);
- break;
+ // Get startChop node
+ node = startChop;
+ do {
+ if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+ break;
- case "mceTableInsertColBefore":
- var cellCount = tdElement.cellIndex;
+ startChop = node;
+ } while ((node = node.previousSibling ? node.previousSibling : node.parentNode));
- // Add columns
- for (var y=0; y<tableElement.rows.length; y++) {
- var cell = tableElement.rows[y].cells[cellCount];
+ // Get endChop node
+ node = endChop;
+ do {
+ if (node == body || node.nodeType == 9 || tinyMCE.isBlockElement(node))
+ break;
- // Can't add cell after cell that doesn't exist
- if (!cell)
- break;
+ endChop = node;
+ } while ((node = node.nextSibling ? node.nextSibling : node.parentNode));
- var newTD = documentRef.createElement("td");
- newTD.innerHTML = " ";
+ // Fix when only a image is within the TD
+ if (startChop.nodeName == "TD")
+ startChop = startChop.firstChild;
- if (tableBorder == 0)
- newTD.style.cssText = visualAidStyle;
+ if (endChop.nodeName == "TD")
+ endChop = endChop.lastChild;
- cell.parentNode.insertBefore(newTD, cell);
- }
- break;
+ // If not in a block element
+ if (startBlock == null) {
+ // Delete selection
+ rng.deleteContents();
- case "mceTableInsertColAfter":
- var cellCount = tdElement.cellIndex;
+ if (!tinyMCE.isSafari)
+ sel.removeAllRanges();
- // Add columns
- for (var y=0; y<tableElement.rows.length; y++) {
- var append = false;
- var cell = tableElement.rows[y].cells[cellCount];
- if (cellCount == tableElement.rows[y].cells.length-1)
- append = true;
- else
- cell = tableElement.rows[y].cells[cellCount+1];
+ if (startChop != rootElm && endChop != rootElm) {
+ // Insert paragraph before
+ rngBefore = rng.cloneRange();
- var newTD = documentRef.createElement("td");
- newTD.innerHTML = " ";
+ if (startChop == body)
+ rngBefore.setStart(startChop, 0);
+ else
+ rngBefore.setStartBefore(startChop);
- if (tableBorder == 0)
- newTD.style.cssText = visualAidStyle;
+ paraBefore.appendChild(rngBefore.cloneContents());
- if (append)
- cell.parentNode.appendChild(newTD);
- else
- cell.parentNode.insertBefore(newTD, cell);
- }
- break;
+ // Insert paragraph after
+ if (endChop.parentNode.nodeName == blockName)
+ endChop = endChop.parentNode;
- case "mceTableDeleteCol":
- var index = tdElement.cellIndex;
- var selElm = this.contentWindow.document.body;
+ // If not after image
+ //if (rng.startContainer.nodeName != "BODY" &&
rng.endContainer.nodeName != "BODY")
+ rng.setEndAfter(endChop);
- var numCols = 0;
- for (var y=0; y<tableElement.rows.length; y++) {
- if (tableElement.rows[y].cells.length > numCols)
- numCols = tableElement.rows[y].cells.length;
- }
+ if (endChop.nodeName != "#text" && endChop.nodeName !=
"BODY")
+ rngBefore.setEndAfter(endChop);
- // Remove whole table
- if (numCols <= 1) {
- tinyMCE._selectNode(this.contentWindow, selElm);
- tableElement.parentNode.removeChild(tableElement);
- tinyMCE.triggerNodeChange();
- return;
- }
+ contents = rng.cloneContents();
+ if (contents.firstChild && (contents.firstChild.nodeName == blockName ||
contents.firstChild.nodeName == "BODY"))
+ paraAfter.innerHTML = contents.firstChild.innerHTML;
+ else
+ paraAfter.appendChild(contents);
- // Remove columns
- for (var y=0; y<tableElement.rows.length; y++) {
- var cell = tableElement.rows[y].cells[index];
- if (cell)
- cell.parentNode.removeChild(cell);
- }
+ // Check if it's a empty paragraph
+ if (isEmpty(paraBefore))
+ paraBefore.innerHTML = " ";
- if (index > 0)
- selElm = tableElement.rows[0].cells[index-1];
+ // Check if it's a empty paragraph
+ if (isEmpty(paraAfter))
+ paraAfter.innerHTML = " ";
- tinyMCE._selectNode(this.contentWindow, selElm);
- break;
+ // Delete old contents
+ rng.deleteContents();
+ rngAfter.deleteContents();
+ rngBefore.deleteContents();
+
+ // Insert new paragraphs
+ if (tinyMCE.isOpera) {
+ paraBefore.normalize();
+ rngBefore.insertNode(paraBefore);
+ paraAfter.normalize();
+ rngBefore.insertNode(paraAfter);
+ } else {
+ paraAfter.normalize();
+ rngBefore.insertNode(paraAfter);
+ paraBefore.normalize();
+ rngBefore.insertNode(paraBefore);
}
- tinyMCE.triggerNodeChange();
+ //tinyMCE.debug("1: ", paraBefore.innerHTML, paraAfter.innerHTML);
+ } else {
+ body.innerHTML = "<" + blockName + "> </" +
blockName + "><" + blockName + "> </" + blockName
+ ">";
+ paraAfter = body.childNodes[1];
}
- break;
- case "mceAddUndoLevel":
- if (tinyMCE.settings['custom_undo_redo']) {
- var customUndoLevels = tinyMCE.settings['custom_undo_redo_levels'];
+ inst.selection.moveToBookmark(b);
+ inst.selection.selectNode(paraAfter, true, true);
- var newHTML = this.contentWindow.document.body.innerHTML;
- if (newHTML != this.undoLevels[this.undoLevels.length-1]) {
- // Time to compress
- if (customUndoLevels != -1 && this.undoLevels.length > customUndoLevels)
{
- for (var i=0; i<this.undoLevels.length-1; i++) {
- //alert(this.undoLevels[i] + "=" + this.undoLevels[i+1]);
- this.undoLevels[i] = this.undoLevels[i+1];
- }
+ return true;
+ }
- this.undoLevels.length--;
- this.undoIndex--;
- }
+ // Place first part within new paragraph
+ if (startChop.nodeName == blockName)
+ rngBefore.setStart(startChop, 0);
+ else
+ rngBefore.setStartBefore(startChop);
- //alert(newHTML + "=" + this.undoLevels[this.undoIndex]);
- // Add new level
- this.undoLevels[this.undoIndex++] = newHTML;
- this.undoLevels.length = this.undoIndex;
- //window.status = "mceAddUndoLevel - undo levels:" +
this.undoLevels.length + ", undo index: " + this.undoIndex;
- }
+ rngBefore.setEnd(startNode, startOffset);
+ paraBefore.appendChild(rngBefore.cloneContents());
- tinyMCE.triggerNodeChange(false);
+ // 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<nodes.length; i++) {
+ //tinyMCE.debug(nodes[i].nodeName);
+ if (nodes[i].nodeName != "BODY")
+ paraAfter.appendChild(nodes[i]);
}
- break;
+ */
+ paraAfter.innerHTML = contents.firstChild.innerHTML;
+ } else
+ paraAfter.appendChild(contents);
- case "Undo":
- if (tinyMCE.settings['custom_undo_redo']) {
- // Is first level
- if (this.undoIndex == this.undoLevels.length) {
- this.execCommand("mceAddUndoLevel");
- this.undoIndex--;
- }
+ // Check if it's a empty paragraph
+ if (isEmpty(paraBefore))
+ paraBefore.innerHTML = " ";
- // Do undo
- if (this.undoIndex > 0) {
- this.undoIndex--;
- this.contentWindow.document.body.innerHTML = this.undoLevels[this.undoIndex];
- }
+ // Check if it's a empty paragraph
+ if (isEmpty(paraAfter))
+ paraAfter.innerHTML = " ";
- //window.status = "Undo - undo levels:" + this.undoLevels.length + ",
undo index: " + this.undoIndex;
- tinyMCE.triggerNodeChange();
- } else
- this.contentDocument.execCommand(command, user_interface, value);
- break;
+ // Create a range around everything
+ rng = doc.createRange();
- case "Redo":
- if (tinyMCE.settings['custom_undo_redo']) {
- if (this.undoIndex < (this.undoLevels.length-1)) {
- this.undoIndex++;
- this.contentWindow.document.body.innerHTML = this.undoLevels[this.undoIndex];
- //window.status = "Redo - undo levels:" + this.undoLevels.length + ",
undo index: " + this.undoIndex;
- }
+ 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);
+ }
- tinyMCE.triggerNodeChange();
- } else
- this.contentDocument.execCommand(command, user_interface, value);
- break;
+ if (!endChop.nextSibling && endChop.parentNode.nodeName.toUpperCase() ==
blockName)
+ rng.setEndAfter(endChop.parentNode);
+ else
+ rng.setEnd(rngAfter.endContainer, rngAfter.endOffset);
- case "mceToggleVisualAid":
- this.visualAid = !this.visualAid;
- tinyMCE.handleVisualAid(this.contentWindow.document.body, true, this.visualAid);
- tinyMCE.triggerNodeChange();
- break;
-/*
- case "removeformat":
- //this.contentDocument.execCommand('FormatBlock', user_interface,
'<span>');
- var documentRef = this.contentWindow.document;
- var rng = documentRef.selection.createRange();
- var elm = rng.item ? rng.item(0) : rng.parentElement();
+ // Delete all contents and insert new paragraphs
+ rng.deleteContents();
- html = "</" + elm.nodeName + ">" + rng.text +
"<" + elm.nodeName + ">";
+ if (tinyMCE.isOpera) {
+ rng.insertNode(paraBefore);
+ rng.insertNode(paraAfter);
+ } else {
+ rng.insertNode(paraAfter);
+ rng.insertNode(paraBefore);
+ }
- this.contentDocument.execCommand('FontName', user_interface,
'#mce_temp_name#');
- var html = this.contentDocument.innerHTML;
- html.replace('<font face=');
+ //tinyMCE.debug("2", paraBefore.innerHTML, paraAfter.innerHTML);
- rng.pasteHTML(html);
+ // Normalize
+ paraAfter.normalize();
+ paraBefore.normalize();
- alert(html);
-
- if (tinyMCE.isMSIE) {
- var documentRef = this.contentWindow.document;
- var rngs = documentRef.selection.createRangeCollection();
+ inst.selection.moveToBookmark(b);
+ inst.selection.selectNode(paraAfter, true, true);
- for (var i=0; i<rngs.length; i++)
- alert(rngs[i].htmlText);
+ return true;
+ },
- var html = rng.htmlText;
- var tmpElm = documentRef.createElement("div");
- tmpElm.innerHTML = html;
- for (var i=0; i<tmpElm.all.length; i++) {
- tmpElm.all[i].removeAttribute("style");
- tmpElm.all[i].removeAttribute("className");
- }
-//alert(tmpElm.innerHTML);
- rng.pasteHTML(tmpElm.innerHTML);
- //rng.pasteHTML(rng.text);
+ _handleBackSpace : function(inst) {
+ var r = inst.getRng(), sn = r.startContainer, nv, s = false;
- this.contentDocument.execCommand('FontName', user_interface,
'arial,helvetica,sans-serif');
- } else
- this.contentDocument.execCommand(command, user_interface, value);
+ // Added body check for bug #1527787
+ if (sn && sn.nextSibling && sn.nextSibling.nodeName == "BR"
&& sn.parentNode.nodeName != "BODY") {
+ nv = sn.nodeValue;
- tinyMCE.triggerNodeChange();
- break;
-*/
- default:
- this.contentDocument.execCommand(command, user_interface, value);
- tinyMCE.triggerNodeChange();
- }
-}
+ // Handle if a backspace is pressed after a space character #bug 1466054 removed since
fix for #1527787
+ /*if (nv != null && nv.length >= r.startOffset &&
nv.charAt(r.startOffset - 1) == ' ')
+ s = true;*/
-function TinyMCE__selectNode(win, node, expand) {
- if (!tinyMCE.isMSIE) {
- var rng = win.document.createRange();
- rng.selectNode(node);
- sel = win.getSelection();
- sel.addRange(rng);
- if (expand)
- sel.extend(node, 0);
- else
- sel.collapse(node, 0);
+ // 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;
}
-}
-function TinyMCE_getControlHTML(control_name) {
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
+ };
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + "_getControlHTML";
- if (eval("typeof(" + templateFunction + ")") !=
'undefined') {
- var html = eval(templateFunction + "('" + control_name +
"');");
- if (html != "")
- return tinyMCE.replaceVar(html, "pluginurl", tinyMCE.baseURL +
"/plugins/" + themePlugins[i]);
+/* 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;
}
- }
- return eval('TinyMCE_' + tinyMCE.settings['theme'] +
"_getControlHTML" + "('" + control_name + "');");
-}
+ this.moveTo(x, y);
+ },
-function TinyMCE__themeExecCommand(editor_id, element, command, user_interface, value) {
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
+ moveBy : function(x, y) {
+ var e = this.getElement();
+ this.moveTo(parseInt(e.style.left) + x, parseInt(e.style.top) + y);
+ },
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + "_execCommand";
- if (eval("typeof(" + templateFunction + ")") !=
'undefined') {
- if (eval(templateFunction + "(editor_id, element, command, user_interface,
value);"))
- return true;
+ 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() {
+ this.getElement().style.display = 'block';
+ this.updateBlocker();
+ },
+
+ hide : function() {
+ this.getElement().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';
}
- }
+ },
- // Theme funtion
- templateFunction = 'TinyMCE_' + tinyMCE.settings['theme'] +
"_execCommand";
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- return eval(templateFunction + "(editor_id, element, command, user_interface,
value);");
+ getBlocker : function() {
+ var d, b;
- // Pass to normal
- return false;
-}
+ if (!this.blockerElement && this.blockMode) {
+ d = this.doc;
+ b = d.getElementById(this.id + "_blocker");
-function TinyMCE__getThemeFunction(suffix, skip_plugins) {
- if (skip_plugins)
- return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
+ if (!b) {
+ b = d.createElement("iframe");
- var themePlugins = tinyMCE.getParam('plugins', '', true, ',');
- var templateFunction;
+ 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);
+ }
- // Is it defined in any plugins
- for (var i=themePlugins.length; i>=0; i--) {
- templateFunction = 'TinyMCE_' + themePlugins[i] + suffix;
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- return templateFunction;
- }
+ this.blockerElement = b;
+ }
- return 'TinyMCE_' + tinyMCE.settings['theme'] + suffix;
-}
+ return this.blockerElement;
+ },
-function TinyMCEControl_queryCommandValue(command) {
- return this.contentWindow.document.queryCommandValue(command);
-}
+ getAbsPosition : function(n) {
+ var p = {absLeft : 0, absTop : 0};
-function TinyMCEControl_queryCommandState(command) {
- return this.contentWindow.document.queryCommandState(command);
-}
+ while (n) {
+ p.absLeft += n.offsetLeft;
+ p.absTop += n.offsetTop;
+ n = n.offsetParent;
+ }
-function TinyMCEControl_onAdd(replace_element, form_element_name) {
- tinyMCE.themeURL = tinyMCE.baseURL + "/themes/" +
this.settings['theme'];
- this.settings['themeurl'] = tinyMCE.themeURL;
+ return p;
+ },
- if (!replace_element) {
- alert("Error: Could not find the target element.");
- return false;
- }
+ create : function(n, c, p, h) {
+ var d = this.doc, e = d.createElement(n);
- var templateFunction = tinyMCE._getThemeFunction('_getInsertTableTemplate');
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- this.insertTableTemplate = eval(templateFunction + '(this.settings);');
+ e.setAttribute('id', this.id);
- var templateFunction = tinyMCE._getThemeFunction('_getInsertLinkTemplate');
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- this.insertLinkTemplate = eval(templateFunction + '(this.settings);');
+ if (c)
+ e.className = c;
- var templateFunction = tinyMCE._getThemeFunction('_getInsertImageTemplate');
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- this.insertImageTemplate = eval(templateFunction + '(this.settings);');
+ if (!p)
+ p = d.body;
- var templateFunction = tinyMCE._getThemeFunction('_getEditorTemplate');
- if (eval("typeof(" + templateFunction + ")") == 'undefined')
{
- alert("Error: Could not find the template function: " + templateFunction);
- return false;
+ 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);
}
- var editorTemplate = eval(templateFunction + '(this.settings,
this.editorId);');
+ };
- var deltaWidth = editorTemplate['delta_width'] ?
editorTemplate['delta_width'] : 0;
- var deltaHeight = editorTemplate['delta_height'] ?
editorTemplate['delta_height'] : 0;
- var html = '<span id="' + this.editorId + '_parent">' +
editorTemplate['html'];
+/* file:jscripts/tiny_mce/classes/TinyMCE_Menu.class.js */
- var templateFunction = tinyMCE._getThemeFunction('_handleNodeChange', true);
- if (eval("typeof(" + templateFunction + ")") !=
'undefined')
- this.settings['handleNodeChangeCallback'] = templateFunction;
+function TinyMCE_Menu() {
+ var id;
- html = tinyMCE.replaceVar(html, "editor_id", this.editorId);
- html = tinyMCE.replaceVar(html, "default_document", tinyMCE.baseURL +
"/blank.htm");
- this.settings['default_document'] = tinyMCE.baseURL + "/blank.htm";
+ if (typeof(tinyMCE.menuCounter) == "undefined")
+ tinyMCE.menuCounter = 0;
- this.settings['old_width'] = this.settings['width'];
- this.settings['old_height'] = this.settings['height'];
+ id = "mc_menu_" + tinyMCE.menuCounter++;
- // Set default width, height
- if (this.settings['width'] == -1)
- this.settings['width'] = replace_element.offsetWidth;
+ TinyMCE_Layer.call(this, id, true);
- if (this.settings['height'] == -1)
- this.settings['height'] = replace_element.offsetHeight;
+ this.id = id;
+ this.items = new Array();
+ this.needsUpdate = true;
+};
- this.settings['area_width'] = this.settings['width'];
- this.settings['area_height'] = this.settings['height'];
- this.settings['area_width'] += deltaWidth;
- this.settings['area_height'] += deltaHeight;
+TinyMCE_Menu.prototype = tinyMCE.extend(TinyMCE_Layer.prototype, {
+ init : function(s) {
+ var n;
- // Special % handling
- if (("" + this.settings['width']).indexOf('%') != -1)
- this.settings['area_width'] = "100%";
+ // Default params
+ this.settings = {
+ separator_class : 'mceMenuSeparator',
+ title_class : 'mceMenuTitle',
+ disabled_class : 'mceMenuDisabled',
+ menu_class : 'mceMenu',
+ drop_menu : true
+ };
- if (("" + this.settings['height']).indexOf('%') != -1)
- this.settings['area_height'] = "100%";
+ for (n in s)
+ this.settings[n] = s[n];
- if (("" + replace_element.style.width).indexOf('%') != -1) {
- this.settings['width'] = replace_element.style.width;
- this.settings['area_width'] = "100%";
- }
+ this.create('div', this.settings.menu_class);
+ },
- if (("" + replace_element.style.height).indexOf('%') != -1) {
- this.settings['height'] = replace_element.style.height;
- this.settings['area_height'] = "100%";
- }
+ clear : function() {
+ this.items = new Array();
+ },
- html = tinyMCE.applyTemplate(html);
+ addTitle : function(t) {
+ this.add({type : 'title', text : t});
+ },
- this.settings['width'] = this.settings['old_width'];
- this.settings['height'] = this.settings['old_height'];
+ addDisabled : function(t) {
+ this.add({type : 'disabled', text : t});
+ },
- this.visualAid = this.settings['visual'];
- this.oldTargetElement = replace_element.cloneNode(true);
- this.formTargetElementId = form_element_name;
+ addSeparator : function() {
+ this.add({type : 'separator'});
+ },
- // Debug mode
- if (tinyMCE.settings['debug'])
- html += '<textarea wrap="off" id="' + form_element_name
+ '" name="' + form_element_name + '" cols="100"
rows="15"></textarea>';
- else
- html += '<input type="hidden" type="text"
id="' + form_element_name + '" name="' + form_element_name +
'" />';
+ addItem : function(t, js) {
+ this.add({text : t, js : js});
+ },
- html += '</span>';
+ add : function(mi) {
+ this.items[this.items.length] = mi;
+ this.needsUpdate = true;
+ },
- // Output HTML and set editable
- if (!tinyMCE.isMSIE) {
- var rng = replace_element.ownerDocument.createRange();
- rng.setStartBefore(replace_element);
+ update : function() {
+ var e = this.getElement(), h = '', i, t, m = this.items, s = this.settings;
- var fragment = rng.createContextualFragment(html);
- replace_element.parentNode.replaceChild(fragment, replace_element);
- } else
- replace_element.outerHTML = html;
+ if (this.settings.drop_menu)
+ h += '<span class="mceMenuLine"></span>';
- //window.setTimeout("tinyMCE.setEditMode('" + this.editorId + "',
true)", 1);
- tinyMCE.setEditMode(this.editorId, true);
+ h += '<table border="0" cellpadding="0"
cellspacing="0">';
- return true;
-}
+ for (i=0; i<m.length; i++) {
+ t = tinyMCE.xmlEncode(m[i].text);
+ c = m[i].class_name ? ' class="' + m[i].class_name + '"' :
'';
-function TinyMCEControl_getFocusElement() {
- if (tinyMCE.isMSIE) {
- var documentRef = this.contentWindow.document;
- var rng = documentRef.selection.createRange();
- var elm = rng.item ? rng.item(0) : rng.parentElement();
- } else {
- var sel = this.contentWindow.getSelection();
- var elm = sel.anchorNode;
+ switch (m[i].type) {
+ case 'separator':
+ h += '<tr class="' + s.separator_class +
'"><td>';
+ break;
- if (tinyMCE.selectedElement != null &&
tinyMCE.selectedElement.nodeName.toLowerCase() == "img")
- elm = tinyMCE.selectedElement;
+ case 'title':
+ h += '<tr class="' + s.title_class +
'"><td><span' + c +'>' + t + '</span>';
+ break;
+
+ case 'disabled':
+ h += '<tr class="' + s.disabled_class +
'"><td><span' + c +'>' + t + '</span>';
+ break;
+
+ default:
+ h += '<tr><td><a href="#" onclick="return
tinyMCE.cancelEvent(event);" onmousedown="return
tinyMCE.cancelEvent(event);" onmouseup="' + tinyMCE.xmlEncode(m[i].js) +
';return tinyMCE.cancelEvent(event);"><span' + c +'>' + t +
'</span></a>';
+ }
+
+ h += '</td></tr>';
+ }
+
+ h += '</table>';
+
+ 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;
}
- return elm;
-}
+ });
-// Global instances
-var tinyMCE = new TinyMCE();
-var tinyMCELang = new Array();
+/* 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<a.length; i++)
+ as += (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<a.length; i++) {
+ m += a[i];
+
+ if (i<a.length-1)
+ m += ', ';
+ }
+
+ if (l < 1000)
+ tinyMCE.log[l] = "[debug] " + m;
+};
+
Added:
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/editable_selects.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/editable_selects.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/editable_selects.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,61 @@
+/**
+ * $Id: editable_selects.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Makes select boxes editable.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var TinyMCE_EditableSelects = {
+ editSelectElm : null,
+
+ init : function() {
+ var nl = document.getElementsByTagName("select"), i, d = document, o;
+
+ for (i=0; i<nl.length; i++) {
+ if (nl[i].className.indexOf('mceEditableSelect') != -1) {
+ o = new Option('(value)', '__mce_add_custom__');
+
+ o.className = 'mceAddSelectValue';
+
+ nl[i].options[nl[i].options.length] = o;
+ nl[i].setAttribute('onchange',
'TinyMCE_EditableSelects.onChangeEditableSelect(this);');
+ }
+ }
+ },
+
+ onChangeEditableSelect : function(se) {
+ var d = document, ne;
+
+ if (se.options[se.selectedIndex].value == '__mce_add_custom__') {
+ ne = d.createElement("input");
+ ne.id = se.id + "_custom";
+ ne.name = se.name + "_custom";
+ ne.type = "text";
+
+ ne.style.width = se.clientWidth;
+ se.parentNode.insertBefore(ne, se);
+ se.style.display = 'none';
+ ne.focus();
+ ne.onblur = TinyMCE_EditableSelects.onBlurEditableSelectInput;
+ TinyMCE_EditableSelects.editSelectElm = se;
+ }
+ },
+
+ onBlurEditableSelectInput : function() {
+ var se = TinyMCE_EditableSelects.editSelectElm;
+
+ if (se) {
+ if (se.previousSibling.value != '') {
+ addSelectValue(document.forms[0], se.id, se.previousSibling.value,
se.previousSibling.value);
+ selectByValue(document.forms[0], se.id, se.previousSibling.value);
+ } else
+ selectByValue(document.forms[0], se.id, '');
+
+ se.style.display = 'inline';
+ se.parentNode.removeChild(se.previousSibling);
+ TinyMCE_EditableSelects.editSelectElm = null;
+ }
+ }
+};
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/form_utils.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/form_utils.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/form_utils.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,210 @@
+/**
+ * $Id: form_utils.js 43 2006-08-08 16:10:07Z spocke $
+ *
+ * Various form utilitiy functions.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+var themeBaseURL = tinyMCE.baseURL + '/themes/' +
tinyMCE.getParam("theme");
+
+function getColorPickerHTML(id, target_form_element) {
+ var h = "";
+
+ h += '<a id="' + id + '_link"
href="javascript:void(0);" onkeydown="pickColor(event,\'' +
target_form_element +'\');" onmousedown="pickColor(event,\'' +
target_form_element +'\');return false;">';
+ h += '<img id="' + id + '" src="' + themeBaseURL +
'/images/color.gif"';
+ h += ' onmouseover="this.className=\'mceButtonOver\'"';
+ h += ' onmouseout="this.className=\'mceButtonNormal\'"';
+ h += ' onmousedown="this.className=\'mceButtonDown\'"';
+ h += ' width="20" height="16" border="0"
title="' + tinyMCE.getLang('lang_browse') + '"';
+ h += ' class="mceButtonNormal" alt="' +
tinyMCE.getLang('lang_browse') + '" /></a>';
+
+ 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 += '<a id="' + id + '_link"
href="javascript:openBrower(\'' + id + '\',\'' +
target_form_element + '\', \'' + type + '\',\'' + option +
'\');" onmousedown="return false;">';
+ html += '<img id="' + id + '" src="' + themeBaseURL +
'/images/browse.gif"';
+ html += ' onmouseover="this.className=\'mceButtonOver\';"';
+ html += ' onmouseout="this.className=\'mceButtonNormal\';"';
+ html += ' onmousedown="this.className=\'mceButtonDown\';"';
+ html += ' width="20" height="18" border="0"
title="' + tinyMCE.getLang('lang_browse') + '"';
+ html += ' class="mceButtonNormal" alt="' +
tinyMCE.getLang('lang_browse') + '" /></a>';
+
+ 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<sel.options.length; i++) {
+ var option = sel.options[i];
+
+ if (option.value == value || (ignore_case && option.value.toLowerCase() ==
value.toLowerCase())) {
+ option.selected = true;
+ found = true;
+ } else
+ option.selected = false;
+ }
+
+ if (!found && add_custom && value != '') {
+ var option = new Option(value, value);
+ option.selected = true;
+ sel.options[sel.options.length] = option;
+ sel.selectedIndex = sel.options.length - 1;
+ }
+
+ return found;
+}
+
+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 addSelectValue(form_obj, field_name, name, value) {
+ var s = form_obj.elements[field_name];
+ var o = new Option(name, value);
+ s.options[s.options.length] = o;
+}
+
+function addClassesToList(list_id, specific_option) {
+ // Setup class droplist
+ var styleSelectElm = document.getElementById(list_id);
+ var styles = tinyMCE.getParam('theme_advanced_styles', false);
+ styles = tinyMCE.getParam(specific_option, styles);
+
+ if (styles) {
+ var stylesAr = styles.split(';');
+
+ for (var i=0; i<stylesAr.length; i++) {
+ if (stylesAr != "") {
+ var key, value;
+
+ key = stylesAr[i].split('=')[0];
+ value = stylesAr[i].split('=')[1];
+
+ styleSelectElm.options[styleSelectElm.length] = new Option(key, value);
+ }
+ }
+ } else {
+ // Use auto impored classes
+ var csses = tinyMCE.getCSSClasses(tinyMCE.getWindowArg('editor_id'));
+ for (var i=0; i<csses.length; i++)
+ styleSelectElm.options[styleSelectElm.length] = new Option(csses[i], csses[i]);
+ }
+}
+
+function isVisible(element_id) {
+ var elm = document.getElementById(element_id);
+
+ return elm && elm.style.display != "none";
+}
+
+function convertRGBToHex(col) {
+ var re = new
RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)",
"gi");
+
+ 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 "rgb(" + r + "," + g + "," + b + ")";
+ }
+
+ return col;
+}
+
+function trimSize(size) {
+ return size.replace(new RegExp('[^0-9%]', 'gi'), '');
+}
+
+function getCSSSize(size) {
+ size = trimSize(size);
+
+ if (size == "")
+ return "";
+
+ return size.indexOf('%') != -1 ? size : size + "px";
+}
+
+function getStyle(elm, attrib, style) {
+ var val = tinyMCE.getAttrib(elm, attrib);
+
+ if (val != '')
+ return '' + val;
+
+ if (typeof(style) == 'undefined')
+ style = attrib;
+
+ val = eval('elm.style.' + style);
+
+ return val == null ? '' : '' + val;
+}
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mclayer.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mclayer.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mclayer.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,210 @@
+/**
+ * $Id: mclayer.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode floating layer script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCLayer(id) {
+ this.id = id;
+ this.settings = new Array();
+ this.blockerElement = null;
+ this.isMSIE = navigator.appName == "Microsoft Internet Explorer";
+ this.events = false;
+ this.autoHideCallback = null;
+}
+
+MCLayer.prototype = {
+ moveRelativeTo : function(re, p, a) {
+ var rep = this.getAbsPosition(re);
+ var w = parseInt(re.offsetWidth);
+ var h = parseInt(re.offsetHeight);
+ var x, y;
+
+ switch (p) {
+ case "tl":
+ break;
+
+ case "tr":
+ x = rep.absLeft + w;
+ y = rep.absTop;
+ break;
+
+ case "bl":
+ break;
+
+ case "br":
+ break;
+ }
+
+ this.moveTo(x, y);
+ },
+
+ moveBy : function(dx, dy) {
+ var e = this.getElement();
+ var x = parseInt(e.style.left);
+ var y = parseInt(e.style.top);
+
+ e.style.left = (x + dx) + "px";
+ e.style.top = (y + dy) + "px";
+
+ this.updateBlocker();
+ },
+
+ moveTo : function(x, y) {
+ var e = this.getElement();
+
+ e.style.left = x + "px";
+ e.style.top = y + "px";
+
+ this.updateBlocker();
+ },
+
+ show : function() {
+ MCLayer.visibleLayer = this;
+
+ this.getElement().style.display = 'block';
+ this.updateBlocker();
+ },
+
+ hide : function() {
+ this.getElement().style.display = 'none';
+ this.updateBlocker();
+ },
+
+ setAutoHide : function(s, cb) {
+ this.autoHideCallback = cb;
+ this.registerEventHandlers();
+ },
+
+ getElement : function() {
+ return document.getElementById(this.id);
+ },
+
+ updateBlocker : function() {
+ if (!this.isMSIE)
+ return;
+
+ var e = this.getElement();
+ var b = this.getBlocker();
+ var x = this.parseInt(e.style.left);
+ var y = this.parseInt(e.style.top);
+ var w = this.parseInt(e.offsetWidth);
+ var 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;
+ },
+
+ getBlocker : function() {
+ if (!this.blockerElement) {
+ var d = document, b = d.createElement("iframe");
+
+ b.style.cssText = 'display: none; left: 0px; position: absolute; 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;
+ },
+
+ registerEventHandlers : function() {
+ if (!this.events) {
+ var d = document;
+
+ this.addEvent(d, 'mousedown', MCLayer.prototype.onMouseDown);
+
+ this.events = true;
+ }
+ },
+
+ addEvent : function(o, n, h) {
+ if (o.attachEvent)
+ o.attachEvent("on" + n, h);
+ else
+ o.addEventListener(n, h, false);
+ },
+
+ onMouseDown : function(e) {
+ e = typeof(e) == "undefined" ? window.event : e;
+ var b = document.body;
+ var l = MCLayer.visibleLayer;
+
+ if (l) {
+ var mx = l.isMSIE ? e.clientX + b.scrollLeft : e.pageX;
+ var my = l.isMSIE ? e.clientY + b.scrollTop : e.pageY;
+ var el = l.getElement();
+ var x = parseInt(el.style.left);
+ var y = parseInt(el.style.top);
+ var w = parseInt(el.offsetWidth);
+ var h = parseInt(el.offsetHeight);
+
+ if (!(mx > 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<a.length; i++) {
+ if (a[i] == c)
+ a[i] = '';
+ }
+
+ e.className = a.join(' ');
+ },
+
+ explode : function(d, s) {
+ var ar = s.split(d);
+ var oar = new Array();
+
+ for (var i = 0; i<ar.length; i++) {
+ if (ar[i] != "")
+ oar[oar.length] = ar[i];
+ }
+
+ return oar;
+ },
+
+ parseInt : function(s) {
+ if (s == null || s == '')
+ return 0;
+
+ return parseInt(s);
+ }
+}
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mctabs.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mctabs.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/mctabs.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,74 @@
+/**
+ * $Id: mctabs.js 18 2006-06-29 14:11:23Z spocke $
+ *
+ * Moxiecode DHTML Tabs script.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+function MCTabs() {
+ this.settings = new Array();
+};
+
+MCTabs.prototype.init = function(settings) {
+ this.settings = settings;
+};
+
+MCTabs.prototype.getParam = function(name, default_value) {
+ var value = null;
+
+ value = (typeof(this.settings[name]) == "undefined") ? default_value :
this.settings[name];
+
+ // Fix bool values
+ if (value == "true" || value == "false")
+ return (value == "true");
+
+ return value;
+};
+
+MCTabs.prototype.displayTab = function(tab_id, panel_id) {
+ var panelElm = document.getElementById(panel_id);
+ var panelContainerElm = panelElm ? panelElm.parentNode : null;
+ var tabElm = document.getElementById(tab_id);
+ var tabContainerElm = tabElm ? tabElm.parentNode : null;
+ var selectionClass = this.getParam('selection_class', 'current');
+
+ if (tabElm && tabContainerElm) {
+ var nodes = tabContainerElm.childNodes;
+
+ // Hide all other tabs
+ for (var i=0; i<nodes.length; i++) {
+ if (nodes[i].nodeName == "LI")
+ nodes[i].className = '';
+ }
+
+ // Show selected tab
+ tabElm.className = 'current';
+ }
+
+ if (panelElm && panelContainerElm) {
+ var nodes = panelContainerElm.childNodes;
+
+ // Hide all other panels
+ for (var i=0; i<nodes.length; i++) {
+ if (nodes[i].nodeName == "DIV")
+ nodes[i].className = 'panel';
+ }
+
+ // Show selected panel
+ panelElm.className = 'current';
+ }
+};
+
+MCTabs.prototype.getAnchor = function() {
+ var pos, url = document.location.href;
+
+ if ((pos = url.lastIndexOf('#')) != -1)
+ return url.substring(pos + 1);
+
+ return "";
+};
+
+// Global instance
+var mcTabs = new MCTabs();
Added: trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/validate.js
===================================================================
---
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/validate.js 2006-12-04
17:57:10 UTC (rev 5755)
+++
trunk/core/src/bin/portal-core-war/images/cms/admin/tiny_mce/utils/validate.js 2006-12-04
18:16:39 UTC (rev 5756)
@@ -0,0 +1,219 @@
+/**
+ * $Id: validate.js 65 2006-08-24 15:54:55Z spocke $
+ *
+ * Various form validation methods.
+ *
+ * @author Moxiecode
+ * @copyright Copyright � 2004-2006, Moxiecode Systems AB, All rights reserved.
+ */
+
+/**
+ // String validation:
+
+ if (!Validator.isEmail('myemail'))
+ alert('Invalid email.');
+
+ // Form validation:
+
+ var f = document.forms['myform'];
+
+ if (!Validator.isEmail(f.myemail))
+ alert('Invalid email.');
+*/
+
+var Validator = {
+ isEmail : function(s) {
+ return this.test(s,
'^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+(a)[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
+ },
+
+ isAbsUrl : function(s) {
+ return this.test(s,
'^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
+ },
+
+ isSize : function(s) {
+ return this.test(s, '^[0-9]+(px|%)?$');
+ },
+
+ isId : function(s) {
+ return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
+ },
+
+ isEmpty : function(s) {
+ var nl, i;
+
+ if (s.nodeName == 'SELECT' && s.selectedIndex < 1)
+ return true;
+
+ if (s.type == 'checkbox' && !s.checked)
+ return true;
+
+ if (s.type == 'radio') {
+ for (i=0, nl = s.form.elements; i<nl.length; i++) {
+ if (nl[i].type == "radio" && nl[i].name == s.name &&
nl[i].checked)
+ return false;
+ }
+
+ return true;
+ }
+
+ return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
+ },
+
+ isNumber : function(s, d) {
+ return !isNaN(s.nodeType == 1 ? s.value : s) && (!d || !this.test(s,
'^-?[0-9]*\\.[0-9]*$'));
+ },
+
+ test : function(s, p) {
+ s = s.nodeType == 1 ? s.value : s;
+
+ return s == '' || new RegExp(p).test(s);
+ }
+};
+
+var AutoValidator = {
+ settings : {
+ id_cls : 'id',
+ int_cls : 'int',
+ url_cls : 'url',
+ number_cls : 'number',
+ email_cls : 'email',
+ size_cls : 'size',
+ required_cls : 'required',
+ invalid_cls : 'invalid',
+ min_cls : 'min',
+ max_cls : 'max'
+ },
+
+ init : function(s) {
+ var n;
+
+ for (n in s)
+ this.settings[n] = s[n];
+ },
+
+ validate : function(f) {
+ var i, nl, s = this.settings, c = 0;
+
+ nl = this.tags(f, 'label');
+ for (i=0; i<nl.length; i++)
+ this.removeClass(nl[i], s.invalid_cls);
+
+ c += this.validateElms(f, 'input');
+ c += this.validateElms(f, 'select');
+ c += this.validateElms(f, 'textarea');
+
+ return c == 3;
+ },
+
+ invalidate : function(n) {
+ this.mark(n.form, n);
+ },
+
+ reset : function(e) {
+ var t = new Array('label', 'input', 'select',
'textarea');
+ var i, j, nl, s = this.settings;
+
+ if (e == null)
+ return;
+
+ for (i=0; i<t.length; i++) {
+ nl = this.tags(e.form ? e.form : e, t[i]);
+ for (j=0; j<nl.length; j++)
+ this.removeClass(nl[j], s.invalid_cls);
+ }
+ },
+
+ validateElms : function(f, e) {
+ var nl, i, n, s = this.settings, st = true, va = Validator, v;
+
+ nl = this.tags(f, e);
+ for (i=0; i<nl.length; i++) {
+ n = nl[i];
+
+ this.removeClass(n, s.invalid_cls);
+
+ if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.size_cls) && !va.isSize(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.id_cls) && !va.isId(n))
+ st = this.mark(f, n);
+
+ if (this.hasClass(n, s.min_cls, true)) {
+ v = this.getNum(n, s.min_cls);
+
+ if (isNaN(v) || parseInt(n.value) < parseInt(v))
+ st = this.mark(f, n);
+ }
+
+ if (this.hasClass(n, s.max_cls, true)) {
+ v = this.getNum(n, s.max_cls);
+
+ if (isNaN(v) || parseInt(n.value) > 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<nl.length; i++) {
+ if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
+ this.addClass(nl[i], ic);
+ }
+
+ return null;
+ }
+};