diff --git a/TinyMCEPlugin/lib/Foswiki/Plugins/TinyMCEPlugin/MANIFEST b/TinyMCEPlugin/lib/Foswiki/Plugins/TinyMCEPlugin/MANIFEST index 15c11d1072..254a1ed9b8 100644 --- a/TinyMCEPlugin/lib/Foswiki/Plugins/TinyMCEPlugin/MANIFEST +++ b/TinyMCEPlugin/lib/Foswiki/Plugins/TinyMCEPlugin/MANIFEST @@ -1,9 +1,9 @@ -!noci data/System/TinyMCEFrequentlyAskedQuestions.txt 0644 data/System/TinyMCEPlugin.txt 0644 data/System/TinyMCEQuickHelp.txt 0644 lib/Foswiki/Configure/Checkers/Plugins/TinyMCEPlugin/Enabled.pm 0644 lib/Foswiki/Plugins/TinyMCEPlugin.pm 0644 +!noci pub/System/TinyMCEPlugin/foswiki_src.js 0644 pub/System/TinyMCEPlugin/foswiki.js 0644 pub/System/TinyMCEPlugin/foswiki.js.gz 0644 @@ -12,8 +12,10 @@ pub/System/TinyMCEPlugin/foswiki_tiny.js 0644 pub/System/TinyMCEPlugin/foswiki_tiny.js.gz 0644 pub/System/TinyMCEPlugin/screenshot.png 0644 pub/System/TinyMCEPlugin/tinymce.gif 0644 -#pub/System/TinyMCEPlugin/tinymce/build.bat 0644 -#pub/System/TinyMCEPlugin/tinymce/build.xml 0644 +pub/System/TinyMCEPlugin/tinymce/LICENSE.TXT 0644 +pub/System/TinyMCEPlugin/tinymce/accessibility_notes.txt 0644 +#pub/System/TinyMCEPlugin/tinymce/build.bat 0644 +#pub/System/TinyMCEPlugin/tinymce/build.xml 0644 pub/System/TinyMCEPlugin/tinymce/changelog.txt 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinyMCEPopup.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.AddOnManager.html 0644 @@ -48,6 +50,7 @@ pub/System/TinyMCEPlugin/tinymce/changelog.txt 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Container.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Control.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.DropMenu.html 0644 +#pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.KeyboardNavigation.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ListBox.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Menu.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.MenuButton.html 0644 @@ -56,6 +59,7 @@ pub/System/TinyMCEPlugin/tinymce/changelog.txt 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Separator.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.SplitButton.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Toolbar.html 0644 +#pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ToolbarGroup.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.Cookie.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.Dispatcher.html 0644 #pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.JSON.html 0644 @@ -157,6 +161,7 @@ pub/System/TinyMCEPlugin/tinymce/examples/word.html 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TreeWalker.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/XMLWriter.js 0644 +#pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/firebug/FIREBUG.LICENSE 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/firebug/firebug-lite.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/tinymce.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Button.js 0644 @@ -164,6 +169,7 @@ pub/System/TinyMCEPlugin/tinymce/examples/word.html 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Container.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Control.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js 0644 +#pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/KeyboardNavigation.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Menu.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js 0644 @@ -172,6 +178,7 @@ pub/System/TinyMCEPlugin/tinymce/examples/word.html 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Separator.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js 0644 +#pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ToolbarGroup.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/util/Cookie.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/util/Dispatcher.js 0644 #pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/util/JSON.js 0644 @@ -219,6 +226,9 @@ pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js.gz 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin.js.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js.gz 0644 @@ -351,6 +361,9 @@ pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.j pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js.gz 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin.js.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/media/css/content.css 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/media/css/content.css.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/media/css/media.css 0644 @@ -536,6 +549,7 @@ pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js.g pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/link.htm 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/shortcuts.htm 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css 0644 @@ -548,6 +562,12 @@ pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css.gz 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/content.css.gz 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css.gz 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css 0644 +pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css 0644 @@ -599,30 +619,56 @@ pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/utils/mctabs.js.gz 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/utils/validate.js 0644 pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/utils/validate.js.gz 0644 pub/System/TinyMCEPlugin/tinymce/readme.md 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility0.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility1.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility10.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility2.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility3.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility4.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility5.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility6.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility7.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility8.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/accessibility9.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/api.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/api_jquery.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/api_prototype.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/autolink.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/basic.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/crossdomain.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/css/unit.css 0644 #pub/System/TinyMCEPlugin/tinymce/tests/formatting_apply.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/formatting_check.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/formatting_remove.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/fullpage.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/ie_range.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/ie_selection.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/index.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/jquery_plugin.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/js/api.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/js/autolink/actions.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/js/dsl/dsl.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/js/dsl/states.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/js/lists/actions.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/js/tiny_mce_loader.js 0644 #pub/System/TinyMCEPlugin/tinymce/tests/js/utils.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/jsrobot/JSRobot.LICENSE 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/jsrobot/JSRobot.jar 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/jsrobot/robot.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/lists_applying.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/lists_forced_brs.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/lists_indenting.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/main.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/media.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/menu.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/parts.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/paste.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/performance.html 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/qunit/QUnit.LICENSE 0644 #pub/System/TinyMCEPlugin/tinymce/tests/qunit/qunit.css 0644 #pub/System/TinyMCEPlugin/tinymce/tests/qunit/qunit.js 0644 #pub/System/TinyMCEPlugin/tinymce/tests/qunit/runner.js 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/remove.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/removeformat.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/selection.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/slickspeed/config.ini 0644 @@ -638,6 +684,7 @@ pub/System/TinyMCEPlugin/tinymce/readme.md 0644 #pub/System/TinyMCEPlugin/tinymce/tests/slickspeed/system/template.php 0644 #pub/System/TinyMCEPlugin/tinymce/tests/slickspeed/template.html 0644 #pub/System/TinyMCEPlugin/tinymce/tests/test.xml 0644 +#pub/System/TinyMCEPlugin/tinymce/tests/undo.html 0644 #pub/System/TinyMCEPlugin/tinymce/tools/ant/ant-contrib.jar 0644 #pub/System/TinyMCEPlugin/tinymce/tools/ant/js_build_tools.jar 0644 #pub/System/TinyMCEPlugin/tinymce/tools/ant/svnClientAdapter.jar 0644 diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/LICENSE.TXT b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/LICENSE.TXT new file mode 100644 index 0000000000..60d6d4c8f5 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/LICENSE.TXT @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/accessibility_notes.txt b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/accessibility_notes.txt new file mode 100644 index 0000000000..7c14908e57 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/accessibility_notes.txt @@ -0,0 +1,67 @@ +Accessibility required plugins + +To get tab working well, enable the tabfocus plugin. The following seems to be a good combination. + + tabfocus_elements: ':prev,:next', + plugins : 'tabfocus', + + +Translations are stored in the theme under the accessibility comment. + +The application will use a default aria label of Rich Text Area, or derive it from the defining element if it was specified there. + +Known Issues + +Use Voice Over to move voice cursor and focus into TinyMCE and then tab or shift-tab out and back into the editor. The keyboard focus moves but the voice over focus does not. Probably should be in sync? + +ToDo +==== + +Probably want to make a way of doing editor short cuts. +Should remove the shortcut text from the button titles as it makes it JAWS read things like "Bold left paren, control plus B, right paren, button". Better to put shortcuts in a single help document. + +perhaps in the tinymce init settings have something like: +shortcuts : { 'ctrl-b', 'bold'} + +need navigation. + +highlighting on navigation + +Provide better visualisation of focussed toolbar buttons (probably change the background color). Use :focus and :active pseudo-classes in CSS. +Currently we use role="button" for all buttons. For alignment should we use radio groups? For bold/italic/etc should we use checkboxes? Current behaviour matches CK but doesn't provide audible feedback on if the button is pressed or not (despite setting the aria-pressed attribute) + +Provide an icon for the accessibility help dialog (so that user's have a chance of reaching it if the alt-0 shortcut conflicts with something). + + +Done +==== + +alt-f10 to go to the toolbar (but with issues caused by the tabfocus plugin as noted above) + +Keyboard navigation through toolbar items (arrow keys). Tab moves to editor. + +Fake combo boxes and split buttons now work with both JAWS and voice over. Strictly speaking the comboboxes are treated as popup buttons because role="combobox" just doesn't work anywhere properly. + +iFrame needs a keyboard shortcut to enable accessibility help. Also need to provide the accessibility help. + + +Dialog accessability... +======================= + +Add labels. + +titles? + +link dialog - + +Tab focus + +aria required attribute +use html semantics over aria semantics. + +help + +focus issue on safari +toolbar widgets +dialogs +tab widget diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/build.xml b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/build.xml index 5d6bd485cb..7ba1df07e4 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/build.xml +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/build.xml @@ -1,9 +1,11 @@ - + - - - + + + + + @@ -17,6 +19,17 @@ + + + + + + + + + + + @@ -30,16 +43,16 @@ - - + + - + - + @@ -77,6 +90,7 @@ + @@ -89,6 +103,7 @@ + @@ -193,24 +208,28 @@ - - + + + - + + + - - + + + @@ -256,14 +275,18 @@ - + + + - + + + @@ -286,13 +309,21 @@ + + + + + + + + @@ -310,13 +341,14 @@ - + + + - @@ -333,35 +365,10 @@ - - - - - - - - - -TinyMCE Commercial Application License --------------------------------------- -This copy of TinyMCE is under a commercial license, the LGPL headers are removed. - -A signed agreement from Moxiecode Systems AB is required in order to use this specific copy of TinyMCE. - -If you have any questions regarding your license, contact Moxiecode Systems AB (www.moxiecode.com). - - - - - - - - - - - - + + + diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/changelog.txt b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/changelog.txt index cc3df7030e..3336d5b145 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/changelog.txt +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/changelog.txt @@ -1,3 +1,34 @@ +Version 3.3.9.4 (2011-04-13) + Set table background colors to transparent in ui.css to improve compliance with users browser color preferences. + Fixed bug where IE9 did not perform setContent of paragraphs correctly. + Fixed bug where IE9 namespaced tags were prefixed with extra namespace when serialized. + Fixed bug where it wasn't possible to delete images or tables using backspace on IE9. + Fixed IE9 bug #4172, search/replace not working + Backported paste plugin fixes from 3.4 - IE, IE9, Gecko, WebKit related problems. + Fixed bug where focus of the editor would get on control contents on IE lost due to a bug in the ColorSplitButton control. + Fixed issue with alt-f10 navigation to toolbar with JAWS12 (removed role=application attribute from the iFrame). + Included fix from 3.4 - Fixed bug where the editor would scroll to the toolbar when clicked due to a call to focus in ListBox. + Added support for ARIA Accessibility. + Added 'contextmenu_never_use_native' setting to disable the ctrl-right-click showing the native browser context menu behaviour. + Backported fix for colorpicker color validation. + Fixed issue where styles were not included when using the full page plugin. + Fixed issue where deleting some paragraphs on IE would cause an exception. + Fixed issue where pasting part of a list from IE did not wrap the list in a UL element. + Fixed issue in list plugin which left the final list item outside the list element. + Fixed issue where inline formatting may be applied beyond the end of the selection. + Fixed issue where bullet lists weren't always detected correctly. + Fixed issue where list item content may be deleted when pasting from Word. + Fixed issue where extra, empty span tags were added when using a format with both selector and inline modes. + Selection.getNode now detects ranges that are wrapped immediately around a node. + Added 'theme_advanced_show_current_color' setting to enable the forecolor and backcolor buttons to continuously show the current text color. + Added 'autolink' plugin to enable automatically linking URLs. + Added paste_enable_default_filters setting to enable the default paste filters to be disabled. + Fixed bug where border styles were incorrectly merged. + Added significantly improved list handling via the new 'lists' plugin. + Fixed bug where image resize handles were left behind when changing the alignment of an image in Firefox. + Spaces in URLs are now automatically encoded as %20 since they are always invalid. + Fixed bug where HR was inserted inside P elements instead of splitting them. + Fixed bug where deleting content in Firefox used the attributes from the end element instead of the start. Version 3.3.9.3 (2010-12-20) Fixed issue where WebKit wouldn't correctly apply ins/del in xhtmlxtras plugin. Fixed bug where paste as plaintext on WebKit wouldn't produce br and p elements correctly. diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Editor.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Editor.html index 2dbf334a61..67daa46503 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Editor.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Editor.html @@ -33,7 +33,23 @@

tinymce.Editor

Author(s):Moxiecode

Example

-
+
// Add a class to all paragraphs in the editor.
+tinyMCE.activeEditor.dom.addClass(tinyMCE.activeEditor.dom.select('p'), 'someclass');
+
+// Gets the current editors selection as text
+tinyMCE.activeEditor.selection.getContent({format : 'text'});
+
+// Creates a new editor instance
+var ed = new tinymce.Editor('textareaid', {
+    some_setting : 1
+});
+
+// Select each item the user clicks on
+ed.onClick.add(function(ed, e) {
+    ed.selection.select(e.target);
+});
+
+ed.render();

Public Properties

@@ -56,21 +72,13 @@

Public Properties

- - - - - + - + - + - + - + - - - - @@ -151,7 +150,8 @@

Public Properties

@@ -221,7 +221,7 @@

Public Methods

@@ -229,7 +229,7 @@

Public Methods

@@ -237,7 +237,7 @@

Public Methods

@@ -317,7 +317,7 @@

Public Methods

@@ -461,7 +461,7 @@

Public Methods

@@ -811,13 +811,6 @@

baseURIproperty
URI object to current document that holds the TinyMCE editor instance.
-
-

contentCSSproperty -

-public contentCSS : Array -
Array with CSS files to load into the iframe. -
-

controlManagerproperty

@@ -864,14 +857,6 @@

isNotDirtyproperty
State to force the editor to return false on a isDirty call.

-
-

parserproperty -

-public parser : DomParser - -
HTML parser will be used when contents is inserted into the editor. -
-

pluginsproperty

@@ -882,7 +867,7 @@

pluginsproperty

schemaproperty

-public schema : Schema +public schema : Schema
Schema instance, enables you to validate elements and it's children.
@@ -898,8 +883,9 @@

selectionproperty

serializerproperty

-public serializer : tinymce.dom.Serializer -
DOM serializer for the editor. Will be used when contents is extracted from the editor. +public serializer : Serializer + +
DOM serializer for the editor.
@@ -982,22 +968,22 @@

Parameters

addCommandmethod

public - function addCommand(name:String, callback:tinymce.Editor.addCommandCallback, scope:Object):void + function addCommand(n:String, f:function, s:Object):void
Adds a custom command to the editor, you can also override existing commands with this method. The command that you add can be executed with execCommand.

Parameters

-contentCSS : Array
-
Array with CSS files to load into the iframe.
-
Editor
-
Control manager instance for the editor.
Editor
documentBaseURI : URI @@ -79,7 +87,7 @@

Public Properties

Editor
dom : DOMUtils @@ -88,7 +96,7 @@

Public Properties

Editor
formatter : Formatter @@ -97,7 +105,7 @@

Public Properties

Editor
id : String
@@ -105,7 +113,7 @@

Public Properties

Editor
isNotDirty : Boolean
@@ -113,15 +121,6 @@

Public Properties

Editor
- -
HTML parser will be used when contents is inserted into the editor.
-
Editor
@@ -133,7 +132,7 @@

Public Properties

Schema instance, enables you to validate elements and it's children.
-serializer : tinymce.dom.Serializer
+serializer : Serializer +
DOM serializer for the editor.
Editor
-addCommand(name:String, callback:tinymce.Editor.addCommandCallback, scope:Object):void
+addCommand(n:String, f:function, s:Object):void
Adds a custom command to the editor, you can also override existing commands with this method.
Editor
-addQueryStateHandler(name:String, callback:tinymce.Editor.addQueryStateHandlerCallback, scope:Object):void
+addQueryStateHandler(n:String, f:function, s:Object):void
Adds a custom query state command to the editor, you can also override existing commands with this method.
Editor
-addQueryValueHandler(name:String, callback:tinymce.Editor.addQueryValueHandlerCallback, scope:Object):void
+addQueryValueHandler(n:String, f:function, s:Object):void
Adds a custom query value command to the editor, you can also override existing commands with this method.
Editor
-getContent(args:Object):String
+getContent(o:Object):String
Gets the content from the editor instance, this will cleanup the content before it gets returned using the different cle...
Editor
-setContent(content:String, args:Object):String
+setContent(h:String, o:Object):String
Sets the specified content to the editor instance, this will cleanup the content before it gets set using the different ...
Editor
- + - + - +
name:Stringn:String Command name to add/override.
callback:tinymce.Editor.addCommandCallbackf:function Function to execute when the command occurs.
scope:Objects:Object Optional scope to execute the function in.
@@ -1006,22 +992,22 @@

Parameters

addQueryStateHandlermethod

public - function addQueryStateHandler(name:String, callback:tinymce.Editor.addQueryStateHandlerCallback, scope:Object):void + function addQueryStateHandler(n:String, f:function, s:Object):void
Adds a custom query state command to the editor, you can also override existing commands with this method. The command that you add can be executed with queryCommandState function.

Parameters

- + - + - +
name:Stringn:String Command name to add/override.
callback:tinymce.Editor.addQueryStateHandlerCallbackf:function Function to execute when the command state retrival occurs.
scope:Objects:Object Optional scope to execute the function in.
@@ -1030,22 +1016,22 @@

Parameters

addQueryValueHandlermethod

public - function addQueryValueHandler(name:String, callback:tinymce.Editor.addQueryValueHandlerCallback, scope:Object):void + function addQueryValueHandler(n:String, f:function, s:Object):void
Adds a custom query value command to the editor, you can also override existing commands with this method. The command that you add can be executed with queryCommandValue function.

Parameters

- + - + - +
name:Stringn:String Command name to add/override.
callback:tinymce.Editor.addQueryValueHandlerCallbackf:function Function to execute when the command value retrival occurs.
scope:Objects:Object Optional scope to execute the function in.
@@ -1229,14 +1215,14 @@

Returns

getContentmethod

public - function getContent(args:Object):String + function getContent(o:Object):String
Gets the content from the editor instance, this will cleanup the content before it gets returned using the different cleanup rules options.

Parameters

- +
args:Objecto:Object Optional content object, this gets passed around through the whole get process.
@@ -1474,18 +1460,18 @@

Returns

setContentmethod

public - function setContent(content:String, args:Object):String + function setContent(h:String, o:Object):String
Sets the specified content to the editor instance, this will cleanup the content before it gets set using the different cleanup rules options.

Parameters

- + - +
content:Stringh:String Content to set to editor, normally HTML contents but can be other formats as well.
args:Objecto:Object Optional content object, this gets passed around through the whole set process.
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Formatter.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Formatter.html index 1ad696f2f9..d365141fd7 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Formatter.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.Formatter.html @@ -33,7 +33,12 @@

tinymce.Formatter

default formatting logic for execCommand due to it's inconsistant and buggy behavior.

Example

-
+
tinymce.activeEditor.formatter.register('mycustomformat', {
+   inline : 'span',
+   styles : {color : '#ff0000'}
+ });
+
+ tinymce.activeEditor.formatter.apply('mycustomformat');

Public Methods

diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.UndoManager.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.UndoManager.html index 7ecfb3a6f4..107b9a599c 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.UndoManager.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.UndoManager.html @@ -90,41 +90,6 @@

Public Methods

-

Public Events

- - - - - - - - - - - - - - - - - - - - - -
EventDefined By
-
-onAdd(sender:UndoManager, level:Object)
-
This event will fire each time a new undo level is added to the undo manager.
-
UndoManager
-
-onRedo(sender:UndoManager, level:Object)
-
This event will fire when the user make an redo of a change.
-
UndoManager
-
-onUndo(sender:UndoManager, level:Object)
-
This event will fire when the user make an undo of a change.
-
UndoManager
@@ -195,69 +160,6 @@

Returns

Object - Undo level or null if no undo was performed.
-
-

Event details

-
-

onAddevent -

-public - event onAdd(sender:UndoManager, level:Object) -
This event will fire each time a new undo level is added to the undo manager. -
-

Parameters

- - - - - - - - - -
sender:UndoManager -UndoManager instance that got the new level.
level:ObjectThe new level object containing a bookmark and contents.
-
-
-

onRedoevent -

-public - event onRedo(sender:UndoManager, level:Object) -
This event will fire when the user make an redo of a change. -
-

Parameters

- - - - - - - - - -
sender:UndoManager -UndoManager instance that got the new level.
level:ObjectThe old level object containing a bookmark and contents.
-
-
-

onUndoevent -

-public - event onUndo(sender:UndoManager, level:Object) -
This event will fire when the user make an undo of a change. -
-

Parameters

- - - - - - - - - -
sender:UndoManager -UndoManager instance that got the new level.
level:ObjectThe old level object containing a bookmark and contents.
-
-
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.DOMUtils.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.DOMUtils.html index 108181ebba..781eab794f 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.DOMUtils.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.DOMUtils.html @@ -114,7 +114,7 @@

Public Methods

-encode(text:String):String
+encode(s:String):String
Entity encodes a string, encodes the most common entities <>"& into entities.
DOMUtils @@ -162,20 +162,28 @@

Public Methods

-getOuterHTML(elm:String/Element):String
-
Returns the outer HTML of an element.
+getNext(node:Node, selector:String/function):Node +
Returns the next node that matches selector or function
DOMUtils
+getOuterHTML(e:String/Element):String
+
Returns the outer HTML of an element.
+ +DOMUtils + + + +
getParent(n:Node/String, f:function, r:Node):Node
Returns a node by the specified selector function.
DOMUtils - +
getParents(n:Node/String, f:function, r:Node):Array
@@ -183,7 +191,7 @@

Public Methods

DOMUtils - +
getPos(n:Element/String, ro:Element):object
@@ -191,6 +199,14 @@

Public Methods

DOMUtils + + +
+getPrev(node:Node, selector:String/function):Node
+
Returns the previous node that matches selector or function
+ +DOMUtils +
@@ -266,7 +282,7 @@

Public Methods

-isBlock(node:Node/String):Boolean
+isBlock(n:Node):Boolean
Returns true/false if the specified element is a block element or not.
DOMUtils @@ -298,12 +314,20 @@

Public Methods

+processHTML(h:String):String
+
Processes the HTML by replacing strong, em, del in gecko since it doesn't support them properly in a RTE environment.
+ +DOMUtils + + + +
remove(node:String/Element/Array, keep_children:Boolean):Element/Array
Removes/deletes the specified element(s) from the DOM.
DOMUtils - +
removeClass(Element:String/Element/Array, c:String):String/Array
@@ -311,7 +335,7 @@

Public Methods

DOMUtils - +
rename(elm:Element, name:String):Object
@@ -319,7 +343,7 @@

Public Methods

DOMUtils - +
replace(n:Element, o:Element/String/Array, k:Boolean):void
@@ -327,7 +351,7 @@

Public Methods

DOMUtils - +
run(Element:String/Element/Array, f:function, s:Object):Object/Array
@@ -335,7 +359,7 @@

Public Methods

DOMUtils - +
select(p:String, s:Object):Array
@@ -343,7 +367,7 @@

Public Methods

DOMUtils - +
serializeStyle(o:Object, name:String):String
@@ -351,7 +375,7 @@

Public Methods

DOMUtils - +
setAttrib(e:Element/String/Array, n:String, v:String):void
@@ -359,7 +383,7 @@

Public Methods

DOMUtils - +
setAttribs(e:Element/String/Array, o:Object):void
@@ -367,7 +391,7 @@

Public Methods

DOMUtils - +
setHTML(e:Element/String/Array, h:String):void
@@ -375,7 +399,7 @@

Public Methods

DOMUtils - +
setOuterHTML(e:Element/String/Array, h:Object, d:Document):void
@@ -383,7 +407,7 @@

Public Methods

DOMUtils - +
setStyle(n:String/Element/Array, na:String, v:String):void
@@ -391,7 +415,7 @@

Public Methods

DOMUtils - +
setStyles(e:Element/String/Array, o:Object):void
@@ -399,7 +423,7 @@

Public Methods

DOMUtils - +
show(e:String/Element/Array):void
@@ -407,7 +431,7 @@

Public Methods

DOMUtils - +
split(pe:Element, e:Element, re:Element):Element
@@ -415,7 +439,7 @@

Public Methods

DOMUtils - +
toHex(s:String):String
@@ -423,7 +447,7 @@

Public Methods

DOMUtils - +
unbind(o:String/Element/Array, n:String, f:function):bool/Array
@@ -431,7 +455,7 @@

Public Methods

DOMUtils - +
uniqueId(p:String):String
@@ -637,13 +661,13 @@

destroymethod

encodemethod

public - function encode(text:String):String + function encode(s:String):String
Entity encodes a string, encodes the most common entities <>"& into entities.

Parameters

- +
text:Strings:String String to encode with entities.
@@ -741,17 +765,38 @@

getClassesmethod

Returns

Array - Array with class objects each object has a class field might be other fields in the future.
+
+

getNextmethod +

+public + function getNext(node:Node, selector:String/function):Node +
Returns the next node that matches selector or function +
+

Parameters

+ + + + + + + + + +
node:NodeNode to find siblings from.
selector:String/functionSelector CSS expression or function.
+

Returns

+
Node - Next node item matching the selector or null if it wasn't found.
+

getOuterHTMLmethod

public - function getOuterHTML(elm:String/Element):String + function getOuterHTML(e:String/Element):String
Returns the outer HTML of an element.

Parameters

- +
elm:String/Elemente:String/Element Element ID or element object to get outer HTML from.
@@ -833,6 +878,27 @@

Parameters

Returns

object - Absolute position of the specified element object with x, y fields.
+
+

getPrevmethod +

+public + function getPrev(node:Node, selector:String/function):Node +
Returns the previous node that matches selector or function +
+

Parameters

+ + + + + + + + + +
node:NodeNode to find siblings from.
selector:String/functionSelector CSS expression or function.
+

Returns

+
Node - Previous node item matching the selector or null if it wasn't found.
+

getRectmethod

@@ -1000,13 +1066,13 @@

Parameters

isBlockmethod

public - function isBlock(node:Node/String):Boolean + function isBlock(n:Node):Boolean
Returns true/false if the specified element is a block element or not.

Parameters

- +
node:Node/Stringn:Node Element/Node to check.
@@ -1064,6 +1130,25 @@

Parameters

Returns

Object - Object representation of that style like {border : '1px solid red'}
+
+

processHTMLmethod +

+public + function processHTML(h:String):String +
Processes the HTML by replacing strong, em, del in gecko since it doesn't support them +properly in a RTE environment. It also converts any URLs in links and images and places +a converted value into a separate attribute with the mce prefix like _mce_src or _mce_href. +
+

Parameters

+ + + + + +
h:StringHTML to process.
+

Returns

+
String - Processed HTML code.
+

removemethod

diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.Selection.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.Selection.html index 0a29ac43f6..c946fd8b3b 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.Selection.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.dom.Selection.html @@ -43,7 +43,7 @@

Public Methods

-Selection(dom:DOMUtils, win:Window, serializer:tinymce.dom.Serializer)
+Selection(dom:DOMUtils, win:Window, serializer:Serializer)
Constructs a new selection instance.
Selection @@ -123,12 +123,20 @@

Public Methods

+moveAfterNode(node:Element):Element
+
Moves the selection to be collapsed immediately after the node.
+ +Selection + + + +
moveToBookmark(bookmark:Object):Boolean
Restores the selection to the specified bookmark.
Selection - +
select(node:Element, content:Boolean):Element
@@ -136,7 +144,7 @@

Public Methods

Selection - +
setContent(h:String, s:Object):void
@@ -144,7 +152,7 @@

Public Methods

Selection - +
setNode(n:Element):Element
@@ -152,7 +160,7 @@

Public Methods

Selection - +
setRng(r:Range):void
@@ -170,7 +178,7 @@

Method details

Selectionconstructor

public - function Selection(dom:DOMUtils, win:Window, serializer:tinymce.dom.Serializer) + function Selection(dom:DOMUtils, win:Window, serializer:Serializer)
Constructs a new selection instance.

Parameters

@@ -185,7 +193,8 @@

Parameters

Window to bind the selection object to. -serializer:tinymce.dom.Serializer +serializer:Serializer + DOM serialization class to use for getContent. @@ -313,6 +322,23 @@

isCollapsedmethod

Returns

Boolean - true/false state if the selection range is collapsed or not. Collapsed means if it's a caret or a larger selection.
+
+

moveAfterNodemethod +

+public + function moveAfterNode(node:Element):Element +
Moves the selection to be collapsed immediately after the node. +
+

Parameters

+ + + + + +
node:ElementHTML DOM element to position caret after.
+

Returns

+
Element - the same element as the one that got passed in.
+

moveToBookmarkmethod

diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.html index f41d43ab85..9b719cebb4 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.html @@ -31,7 +31,14 @@

tinymce

Core namespace with core functionality for the TinyMCE API all sub classes will be added to this namespace/object.

Example

-
+
// Using each method
+tinymce.each([1, 2, 3], function(v, i) {
+  console.log(i + '=' + v);
+});
+
+// Checking for a specific browser
+if (tinymce.isIE)
+  console.log("IE");

Public Properties

@@ -124,13 +131,22 @@

Public Properties

+ + + + - + - + - + - + - + @@ -331,22 +347,13 @@

Public Methods

- - - - - + - + - + - + - + - + - + - - - -
+isIE9 : Boolean
+
+[static] Constant that is true if the browser is IE 9 or newer.
+
tinymce
+
isMac : Boolean
[static] Constant that is true if the os is Mac OS.
tinymce
isOpera : Boolean
@@ -139,7 +155,7 @@

Public Properties

tinymce
isWebKit : Boolean
@@ -148,7 +164,7 @@

Public Properties

tinymce
majorVersion : String
@@ -157,7 +173,7 @@

Public Properties

tinymce
minorVersion : String
@@ -166,7 +182,7 @@

Public Properties

tinymce
releaseDate : String
@@ -215,7 +231,7 @@

Public Methods

-create(s:String, p:Object, root:Object):void
+create(s:String, o:Object):void
[static] Creates a class, subclass or static singleton.
-makeMap(items:Array/String, delim:String, map:Object):Object
-
-[static] Makes a name/object map out of an array with names.
-
tinymce
-
map(a:Array, f:function):Array
[static] Creates a new array by the return value of each iteration function call.
tinymce
remove(e:Editor):Editor @@ -355,7 +362,7 @@

Public Methods

tinymce
removeUnload(f:function):function
@@ -364,7 +371,7 @@

Public Methods

tinymce
resolve(n:String, o:Object):Object
@@ -373,7 +380,7 @@

Public Methods

tinymce
triggerSave():void
@@ -381,7 +388,7 @@

Public Methods

tinymce
trim(s:String):String
@@ -390,7 +397,7 @@

Public Methods

tinymce
walk(o:Object, f:function, n:String, s:String):void
@@ -497,6 +504,13 @@

isIE6property
Constant that is true if the browser is IE 6 or older.
+
+

isIE9property +

+public static isIE9 : Boolean +
Constant that is true if the browser is IE 9 or newer. +
+

isMacproperty

@@ -607,7 +621,7 @@

Returns

createmethod

public static - function create(s:String, p:Object, root:Object):void + function create(s:String, o:Object):void
Creates a class, subclass or static singleton. More details on this method can be found in the Wiki.
@@ -618,13 +632,9 @@

Parameters

Class name, inheritage and prefix.
p:Objecto:Object Collection of methods to add to the class.
root:ObjectOptional root object defaults to the global window object.
@@ -673,7 +683,9 @@

Parameters

Example

-
+
tinymce.each([1, 2, 3], function(v, i) {
+  console.log(i + '=' + v);
+});

execCommandmethod @@ -896,31 +908,6 @@

Parameters

Returns

Boolean - true/false if the object is of the specified type.
-
-

makeMapmethod -

-public static - function makeMap(items:Array/String, delim:String, map:Object):Object -
Makes a name/object map out of an array with names. -
-

Parameters

- - - - - - - - - - - - - -
items:Array/StringItems to make map out of.
delim:StringOptional delimiter to split string by.
map:ObjectOptional map to add items to.
-

Returns

-
Object - Name/value map of items.
-

mapmethod

diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Button.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Button.html index b509a040ed..e9dc34b05f 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Button.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Button.html @@ -59,7 +59,7 @@

Public Methods

-Button(id:String, s:Object)
+Button(id:String, s:Object, ed:Editor)
Constructs a new button control instance.
Button @@ -180,7 +180,7 @@

Method details

Buttonconstructor

public - function Button(id:String, s:Object) + function Button(id:String, s:Object, ed:Editor)
Constructs a new button control instance.

Parameters

@@ -193,6 +193,10 @@

Parameters

s:Object Optional name/value settings object. + +ed:Editor +Optional the editor instance this button is for. +
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ColorSplitButton.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ColorSplitButton.html index 198cfacd6d..7cddfb0582 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ColorSplitButton.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ColorSplitButton.html @@ -86,7 +86,7 @@

Public Methods

-ColorSplitButton(id:String, s:Object)
+ColorSplitButton(id:String, s:Object, ed:Editor)
Constructs a new color split button control instance.
ColorSplitButton @@ -102,12 +102,20 @@

Public Methods

+displayColor(c:String):void
+
Change the currently selected color for the control.
+ +ColorSplitButton + + + +
hideMenu(e:Event):void
Hides the color menu.
ColorSplitButton - +
isActive():Boolean
@@ -117,7 +125,7 @@

Public Methods

Control - +
isDisabled():Boolean
@@ -127,7 +135,7 @@

Public Methods

Control - +
isRendered():Boolean
@@ -137,7 +145,7 @@

Public Methods

Control - +
postRender():void
@@ -145,7 +153,7 @@

Public Methods

ColorSplitButton - +
remove():void
@@ -155,7 +163,7 @@

Public Methods

Control - +
renderHTML():String
@@ -165,7 +173,7 @@

Public Methods

SplitButton - +
renderMenu():void
@@ -173,7 +181,7 @@

Public Methods

ColorSplitButton - +
renderTo(n:Element):void
@@ -183,7 +191,7 @@

Public Methods

Control - +
setActive(s:Boolean):void
@@ -193,7 +201,7 @@

Public Methods

Control - +
setColor(c:String):void
@@ -201,7 +209,7 @@

Public Methods

ColorSplitButton - +
setDisabled(s:Boolean):void
@@ -211,7 +219,7 @@

Public Methods

Control - +
setState(c:String, s:Boolean):void
@@ -221,7 +229,7 @@

Public Methods

Control - +
showMenu():void
@@ -283,7 +291,7 @@

Method details

ColorSplitButtonconstructor

public - function ColorSplitButton(id:String, s:Object) + function ColorSplitButton(id:String, s:Object, ed:Editor)
Constructs a new color split button control instance.

Parameters

@@ -296,6 +304,10 @@

Parameters

s:Object Optional name/value settings object. + +ed:Editor +The editor instance this button is for. +
@@ -307,6 +319,21 @@

destroymethod events tied to it will also be removed.

+
+

displayColormethod +

+public + function displayColor(c:String):void +
Change the currently selected color for the control. +
+

Parameters

+ + + + + +
c:StringColor code value in hex for example: #FF00FF
+

hideMenumethod

diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Container.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Container.html index 984e7aac49..27ef0f5911 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Container.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.Container.html @@ -39,7 +39,7 @@

tinymce.ui.Container

Subclasses -Toolbar +Toolbar, ToolbarGroup diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.KeyboardNavigation.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.KeyboardNavigation.html new file mode 100644 index 0000000000..6172ac776f --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.KeyboardNavigation.html @@ -0,0 +1,81 @@ + + + +Class: tinymce.ui.KeyboardNavigation + + + + + + + + + + + + +
+

tinymce.ui.KeyboardNavigation

+ + + + + + + + + +
Namespacetinymce.ui
ClassKeyboardNavigation
+
This class provides basic keyboard navigation using the arrow keys to children of a component. +For example, this class handles moving between the buttons on the toolbars. +
+
+

Public Methods

+ + + + + + + + + + + + + +
MethodDefined By
+
+KeyboardNavigation(settings:Object, dom:DOMUtils)
+
Create a new KeyboardNavigation instance to handle the focus for a specific element.
+
KeyboardNavigation
+
+
+
+

Method details

+
+

KeyboardNavigationconstructor +

+public + function KeyboardNavigation(settings:Object, dom:DOMUtils) +
Create a new KeyboardNavigation instance to handle the focus for a specific element. +
+

Parameters

+ + + + + + + + + +
settings:Objectthe settings object to define how keyboard navigation works.
dom:DOMUtilsthe DOMUtils instance to use.
+
+
+
+
+ + diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ListBox.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ListBox.html index 497485570e..a16121cb8d 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ListBox.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ListBox.html @@ -78,7 +78,7 @@

Public Methods

-ListBox(id:String, s:Object)
+ListBox(id:String, s:Object, ed:Editor)
Constructs a new listbox control instance.
ListBox @@ -306,7 +306,7 @@

Method details

ListBoxconstructor

public - function ListBox(id:String, s:Object) + function ListBox(id:String, s:Object, ed:Editor)
Constructs a new listbox control instance.

Parameters

@@ -319,6 +319,10 @@

Parameters

s:Object Optional name/value settings object. + +ed:Editor +Optional the editor instance this button is for. +
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.MenuButton.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.MenuButton.html index 4303de80a5..50aa4b7c46 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.MenuButton.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.MenuButton.html @@ -53,7 +53,7 @@

Public Methods

-MenuButton(id:String, s:Object)
+MenuButton(id:String, s:Object, ed:Editor)
Constructs a new split button control instance.
MenuButton @@ -219,7 +219,7 @@

Method details

MenuButtonconstructor

public - function MenuButton(id:String, s:Object) + function MenuButton(id:String, s:Object, ed:Editor)
Constructs a new split button control instance.

Parameters

@@ -232,6 +232,10 @@

Parameters

s:Object Optional name/value settings object. + +ed:Editor +Optional the editor instance this button is for. +
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.SplitButton.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.SplitButton.html index d091279a4c..62b7f29736 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.SplitButton.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.SplitButton.html @@ -61,7 +61,7 @@

Public Methods

-SplitButton(id:String, s:Object)
+SplitButton(id:String, s:Object, ed:Editor)
Constructs a new split button control instance.
SplitButton @@ -182,7 +182,7 @@

Method details

SplitButtonconstructor

public - function SplitButton(id:String, s:Object) + function SplitButton(id:String, s:Object, ed:Editor)
Constructs a new split button control instance.

Parameters

@@ -195,6 +195,10 @@

Parameters

s:Object Optional name/value settings object. + +ed:Editor +Optional the editor instance this button is for. +
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ToolbarGroup.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ToolbarGroup.html new file mode 100644 index 0000000000..e987e07e75 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.ui.ToolbarGroup.html @@ -0,0 +1,226 @@ + + + +Class: tinymce.ui.ToolbarGroup + + + + + + + + + + + + +
+

tinymce.ui.ToolbarGroup

+ + + + + + + + + + + + + +
Namespacetinymce.ui
ClassToolbarGroup
Inheritance +ToolbarGroup + +Container + + +Control + +
+
This class is used to group a set of toolbars together and control the keyboard navigation and focus. +
+
+

Public Properties

+ + + + + + + + + + + + + +
PropertyDefined By
+
+controls : Array
+
Array of controls added to the container.
+
+Container +
+

Public Methods

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MethodDefined By
+ +
Adds a control to the collection of controls for the container.
+
+Container +
+
+destroy():void
+
Destroys the control will free any memory by removing event listeners etc.
+
+Control +
+
+get(n:String):Control +
+
Returns a control by id from the containers collection.
+
+Container +
+
+isActive():Boolean
+
Returns true/false if the control is disabled or not.
+
+Control +
+
+isDisabled():Boolean
+
Returns true/false if the control is disabled or not.
+
+Control +
+
+isRendered():Boolean
+
Returns true/false if the control has been rendered or not.
+
+Control +
+
+postRender():void
+
Post render event.
+
+Control +
+
+remove():void
+
Removes the control.
+
+Control +
+
+renderHTML():String
+
Renders the toolbar group as a HTML string.
+
ToolbarGroup
+
+renderTo(n:Element):void
+
Renders the control to the specified container element.
+
+Control +
+
+setActive(s:Boolean):void
+
Sets the activated state for the control.
+
+Control +
+
+setDisabled(s:Boolean):void
+
Sets the disabled state for the control.
+
+Control +
+
+setState(c:String, s:Boolean):void
+
Sets the specified class state for the control.
+
+Control +
+
+
+
+

Method details

+
+

renderHTMLmethod +

+public + function renderHTML():String +
Renders the toolbar group as a HTML string. +
+

Returns

+
String - HTML for the toolbar control.
+
+
+
+
+ + diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.JSON.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.JSON.html index 559cf764e1..ba5460143e 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.JSON.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/class_tinymce.util.JSON.html @@ -56,7 +56,7 @@

Public Methods

-serialize(obj:Object, quote:String):string
+serialize(o:Object):string
[static] Serializes the specified object as a JSON string.
@@ -89,19 +89,15 @@

Returns

serializemethod

public static - function serialize(obj:Object, quote:String):string + function serialize(o:Object):string
Serializes the specified object as a JSON string.

Parameters

- + - - - -
obj:Objecto:Object Object to serialize as a JSON string.
quote:StringOptional quote string defaults to ".

Returns

string - JSON string serialized from input.
diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/index.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/index.html index 872d7bc3bf..6c7ade3356 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/index.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/index.html @@ -63,54 +63,32 @@

TinyMCE API

  • -Selection - -
  • -
  • - -Event - -
  • - - -
  • - -html - - @@ -147,6 +125,11 @@

    TinyMCE API

  • +KeyboardNavigation + +
  • +
  • + ListBox
  • @@ -185,6 +168,11 @@

    TinyMCE API

    Toolbar +
  • + +ToolbarGroup + +
  • diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/model.xml b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/model.xml index 3174c31511..74f5f5e407 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/model.xml +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/model.xml @@ -1,7 +1,6 @@ -Root level namespace this contains classes directly releated to the TinyMCE editor. This class handles the loading of themes/plugins or other add-ons and their language packs. @@ -289,6 +288,7 @@ depends on the use_native_selects settings state. This class contains the core logic for a TinyMCE editor. + // Add a class to all paragraphs in the editor. tinyMCE.activeEditor.dom.addClass(tinyMCE.activeEditor.dom.select('p'), 'someclass'); @@ -306,6 +306,7 @@ ed.onClick.add(function(ed, e) { }); ed.render(); + Constructs a editor instance by id. @@ -508,21 +509,6 @@ ed.render(); PreProcess object. - - - - - @@ -654,10 +640,6 @@ ed.render(); URI object to current document that holds the TinyMCE editor instance. - -Array with CSS files to load into the iframe. - - Renderes the editor/adds it to the page. @@ -686,20 +668,16 @@ It will fill the iframe with contents, setups DOM and selection objects for the This method should not be called directly. - -Schema instance, enables you to validate elements and it's children. - - DOM instance for the editor. - -HTML parser will be used when contents is inserted into the editor. + +Schema instance, enables you to validate elements and it's children. -DOM serializer for the editor. Will be used when contents is extracted from the editor. +DOM serializer for the editor. @@ -798,71 +776,44 @@ powerfull if you need more control use the ControlManagers factory methods inste Adds a custom command to the editor, you can also override existing commands with this method. The command that you add can be executed with execCommand. - + Command name to add/override. - + Function to execute when the command occurs. - + Optional scope to execute the function in. - -Callback function that gets called when a command is executed. - - -Display UI state true/false. - - -Optional value for command. - - -True/false state if the command was handled or not. - - Adds a custom query state command to the editor, you can also override existing commands with this method. The command that you add can be executed with queryCommandState function. - + Command name to add/override. - + Function to execute when the command state retrival occurs. - + Optional scope to execute the function in. - -Callback function that gets called when a queryCommandState is executed. - - -True/false state if the command is enabled or not like is it bold. - - Adds a custom query value command to the editor, you can also override existing commands with this method. The command that you add can be executed with queryCommandValue function. - + Command name to add/override. - + Function to execute when the command value retrival occurs. - + Optional scope to execute the function in. - -Callback function that gets called when a queryCommandValue is executed. - - -Value of the command or undefined. - - Adds a keyboard shortcut for some command or function. @@ -986,10 +937,10 @@ so all events etc that method has will get dispatched as well. Sets the specified content to the editor instance, this will cleanup the content before it gets set using the different cleanup rules options. - + Content to set to editor, normally HTML contents but can be other formats as well. - + Optional content object, this gets passed around through the whole set process. @@ -1000,7 +951,7 @@ the different cleanup rules options. Gets the content from the editor instance, this will cleanup the content before it gets returned using the different cleanup rules options. - + Optional content object, this gets passed around through the whole get process. @@ -1160,12 +1111,14 @@ overrides for native browser commands to address various bugs and issues. etc to the current selection or specific nodes. This engine was build to replace the browsers default formatting logic for execCommand due to it's inconsistant and buggy behavior. + tinymce.activeEditor.formatter.register('mycustomformat', { inline : 'span', styles : {color : '#ff0000'} }); tinymce.activeEditor.formatter.apply('mycustomformat'); + Returns the format by name or all formats if no name is specified. @@ -1296,36 +1249,6 @@ default formatting logic for execCommand due to it's inconsistant and buggy beha This class handles the undo/redo history levels for the editor. Since the build in undo/redo has major drawbacks a custom one was needed. - -This event will fire each time a new undo level is added to the undo manager. - - -UndoManager instance that got the new level. - - -The new level object containing a bookmark and contents. - - - -This event will fire when the user make an undo of a change. - - -UndoManager instance that got the new level. - - -The old level object containing a bookmark and contents. - - - -This event will fire when the user make an redo of a change. - - -UndoManager instance that got the new level. - - -The old level object containing a bookmark and contents. - - Adds a new undo level/snapshot to the undo list. @@ -1440,7 +1363,6 @@ native version use the callback method instead then it can be extended. -Contains classes for handling the browsers DOM. Utility class for various DOM manipulation and retrival functions. @@ -1548,6 +1470,36 @@ If the function then returns true indicating that it has found what it was looki Element matching the specified id or null if it wasn't found. + +Returns the next node that matches selector or function + + +Node to find siblings from. + + + + +Selector CSS expression or function. + + +Next node item matching the selector or null if it wasn't found. + + + +Returns the previous node that matches selector or function + + +Node to find siblings from. + + + + +Selector CSS expression or function. + + +Previous node item matching the selector or null if it wasn't found. + + Selects specific elements by a CSS level 3 pattern. For example "div#a1 p.test". This function is optimized for the most common patterns needed in TinyMCE but it also performes good enough @@ -1904,10 +1856,22 @@ URLs will get converted, hex color values fixed etc. Check processHTML for detai HTML content to set as inner HTML of the element. + +Processes the HTML by replacing strong, em, del in gecko since it doesn't support them +properly in a RTE environment. It also converts any URLs in links and images and places +a converted value into a separate attribute with the mce prefix like _mce_src or _mce_href. + + +HTML to process. + + +Processed HTML code. + + Returns the outer HTML of an element. - + Element ID or element object to get outer HTML from. @@ -1945,7 +1909,7 @@ URLs will get converted, hex color values fixed etc. Check processHTML for detai Entity encodes a string, encodes the most common entities <>"& into entities. - + String to encode with entities. @@ -1973,9 +1937,7 @@ URLs will get converted, hex color values fixed etc. Check processHTML for detai Returns true/false if the specified element is a block element or not. - - - + Element/Node to check. @@ -2347,6 +2309,30 @@ and handler references to be able to clean elements to reduce IE memory leaks. + +Schema validator class. + + +if (tinymce.activeEditor.schema.isValid('p', 'span')) + alert('span is valid child of p.'); + + + +Returns true/false if the specified element and optionally it's child is valid or not +according to the XHTML transitional DTD. + + +Element name to check for. + + +Element child name to check for. + + +true/false if the element is valid or not. + + + + This class handles text and control selection it's an crossbrowser utility class. Consult the TinyMCE Wiki API for more details and examples on how to use this class. @@ -2426,6 +2412,16 @@ can then be used to restore the selection after some content modification to the true/false if it was successful or not. + +Moves the selection to be collapsed immediately after the node. + + +HTML DOM element to position caret after. + + +the same element as the one that got passed in. + + Selects the specified element. This will place the start and end of the selection range around the element. @@ -2496,614 +2492,244 @@ can then be used to restore the selection after some content modification to the + +This class is used to serialize DOM trees into a string. +Consult the TinyMCE Wiki API for more details and examples on how to use this class. - -Instance of EventUtils for the current document. - - - - - -Contains html parser and serializer logic. - -This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make -sure that the node tree is valid according to the specified schema. So for example: <p>a<p>b</p>c</p> will become <p>a</p><p>b</p><p>c</p> - -var parser = new tinymce.html.DomParser({validate: true}, schema); -var rootNode = parser.parse('<h1>content</h1>'); - - -Constructs a new DomParser instance. - - -Name/value collection of settings. comment, cdata, text, start and end are callbacks. - - -HTML Schema class to use when parsing. - - - -Adds a node filter function to the parser, the parser will collect the specified nodes by name -and then execute the callback ones it has finished parsing the document. + +Constucts a new DOM serializer class. - -Callback function to execute once it has collected nodes. + +Optional name/Value collection of settings for the serializer. -parser.addNodeFilter('p,h1', function(nodes, name) { - for (var i = 0; i < nodes.length; i++) { - console.log(nodes[i].name); - } -}); - -Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes -and then execute the callback ones it has finished parsing the document. + +Sets a list of entities to use for the named entity encoded. - -Callback function to execute once it has collected nodes. + +List of entities in the following format: number,name,.... -parser.addAttributeFilter('src,href', function(nodes, name) { - for (var i = 0; i < nodes.length; i++) { - console.log(nodes[i].name); - } -}); - -Parses the specified HTML string into a DOM like node tree and returns the result. + +Sets the valid elements rules of the serializer this enables you to specify things like what elements should be +outputted and what attributes specific elements might have. +Consult the Wiki for more details on this format. - -Html string to sax parse. - - -Optional args object that gets passed to all filter functions. + +Valid elements rules string. - -Root node containing the tree. - -var rootNode = new DomParser({...}).parse('<b>text</b>'); - - - -Entity encoder class. - - - -Encodes the specified string using raw entities. This means only the required XML base entities will be endoded. + +Adds valid elements rules to the serializer this enables you to specify things like what elements should be +outputted and what attributes specific elements might have. +Consult the Wiki for more details on this format. - -Text to encode. - - -Optional flag to specify if the text is attribute contents. + +Valid elements rules string to add. - -Entity encoded text. - - -Encoded the specified text with both the attributes and text entities. This function will produce larger text contents -since it doesn't know if the context is within a attribute or text node. This was added for compatibility -and is exposed as the DOMUtils.encode function. + +Finds a rule object by name. - -Text to encode. + +Name to look for in rules collection. - -Entity encoded text. + +Rule object found or null if it wasn't found. - -Encodes the specified string using numeric entities. The core entities will be encoded as named ones but all non lower ascii characters -will be encoded into numeric entities. + +Finds an attribute rule object by name. - -Text to encode. + +Rule object to search though. - -Optional flag to specify if the text is attribute contents. + +Name of the rule to retrive. - -Entity encoded text. + +Rule object of the specified attribute. - -Encodes the specified string using named entities. The core entities will be encoded as named ones but all non lower ascii characters -will be encoded into named entities. + +Serializes the specified node into a HTML string. - -Text to encode. - - -Optional flag to specify if the text is attribute contents. + +Element/Node to serialize. - -Optional parameter with entities to use. + +Object to add serialized contents to, this object will also be passed to the event listeners. -Entity encoded text. +Serialized HTML contents. - -Returns an encode function based on the name(s) and it's optional entities. - - -Comma separated list of encoders for example named,numeric. - - -Optional parameter with entities to use instead of the built in set. - - -Encode function to be used. - - - -Constructs a new SaxParser instance. - - -Name/value collection of settings. comment, cdata, text, start and end are callbacks. - - -HTML Schema class to use when parsing. - - - -Parses the specified HTML string and executes the callbacks for each item it finds. - - -Html string to sax parse. - -new SaxParser({...}).parse('<b>text</b>'); - -This class parses HTML code using pure JavaScript and executes various events for each item it finds. It will -always execute the events in the right order for tag soup code like <b><p></b></p>. It will also remove elements -and attributes that doesn't fit the schema if the validate setting is enabled. - -var parser = new tinymce.html.SaxParser({ - validate: true, - - comment: function(text) { - console.log('Comment:', text); - }, - - cdata: function(text) { - console.log('CDATA:', text); - }, - - text: function(text, raw) { - console.log('Text:', text, 'Raw:', raw); - }, - - start: function(name, attrs, empty) { - console.log('Start:', name, attrs, empty); - }, - - end: function(name) { - console.log('End:', name); - }, - - pi: function(name, text) { - console.log('PI:', name, text); - }, - - doctype: function(text) { - console.log('DocType:', name); - } -}, schema); - -This class is a minimalistic implementation of a DOM like node used by the DomParser class. - -var node = new tinymce.html.Node('strong', 1); -someRoot.append(node); + +This class writes nodes into a string. - -Constructs a new Node instance. - - -Name of the node type. - - -Numeric type representing the node. - - - -Replaces the current node with the specified one. - - -Node to replace the current node with. - - -The old node that got replaced. - -someNode.replace(someNewNode); - - -Gets/sets or removes an attribute by name. + +Constructs a new StringWriter. - -Attribute name to set or get. - - -Optional value to set. - - - - -String or undefined on a get operation or the current node on a set operation. - -someNode.attr("name", "value"); // Sets an attribute -console.log(someNode.attr("name")); // Gets an attribute -someNode.attr("name", null); // Removes an attribute - - -Does a shallow clones the node into a new node. It will also exclude id attributes since -there should only be one id per document. - - -New copy of the original node. - -var clonedNode = node.clone(); - - -Wraps the node in in another node. - -node.wrap(wrapperNode); - - -Unwraps the node in other words it removes the node but keeps the children. - -node.unwrap(); - - -Removes the node from it's parent. - - -Current node that got removed. - -node.remove(); - - -Appends a new node as a child of the current node. - - -Node to append as a child of the current one. - - -The node that got appended. - -node.append(someNode); - - -Inserts a node at a specific position as a child of the current node. - - -Node to insert as a child of the current node. - - -Reference node to set node before/after. - - -Optional state to insert the node before the reference node. - - -The node that got inserted. - -parentNode.insert(newChildNode, oldChildNode); - - -Get all children by name. - - -Name of the child nodes to collect. - - -Array with child nodes matchin the specified name. - - - -Removes all children of the current node. - - -The current node that got cleared. - - - -Returns true/false if the node is to be considered empty or not - - -Name/value object with elements that are automatically treated as non empty elements. + +Optional settings object. - -true/false if the node is empty or not. - -node.isEmpty({img : true}); - -Creates a node of a specific type. + +Resets the writer so it can be reused the contents of the writer is cleared. - -Name of the node type to create for example "b" or "#text". - - -Name/value collection of attributes that will be applied to elements. - - - - -Schema validator class. + +Writes the start of an element like for example: <tag. -if (tinymce.activeEditor.schema.isValidChild('p', 'span')) - alert('span is valid child of p.'); - - if (tinymce.activeEditor.schema.getElementRule('p')) - alert('P is a valid element.'); - - -Constructs a new Schema instance. - - -Name/value settings object. + +Name of element to write. - -Returns a map with boolean attributes. - - -Name/value lookup map for boolean attributes. - - - -Returns a map with block elements. + +Writes an attrubute like for example: myattr="valie" - -Name/value lookup map for block elements. - - - -Returns a map with empty elements. - - -Name/value lookup map for empty elements. - - - -Returns a map with elements where white space is to be preserved like PRE or SCRIPT. - - -Name/value lookup map for white space elements. - - - -Returns true/false if the specified element and it's child is valid or not -according to the schema. - - -Element name to check for. + +Attribute name to write. - -Element child to verify. + +Attribute value to write. - -True/false if the element is a valid child of the specified parent. - - -Returns true/false if the specified element is valid or not -according to the schema. + +Write the end of a element. This will add a short end for elements with out children like for example a img element. - -Element name to check for. - - -Element object or undefined if the element isn't valid. - - -Parses a valid elements string and adds it to the schema. The valid elements format is for example "element[attr=default|otherattr]". -Existing rules will be replaced with the ones specified, so this extends the schema. + +Writes the end of a element. This will add a full end to the element even if it didn't have any children. - -String in the valid elements format to be parsed. - - -Parses a valid elements string and sets it to the schema. The valid elements format is for example "element[attr=default|otherattr]". -Existing rules will be replaced with the ones specified, so this extends the schema. + +Writes a text node value. - -String in the valid elements format to be parsed. + +Value to append as a text node. - -Adds custom non HTML elements to the schema. + +Writes a CDATA section. - -Comma separated list of custom elements to add. + +Value to write in CDATA. - -Parses a valid children string and adds them to the schema structure. The valid children format is for example: "element[child1|child2]". + +Writes a comment. - -Valid children elements string to parse + +Value of the comment. - - - -This class is used to serialize down the DOM tree into a string using a Writer instance. - - -new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>')); - - -Constructs a new Serializer instance. + +String writer specific function. Enables you to write raw contents to the string. - -Name/value settings object. - - -Schema instance to use. + +String with raw contents to write. - -Serializes the specified node into a string. + +String writer specific method. This encodes the raw entities of a string. - -Node instance to serialize. - - -String with HTML based on DOM tree. - -new tinymce.html.Serializer().serialize(new tinymce.html.DomParser().parse('<p>text</p>')); - - - - -This class is used to parse CSS styles it also compresses styles to reduce the output size. - -var Styles = new tinymce.html.Styles({ - url_converter: function(url) { - return url; - } -}); - -styles = Styles.parse('border: 1px solid red'); -styles.color = 'red'; - -console.log(new tinymce.html.StyleSerializer().serialize(styles)); - - -Parses the specified RGB color value and returns a hex version of that color. - - -RGB string value like rgb(1,2,3) + +String to encode. -Hex version of that RGB value like #FF00FF. - - - -Parses the specified style value into an object collection. This parser will also -merge and remove any redundant items that browsers might have added. It will also convert non hex -colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings. - - -Style value to parse for example: border:1px solid red;. - - -Object representation of that style like {border : '1px solid red'} +String with entity encoding of the raw elements like <>&". - -Serializes the specified style object into a string. + +Returns a string representation of the elements/nodes written. - -Object to serialize as string for example: {border : '1px solid red'} - - -Optional element name, if specified only the styles that matches the schema will be serialized. - -String representation of the style object for example: border: 1px solid red. +String representation of the written elements/nodes. - -This class is used to write HTML tags out it can be used with the Serializer or the SaxParser. - -var writer = new tinymce.html.Writer({indent : true}); -var parser = new tinymce.html.SaxParser(writer).parse('<p><br></p>'); -console.log(writer.getContent()); + +This class writes nodes into a XML document structure. This structure can then be +serialized down to a HTML string later on. - -Constructs a new Writer instance. + +Constructs a new XMLWriter. - -Name/value settings object. + +Optional settings object. - -Writes the a start element such as <p id="a">. + +Resets the writer so it can be reused the contents of the writer is cleared. - -Name of the element. - - -Optional attribute array or undefined if it hasn't any. - - -Optional empty state if the tag should end like <br />. - - -Writes the a end element such as </p>. + +Writes the start of an element like for example: <tag. - -Name of the element. + +Name of element to write. - -Writes a text node. + +Writes an attrubute like for example: myattr="valie" - -String to write out. + +Attribute name to write. - -Optional raw state if true the contents wont get encoded. + +Attribute value to write. - -Writes a cdata node such as <![CDATA[data]]>. + +Write the end of a element. This will add a short end for elements with out children like for example a img element. - -String to write out inside the cdata. - - -Writes a comment node such as <!-- Comment -->. + +Writes the end of a element. This will add a full end to the element even if it didn't have any children. - -String to write out inside the comment. - - -Writes a PI node such as <?xml attr="value" ?>. + +Writes a text node value. - -Name of the pi. - - -String to write out inside the pi. + +Value to append as a text node. - -Writes a doctype node such as <!DOCTYPE data>. + +Writes a CDATA section. - -String to write out inside the doctype. + +Value to write in CDATA. - -Resets the internal buffer if one wants to reuse the writer. + +Writes a comment. + +Value of the comment. + - -Returns the contents that got serialized. + +Returns a string representation of the elements/nodes written. -HTML contents that got written down. +String representation of the written elements/nodes. + + +Instance of EventUtils for the current document. + + + -Contains the different UI types such as buttons, listboxes etc. This class is used to create a UI button. A button is basically a link that is styled to look like a button or icon. @@ -3118,6 +2744,9 @@ that is styled to look like a button or icon. Optional name/value settings object. + +Optional the editor instance this button is for. + Renders the button as a HTML string. This method is much faster than using the DOM and when @@ -3160,6 +2789,9 @@ when you press the open menu. Optional name/value settings object. + +The editor instance this button is for. + Settings object. @@ -3201,6 +2833,13 @@ doesn't close them menu if it was a event inside the menu. Color code value in hex for example: #FF00FF + +Change the currently selected color for the control. + + +Color code value in hex for example: #FF00FF + + Post render event. This will be executed after the control has been rendered and can be used to set states, add events to the control etc. It's recommended for subclasses of the control to call this method by using this.parent(). @@ -3485,6 +3124,23 @@ context menu, or a menu for a list box or a menu bar. + +This class provides basic keyboard navigation using the arrow keys to children of a component. +For example, this class handles moving between the buttons on the toolbars. + + + +Create a new KeyboardNavigation instance to handle the focus for a specific element. + + +the settings object to define how keyboard navigation works. + + +the DOMUtils instance to use. + + + + This class is used to create list boxes/select list. This one will generate a non native control. This one has the benefits of having visual items added. @@ -3499,6 +3155,9 @@ a non native control. This one has the benefits of having visual items added. Optional name/value settings object. + +Optional the editor instance this button is for. + Array of ListBox items. @@ -3726,6 +3385,9 @@ that is styled to look like a button or icon. Optional name/value settings object. + +Optional the editor instance this button is for. + Fires when the menu is rendered. @@ -3967,6 +3629,9 @@ creating a whole toolbar with buttons it does make a lot of difference. Optional name/value settings object. + +Optional the editor instance this button is for. + Renders the split button as a HTML string. This method is much faster than using the DOM and when @@ -4027,9 +3692,38 @@ creating a whole toolbar with buttons it does make a lot of difference. + +This class is used to group a set of toolbars together and control the keyboard navigation and focus. + + + +Renders the toolbar group as a HTML string. + + +HTML for the toolbar control. + + + + + + + + + + + + + + + + + + + + + -Contains various utility classes such as json parser, cookies etc. This class contains simple cookie manangement functions. @@ -4177,12 +3871,9 @@ All internal events inside TinyMCE uses this class. Serializes the specified object as a JSON string. - + Object to serialize as a JSON string. - -Optional quote string defaults to ". - JSON string serialized from input. @@ -4314,7 +4005,6 @@ Consult the Wiki for details on what settings this method takes. -Contains plugin classes. This plugin adds auto-save capability to the TinyMCE text editor to rescue content inadvertently lost. By using localStorage. @@ -4612,6 +4302,10 @@ The current keys are longname, author, authorurl, infourl and version. Constant that is true if the browser is IE 6 or older. + +Constant that is true if the browser is IE 9 or newer. + + Constant that is true if the browser is Gecko. @@ -4641,24 +4335,6 @@ The current keys are longname, author, authorurl, infourl and version. true/false if the object is of the specified type. - -Makes a name/object map out of an array with names. - - - - -Items to make map out of. - - -Optional delimiter to split string by. - - -Optional map to add items to. - - -Name/value map of items. - - Performs an iteration of all items in a collection such as an object or array. This method will execure the callback function for each item in the collection, if the callback returns false the iteration will terminate. @@ -4673,9 +4349,11 @@ The callback has the following format: cb(value, key_or_index). Optional scope to execute the callback in. + tinymce.each([1, 2, 3], function(v, i) { console.log(i + '=' + v); }); + Creates a new array by the return value of each iteration function call. This enables you to convert @@ -4750,12 +4428,9 @@ More details on this method can be found in the Wiki. Class name, inheritage and prefix. - + Collection of methods to add to the class. - -Optional root object defaults to the global window object. - Executed the specified function for each item in a object tree. @@ -4836,6 +4511,7 @@ This method is useful for dealing with browser memory leaks where it might be vi Core namespace with core functionality for the TinyMCE API all sub classes will be added to this namespace/object. + // Using each method tinymce.each([1, 2, 3], function(v, i) { console.log(i + '=' + v); @@ -4844,6 +4520,7 @@ tinymce.each([1, 2, 3], function(v, i) { // Checking for a specific browser if (tinymce.isIE) console.log("IE"); + TinyMCE popup/dialog helper class. This gives you easy access to the diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/tinymce.vsdoc.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/tinymce.vsdoc.js index d4049c7444..91858b4cf1 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/tinymce.vsdoc.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/docs/api/tinymce.vsdoc.js @@ -1,7 +1,6 @@ // Namespaces tinymce = {} tinymce.dom = {} -tinymce.html = {} tinymce.ui = {} tinymce.util = {} tinymce.plugins = {} @@ -167,14 +166,12 @@ tinymce.Editor = function(id, s) { /// Name/value collection with editor settings. /// URI object to document configured for the TinyMCE instance. /// URI object to current document that holds the TinyMCE editor instance. - /// Array with CSS files to load into the iframe. /// Window manager reference, use this to open new windows and dialogs. /// Reference to the theme instance that was used to generate the UI. /// Control manager instance for the editor. Will enables you to create new UI elements and change their states etc. - /// Schema instance, enables you to validate elements and it's children. /// DOM instance for the editor. - /// HTML parser will be used when contents is inserted into the editor. - /// DOM serializer for the editor. Will be used when contents is extracted from the editor. + /// Schema instance, enables you to validate elements and it's children. + /// DOM serializer for the editor. /// Selection instance for the editor. /// Formatter instance. /// Undo manager instance, responsible for handling undo levels. @@ -197,7 +194,7 @@ tinymce.Editor = function(id, s) { /// Fires when a form submit event is intercepted. Editor instance.W3C DOM Event instance. /// Fires when a form reset event is intercepted. Editor instance.W3C DOM Event instance. /// Fires when a paste event is intercepted inside the editor. Editor instance.W3C DOM Event instance. - /// Fires when the Serializer does a preProcess on the contents. Editor instance.PreProcess object.DOM node for the item being serialized.The specified output format normally "html".Is true if the process is on a getContent operation.Is true if the process is on a setContent operation.Is true if the process is on a cleanup operation. + /// Fires when the Serializer does a preProcess on the contents. Editor instance.PreProcess object. /// Fires when the Serializer does a postProcess on the contents. Editor instance.PreProcess object. /// Fires before new contents is added to the editor. Using for example setContent. Editor instance. /// Fires before contents is extracted from the editor using for example getContent. Editor instance.W3C DOM Event instance. @@ -273,25 +270,25 @@ tinymce.Editor.prototype.addButton = function(n, s) { /// Settings object with title, cmd etc. } -tinymce.Editor.prototype.addCommand = function(name, callback, scope) { +tinymce.Editor.prototype.addCommand = function(n, f, s) { /// Adds a custom command to the editor, you can also override existing commands with this method. - /// Command name to add/override. - /// Function to execute when the command occurs. - /// Optional scope to execute the function in. + /// Command name to add/override. + /// Function to execute when the command occurs. + /// Optional scope to execute the function in. } -tinymce.Editor.prototype.addQueryStateHandler = function(name, callback, scope) { +tinymce.Editor.prototype.addQueryStateHandler = function(n, f, s) { /// Adds a custom query state command to the editor, you can also override existing commands with this method. - /// Command name to add/override. - /// Function to execute when the command state retrival occurs. - /// Optional scope to execute the function in. + /// Command name to add/override. + /// Function to execute when the command state retrival occurs. + /// Optional scope to execute the function in. } -tinymce.Editor.prototype.addQueryValueHandler = function(name, callback, scope) { +tinymce.Editor.prototype.addQueryValueHandler = function(n, f, s) { /// Adds a custom query value command to the editor, you can also override existing commands with this method. - /// Command name to add/override. - /// Function to execute when the command value retrival occurs. - /// Optional scope to execute the function in. + /// Command name to add/override. + /// Function to execute when the command value retrival occurs. + /// Optional scope to execute the function in. } tinymce.Editor.prototype.addShortcut = function(pa, desc, cmd_func, sc) { @@ -357,16 +354,16 @@ tinymce.Editor.prototype.save = function(o) { /// HTML string that got set into the textarea/div. } -tinymce.Editor.prototype.setContent = function(content, args) { +tinymce.Editor.prototype.setContent = function(h, o) { /// Sets the specified content to the editor instance, this will cleanup the content before it gets set using the different ... - /// Content to set to editor, normally HTML contents but can be other formats as well. - /// Optional content object, this gets passed around through the whole set process. + /// Content to set to editor, normally HTML contents but can be other formats as well. + /// Optional content object, this gets passed around through the whole set process. /// HTML string that got set into the editor. } -tinymce.Editor.prototype.getContent = function(args) { +tinymce.Editor.prototype.getContent = function(o) { /// Gets the content from the editor instance, this will cleanup the content before it gets returned using the different cle... - /// Optional content object, this gets passed around through the whole get process. + /// Optional content object, this gets passed around through the whole get process. /// Cleaned content string, normally HTML contents. } @@ -526,9 +523,6 @@ tinymce.Formatter.prototype.canApply = function(name) { tinymce.UndoManager = function() { /// This class handles the undo/redo history levels for the editor. - /// This event will fire each time a new undo level is added to the undo manager. UndoManager instance that got the new level.The new level object containing a bookmark and contents. - /// This event will fire when the user make an undo of a change. UndoManager instance that got the new level.The old level object containing a bookmark and contents. - /// This event will fire when the user make an redo of a change. UndoManager instance that got the new level.The old level object containing a bookmark and contents. } tinymce.UndoManager.prototype.add = function(l) { @@ -648,6 +642,20 @@ tinymce.dom.DOMUtils.prototype.get = function(n) { /// Element matching the specified id or null if it wasn't found. } +tinymce.dom.DOMUtils.prototype.getNext = function(node, selector) { + /// Returns the next node that matches selector or function + /// Node to find siblings from. + /// Selector CSS expression or function. + /// Next node item matching the selector or null if it wasn't found. +} + +tinymce.dom.DOMUtils.prototype.getPrev = function(node, selector) { + /// Returns the previous node that matches selector or function + /// Node to find siblings from. + /// Selector CSS expression or function. + /// Previous node item matching the selector or null if it wasn't found. +} + tinymce.dom.DOMUtils.prototype.select = function(p, s) { /// Selects specific elements by a CSS level 3 pattern. /// CSS level 1 pattern to select/find elements by. @@ -810,9 +818,15 @@ tinymce.dom.DOMUtils.prototype.setHTML = function(e, h) { /// HTML content to set as inner HTML of the element. } -tinymce.dom.DOMUtils.prototype.getOuterHTML = function(elm) { +tinymce.dom.DOMUtils.prototype.processHTML = function(h) { + /// Processes the HTML by replacing strong, em, del in gecko since it doesn't support them properly in a RTE environment. + /// HTML to process. + /// Processed HTML code. +} + +tinymce.dom.DOMUtils.prototype.getOuterHTML = function(e) { /// Returns the outer HTML of an element. - /// Element ID or element object to get outer HTML from. + /// Element ID or element object to get outer HTML from. /// Outer HTML string. } @@ -829,9 +843,9 @@ tinymce.dom.DOMUtils.prototype.decode = function(s) { /// Entity decoded string. } -tinymce.dom.DOMUtils.prototype.encode = function(text) { +tinymce.dom.DOMUtils.prototype.encode = function(s) { /// Entity encodes a string, encodes the most common entities <>"& into entities. - /// String to encode with entities. + /// String to encode with entities. /// Entity encoded string. } @@ -842,9 +856,9 @@ tinymce.dom.DOMUtils.prototype.insertAfter = function(node, reference_node) { /// Element that got added or an array with elements. } -tinymce.dom.DOMUtils.prototype.isBlock = function(node) { +tinymce.dom.DOMUtils.prototype.isBlock = function(n) { /// Returns true/false if the specified element is a block element or not. - /// Element/Node to check. + /// Element/Node to check. /// True/False state if the node is a block element or not. } @@ -1029,6 +1043,17 @@ tinymce.dom.EventUtils.prototype.destroy = function() { /// Destroys the instance. } +tinymce.dom.Schema = function() { + /// Schema validator class. +} + +tinymce.dom.Schema.prototype.isValid = function(name, child_name) { + /// Returns true/false if the specified element and optionally it's child is valid or not according to the XHTML transitiona... + /// Element name to check for. + /// Element child name to check for. + /// true/false if the element is valid or not. +} + tinymce.dom.Selection = function(dom, win, serializer) { /// This class handles text and control selection it's an crossbrowser utility class. /// DOMUtils object reference. @@ -1071,6 +1096,12 @@ tinymce.dom.Selection.prototype.moveToBookmark = function(bookmark) { /// true/false if it was successful or not. } +tinymce.dom.Selection.prototype.moveAfterNode = function(node) { + /// Moves the selection to be collapsed immediately after the node. + /// HTML DOM element to position caret after. + /// the same element as the one that got passed in. +} + tinymce.dom.Selection.prototype.select = function(node, content) { /// Selects the specified element. /// HMTL DOM element to select. @@ -1115,299 +1146,158 @@ tinymce.dom.Selection.prototype.getNode = function() { /// Currently selected element or common ancestor element. } -tinymce.html.DomParser = function(settings, schema) { - /// This class parses HTML code into a DOM like structure of nodes it will remove redundant whitespace and make sure that th... - /// Name/value collection of settings. comment, cdata, text, start and end are callbacks. - /// HTML Schema class to use when parsing. -} - -tinymce.html.DomParser.prototype.addNodeFilter = function(callback) { - /// Adds a node filter function to the parser, the parser will collect the specified nodes by name and then execute the call... - /// Callback function to execute once it has collected nodes. -} - -tinymce.html.DomParser.prototype.addAttributeFilter = function(callback) { - /// Adds a attribute filter function to the parser, the parser will collect nodes that has the specified attributes and then... - /// Callback function to execute once it has collected nodes. -} - -tinymce.html.DomParser.prototype.parse = function(html, args) { - /// Parses the specified HTML string into a DOM like node tree and returns the result. - /// Html string to sax parse. - /// Optional args object that gets passed to all filter functions. - /// Root node containing the tree. -} - -tinymce.html.SaxParser = function(settings, schema) { - /// This class parses HTML code using pure JavaScript and executes various events for each item it finds. - /// Name/value collection of settings. comment, cdata, text, start and end are callbacks. - /// HTML Schema class to use when parsing. -} - -tinymce.html.SaxParser.encodeRaw = function(text, attr) { - /// Encodes the specified string using raw entities. - /// Text to encode. - /// Optional flag to specify if the text is attribute contents. - /// Entity encoded text. -} - -tinymce.html.SaxParser.encodeAllRaw = function(text) { - /// Encoded the specified text with both the attributes and text entities. - /// Text to encode. - /// Entity encoded text. -} - -tinymce.html.SaxParser.encodeNumeric = function(text, attr) { - /// Encodes the specified string using numeric entities. - /// Text to encode. - /// Optional flag to specify if the text is attribute contents. - /// Entity encoded text. +tinymce.dom.Serializer = function(s) { + /// This class is used to serialize DOM trees into a string. + /// Optional name/Value collection of settings for the serializer. } -tinymce.html.SaxParser.encodeNamed = function(text, attr, entities) { - /// Encodes the specified string using named entities. - /// Text to encode. - /// Optional flag to specify if the text is attribute contents. - /// Optional parameter with entities to use. - /// Entity encoded text. +tinymce.dom.Serializer.prototype.setEntities = function(s) { + /// Sets a list of entities to use for the named entity encoded. + /// List of entities in the following format: number,name,.... } -tinymce.html.SaxParser.getEncodeFunc = function(name, entities) { - /// Returns an encode function based on the name(s) and it's optional entities. - /// Comma separated list of encoders for example named,numeric. - /// Optional parameter with entities to use instead of the built in set. - /// Encode function to be used. +tinymce.dom.Serializer.prototype.setRules = function(s) { + /// Sets the valid elements rules of the serializer this enables you to specify things like what elements should be outputte... + /// Valid elements rules string. } -tinymce.html.SaxParser.prototype.parse = function(html) { - /// Parses the specified HTML string and executes the callbacks for each item it finds. - /// Html string to sax parse. +tinymce.dom.Serializer.prototype.addRules = function(s) { + /// Adds valid elements rules to the serializer this enables you to specify things like what elements should be outputted an... + /// Valid elements rules string to add. } -tinymce.html.Node = function(name, type) { - /// This class is a minimalistic implementation of a DOM like node used by the DomParser class. - /// Name of the node type. - /// Numeric type representing the node. +tinymce.dom.Serializer.prototype.findRule = function(n) { + /// Finds a rule object by name. + /// Name to look for in rules collection. + /// Rule object found or null if it wasn't found. } -tinymce.html.Node.prototype.replace = function(node) { - /// Replaces the current node with the specified one. - /// Node to replace the current node with. - /// The old node that got replaced. +tinymce.dom.Serializer.prototype.findAttribRule = function(ru, n) { + /// Finds an attribute rule object by name. + /// Rule object to search though. + /// Name of the rule to retrive. + /// Rule object of the specified attribute. } -tinymce.html.Node.prototype.attr = function(name, value) { - /// Gets/sets or removes an attribute by name. - /// Attribute name to set or get. - /// Optional value to set. - /// String or undefined on a get operation or the current node on a set operation. +tinymce.dom.Serializer.prototype.serialize = function(n, o) { + /// Serializes the specified node into a HTML string. + /// Element/Node to serialize. + /// Object to add serialized contents to, this object will also be passed to the event listeners. + /// Serialized HTML contents. } -tinymce.html.Node.prototype.clone = function() { - /// Does a shallow clones the node into a new node. - /// New copy of the original node. -} - -tinymce.html.Node.prototype.wrap = function() { - /// Wraps the node in in another node. -} - -tinymce.html.Node.prototype.unwrap = function() { - /// Unwraps the node in other words it removes the node but keeps the children. -} - -tinymce.html.Node.prototype.remove = function() { - /// Removes the node from it's parent. - /// Current node that got removed. -} - -tinymce.html.Node.prototype.append = function(node) { - /// Appends a new node as a child of the current node. - /// Node to append as a child of the current one. - /// The node that got appended. -} - -tinymce.html.Node.prototype.insert = function(node, ref_node, before) { - /// Inserts a node at a specific position as a child of the current node. - /// Node to insert as a child of the current node. - /// Reference node to set node before/after. - /// Optional state to insert the node before the reference node. - /// The node that got inserted. -} - -tinymce.html.Node.prototype.getAll = function(name) { - /// Get all children by name. - /// Name of the child nodes to collect. - /// Array with child nodes matchin the specified name. -} - -tinymce.html.Node.prototype.empty = function() { - /// Removes all children of the current node. - /// The current node that got cleared. -} - -tinymce.html.Node.prototype.isEmpty = function(elements) { - /// Returns true/false if the node is to be considered empty or not - /// Name/value object with elements that are automatically treated as non empty elements. - /// true/false if the node is empty or not. -} - -tinymce.html.Node.create = function(name, attrs) { - /// Creates a node of a specific type. - /// Name of the node type to create for example "b" or "#text". - /// Name/value collection of attributes that will be applied to elements. -} - -tinymce.html.Schema = function(settings) { - /// Schema validator class. - /// Name/value settings object. -} - -tinymce.html.Schema.prototype.getBoolAttrs = function() { - /// Returns a map with boolean attributes. - /// Name/value lookup map for boolean attributes. -} - -tinymce.html.Schema.prototype.getBoolAttrs = function() { - /// Returns a map with block elements. - /// Name/value lookup map for block elements. -} - -tinymce.html.Schema.prototype.getEmptyElements = function() { - /// Returns a map with empty elements. - /// Name/value lookup map for empty elements. -} - -tinymce.html.Schema.prototype.getWhiteSpaceElements = function() { - /// Returns a map with elements where white space is to be preserved like PRE or SCRIPT. - /// Name/value lookup map for white space elements. -} - -tinymce.html.Schema.prototype.isValidChild = function(name, child) { - /// Returns true/false if the specified element and it's child is valid or not according to the schema. - /// Element name to check for. - /// Element child to verify. - /// True/false if the element is a valid child of the specified parent. +tinymce.dom.StringWriter = function(s) { + /// This class writes nodes into a string. + /// Optional settings object. } -tinymce.html.Schema.prototype.getElementRule = function(name) { - /// Returns true/false if the specified element is valid or not according to the schema. - /// Element name to check for. - /// Element object or undefined if the element isn't valid. +tinymce.dom.StringWriter.prototype.reset = function() { + /// Resets the writer so it can be reused the contents of the writer is cleared. } -tinymce.html.Schema.prototype.addValidElements = function(valid_elements) { - /// Parses a valid elements string and adds it to the schema. - /// String in the valid elements format to be parsed. +tinymce.dom.StringWriter.prototype.writeStartElement = function(n) { + /// Writes the start of an element like for example: + /// Name of element to write. } -tinymce.html.Schema.prototype.setValidElements = function(valid_elements) { - /// Parses a valid elements string and sets it to the schema. - /// String in the valid elements format to be parsed. +tinymce.dom.StringWriter.prototype.writeAttribute = function(n, v) { + /// Writes an attrubute like for example: myattr="valie" + /// Attribute name to write. + /// Attribute value to write. } -tinymce.html.Schema.prototype.addCustomElements = function(custom_elements) { - /// Adds custom non HTML elements to the schema. - /// Comma separated list of custom elements to add. +tinymce.dom.StringWriter.prototype.writeEndElement = function() { + /// Write the end of a element. } -tinymce.html.Schema.prototype.addValidChildren = function(valid_children) { - /// Parses a valid children string and adds them to the schema structure. - /// Valid children elements string to parse +tinymce.dom.StringWriter.prototype.writeFullEndElement = function() { + /// Writes the end of a element. } -tinymce.html.Serializer = function(settings, schema) { - /// This class is used to serialize down the DOM tree into a string using a Writer instance. - /// Name/value settings object. - /// Schema instance to use. +tinymce.dom.StringWriter.prototype.writeText = function(v) { + /// Writes a text node value. + /// Value to append as a text node. } -tinymce.html.Serializer.prototype.serialize = function(node) { - /// Serializes the specified node into a string. - /// Node instance to serialize. - /// String with HTML based on DOM tree. +tinymce.dom.StringWriter.prototype.writeCDATA = function(v) { + /// Writes a CDATA section. + /// Value to write in CDATA. } -tinymce.html.Styles = function() { - /// This class is used to parse CSS styles it also compresses styles to reduce the output size. +tinymce.dom.StringWriter.prototype.writeComment = function(v) { + /// Writes a comment. + /// Value of the comment. } -tinymce.html.Styles.prototype.toHex = function(color) { - /// Parses the specified RGB color value and returns a hex version of that color. - /// RGB string value like rgb(1,2,3) - /// Hex version of that RGB value like #FF00FF. +tinymce.dom.StringWriter.prototype.writeRaw = function(v) { + /// String writer specific function. + /// String with raw contents to write. } -tinymce.html.Styles.prototype.parse = function(css) { - /// Parses the specified style value into an object collection. - /// Style value to parse for example: border:1px solid red;. - /// Object representation of that style like {border : '1px solid red'} +tinymce.dom.StringWriter.prototype.encode = function(s) { + /// String writer specific method. + /// String to encode. + /// String with entity encoding of the raw elements like <>&". } -tinymce.html.Styles.prototype.serialize = function(styles, element_name) { - /// Serializes the specified style object into a string. - /// Object to serialize as string for example: {border : '1px solid red'} - /// Optional element name, if specified only the styles that matches the schema will be serialized. - /// String representation of the style object for example: border: 1px solid red. +tinymce.dom.StringWriter.prototype.getContent = function() { + /// Returns a string representation of the elements/nodes written. + /// String representation of the written elements/nodes. } -tinymce.html.Writer = function(settings) { - /// This class is used to write HTML tags out it can be used with the Serializer or the SaxParser. - /// Name/value settings object. +tinymce.dom.XMLWriter = function(s) { + /// This class writes nodes into a XML document structure. + /// Optional settings object. } -tinymce.html.Writer.prototype.start = function(name, attrs, empty) { - /// Writes the a start element such as . - /// Name of the element. - /// Optional attribute array or undefined if it hasn't any. - /// Optional empty state if the tag should end like
    . +tinymce.dom.XMLWriter.prototype.reset = function() { + /// Resets the writer so it can be reused the contents of the writer is cleared. } -tinymce.html.Writer.prototype.end = function(name) { - /// Writes the a end element such as . - /// Name of the element. +tinymce.dom.XMLWriter.prototype.writeStartElement = function(n) { + /// Writes the start of an element like for example: + /// Name of element to write. } -tinymce.html.Writer.prototype.text = function(text, raw) { - /// Writes a text node. - /// String to write out. - /// Optional raw state if true the contents wont get encoded. +tinymce.dom.XMLWriter.prototype.writeAttribute = function(n, v) { + /// Writes an attrubute like for example: myattr="valie" + /// Attribute name to write. + /// Attribute value to write. } -tinymce.html.Writer.prototype.cdata = function(text) { - /// Writes a cdata node such as . - /// String to write out inside the cdata. +tinymce.dom.XMLWriter.prototype.writeEndElement = function() { + /// Write the end of a element. } -tinymce.html.Writer.prototype.cdata = function(text) { - /// Writes a comment node such as . - /// String to write out inside the comment. +tinymce.dom.XMLWriter.prototype.writeFullEndElement = function() { + /// Writes the end of a element. } -tinymce.html.Writer.prototype.pi = function(name, text) { - /// Writes a PI node such as . - /// Name of the pi. - /// String to write out inside the pi. +tinymce.dom.XMLWriter.prototype.writeText = function(v) { + /// Writes a text node value. + /// Value to append as a text node. } -tinymce.html.Writer.prototype.doctype = function(text) { - /// Writes a doctype node such as . - /// String to write out inside the doctype. +tinymce.dom.XMLWriter.prototype.writeCDATA = function(v) { + /// Writes a CDATA section. + /// Value to write in CDATA. } -tinymce.html.Writer.prototype.reset = function() { - /// Resets the internal buffer if one wants to reuse the writer. +tinymce.dom.XMLWriter.prototype.writeComment = function(v) { + /// Writes a comment. + /// Value of the comment. } -tinymce.html.Writer.prototype.getContent = function() { - /// Returns the contents that got serialized. - /// HTML contents that got written down. +tinymce.dom.XMLWriter.prototype.getContent = function() { + /// Returns a string representation of the elements/nodes written. + /// String representation of the written elements/nodes. } -tinymce.ui.Button = function(id, s) { +tinymce.ui.Button = function(id, s, ed) { /// This class is used to create a UI button. /// Control id for the button. /// Optional name/value settings object. + /// Optional the editor instance this button is for. } tinymce.ui.Button.prototype.renderHTML = function() { @@ -1455,10 +1345,11 @@ tinymce.ui.Button.prototype.destroy = function() { /// } -tinymce.ui.ColorSplitButton = function(id, s) { +tinymce.ui.ColorSplitButton = function(id, s, ed) { /// This class is used to create UI color split button. /// Control id for the color split button. /// Optional name/value settings object. + /// The editor instance this button is for. /// Settings object. /// Current color value. /// Fires when the menu is shown. @@ -1483,6 +1374,11 @@ tinymce.ui.ColorSplitButton.prototype.setColor = function(c) { /// Color code value in hex for example: #FF00FF } +tinymce.ui.ColorSplitButton.prototype.displayColor = function(c) { + /// Change the currently selected color for the control. + /// Color code value in hex for example: #FF00FF +} + tinymce.ui.ColorSplitButton.prototype.postRender = function() { /// Post render event. } @@ -1770,10 +1666,17 @@ tinymce.ui.DropMenu.prototype.renderTo = function() { /// } -tinymce.ui.ListBox = function(id, s) { +tinymce.ui.KeyboardNavigation = function(settings, dom) { + /// This class provides basic keyboard navigation using the arrow keys to children of a component. + /// the settings object to define how keyboard navigation works. + /// the DOMUtils instance to use. +} + +tinymce.ui.ListBox = function(id, s, ed) { /// This class is used to create list boxes/select list. /// Control id for the list box. /// Optional name/value settings object. + /// Optional the editor instance this button is for. /// Array of ListBox items. /// Fires when the selection has been changed. /// Fires after the element has been rendered to DOM. @@ -1967,10 +1870,11 @@ tinymce.ui.Menu.prototype.destroy = function() { /// } -tinymce.ui.MenuButton = function(id, s) { +tinymce.ui.MenuButton = function(id, s, ed) { /// This class is used to create a UI button. /// Control id for the split button. /// Optional name/value settings object. + /// Optional the editor instance this button is for. /// Fires when the menu is rendered. } @@ -2233,10 +2137,11 @@ tinymce.ui.Separator.prototype.destroy = function() { /// } -tinymce.ui.SplitButton = function(id, s) { +tinymce.ui.SplitButton = function(id, s, ed) { /// This class is used to create a split button. /// Control id for the split button. /// Optional name/value settings object. + /// Optional the editor instance this button is for. } tinymce.ui.SplitButton.prototype.renderHTML = function() { @@ -2342,6 +2247,64 @@ tinymce.ui.Toolbar.prototype.destroy = function() { /// } +tinymce.ui.ToolbarGroup = function() { + /// This class is used to group a set of toolbars together and control the keyboard navigation and focus. + /// +} + +tinymce.ui.ToolbarGroup.prototype.renderHTML = function() { + /// Renders the toolbar group as a HTML string. + /// HTML for the toolbar control. +} + +tinymce.ui.ToolbarGroup.prototype.add = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.get = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.setDisabled = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.isDisabled = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.setActive = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.isActive = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.setState = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.isRendered = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.renderTo = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.postRender = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.remove = function() { + /// +} + +tinymce.ui.ToolbarGroup.prototype.destroy = function() { + /// +} + tinymce.util.Cookie = function() { /// This class contains simple cookie manangement functions. } @@ -2419,10 +2382,9 @@ tinymce.util.JSON = function() { /// JSON parser and serializer class. } -tinymce.util.JSON.serialize = function(obj, quote) { +tinymce.util.JSON.serialize = function(o) { /// Serializes the specified object as a JSON string. - /// Object to serialize as a JSON string. - /// Optional quote string defaults to ". + /// Object to serialize as a JSON string. /// JSON string serialized from input. } @@ -2664,6 +2626,7 @@ tinymce.isOpera = new Boolean(); tinymce.isWebKit = new Boolean(); tinymce.isIE = new Boolean(); tinymce.isIE6 = new Boolean(); +tinymce.isIE9 = new Boolean(); tinymce.isGecko = new Boolean(); tinymce.isMac = new Boolean(); tinymce.isAir = new Boolean(); @@ -2733,14 +2696,6 @@ tinymce.is = function(o, t) { /// true/false if the object is of the specified type. } -tinymce.makeMap = function(items, delim, map) { - /// Makes a name/object map out of an array with names. - /// Items to make map out of. - /// Optional delimiter to split string by. - /// Optional map to add items to. - /// Name/value map of items. -} - tinymce.each = function(o, cb, s) { /// Performs an iteration of all items in a collection such as an object or array. /// Collection to iterate. @@ -2782,11 +2737,10 @@ tinymce.trim = function(s) { /// New string with removed whitespace. } -tinymce.create = function(s, p, root) { +tinymce.create = function(s, o) { /// Creates a class, subclass or static singleton. /// Class name, inheritage and prefix. - /// Collection of methods to add to the class. - /// Optional root object defaults to the global window object. + /// Collection of methods to add to the class. } tinymce.walk = function(o, f, n, s) { diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/custom_formats.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/custom_formats.html index 1f8dac4899..ba9d1eb0c7 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/custom_formats.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/custom_formats.html @@ -10,7 +10,7 @@ // General options mode : "textareas", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full.html index a72dfd0b44..267d3df294 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full.html @@ -10,7 +10,7 @@ // General options mode : "textareas", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,wordcount,advlist,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full_jquery.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full_jquery.html index d8c17f76d7..0d9acb9f1c 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full_jquery.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/full_jquery.html @@ -19,7 +19,7 @@ // General options theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/skins.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/skins.html index 108f16d766..bdbd89ea7c 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/skins.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/skins.html @@ -12,7 +12,9 @@ mode : "exact", elements : "elm1", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + skin : "o2k7", + inlinepopups_skin : "clearlooks2", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -47,7 +49,7 @@ elements : "elm2", theme : "advanced", skin : "o2k7", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -83,7 +85,7 @@ theme : "advanced", skin : "o2k7", skin_variant : "silver", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", @@ -119,7 +121,7 @@ theme : "advanced", skin : "o2k7", skin_variant : "black", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + plugins : "lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/translate.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/translate.html index 7dcaa5d165..f066eb8189 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/translate.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/translate.html @@ -12,8 +12,8 @@ tinyMCE.init({ // General options mode : "textareas", - theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", + theme : "advanced", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/word.html b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/word.html index 64cd1d4ae8..44bef1bc50 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/word.html +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/examples/word.html @@ -10,7 +10,8 @@ // General options mode : "textareas", theme : "advanced", - plugins : "pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", + skin : "02k7", + plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups,autosave", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ControlManager.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ControlManager.js index c6450ed585..5fbe69353b 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ControlManager.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ControlManager.js @@ -239,7 +239,7 @@ c = new tinymce.ui.NativeListBox(id, s); else { cls = cc || t._cls.listbox || tinymce.ui.ListBox; - c = new cls(id, s); + c = new cls(id, s, ed); } t.controls[id] = c; @@ -303,7 +303,7 @@ if (s.menu_button) { cls = cc || t._cls.menubutton || tinymce.ui.MenuButton; - c = new cls(id, s); + c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); } else { cls = t._cls.button || tinymce.ui.Button; @@ -368,7 +368,7 @@ id = t.prefix + id; cls = cc || t._cls.splitbutton || tinymce.ui.SplitButton; - c = t.add(new cls(id, s)); + c = t.add(new cls(id, s, ed)); ed.onMouseDown.add(c.hideMenu, c); return c; @@ -417,7 +417,7 @@ id = t.prefix + id; cls = cc || t._cls.colorsplitbutton || tinymce.ui.ColorSplitButton; - c = new cls(id, s); + c = new cls(id, s, ed); ed.onMouseDown.add(c.hideMenu, c); // Remove the menu element when the editor is removed @@ -458,13 +458,25 @@ id = t.prefix + id; cls = cc || t._cls.toolbar || tinymce.ui.Toolbar; - c = new cls(id, s); + c = new cls(id, s, t.editor); if (t.get(id)) return null; return t.add(c); }, + + createToolbarGroup : function(id, s, cc) { + var c, t = this, cls; + id = t.prefix + id; + cls = cc || this._cls.toolbarGroup || tinymce.ui.ToolbarGroup; + c = new cls(id, s, t.editor); + + if (t.get(id)) + return null; + + return t.add(c); + }, /** * Creates a separator control instance. diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Editor.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Editor.js index 7c502e7d02..83cc3f3d1f 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Editor.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Editor.js @@ -591,6 +591,8 @@ var n, t = this, s = t.settings, w, h, e = t.getElement(), o, ti, u, bi, bc, re; tinymce.add(t); + + s.aria_label = s.aria_label || DOM.getAttrib(e, 'aria-label', t.getLang('aria.rich_text_area')); /** * Reference to the theme instance that was used to generate the UI. @@ -761,10 +763,13 @@ } // Create iframe - n = DOM.add(o.iframeContainer, 'iframe', { + //TODO: ACC add the appropriate description on this. + n = DOM.add(o.iframeContainer, 'iframe', { id : t.id + "_ifr", src : u || 'javascript:""', // Workaround for HTTPS warning in IE6/7 frameBorder : '0', + title : s.aria_label, + style : { width : '100%', height : h @@ -774,6 +779,7 @@ t.contentAreaContainer = o.iframeContainer; DOM.get(o.editorContainer).style.display = t.orgDisplay; DOM.get(t.id).style.display = 'none'; + DOM.setAttrib(t.id, 'aria-hidden', true); if (!isIE || !tinymce.relaxedDomain) t.setupIframe(); @@ -1338,8 +1344,10 @@ } // Is not content editable - if (!ce) + if (!ce) { + if (t.getWin().frameElement) t.getWin().frameElement.focus(); t.getWin().focus(); + } // Restore selected control element // This is needed when for example an image is selected within a @@ -2279,7 +2287,7 @@ } }); } else - dom.bind(t.getBody(), k, eventHandler); + dom.bind(isGecko ? t.getDoc() : t.getBody(), k, eventHandler); break; case 'paste': @@ -2511,25 +2519,19 @@ }); t.onKeyDown.add(function(ed, e) { + var sel; + switch (e.keyCode) { case 8: + sel = t.getDoc().selection; + // Fix IE control + backspace browser bug - if (t.selection.getRng().item) { - ed.dom.remove(t.selection.getRng().item(0)); + if (sel.createRange && sel.createRange().item) { + ed.dom.remove(sel.createRange().item(0)); return Event.cancel(e); } } }); - - /*if (t.dom.boxModel) { - t.getBody().style.height = '100%'; - - Event.add(t.getWin(), 'resize', function(e) { - var docElm = t.getDoc().documentElement; - - docElm.style.height = (docElm.offsetHeight - 10) + 'px'; - }); - }*/ } if (tinymce.isOpera) { @@ -2549,10 +2551,27 @@ if (!t.removed && t.undoManager.typing) addUndo(); }); + + t.dom.bind(t.dom.getRoot(), 'dragend', function(e) { + addUndo(); + }); t.onKeyUp.add(function(ed, e) { + var rng, parent, bookmark; if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45 || e.ctrlKey) addUndo(); + + // Fix for bug #3168, to remove odd ".." nodes from the DOM we need to get/set the HTML of the parent node. + if (isIE && e.keyCode == 8) { + rng = t.selection.getRng(); + if (rng.parentElement) { + parent = rng.parentElement(); + bookmark = t.selection.getBookmark(); + parent.innerHTML = parent.innerHTML; + t.selection.moveToBookmark(bookmark); + } + } + }); t.onKeyDown.add(function(ed, e) { @@ -2566,6 +2585,7 @@ rng = t.selection.getRng(); if (rng.parentElement) { + addUndo(); parent = rng.parentElement(); // Select next word when ctrl key is used in combo with delete @@ -2592,14 +2612,22 @@ t.selection.moveToBookmark(bookmark); } + addUndo(); + // Block the default delete behavior since it might be broken e.preventDefault(); return; } } + // Special handling for enter to ensure typing is still set to true + if (e.keyCode == 13 && t.undoManager.typing) { + addUndo(); + t.undoManager.typing = 1; + } + // Is caracter positon keys - if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 13 || e.keyCode == 45) { + if ((e.keyCode >= 33 && e.keyCode <= 36) || (e.keyCode >= 37 && e.keyCode <= 40) || e.keyCode == 45) { if (t.undoManager.typing) addUndo(); @@ -2617,6 +2645,50 @@ addUndo(); }); } + + // Bug fix for FireFox keeping styles from end of selection instead of start. + if (tinymce.isGecko) { + function getAttributeApplyFunction() { + t.undoManager.typing = 0; + t.undoManager.add(); + var template = t.dom.getAttribs(t.selection.getStart().cloneNode(false)); + return function() { + var target = t.selection.getStart(); + t.dom.removeAllAttribs(target); + each(template, function(attr) { + target.setAttributeNode(attr.cloneNode(true)); + }); + //t.dom.setAttribs(target, template); + t.undoManager.typing = 0; + t.undoManager.add(); + }; + } + + function isSelectionAcrossElements() { + var s = t.selection; + return !s.isCollapsed() && s.getStart() != s.getEnd(); + } + + t.onKeyPress.add(function(ed, e) { + if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) { + var applyAttributes = getAttributeApplyFunction(); + t.getDoc().execCommand('delete', false, null); + applyAttributes(); + return Event.cancel(e); + } + }); + + t.dom.bind(t.getDoc(), 'cut', function(e) { + if (isSelectionAcrossElements()) { + var applyAttributes = getAttributeApplyFunction(); + t.onKeyUp.addToTop(Event.cancel, Event); + setTimeout(function() { + applyAttributes(); + t.onKeyUp.remove(Event.cancel, Event); + }, 0); + } + }); + } }, _isHidden : function() { diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/EditorCommands.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/EditorCommands.js index fb977ff7d3..990d1b770e 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/EditorCommands.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/EditorCommands.js @@ -186,6 +186,7 @@ }); toggleFormat('align' + align); + execCommand('mceRepaint'); }, // Override list commands to fix WebKit bug @@ -339,7 +340,24 @@ }, InsertHorizontalRule : function() { - selection.setContent('
    '); + var hrElm, hrParent, rng; + selection.setContent('
    '); + + hrElm = dom.get('_mce_inserted_hr'); + hrParent = hrElm.parentNode; + // If HR is within a text block then split that block + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(hrParent.nodeName)) { + dom.split(hrParent, hrElm); + } + dom.removeAllAttribs(hrElm); + if (hrElm.nextSibling) { + rng = dom.createRng(); + rng.setStart(hrElm.nextSibling, 0); + rng.setEnd(hrElm.nextSibling, 0); + selection.setRng(rng); + } else { + selection.moveAfterNode(hrElm); + } }, mceToggleVisualAid : function() { @@ -357,6 +375,9 @@ if (tinymce.is(value, 'string')) value = {href : value}; + // Spaces are never valid in URLs and it's a very common mistake for people to make so we fix it here. + value.href = value.href.replace(' ', '%20'); + if (!link) { execNativeCommand('CreateLink', FALSE, 'javascript:mctmp(0);'); each(dom.select('a[href=javascript:mctmp(0);]'), function(link) { diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Formatter.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Formatter.js index bbb655456b..265f1ddf13 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Formatter.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Formatter.js @@ -120,6 +120,29 @@ } }; + var getTextDecoration = function(node) { + var decoration; + + ed.dom.getParent(node, function(n) { + decoration = ed.dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + + return decoration; + }; + + var processUnderlineAndColor = function(node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = getTextDecoration(node.parentNode); + if (ed.dom.getStyle(node, 'color') && textDecoration) { + ed.dom.setStyle(node, 'text-decoration', textDecoration); + } else if (ed.dom.getStyle(node, 'textdecoration') === textDecoration) { + ed.dom.setStyle(node, 'text-decoration', null); + } + } + }; + /** * Applies the specified format to the current selection or specified node. * @@ -362,10 +385,19 @@ applyRngStyle(expandRng(rng, formatList)); } else { if (!selection.isCollapsed() || !format.inline) { + // Obtain selection node before selection is unselected by applyRngStyle() + var curSelNode = ed.selection.getNode(); + // Apply formatting to selection bookmark = selection.getBookmark(); applyRngStyle(expandRng(selection.getRng(TRUE), formatList)); + // Colored nodes should be underlined so that the color of the underline matches the text color. + if (format.styles && (format.styles.color || format.styles.textDecoration)) { + tinymce.walk(curSelNode, processUnderlineAndColor, 'childNodes'); + processUnderlineAndColor(curSelNode); + } + selection.moveToBookmark(bookmark); selection.setRng(moveStart(selection.getRng(TRUE))); ed.nodeChanged(); @@ -564,6 +596,11 @@ rangeUtils.walk(rng, function(nodes) { each(nodes, function(node) { process(node); + + // Remove parent span if it only contains text-decoration: underline, yet a parent node is also underlined. + if (node.nodeType === 1 && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && getTextDecoration(node.parentNode) === 'underline') { + removeFormat({'deep': false, 'exact': true, 'inline': 'span', 'styles': {'textDecoration' : 'underline'}}, null, node); + } }); }); }; @@ -601,7 +638,8 @@ * @param {Node} node Optional node to apply the format to or remove from. Defaults to current selection. */ function toggle(name, vars, node) { - if (match(name, vars, node)) + var fmt = get(name); + if (match(name, vars, node) && (!('toggle' in fmt[0]) || fmt[0]['toggle'])) remove(name, vars, node); else apply(name, vars, node); @@ -943,7 +981,7 @@ var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, - endOffset = rng.endOffset, sibling, lastIdx; + endOffset = rng.endOffset, sibling, lastIdx, leaf; // This function walks up the tree if there is no siblings before/after the node function findParentContainer(container, child_name, sibling_name, root) { @@ -973,6 +1011,19 @@ return container; }; + // This function walks down the tree to find the leaf at the selection. + // The offset is also returned as if node initially a leaf, the offset may be in the middle of the text node. + function findLeaf(node, offset) { + if (offset === undefined) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + return { node: node, offset: offset }; + } + // If index based start position then resolve it if (startContainer.nodeType == 1 && startContainer.hasChildNodes()) { lastIdx = startContainer.childNodes.length - 1; @@ -998,12 +1049,36 @@ if (isBookmarkNode(startContainer)) startContainer = startContainer.nextSibling || startContainer; - if (isBookmarkNode(endContainer.parentNode)) + if (isBookmarkNode(endContainer.parentNode)) { + endOffset = dom.nodeIndex(endContainer); endContainer = endContainer.parentNode; + } - if (isBookmarkNode(endContainer)) - endContainer = endContainer.previousSibling || endContainer; + if (isBookmarkNode(endContainer) && endContainer.previousSibling) { + endContainer = endContainer.previousSibling; + endOffset = endContainer.length; + } + if (format[0].inline) { + // Avoid applying formatting to a trailing space. + leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) + leaf = findLeaf(leaf.node.previousSibling); + + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && + leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } else if (leaf.node.previousSibling) { + endContainer = leaf.node.previousSibling; + } + } + } + } + // Move start/end point up the tree if the leaves are sharp and if we are in different containers // Example * becomes !: !

    *texttext*

    ! // This will reduce the number of wrapper elements that needs to be created @@ -1491,6 +1566,10 @@ // Apply pending formats each(pendingFormats.apply.reverse(), function(item) { apply(item.name, item.vars, caret_node); + + // Colored nodes should be underlined so that the color of the underline matches the text color. + if (item.name === 'forecolor' && item.vars.value) + processUnderlineAndColor(caret_node.parentNode); }); // Remove pending formats diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Popup.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Popup.js index 36310c08b3..fb6f5d5c81 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Popup.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/Popup.js @@ -141,7 +141,7 @@ tinyMCEPopup = { t.getWindowArg('mce_height') - vp.h, t.id || window ); - }, 0); + }, 10); }, /** @@ -324,6 +324,8 @@ tinyMCEPopup = { document.title = ti = nv; } + if (!t.editor.getParam('browser_preferred_colors', false) || !t.isWindow) + t.dom.addClass(document.body, 'forceColors'); document.body.style.display = ''; // Restore selection in IE when focus is placed on a non textarea or input element of the type text diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js index 9930ee0dea..282c86265d 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js @@ -280,6 +280,7 @@ /** * Returns the next node that matches selector or function * + * @method getNext * @param {Node} node Node to find siblings from. * @param {String/function} selector Selector CSS expression or function. * @return {Node} Next node item matching the selector or null if it wasn't found. @@ -291,6 +292,7 @@ /** * Returns the previous node that matches selector or function * + * @method getPrev * @param {Node} node Node to find siblings from. * @param {String/function} selector Selector CSS expression or function. * @return {Node} Previous node item matching the selector or null if it wasn't found. @@ -496,7 +498,7 @@ case 'float': isIE ? s.styleFloat = v : s.cssFloat = v; break; - + default: s[na] = v || ''; } @@ -575,6 +577,20 @@ t.setAttrib(e, s.cssText); }, + /** + * Removes all attributes from an element or elements. + * + * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to remove attributes from. + */ + removeAllAttribs: function(e) { + return this.run(e, function(e) { + var attrs = e.attributes; + for (var i = attrs.length - 1; i >= 0; i--) { + e.removeAttributeNode(attrs.item(i)); + } + }); + }, + /** * Sets the specified attributes value of a element or elements. * @@ -632,7 +648,7 @@ } break; - + case "shape": e.setAttribute('_mce_style', v); break; @@ -878,19 +894,30 @@ delete o[p + '-left' + s]; }; + function canCompress(key) { + var split, value = o[key]; + if (!value || value.indexOf(' ') < 0) { + return; + } + split = value.split(' '); + if (each(split, function(v) { return v === split[0]; })) { + o[key] = split[0]; + return true; + } else { + return false; + } + } + function compress2(ta, a, b, c) { var t; - - t = o[a]; - if (!t) + + if (!canCompress(a)) return; - t = o[b]; - if (!t) + if (!canCompress(b)) return; - t = o[c]; - if (!t) + if (!canCompress(c)) return; // Compress @@ -1172,7 +1199,7 @@ function set() { // Remove all child nodes while (e.firstChild) - e.firstChild.removeNode(); + e.removeChild(e.firstChild); try { // IE will remove comments from the beginning @@ -1240,7 +1267,7 @@ n = nl[i]; // Is it a temp div - if (n._mce_tmp) { + if (n.hasAttribute("_mce_tmp")) { // Create new paragraph p = t.doc.createElement('p'); @@ -1527,7 +1554,7 @@ * @method insertAfter * @param {Element} node Element to insert after the reference. * @param {Element/String/Array} reference_node Reference element, element id or array of elements to insert after. - * @return {Element/Array} Element that got added or an array with elements. + * @return {Element/Array} Element that got added or an array with elements. */ insertAfter : function(node, reference_node) { reference_node = this.get(reference_node); @@ -1851,7 +1878,7 @@ * @return {Number} Index of the specified node. */ nodeIndex : function(node, normalized) { - var idx = 0, lastNodeType, lastNode, nodeType; + var idx = 0, lastNodeType, lastNode, nodeType, nodeValueExists; if (node) { for (lastNodeType = node.nodeType, node = node.previousSibling, lastNode = node; node; node = node.previousSibling) { @@ -1859,10 +1886,13 @@ // Normalize text nodes if (normalized && nodeType == 3) { - if (nodeType == lastNodeType || !node.nodeValue.length) + // ensure that text nodes that have been removed are handled correctly in Internet Explorer. + // (the nodeValue attribute will not exist, and will error here). + nodeValueExists = false; + try {nodeValueExists == node.nodeValue.length} catch (c) {} + if (nodeType == lastNodeType || !nodeValueExists) continue; } - idx++; lastNodeType = nodeType; } @@ -1874,7 +1904,7 @@ /** * Splits an element into two new elements and places the specified split * element or element between the new ones. For example splitting the paragraph at the bold element in - * this example

    abcabc123

    would produce

    abc

    abc

    123

    . + * this example

    abcabc123

    would produce

    abc

    abc

    123

    . * * @method split * @param {Element} pe Parent element to split. diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Range.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Range.js index 634459d507..bb5c626664 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Range.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Range.js @@ -106,23 +106,24 @@ }; function compareBoundaryPoints(h, r) { - var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET]; + var sc = t[START_CONTAINER], so = t[START_OFFSET], ec = t[END_CONTAINER], eo = t[END_OFFSET], + rsc = r.startContainer, rso = r.startOffset, rec = r.endContainer, reo = r.endOffset; // Check START_TO_START if (h === 0) - return _compareBoundaryPoints(sc, so, sc, so); - + return _compareBoundaryPoints(sc, so, rsc, rso); + // Check START_TO_END if (h === 1) - return _compareBoundaryPoints(sc, so, ec, eo); - + return _compareBoundaryPoints(ec, eo, rsc, rso); + // Check END_TO_END if (h === 2) - return _compareBoundaryPoints(ec, eo, ec, eo); - + return _compareBoundaryPoints(ec, eo, rec, reo); + // Check END_TO_START - if (h === 3) - return _compareBoundaryPoints(ec, eo, sc, so); + if (h === 3) + return _compareBoundaryPoints(sc, so, rec, reo); }; function deleteContents() { @@ -214,7 +215,7 @@ function _compareBoundaryPoints(containerA, offsetA, containerB, offsetB) { var c, offsetC, n, cmnRoot, childA, childB; - + // In the first case the boundary-points have the same container. A is before B // if its offset is less than the offset of B, A is equal to B if its offset is // equal to the offset of B, and A is after B if its offset is greater than the diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/RangeUtils.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/RangeUtils.js index 6f96886da8..bbe384cad7 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/RangeUtils.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/RangeUtils.js @@ -93,7 +93,7 @@ // If index based end position then resolve it if (endContainer.nodeType == 1 && endContainer.hasChildNodes()) - endContainer = endContainer.childNodes[Math.min(startOffset == endOffset ? endOffset : endOffset - 1, endContainer.childNodes.length - 1)]; + endContainer = endContainer.childNodes[Math.min(endOffset - 1, endContainer.childNodes.length - 1)]; // Find common ancestor and end points ancestor = dom.findCommonAncestor(startContainer, endContainer); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js index a2a8921e4d..bece3da398 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js @@ -40,6 +40,14 @@ callback(); }; + + function error() { + // Report the error and then try to carry on anyway - it's probably just a plugin that will go missing. + if (typeof(console) !== "undefined" && console.log) + console.log("Failed to load: " + url); + + done(); + }; id = dom.uniqueId(); @@ -64,7 +72,9 @@ dom.remove(script); done(); - } + }, + + error : error }); return; @@ -82,6 +92,7 @@ // fires onload event before the script is parsed and executed if (!tinymce.isIE) elm.onload = done; + elm.onerror = error; elm.onreadystatechange = function() { var state = elm.readyState; @@ -95,7 +106,7 @@ // Most browsers support this feature so we report errors // for those at least to help users track their missing plugins etc - // todo: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option + // TODO: Removed since it produced error if the document is unloaded by navigating away, re-add it as an option /*elm.onerror = function() { alert('Failed to load: ' + url); };*/ diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Selection.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Selection.js index 235a45e3d1..fef841c0b9 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Selection.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Selection.js @@ -154,6 +154,7 @@ // Move to caret marker c = t.dom.get('__caret'); + // Make sure we wrap it compleatly, Opera fails with a simple select call r = d.createRange(); r.setStartBefore(c); @@ -162,6 +163,7 @@ // Remove the caret position t.dom.remove('__caret'); + t.setRng(r); } else { if (r.item) { // Delete content and get caret text selection @@ -206,10 +208,6 @@ } } - // If start element is body element try to move to the first child if it exists - if (startElement && startElement.nodeName == 'BODY') - return startElement.firstChild || startElement; - return startElement; } else { startElement = rng.startContainer; @@ -512,6 +510,20 @@ t.setRng(bookmark.rng); } }, + + /** + * Moves the selection to be collapsed immediately after the node. + * + * @method moveAfterNode + * @param {Element} node HTML DOM element to position caret after. + * @return {Element} the same element as the one that got passed in. + */ + moveAfterNode: function(node) { + var rng = this.dom.createRng(); + rng.setStartAfter(node); + rng.setEndAfter(node); + this.setRng(rng); + }, /** * Selects the specified element. This will place the start and end of the selection range around the element. @@ -719,7 +731,7 @@ * @return {Element} Currently selected element or common ancestor element. */ getNode : function() { - var t = this, rng = t.getRng(), sel = t.getSel(), elm; + var t = this, rng = t.getRng(), sel = t.getSel(), elm, start = rng.startContainer, end = rng.endContainer; if (rng.setStart) { // Range maybe lost after the editor is made visible again @@ -740,6 +752,31 @@ // If the anchor node is a element instead of a text node then return this element if (tinymce.isWebKit && sel.anchorNode && sel.anchorNode.nodeType == 1) return sel.anchorNode.childNodes[sel.anchorOffset]; + + // Handle cases where the selection is immediately wrapped around a node and return that node instead of it's parent. + // This happens when you double click an underlined word in FireFox. + if (start.nodeType === 3 && end.nodeType === 3) { + function skipEmptyTextNodes(n, forwards) { + var orig = n; + while (n && n.nodeType === 3 && n.length === 0) { + n = forwards ? n.nextSibling : n.previousSibling; + } + return n || orig; + } + if (start.length === rng.startOffset) { + start = skipEmptyTextNodes(start.nextSibling, true); + } else { + start = start.parentNode; + } + if (rng.endOffset === 0) { + end = skipEmptyTextNodes(end.previousSibling, false); + } else { + end = end.parentNode; + } + + if (start && start === end) + return start; + } } if (elm && elm.nodeType == 3) diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js index 6a8692be41..57ae6be282 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js @@ -618,7 +618,7 @@ // Add correct prefix on IE if (isIE) { scopeName = n.scopeName; - if (scopeName && scopeName !== 'HTML' && scopeName !== 'html') + if (scopeName && scopeName !== 'HTML' && scopeName !== 'html' && nn.indexOf(scopeName+":")!==0 ) nn = scopeName + ':' + nn; } diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js index 3fdf4d9d4f..2199bcb048 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js @@ -186,7 +186,6 @@ ctrlRng = body.createControlRange(); ctrlRng.addElement(startContainer.childNodes[startOffset]); ctrlRng.select(); - ctrlRng.scrollIntoView(); return; } catch (ex) { // Ignore @@ -200,7 +199,6 @@ // Select the new range and scroll it into view ieRng.select(); - ieRng.scrollIntoView(); }; this.getRangeAt = function() { diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/firebug/FIREBUG.LICENSE b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/firebug/FIREBUG.LICENSE new file mode 100644 index 0000000000..8b9c44ab72 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/firebug/FIREBUG.LICENSE @@ -0,0 +1,30 @@ +Software License Agreement (BSD License) + +Copyright (c) 2007, Parakey Inc. +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Parakey Inc. nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission of Parakey Inc. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/tinymce.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/tinymce.js index 3483e445da..cd4d58e454 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/tinymce.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/tinymce.js @@ -94,6 +94,15 @@ */ t.isIE6 = t.isIE && /MSIE [56]/.test(ua); + /** + * Constant that is true if the browser is IE 9 or newer. + * + * @property isIE9 + * @type Boolean + * @final + */ + t.isIE9 = t.isIE && !/MSIE [5678]/.test(ua); + /** * Constant that is true if the browser is Gecko. * @@ -684,4 +693,4 @@ // Expose tinymce namespace to the global namespace (window) win.tinymce = win.tinyMCE = tinymce; -})(window); \ No newline at end of file +})(window); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Button.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Button.js index e7a53054cd..467ca768aa 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Button.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Button.js @@ -26,9 +26,10 @@ * @method Button * @param {String} id Control id for the button. * @param {Object} s Optional name/value settings object. + * @param {Editor} ed Optional the editor instance this button is for. */ - Button : function(id, s) { - this.parent(id, s); + Button : function(id, s, ed) { + this.parent(id, s, ed); this.classPrefix = 'mceButton'; }, @@ -43,13 +44,15 @@ var cp = this.classPrefix, s = this.settings, h, l; l = DOM.encode(s.label || ''); - h = ''; + h = ''; if (s.image) - h += '' + l + ''; + h += '' + DOM.encode(s.title) + '' + l; else - h += '' + (l ? '' + l + '' : '') + ''; + h += '' + (l ? '' + l + '' : ''); + h += ''; + h += ''; return h; }, diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js index 9391dc8862..f70e76f86e 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js @@ -26,11 +26,12 @@ * @method ColorSplitButton * @param {String} id Control id for the color split button. * @param {Object} s Optional name/value settings object. + * @param {Editor} ed The editor instance this button is for. */ - ColorSplitButton : function(id, s) { + ColorSplitButton : function(id, s, ed) { var t = this; - t.parent(id, s); + t.parent(id, s, ed); /** * Settings object. @@ -123,20 +124,20 @@ hideMenu : function(e) { var t = this; - // Prevent double toogles by canceling the mouse click event to the button - if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';})) - return; - - if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) { - DOM.removeClass(t.id, 'mceSplitButtonSelected'); - Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); - Event.remove(t.id + '_menu', 'keydown', t._keyHandler); - DOM.hide(t.id + '_menu'); - } + if (t.isMenuVisible) { + // Prevent double toogles by canceling the mouse click event to the button + if (e && e.type == "mousedown" && DOM.getParent(e.target, function(e) {return e.id === t.id + '_open';})) + return; - t.onHideMenu.dispatch(t); + if (!e || !DOM.getParent(e.target, '.mceSplitButtonMenu')) { + DOM.removeClass(t.id, 'mceSplitButtonSelected'); + Event.remove(DOM.doc, 'mousedown', t.hideMenu, t); + Event.remove(t.id + '_menu', 'keydown', t._keyHandler); + DOM.hide(t.id + '_menu'); + } - t.isMenuVisible = 0; + t.isMenuVisible = 0; + } }, /** @@ -145,13 +146,13 @@ * @method renderMenu */ renderMenu : function() { - var t = this, m, i = 0, s = t.settings, n, tb, tr, w; + var t = this, m, i = 0, s = t.settings, n, tb, tr, w, context; - w = DOM.add(s.menu_container, 'div', {id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'}); + w = DOM.add(s.menu_container, 'div', {role: 'listbox', id : t.id + '_menu', 'class' : s['menu_class'] + ' ' + s['class'], style : 'position:absolute;left:0;top:-1000px;'}); m = DOM.add(w, 'div', {'class' : s['class'] + ' mceSplitButtonMenu'}); DOM.add(m, 'span', {'class' : 'mceMenuLine'}); - n = DOM.add(m, 'table', {'class' : 'mceColorSplitMenu'}); + n = DOM.add(m, 'table', {role: 'presentation', 'class' : 'mceColorSplitMenu'}); tb = DOM.add(n, 'tbody'); // Generate color grid @@ -167,18 +168,30 @@ n = DOM.add(tr, 'td'); n = DOM.add(n, 'a', { + role : 'option', href : 'javascript:;', style : { backgroundColor : '#' + c }, + 'title': t.editor.getLang('colors.' + c, c), _mce_color : '#' + c }); + if (t.editor.forcedHighContrastMode) { + n = DOM.add(n, 'canvas', { width: 16, height: 16, 'aria-hidden': 'true' }); + if (n.getContext && (context = n.getContext("2d"))) { + context.fillStyle = '#' + c; + context.fillRect(0, 0, 16, 16); + } else { + // No point leaving a canvas element around if it's not supported for drawing on anyway. + DOM.remove(n); + } + } }); if (s.more_colors_func) { n = DOM.add(tb, 'tr'); n = DOM.add(n, 'td', {colspan : s.grid_width, 'class' : 'mceMoreColors'}); - n = DOM.add(n, 'a', {id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title); + n = DOM.add(n, 'a', {role: 'option', id : t.id + '_more', href : 'javascript:;', onclick : 'return false;', 'class' : 'mceMoreColors'}, s.more_colors_title); Event.add(n, 'click', function(e) { s.more_colors_func.call(s.more_colors_scope || this); @@ -187,13 +200,22 @@ } DOM.addClass(m, 'mceColorSplitMenu'); + + new tinymce.ui.KeyboardNavigation({ + root: t.id + '_menu', + items: DOM.select('a', t.id + '_menu'), + onCancel: function() { + t.hideMenu(); + t.focus(); + } + }); Event.add(t.id + '_menu', 'click', function(e) { var c; - e = e.target; + e = DOM.getParent(e.target, 'a', tb); - if (e.nodeName == 'A' && (c = e.getAttribute('_mce_color'))) + if (e && (c = e.getAttribute('_mce_color'))) t.setColor(c); return Event.cancel(e); // Prevent IE auto save warning @@ -209,13 +231,23 @@ * @param {String} c Color code value in hex for example: #FF00FF */ setColor : function(c) { + this.displayColor(c); + this.hideMenu(); + this.settings.onselect(c); + }, + + /** + * Change the currently selected color for the control. + * + * @method displayColor + * @param {String} c Color code value in hex for example: #FF00FF + */ + displayColor : function(c) { var t = this; DOM.setStyle(t.id + '_preview', 'backgroundColor', c); t.value = c; - t.hideMenu(); - t.settings.onselect(c); }, /** diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Container.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Container.js index 1a6a6aa34e..47d5b0e8f7 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Container.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Container.js @@ -24,8 +24,8 @@ tinymce.create('tinymce.ui.Container:tinymce.ui.Control', { * @param {String} id Control id to use for the container. * @param {Object} s Optional name/value settings object. */ - Container : function(id, s) { - this.parent(id, s); + Container : function(id, s, editor) { + this.parent(id, s, editor); /** * Array of controls added to the container. diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Control.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Control.js index d5635ffe92..826ee06ffc 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Control.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Control.js @@ -11,7 +11,7 @@ (function(tinymce) { // Shorten class names var DOM = tinymce.DOM, is = tinymce.is; - + /** * This class is the base class for all controls like buttons, toolbars, containers. This class should not * be instantiated directly other controls should inherit from this one. @@ -27,7 +27,7 @@ * @param {String} id Control id. * @param {Object} s Optional name/value settings object. */ - Control : function(id, s) { + Control : function(id, s, editor) { this.id = id; this.settings = s = s || {}; this.rendered = false; @@ -36,6 +36,18 @@ this.scope = s.scope || this; this.disabled = 0; this.active = 0; + this.editor = editor; + }, + + setAriaProperty : function(property, value) { + var element = DOM.get(this.id + '_aria') || DOM.get(this.id); + if (element) { + DOM.setAttrib(element, 'aria-' + property, !!value); + } + }, + + focus : function() { + DOM.get(this.id).focus(); }, /** @@ -46,19 +58,8 @@ * @param {Boolean} s Boolean state if the control should be disabled or not. */ setDisabled : function(s) { - var e; - if (s != this.disabled) { - e = DOM.get(this.id); - - // Add accessibility title for unavailable actions - if (e && this.settings.unavailable_prefix) { - if (s) { - this.prevTitle = e.title; - e.title = this.settings.unavailable_prefix + ": " + e.title; - } else - e.title = this.prevTitle; - } + this.setAriaProperty('disabled', s); this.setState('Disabled', s); this.setState('Enabled', !s); @@ -88,6 +89,7 @@ if (s != this.active) { this.setState('Active', s); this.active = s; + this.setAriaProperty('pressed', s); } }, diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js index cc4390c3f7..9573e2cfef 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js @@ -60,12 +60,20 @@ s['class'] = s['class'] || cs['class']; s.vp_offset_x = s.vp_offset_x || cs.vp_offset_x; s.vp_offset_y = s.vp_offset_y || cs.vp_offset_y; + s.keyboard_focus = cs.keyboard_focus; m = new tinymce.ui.DropMenu(s.id || DOM.uniqueId(), s); m.onAddItem.add(t.onAddItem.dispatch, t.onAddItem); return m; }, + + focus : function() { + var t = this; + if (t.keyboardNav) { + t.keyboardNav.focus(); + } + }, /** * Repaints the menu after new items have been added dynamically. @@ -202,13 +210,13 @@ } }); } + + Event.add(co, 'keydown', t._keyHandler, t); t.onShowMenu.dispatch(t); - if (s.keyboard_focus) { - Event.add(co, 'keydown', t._keyHandler, t); - DOM.select('a', 'menu_' + t.id)[0].focus(); // Select first link - t._focusIdx = 0; + if (s.keyboard_focus) { + t._setupKeyboardNav(); } }, @@ -223,6 +231,7 @@ if (!t.isMenuVisible) return; + if (t.keyboardNav) t.keyboardNav.destroy(); Event.remove(co, 'mouseover', t.mouseOverFunc); Event.remove(co, 'click', t.mouseClickFunc); Event.remove(co, 'keydown', t._keyHandler); @@ -292,8 +301,11 @@ destroy : function() { var t = this, co = DOM.get('menu_' + t.id); + if (t.keyboardNav) t.keyboardNav.destroy(); Event.remove(co, 'mouseover', t.mouseOverFunc); + Event.remove(DOM.select('a', co), 'focus', t.mouseOverFunc); Event.remove(co, 'click', t.mouseClickFunc); + Event.remove(co, 'keydown', t._keyHandler); if (t.element) t.element.remove(); @@ -310,15 +322,18 @@ renderNode : function() { var t = this, s = t.settings, n, tb, co, w; - w = DOM.create('div', {id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000'}); - co = DOM.add(w, 'div', {id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')}); + w = DOM.create('div', {role: 'listbox', id : 'menu_' + t.id, 'class' : s['class'], 'style' : 'position:absolute;left:0;top:0;z-index:200000;outline:0'}); + if (t.settings.parent) { + DOM.setAttrib(w, 'aria-parent', 'menu_' + t.settings.parent.id); + } + co = DOM.add(w, 'div', {role: 'presentation', id : 'menu_' + t.id + '_co', 'class' : t.classPrefix + (s['class'] ? ' ' + s['class'] : '')}); t.element = new Element('menu_' + t.id, {blocker : 1, container : s.container}); if (s.menu_line) DOM.add(co, 'span', {'class' : t.classPrefix + 'Line'}); // n = DOM.add(co, 'div', {id : 'menu_' + t.id + '_co', 'class' : 'mceMenuContainer'}); - n = DOM.add(co, 'table', {id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0}); + n = DOM.add(co, 'table', {role: 'presentation', id : 'menu_' + t.id + '_tbl', border : 0, cellPadding : 0, cellSpacing : 0}); tb = DOM.add(n, 'tbody'); each(t.items, function(o) { @@ -331,33 +346,36 @@ }, // Internal functions + _setupKeyboardNav : function(){ + var contextMenu, menuItems, t=this; + contextMenu = DOM.select('#menu_' + t.id)[0]; + menuItems = DOM.select('a[role=option]', 'menu_' + t.id); + menuItems.splice(0,0,contextMenu); + t.keyboardNav = new tinymce.ui.KeyboardNavigation({ + root: 'menu_' + t.id, + items: menuItems, + onCancel: function() { + t.hideMenu(); + }, + enableUpDown: true + }); + contextMenu.focus(); + }, - _keyHandler : function(e) { - var t = this, kc = e.keyCode; - - function focus(d) { - var i = t._focusIdx + d, e = DOM.select('a', 'menu_' + t.id)[i]; - - if (e) { - t._focusIdx = i; - e.focus(); - } - }; - - switch (kc) { - case 38: - focus(-1); // Select first link - return; - - case 40: - focus(1); - return; - - case 13: - return; - - case 27: - return this.hideMenu(); + _keyHandler : function(evt) { + var t = this, e; + switch (evt.keyCode) { + case 37: // Left + if (t.settings.parent) { + t.hideMenu(); + t.settings.parent.focus(); + Event.cancel(evt); + } + break; + case 39: // Right + if (t.mouseOverFunc) + t.mouseOverFunc(evt); + break; } }, @@ -375,8 +393,13 @@ } n = ro = DOM.add(tb, 'tr', {id : o.id, 'class' : cp + 'Item ' + cp + 'ItemEnabled'}); - n = it = DOM.add(n, 'td'); - n = a = DOM.add(n, 'a', {href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'}); + n = it = DOM.add(n, s.titleItem ? 'th' : 'td'); + n = a = DOM.add(n, 'a', {id: o.id + '_aria', role: s.titleItem ? 'presentation' : 'option', href : 'javascript:;', onclick : "return false;", onmousedown : 'return false;'}); + + if (s.parent) { + DOM.setAttrib(a, 'aria-haspopup', 'true'); + DOM.setAttrib(a, 'aria-owns', 'menu_' + o.id); + } DOM.addClass(it, s['class']); // n = DOM.add(n, 'span', {'class' : 'item'}); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/KeyboardNavigation.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/KeyboardNavigation.js new file mode 100644 index 0000000000..c20e950f99 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/KeyboardNavigation.js @@ -0,0 +1,154 @@ +(function(tinymce) { + var Event = tinymce.dom.Event, each = tinymce.each; + + /** + * This class provides basic keyboard navigation using the arrow keys to children of a component. + * For example, this class handles moving between the buttons on the toolbars. + * + * @class tinymce.ui.KeyboardNavigation + */ + tinymce.create('tinymce.ui.KeyboardNavigation', { + + /** + * Create a new KeyboardNavigation instance to handle the focus for a specific element. + * + * @constructor + * @method KeyboardNavigation + * @param {Object} settings the settings object to define how keyboard navigation works. + * @param {DOMUtils} dom the DOMUtils instance to use. + * + * @setting {Element/String} root the root element or ID of the root element for the control. + * @setting {Array} items an array containing the items to move focus between. Every object in this array must have an id attribute which maps to the actual DOM element. If the actual elements are passed without an ID then one is automatically assigned. + * @setting {Function} onCancel the callback for when the user presses escape or otherwise indicates cancelling. + * @setting {Function} onAction (optional) the action handler to call when the user activates an item. + * @setting {Boolean} enableLeftRight (optional, default) when true, the up/down arrows move through items. + * @setting {Boolean} enableUpDown (optional) when true, the up/down arrows move through items. + * Note for both up/down and left/right explicitly set both enableLeftRight and enableUpDown to true. + */ + KeyboardNavigation: function(settings, dom) { + var t = this, root = settings.root, items = settings.items, + enableUpDown = settings.enableUpDown, enableLeftRight = settings.enableLeftRight || !settings.enableUpDown, + excludeFromTabOrder = settings.excludeFromTabOrder, + itemFocussed, itemBlurred, rootKeydown, rootFocussed, focussedId; + dom = dom || tinymce.DOM; + + itemFocussed = function(evt) { + focussedId = evt.target.id; + }; + + itemBlurred = function(evt) { + dom.setAttrib(evt.target.id, 'tabindex', '-1'); + }; + + rootFocussed = function(evt) { + var item = dom.get(focussedId); + dom.setAttrib(item, 'tabindex', '0'); + item.focus(); + }; + + t.focus = function() { + dom.get(focussedId).focus(); + }; + + t.destroy = function() { + each(items, function(item) { + dom.unbind(dom.get(item.id), 'focus', itemFocussed); + dom.unbind(dom.get(item.id), 'blur', itemBlurred); + }); + dom.unbind(dom.get(root), 'focus', rootFocussed); + dom.unbind(dom.get(root), 'keydown', rootKeydown); + items = dom = root = t.focus = itemFocussed = itemBlurred = rootKeydown = rootFocussed = null; + t.destroy = function() {}; + }; + + t.moveFocus = function(dir, evt) { + var idx = -1, controls = t.controls, newFocus; + + if (!focussedId) return; + each(items, function(item, index) { + if (item.id === focussedId) { + idx = index; + return false; + } + }); + + idx += dir; + if (idx < 0) { + idx = items.length - 1; + } else if (idx >= items.length) { + idx = 0; + } + + newFocus = items[idx]; + dom.setAttrib(focussedId, 'tabindex', '-1'); + dom.setAttrib(newFocus.id, 'tabindex', '0'); + dom.get(newFocus.id).focus(); + if (settings.actOnFocus) { + settings.onAction(newFocus.id); + } + if (evt) Event.cancel(evt); + }; + + rootKeydown = function(evt) { + var DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_ESCAPE = 27, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32; + + switch (evt.keyCode) { + case DOM_VK_LEFT: + if (enableLeftRight) t.moveFocus(-1); + break; + case DOM_VK_RIGHT: + if (enableLeftRight) t.moveFocus(1); + break; + case DOM_VK_UP: + if (enableUpDown) t.moveFocus(-1); + break; + case DOM_VK_DOWN: + if (enableUpDown) t.moveFocus(1); + break; + case DOM_VK_ESCAPE: + if (settings.onCancel) { + settings.onCancel(); + Event.cancel(evt); + } + break; + case DOM_VK_ENTER: + case DOM_VK_RETURN: + case DOM_VK_SPACE: + if (settings.onAction) { + settings.onAction(focussedId); + Event.cancel(evt); + } + break; + } + }; + + + // Set up state and listeners for each item. + each(items, function(item, idx) { + var tabindex; + if (!item.id) { + item.id = dom.uniqueId('_mce_item_'); + } + + if (excludeFromTabOrder) { + dom.bind(item.id, 'blur', itemBlurred); + tabindex = '-1'; + } else { + tabindex = (idx === 0 ? '0' : '-1'); + } + dom.setAttrib(item.id, 'tabindex', tabindex); + dom.bind(dom.get(item.id), 'focus', itemFocussed); + }); + + // Setup initial state for root element. + if (items[0]){ + focussedId = items[0].id; + } + dom.setAttrib(root, 'tabindex', '-1'); + + // Setup listeners for root element. + dom.bind(dom.get(root), 'focus', rootFocussed); + dom.bind(dom.get(root), 'keydown', rootKeydown); + } + }); +})(tinymce); \ No newline at end of file diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js index 54bd42ec77..11ab2bd70d 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js @@ -26,11 +26,12 @@ * @method ListBox * @param {String} id Control id for the list box. * @param {Object} s Optional name/value settings object. + * @param {Editor} ed Optional the editor instance this button is for. */ - ListBox : function(id, s) { + ListBox : function(id, s, ed) { var t = this; - t.parent(id, s); + t.parent(id, s, ed); /** * Array of ListBox items. @@ -128,12 +129,13 @@ t.selectedIndex = idx; DOM.setHTML(e, DOM.encode(o.title)); DOM.removeClass(e, 'mceTitle'); + DOM.setAttrib(t.id, 'aria-valuenow', o.title); } else { DOM.setHTML(e, DOM.encode(t.settings.title)); DOM.addClass(e, 'mceTitle'); t.selectedValue = t.selectedIndex = null; + DOM.setAttrib(t.id, 'aria-valuenow', t.settings.title); } - e = 0; } }, @@ -179,10 +181,11 @@ renderHTML : function() { var h = '', t = this, s = t.settings, cp = t.classPrefix; - h = ''; - h += ''; - h += ''; - h += '
    ' + DOM.createHTML('a', {id : t.id + '_text', href : 'javascript:;', 'class' : 'mceText', onclick : "return false;", onmousedown : 'return false;'}, DOM.encode(t.settings.title)) + '' + DOM.createHTML('a', {id : t.id + '_open', tabindex : -1, href : 'javascript:;', 'class' : 'mceOpen', onclick : "return false;", onmousedown : 'return false;'}, '') + '
    '; + h = ''; + h += ''; + h += ''; + h += ''; return h; }, @@ -269,7 +272,10 @@ max_height : 150 }); - m.onHideMenu.add(t.hideMenu, t); + m.onHideMenu.add(function() { + t.hideMenu(); + t.focus(); + }); m.add({ title : t.settings.title, @@ -316,40 +322,39 @@ var t = this, cp = t.classPrefix; Event.add(t.id, 'click', t.showMenu, t); - Event.add(t.id + '_text', 'focus', function() { + Event.add(t.id, 'keydown', function(evt) { + if (evt.keyCode == 32) { // Space + t.showMenu(evt); + Event.cancel(evt); + } + }); + Event.add(t.id, 'focus', function() { if (!t._focused) { - t.keyDownHandler = Event.add(t.id + '_text', 'keydown', function(e) { - var idx = -1, v, kc = e.keyCode; - - // Find current index - each(t.items, function(v, i) { - if (t.selectedValue == v.value) - idx = i; - }); - - // Move up/down - if (kc == 38) - v = t.items[idx - 1]; - else if (kc == 40) - v = t.items[idx + 1]; - else if (kc == 13) { + t.keyDownHandler = Event.add(t.id, 'keydown', function(e) { + if (e.keyCode == 40) { + t.showMenu(); + Event.cancel(e); + } + }); + t.keyPressHandler = Event.add(t.id, 'keypress', function(e) { + var v; + if (e.keyCode == 13) { // Fake select on enter v = t.selectedValue; t.selectedValue = null; // Needs to be null to fake change + Event.cancel(e); t.settings.onselect(v); - return Event.cancel(e); - } - - if (v) { - t.hideMenu(); - t.select(v.value); } }); } t._focused = 1; }); - Event.add(t.id + '_text', 'blur', function() {Event.remove(t.id + '_text', 'keydown', t.keyDownHandler); t._focused = 0;}); + Event.add(t.id, 'blur', function() { + Event.remove(t.id, 'keydown', t.keyDownHandler); + Event.remove(t.id, 'keypress', t.keyPressHandler); + t._focused = 0; + }); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js index 6633bd4a38..0aaf89c4d4 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js @@ -26,9 +26,10 @@ * @method MenuButton * @param {String} id Control id for the split button. * @param {Object} s Optional name/value settings object. + * @param {Editor} ed Optional the editor instance this button is for. */ - MenuButton : function(id, s) { - this.parent(id, s); + MenuButton : function(id, s, ed) { + this.parent(id, s, ed); /** * Fires when the menu is rendered. @@ -90,7 +91,10 @@ icons : t.settings.icons }); - m.onHideMenu.add(t.hideMenu, t); + m.onHideMenu.add(function() { + t.hideMenu(); + t.focus(); + }); t.onRenderMenu.dispatch(t, m); t.menu = m; diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js index af76922ead..0273a92cab 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js @@ -41,6 +41,7 @@ */ setSelected : function(s) { this.setState('Selected', s); + this.setAriaProperty('checked', !!s); this.selected = s; }, diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js index 1689e05f38..e4801e7819 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js @@ -41,6 +41,7 @@ */ setDisabled : function(s) { DOM.get(this.id).disabled = s; + this.setAriaProperty('disabled', s); }, /** @@ -156,8 +157,8 @@ h += DOM.createHTML('option', {value : it.value}, it.title); }); - h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox'}, h); - + h = DOM.createHTML('select', {id : t.id, 'class' : 'mceNativeListBox', 'aria-labelledby': t.id + '_aria'}, h); + h += DOM.createHTML('span', {id : t.id + '_aria', 'style': 'display: none'}, t.settings.title); return h; }, @@ -168,7 +169,7 @@ * @method postRender */ postRender : function() { - var t = this, ch; + var t = this, ch, changeListenerAdded = true; t.rendered = true; @@ -190,8 +191,11 @@ var bf; Event.remove(t.id, 'change', ch); + changeListenerAdded = false; bf = Event.add(t.id, 'blur', function() { + if (changeListenerAdded) return; + changeListenerAdded = true; Event.add(t.id, 'change', onChange); Event.remove(t.id, 'blur', bf); }); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Separator.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Separator.js index 8ecd690391..9e6daf7932 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Separator.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Separator.js @@ -26,6 +26,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { Separator : function(id, s) { this.parent(id, s); this.classPrefix = 'mceSeparator'; + this.setDisabled(true); }, /** @@ -36,6 +37,6 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', { * @return {String} HTML for the separator control element. */ renderHTML : function() { - return tinymce.DOM.createHTML('span', {'class' : this.classPrefix}); + return tinymce.DOM.createHTML('span', {'class' : this.classPrefix, role : 'separator', 'aria-orientation' : 'vertical', tabindex : '-1'}); } }); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js index 945f5449f6..ddacf98ca6 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js @@ -25,9 +25,10 @@ * @method SplitButton * @param {String} id Control id for the split button. * @param {Object} s Optional name/value settings object. + * @param {Editor} ed Optional the editor instance this button is for. */ - SplitButton : function(id, s) { - this.parent(id, s); + SplitButton : function(id, s, ed) { + this.parent(id, s, ed); this.classPrefix = 'mceSplitButton'; }, @@ -44,18 +45,19 @@ h = ''; if (s.image) - h1 = DOM.createHTML('img ', {src : s.image, 'class' : 'mceAction ' + s['class']}); + h1 = DOM.createHTML('img ', {src : s.image, role: 'presentation', 'class' : 'mceAction ' + s['class']}); else h1 = DOM.createHTML('span', {'class' : 'mceAction ' + s['class']}, ''); - h += '' + DOM.createHTML('a', {id : t.id + '_action', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; + h1 += DOM.createHTML('span', {'class': 'mceVoiceLabel mceIconOnly', id: t.id + '_voice', style: 'display:none;'}, s.title); + h += '' + DOM.createHTML('a', {role: 'button', id : t.id + '_action', tabindex: '-1', href : 'javascript:;', 'class' : 'mceAction ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; - h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']}); - h += '' + DOM.createHTML('a', {id : t.id + '_open', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; + h1 = DOM.createHTML('span', {'class' : 'mceOpen ' + s['class']}, ''); + h += '' + DOM.createHTML('a', {role: 'button', id : t.id + '_open', tabindex: '-1', href : 'javascript:;', 'class' : 'mceOpen ' + s['class'], onclick : "return false;", onmousedown : 'return false;', title : s.title}, h1) + ''; h += ''; - - return DOM.createHTML('table', {id : t.id, 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', onmousedown : 'return false;', title : s.title}, h); + h = DOM.createHTML('table', {id : t.id, role: 'presentation', tabindex: '0', 'class' : 'mceSplitButton mceSplitButtonEnabled ' + s['class'], cellpadding : '0', cellspacing : '0', title : s.title}, h); + return DOM.createHTML('span', {role: 'button', 'aria-labelledby': t.id + '_voice', 'aria-haspopup': 'true'}, h); }, /** @@ -65,18 +67,34 @@ * @method postRender */ postRender : function() { - var t = this, s = t.settings; + var t = this, s = t.settings, activate; if (s.onclick) { - Event.add(t.id + '_action', 'click', function() { - if (!t.isDisabled()) + activate = function(evt) { + if (!t.isDisabled()) { s.onclick(t.value); + Event.cancel(evt); + } + }; + Event.add(t.id + '_action', 'click', activate); + Event.add(t.id, ['click', 'keydown'], function(evt) { + var DOM_VK_SPACE = 32, DOM_VK_ENTER = 14, DOM_VK_RETURN = 13, DOM_VK_UP = 38, DOM_VK_DOWN = 40; + if ((evt.keyCode === 32 || evt.keyCode === 13 || evt.keyCode === 14) && !evt.altKey && !evt.ctrlKey && !evt.metaKey) { + activate(); + Event.cancel(evt); + } else if (evt.type === 'click' || evt.keyCode === DOM_VK_DOWN) { + t.showMenu(); + Event.cancel(evt); + } }); } - Event.add(t.id + '_open', 'click', t.showMenu, t); - Event.add(t.id + '_open', 'focus', function() {t._focused = 1;}); - Event.add(t.id + '_open', 'blur', function() {t._focused = 0;}); + Event.add(t.id + '_open', 'click', function (evt) { + t.showMenu(); + Event.cancel(evt); + }); + Event.add([t.id, t.id + '_open'], 'focus', function() {t._focused = 1;}); + Event.add([t.id, t.id + '_open'], 'blur', function() {t._focused = 0;}); // Old IE doesn't have hover on all elements if (tinymce.isIE6 || !DOM.boxModel) { @@ -97,6 +115,7 @@ Event.clear(this.id + '_action'); Event.clear(this.id + '_open'); + Event.clear(this.id); } }); })(tinymce); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js index 4c6142edf8..6c6504dc81 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js @@ -8,6 +8,9 @@ * Contributing: http://tinymce.moxiecode.com/contributing */ +(function(tinymce) { +// Shorten class names +var dom = tinymce.DOM, each = tinymce.each /** * This class is used to create toolbars a toolbar is a container for other controls like buttons etc. * @@ -23,7 +26,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', { * @return {String} HTML for the toolbar control. */ renderHTML : function() { - var t = this, h = '', c, co, dom = tinymce.DOM, s = t.settings, i, pr, nx, cl; + var t = this, h = '', c, co, s = t.settings, i, pr, nx, cl; cl = t.controls; for (i=0; i')); - return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || ''}, '' + h + ''); + return dom.createHTML('table', {id : t.id, 'class' : 'mceToolbar' + (s['class'] ? ' ' + s['class'] : ''), cellpadding : '0', cellspacing : '0', align : t.settings.align || '', role: 'presentation', tabindex: '-1'}, '' + h + ''); } }); +})(tinymce); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ToolbarGroup.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ToolbarGroup.js new file mode 100644 index 0000000000..31968aba05 --- /dev/null +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/classes/ui/ToolbarGroup.js @@ -0,0 +1,72 @@ +/** + * ToolbarGroup.js + * + * Copyright 2010, Moxiecode Systems AB + * Released under LGPL License. + * + * + * License: http://tinymce.moxiecode.com/license + * Contributing: http://tinymce.moxiecode.com/contributing + */ + +(function(tinymce) { +// Shorten class names +var dom = tinymce.DOM, each = tinymce.each, Event = tinymce.dom.Event; +/** + * This class is used to group a set of toolbars together and control the keyboard navigation and focus. + * + * @class tinymce.ui.ToolbarGroup + * @extends tinymce.ui.Container + */ +tinymce.create('tinymce.ui.ToolbarGroup:tinymce.ui.Container', { + /** + * Renders the toolbar group as a HTML string. + * + * @method renderHTML + * @return {String} HTML for the toolbar control. + */ + renderHTML : function() { + var t = this, h = [], controls = t.controls, each = tinymce.each, settings = t.settings; + h.push('
    '); + //TODO: ACC test this out - adding a role = application for getting the landmarks working well. + h.push(""); + h.push(''); + each(controls, function(toolbar) { + h.push(toolbar.renderHTML()); + }); + h.push(""); + h.push('
    '); + return h.join(''); + }, + + focus : function() { + this.keyNav.focus(); + }, + + postRender : function() { + var t = this, items = []; + each(t.controls, function(toolbar) { + each (toolbar.controls, function(control) { + if (control.id) { + items.push(control); + } + }); + }); + t.keyNav = new tinymce.ui.KeyboardNavigation({ + root: t.id, + items: items, + onCancel: function() { + t.editor.focus(); + }, + excludeFromTabOrder: !t.settings.tab_focus_toolbar + }); + }, + + destroy : function() { + var t = this; + t.parent(); + t.keyNav.destroy(); + Event.clear(t.id); + } +}); +})(tinymce); diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/langs/en.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/langs/en.js index ea4a1b0e14..70d4319245 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/langs/en.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/langs/en.js @@ -12,9 +12,54 @@ not_set:"-- Not set --", clipboard_msg:"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?", clipboard_no_support:"Currently not supported by your browser, use keyboard shortcuts instead.", popup_blocked:"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.", -invalid_data:"Error: Invalid values entered, these are marked in red.", +invalid_data:"{#field} is invalid", +invalid_data_number:"{#field} must be a number", +invalid_data_min:"{#field} must be a number greater than {#min}", +invalid_data_size:"{#field} must be a number or percentage", more_colors:"More colors" }, +colors:{ +'000000':'Black', +'993300':'Burnt orange', +'333300':'Dark olive', +'003300':'Dark green', +'003366':'Dark azure', +'000080':'Navy Blue', +'333399':'Indigo', +'333333':'Very dark gray', +'800000':'Maroon', +'FF6600':'Orange', +'808000':'Olive', +'008000':'Green', +'008080':'Teal', +'0000FF':'Blue', +'666699':'Grayish blue', +'808080':'Gray', +'FF0000':'Red', +'FF9900':'Amber', +'99CC00':'Yellow green', +'339966':'Sea green', +'33CCCC':'Turquoise', +'3366FF':'Royal blue', +'800080':'Purple', +'999999':'Medium gray', +'FF00FF':'Magenta', +'FFCC00':'Gold', +'FFFF00':'Yellow', +'00FF00':'Lime', +'00FFFF':'Aqua', +'00CCFF':'Sky blue', +'993366':'Brown', +'C0C0C0':'Silver', +'FF99CC':'Pink', +'FFCC99':'Peach', +'FFFF99':'Light yellow', +'CCFFCC':'Pale green', +'CCFFFF':'Pale cyan', +'99CCFF':'Light sky blue', +'CC99FF':'Plum', +'FFFFFF':'White' +}, contextmenu:{ align:"Alignment", left:"Left", @@ -167,4 +212,7 @@ upper_roman:"Upper roman", circle:"Circle", disc:"Disc", square:"Square" +}, +aria:{ +rich_text_area:"Rich Text Area" }}}); \ No newline at end of file diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js index 873bfd8d38..ad6a7b6988 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js @@ -1,5 +1,7 @@ tinyMCE.addI18n('en.advhr_dlg',{ +normal:"Normal", width:"Width", +widthunits:"Units", size:"Height", noshade:"No shadow" }); \ No newline at end of file diff --git a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm index fc37b2aecd..62ba733759 100644 --- a/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm +++ b/TinyMCEPlugin/pub/System/TinyMCEPlugin/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm @@ -8,22 +8,23 @@ - +
    - - - +
    + +
    - @@ -32,7 +33,7 @@
    +
    -