diff --git a/www/extras/tinymce/changelog b/www/extras/tinymce/changelog index 5ba84d479..90ead8547 100644 --- a/www/extras/tinymce/changelog +++ b/www/extras/tinymce/changelog @@ -1,3 +1,50 @@ +Version 1.40 (2005-01-09) + Added a new default value for the font size drop down, if no font size where found this gets selected. + Added a auto resize window feature, this is enabled by default but can be disabled with a window argument. + Added a new print plugin, prints the current editor contents to a printer. + Added a new searchreplace plugin, adds a search, searchnext and replace button. + Fixed bug issue where buttons didn't display correctly on some Firefox installations. + Fixed issue with value and type attributes of input elements getting lost in cleanup on MSIE. + Fixed so that the getEditorInstance command is public, returns a TinyMCEControl by id. + Fixed issue where "true" and "false" string wasn't treated as booleans in TinyMCE init options. + Fixed so cursor/mousepointer allways remains a arrow in all themes when rolling over buttons. + Fixed the popup windows so they are mode "modal" in Mozilla/Firefox. + Fixed so the ask question is displayed when elements are focused with the tab key. + Fixed so the ask option works when mode option is set to exact. + Fixed issue with visualaids on tables not working correctly when the user uses the tab key in Firefox/Mozilla. + Fixed some bugs with the mceSetCSSClass class command and the element path. + Fixed a new version of the mceInsertContent command. + Fixed so the auto_cleanup_word option is disabled by default. + Removed the langs of the zoom plugin, it now uses + instead of the "zoom" word. +Version 1.391 (2005-01-04) + Fixed major spacebar bug in MSIE, spacebar was disabled. +Version 1.39 (2005-01-04) + Updated the Flash plugin with a new version, contributed by jamesw. + Added new setWindowArg function, useful if plugins are to call other plugins. + Added new save plugin, this plugin adds a save/submit form button to tinyMCE, contributed by SlyD. + Added new hilite color support, sets a background-color style on the selected text. + Added new variable replacement popup URLs, check the openWindow function documentation for details. + Added new force_p_newlines option, forces P elements on return/enter key in Mozilla/Firefox. + Added new theme_advanced_path_location, adds a element path list. + Added new theme_advanced_toolbar_align option, defaults to center. + Added new Portuguese translation contributed by José Pedro Pereira. + Added new mceSelectNode and mceSelectNodeDepth commands. + Added new add_unload_trigger option, this adds a unload triggerSave call. Enabled by default. + Added am/pm time format to the insertdatetime plugin. + Fixed font color and size attribute bug, contributed by Vincent FIACK. + Fixed className undefined bug, Firefox/Mozilla produced a console error sometimes. + Fixed so mceSetCSSClass command may be applied to all sorts of elements. + Fixed so anchor elements can be removed by setting the anchor name to nothing. + Fixed typing performance some in Firefox/Mozilla, removed some nodechange triggers. + Fixed so the zoom plugin is invisible in MSIE 5.0, since zoom isn't available in that browser. + Fixed bug with the emotions plugin in MSIE 5.0, it was opening a new window. + Fixed so contents stay within the editor if the user hits the back/forward buttons. + Fixed bug where the window.name property was set to the image name. + Fixed so anchors links within the same page are made relative when relative_urls are set to false. + Updated the advanced theme so most of the images are loaded from a tiled image, improves loading time. + Updated the Swedish language pack, contributed by Martin. + Updated the readme.txt in the advlink plugin, was some problems with the valid_elements. + Updated the default CSS for the advanced theme some, added button backgrounds to look like office2k. Version 1.38 (2004-11-28) Added new textarea field for form elements when debug mode is enabled, contributed by Michael Keck. Added new spacer item support for the theme_advanced_buttons options, contributed by Michael Keck. diff --git a/www/extras/tinymce/docs/using.htm b/www/extras/tinymce/docs/using.htm index af62bb957..3ac3174ca 100755 --- a/www/extras/tinymce/docs/using.htm +++ b/www/extras/tinymce/docs/using.htm @@ -286,16 +286,23 @@ optional and is not a requierd setting.
and feel. The default value of this option is: "border: 1px dashed #BBBBBB". - + [add_form_submit_trigger] - True/False option. If this option is set to true a event handler will - be added do "onsubmit" on all forms to force triggerSave. The - default value of this option is true. + True/False option. If this option is set to true a event handler will be added do "onsubmit" on all forms to force triggerSave. The default value of this option is true. + [add_unload_trigger] + True/False option. If this option is set to true a event handler will + be added do "onunload" of the current window to force a triggerSave call. This triggerSave call will not do any cleanup since this is for handling of back/forward history buttons. The + default value of this option is true. + + [force_br_newlines] - True/False option. This option forces output of BR elements instead of - P elements. The default state of this option is off/false. (Experimental) + True/False option. This option forces output of BR elements instead of P elements. The default state of this option is off/false. (Experimental) + + + [force_p_newlines] + True/False option. If this option is enabled Mozilla/Firefox will generate P elements on Enter/Return key and BR elements on Shift+Enter/Return. This option is enabled by default. [relative_urls] @@ -342,7 +349,7 @@ optional and is not a requierd setting.
[auto_cleanup_word] - If enabled cleanup of MS office/Word HTML will be executed automaticly on paste operations. The default value of this option is true. Note: This option is currently only available for MSIE. + If enabled cleanup of MS office/Word HTML will be executed automaticly on paste operations. The default value of this option is false. Note: This option is currently only available for MSIE. [cleanup_on_startup] @@ -375,6 +382,10 @@ optional and is not a requierd setting.
[theme_advanced_toolbar_location] This option enabled you to change the location of the toolbar. Possible values are "top" and "bottom". The default value is "bottom". + + [theme_advanced_toolbar_align] + This option enabled you to change toolbar alignment to left, center or right. This option defaults to center. + [theme_advanced_styles] This option enables you to add CSS classes and names for them to the style @@ -421,6 +432,10 @@ optional and is not a requierd setting.
[theme_advanced_source_editor_height] Source editor window height. + + [theme_advanced_path_location] + Location of element path list. Possible values "top" or "bottom". Defaults to "none" + [theme_advanced_blockformats] Comma separated list of blockformats for the formatselect list. Defaults to: p,address,pre,h1,h2,h3,h4,h5,h6. @@ -581,9 +596,17 @@ Mozilla Midas spec. But there are a some tinyMCE specific commands.
mceAnchor

Inserts a named anchor element, the value is the name of the anchor.

- + mceResetDesignMode -

Resets the designMode state of all editor instances, this command is useful on Firefox if the editor is placed in tabs or shown/hidden with style.display="none/block". Call this command after the editor displayed again.

+

Resets the designMode state of all editor instances, this command is useful on Firefox if the editor is placed in tabs or shown/hidden with style.display="none/block". Call this command after the editor displayed again.

+ + + mceSelectNode +

Selects the node/element passed as value. This command will also scroll to the elements location within the editor.

+ + + mceSelectNodeDepth +

Selects the node/element by depth relative from the current node. So a value of 0 will select the currently focused node. This command will also scroll to the elements location within the editor.

@@ -666,6 +689,15 @@ callback in the theme.

Returns: None.
+Syntax: tinyMCE.getEditorInstance(editor_id);
+
+Description: This method returns a editor instance by editor id.
+
+Parameters:
+
editor_id - Editor instance to retrive.
+
+Returns: TinyMCE Editor instance (TinyMCEControl). +
Syntax: tinyMCE.importThemeLanguagePack([theme]);

Description: This method imports/loads theme specific language packs. This may be called from custom themes.
@@ -699,9 +731,14 @@ html - HTML code to apply theme variable substitution on.

Description: This method opens a new window by the template data assigned, it will get the width, height and html data from template parameters. The args array contains variable names to be substituted.

+There are some custom window arguments:
+mce_replacevariables +- Enables/Disables the language/variable replacement of the document HTML. Enabled by default.
+mce_windowresize - Enables/Disables the auto resize feature of popupwindows. Enabled by default.
+
Parameters:
-template - Name/Value array with width, height and html keys in it.
-[args] - Name/Value array with variable names to replace.
+template - Name/Value array with width, height, html and file keys in it.
+[args] - Name/Value array with variable names to replace. Variables in the template file key value (URL) gets replaced with the argument list. For example: image.php?src={$src} gets replaced with image.php?src=image.gif.

Returns: None.
@@ -715,6 +752,16 @@ name - Name of window argument to get.

Returns: Window argument value.
+Syntax: tinyMCE.setWindowArg(name, value);
+
+Description: This method sets a window argument by name. This can for example be useful if plugin are to call other plugins.
+
+Parameters:
+name - Name of window argument to set.
+value - Value to set in window argument.
+
+Returns: Window argument value. +
Syntax: tinyMCE.getParam(name, [default_value], [strip_whitespace]);

Description: This method returns a TinyMCE configuration parameter.
diff --git a/www/extras/tinymce/examples/dump.php b/www/extras/tinymce/examples/dump.php new file mode 100644 index 000000000..a0e04f9e8 --- /dev/null +++ b/www/extras/tinymce/examples/dump.php @@ -0,0 +1,27 @@ + + +Displays the output of a TinyMCE + + + +

HTML output from post

+ + + + $value) { ?> + + +
Form elementHTML output
+ +

Source output from post

+ + + + $value) { ?> + + +
Form elementSource output
+ + + + diff --git a/www/extras/tinymce/examples/example_advanced.htm b/www/extras/tinymce/examples/example_advanced.htm index 3108b3303..4f0880e24 100644 --- a/www/extras/tinymce/examples/example_advanced.htm +++ b/www/extras/tinymce/examples/example_advanced.htm @@ -76,7 +76,7 @@ This page shows a more complex usage of TinyMCE. On this page the mode is set to
- + +
+ + + + +
+ + + \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/langs/el.js b/www/extras/tinymce/jscripts/tiny_mce/langs/el.js new file mode 100644 index 000000000..41ae3a071 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/langs/el.js @@ -0,0 +1,38 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCELang['lang_bold_desc'] = '¸íôïíç ãñáöÞ'; +tinyMCELang['lang_italic_desc'] = 'ÐëÜãéá ãñáöÞ'; +tinyMCELang['lang_underline_desc'] = 'ÕðïãñÜììéóç'; +tinyMCELang['lang_striketrough_desc'] = 'ÄéáêñéôÞ äéáãñáöÞ'; +tinyMCELang['lang_justifyleft_desc'] = 'Óôïß÷éóç áñéóôåñÜ'; +tinyMCELang['lang_justifycenter_desc'] = 'Óôïß÷éóç óôï êÝíôñï'; +tinyMCELang['lang_justifyright_desc'] = 'Óôïß÷éóç äåîéÜ'; +tinyMCELang['lang_justifyfull_desc'] = 'ÐëÞñçò óôïß÷éóç'; +tinyMCELang['lang_bullist_desc'] = 'Êïõêêßäåò'; +tinyMCELang['lang_numlist_desc'] = 'Áñßèìçóç'; +tinyMCELang['lang_outdent_desc'] = 'Ìåßùóç åóï÷Þò'; +tinyMCELang['lang_indent_desc'] = 'Áýîçóç åóï÷Þò'; +tinyMCELang['lang_undo_desc'] = 'Áíáßñåóç'; +tinyMCELang['lang_redo_desc'] = 'Áêýñùóç áíáßñåóçò'; +tinyMCELang['lang_link_desc'] = 'Äçìéïõñãßá/Äéüñèùóç õðåñ-óýíäåóçò'; +tinyMCELang['lang_unlink_desc'] = 'ÄéáãñáöÞ õðåñ-óýíäåóçò'; +tinyMCELang['lang_image_desc'] = 'ÅéóáãùãÞ/Äéüñèùóç åéêüíáò'; +tinyMCELang['lang_cleanup_desc'] = 'ÊáèÜñéóìá êþäéêá'; +tinyMCELang['lang_focus_alert'] = 'ÐñÝðåé íá õðÜñ÷åé åíåñãüò êÜðïéïò åðåîåñãáóôÞò êåéìÝíïõ ðñéí íá ÷ñçóéìïðïéÞóåôå áõôÞ ôçí åíôïëÞ.'; +tinyMCELang['lang_edit_confirm'] = 'ÈÝëåôå íá ÷ñçóéìïðïéÞóåôå ôçí êáôÜóôáóç WYSIWYG ãéá ôï óõãêåêñéìÝíï ðëáßóéï êåéìÝíïõ;'; +tinyMCELang['lang_insert_link_title'] = 'Äçìéïõñãßá/Äéüñèùóç õðåñ-óýíäåóçò'; +tinyMCELang['lang_insert'] = 'ÅéóáãùãÞ'; +tinyMCELang['lang_update'] = 'ÅéóáãùãÞ'; +tinyMCELang['lang_cancel'] = 'Áêýñùóç'; +tinyMCELang['lang_insert_link_url'] = 'Äéåýèõíóç'; +tinyMCELang['lang_insert_link_target'] = 'Óôü÷ïò'; +tinyMCELang['lang_insert_link_target_same'] = '¢íïéãìá ôçò äéåýèõíóçò óôï ßäéï ðáñÜèõñï'; +tinyMCELang['lang_insert_link_target_blank'] = '¢íïéãìá ôçò äéåýèõíóçò óå íÝï ðáñÜèõñï'; +tinyMCELang['lang_insert_image_title'] = 'ÅéóáãùãÞ/Äéüñèùóç åéêüíáò'; +tinyMCELang['lang_insert_image_src'] = 'Äéåýèõíóç'; +tinyMCELang['lang_insert_image_alt'] = 'ÐåñéãñáöÞ'; +tinyMCELang['lang_help_desc'] = 'ÂïÞèåéá'; +tinyMCELang['lang_bold_img'] = "bold.gif"; +tinyMCELang['lang_italic_img'] = "italic.gif"; +tinyMCELang['lang_underline_img'] = "underline.gif"; +tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/langs/fr.js b/www/extras/tinymce/jscripts/tiny_mce/langs/fr.js new file mode 100644 index 000000000..98a526039 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/langs/fr.js @@ -0,0 +1,38 @@ +// FR lang variables by Pat Boens + +tinyMCELang['lang_bold_desc'] = 'Gras'; +tinyMCELang['lang_italic_desc'] = 'Italique'; +tinyMCELang['lang_underline_desc'] = 'Souligné'; +tinyMCELang['lang_striketrough_desc'] = 'Barré'; +tinyMCELang['lang_justifyleft_desc'] = 'Aligner à gauche'; +tinyMCELang['lang_justifycenter_desc'] = 'Aligner au centre'; +tinyMCELang['lang_justifyright_desc'] = 'Aligner à droite'; +tinyMCELang['lang_justifyfull_desc'] = 'Justifier'; +tinyMCELang['lang_bullist_desc'] = 'Liste désordonnée (puces)'; +tinyMCELang['lang_numlist_desc'] = 'Liste ordonnée (numéros)'; +tinyMCELang['lang_outdent_desc'] = 'Diminuer le retrait'; +tinyMCELang['lang_indent_desc'] = 'Augmenter le retrait'; +tinyMCELang['lang_undo_desc'] = 'Défaire'; +tinyMCELang['lang_redo_desc'] = 'Refaire'; +tinyMCELang['lang_link_desc'] = 'Insérer/éditer le lien'; +tinyMCELang['lang_unlink_desc'] = 'Enlever le lien'; +tinyMCELang['lang_image_desc'] = 'Insérer/éditer une image'; +tinyMCELang['lang_cleanup_desc'] = 'Nettoyer le code'; +tinyMCELang['lang_focus_alert'] = 'Une instance de l\éditeur doit avoir le focus avant d\'utiliser cette commande.'; +tinyMCELang['lang_edit_confirm'] = 'Voulez-vous utiliser le mode WYSIWYG pour cette zone de texte (textarea) ?'; +tinyMCELang['lang_insert_link_title'] = 'Insertion/édition lien'; +tinyMCELang['lang_insert'] = 'Insertion'; +tinyMCELang['lang_update'] = 'Insertion'; +tinyMCELang['lang_cancel'] = 'Annuler'; +tinyMCELang['lang_insert_link_url'] = 'Lien URL'; +tinyMCELang['lang_insert_link_target'] = 'Cible'; +tinyMCELang['lang_insert_link_target_same'] = 'Ouvrir le lien dans la même fenêtre'; +tinyMCELang['lang_insert_link_target_blank'] = 'Ouvrir le lien dans une nouvelle fenêtre'; +tinyMCELang['lang_insert_image_title'] = 'Insertion/édition d\'une image'; +tinyMCELang['lang_insert_image_src'] = 'URL de l\'image'; +tinyMCELang['lang_insert_image_alt'] = 'Description de l\'image'; +tinyMCELang['lang_help_desc'] = 'Aide'; +tinyMCELang['lang_bold_img'] = "bold.gif"; +tinyMCELang['lang_italic_img'] = "italic.gif"; +tinyMCELang['lang_underline_img'] = "underline.gif"; +tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/langs/jp.js b/www/extras/tinymce/jscripts/tiny_mce/langs/jp.js new file mode 100644 index 000000000..3795c5b05 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/langs/jp.js @@ -0,0 +1,38 @@ +// JP lang variables + +tinyMCELang['lang_bold_desc'] = '$BB@;z(B'; +tinyMCELang['lang_italic_desc'] = '$B'; + } + 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,'
'); + } 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 diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif new file mode 100644 index 000000000..e18bfc2ac Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/images/advhr.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de.js new file mode 100644 index 000000000..0558377af --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/de.js @@ -0,0 +1,6 @@ +// DE lang variables + +tinyMCELang['lang_insert_advhr_desc'] = 'Horizontale Linie einfügen / bearbeiten' +tinyMCELang['lang_insert_advhr_width'] = 'Breite'; +tinyMCELang['lang_insert_advhr_size'] = 'Höhe'; +tinyMCELang['lang_insert_advhr_noshade'] = 'Keinen Schatten'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/se.js new file mode 100644 index 000000000..49a12b601 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/se.js @@ -0,0 +1,6 @@ +// SE lang variables + +tinyMCELang['lang_insert_advhr_desc'] = 'Skapa / uppdatera Horizontell linie' +tinyMCELang['lang_insert_advhr_width'] = 'Bredd'; +tinyMCELang['lang_insert_advhr_size'] = 'Höjd'; +tinyMCELang['lang_insert_advhr_noshade'] = 'Ingen skugga'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/uk.js new file mode 100644 index 000000000..242c146f3 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/langs/uk.js @@ -0,0 +1,6 @@ +// UK lang variables + +tinyMCELang['lang_insert_advhr_desc'] = 'Insert / edit Horizontale Rule' +tinyMCELang['lang_insert_advhr_width'] = 'Width'; +tinyMCELang['lang_insert_advhr_size'] = 'Height'; +tinyMCELang['lang_insert_advhr_noshade'] = 'No shadow'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/readme.txt new file mode 100644 index 000000000..be6dec383 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/readme.txt @@ -0,0 +1,20 @@ + Advhr 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 advhr directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins). + * Add plugin to TinyMCE plugin option list example: plugins : "advhr". + * 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]" + }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm new file mode 100644 index 000000000..c3cda336a --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm @@ -0,0 +1,108 @@ + + + + +{$lang_insert_link_title} + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + +
{$lang_insert_advhr_desc}
{$lang_insert_advhr_width}: + + +
{$lang_insert_advhr_size}:
+
+ + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js new file mode 100644 index 000000000..bf9e3fd2b --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js @@ -0,0 +1,19 @@ +/* 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; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm new file mode 100644 index 000000000..72d5d9886 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm @@ -0,0 +1,212 @@ + + + + +{$lang_insert_image_title} + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{$lang_insert_image_title}
{$lang_insert_image_src}:
{$lang_insert_image_alt}:
{$lang_insert_image_alt2}:
{$lang_insert_image_dimensions}: + x + px +
{$lang_insert_image_border}:
{$lang_insert_image_align}: +
{$lang_insert_image_vspace}:
{$lang_insert_image_hspace}:
{$lang_insert_image_mouseover}:
{$lang_insert_image_mouseout}:
+
+ + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de.js new file mode 100644 index 000000000..c5a6d2217 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/de.js @@ -0,0 +1,6 @@ +// DE lang variables + +tinyMCELang['lang_insert_image_alt2'] = 'Titel des Bildes'; +tinyMCELang['lang_insert_image_onmousemove'] = 'Alternatives Bild' +tinyMCELang['lang_insert_image_mouseover'] = 'für Maus darüber'; +tinyMCELang['lang_insert_image_mouseout'] = 'für Maus ausserhalb'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko.js new file mode 100644 index 000000000..68fe45a77 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/ko.js @@ -0,0 +1,6 @@ +// KO lang variables + +tinyMCELang['lang_insert_image_alt2'] = '±×¸² Á¦¸ñ'; +tinyMCELang['lang_insert_image_onmousemove'] = '´ëü À̹ÌÁö' +tinyMCELang['lang_insert_image_mouseover'] = '¸¶¿ì½º¸¦ ¿Ã·ÈÀ» ¶§'; +tinyMCELang['lang_insert_image_mouseout'] = '¸¶¿ì½º¸¦ ³»·ÈÀ» ¶§'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/se.js new file mode 100644 index 000000000..a2c62bbfe --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/se.js @@ -0,0 +1,6 @@ +// SE lang variables + +tinyMCELang['lang_insert_image_alt2'] = 'Bildens titel'; +tinyMCELang['lang_insert_image_onmousemove'] = 'Alternativ bild' +tinyMCELang['lang_insert_image_mouseover'] = 'när pekaren är över'; +tinyMCELang['lang_insert_image_mouseout'] = 'när pekaren är utanför'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/uk.js new file mode 100644 index 000000000..c4098afcd --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/langs/uk.js @@ -0,0 +1,6 @@ +// UK lang variables + +tinyMCELang['lang_insert_image_alt2'] = 'Image title'; +tinyMCELang['lang_insert_image_onmousemove'] = 'Alternative image' +tinyMCELang['lang_insert_image_mouseover'] = 'for mouse over'; +tinyMCELang['lang_insert_image_mouseout'] = 'for mouse out'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt new file mode 100644 index 000000000..b88835b65 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advimage/readme.txt @@ -0,0 +1,19 @@ + 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]" + }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js new file mode 100644 index 000000000..352610b3b --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js @@ -0,0 +1,18 @@ +/* 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 diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de.js new file mode 100644 index 000000000..525686365 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/de.js @@ -0,0 +1,20 @@ +// DE lang variables + +tinyMCELang['lang_insert_link_target_same'] = 'Im selben Frame öffnen'; +tinyMCELang['lang_insert_link_target_parent'] = 'Im darüber liegenden Frame öffnen'; +tinyMCELang['lang_insert_link_target_top']= 'Im obersten Frame öffnen'; +tinyMCELang['lang_insert_link_target_blank']= 'In einem neuen Fenster öffnen'; +tinyMCELang['lang_insert_link_target_named']= 'Öffnen im Fenster/Frame'; +tinyMCELang['lang_insert_link_popup'] = 'JS-Popup'; +tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL'; +tinyMCELang['lang_insert_link_popup_name']= 'Fenstername'; +tinyMCELang['lang_insert_link_popup_return']= 'mit \'return false\''; +tinyMCELang['lang_insert_link_popup_scrollbars']= 'Scrollbars anzeigen'; +tinyMCELang['lang_insert_link_popup_statusbar'] = 'Statusbar anzeigen'; +tinyMCELang['lang_insert_link_popup_toolbar'] = 'Toolbars anzeigen'; +tinyMCELang['lang_insert_link_popup_menubar'] = 'Menu anzeigen'; +tinyMCELang['lang_insert_link_popup_location']= 'Adresszeile anzeigen'; +tinyMCELang['lang_insert_link_popup_resizable'] = 'Größe änderbar'; +tinyMCELang['lang_insert_link_popup_size']= 'Größe'; +tinyMCELang['lang_insert_link_popup_position']= 'Position (X/Y)'; +tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Please insert a name for the target or choose another option.'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ko.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ko.js new file mode 100644 index 000000000..06a34eb01 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/ko.js @@ -0,0 +1,19 @@ +// KO lang variables + +tinyMCELang['lang_insert_link_target_same'] = '°°Àº â¿¡¼­ ¸µÅ©/ÇÁ·¹ÀÓ ¿­±â'; +tinyMCELang['lang_insert_link_target_parent'] = 'ºÎ¸ð â¿¡¼­ ¸µÅ©/ÇÁ·¹ÀÓ ¿­±â'; +tinyMCELang['lang_insert_link_target_top'] = 'TOP ÇÁ·¹ÀÓ¿¡¼­ ¿­±â (¸ðµç ÇÁ·¹ÀÓÀ» ´ëü)'; +tinyMCELang['lang_insert_link_target_blank'] = '»õ â¿¡¼­ ¿­±â'; +tinyMCELang['lang_insert_link_target_named'] = '»õ â¿¡¼­ ¿­±â'; +tinyMCELang['lang_insert_link_popup'] = 'JS-Popup'; +tinyMCELang['lang_insert_link_popup_url'] = 'ÆË¾÷ URL'; +tinyMCELang['lang_insert_link_popup_name'] = 'â À̸§'; +tinyMCELang['lang_insert_link_popup_return'] = '\'return false\' ³Ö±â'; +tinyMCELang['lang_insert_link_popup_scrollbars'] = '½ºÅ©·Ñ¹Ù¸¦ º¸¿©ÁÜ'; +tinyMCELang['lang_insert_link_popup_statusbar'] = '»óÅÂâÀ» º¸¿©ÁÜ'; +tinyMCELang['lang_insert_link_popup_toolbar'] = 'Åø¹Ù¸¦ º¸¿©ÁÜ'; +tinyMCELang['lang_insert_link_popup_menubar'] = '¸Þ´º¹Ù¸¦ º¸¿©ÁÜ'; +tinyMCELang['lang_insert_link_popup_location'] = 'À§Ä¡ Ç¥½ÃÁÙÀ» º¸¿©ÁÜ'; +tinyMCELang['lang_insert_link_popup_resizable'] = 'Å©±â Á¶Àý °¡´ÉÇÑ À©µµ¿ì »ý¼º'; +tinyMCELang['lang_insert_link_popup_size'] = 'Å©±â'; +tinyMCELang['lang_insert_link_popup_position'] = 'À§Ä¡ (X/Y)'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/se.js new file mode 100644 index 000000000..cc5ab725d --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/se.js @@ -0,0 +1,20 @@ +// SE lang variables + +tinyMCELang['lang_insert_link_target_same'] = 'Öppna i samma fönster / ram'; +tinyMCELang['lang_insert_link_target_parent'] = 'Öppna i underliggande fönster / ram'; +tinyMCELang['lang_insert_link_target_top'] = 'Öppna i topp ramen (ersätter alla ramar)'; +tinyMCELang['lang_insert_link_target_blank'] = 'Öppna i ett nytt fönster'; +tinyMCELang['lang_insert_link_target_named'] = 'Öppna i ett specifikt fönster'; +tinyMCELang['lang_insert_link_popup'] = 'JS-Popup'; +tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL'; +tinyMCELang['lang_insert_link_popup_name'] = 'Fönstrets namn'; +tinyMCELang['lang_insert_link_popup_return'] = 'Sättin \'return false\''; +tinyMCELang['lang_insert_link_popup_scrollbars'] = 'Visa scrollbars'; +tinyMCELang['lang_insert_link_popup_statusbar'] = 'Visa statusbar'; +tinyMCELang['lang_insert_link_popup_toolbar'] = 'Visa toolbars'; +tinyMCELang['lang_insert_link_popup_menubar'] = 'Visa menubar'; +tinyMCELang['lang_insert_link_popup_location'] = 'Visa locationbar'; +tinyMCELang['lang_insert_link_popup_resizable'] = 'Gör fönstret skalbart'; +tinyMCELang['lang_insert_link_popup_size'] = 'Storlek'; +tinyMCELang['lang_insert_link_popup_position'] = 'Position (X/Y)'; +tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Var god skriv ett namn för målet eller välj ett annat val.'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/uk.js new file mode 100644 index 000000000..9384f3917 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/langs/uk.js @@ -0,0 +1,20 @@ +// UK lang variables + +tinyMCELang['lang_insert_link_target_same'] = 'Open in this window / frame'; +tinyMCELang['lang_insert_link_target_parent'] = 'Open in parent window / frame'; +tinyMCELang['lang_insert_link_target_top'] = 'Open in top frame (replaces all frames)'; +tinyMCELang['lang_insert_link_target_blank'] = 'Open in new window'; +tinyMCELang['lang_insert_link_target_named'] = 'Open in the window'; +tinyMCELang['lang_insert_link_popup'] = 'JS-Popup'; +tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL'; +tinyMCELang['lang_insert_link_popup_name'] = 'Window name'; +tinyMCELang['lang_insert_link_popup_return'] = 'insert \'return false\''; +tinyMCELang['lang_insert_link_popup_scrollbars'] = 'Show scrollbars'; +tinyMCELang['lang_insert_link_popup_statusbar'] = 'Show statusbar'; +tinyMCELang['lang_insert_link_popup_toolbar'] = 'Show toolbars'; +tinyMCELang['lang_insert_link_popup_menubar'] = 'Show menubar'; +tinyMCELang['lang_insert_link_popup_location'] = 'Show locationbar'; +tinyMCELang['lang_insert_link_popup_resizable'] = 'Make window resizable'; +tinyMCELang['lang_insert_link_popup_size'] = 'Size'; +tinyMCELang['lang_insert_link_popup_position'] = 'Position (X/Y)'; +tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Please insert a name for the target or choose another option.'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm new file mode 100644 index 000000000..a36c497a7 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm @@ -0,0 +1,376 @@ + + + + +{$lang_insert_link_title} + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
{$lang_insert_link_title}
{$lang_insert_link_url}:
{$lang_theme_insert_link_titlefield}:
{$lang_insert_link_target}: + + + + + + + + + + + + + + + + + + + + + +
 ({$lang_insert_link_target_same})
 ({$lang_insert_link_target_parent})
 ({$lang_insert_link_target_top})
 ({$lang_insert_link_target_blank})
+ + + + + + +
 
+
+ + + + + + + + + + + + + + + + + +
{$lang_insert_link_popup_url}: 
{$lang_insert_link_popup_name}: 
{$lang_insert_link_popup_size}:  + x + px +
{$lang_insert_link_popup_position}:  + / + (c /c = center) +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  
 
   
 
+
+
+ + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt new file mode 100644 index 000000000..6e9ac1078 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/advlink/readme.txt @@ -0,0 +1,19 @@ + 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 "a[name|href|target|title|onclick]" to extended_valid_elements option. + +Initialization example: + tinyMCE.init({ + theme : "advanced", + mode : "textareas", + plugins : "advlink", + extended_valid_elements : "a[name|href|target|title|onclick]" + }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm index 88857772a..a591f35d7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm @@ -16,28 +16,28 @@
{$lang_insert_emotions_title}:

- - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/el.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/el.js new file mode 100644 index 000000000..607433fb0 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/el.js @@ -0,0 +1,5 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCELang['lang_insert_emotions_title'] = 'ÅéóáãùãÞ åíüò åéêïíéäßïõ emoticon'; +tinyMCELang['lang_emotions_desc'] = 'Åéêïíßäéá emoticons'; + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/it.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/it.js new file mode 100644 index 000000000..fa93e6be3 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/it.js @@ -0,0 +1,5 @@ +//IT lang variables + +tinyMCELang['lang_insert_emotions_title'] = 'Inserisci una emoticon'; +tinyMCELang['lang_emotions_desc'] = 'Emoticon'; + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ko.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ko.js new file mode 100644 index 000000000..654193f2e --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/emotions/langs/ko.js @@ -0,0 +1,5 @@ +// KO lang variables + +tinyMCELang['lang_insert_emotions_title'] = 'À̸ðƼÄÜ ³Ö±â'; +tinyMCELang['lang_emotions_desc'] = 'À̸ðƼÄÜ'; + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js index 0743e7438..d00e8fa7d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/editor_plugin.js @@ -74,121 +74,619 @@ function TinyMCE_flash_handleNodeChange(editor_id, node, undo_index, undo_levels return true; } -/* Custom cleanup functions for the Flash support */ +/** + * function to convert flash object tags to img + * or img tags to flash object tags + */ +function TinyMCE_flash_mkCodeCleanup(action, content) +{ + switch(action) { + case 'insertToEditor': + content = replace(content); + break; + case 'getFromEditor': + content = restore(content); + break; + } + return content; -/**/ -// added 2004 by Michael Keck -// 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'); - tagCount++; - orgTags[tagCount] = '<' + tmpTag[0] + '>'; - } - } - for (var i=0; i')!=-1) { - savedSlash=' />'; - } - if (orgTags[i].indexOf(" ")!=-1) { - for (var j=0; j\n','gi'),'>'); - content = content.replace(new RegExp('\n<','gi'),'<'); - content = content.replace(new RegExp('','gi'),''); - content = content.replace(new RegExp('','gi'),''); - content = content.replace(new RegExp('','gi'),''); - content = content.replace(new RegExp(']*>','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('' - + '' - + '' - + '' - + '','gi'); - swfObjReplace = '' - + '' - + ''; - content = content.replace(swfObjSearch,swfObjReplace); - switch(action) { - case 'insertToEditor': - objSearch = new RegExp('' - + '' - + '','gi'); - objReplace = '$3'; - content = content.replace(objSearch,objReplace); - break; - case 'getFromEditor': - objSearch = new RegExp('([^','gi'); - objReplace = '' - + '' - + ''; - 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; -/**/ +/** + * object to manage a html tag. Maintains two lists of + * of attribute names and values and can parse a tag + * through the populate method. +**/ +function TagObject() +{ + this.tagName = ""; + this.attributeNames = new Array(); + this.attributeValues = new Array(); + this.spaceRemoveRegex = new RegExp('[ ]*','g'); + this.newLineRemoveRegex = new RegExp('[\n]*','g'); +} +/** + * set the name of the tag + */ +TagObject.prototype.setTagName = function(name) +{ + this.tagName = name; +} +/** + * get the name of the tag + */ +TagObject.prototype.getTagName = function() +{ + return this.tagName; +} +/** + * add a attribute name/value pair to the lists. + * does not check for duplicate attribute names + */ +TagObject.prototype.addAttribute = function(name,value) +{ + this.attributeNames[this.attributeNames.length] = name; + this.attributeValues[this.attributeValues.length] = value; +} +/** + * returns array of attribute names + */ +TagObject.prototype.getAttributeNames = function() +{ + return this.attributeNames; +} +/** + * returns array of attribute values + */ +TagObject.prototype.getAttributeValues = function() +{ + return this.attributeValues; +} +/** + * parses a html tag i.e. + * and sets the tag name and attribute name and value lists. All attribute + * names are converted to lowercase. + */ +TagObject.prototype.populate = function( tag ) +{ + //look for starting angle bracket + var stIndex = 0; + while( tag.charAt(stIndex) != '<') + { + stIndex++; + } + stIndex++; + this.tagName = tag.substring(stIndex,tag.indexOf(" ")); + stIndex = tag.indexOf(" "); + var endIndex; + + while(true) + { + //hunt for first equals + endIndex = tag.indexOf("=",stIndex); + if ( endIndex == -1 ) + break; + + var attrName = tag.substring(stIndex,endIndex); + attrName = attrName.replace(this.spaceRemoveRegex,""); + attrName = attrName.replace(this.newLineRemoveRegex,""); + attrName = attrName.toLowerCase(); + + stIndex = endIndex+1; + + //hunt for first space + endIndex = tag.indexOf(" ",stIndex); + if ( endIndex == -1 ) + { + //look for terminating angle bracket + endIndex = tag.indexOf(">",stIndex); + if ( endIndex == -1 ) + endIndex = tag.length; + } + var attrValue = tag.substring(stIndex,endIndex); + attrValue = attrValue.replace("/>",""); + attrValue = attrValue.replace(">",""); + + this.addAttribute(attrName,attrValue); + stIndex = endIndex; + + } +} +/** + * returns the value for a given attribute name. returns null + * if the attribute name does not exist + */ +TagObject.prototype.getAttributeValue = function( attribName ) +{ + for( var i = 0; i < this.attributeNames.length; i++ ) + { + if ( this.attributeNames[i] == attribName ) + return this.attributeValues[i]; + } + return null; +} +/** + * sets a value for the given attribute name. If the attribute value + * exists, it is replaced with the new value, otherwise a attribute + * name/value pair is created. + */ +TagObject.prototype.setAttributeValue = function( attribName, attribValue ) +{ + for( var i = 0; i < this.attributeNames.length; i++ ) + { + if ( this.attributeNames[i] == attribName ) + { + this.attributeValues[i] = attribValue; + return; + } + } + this.addAttribute (attribName,attribValue); } + + +/** + * convert img to flash object tags for the supplied html content + * and returns the new content. + */ +function restore(content) +{ + //ensure img tags are consistent by removing spaces and + //different cases + content = content.replace(new RegExp('<[ ]*img','gi'),'',stImgIndex); + if ( endImgIndex == -1 ) //should be well formed + break; + + stIndex = endImgIndex+"/>".length; + imgString = content.substring(stImgIndex,stIndex); + + var tagObj = new TagObject(); + tagObj.populate(imgString); + + if ( tagObj.getAttributeValue("name") == '"mce_plugin_flash"') + { + + var width = tagObj.getAttributeValue("width"); + var height = tagObj.getAttributeValue("height"); + var src = tagObj.getAttributeValue("alt"); + + + //create object replacement tags + var objTags = decodeAttributes(tagObj); + + var obj = getTagByName( objTags, "object"); + obj.setAttributeValue( "width", width ); + obj.setAttributeValue( "height", height ); + + + var embed = getTagByName( objTags, "embed"); + embed.setAttributeValue( "width", width ); + embed.setAttributeValue( "height", height ); + embed.setAttributeValue( "src", src ); + + + newContent = newContent.concat( + objectTagsToHTML(objTags)); + } + else + { + newContent = newContent.concat(imgString); + } + } + newContent = newContent.concat(content.substring(stIndex,content.length)); + return newContent; +} + + + +/** + * convert flash object to img tags for the given html content and + * returns the converted html. + */ + +function replace(content) +{ + + //ensure object tags are consistent by removing spaces and + //different cases + content = content.replace(new RegExp('<[ ]*object','gi'),'','gi'),''); + + + var newContent = ""; + var startString; + var stObjIndex; + var endObjIndex; + var objString; + var stIndex = 0; + var tagObjs; + while( (stObjIndex = content.indexOf('',stIndex); + if ( endObjIndex == -1 ) //should be well formed + break; + + stIndex = endObjIndex+"".length; + objString = content.substring(stObjIndex,stIndex); + tagObjs = getObjectTags(objString); + + if ( tagObjs.length > 0 ) + { + var objTag = getTagByName( tagObjs, "object"); + var height = objTag.getAttributeValue("height"); + var width = objTag.getAttributeValue("width"); + + var embedTag = getTagByName(tagObjs,"embed"); + var src = embedTag.getAttributeValue("src"); + + //encode object tags into attribute values + var imgAttr = encodeObjectTags(tagObjs); + var imgTag = '+src+'); + newContent = newContent.concat(imgTag); + } + else + { + newContent = newContent.concat(objString); + } + } + newContent = newContent.concat(content.substring(stIndex,content.length)); + return newContent; +} +/** + * returns array of TagObject corresponding to the object, param and embed + * tags (in that order) within the html of objStr. Returns a empty array + * if the object tag does not correspond to a flash object. + */ +function getObjectTags(objStr) +{ + var tagObjs = new Array(); + var tagObject; + var stIndex = 0; + var endIndex = 0; + + stIndex = objStr.indexOf(""); + + tagObject = new TagObject(); + tagObject.populate(objStr.substring(stIndex,endIndex+1)); + + //make sure this is a flash object + if ( tagObject.getAttributeValue("classid") + != "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000") + return tagObjs; + + tagObjs[tagObjs.length] = tagObject; + + //ensure param and embed tags are lower case and have no leading spaces + objStr = objStr.replace(new RegExp('<[ ]*param','gi'),'','gi'),''); + objStr = objStr.replace(new RegExp('<[ ]*embed','gi'),'','gi'),''); + + //pull in param tags + stIndex = endIndex; + while( (endIndex = objStr.indexOf("",stIndex); + tagObject = new TagObject(); + tagObject.populate(objStr.substring(stIndex,endIndex+1)); + tagObjs[tagObjs.length] = tagObject; + stIndex = endIndex; + } + + //pull in embed tags + endIndex = objStr.indexOf("",stIndex); + tagObject = new TagObject(); + tagObject.populate(objStr.substring(stIndex,endIndex+1)); + tagObjs[tagObjs.length] = tagObject; + stIndex = endIndex; + } + return tagObjs; +} +/** + * converts array TagObject to a html string representation of the tags + * and returns the string. This function assumes the array contains an + * object tag followed by some number of param tags and a ending embed tag. + */ +function objectTagsToHTML( objTags ) +{ + var htmlStr = ""; + for( var i = 0; i < objTags.length; i++ ) + { + var tag = objTags[i]; + var tagAttrs = tag.getAttributeNames(); + var tagValues = tag.getAttributeValues(); + + + htmlStr = htmlStr.concat('<',tag.getTagName(),' '); + + for( var j = 0; j < tagAttrs.length; j++ ) + { + htmlStr = htmlStr.concat(tagAttrs[j],'=',tagValues[j], + (j < tagAttrs.length-1) ? ' ' : ''); + } + + if (tag.getTagName() == "param") + htmlStr = htmlStr.concat(' />\n'); + else + htmlStr = htmlStr.concat('>\n'); + } + htmlStr = htmlStr.concat('\n'); + htmlStr = htmlStr.concat('\n'); + return htmlStr; + +} +/** + * converts the object tags into specially encoded tag attributes to + * hold the content of the original tags. This allows the original content + * of the tags to be stored withing these attributes and later restored to the + * original tag structure. The object tag is stored via the "obj" attribute, + * param tags into the "param" attribute and embed tag to the "embed" + * attribute. Each attribute/value of the tag is encoded into a question + * mark delimited field like "?attribute1=value1?attribute2=value2..". Since + * the attribute values may contain ?=" characters these are encoded into + * special html like escape sequences prior to encoding the name value pairs. + * Param tags are handled differently than object and embed tags since a + * param tag is structured like + * and there can be multiple param tags. These are encoded like + * ?paramName1=paramValue1?paramName2=paramValue2. + */ +function encodeObjectTags( objTags ) +{ + var equal = "&eqs;"; + var quote = """; + var question = "?"; + + var equalReplace = new RegExp('=','g'); + var quoteReplace = new RegExp('"','g'); + var questionReplace = new RegExp("[\?]",'g'); + + + var objAttr = 'obj="'; + var paramAttr = 'param="'; + var embedAttr = 'embed="'; + + for( var i = 0; i < objTags.length; i++ ) + { + var tagObj = objTags[i]; + var attrNames = tagObj.getAttributeNames(); + var attrValues = tagObj.getAttributeValues(); + + if ( tagObj.getTagName() == 'object' ) + { + for( var j = 0; j < attrNames.length; j++ ) + { + var v = attrValues[j]; + v = v.replace(equalReplace,equal); + v = v.replace(quoteReplace,quote); + v = v.replace(questionReplace,question); + + objAttr = objAttr.concat('?', + attrNames[j],'=',v); + } + } + else if ( tagObj.getTagName() == 'param' ) + { + + var n = tagObj.getAttributeValue("name"); + var v = tagObj.getAttributeValue("value"); + + n = n.replace(quoteReplace,quote); + + v = v.replace(equalReplace,equal); + v = v.replace(quoteReplace,quote); + v = v.replace(questionReplace,question); + + paramAttr = paramAttr.concat('?',n,'=',v); + + } + else if ( tagObj.getTagName() == 'embed' ) + { + for( var j = 0; j < attrNames.length; j++ ) + { + var v = attrValues[j]; + v = v.replace(equalReplace,equal); + v = v.replace(quoteReplace,quote); + v = v.replace(questionReplace,question); + + embedAttr = embedAttr.concat('?', + attrNames[j],'=',v); + } + } + } + objAttr = objAttr.concat('"'); + paramAttr = paramAttr.concat('"'); + embedAttr = embedAttr.concat('"'); + + var imageAttr = objAttr+" "+paramAttr+" "+embedAttr; + return imageAttr; +} + +/** + * decodes the obj,param, and embed attributes into a array of TagObjects. + * If the special attributes don't exist, a array of default flash objects + * is created. + */ +function decodeAttributes( tagObj ) +{ + + var objAttr = tagObj.getAttributeValue("obj"); + + if ( objAttr == null ) + return creatDefaultFlashObjectTags(); + + var paramAttr = tagObj.getAttributeValue("param"); + var embedAttr = tagObj.getAttributeValue("embed"); + var pArray = new Array(objAttr,paramAttr,embedAttr); + + var tagArray = new Array(); + + var equal = "&eqs;"; + var quote = """; + var question = "?"; + + var equalReplace = new RegExp(equal,'g'); + var quoteReplace = new RegExp(quote,'g'); + var questionReplace = new RegExp(question,'g'); + + for( var i = 0; i < pArray.length; i++ ) + { + + var tObj; + + if ( i == 0 ) + { + tObj = new TagObject(); + tObj.setTagName("object"); + } + else if ( i == 2 ) + { + tObj = new TagObject(); + tObj.setTagName("embed"); + } + + + //remove first question mark and begin and end quotes + var attr = pArray[i].substring(2,pArray[i].length-1); + //break up name value pairs on question mark + var pairs = attr.split('?'); + + //for each name value pair break on equal sign + //decode + for( var j = 0; j < pairs.length; j++ ) + { + var nvpair = pairs[j].split('='); + + var name = nvpair[0]; + name = name.replace(quoteReplace,'"'); + + var value = nvpair[1]; + value = value.replace(equalReplace,'='); + value = value.replace(quoteReplace,'"'); + value = value.replace(questionReplace,'?'); + + if ( i == 0 || i == 2 ) + { + tObj.addAttribute(name,value) + } + else + { + tObj = new TagObject(); + tObj.setTagName("param"); + tObj.addAttribute('name',name); + tObj.addAttribute('value',value); + tagArray[tagArray.length] = tObj; + } + } + if ( i != 1 ) + tagArray[tagArray.length] = tObj; + } + return tagArray; +} +/** + * returns a TagObject from the array whose tag name matches tag name. + */ +function getTagByName( tagObjs, tagName ) +{ + for( var i = 0; i < tagObjs.length; i++ ) + { + var tObj = tagObjs[i]; + if ( tObj.getTagName() == tagName ) + return tObj; + + } + return null; +} +/** + * returns a TagObject corresponding to a param tag whose parameter value + * of the name attribute matches paramName. + */ +function getParameterTagWithName( tagObjs, paramName ) +{ + paramName = paramName.toLowerCase(); + for( var i = 0; i < tagObjs.length; i++ ) + { + var tObj = tagObjs[i]; + if ( tObj.getTagName() != 'param' ) + continue; + + + var name = tObj.getAttributeValue('name'); + name = name.toLowerCase(); + + if ( name != paramName ) + continue; + + return tObj; + } + return null; +} +/** + * build and return a array of TagObjects corresponding to a reasonable + * default set of object,param, and embed tags for a flash movie. Note + * that the height,width, and src attributes need to be set on the TagObjects + * before converting to the array into a real set of flash tags. + */ +function creatDefaultFlashObjectTags() +{ + var tagObjs = new Array(); + + var objTag = new TagObject(); + objTag.setTagName('object'); + objTag.addAttribute('classid', + '"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'); + objTag.addAttribute('codebase', + '"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"'); + + tagObjs[tagObjs.length] = objTag; + + + var paramTag = new TagObject(); + paramTag.setTagName('param'); + paramTag.addAttribute( 'name','"quality"'); + paramTag.addAttribute( 'value','"high"'); + tagObjs[tagObjs.length] = paramTag; + + paramTag = new TagObject(); + paramTag.setTagName('param'); + paramTag.addAttribute( 'name','"menu"'); + paramTag.addAttribute( 'value','"false"'); + tagObjs[tagObjs.length] = paramTag; + + var embedTag = new TagObject(); + embedTag.setTagName('embed'); + embedTag.addAttribute( 'quality','"high"'); + embedTag.addAttribute( 'type','"application/x-shockwave-flash"'); + embedTag.addAttribute( 'pluginspace','"http://www.macromedia.com/go/getflashplayer"'); + + tagObjs[tagObjs.length] = embedTag; + + return tagObjs; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/flash.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/flash.htm index 49be5305b..0481abc50 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/flash.htm +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/flash.htm @@ -45,6 +45,13 @@ if (formObj.height2.value=='%') { height = height + '%'; } + + if (width == "") + width = 100; + + if (height == "") + height = 100; + html += '' + '
- +
@@ -106,8 +113,8 @@ -
{$lang_insert_flash}

-   + +
diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif new file mode 100644 index 000000000..4950e673c Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/images/flash.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/de.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/de.js new file mode 100644 index 000000000..c00eb6387 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/de.js @@ -0,0 +1,4 @@ +// DE lang variables +tinyMCELang['lang_insert_flash'] = 'Flash Movie einfügen / bearbeiten'; +tinyMCELang['lang_insert_flash_file'] = 'Flash-Datei'; +tinyMCELang['lang_insert_flash_size'] = 'Größe'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/se.js new file mode 100644 index 000000000..3d8eb1e2c --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/se.js @@ -0,0 +1,5 @@ +// SE lang variables + +tinyMCELang['lang_insert_flash'] = 'Skapa / uppdatera flash film'; +tinyMCELang['lang_insert_flash_file'] = 'Flash film (.swf)'; +tinyMCELang['lang_insert_flash_size'] = 'Storlek'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/uk.js new file mode 100644 index 000000000..08b5720a4 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/langs/uk.js @@ -0,0 +1,5 @@ +// UK lang variables + +tinyMCELang['lang_insert_flash'] = 'Insert / edit Flash Movie'; +tinyMCELang['lang_insert_flash_file'] = 'Flash-File (.swf)'; +tinyMCELang['lang_insert_flash_size'] = 'Size'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt index 8866ee257..a031d5603 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/flash/readme.txt @@ -2,7 +2,7 @@ ----------------------------- About: - This is the INSERT FLASH Dioalog contributed by Michael Keck. + This is the INSERT FLASH Dialog contributed by Michael Keck. This one supports popup windows and targets. Note: @@ -21,3 +21,27 @@ Initialization example: plugins : "flash", extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]" }); + + +---------------------------------------------------------------- +ADDITIONAL NOTE: + +The flash plugin has been heavily modified (the original is editor_plugin_original.js) since the original did not play nicely with html content that +already contained existing flash tags and in fact stripped out the object +tags for existing flash html. The rewrite corrects this as well attempts +to preserve the existing flash tags where possible. The tinyMCE.init call +should be be something like: + +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|obj|param|embed]" + }); + +Note the extra obj,param,embed attributes for the img tag. These attributes +are used to serialize data from existing flash tags so that they can be +properly restored. Editing a flash tag with the plugin will cause this +information to be lost (sorry !) but still produces a working flash nevertheless. + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js index fc4dcf446..aa56ed105 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js @@ -20,7 +20,7 @@ function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface if (command == "mceIESpell") { try { var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension"); - ieSpell.CheckDocumentNode(tinyMCE._getInstanceById(editor_id).contentDocument.documentElement); + ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement); } catch (e) { if (e.number == -2146827859) { if (confirm(tinyMCE.getLang("lang_iespell_download", "", true))) diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/el.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/el.js new file mode 100644 index 000000000..792594705 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/el.js @@ -0,0 +1,4 @@ +// Greek lang variables by Jacaranda Bill + +tinyMCELang['lang_iespell_desc'] = 'Ïñèïãñáöéêüò Ýëåã÷ïò'; +tinyMCELang['lang_iespell_download'] = "Ôï ðñüãñáììá ieSpell äåí âñÝèçêå. ÐáôÞóôå OK ãéá íá ìåôáâåßôå óôçí éóôïóåëßäá ëÞøçò ôïõ ðñïãñÜììáôïò." diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/it.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/it.js new file mode 100644 index 000000000..5f6e2f05f --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/it.js @@ -0,0 +1,4 @@ +// IT lang variables + +tinyMCELang['lang_iespell_desc'] = 'Avvia il controllo ortografico'; +tinyMCELang['lang_iespell_download'] = "ieSpell non trovato. Clicca OK per andare alla pagina di download." diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/ko.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/ko.js new file mode 100644 index 000000000..a5bbfe446 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/iespell/langs/ko.js @@ -0,0 +1,4 @@ +// KO lang variables + +tinyMCELang['lang_iespell_desc'] = '¸ÂÃã¹ý °Ë»ç ½ÇÇà'; +tinyMCELang['lang_iespell_download'] = "ieSpellÀ» ãÀ» ¼ö ¾ø½À´Ï´Ù. OK¸¦ ´©¸£¸é ´Ù¿î·Îµå ÆäÀÌÁö·Î À̵¿ÇÕ´Ï´Ù." diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js index d2617a325..000ac2fcd 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js @@ -35,6 +35,7 @@ function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_in /* Returns the date object in the specified format */ function getDateTime(date, format) { format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y"); + format = tinyMCE.regexpReplace(format, "%r", "%I:%M:%S %p"); format = tinyMCE.regexpReplace(format, "%Y", "" + date.getFullYear()); format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear()); format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1, 2)); @@ -42,6 +43,8 @@ function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_in 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, "%I", "" + (date.getHours() < 12 ? (date.getHours()+1) : 24-date.getHours())); + format = tinyMCE.regexpReplace(format, "%p", "" + (date.getHours() < 12 ? "AM" : "PM")); format = tinyMCE.regexpReplace(format, "%%", "%"); return format; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt index b4a6feac8..6399d9e7a 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/insertdatetime/readme.txt @@ -24,9 +24,12 @@ Configuration: %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 + %r - time in a.m. and p.m. notation %H - hour as a decimal number using a 24-hour clock (range 00 to 23) + %I - hour as a decimal number using a 12-hour clock (range 01 to 12) %M - minute as a decimal number (range 00-59) %S - second as a decimal number (range 00-59) + %p - either `am' or `pm' according to the given time value %% - a literal `%' character plugin_insertdate_timeFormat - Format that the time is output as. Defaults to: "%H:%M:%S". diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js index 9b16b2ac3..1f5caa556 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js @@ -1,5 +1,5 @@ /* Import theme specific language pack */ -tinyMCE.importPluginLanguagePack('preview', 'uk,se,de'); +tinyMCE.importPluginLanguagePack('preview', 'uk,se,de,pt'); /** * Returns the HTML contents of the preview control. diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/langs/pt.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/langs/pt.js new file mode 100644 index 000000000..bc7e09d02 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/preview/langs/pt.js @@ -0,0 +1,3 @@ +// UK lang variables + +tinyMCELang['lang_preview_desc'] = 'Pré-visualização'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js new file mode 100644 index 000000000..dba42752a --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js @@ -0,0 +1,26 @@ +/* Import theme specific language pack */ +tinyMCE.importPluginLanguagePack('print', 'uk,se'); + +function TinyMCE_print_getControlHTML(control_name) { + switch (control_name) { + case "print": + return ''; + } + + return ""; +} + +/** + * Executes the search/replace commands. + */ +function TinyMCE_print_execCommand(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; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/print/images/print.gif b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/images/print.gif new file mode 100644 index 000000000..3fe774482 Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/images/print.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/se.js new file mode 100644 index 000000000..c041266d6 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/se.js @@ -0,0 +1,3 @@ +// SE lang variables + +tinyMCELang['lang_print_desc'] = 'Skrivut'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/uk.js new file mode 100644 index 000000000..7c9e2335c --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/langs/uk.js @@ -0,0 +1,3 @@ +// UK lang variables + +tinyMCELang['lang_print_desc'] = 'Print'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/print/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/readme.txt new file mode 100644 index 000000000..28169c53e --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/print/readme.txt @@ -0,0 +1,17 @@ + Print plugin for TinyMCE +----------------------------- + +About: + This plugin adds a print button to TinyMCE. + +Installation instructions: + * Copy the print directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins). + * Add plugin to TinyMCE plugin option list example: plugins : "print". + +Initialization example: + tinyMCE.init({ + theme : "advanced", + mode : "textareas", + plugins : "print", + theme_advanced_buttons1_add : "print", + }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js new file mode 100644 index 000000000..4a7f9e7f4 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js @@ -0,0 +1,43 @@ +/* Import theme specific language pack */ +tinyMCE.importPluginLanguagePack('save', 'uk'); + +/** + * Returns the HTML contents of the save control. + */ +function TinyMCE_save_getControlHTML(control_name) { + switch (control_name) { + case "save": + return ''; + } + return ""; +} + +/** + * Executes the save command. + */ +function TinyMCE_save_execCommand(editor_id, element, command, user_interface, value) { + // Handle commands + switch (command) { + case "mceSave": + var formObj = tinyMCE.selectedInstance.formElement.form; + + if (formObj) { + tinyMCE.triggerSave(); + + // Disable all UI form elements that TinyMCE created + for (var i=0; i'; + + case "replace": + return ''; + } + + return ""; +} + +/** + * Executes the search/replace commands. + */ +function TinyMCE_searchreplace_execCommand(editor_id, element, command, user_interface, value) { + function defValue(key, default_value) { + value[key] = typeof(value[key]) == "undefined" ? default_value : value[key]; + } + + function replaceSel(str) { + // Get current selection + if (!tinyMCE.isMSIE) { + var sel = instance.contentWindow.getSelection(); + var rng = sel.getRangeAt(0); + } else { + var rng = instance.contentWindow.document.selection.createRange(); + } + + // Replace current one + if (!tinyMCE.isMSIE) { + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(str)); + rng.collapse(false); + } else { + if (rng.item) + rng.item(0).outerHTML = str; + else + rng.pasteHTML(str); + } + } + + var instance = tinyMCE.getInstanceById(editor_id); + + if (!value) + value = new Array(); + + // Setup defualt values + defValue("editor_id", editor_id); + defValue("searchstring", ""); + defValue("replacestring", null); + defValue("replacemode", "none"); + defValue("casesensitive", false); + defValue("backwards", false); + defValue("wrap", false); + defValue("wholeword", false); + + // Handle commands + switch (command) { + case "mceResetSearch": + tinyMCE.lastSearchRng = null; + return true; + + case "mceSearch": + if (user_interface) { + // Open search dialog + var template = new Array(); + + if (value['replacestring'] != null) { + template['file'] = '../../plugins/searchreplace/replace.htm'; // Relative to theme + template['width'] = 310; + template['height'] = 180; + } else { + template['file'] = '../../plugins/searchreplace/search.htm'; // Relative to theme + template['width'] = 280; + template['height'] = 180; + } + + tinyMCE.openWindow(template, value); + } else { + var win = tinyMCE.getInstanceById(editor_id).contentWindow; + var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document; + + // Handle replace current + if (value['replacemode'] == "current") { + replaceSel(value['replacestring']); + + // Search next one + 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; + + // Handle replace all mode + if (value['replacemode'] == "all") { + while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) { + rng.scrollIntoView(); + rng.select(); + rng.collapse(false); + replaceSel(value['replacestring']); + } + + 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['replacestring']); + + 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; + } + + // Pass to next handler in chain + return false; +} + +function TinyMCE_searchreplace_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) { + return true; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace.gif b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace.gif new file mode 100644 index 000000000..9f3d81634 Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/replace.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/search.gif b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/search.gif new file mode 100644 index 000000000..ee6182fbb Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/images/search.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/se.js new file mode 100644 index 000000000..d5fb893e6 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/se.js @@ -0,0 +1,19 @@ +// SE lang variables + +tinyMCELang['lang_searchreplace_search_desc'] = 'Sök'; +tinyMCELang['lang_searchreplace_searchnext_desc'] = 'Sög igen'; +tinyMCELang['lang_searchreplace_replace_desc'] = 'Sök/Ersätt'; +tinyMCELang['lang_searchreplace_notfound'] = 'Sökningen är slutförd. Söksträngen kunde inte hittas.'; +tinyMCELang['lang_searchreplace_search_title'] = 'Sök'; +tinyMCELang['lang_searchreplace_replace_title'] = 'Sök/Ersätt'; +tinyMCELang['lang_searchreplace_allreplaced'] = 'Alla träffar på söksträngen ersattes'; +tinyMCELang['lang_searchreplace_findwhat'] = 'Sök på'; +tinyMCELang['lang_searchreplace_replacewith'] = 'Ersätt med'; +tinyMCELang['lang_searchreplace_direction'] = 'Sökriktning'; +tinyMCELang['lang_searchreplace_up'] = 'Uppåt'; +tinyMCELang['lang_searchreplace_down'] = 'Neråt'; +tinyMCELang['lang_searchreplace_case'] = 'Matcha gemener/VERSALER'; +tinyMCELang['lang_searchreplace_findnext'] = 'Sök nästa'; +tinyMCELang['lang_searchreplace_replace'] = 'Ersätt'; +tinyMCELang['lang_searchreplace_replaceall'] = 'Ersätt alla'; +tinyMCELang['lang_searchreplace_cancel'] = 'Avbryt'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/uk.js new file mode 100644 index 000000000..f9861ee59 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/uk.js @@ -0,0 +1,19 @@ +// UK lang variables + +tinyMCELang['lang_searchreplace_search_desc'] = 'Find'; +tinyMCELang['lang_searchreplace_searchnext_desc'] = 'Find again'; +tinyMCELang['lang_searchreplace_replace_desc'] = 'Find/Replace'; +tinyMCELang['lang_searchreplace_notfound'] = 'The search has been compleated. The search string could not be found.'; +tinyMCELang['lang_searchreplace_search_title'] = 'Find'; +tinyMCELang['lang_searchreplace_replace_title'] = 'Find/Replace'; +tinyMCELang['lang_searchreplace_allreplaced'] = 'All occurrences of the search string was replaced.'; +tinyMCELang['lang_searchreplace_findwhat'] = 'Find what'; +tinyMCELang['lang_searchreplace_replacewith'] = 'Replace with'; +tinyMCELang['lang_searchreplace_direction'] = 'Direction'; +tinyMCELang['lang_searchreplace_up'] = 'Up'; +tinyMCELang['lang_searchreplace_down'] = 'Down'; +tinyMCELang['lang_searchreplace_case'] = 'Match case'; +tinyMCELang['lang_searchreplace_findnext'] = 'Find next'; +tinyMCELang['lang_searchreplace_replace'] = 'Replace'; +tinyMCELang['lang_searchreplace_replaceall'] = 'Replace all'; +tinyMCELang['lang_searchreplace_cancel'] = 'Cancel'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt new file mode 100644 index 000000000..228387b4e --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/readme.txt @@ -0,0 +1,18 @@ + searchreplace plugin for TinyMCE +----------------------------- + +About: + This plugin adds search/replace dialogs to TinyMCE. + +Installation instructions: + * Copy the searchreplace directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins). + * Add plugin to TinyMCE plugin option list example: plugins : "searchreplace". + * Add buttons "search,replace" to the button list. + +Initialization example: + tinyMCE.init({ + theme : "advanced", + mode : "textareas", + plugins : "searchreplace", + theme_advanced_buttons1_add : "search,replace", + }); diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/replace.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/replace.htm new file mode 100644 index 000000000..b501840b3 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/replace.htm @@ -0,0 +1,90 @@ + + + + +{$lang_searchreplace_replace_title} + + + + + + + + + + + + + + + + + + + + +
{$lang_searchreplace_findwhat}: 
{$lang_searchreplace_replacewith}: 
+ + + + + + + +
{$lang_searchreplace_direction}: {$lang_searchreplace_up}{$lang_searchreplace_down}
+ + + + +
{$lang_searchreplace_case}
+ + + + + + + +
+ + + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/search.htm b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/search.htm new file mode 100644 index 000000000..e11494be5 --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/searchreplace/search.htm @@ -0,0 +1,76 @@ + + + + +{$lang_searchreplace_search_title} + + + + +
+ + + + + + + + + + +
{$lang_searchreplace_findwhat}: 
+ + + + + + + +
{$lang_searchreplace_direction}: {$lang_searchreplace_up}{$lang_searchreplace_down}
+ + + + +
{$lang_searchreplace_case}
+ + + + + +
+
+ + diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js index 094c44021..3c26e33be 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/editor_plugin.js @@ -1,20 +1,20 @@ /* Import theme specific language pack */ -tinyMCE.importPluginLanguagePack('zoom', 'uk,se'); +//tinyMCE.importPluginLanguagePack('zoom', 'uk,se,pt'); /** * Returns the HTML contents of the zoom control. */ function TinyMCE_zoom_getControlHTML(control_name) { - if (!tinyMCE.isMSIE) + if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0) return ""; switch (control_name) { case "zoom": return ''; } @@ -28,8 +28,8 @@ function TinyMCE_zoom_execCommand(editor_id, element, command, user_interface, v // Handle commands switch (command) { case "mceZoom": - tinyMCE._getInstanceById(editor_id).contentDocument.body.style.zoom = value; - tinyMCE._getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value; + tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value; return true; } diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/langs/pt.js b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/langs/pt.js new file mode 100644 index 000000000..bffc34cfe --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/langs/pt.js @@ -0,0 +1,3 @@ +// UK lang variables + +tinyMCELang['lang_zoom_prefix'] = 'Zoom'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt index 328ba59ec..bf9e58589 100755 --- a/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt +++ b/www/extras/tinymce/jscripts/tiny_mce/plugins/zoom/readme.txt @@ -2,7 +2,7 @@ -------------------------- About: - Adds a zoom drop list in MSIE, this plugin was mostly created to + Adds a zoom drop list in MSIE5.5+, this plugin was mostly created to show how to add custom droplists as plugins. Installation instructions: diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/docs/nl/images/.DS_Store b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/docs/nl/images/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/docs/nl/images/.DS_Store differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_popup.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_popup.css index 80407fe06..301c6fcc6 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_popup.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_popup.css @@ -65,7 +65,7 @@ td.charmap, td.charmapOver { td.charmapOver { background-color: #CCCCCC; - cursor: hand; + cursor: arrow; } a.charmap { @@ -78,3 +78,15 @@ a.charmap { 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; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js index c4ace72e6..145bfed82 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js @@ -1,5 +1,5 @@ /* 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_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']];function TinyMCE_advanced_getControlHTML(button_name){for(var i=0;i';}switch(button_name){case "formatselect":var html='';return html;case "styleselect":return '';case "fontselect":return '';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}']];for(var i=0;i'+lookup[x][1]+'';}}html+='';return html;case "styleselect":return '';case "fontselect":return '';case "fontsizeselect":return '';case "separator":return '';case "spacer":return '';case "rowseparator":return '
';}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);tinyMCE.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;i0)toolbarHTML+="
";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;i0)toolbarHTML+="
";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';if(toolbarLocation=="top")template['html']+=''+toolbarHTML+'';template['html']+='\ + ';case "|":case "separator":return '';case "spacer":return '';case "rowseparator":return '
';}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 "mceBackColor":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:"HiliteColor",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);tinyMCE.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 ';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;i0)toolbarHTML+="
";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;i0)toolbarHTML+="
";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';if(toolbarLocation=="top")template['html']+=''+toolbarHTML+'';if(pathLocation=="top")template['html']+=''+pathHTML+'';template['html']+='\ \ - ';if(toolbarLocation=="bottom")template['html']+=''+toolbarHTML+'';template['html']+='';var styleSelectHTML='';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i'+key+'';}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.getLang('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;i0))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");}else selectByValue(selectElm,"

");}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','mceButtonSelected');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 "hr":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;i0)selectElm.setAttribute('cssImported','true');}} \ No newline at end of file + ';if(toolbarLocation=="bottom")template['html']+=''+toolbarHTML+'';if(pathLocation=="bottom")template['html']+=''+pathHTML+'';template['html']+='';var styleSelectHTML='';if(settings['theme_advanced_styles']){var stylesAr=settings['theme_advanced_styles'].split(';');for(var i=0;i'+key+'';}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.getLang('lang_insert_link_delta_height',0);return template;}function TinyMCE_advanced_getInsertImageTemplate(){var template=new Array();template['file']='image.htm?src={$src}';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=0;i--){var nodeName=path[i].nodeName.toLowerCase();var nodeData="";if(nodeName=="b")nodeName="strong";if(nodeName=="i")nodeName="em";if(getAttrib(path[i],'id')!="")nodeData+="id: "+path[i].getAttribute('id')+" ";if(getAttrib(path[i],'class')!="")nodeData+="class: "+path[i].getAttribute('class')+" ";if(getAttrib(path[i],'className')!="")nodeData+="class: "+path[i].getAttribute('className')+" ";if(getAttrib(path[i],'src')!="")nodeData+="src: "+path[i].getAttribute('src')+" ";if(getAttrib(path[i],'href')!="")nodeData+="href: "+path[i].getAttribute('href')+" ";if(nodeName=="img"&&getAttrib(path[i],'name')=="mce_plugin_flash"){nodeName="flash";nodeData="";}if(tinyMCE.isMSIE)html+=''+nodeName+'';else html+=''+nodeName+'';if(i>0)html+=" » ";}pathElm.innerHTML=html+" ";}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+'_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');var anchorName=tinyMCE.getParentElement(node,"a","name");TinyMCE_advanced_anchorName="";if(anchorName){TinyMCE_advanced_anchorName=anchorName.getAttribute("name");tinyMCE.switchClassSticky(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_index0))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");}else selectByValue(selectElm,"

");}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&&getAttrib(elm,"size")!="")selectByValue(selectElm,elm.getAttribute("size"));else selectByValue(selectElm,"0");}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','mceButtonSelected');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 "hr":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;i0)selectElm.setAttribute('cssImported','true');}} \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js index 5c22a34dd..8f0a7bcc3 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js @@ -41,21 +41,33 @@ var TinyMCE_advanced_buttons = [ ['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'], + ['forecolor', 'forecolor.gif', '{$lang_theme_forecolor_desc}', 'mceForeColor', true], + ['backcolor', 'backcolor.gif', '{$lang_theme_backcolor_desc}', 'mceBackColor', 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'] ]; + /** * Returns HTML code for the specificed control. */ function TinyMCE_advanced_getControlHTML(button_name) { + var buttonTileMap = new Array('anchor.gif','backcolor.gif','bullist.gif','center.gif','charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif','cut.gif','forecolor.gif','full.gif','help.gif','hr.gif','image.gif','indent.gif','left.gif','link.gif','numlist.gif','outdent.gif','paste.gif','redo.gif','removeformat.gif','right.gif','strikethrough.gif','sub.gif','sup.gif','table.gif','table_delete_col.gif','table_delete_row.gif','table_insert_col_after.gif','table_insert_col_before.gif','table_insert_row_after.gif','table_insert_row_before.gif','undo.gif','unlink.gif','visualaid.gif'); + // Lookup button in button list for (var i=0; i'; + } + + // Old style return ''; + } } // Custom controlls other than buttons @@ -104,6 +116,7 @@ function TinyMCE_advanced_getControlHTML(button_name) { case "fontsizeselect": return ''; + case "|": case "separator": return ''; @@ -145,6 +159,20 @@ function TinyMCE_advanced_execCommand(editor_id, element, command, user_interfac tinyMCE.openWindow(template, {editor_id : editor_id, command : "forecolor", input_color : inputColor}); return true; + case "mceBackColor": + 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 : "HiliteColor", input_color : inputColor}); + return true; + case "mceCodeEditor": var template = new Array(); @@ -209,8 +237,13 @@ function TinyMCE_advanced_getEditorTemplate(settings) { } var template = new Array(); - var toolbarHTML = ""; + var toolbarHTML = "", pathHTML = ""; 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"); + + // Setup path HTML + pathHTML ='{$lang_theme_path}:  '; // Render row 1 var buttonNamesRow1 = tinyMCE.getParam("theme_advanced_buttons1", "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", true, ','); @@ -246,7 +279,10 @@ function TinyMCE_advanced_getEditorTemplate(settings) { template['html'] = ''; if (toolbarLocation == "top") - template['html'] += ''; + template['html'] += ''; + + if (pathLocation == "top") + template['html'] += ''; /* template['html'] += ''; if (toolbarLocation == "bottom") - template['html'] += ''; + template['html'] += ''; + + if (pathLocation == "bottom") + template['html'] += ''; template['html'] += '
' + toolbarHTML + '
' + toolbarHTML + '
' + pathHTML + '
\ \ @@ -256,7 +292,10 @@ function TinyMCE_advanced_getEditorTemplate(settings) {
' + toolbarHTML + '
' + toolbarHTML + '
' + pathHTML + '
'; @@ -306,7 +345,7 @@ function TinyMCE_advanced_getInsertLinkTemplate() { function TinyMCE_advanced_getInsertImageTemplate() { var template = new Array(); - template['file'] = 'image.htm'; + template['file'] = 'image.htm?src={$src}'; template['width'] = 340; template['height'] = 280; @@ -355,6 +394,67 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev return elm.getAttribute(name) ? elm.getAttribute(name) : ""; } + // Update path + var pathElm = document.getElementById(editor_id + "_path"); + if (pathElm) { + // Get node path + var parentNode = node; + var path = new Array(); + while (parentNode) { + if (parentNode.nodeName.toLowerCase() == "body") + break; + + // Only append element nodes to path + if (parentNode.nodeType == 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 == "b") + nodeName = "strong"; + + if (nodeName == "i") + nodeName = "em"; + + if (getAttrib(path[i], 'id') != "") + nodeData += "id: " + path[i].getAttribute('id') + " "; + + if (getAttrib(path[i], 'class') != "") + nodeData += "class: " + path[i].getAttribute('class') + " "; + + if (getAttrib(path[i], 'className') != "") + nodeData += "class: " + path[i].getAttribute('className') + " "; + + if (getAttrib(path[i], 'src') != "") + nodeData += "src: " + path[i].getAttribute('src') + " "; + + if (getAttrib(path[i], 'href') != "") + nodeData += "href: " + path[i].getAttribute('href') + " "; + + if (nodeName == "img" && getAttrib(path[i], 'name') == "mce_plugin_flash") { + nodeName = "flash"; + nodeData = ""; + } + + if (tinyMCE.isMSIE) + html += '' + nodeName + ''; + else + html += '' + nodeName + ''; + + if (i > 0) + html += " » "; + } + + pathElm.innerHTML = html + " "; + } + // Get element color var colorElm = tinyMCE.getParentElement(node, "font", "color"); if (colorElm) @@ -484,10 +584,10 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev var selectElm = document.getElementById(editor_id + "_fontSizeSelect"); if (selectElm) { var elm = tinyMCE.getParentElement(node, "font", "size"); - if (elm) + if (elm && getAttrib(elm, "size") != "") selectByValue(selectElm, elm.getAttribute("size")); else - selectByValue(selectElm, "1"); + selectByValue(selectElm, "0"); } // Handle align attributes diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_ui.css index ebcee7b47..09ff101f0 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/editor_ui.css @@ -9,32 +9,33 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: hand + cursor: arrow; } .mceButtonOver { - border-top: 1px solid buttonhighlight; +/* border-top: 1px solid buttonhighlight; border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; - border-right: 1px solid buttonshadow; - cursor: hand + border-right: 1px solid buttonshadow;*/ + border: 1px solid #0A246A; + cursor: arrow; + background-color: #B6BDD2; } .mceButtonDown { - border-bottom: 1px solid buttonhighlight; +/* border-bottom: 1px solid buttonhighlight; border-right: 1px solid buttonhighlight; border-top: 1px solid buttonshadow; - border-left: 1px solid buttonshadow; - cursor: hand + border-left: 1px solid buttonshadow;*/ + cursor: arrow; + border: 1px solid #0A246A; + background-color: #8592B5; } .mceButtonSelected { - border-bottom: 1px solid; - border-right: 1px solid; - border-top: 1px solid; - border-left: 1px solid; + border: 1px solid; border-color: #C0C0BB; - cursor: hand + cursor: arrow; } .mceButtonDisabled { @@ -46,7 +47,7 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: text + cursor: arrow; } .mceSeparator { @@ -115,4 +116,27 @@ .mceToolbarBottom { border-top: 1px solid #cccccc; -} \ No newline at end of file +} + +.mcePathTop { + border-bottom: 1px solid #cccccc; + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mcePathBottom { + border-top: 1px solid #cccccc; + padding: 2px; + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mcePathItem, .mcePathItem:link, .mcePathItem:visited, .mcePathItem:hover { + text-decoration: none; + font-family: "MS Sans Serif"; + font-size: 9pt; +} + +.mcePathItem:hover { + text-decoration: underline; +} diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif index 03a217004..38ae218a1 100644 Binary files a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif and b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/anchor.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif new file mode 100644 index 000000000..a9949e2a0 Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/backcolor.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif new file mode 100644 index 000000000..4844b14d3 Binary files /dev/null and b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/buttons.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif index 8d454abd4..af2ddb667 100644 Binary files a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif and b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/images/forecolor.gif differ diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js index 5052aad0c..242da2e07 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ar.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'يسار'; tinyMCELang['lang_insert_table_align_right'] = 'يمين'; tinyMCELang['lang_insert_table_align_middle'] = 'وسط'; tinyMCELang['lang_insert_table_class'] = 'Class'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragraph'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = 'Heading 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'لون النص'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Apply'; tinyMCELang['lang_theme_forecolor_desc'] = 'لون النص'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'إدراج رمز..ِ'; tinyMCELang['lang_theme_charmap_desc'] = 'إدراج رمز..ِ'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_fr.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_fr.js index a4419da09..26eab23d0 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_fr.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ca_fr.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Gauche'; tinyMCELang['lang_insert_table_align_right'] = 'Droit'; tinyMCELang['lang_insert_table_align_middle'] = 'Milieu'; tinyMCELang['lang_insert_table_class'] = 'Classe CSS'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Défaut'; tinyMCELang['lang_theme_paragraph'] = 'Paragraphe'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = 'Entête 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Choisir une couleur'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Appliquer'; tinyMCELang['lang_theme_forecolor_desc'] = 'Choisir la couleur d\'avant plan'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Sélectionner un charactère spécial'; tinyMCELang['lang_theme_charmap_desc'] = 'Insérer un charactère spécial'; tinyMCELang['lang_theme_visualaid_desc'] = 'Active/Désactive les lignes guides et les éléments invisibles'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Nom de l\'ancre'; tinyMCELang['lang_theme_anchor_desc'] = 'Insérer/Modifier une ancre'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Titre'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/cz.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/cz.js index 1bb36a631..e0cabca28 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/cz.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/cz.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Vlevo'; tinyMCELang['lang_insert_table_align_right'] = 'Vpravo'; tinyMCELang['lang_insert_table_align_middle'] = 'Na støed'; tinyMCELang['lang_insert_table_class'] = 'Class'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragraph'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = 'Heading 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Select a color'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Apply'; tinyMCELang['lang_theme_forecolor_desc'] = 'Select forecolor'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js index 6e8385659..18dfcbfeb 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/de.js @@ -48,6 +48,7 @@ tinyMCELang['lang_insert_table_align_right'] = 'Rechts'; tinyMCELang['lang_insert_table_align_middle'] = 'Zentriert'; tinyMCELang['lang_insert_table_class'] = 'Klasse'; tinyMCELang['lang_insert_table_delta_width'] = 30; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Normal'; tinyMCELang['lang_theme_paragraph'] = 'Standard-Text'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -62,6 +63,7 @@ tinyMCELang['lang_theme_h6'] = 'Überschrift 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Wähle eine Farbe'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Übernehmen'; tinyMCELang['lang_theme_forecolor_desc'] = 'Schriftfarbe ausw„hlen'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Wähle ein Sonderzeichen'; tinyMCELang['lang_theme_charmap_desc'] = 'Sonderzeichen einfügen'; tinyMCELang['lang_theme_visualaid_desc'] = 'Anzeige von Hilfslinien / unsichtbaren Elementen an/aus'; @@ -70,6 +72,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Ankername'; tinyMCELang['lang_theme_anchor_desc'] = 'Anker einfügen/bearbeiten'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/dk.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/dk.js index 7df836752..ef3860039 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/dk.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/dk.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Venstre'; tinyMCELang['lang_insert_table_align_right'] = 'Højre'; tinyMCELang['lang_insert_table_align_middle'] = 'Midt i'; tinyMCELang['lang_insert_table_class'] = 'Klasse'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Standard'; tinyMCELang['lang_theme_paragraph'] = 'Afsnit'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = 'Overskrift 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Vælg en farve'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Anvend'; tinyMCELang['lang_theme_forecolor_desc'] = 'Vælg forgrundsfarve'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Vælg specialkarakter'; tinyMCELang['lang_theme_charmap_desc'] = 'Indsæt specialkarakter'; tinyMCELang['lang_theme_visualaid_desc'] = 'Slå linjer/usynlige elementer til og fra'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Bogmærkets navn'; tinyMCELang['lang_theme_anchor_desc'] = 'Indsæt/rediger bogmærke'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js index c4aeb50bf..3467160a9 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/el.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = ' tinyMCELang['lang_insert_table_align_right'] = 'ÄåîéÜ'; tinyMCELang['lang_insert_table_align_middle'] = 'Óôï êÝíôñï'; tinyMCELang['lang_insert_table_class'] = 'ÊëÜóç'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'ÐñïêáèïñéóìÝíç'; tinyMCELang['lang_theme_paragraph'] = 'ÐáñÜãñáöïò'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = ' tinyMCELang['lang_theme_colorpicker_title'] = '×ñþìáôá'; tinyMCELang['lang_theme_colorpicker_apply'] = 'ÅöáñìïãÞ'; tinyMCELang['lang_theme_forecolor_desc'] = 'ÅðéëïãÞ ÷ñþìáôïò ãñáììáôïóåéñÜò'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'ÅðéëïãÞ åéäéêïý ÷áñáêôÞñá'; tinyMCELang['lang_theme_charmap_desc'] = 'ÅéóáãùãÞ åéäéêïý ÷áñáêôÞñá'; tinyMCELang['lang_theme_visualaid_desc'] = 'ÅìöÜíéóç/Áðüêñõøç ãñáììþí'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = ' tinyMCELang['lang_theme_anchor_desc'] = 'ÅéóáãùãÞ/Äéüñèùóç Üãêõñáò'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Ôßôëïò'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js index 7939b2669..3818d2a8d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/es.js @@ -48,6 +48,7 @@ tinyMCELang['lang_insert_table_delta_width'] = 10; tinyMCELang['lang_insert_table_delta_height'] = 20; tinyMCELang['lang_insert_image_delta_height'] = 10; tinyMCELang['lang_insert_table_class'] = 'Class'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragraph'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -62,6 +63,7 @@ tinyMCELang['lang_theme_h6'] = 'Heading 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Select a color'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Apply'; tinyMCELang['lang_theme_forecolor_desc'] = 'Select forecolor'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -70,6 +72,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js index a4817ba8e..c700b7099 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/fi.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Vasen'; tinyMCELang['lang_insert_table_align_right'] = 'Oikea'; tinyMCELang['lang_insert_table_align_middle'] = 'Keskelle'; tinyMCELang['lang_insert_table_delta_height'] = 20; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Oletus'; tinyMCELang['lang_theme_paragraph'] = 'Kappale'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -59,6 +60,7 @@ tinyMCELang['lang_theme_h6'] = 'Otsikko 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Valitse väri'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Aseta väri'; tinyMCELang['lang_theme_forecolor_desc'] = 'Valitse etuväri'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_insert_table_class'] = 'Luokka'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; @@ -68,6 +70,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js index b9809d6d5..00fd89ead 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/hu.js @@ -47,6 +47,7 @@ tinyMCELang['lang_insert_table_align_right'] = 'Jobbra'; tinyMCELang['lang_insert_table_align_middle'] = 'Középre'; tinyMCELang['lang_insert_table_class'] = 'Class'; tinyMCELang['lang_insert_table_delta_width'] = 55; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragraph'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -61,6 +62,7 @@ tinyMCELang['lang_theme_h6'] = 'Heading 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Select a color'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Apply'; tinyMCELang['lang_theme_forecolor_desc'] = 'Select forecolor'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -69,6 +71,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js index 7715069a1..4a53d1150 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/it.js @@ -46,6 +46,7 @@ tinyMCELang['lang_insert_table_align_right'] = 'Destra'; tinyMCELang['lang_insert_table_align_middle'] = 'Centro'; tinyMCELang['lang_insert_table_class'] = 'Classe'; tinyMCELang['lang_insert_table_delta_width'] = 10; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragrafo'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -60,6 +61,7 @@ tinyMCELang['lang_theme_h6'] = 'Intestazione 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Seleziona un colore'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Appplica'; tinyMCELang['lang_theme_forecolor_desc'] = 'Seleziona il colore'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Seleziona un carattere custom'; tinyMCELang['lang_theme_charmap_desc'] = 'Inserisci un carattere custom'; tinyMCELang['lang_theme_visualaid_desc'] = 'Mostra/nascondi linee guida e elementi invisibili'; @@ -68,6 +70,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Nome àncora'; tinyMCELang['lang_theme_anchor_desc'] = 'Inserisci/modifica àncora'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Titolo'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/jp.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/jp.js index 51646e034..520e8288d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/jp.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/jp.js @@ -60,11 +60,14 @@ tinyMCELang['lang_insert_table_width'] = '$BI}(B'; tinyMCELang['lang_insert_table_height'] = '$B9b$5(B'; tinyMCELang['lang_insert_table_border'] = '$B6-3&@~(B'; tinyMCELang['lang_insert_table_class'] = '$B%/%i%9(B'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = '$BI8=`(B'; tinyMCELang['lang_theme_colorpicker_title'] = '$B?\'$N;XDj(B'; tinyMCELang['lang_theme_colorpicker_apply'] = '$BE,MQ(B'; tinyMCELang['lang_theme_forecolor_desc'] = '$BA07J?\'(B'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js index 5b4a65a1d..bdb6a241e 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/ko.js @@ -46,6 +46,7 @@ tinyMCELang['lang_insert_table_align_left'] = ' tinyMCELang['lang_insert_table_align_right'] = '¿À¸¥ÂÊ'; tinyMCELang['lang_insert_table_align_middle'] = '°¡¿îµ¥'; tinyMCELang['lang_insert_table_class'] = 'Ŭ·¡½º'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = '±âº»°ª'; tinyMCELang['lang_theme_paragraph'] = '´Ü¶ô'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -60,6 +61,7 @@ tinyMCELang['lang_theme_h6'] = ' tinyMCELang['lang_theme_colorpicker_title'] = '»ö»ó ¼±ÅÃ'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Àû¿ë'; tinyMCELang['lang_theme_forecolor_desc'] = '±ÛÀÚ »ö»ó'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -68,6 +70,7 @@ tinyMCELang['lang_insert_anchor_name'] = ' tinyMCELang['lang_theme_anchor_desc'] = '¾ÞÄ¿ ³Ö±â/°íÄ¡±â'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Á¦¸ñ'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js index 862b4af04..e5de1fc3c 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/nl.js @@ -47,6 +47,7 @@ tinyMCELang['lang_insert_table_align_middle'] = 'Midden'; tinyMCELang['lang_insert_table_delta_width'] = 20; tinyMCELang['lang_insert_image_delta_height'] = 0; tinyMCELang['lang_insert_table_class'] = 'CSS-Stijl'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Standaard'; tinyMCELang['lang_theme_paragraph'] = 'Paragraaf'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -61,6 +62,7 @@ tinyMCELang['lang_theme_h6'] = 'Titel 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Kies een kleur'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Toepassen'; tinyMCELang['lang_theme_forecolor_desc'] = 'Selecteer voorgrondkleur'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Kies een bijzonder karakter'; tinyMCELang['lang_theme_charmap_desc'] = 'Voeg een bijzonder karakter in'; tinyMCELang['lang_theme_preview_desc'] = 'Toon de pagina in een nieuw venster'; @@ -70,6 +72,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anker naam'; tinyMCELang['lang_theme_anchor_desc'] = 'Anker toevoegen/wijzigen'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Titel'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js index 7d1ca3a16..4f6f43532 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/no.js @@ -47,6 +47,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Venstre'; tinyMCELang['lang_insert_table_align_right'] = 'Høyre'; tinyMCELang['lang_insert_table_align_middle'] = 'Midten'; tinyMCELang['lang_insert_table_class'] = 'Stil'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Normal'; tinyMCELang['lang_theme_paragraph'] = 'Paragraf'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -61,6 +62,7 @@ tinyMCELang['lang_theme_h6'] = 'Overskrift 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Velg en farge'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Bruk'; tinyMCELang['lang_theme_forecolor_desc'] = 'Velg forgrunnsfarge'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Velg spesialtegn'; tinyMCELang['lang_theme_charmap_desc'] = 'Sett inn spesialtegn'; tinyMCELang['lang_theme_visualaid_desc'] = 'Slå av/på usynlige elementer'; @@ -69,6 +71,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Ankernavn'; tinyMCELang['lang_theme_anchor_desc'] = 'Opprett/endre anker'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Tittel'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js index 22ba77556..69f3fda27 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pl.js @@ -44,6 +44,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Do lewej'; tinyMCELang['lang_insert_table_align_right'] = 'Do prawej'; tinyMCELang['lang_insert_table_align_middle'] = 'Do ¶rodka'; tinyMCELang['lang_insert_table_class'] = 'Klasa'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Domy¶lnie'; tinyMCELang['lang_theme_paragraph'] = 'Domy¶lna czcionka akapitu'; tinyMCELang['lang_theme_div'] = 'Linia pozioma'; @@ -58,6 +59,7 @@ tinyMCELang['lang_theme_h6'] = 'Nag tinyMCELang['lang_theme_colorpicker_title'] = 'Wybierz kolor'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Zastosuj'; tinyMCELang['lang_theme_forecolor_desc'] = 'Wybierz kolor dla czcionki'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Wybierz symbol'; tinyMCELang['lang_theme_charmap_desc'] = 'Wstaw symbol'; tinyMCELang['lang_theme_visualaid_desc'] = 'Poka¿ guidelines/niewidzialne elementy'; @@ -66,6 +68,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Nazwa zakotwiczenia'; tinyMCELang['lang_theme_anchor_desc'] = 'Wstaw/edytuj zakotwiczenie'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js new file mode 100644 index 000000000..7be9ec26d --- /dev/null +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/pt.js @@ -0,0 +1,76 @@ +// PT lang variables + +tinyMCELang['lang_theme_style_select'] = 'Estilos CSS'; +tinyMCELang['lang_theme_code_desc'] = 'Editar Fonte HTML'; +tinyMCELang['lang_theme_code_title'] = 'Editor de fonte HTML'; +tinyMCELang['lang_theme_code_save'] = 'Guardar'; +tinyMCELang['lang_theme_code_wordwrap'] = 'Translinear palavras'; +tinyMCELang['lang_theme_sub_desc'] = 'Subscrito'; +tinyMCELang['lang_theme_sup_desc'] = 'Superscrito'; +tinyMCELang['lang_theme_hr_desc'] = 'Inserir linha horizontal'; +tinyMCELang['lang_theme_removeformat_desc'] = 'Remover formatação'; +tinyMCELang['lang_theme_table_desc'] = 'Insere uma nova tabela'; +tinyMCELang['lang_theme_table_insert_row_before_desc'] = 'Inserir linha antes'; +tinyMCELang['lang_theme_table_insert_row_after_desc'] = 'Inserir linha depois'; +tinyMCELang['lang_theme_table_delete_row_desc'] = 'Eliminar linha'; +tinyMCELang['lang_theme_table_insert_col_before_desc'] = 'Inserir coluna antes'; +tinyMCELang['lang_theme_table_insert_col_after_desc'] = 'Inserir coluna depois'; +tinyMCELang['lang_theme_table_delete_col_desc'] = 'Remover coluna'; +tinyMCELang['lang_theme_custom1_desc'] = 'Descrição customizada aqui'; +tinyMCELang['lang_insert_image_border'] = 'Borda'; +tinyMCELang['lang_insert_image_dimensions'] = 'Dimensões'; +tinyMCELang['lang_insert_image_vspace'] = 'Espaçamento Vert.'; +tinyMCELang['lang_insert_image_hspace'] = 'Espaçamento Horiz.'; +tinyMCELang['lang_insert_image_align'] = 'Alinhamento'; +tinyMCELang['lang_insert_image_align_default'] = 'Por omissão'; +tinyMCELang['lang_insert_image_align_baseline'] = 'Linha de base'; +tinyMCELang['lang_insert_image_align_top'] = 'Topo'; +tinyMCELang['lang_insert_image_align_middle'] = 'Centrado'; +tinyMCELang['lang_insert_image_align_bottom'] = 'Fundo'; +tinyMCELang['lang_insert_image_align_texttop'] = 'Topo do Texto'; +tinyMCELang['lang_insert_image_align_absmiddle'] = 'Centrado absoluto'; +tinyMCELang['lang_insert_image_align_absbottom'] = 'Fundo absoluto'; +tinyMCELang['lang_insert_image_align_left'] = 'Esquerda'; +tinyMCELang['lang_insert_image_align_right'] = 'Direita'; +tinyMCELang['lang_insert_table_title'] = 'Inserir/Modificar tabela'; +tinyMCELang['lang_insert_table_width'] = 'Largura'; +tinyMCELang['lang_insert_table_height'] = 'Altura'; +tinyMCELang['lang_insert_table_cols'] = 'Colunas'; +tinyMCELang['lang_insert_table_rows'] = 'Linhas'; +tinyMCELang['lang_insert_table_cellspacing'] = 'Espaça
mento'; +tinyMCELang['lang_insert_table_cellpadding'] = 'Margem interior'; +tinyMCELang['lang_insert_table_border'] = 'Borda'; +tinyMCELang['lang_insert_table_align'] = 'Alinhamento'; +tinyMCELang['lang_insert_table_align_default'] = 'Por omissão'; +tinyMCELang['lang_insert_table_align_left'] = 'Esquerda'; +tinyMCELang['lang_insert_table_align_right'] = 'Direita'; +tinyMCELang['lang_insert_table_align_middle'] = 'Centrado'; +tinyMCELang['lang_insert_table_class'] = 'Classe de CSS'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; +tinyMCELang['lang_theme_fontdefault'] = 'Por omissão'; +tinyMCELang['lang_theme_paragraph'] = 'Parágrafo'; +tinyMCELang['lang_theme_div'] = 'Bloco HTML'; +tinyMCELang['lang_theme_address'] = 'Morada'; +tinyMCELang['lang_theme_pre'] = 'Pré formatado'; +tinyMCELang['lang_theme_h1'] = 'Título 1'; +tinyMCELang['lang_theme_h2'] = 'Título 2'; +tinyMCELang['lang_theme_h3'] = 'Título 3'; +tinyMCELang['lang_theme_h4'] = 'Título 4'; +tinyMCELang['lang_theme_h5'] = 'Título 5'; +tinyMCELang['lang_theme_h6'] = 'Título 6'; +tinyMCELang['lang_theme_colorpicker_title'] = 'Seleccione uma côr'; +tinyMCELang['lang_theme_colorpicker_apply'] = 'Aplicar'; +tinyMCELang['lang_theme_forecolor_desc'] = 'Seleccione côr da frente'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; +tinyMCELang['lang_theme_charmap_title'] = 'Seleccione símbolo customizado'; +tinyMCELang['lang_theme_charmap_desc'] = 'Inserir símbolo customizado'; +tinyMCELang['lang_theme_visualaid_desc'] = 'Ligar/Desligar guias/elementos invisíveis'; +tinyMCELang['lang_insert_anchor_title'] = 'Inserir/editar âncora'; +tinyMCELang['lang_insert_anchor_name'] = 'Nome da âncora'; +tinyMCELang['lang_theme_anchor_desc'] = 'Inserir/editar âncora'; +tinyMCELang['lang_theme_insert_link_titlefield'] = 'Título'; +tinyMCELang['lang_theme_clipboard_msg'] = 'Copiar/Cortar/Colar não está disponível em Mozilla e Firefox.\nPretende obter mais informação acerca deste assunto?'; +tinyMCELang['lang_theme_path'] = 'Path'; +tinyMCELang['lang_cut_desc'] = 'Cortar'; +tinyMCELang['lang_copy_desc'] = 'Copiar'; +tinyMCELang['lang_paste_desc'] = 'Colar'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js index bdd8fe220..10eb3a0d7 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/se.js @@ -47,6 +47,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Vänster'; tinyMCELang['lang_insert_table_align_right'] = 'Höger'; tinyMCELang['lang_insert_table_align_middle'] = 'Mitten'; tinyMCELang['lang_insert_table_class'] = 'Stil'; +tinyMCELang['lang_theme_font_size'] = 'Typsnittsstorlek'; tinyMCELang['lang_theme_fontdefault'] = 'Normal'; tinyMCELang['lang_theme_paragraph'] = 'Paragraf'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -61,6 +62,7 @@ tinyMCELang['lang_theme_h6'] = 'Rubrik 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Välj en färg'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Applicera'; tinyMCELang['lang_theme_forecolor_desc'] = 'Välj förgrundsfärg'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Välj bakgrundsfärg'; tinyMCELang['lang_theme_charmap_title'] = 'Välj specialtecken'; tinyMCELang['lang_theme_charmap_desc'] = 'Sätt in specialtecken'; tinyMCELang['lang_theme_visualaid_desc'] = 'Slå av/på osynliga element'; @@ -69,6 +71,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Ankarnamn'; tinyMCELang['lang_theme_anchor_desc'] = 'Skapa/redigera ankare'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Titel'; tinyMCELang['lang_theme_clipboard_msg'] = 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?'; +tinyMCELang['lang_theme_path'] = 'Sökväg'; tinyMCELang['lang_cut_desc'] = 'Klipput'; tinyMCELang['lang_copy_desc'] = 'Kopiera'; tinyMCELang['lang_paste_desc'] = 'Klistra in'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js index 893968de7..43789147d 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/tw.js @@ -68,8 +68,10 @@ tinyMCELang['lang_theme_code_wordwrap'] = 'Word wrap'; tinyMCELang['lang_theme_code_title'] = 'HTML ­ì©l½X'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Åܧó'; tinyMCELang['lang_theme_colorpicker_title'] = 'ÃC¦â'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = '¹w³]¦r«¬'; tinyMCELang['lang_theme_forecolor_desc'] = '¦r«¬ÃC¦â'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_h1'] = '¼ÐÃD1'; tinyMCELang['lang_theme_h2'] = '¼ÐÃD2'; tinyMCELang['lang_theme_h3'] = '¼ÐÃD3'; @@ -95,6 +97,7 @@ tinyMCELang['lang_underline_desc'] = ' tinyMCELang['lang_undo_desc'] = '´_­ì'; tinyMCELang['lang_unlink_desc'] = '¨ú®ø³sµ²'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js index 89b6c3ac3..267cc4ef0 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js @@ -45,6 +45,7 @@ tinyMCELang['lang_insert_table_align_left'] = 'Left'; tinyMCELang['lang_insert_table_align_right'] = 'Right'; tinyMCELang['lang_insert_table_align_middle'] = 'Middle'; tinyMCELang['lang_insert_table_class'] = 'Class'; +tinyMCELang['lang_theme_font_size'] = 'Font size'; tinyMCELang['lang_theme_fontdefault'] = 'Default'; tinyMCELang['lang_theme_paragraph'] = 'Paragraph'; tinyMCELang['lang_theme_div'] = 'Div'; @@ -58,7 +59,8 @@ tinyMCELang['lang_theme_h5'] = 'Heading 5'; tinyMCELang['lang_theme_h6'] = 'Heading 6'; tinyMCELang['lang_theme_colorpicker_title'] = 'Select a color'; tinyMCELang['lang_theme_colorpicker_apply'] = 'Apply'; -tinyMCELang['lang_theme_forecolor_desc'] = 'Select forecolor'; +tinyMCELang['lang_theme_forecolor_desc'] = 'Select text color'; +tinyMCELang['lang_theme_backcolor_desc'] = 'Select background color'; tinyMCELang['lang_theme_charmap_title'] = 'Select custom character'; tinyMCELang['lang_theme_charmap_desc'] = 'Insert custom character'; tinyMCELang['lang_theme_visualaid_desc'] = 'Toggle guidelines/invisible elements'; @@ -67,6 +69,7 @@ tinyMCELang['lang_insert_anchor_name'] = 'Anchor name'; tinyMCELang['lang_theme_anchor_desc'] = 'Insert/edit anchor'; tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title'; tinyMCELang['lang_theme_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?'; +tinyMCELang['lang_theme_path'] = 'Path'; tinyMCELang['lang_cut_desc'] = 'Cut'; tinyMCELang['lang_copy_desc'] = 'Copy'; tinyMCELang['lang_paste_desc'] = 'Paste'; diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/default/editor_ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/default/editor_ui.css index a21da9cd0..36150d707 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/default/editor_ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/default/editor_ui.css @@ -9,7 +9,7 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: hand + cursor: arrow; } .mceButtonOver { @@ -17,7 +17,7 @@ border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; - cursor: hand + cursor: arrow; } .mceButtonDown { @@ -25,7 +25,7 @@ border-right: 1px solid buttonhighlight; border-top: 1px solid buttonshadow; border-left: 1px solid buttonshadow; - cursor: hand + cursor: arrow; } .mceButtonSelected { @@ -34,7 +34,7 @@ border-top: 1px solid; border-left: 1px solid; border-color: #C0C0BB; - cursor: hand + cursor: arrow; } .mceButtonDisabled { @@ -44,7 +44,7 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: text + cursor: arrow; } .mceSeparator { diff --git a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_ui.css b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_ui.css index a21da9cd0..36150d707 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_ui.css +++ b/www/extras/tinymce/jscripts/tiny_mce/themes/simple/editor_ui.css @@ -9,7 +9,7 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: hand + cursor: arrow; } .mceButtonOver { @@ -17,7 +17,7 @@ border-left: 1px solid buttonhighlight; border-bottom: 1px solid buttonshadow; border-right: 1px solid buttonshadow; - cursor: hand + cursor: arrow; } .mceButtonDown { @@ -25,7 +25,7 @@ border-right: 1px solid buttonhighlight; border-top: 1px solid buttonshadow; border-left: 1px solid buttonshadow; - cursor: hand + cursor: arrow; } .mceButtonSelected { @@ -34,7 +34,7 @@ border-top: 1px solid; border-left: 1px solid; border-color: #C0C0BB; - cursor: hand + cursor: arrow; } .mceButtonDisabled { @@ -44,7 +44,7 @@ border-bottom: 1px solid; border-right: 1px solid; border-color: #F0F0EE; - cursor: text + cursor: arrow; } .mceSeparator { diff --git a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js index 2c2b1f4c9..dbf146c47 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js +++ b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce.js @@ -6,4 +6,4 @@ * @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=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;}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');document.write('');document.write('');var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i');}}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._cleanupHTML(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["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")cleanedHTML=tinyMCE.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'+''+''+'blank_page'+''+''+''+''+'';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","
","gi");content=tinyMCE.regexpReplace(content,"\r","
","gi");content=tinyMCE.regexpReplace(content,"\n","
","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].document.body.onbeforepaste=patchFunc;document.frames[editor_id].document.body.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,"","","gi");content=tinyMCE.regexpReplace(content,"","","gi");contentElement.innerHTML=content;var elms=contentElement.getElementsByTagName("img");for(var i=0;i");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.selectedElement=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;i18&&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;i0){for(var i=0;i ";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"";if(node.hasChildNodes()){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="";else output+="<"+elementName+elementAttribs+">";for(var i=0;i
";else output+="";}else output+="<"+elementName+elementAttribs+" />";return output;case 3:if(node.parentNode.nodeName.toLowerCase()=="script")return node.nodeValue;return this.convertStringToXML(node.nodeValue);case 8:return "";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}}function TinyMCE_convertStringToXML(html_data){var output="";for(var i=0;i','','gi');var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])alert("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'


','
');html=tinyMCE.regexpReplace(html,'

 


 

','
');if(!tinyMCE.isMSIE){html=html.replace(new RegExp('','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\n");html=html.replace(new RegExp('
','g'),"
\n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('

 

','g');html=html.replace(re,"
");}if(html=="
"||html=="

 

")html="";html=tinyMCE._customCleanup(on_save?"get_from_editor":"insert_to_editor",html);if(tinyMCE.settings["preformatted"])return "
"+html+"
";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',onclick);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=strTok2.length){for(var i=0;i=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return url_to_relative;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outputString+="../";for(var i=breakPoint-1;i0);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');}function TinyMCE_importPluginLanguagePack(theme_name,valid_languages){var lang="uk";valid_languages=valid_languages.split(',');for(var i=0;i');}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,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;";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

','g');html_content=html_content.replace(re,"
");}doc.body.innerHTML=html_content;if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<\/o:p>","
");html=tinyMCE.regexpReplace(html," <\/o:p>","");html=tinyMCE.regexpReplace(html,"","");html=tinyMCE.regexpReplace(html,"

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

<\/p>\r\n

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

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

\s*(

\s*)?","

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

");}doc.body.innerHTML=html;}}function TinyMCE__getElementById(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j0){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;i0)tinyMCE.cssClasses=output;return output;}function TinyMCE_regexpReplace(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);}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.contentWindow.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.getFocusElement().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('
'+rng.htmlText+"
");tinyMCE.triggerNodeChange();return;}}}switch(command){case "Cut":case "Copy":case "Paste":var cmdFailed=false;eval('try {this.contentDocument.execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.getLang('lang_clipboard_msg')))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else 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=getAttrib(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.toLowerCase()=="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, true);");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.settings,this.contentDocument.body,this.visualAid);}this.contentDocument.body.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;x0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":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",false,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;xcols)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.pixelHeight;}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.tableElement,'height',height);tinyMCE.setAttrib(tinyMCE.tableElement,'align',align,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+='";for(var x=0;x';else html+='";}html+="";}html+="
';html+=" 
";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 numcells=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;inumCols)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;y0)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.innerHTML;if(newHTML!=this.undoLevels[this.undoLevels.length-1]){if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var i=0;i0){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.execCommand(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')return templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;}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=''+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.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;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.settings['visual'];this.oldTargetElement=replace_element.cloneNode(true);this.formTargetElementId=form_element_name;if(tinyMCE.settings['debug'])html+='';else html+='';html+='';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!=null&&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(){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.isMSIE5_0=this.isMSIE&&(navigator.userAgent.indexOf('MSIE 5.0')!=-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.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.addEvent=TinyMCE_addEvent;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.getParentBlockElement=TinyMCE_getParentBlockElement;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._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.setWindowArg=TinyMCE_setWindowArg;this.getCSSClasses=TinyMCE_getCSSClasses;this.regexpReplace=TinyMCE_regexpReplace;this.cleanupEventStr=TinyMCE_cleanupEventStr;this.getAbsPosition=TinyMCE_getAbsPosition;}function TinyMCE_init(settings){var theme;this.settings=settings;function defParam(key,def_val){settings[key]=tinyMCE.getParam(key,def_val);}if(typeof(document.execCommand)=='undefined')return;if(!tinyMCE.baseURL){var elements=document.getElementsByTagName('script');for(var i=0;i');document.write('');document.write('');var themePlugins=tinyMCE.getParam('plugins','',true,',');if(this.settings['plugins']!=''){for(var i=0;i');}}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._cleanupHTML(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,skip_callback){for(var instanceName in tinyMCE.instances){var instance=tinyMCE.instances[instanceName];tinyMCE.settings['preformatted']=false;if(typeof(skip_cleanup)=="undefined")skip_cleanup=false;if(typeof(skip_callback)=="undefined")skip_callback=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["encoding"]=="xml"||tinyMCE.settings["encoding"]=="html")cleanedHTML=tinyMCE.convertStringToXML(cleanedHTML);if(!skip_callback&&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","gi");content=tinyMCE.regexpReplace(content,"\r","
","gi");content=tinyMCE.regexpReplace(content,"\n","
","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].document.body.onbeforepaste=patchFunc;document.frames[editor_id].document.body.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,"","","gi");content=tinyMCE.regexpReplace(content,"","","gi");contentElement.innerHTML=content;var elms=contentElement.getElementsByTagName("img");for(var i=0;i");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;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.contentWindow.document.body,true,tinyMCE.settings['visual']);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;i18&&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;i0){for(var i=0;i ";if(tinyMCE.isMSIE&&elementName=="script")return "<"+elementName+elementAttribs+">"+node.text+"";if(node.hasChildNodes()){if(elementName=="p"&&tinyMCE.cleanup_force_br_newlines)output+="";else output+="<"+elementName+elementAttribs+">";for(var i=0;i
";else output+="";}else output+="<"+elementName+elementAttribs+" />";return output;case 3:if(node.parentNode.nodeName.toLowerCase()=="script")return node.nodeValue;return this.convertStringToXML(node.nodeValue);case 8:return "";default:return "[UNKNOWN NODETYPE "+node.nodeType+"]";}}function TinyMCE_convertStringToXML(html_data){var output="";for(var i=0;i','','gi');var html=this.cleanupNode(element);if(tinyMCE.settings['debug'])alert("Cleanup process executed in: "+(new Date().getTime()-startTime)+" ms.");html=tinyMCE.regexpReplace(html,'


','
');html=tinyMCE.regexpReplace(html,'

 


 

','
');if(!tinyMCE.isMSIE){html=html.replace(new RegExp('','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\n");html=html.replace(new RegExp('
','g'),"
\n");}if(tinyMCE.settings['force_br_newlines']){var re=new RegExp('

 

','g');html=html.replace(re,"
");}if(html=="
"||html=="

 

")html="";html=tinyMCE._customCleanup(on_save?"get_from_editor":"insert_to_editor",html);if(tinyMCE.settings["preformatted"])return "
"+html+"
";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',onclick);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=strTok2.length){for(var i=0;i=strTok2.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(strTok1.length=strTok1.length||strTok1[i]!=strTok2[i]){breakPoint=i+1;break;}}}if(breakPoint==1)return url_to_relative;for(var i=0;i<(strTok1.length-(breakPoint-1));i++)outputString+="../";for(var i=breakPoint-1;i0);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');}function TinyMCE_importPluginLanguagePack(theme_name,valid_languages){var lang="uk";valid_languages=valid_languages.split(',');for(var i=0;i');}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){var html,width,height,x,y,resizable,scrollbars,url;args['mce_template_file']=template['file'];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'];for(var name in args)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","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",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;";window.showModalDialog(url,window,features);}else{var win=window.open(url,"mcePopup","top="+y+",left="+x+",scrollbars="+scrollbars+",dialog=yes,minimizable="+resizable+",modal=yes,width="+width+",height="+height+",resizable="+resizable);eval('try { win.resizeTo(width, height); } catch(e) { }');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

','g');html_content=html_content.replace(re,"
");}doc.body.innerHTML=html_content;if(tinyMCE.isMSIE&&tinyMCE.settings['fix_content_duplication']){var paras=doc.getElementsByTagName("P");for(var i=0;i<\/o:p>","
");html=tinyMCE.regexpReplace(html," <\/o:p>","");html=tinyMCE.regexpReplace(html,"","");html=tinyMCE.regexpReplace(html,"

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

<\/p>\r\n

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

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

\s*(

\s*)?","

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

");}doc.body.innerHTML=html;}}function TinyMCE__getElementById(element_id){var elm=document.getElementById(element_id);if(!elm){for(var j=0;j0){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;i0)tinyMCE.cssClasses=output;return output;}function TinyMCE_regexpReplace(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);}function TinyMCE_cleanupEventStr(str){str=""+str;str=str.replace('function anonymous()\n{\n','');str=str.replace('\n}','');return str;}function TinyMCE_getAbsPosition(node){var x=0,y=0;var pos=new Object();var parentNode=node;while(parentNode){x+=parentNode.offsetLeft;y+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}pos.absLeft=x;pos.absTop=y;return pos;}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;this._insertPara=TinyMCEControl__insertPara;this._insertSpace=TinyMCEControl__insertSpace;this.selectNode=TinyMCEControl_selectNode;}function TinyMCEControl_selectNode(node,collapse,select_text_node){if(typeof(collapse)=="undefined")collapse=true;if(typeof(select_text_node)=="undefined")select_text_node=false;if(tinyMCE.isMSIE){var rng=this.contentWindow.document.body.createTextRange();rng.moveToElementText(node);if(collapse)sel.collapse(false);rng.select();}else{var rng=this.contentWindow.document.createRange();var sel=this.contentWindow.getSelection();if(select_text_node&&(node.firstChild&&node.firstChild.nodeType==3))rng.selectNodeContents(node.firstChild);else rng.selectNodeContents(node);if(collapse)rng.collapse(true);sel.removeAllRanges();sel.addRange(rng);}var pos=tinyMCE.getAbsPosition(node);var doc=this.contentWindow.document;var scrollX=doc.body.scrollLeft+doc.documentElement.scrollLeft;var scrollY=doc.body.scrollTop+doc.documentElement.scrollTop;var height=tinyMCE.isMSIE?document.getElementById(this.editorId).style.pixelHeight:parseInt(this.targetElement.style.height);if(!(node.absTop>scrollY&&node.absTop<(scrollY-25+height)))this.contentWindow.scrollTo(pos.absLeft,pos.absTop-height+25);tinyMCE.selectedElement=null;if(node.nodeType==1)tinyMCE.selectedElement=node;}function TinyMCEControl__insertPara(){var doc=this.contentWindow.document;var sel=this.contentWindow.getSelection();var win=this.contentWindow;var rngBefore=doc.createRange();rngBefore.setStart(sel.anchorNode,sel.anchorOffset);rngBefore.collapse(true);var rngAfter=doc.createRange();rngAfter.setStart(sel.focusNode,sel.focusOffset);rngAfter.collapse(true);var direct=rngBefore.compareBoundaryPoints(rngBefore.START_TO_END,rngAfter)<0;var startNode=direct?sel.anchorNode:sel.focusNode;var startOffset=direct?sel.anchorOffset:sel.focusOffset;var endNode=direct?sel.focusNode:sel.anchorNode;var endOffset=direct?sel.focusOffset:sel.anchorOffset;var startBlock=tinyMCE.getParentBlockElement(startNode);var endBlock=tinyMCE.getParentBlockElement(endNode);if((startBlock!=null&&startBlock.nodeName.toLowerCase()=="li")||(endBlock!=null&&endBlock.nodeName.toLowerCase()=="li"))return false;if((startBlock!=null&&startBlock.nodeName.toLowerCase()=="table")||(endBlock!=null&&endBlock.nodeName.toLowerCase()=="table"))startBlock=endBlock=null;var paraBefore=(startBlock!=null&&startBlock.nodeName.toLowerCase()=="p")?startBlock.cloneNode(false):doc.createElement("p");var paraAfter=(endBlock!=null&&endBlock.nodeName.toLowerCase()=="p")?endBlock.cloneNode(false):doc.createElement("p");var startChop=startNode;var endChop=endNode;while((startChop.previousSibling&&startChop.previousSibling.nodeName.toLowerCase()!='p')||(startChop.parentNode&&startChop.parentNode!=startBlock&&startChop.parentNode.nodeType!=9))startChop=startChop.previousSibling?startChop.previousSibling:startChop.parentNode;while((endChop.nextSibling&&endChop.nextSibling.nodeName.toLowerCase()!='p')||(endChop.parentNode&&endChop.parentNode!=endBlock&&endChop.parentNode.nodeType!=9))endChop=endChop.nextSibling?endChop.nextSibling:endChop.parentNode;rngBefore.setStartBefore(startChop);rngBefore.setEnd(startNode,startOffset);paraBefore.appendChild(rngBefore.cloneContents());rngAfter.setEndAfter(endChop);rngAfter.setStart(endNode,endOffset);paraAfter.appendChild(rngAfter.cloneContents());if(paraBefore.innerHTML=="")paraBefore.innerHTML=" ";if(paraAfter.innerHTML=="")paraAfter.innerHTML=" ";var rng=doc.createRange();if(!startChop.previousSibling&&startChop.parentNode.nodeName.toLowerCase()=='p')rng.setStartBefore(startChop.parentNode);else{if(rngBefore.startContainer.nodeName.toLowerCase()=='p'&&rngBefore.startOffset==0)rng.setStartBefore(rngBefore.startContainer);else rng.setStart(rngBefore.startContainer,rngBefore.startOffset);}if(!endChop.nextSibling&&endChop.parentNode.nodeName.toLowerCase()=='p')rng.setEndAfter(endChop.parentNode);else rng.setEnd(rngAfter.endContainer,rngAfter.endOffset);rng.deleteContents();rng.insertNode(paraAfter);rng.insertNode(paraBefore);this.selectNode(paraAfter,true,true);return true;}function TinyMCEControl__insertSpace(){return true;}function TinyMCEControl_autoResetDesignMode(){if(!tinyMCE.isMSIE&&tinyMCE.settings['auto_reset_designmode']){var sel=this.contentWindow.getSelection();if(sel.rangeCount==0)this.contentWindow.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.getFocusElement().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('
'+rng.htmlText+"
");tinyMCE.triggerNodeChange();return;}}}switch(command){case "mceSelectNode":this.selectNode(value);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=value;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.selectNode(parentNode,false);tinyMCE.triggerNodeChange();tinyMCE.selectedNode=parentNode;return;}parentNode=parentNode.parentNode;}break;case "HiliteColor":if(tinyMCE.isGecko){this.contentDocument.execCommand("useCSS",false,false);this.contentDocument.execCommand('hilitecolor',false,value);this.contentDocument.execCommand("useCSS",false,true);}else this.contentDocument.execCommand('backcolor',false,value);break;case "Cut":case "Copy":case "Paste":var cmdFailed=false;eval('try {this.contentDocument.execCommand(command, user_interface, value);} catch (e) {cmdFailed = true;}');if(tinyMCE.isGecko&&cmdFailed){if(confirm(tinyMCE.getLang('lang_clipboard_msg')))window.open('http://www.mozilla.org/editor/midasdemo/securityprefs.html','mceExternal');return;}else 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=getAttrib(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.toLowerCase()=="img")tinyMCE.imgElement=tinyMCE.selectedElement;if(tinyMCE.imgElement){var imgName=getAttrib(tinyMCE.imgElement,'name');if(imgName.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, true);");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.settings,this.contentDocument.body,this.visualAid);}this.contentDocument.body.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;tinyMCE.triggerNodeChange();break;case "mceAnchor":if(!user_interface){var aElm=tinyMCE.getParentElement(this.getFocusElement(),"a","name");if(aElm){if(value==null||value==""){if(tinyMCE.isMSIE){aElm.outerHTML=aElm.innerHTML;}else{var rng=aElm.ownerDocument.createRange();rng.setStartBefore(aElm);rng.setEndAfter(aElm);rng.deleteContents();rng.insertNode(rng.createContextualFragment(aElm.innerHTML));}}else 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;x0){value=tinyMCE.replaceVar(value,"selection",selectedText);tinyMCE.execCommand('mceInsertContent',false,value);}tinyMCE.triggerNodeChange();break;case "mceSetAttribute":if(typeof(value)=='object'){var targetElms=(typeof(value['targets'])=="undefined")?"p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address":value['targets'];var targetNode=tinyMCE.getParentElement(this.getFocusElement(),targetElms);if(targetNode){targetNode.setAttribute(value['name'],value['value']);tinyMCE.triggerNodeChange();}}break;case "mceSetCSSClass":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(tinyMCE.selectedNode)tinyMCE.selectedElement=tinyMCE.selectedNode;if(selectedText&&!tinyMCE.selectedNode){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#");for(var x=0;xcols)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.pixelHeight;}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.tableElement,'height',height);tinyMCE.setAttrib(tinyMCE.tableElement,'align',align,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+='";for(var x=0;x';else html+='";}html+="";}html+="
';html+=" 
";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 numcells=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;inumCols)numCols=tableElement.rows[y].cells.length;}if(numCols<=1){if(tinyMCE.isGecko)this.selectNode(selElm);tableElement.parentNode.removeChild(tableElement);tinyMCE.triggerNodeChange();return;}for(var y=0;y0)selElm=tableElement.rows[0].cells[index-1];if(tinyMCE.isGecko)this.selectNode(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.innerHTML;if(newHTML!=this.undoLevels[this.undoLevels.length-1]){if(customUndoLevels!=-1&&this.undoLevels.length>customUndoLevels){for(var i=0;i0){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.execCommand(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_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')return templateFunction;}return 'TinyMCE_'+tinyMCE.settings['theme']+suffix;}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=''+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.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;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.settings['visual'];this.formTargetElementId=form_element_name;if(replace_element.nodeName.toLowerCase()=="textarea")this.startContent=replace_element.value;else this.startContent=replace_element.innerHTML;if(replace_element.nodeName.toLowerCase()!="textarea"){this.oldTargetElement=replace_element.cloneNode(true);if(tinyMCE.settings['debug'])html+='';else html+='';html+='';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;}else{html+='';this.oldTargetElement=replace_element;if(!tinyMCE.settings['debug'])this.oldTargetElement.style.display="none";if(!tinyMCE.isMSIE){var rng=replace_element.ownerDocument.createRange();rng.setStartBefore(replace_element);var fragment=rng.createContextualFragment(html);replace_element.parentNode.insertBefore(fragment,replace_element);}else replace_element.insertAdjacentHTML("beforeBegin",html);}var dynamicIFrame=false;var tElm=document.getElementById(this.editorId);if(!tinyMCE.isMSIE){if(tElm&&tElm.nodeName.toLowerCase()=="span"){tElm=tinyMCE._createIFrame(tElm);dynamicIFrame=true;}this.targetElement=tElm;this.contentDocument=tElm.contentDocument;this.contentWindow=tElm.contentWindow;}else{if(tElm&&tElm.nodeName.toLowerCase()=="span")tElm=tinyMCE._createIFrame(tElm);else tElm=document.frames[this.editorId];this.targetElement=tElm;this.contentDocument=tElm.window.document;this.contentWindow=tElm.window;this.contentDocument.designMode="on";}var doc=this.contentDocument;if(dynamicIFrame){var html=""+''+''+''+'blank_page'+''+''+''+''+'';try{this.contentWindow.document.designMode="on";doc.open();doc.write(html);doc.close();}catch(e){this.contentWindow.document.location.href=tinyMCE.baseURL+"/blank.htm";}}if(tinyMCE.isMSIE)window.setTimeout("TinyMCE_addEventHandlers('"+this.editorId+"');",1);tinyMCE.setupContent(this.editorId);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!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="img")elm=tinyMCE.selectedElement;}return elm;}var tinyMCE=new TinyMCE();var tinyMCELang=new Array(); \ No newline at end of file diff --git a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_popup.js b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_popup.js index 106b29689..d5fc4068a 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_popup.js +++ b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_popup.js @@ -1,13 +1,22 @@ -// Get tinyMCE reference +// Get tinyMCE window var win = window.opener ? window.opener : window.dialogArguments; -// Setup window openerer -if (!window.opener) - window.opener = win; +var tinyMCE = null; +var tinyMCELang = null; + +// Use top window if not defined +if (!win) + win = top; var tinyMCE = win.tinyMCE; var tinyMCELang = win.tinyMCELang; +if (!tinyMCE) + alert("tinyMCE object reference not found from popup."); + +// Setup window openerer +window.opener = win; + // Setup title var re = new RegExp('{|\\\$|}', 'g'); var title = document.title.replace(re, ""); @@ -22,14 +31,26 @@ if (tinyMCELang['lang_dir']) document.dir = tinyMCELang['lang_dir']; function TinyMCEPlugin_onLoad() { - document.body.innerHTML = tinyMCE.applyTemplate(document.body.innerHTML, tinyMCE.windowArgs); + if (tinyMCE.getWindowArg('mce_replacevariables', true)) + document.body.innerHTML = tinyMCE.applyTemplate(document.body.innerHTML, tinyMCE.windowArgs); + + // Auto resize window + if (tinyMCE.getWindowArg('mce_windowresize', true)) { + var width = tinyMCE.isMSIE ? document.body.offsetWidth : window.innerWidth; + var height = tinyMCE.isMSIE ? document.body.offsetHeight : window.innerHeight; + var dx = document.body.scrollWidth - width; + var dy = document.body.scrollHeight - height; + + if (tinyMCE.isMSIE) { + window.dialogWidth = (parseInt(window.dialogWidth) + dx) + "px"; + window.dialogHeight = (parseInt(window.dialogHeight) + dy + 3) + "px"; + } else + window.resizeBy(dx + 15, dy + 15); + } } // Add onload trigger -if (tinyMCE.isMSIE) - attachEvent("onload", TinyMCEPlugin_onLoad); -else - addEventListener("load", TinyMCEPlugin_onLoad, false); +tinyMCE.addEvent(window, "load", TinyMCEPlugin_onLoad); // Output Popup CSS class document.write(''); diff --git a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_src.js b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_src.js index a212065c7..4a2f7ae33 100644 --- a/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_src.js +++ b/www/extras/tinymce/jscripts/tiny_mce/tiny_mce_src.js @@ -15,6 +15,7 @@ function TinyMCE() { // Browser check this.isMSIE = (navigator.appName == "Microsoft Internet Explorer"); this.isMSIE5 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5') != -1); + this.isMSIE5_0 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 5.0') != -1); this.isGecko = navigator.userAgent.indexOf('Gecko') != -1; // TinyMCE editor id instance counter @@ -30,7 +31,6 @@ function TinyMCE() { 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; @@ -38,6 +38,7 @@ function TinyMCE() { this.switchClassSticky = TinyMCE_switchClassSticky; this.restoreClass = TinyMCE_restoreClass; this.setClassLock = TinyMCE_setClassLock; + this.addEvent = TinyMCE_addEvent; this.onLoad = TinyMCE_onLoad; this.removeMCEControl = TinyMCE_removeMCEControl; this._initCleanup = TinyMCE__initCleanup; @@ -52,6 +53,7 @@ function TinyMCE() { this.insertImage = TinyMCE_insertImage; this.getElementByAttributeValue = TinyMCE_getElementByAttributeValue; this.getElementsByAttributeValue = TinyMCE_getElementsByAttributeValue; + this.getParentBlockElement = TinyMCE_getParentBlockElement; this.getParentElement = TinyMCE_getParentElement; this.getParam = TinyMCE_getParam; this.getLang = TinyMCE_getLang; @@ -71,25 +73,32 @@ function TinyMCE() { 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.getInstanceById = TinyMCE_getInstanceById; this.getEditorId = TinyMCE_getEditorId; this.queryInstanceCommandValue = TinyMCE_queryInstanceCommandValue; this.queryInstanceCommandState = TinyMCE_queryInstanceCommandState; this.getWindowArg = TinyMCE_getWindowArg; + this.setWindowArg = TinyMCE_setWindowArg; this.getCSSClasses = TinyMCE_getCSSClasses; this.regexpReplace = TinyMCE_regexpReplace; this.cleanupEventStr = TinyMCE_cleanupEventStr; + this.getAbsPosition = TinyMCE_getAbsPosition; } function TinyMCE_init(settings) { var theme; + this.settings = settings; + + function defParam(key, def_val) { + settings[key] = tinyMCE.getParam(key, def_val); + } + // Check if valid browser has execcommand support if (typeof(document.execCommand) == 'undefined') return; @@ -122,46 +131,49 @@ function TinyMCE_init(settings) { 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,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", ""); + // Set default values on settings + defParam("mode", "none"); + defParam("theme", "default"); + defParam("plugins", "", true); + defParam("language", "uk"); + defParam("docs_language", this.settings['language']); + defParam("elements", ""); + defParam("textarea_trigger", "mce_editable"); + defParam("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"); + defParam("extended_valid_elements", ""); + defParam("invalid_elements", ""); + defParam("encoding", ""); + defParam("urlconvertor_callback", "TinyMCE_convertURL"); + defParam("save_callback", ""); + defParam("debug", false); + defParam("force_br_newlines", false); + defParam("force_p_newlines", true); + defParam("add_form_submit_trigger", true); + defParam("relative_urls", true); + defParam("remove_script_host", true); + defParam("focus_alert", true); + defParam("document_base_url", "" + document.location.href); + defParam("visual", true); + defParam("visual_table_style", "border: 1px dashed #BBBBBB"); + defParam("setupcontent_callback", ""); + defParam("fix_content_duplication", true); + defParam("custom_undo_redo", true); + defParam("custom_undo_redo_levels", -1); + defParam("custom_undo_redo_keyboard_shortcuts", true); + defParam("verify_css_classes", true); + defParam("trim_span_elements", true); + defParam("verify_html", true); + defParam("apply_source_formatting", false); + defParam("directionality", "ltr"); + defParam("auto_cleanup_word", false); + defParam("cleanup_on_startup", false); + defParam("inline_styles", false); + defParam("convert_newlines_to_brs", false); + defParam("auto_reset_designmode", false); + defParam("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,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"); + defParam("cleanup_callback", ""); + defParam("add_unload_trigger", true); + defParam("ask", false); // Setup baseHREF var baseHREF = tinyMCE.settings['document_base_url']; @@ -210,8 +222,6 @@ function TinyMCE_init(settings) { } else this.settings['editor_css'] = tinyMCE.baseURL + "/themes/" + theme + "/editor_ui.css"; - this.settings['ask'] = tinyMCE.getParam("ask", false); - if (tinyMCE.settings['debug']) { var msg = "Debug: \n"; @@ -226,11 +236,7 @@ function TinyMCE_init(settings) { // Init HTML cleanup this._initCleanup(); - - if (this.isMSIE) - attachEvent("onload", TinyMCE_onLoad); - else - addEventListener("load", TinyMCE_onLoad, false); + tinyMCE.addEvent(window, "load", TinyMCE_onLoad); document.write(''); document.write(''); @@ -283,7 +289,7 @@ function TinyMCE_createMCEControl(settings) { return new TinyMCEControl(settings); } -function TinyMCE_triggerSave(skip_cleanup) { +function TinyMCE_triggerSave(skip_cleanup, skip_callback) { // Cleanup and set all form fields for (var instanceName in tinyMCE.instances) { var instance = tinyMCE.instances[instanceName]; @@ -293,7 +299,12 @@ function TinyMCE_triggerSave(skip_cleanup) { if (typeof(skip_cleanup) == "undefined") skip_cleanup = false; + // Default to false + if (typeof(skip_callback) == "undefined") + skip_callback = 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); //var cleanedHTML = tinyMCE._cleanupHTML(instance.contentWindow.document, tinyMCE.settings, instance.contentWindow.document.body, false, true); @@ -301,7 +312,7 @@ function TinyMCE_triggerSave(skip_cleanup) { if (tinyMCE.settings["encoding"] == "xml" || tinyMCE.settings["encoding"] == "html") cleanedHTML = tinyMCE.convertStringToXML(cleanedHTML); - if (tinyMCE.settings['save_callback'] != "") + if (!skip_callback && tinyMCE.settings['save_callback'] != "") var content = eval(tinyMCE.settings['save_callback'] + "(instance.formTargetElementId,cleanedHTML,instance.contentWindow.document.body);"); // Use callback content if available @@ -315,7 +326,6 @@ function TinyMCE_triggerSave(skip_cleanup) { cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, """, """, "gi"); cleanedHTML = tinyMCE.regexpReplace(cleanedHTML, "^", "^", "gi"); -//alert(cleanedHTML); instance.formElement.value = cleanedHTML; } } @@ -337,25 +347,29 @@ function TinyMCE__convertOnClick(node) { } } -function TinyMCE_resetForm(e) { - var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target; +function TinyMCE_resetForm(form_index) { + var formObj = document.forms[form_index]; for (var instanceName in tinyMCE.instances) { var instance = tinyMCE.instances[instanceName]; for (var i=0; i' - + '' - + '' - + 'blank_page' - + '' - + '' - + '' - + '' - + ''; - - 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"; - } - } - - // 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); - - //window.setTimeout("tinyMCE.setupContent('" + editor_id + "');", (tinyMCE.isMSIE ? 1 : 1000)); - 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); + var content = instance.startContent; // Not loaded correctly hit it again, Mozilla bug #997860 if (!tinyMCE.isMSIE && doc.title != "blank_page") { @@ -583,14 +546,6 @@ function TinyMCE_setupContent(editor_id) { 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; - // Replace new line characters to BRs if (tinyMCE.settings['convert_newlines_to_brs']) { content = tinyMCE.regexpReplace(content, "\r\n", "
", "gi"); @@ -690,7 +645,10 @@ function TinyMCE_setupContent(editor_id) { // Setup element references var parentElm = document.getElementById(instance.editorId + '_parent'); - instance.formElement = parentElm.lastChild; + if (parentElm.lastChild.nodeName.toLowerCase() == "input") + instance.formElement = parentElm.lastChild; + else + instance.formElement = parentElm.nextSibling; if (tinyMCE.settings['handleNodeChangeCallback']) { var undoIndex = -1; @@ -731,16 +689,22 @@ function TinyMCE_handleEvent(e) { formObj.elements[i].disabled = true; } - TinyMCE_triggerSave(); + tinyMCE.triggerSave(); return; case "reset": - TinyMCE_resetForm(e); + var formObj = tinyMCE.isMSIE ? window.event.srcElement : e.target; + + for (var i=0; i 0) { for (var i=0; i "; @@ -1951,7 +2004,7 @@ function TinyMCE_getElementsByAttributeValue(node, element_name, attrib, value) var elements = new Array(); if (node && node.nodeName.toLowerCase() == element_name) { - if (node.getAttribute(attrib).indexOf(value) != -1) + if (node.getAttribute(attrib) && node.getAttribute(attrib).indexOf(value) != -1) elements[elements.length] = node; } @@ -1966,6 +2019,20 @@ function TinyMCE_getElementsByAttributeValue(node, element_name, attrib, value) return elements; } +function TinyMCE_getParentBlockElement(node) { + var re = new RegExp("^(h1|h2|h3|h4|h5|h6|p|div|address|pre|form|table|li|ol|ul)$", "i"); + + // Search up the tree for block element + while (node) { + if (re.test(node.nodeName)) + return node; + + node = node.parentNode; + } + + return null; +} + function TinyMCE_getParentElement(node, names, attrib_name, attrib_value) { var namesAr = names.split(','); @@ -2005,6 +2072,16 @@ function TinyMCE_convertURL(url, node, on_save) { if (!tinyMCE.isMSIE && !on_save && url.indexOf("://") == -1 && url.charAt(0) != '/') return tinyMCE.settings['base_href'] + url; + // Handle absolute url anchors + if (!tinyMCE.settings['relative_urls']) { + var urlParts = tinyMCE.parseURL(url); + var baseUrlParts = tinyMCE.parseURL(tinyMCE.settings['base_href']); + + // If anchor and path is the same page + if (urlParts['anchor'] && urlParts['path'] == baseUrlParts['path']) + return "#" + urlParts['anchor']; + } + // Convert to relative urls if (on_save && tinyMCE.settings['relative_urls']) { var urlParts = tinyMCE.parseURL(url); @@ -2083,6 +2160,10 @@ function TinyMCE_parseURL(url_str) { // Get path lastPos = pos; pos = url_str.indexOf('?', lastPos); + + if (pos == -1) + pos = url_str.indexOf('#', lastPos); + if (pos == -1) pos = url_str.length; @@ -2091,9 +2172,17 @@ function TinyMCE_parseURL(url_str) { // 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; @@ -2150,6 +2239,10 @@ function TinyMCE_convertAbsoluteURLToRelativeURL(base_url, url_to_relative) { function TinyMCE_getParam(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]", ""); @@ -2252,7 +2345,7 @@ function TinyMCE__customCleanup(type, content) { function TinyMCE_getContent(editor_id) { if (typeof(editor_id) != "undefined") - tinyMCE.selectedInstance = tinyMCE._getInstanceById(editor_id); + 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); @@ -2309,9 +2402,10 @@ function TinyMCE_applyTemplate(html, args) { return html; } -function TinyMCE_openWindow(template, args, skip_lang) { +function TinyMCE_openWindow(template, args) { var html, width, height, x, y, resizable, scrollbars, url; + args['mce_template_file'] = template['file']; tinyMCE.windowArgs = args; html = template['html']; @@ -2332,11 +2426,15 @@ function TinyMCE_openWindow(template, args, skip_lang) { scrollbars = (args && args['scrollbars']) ? args['scrollbars'] : "no"; url = tinyMCE.baseURL + "/themes/" + tinyMCE.getParam("theme") + "/" + template['file']; + // Replace all args as variables in URL + for (var name in args) + url = tinyMCE.replaceVar(url, name, escape(args[name])); + if (html) { html = tinyMCE.replaceVar(html, "css", this.settings['popups_css']); - html = tinyMCE.applyTemplate(html, args, skip_lang); + html = tinyMCE.applyTemplate(html, args); - var win = window.open("", "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable); + var win = window.open("", "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable); win.document.write(html); win.document.close(); win.resizeTo(width, height); @@ -2350,8 +2448,8 @@ function TinyMCE_openWindow(template, args, skip_lang) { 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); + var win = window.open(url, "mcePopup", "top=" + y + ",left=" + x + ",scrollbars=" + scrollbars + ",dialog=yes,minimizable=" + resizable + ",modal=yes,width=" + width + ",height=" + height + ",resizable=" + resizable); + eval('try { win.resizeTo(width, height); } catch(e) { }'); win.focus(); } } @@ -2481,14 +2579,14 @@ function TinyMCE__getElementById(element_id) { } function TinyMCE_getEditorId(form_element) { - var mceControl = this._getInstanceById(form_element); + var mceControl = this.getInstanceById(form_element); if (!mceControl) return null; return mceControl.editorId; } -function TinyMCE__getInstanceById(editor_id) { +function TinyMCE_getInstanceById(editor_id) { var mceControl = this.instances[editor_id]; if (!mceControl) { for (var instanceName in tinyMCE.instances) { @@ -2504,7 +2602,7 @@ function TinyMCE__getInstanceById(editor_id) { } function TinyMCE_queryInstanceCommandValue(editor_id, command) { - var mceControl = tinyMCE._getInstanceById(editor_id); + var mceControl = tinyMCE.getInstanceById(editor_id); if (mceControl) return mceControl.queryCommandValue(command); @@ -2512,13 +2610,17 @@ function TinyMCE_queryInstanceCommandValue(editor_id, command) { } function TinyMCE_queryInstanceCommandState(editor_id, command) { - var mceControl = tinyMCE._getInstanceById(editor_id); + var mceControl = tinyMCE.getInstanceById(editor_id); if (mceControl) return mceControl.queryCommandState(command); return null; } +function TinyMCE_setWindowArg(name, value) { + this.windowArgs[name] = value; +} + function TinyMCE_getWindowArg(name, default_value) { return (typeof(this.windowArgs[name]) == "undefined") ? default_value : this.windowArgs[name]; } @@ -2542,7 +2644,7 @@ function TinyMCE_getCSSClasses(editor_id, doc) { } if (typeof(doc) == "undefined") { - var instance = tinyMCE._getInstanceById(editor_id); + var instance = tinyMCE.getInstanceById(editor_id); doc = instance.contentWindow.document; } @@ -2593,12 +2695,31 @@ function TinyMCE_regexpReplace(in_str, reg_exp, replace_str, opts) { } function TinyMCE_cleanupEventStr(str) { + str = "" + str; str = str.replace('function anonymous()\n{\n', ''); str = str.replace('\n}', ''); return str; } +function TinyMCE_getAbsPosition(node) { + var x = 0, y = 0; + var pos = new Object(); + + var parentNode = node; + while (parentNode) { + x += parentNode.offsetLeft; + y += parentNode.offsetTop; + + parentNode = parentNode.offsetParent; + } + + pos.absLeft = x; + pos.absTop = y; + + return pos; +} + // TinyMCEControl function TinyMCEControl(settings) { // Undo levels @@ -2618,6 +2739,155 @@ function TinyMCEControl(settings) { this.onAdd = TinyMCEControl_onAdd; this.getFocusElement = TinyMCEControl_getFocusElement; this.autoResetDesignMode = TinyMCEControl_autoResetDesignMode; + this._insertPara = TinyMCEControl__insertPara; + this._insertSpace = TinyMCEControl__insertSpace; + this.selectNode = TinyMCEControl_selectNode; +} + +function TinyMCEControl_selectNode(node, collapse, select_text_node) { + if (typeof(collapse) == "undefined") + collapse = true; + + if (typeof(select_text_node) == "undefined") + select_text_node = false; + + if (tinyMCE.isMSIE) { + var rng = this.contentWindow.document.body.createTextRange(); + + rng.moveToElementText(node); + if (collapse) + sel.collapse(false); + + rng.select(); + } else { + var rng = this.contentWindow.document.createRange(); + var sel = this.contentWindow.getSelection(); + + // Select the text node within + if (select_text_node && (node.firstChild && node.firstChild.nodeType == 3)) + rng.selectNodeContents(node.firstChild); + else + rng.selectNodeContents(node); + + if (collapse) + rng.collapse(true); + + sel.removeAllRanges(); + sel.addRange(rng); + } + + // Scroll to node position + var pos = tinyMCE.getAbsPosition(node); + var doc = this.contentWindow.document; + var scrollX = doc.body.scrollLeft + doc.documentElement.scrollLeft; + var scrollY = doc.body.scrollTop + doc.documentElement.scrollTop; + var height = tinyMCE.isMSIE ? document.getElementById(this.editorId).style.pixelHeight : parseInt(this.targetElement.style.height); + + // Only scroll if out of visible area + if (!(node.absTop > scrollY && node.absTop < (scrollY - 25 + height))) + this.contentWindow.scrollTo(pos.absLeft, pos.absTop - height + 25); + + // Set selected element + tinyMCE.selectedElement = null; + if (node.nodeType == 1) + tinyMCE.selectedElement = node; +} + +function TinyMCEControl__insertPara() { + var doc = this.contentWindow.document; + var sel = this.contentWindow.getSelection(); + var win = this.contentWindow; + + // Setup before range + var rngBefore = doc.createRange(); + rngBefore.setStart(sel.anchorNode, sel.anchorOffset); + rngBefore.collapse(true); + + // Setup after range + var rngAfter = doc.createRange(); + rngAfter.setStart(sel.focusNode, sel.focusOffset); + rngAfter.collapse(true); + + // Setup start/end points + var direct = rngBefore.compareBoundaryPoints(rngBefore.START_TO_END, rngAfter) < 0; + var startNode = direct ? sel.anchorNode : sel.focusNode; + var startOffset = direct ? sel.anchorOffset : sel.focusOffset; + var endNode = direct ? sel.focusNode : sel.anchorNode; + var endOffset = direct ? sel.focusOffset : sel.anchorOffset; + + // Get block elements + var startBlock = tinyMCE.getParentBlockElement(startNode); + var endBlock = tinyMCE.getParentBlockElement(endNode); + + // Within a list item (use normal behavior) + if ((startBlock != null && startBlock.nodeName.toLowerCase() == "li") || (endBlock != null && endBlock.nodeName.toLowerCase() == "li")) + return false; + + // Within a table create new paragraphs + if ((startBlock != null && startBlock.nodeName.toLowerCase() == "table") || (endBlock != null && endBlock.nodeName.toLowerCase() == "table")) + startBlock = endBlock = null; + + // Setup new paragraphs + var paraBefore = (startBlock != null && startBlock.nodeName.toLowerCase() == "p") ? startBlock.cloneNode(false) : doc.createElement("p"); + var paraAfter = (endBlock != null && endBlock.nodeName.toLowerCase() == "p") ? endBlock.cloneNode(false) : doc.createElement("p"); + + // Setup chop nodes + var startChop = startNode; + var endChop = endNode; + + while ((startChop.previousSibling && startChop.previousSibling.nodeName.toLowerCase() != 'p') || (startChop.parentNode && startChop.parentNode != startBlock && startChop.parentNode.nodeType != 9)) + startChop = startChop.previousSibling ? startChop.previousSibling : startChop.parentNode; + + while ((endChop.nextSibling && endChop.nextSibling.nodeName.toLowerCase() != 'p') || (endChop.parentNode && endChop.parentNode != endBlock && endChop.parentNode.nodeType != 9)) + endChop = endChop.nextSibling ? endChop.nextSibling : endChop.parentNode; + + // Place first part within new paragraph + rngBefore.setStartBefore(startChop); + rngBefore.setEnd(startNode, startOffset); + paraBefore.appendChild(rngBefore.cloneContents()); + + // Place secound part within new paragraph + rngAfter.setEndAfter(endChop); + rngAfter.setStart(endNode, endOffset); + paraAfter.appendChild(rngAfter.cloneContents()); + + // Check if it's a empty paragraph + if (paraBefore.innerHTML == "") + paraBefore.innerHTML = " "; + + // Check if it's a empty paragraph + if (paraAfter.innerHTML == "") + paraAfter.innerHTML = " "; + + // Create a range around everything + var rng = doc.createRange(); + + if (!startChop.previousSibling && startChop.parentNode.nodeName.toLowerCase() == 'p') + rng.setStartBefore(startChop.parentNode); + else { + if (rngBefore.startContainer.nodeName.toLowerCase() == 'p' && rngBefore.startOffset == 0) + rng.setStartBefore(rngBefore.startContainer); + else + rng.setStart(rngBefore.startContainer, rngBefore.startOffset); + } + + if (!endChop.nextSibling && endChop.parentNode.nodeName.toLowerCase() == 'p') + rng.setEndAfter(endChop.parentNode); + else + rng.setEnd(rngAfter.endContainer, rngAfter.endOffset); + + // Delete all contents and insert new paragraphs + rng.deleteContents(); + rng.insertNode(paraAfter); + rng.insertNode(paraBefore); + + this.selectNode(paraAfter, true, true); + + return true; +} + +function TinyMCEControl__insertSpace() { + return true; } function TinyMCEControl_autoResetDesignMode() { @@ -2625,7 +2895,7 @@ function TinyMCEControl_autoResetDesignMode() { if (!tinyMCE.isMSIE && tinyMCE.settings['auto_reset_designmode']) { var sel = this.contentWindow.getSelection(); - // Werid, where that cursor selection + // Weird, wheres that cursor selection? if (sel.rangeCount == 0) this.contentWindow.document.designMode = "On"; } @@ -2725,6 +2995,45 @@ function TinyMCEControl_execCommand(command, user_interface, value) { } switch (command) { + case "mceSelectNode": + this.selectNode(value); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = value; + 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.selectNode(parentNode, false); + tinyMCE.triggerNodeChange(); + tinyMCE.selectedNode = parentNode; + return; + } + + parentNode = parentNode.parentNode; + } + + break; + + case "HiliteColor": + if (tinyMCE.isGecko) { + this.contentDocument.execCommand("useCSS", false, false); + this.contentDocument.execCommand('hilitecolor', false, value); + this.contentDocument.execCommand("useCSS", false, true); + } else + this.contentDocument.execCommand('backcolor', false, value); + break; + case "Cut": case "Copy": case "Paste": @@ -2800,16 +3109,16 @@ function TinyMCEControl_execCommand(command, user_interface, value) { case "mceImage": var src = "", alt = "", border = "", hspace = "", vspace = "", width = "", height = "", align = ""; - var title = "", onmouseover = "", onmouseout = "", action = "insert";; + var title = "", onmouseover = "", onmouseout = "", action = "insert"; if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") tinyMCE.imgElement = tinyMCE.selectedElement; 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; + var imgName = getAttrib(tinyMCE.imgElement, 'name'); + if (imgName.substring(0, 4)=='mce_') + return; src = getAttrib(tinyMCE.imgElement, 'src'); alt = getAttrib(tinyMCE.imgElement, 'alt'); @@ -2865,14 +3174,26 @@ function TinyMCEControl_execCommand(command, user_interface, value) { 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; + tinyMCE.triggerNodeChange(); break; case "mceAnchor": if (!user_interface) { var aElm = tinyMCE.getParentElement(this.getFocusElement(), "a", "name"); - if (aElm) - aElm.setAttribute('name', value); - else { + if (aElm) { + if (value == null || value == "") { + if (tinyMCE.isMSIE) { + aElm.outerHTML = aElm.innerHTML; + } else { + var rng = aElm.ownerDocument.createRange(); + rng.setStartBefore(aElm); + rng.setEndAfter(aElm); + rng.deleteContents(); + rng.insertNode(rng.createContextualFragment(aElm.innerHTML)); + } + } else + 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 0); - if (selectedText) { + // Use selectedNode instead if defined + if (tinyMCE.selectedNode) + tinyMCE.selectedElement = tinyMCE.selectedNode; + + if (selectedText && !tinyMCE.selectedNode) { 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#"); @@ -2959,11 +3284,17 @@ function TinyMCEControl_execCommand(command, user_interface, value) { //tinyMCE.setContent(this.contentDocument.body.innerHTML); } else { var targetElm = this.getFocusElement(); + + // Select element 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"); + // Selected element + if (tinyMCE.selectedElement.nodeType == 1) + targetNode = tinyMCE.selectedElement; + // Mozilla img patch if (!tinyMCE.isMSIE && !targetNode) targetNode = tinyMCE.imgElement; @@ -2992,15 +3323,20 @@ function TinyMCEControl_execCommand(command, user_interface, value) { case "mceInsertContent": if (!tinyMCE.isMSIE) { - this.contentDocument.execCommand("insertimage", false, "#mce_temp_url#"); - elm = tinyMCE.getElementByAttributeValue(this.contentDocument.body, "img", "src", "#mce_temp_url#"); + var sel = this.contentWindow.getSelection(); + var rng = sel.getRangeAt(0); - if (elm) { - var rng = elm.ownerDocument.createRange(); - rng.setStartBefore(elm); - var fragment = rng.createContextualFragment(value); - elm.parentNode.replaceChild(fragment, elm); - } + value = rng.createContextualFragment(value); + 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); + + rng.collapse(false); } else { var rng = this.contentWindow.document.selection.createRange(); @@ -3230,7 +3566,8 @@ function TinyMCEControl_execCommand(command, user_interface, value) { // Delete row trElement.parentNode.removeChild(trElement); - tinyMCE._selectNode(this.contentWindow, selElm); + if (tinyMCE.isGecko) + this.selectNode(selElm); break; case "mceTableInsertColBefore": @@ -3291,7 +3628,9 @@ function TinyMCEControl_execCommand(command, user_interface, value) { // Remove whole table if (numCols <= 1) { - tinyMCE._selectNode(this.contentWindow, selElm); + if (tinyMCE.isGecko) + this.selectNode(selElm); + tableElement.parentNode.removeChild(tableElement); tinyMCE.triggerNodeChange(); return; @@ -3307,7 +3646,8 @@ function TinyMCEControl_execCommand(command, user_interface, value) { if (index > 0) selElm = tableElement.rows[0].cells[index-1]; - tinyMCE._selectNode(this.contentWindow, selElm); + if (tinyMCE.isGecko) + this.selectNode(selElm); break; } @@ -3429,19 +3769,6 @@ function TinyMCEControl_execCommand(command, user_interface, value) { } } -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; @@ -3585,29 +3912,114 @@ function TinyMCEControl_onAdd(replace_element, form_element_name) { this.settings['height'] = this.settings['old_height']; this.visualAid = this.settings['visual']; - this.oldTargetElement = replace_element.cloneNode(true); this.formTargetElementId = form_element_name; - // Debug mode - if (tinyMCE.settings['debug']) - html += ''; - else - html += ''; + // Get replace_element contents + if (replace_element.nodeName.toLowerCase() == "textarea") + this.startContent = replace_element.value; + else + this.startContent = replace_element.innerHTML; - html += ''; + // If not text area + if (replace_element.nodeName.toLowerCase() != "textarea") { + this.oldTargetElement = replace_element.cloneNode(true); + + // Debug mode + if (tinyMCE.settings['debug']) + html += ''; + else + html += ''; + + html += ''; + + // Output HTML and set editable + 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; + } else { + html += ''; + + // Just hide the textarea element + this.oldTargetElement = replace_element; + + if (!tinyMCE.settings['debug']) + this.oldTargetElement.style.display = "none"; + + // Output HTML and set editable + if (!tinyMCE.isMSIE) { + var rng = replace_element.ownerDocument.createRange(); + rng.setStartBefore(replace_element); + + var fragment = rng.createContextualFragment(html); + replace_element.parentNode.insertBefore(fragment, replace_element); + } else + replace_element.insertAdjacentHTML("beforeBegin", html); + } + + // Setup iframe + var dynamicIFrame = false; + var tElm = document.getElementById(this.editorId); - // Output HTML and set editable if (!tinyMCE.isMSIE) { - var rng = replace_element.ownerDocument.createRange(); - rng.setStartBefore(replace_element); + if (tElm && tElm.nodeName.toLowerCase() == "span") { + tElm = tinyMCE._createIFrame(tElm); + dynamicIFrame = true; + } - var fragment = rng.createContextualFragment(html); - replace_element.parentNode.replaceChild(fragment, replace_element); - } else - replace_element.outerHTML = html; + this.targetElement = tElm; + this.contentDocument = tElm.contentDocument; + this.contentWindow = tElm.contentWindow; - //window.setTimeout("tinyMCE.setEditMode('" + this.editorId + "', true)", 1); - tinyMCE.setEditMode(this.editorId, true); + //this.contentWindow.document.designMode = "on"; + } else { + if (tElm && tElm.nodeName.toLowerCase() == "span") + tElm = tinyMCE._createIFrame(tElm); + else + tElm = document.frames[this.editorId]; + + this.targetElement = tElm; + this.contentDocument = tElm.window.document; + this.contentWindow = tElm.window; + this.contentDocument.designMode = "on"; + } + + // Setup base HTML + var doc = this.contentDocument; + if (dynamicIFrame) { + var html = "" + + '' + + '' + + '' + + 'blank_page' + + '' + + '' + + '' + + '' + + ''; + + try { + this.contentWindow.document.designMode = "on"; + doc.open(); + doc.write(html); + doc.close(); + } catch (e) { + // Failed Mozilla 1.3 + this.contentWindow.document.location.href = tinyMCE.baseURL + "/blank.htm"; + } + } + + // 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('" + this.editorId + "');", 1); + + //window.setTimeout("tinyMCE.setupContent('" + this.editorId + "');", (tinyMCE.isMSIE ? 1 : 1000)); + tinyMCE.setupContent(this.editorId); return true; }