updating tinymce to 1.41

This commit is contained in:
JT Smith 2005-02-12 14:55:11 +00:00
parent dc1721d1ef
commit bd48711603
125 changed files with 5524 additions and 3444 deletions

View file

@ -1,3 +1,22 @@
Version 1.41 (2005-01-31)
Added new table plugin, all table code is moved into this plugin [BREAKS COMPATIBLITY].
Added new external_link_list_url/external_image_list_url options for better backend integration.
Added new file_browser_callback option for better backend integration.
Added new layout manager code into the advanced theme, contributed by SlyD.
Added new nowrap option, enables so users may change the word wraping behavior.
Added new Thai language pack contributed by Innozent.
Added obfuscated version of all plugins and themes to reduce over all startup/download time.
Added Simplified Chinese language pack contributed by cube316.
Added a updated Czech language pack thanks to Josef Klimosz.
Fixed issue where anchor elements where closed. This results in browser problems with the outputed HTML.
Fixed bug where the first return key press didn't produce a paragraph in Firefox/Mozilla.
Fixed bug in the searchreplace plugin where replace content sometimes fails in Firefox/Mozilla.
Fixed so all language packs now uses the ISO-639-2 code instead of ISO 3166-1 [BREAKS COMPATIBLITY].
Fixed some issues with the force_br_newlines option in MSIE.
Fixed bug where the backspace or delete key produced BR elements in Firefox/Mozilla.
Fixed bug issue with link and image dialogs of the default theme/simple example.
Fixed some bugs when having the editor hidden in a tab/div, contributed by Ernst de Moor.
Fixed some character issues with the Danish language packs, contributed by someone unknown.
Version 1.40 (2005-01-09)
Added a new default value for the font size drop down, if no font size where found this gets selected.
Added a auto resize window feature, this is enabled by default but can be disabled with a window argument.

View file

@ -15,7 +15,7 @@
</table>
<hr noshade>
<br>
Language packs are simply JavaScript name/value arrays placed in the &quot;&lt;FN Code&gt;.js&quot;
Language packs are simply JavaScript name/value arrays placed in the &quot;&lt;<a href="http://www.loc.gov/standards/iso639-2/englangn.html">ISO-639-2 code</a>&gt;.js&quot;
files in the &quot;lang&quot; direcotry. Remember to allways use the &quot;lang_&quot;
prefix for these value names so that they don't override other variables in the
templates. The example below shows how the cut, copy and paste texts are lang packed. Notice there are two kinds of language packs one is the general one shared by all themes these are located in the &quot;jscripts/tiny_mce/langs&quot; directory the other optional one is theme specific language packs these are contained in &quot;jscripts/tiny_mce/themes/&lt;some theme&gt;/langs&quot;.<br>
@ -31,12 +31,20 @@ templates. The example below shows how the cut, copy and paste texts are lang pa
</table>
<p>When translating TinyMCE, these are the files that currently needs to be translated:<br>
<br>
tinymce/jscripts/tiny_mce/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/emotions/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/iespell/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/preview/langs/uk.js<br>
tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js<br>
tinymce/jscripts/tiny_mce/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/advhr/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/advimage/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/advlink/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/emotions/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/flash/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/iespell/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/preview/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/print/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/save/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en.js<br>
tinymce/jscripts/tiny_mce/plugins/zoom/langs/en.js<br>
tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js<br>
<br>
Notice some language variables may include a name/url of a gif image or simmilar,
for example the button for bold has a &quot;F&quot; character in the Swedish

View file

@ -83,9 +83,7 @@ optional and is not a requierd setting.<br>
</tr>
<tr>
<td width="150"><strong>[language]</strong></td>
<td>Language pack to use with TinyMCE, this should be the FN codes like se,
uk, us and so forth and it's used to retrive the language packs located
in &quot;langs&quot;. This setting defaults to &quot;uk&quot;.</td>
<td>Language pack to use with TinyMCE, this should be a <a href="http://www.loc.gov/standards/iso639-2/englangn.html">ISO-639-2</a> code and it's used to retrive the language packs located in &quot;langs&quot;. This setting defaults to &quot;en&quot;.</td>
</tr>
<tr>
<td width="150"><strong>[elements]</strong></td>
@ -375,6 +373,22 @@ optional and is not a requierd setting.<br>
<td><strong>[cleanup_callback]</strong></td>
<td>Custom cleanup callback function, this enabled users to add custom cleanup logic to extend the build in one. This callback is called separatly from the default one, it doesn't replace the old one it just extends it. Check the <a href="themes.htm#cleanup">plugin cleanup</a> function for more details.</td>
</tr>
<tr>
<td><strong>[nowrap]</strong></td>
<td>Sets the how content is to be word wrapped. This option is a true/false option and is disabled by default. </td>
</tr>
<tr>
<td><strong>[external_link_list_url]</strong></td>
<td>URL to a backend page (PHP,ASP,ASPX,JSP) that is to populate a array with links called tinyMCELinkList check the <a href="../examples/example_link_list.js">example_link_list.js</a> for a example format. This option enables you to better integrate TinyMCE with a backend system. </td>
</tr>
<tr>
<td><strong>[external_image_list_url]</strong></td>
<td>URL to a backend page (PHP,ASP,ASPX,JSP) that is to populate a array with links called tinyMCEImageList check the <a href="../examples/example_image_list.js">example_image_list.js</a> for a example format. This option enables you to better integrate TinyMCE with a backend system. </td>
</tr>
<tr>
<td><strong>[file_browser_callback]</strong></td>
<td>String containting the callback function to execute on all &quot;browse&quot; buttons. These buttons will apaear when this option is enabled. The callback function format is: fileBrowserCallBack(field_name, url, type). Where field_name is the form field to place browse result in and the url is the url that is to be changed and type is link/image or flash. </td>
</tr>
<tr bgcolor="#CCCCCC">
<td colspan="2"><strong>Advanced theme specific settings </strong></td>
</tr>
@ -525,34 +539,6 @@ Mozilla Midas spec.</a> But there are a some tinyMCE specific commands. <br>
<td><strong>mceHelp</strong></td>
<td>Opens the manual pages.</td>
</tr>
<tr>
<td><strong>mceInsertTable</strong></td>
<td>Inserts a new table at cursor location the default size is 2x2. If the value parameter is specified it should contain a name/value array, this array has the following options cols, rows, border, cellspacing, cellpadding. The default border is set to: 0. </td>
</tr>
<tr>
<td><strong>mceTableInsertRowBefore</strong></td>
<td>Inserts a row before/above the current cursor location. </td>
</tr>
<tr>
<td><strong>mceTableInsertRowAfter</strong></td>
<td>Inserts a row after/under the current cursor location. </td>
</tr>
<tr>
<td><strong>mceTableDeleteRow</strong></td>
<td>Deletes the row at the current cursor location. </td>
</tr>
<tr>
<td><strong>mceTableInsertColBefore</strong></td>
<td>Inserts a column before the current cursor location.</td>
</tr>
<tr>
<td><strong>mceTableInsertColAfter</strong></td>
<td>Inserts a column after the current cursor location.</td>
</tr>
<tr>
<td><strong>mceTableDeleteCol</strong></td>
<td>Deletes the column at the current cursor location. </td>
</tr>
<tr>
<td><strong>mceAddControl</strong></td>
<td>Adds a editor control to the element id/name specified as value. </td>

View file

@ -0,0 +1,39 @@
<HTML>
<HEAD>
<TITLE>关于TinyMCE</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">关于 TinyMCE</span></td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</table>
<hr noshade>
<br>
<strong>概述</strong><br>
TinyMCE是一种适用于MSIE和Mozilla等浏览器的轻量级所见即所得编辑器以更加友好的方式供用户编辑HTML内容。它小而灵活为集成而构建已在Intranets, CMS, LMS之类的系统中有使用先例.<br>
<br>
TinyMCE由MoxieCode Systems AB开发根据&quot;LGPL&quot;版权协议发行,请查看版权许可以获取更多细节。<br>
<br>
<STRONG>特征</STRONG><BR>
- 易于集成,只需两行代码.<BR>
- 支持模板和自定义主题.<BR>
- 便于使用自定义代码扩展.<BR>
- 可定制的HTML输出.屏蔽组件,强加属性.<BR>
- 国际语言(语言包)支持,目前包括:英国英语,瑞典英语,意大利语,德语,荷兰,当然还有中文.<BR>
- 多浏览器支持目前有Mozilla, MSIE 及 FireFox.<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>

View file

@ -0,0 +1,355 @@
<html>
<head>
<title>兼容性图</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table class="pageheader" border="0" cellpadding="1" cellspacing="3"
width="100%">
<tbody>
<tr>
<td><span class="title">兼容性图</span></td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</tbody>
</table>
<hr noshade="noshade">
已经测试过的浏览器及平台设置矩阵:<br>
<br>
<table cellpadding="4" cellspacing="1" bgcolor="#000000">
<tbody>
<tr bgcolor="#FFFFFF">
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top; text-align: center;">Windows XP<br>
</td>
<td style="vertical-align: top; text-align: center;">Linux(Debian)<br>
</td>
<td style="vertical-align: top; text-align: center;">MacOS X 10.3<br>
</td>
<td style="vertical-align: top; text-align: center;">MacOS 9<br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">MSIE 6 </td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"></span><sup></sup><span
style="color: rgb(0, 102, 0);">OK</span> </td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">MSIE 5.5 SP2<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">MSIE 5.2<br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(255, 128, 0);">TextArea</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">MSIE 5.01 SP2 </td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span> <sup>(1)</sup></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">MSIE 5.0</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><br>
</td>
<td style="vertical-align: top;"><span
style="color: rgb(255, 128, 0);">TextArea</span></td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Netscape 7.2<br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Netscape 7.1<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Netscape 7.0.2<br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(255, 128, 0);">TextArea</span></td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.8<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><br>
</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.7.3<br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.7.2<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><br>
</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.7<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.6<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.5<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span> <sup>(2)</sup></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><span style="color: rgb(0, 102, 0);">OK</span></span>
<sup>(2)</sup></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><span style="color: rgb(0, 102, 0);">OK</span></span>
<sup>(2)</sup></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.4.1<br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.4<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.3.1<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><br>
</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><span style="color: rgb(0, 102, 0);">OK</span></span>
<sup>(3)</sup></td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Mozilla 1.3</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Firefox 1.0<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span> </td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Firefox 0.9<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Firefox 0.8<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);">OK</span></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Firebird 0.7<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><span style="color: rgb(0, 102, 0);">OK</span></span>
<sup>(2)</sup></td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(0, 102, 0);"><span style="color: rgb(0, 102, 0);">OK</span></span>
<sup>(2)</sup></td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Firebird 0.6<br>
</td>
<td
style="vertical-align: top; text-align: center; color: rgb(153, 0, 0);"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span style="color: rgb(153, 0, 0);">NO</span><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE" style="vertical-align: top;">Safari 1.2.4<br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(255, 204, 0);"></span><br>
</td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
<td style="vertical-align: top; text-align: center;"><span
style="color: rgb(255, 128, 0);">TextArea</span> </td>
<td style="vertical-align: top; text-align: center;"><br>
</td>
</tr>
</tbody>
</table>
<br>
<span style="color: rgb(0, 102, 0);">OK</span>&nbsp;&nbsp;正常工作<br>
<span style="color: rgb(153, 0, 0);">NO</span>&nbsp;&nbsp;完全不能工作<br>
<span style="color: rgb(255, 128, 0);">TextArea</span>&nbsp;&nbsp;非HTML编辑器仅文本域<br>
<span style="color: rgb(255, 128, 0);"><br>
</span>注意:<br>
(1) 由于CSS中缺少不透明支持被禁用按钮将无法变黯淡。<br>
(2) 重新定义表格尺寸仍有部分bug看起来似乎是浏览器的问题。<br>
(3) 不能重新定义表格尺寸,表格对话框根本不能起作用!<br>
<br>
<strong>测试中只包含了主流的、稳定的并且支持Midas特性的浏览器。并且请记住如果您的浏览器没有被列举在上方并不表示TinyMCE在那个浏览器中不能工作仅仅意味着没有核实过是否能正常工作。</strong><br>
<hr noshade="noshade">
<table class="pagefooter" border="0" cellpadding="1" cellspacing="3"
width="100%">
<tbody>
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</tbody>
</table>
<br>
<br>
</body>
</html>

View file

@ -0,0 +1,47 @@
<HTML>
<HEAD>
<TITLE> 常见问题FAQ </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">常见问题FAQ</span></td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</table>
<hr noshade>
<br>
<span class="subtitle">为什么&quot;剪切/复制/粘贴&quot;的图标看不到,它们去哪儿了?</span><br>
<br>
1.20版本中因为在Mozilla和Firefox上的安全性问题&quot;剪切/复制/粘贴&quot;的图标被移走了。如果一个功能在2/3的目标平台上无法工作它将不能被包含进来。换句话说它不是跨平台的。像Ctrl-X/C/V这样的快捷键还是能继续使用在浏览器的&quot;编辑&quot;菜单中也可以找到这些功能的子菜单。实际上只有图标快捷键被移除了。欲了解这个安全性问题的更详细信息请点击Mozilla网站上的&nbsp;<a href="http://bugzilla.mozilla.org/show_bug.cgi?id=192355" target="_blank">bugzilla</a>.<br>
<br>
<span class="subtitle">为什么MCE在Opera/Konqueror/Safari浏览器上不能正常工作</span><br>
<br>
只要这些浏览器不能像Mozilla和MSIE一样支持execCommand及designMode用JavaScript来创建所见即所得编辑器就是不可能的。但如果这些浏览器开始支持上述特性我们将尽快使tinyMCE能兼容之。<br>
<br>
<span class="subtitle">为什么有时候内容是重复的例如我从word中复制粘贴的时候</span><br>
<br>
当HTML内容没有正确格式化的时候就会发生这个错误这是MSIE的bug。当HTML代码包含&quot;&lt;b/&gt;&quot;或者嵌套的段落标签&quot;&lt;p&gt;&lt;p&gt;x&lt;/p&gt;&lt;/p&gt;&quot;的时候就会出错它产生一个错误的DOM tree及innerHTML上的错误输出。如果有人知道如何解决这个问题请告诉我。<span class="subtitle"><br>
<br>
为什么没有颜色选择跟字体选择?</span><br>
<br>
因为颜色跟字体选择将破坏站点或系统的布局标准例如会太显宽松所以没有必要在TinyMCE中加上这些。字体跟颜色可以通过CSS类来设置。<br>
<br>
<span class="subtitle">为什么&quot;撤消/恢复&quot;功能在Mozilla中不起作用</span><br>
<br>
这是因为&quot;custom_undo_redo&quot;选项被打开,此选项覆盖了键盘快捷键及命令工具栏上的可用按钮。但目前没有方法可以覆盖内置的&quot;撤消/恢复&quot;菜单子项。<br>
<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>

View file

@ -0,0 +1,39 @@
<HTML>
<HEAD>
<TITLE> 帮助索引 </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style1 {color: #FF0000}
-->
</style>
</HEAD>
<BODY>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">内容提要</span></td>
<td align="right">&nbsp;</td>
</tr>
</table>
<hr noshade>
<br>
请点击以下链接来查看帮助内容中的不同章节.
<ul class="toc_ul">
<li class="toc_li"><a href="about.htm">关于TinyMCE</a></li>
<li class="toc_li"><a href="using.htm">使用/集成TinyMCE</a></li>
<li class="toc_li"><a href="themes.htm">创建主题</a></li>
<li class="toc_li"><a href="langs.htm">创建语言包</a></li>
<li class="toc_li"><a href="compatiblity.htm">兼容性图</a></li>
<li class="toc_li"><a href="faq.htm">常见问题FAQ</a></li>
<li class="toc_li"><a href="license.htm">版权LGPL英文</a></li>
</ul>
<hr noshade>
<p>简体中文翻译 by<a href="http://www.cube316.net/" target="_blank">cube316</a><br>
<br>
<span class="style1">注意:某些地方由于英文文档说的相当含糊,或者译者本身水平缘故,
翻译的不是非常理想,不足之处请多多包涵。<br>
不能理解的地方可参阅英文文档,有更好的翻译也请 </span><a href="mailto:cube316@etang.com"><font color="#0000FF">让我知道</font></a><span class="style1"></span></p>
</BODY>
</HTML>

View file

@ -0,0 +1,49 @@
<html>
<head>
<title>创建语言包</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">创建语言包</span></td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</table>
<hr noshade>
<br>
语言包只是简单的将&quot;lang&quot;目录下&quot;&lt;FN Code&gt;.js&quot;文件中的JavaScript<U>名称-值</U>数组对替换而已。记得在这些名称中一定要使用&quot;lang_&quot;前缀,以免其跟模板中的其他变量冲突。<BR>
以下例子表明了cut, copy和paste的文字语言是如何被处理的<BR>
<br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">tinyMCELang['<font color="#CC0000">lang</font>_cut_desc']
= 'Cut (Ctrl+X)';<br>
tinyMCELang['<font color="#CC0000">lang</font>_copy_desc'] = 'Copy (Ctrl+C)';<br>
tinyMCELang['<font color="#CC0000">lang</font>_paste_desc'] = 'Paste (Ctrl+P)';</td>
</tr>
</table>
<BR>注意有两种类型的语言包,一种是被全部主题所共享的全局语言,它在&quot;jscripts/tiny_mce/langs&quot;目录中;<BR>另外一种是某主题特定语言,一般放在&quot;jscripts/tiny_mce/themes/&lt;some theme&gt;/langs&quot;目录中。<br>
<p>当翻译TinyMCE时以下是目前所需要翻译的文件<br>
<br>
tinymce/jscripts/tiny_mce/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/emotions/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/iespell/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/insertdatetime/langs/uk.js<br>
tinymce/jscripts/tiny_mce/plugins/preview/langs/uk.js<br>
tinymce/jscripts/tiny_mce/themes/advanced/langs/uk.js<br>
<br>注意某些语言变量可能会包含gif图片的name/url或类似例如在瑞典语言包中粗体的按钮有一个&quot;F&quot;字符。</p>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</table>
<br>
</body>
</html>

View file

@ -0,0 +1,388 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>License</TITLE>
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">License</span></td>
<td align="right"><a href="index.htm">TOC</a></td>
</tr>
</table>
<hr noshade>
<br>
<strong>Copyright &copy; 2004 Moxiecode Systems AB</strong><br>
<br>
This library is free software; you can redistribute it and/or<br>
modify it under the terms of the <strong>GNU Lesser General Public<br>
License</strong> as published by the Free Software Foundation; either<br>
version 2.1 of the License, or (at your option) any later version.<br>
<br>
This library is distributed in the hope that it will be useful,<br>
but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>
Lesser General Public License for more details.<br>
<br>
You should have received a copy of the GNU Lesser General Public<br>
License along with this library; if not, write to the Free Software<br>
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>
<br>
<hr noshade>
<br>
<strong>GNU Lesser General Public License<br>
Version 2.1, February 1999 </strong>
<p>Copyright (C) 1991, 1999 Free Software Foundation, Inc.<br>
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>
Everyone is permitted to copy and distribute verbatim copies<br>
of this license document, but changing it is not allowed.</p>
<p>[This is the first released version of the Lesser GPL. It also counts<br>
as the successor of the GNU Library Public License, version 2, hence<br>
the version number 2.1.]</p>
<p>Preamble<br>
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. </p>
<p>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. </p>
<p>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.</p>
<p>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. </p>
<p>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.
</p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>We call this license the &quot;Lesser&quot; 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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>The precise terms and conditions for copying, distribution and modification
follow. Pay close attention to the difference between a &quot;work based on
the library&quot; and a &quot;work that uses the library&quot;. The former contains
code derived from the library, whereas the latter must be combined with the
library in order to run. </p>
<p>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION<br>
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 &quot;this License&quot;). Each licensee is addressed as &quot;you&quot;.</p>
<p>A &quot;library&quot; 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. </p>
<p>The &quot;Library&quot;, below, refers to any such software library or work
which has been distributed under these terms. A &quot;work based on the Library&quot;
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 &quot;modification&quot;.)
</p>
<p>&quot;Source code&quot; 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.</p>
<p>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. </p>
<p>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.
</p>
<p>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. </p>
<p>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: </p>
<p>a) The modified work must itself be a software library. </p>
<p>b) You must cause the files modified to carry prominent notices stating that
you changed the files and the date of any change.</p>
<p>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. </p>
<p>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. </p>
<p>(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.) </p>
<p>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. </p>
<p>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. </p>
<p>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.
</p>
<p>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. </p>
<p>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. </p>
<p>This option is useful when you wish to copy part of the code of the Library
into a program that is not a library. </p>
<p>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. </p>
<p>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.</p>
<p>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 &quot;work that uses the Library&quot;. Such a work, in isolation,
is not a derivative work of the Library, and therefore falls outside the scope
of this License. </p>
<p>However, linking a &quot;work that uses the Library&quot; with the Library
creates an executable that is a derivative of the Library (because it contains
portions of the Library), rather than a &quot;work that uses the library&quot;.
The executable is therefore covered by this License. Section 6 states terms
for distribution of such executables. </p>
<p>When a &quot;work that uses the Library&quot; 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. </p>
<p>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.) </p>
<p>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. </p>
<p>6. As an exception to the Sections above, you may also combine or link a &quot;work
that uses the Library&quot; 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. </p>
<p>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: </p>
<p>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 &quot;work that
uses the Library&quot;, 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.) </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>e) Verify that the user has already received a copy of these materials or that
you have already sent this user a copy.</p>
<p>For an executable, the required form of the &quot;work that uses the Library&quot;
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. </p>
<p>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. </p>
<p>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: </p>
<p>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. </p>
<p>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.</p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>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. </p>
<p>This section is intended to make thoroughly clear what is believed to be a
consequence of the rest of this License. </p>
<p>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. </p>
<p>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.</p>
<p>Each version is given a distinguishing version number. If the Library specifies
a version number of this License which applies to it and &quot;any later version&quot;,
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. </p>
<p>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. </p>
<p>NO WARRANTY </p>
<p>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
&quot;AS IS&quot; 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. </p>
<p>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. <br>
</p>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>Go to: <a href="index.htm">Table of contents</a></td>
<td align="right"><a href="#">Top</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>

View file

@ -0,0 +1,439 @@
<HTML>
<HEAD>
<TITLE>创建主题</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td class="title">创建主题及插件</td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</table>
<hr noshade>
<br>
<span class="subtitle">创建你自己的主题与插件</span><br>
<br>如果你懂得HTML,CSS和Javascript的基础知识为TinyMCE创建自己的主题是相当容易的事情。<BR>最简单的方法莫过于将&quot;default&quot;或者&quot;advanced&quot;模板拷贝,并将它重命名为你自己的主题名称,例如:&quot;mytheme&quot;<BR>然后你需要把以下片断中的红色标记更改为&quot;mytheme&quot;,这样各种主题就不会冲突。换句话说,给这个主题指定了唯一的名字。<BR>更改里面的HTML代码使之适合你的主题但需要注意某些组件是必须的所以更改以下的每个函数时都请查看相应文档。<BR>此外自定义主题必须做为子目录放在tiny_mce的&quot;themes&quot;目录下。<BR>如果需要,你完全可以为自己的主题增加特定的选项和设置,不过记得要用以下的命名规则:&quot;theme_&lt;your theme&gt;_&lt;option&gt;&quot;<br>
<br>以下示例有三个函数,下面会详细介绍。<br>
<br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">function TinyMCE_<font color="#CC0000">default</font>_getEditorTemplate(settings)
{<br>
&nbsp;&nbsp;&nbsp;var template = new Array();<br>
<br> &nbsp;&nbsp;&nbsp;template['html'] = '&lt;Some HTML&gt;';<br>
&nbsp;&nbsp;&nbsp;template['delta_width'] = 0;<br>
&nbsp;&nbsp;&nbsp;template['delta_height'] = -40;<br>
<br>
&nbsp;&nbsp;&nbsp;return template;<br>
}
<p>function TinyMCE_<font color="#CC0000">default</font>_getInsertLinkTemplate(settings)
{<br>
&nbsp;&nbsp;&nbsp;var template = new Array();<br>
<br>
&nbsp;&nbsp;&nbsp;template['file'] = 'link.htm';<br>
&nbsp;&nbsp;&nbsp;template['width'] = 320;<br>
&nbsp;&nbsp;&nbsp;template['height'] = 130;<br>
<br>
&nbsp;&nbsp;&nbsp;return template;<br>
}<br>
<br>
function TinyMCE_<font color="#CC0000">default</font>_getInsertImageTemplate(settings)
{<br>
&nbsp;&nbsp;&nbsp;var template = new Array();<br>
<br>
&nbsp;&nbsp;&nbsp;template['file'] = 'image.htm';<br>
&nbsp;&nbsp;&nbsp;template['width'] = 320;<br>
&nbsp;&nbsp;&nbsp;template['height'] = 130;<br>
<br>
&nbsp;&nbsp;&nbsp;return template;<br>
}<br>
<br>
function TinyMCE_<font color="#CC0000">default</font>_handleNodeChange(editor_id,
node) {<br>
&nbsp;&nbsp;&nbsp;// Check what happend<br>
}<br>
<br>
function TinyMCE_<font color="#CC0000">default</font>_execCommand(editor_id, element, command, user_interface, value)
{<br>
&nbsp;&nbsp;&nbsp;//
Your custom command logic<br>
&nbsp;&nbsp;&nbsp;return false; <br>
}
<br>
</p>
</td>
</tr>
</table>
<br>
<hr noshade>
<p class="subtitle">使用外部模板文件</p>
<p>当用下面所描述的&quot;file&quot;参数使用外部模板文件时,需要把&quot;tiny_mce_popup.js&quot;包含进来。<BR>为了跟TinyMCE通讯此文件是必须的。所有的变量和语言定义在&quot;html&quot;属性中被替换。
</p>外部模板文件示例:
<br>
<br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">&lt;html&gt;<br>
&lt;head&gt;<br>
&lt;title&gt;<span class="failed">{$lang_theme_sample_title}</span>&lt;/title&gt;<br>
&lt;script language=&quot;javascript&quot; src=&quot;<span class="failed">../../tiny_mce_popup.js</span>&quot;&gt;&lt;/script&gt;<br>
&lt;script language=&quot;javascript&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(<span class="failed">tinyMCE.getWindowArg('some_arg')</span>);<br>
&lt;/script&gt;
<br>
&lt;body&gt;<br>
<span class="failed">{$lang_theme_sample_desc}</span><br>
&lt;/body&gt;
</td>
</tr>
</table><BR>
<hr noshade>
<br>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_getEditorTemplate(settings)</span></p>
<p>此函数负责编辑器实例在页面中的布局,它返回包含特定名称的<U>名称-值</U>对的数组。解释如下,注意用[]括起来的名称是可选的。<BR>此函数的settings参数是一个包含了tinyMCE设置和选项的<U>名称-值</U>对的数组。</p>
<strong>模板数据:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>html</strong></td>
<td>HTML模板数据它的值是实现编辑器所需的全部HTML代码。注意在使用时{$&lt;variable&gt;}会被实际的值替换。关于这些特定值的更详细说明见后面。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>[delta_width]</strong></td>
<td>Delta宽度此值包含用户界面所需的相关宽度。例如工具栏需要20象素则此值为-20。<BR>
这也是为什么编辑器的尺寸跟它所替换的组件宽度一致的原因。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>[delta_height]</strong></td>
<td>Delta高度此值包含用户界面所需的相关高度。例如工具栏需要40象素则此值为-40。<BR>
这也是为什么编辑器的尺寸跟它所替换的组件宽度一致的原因。</td>
</tr>
</table>
<p>上述&quot;html&quot;中的变量被TinyMCE的内部值所替换。有两种不同类型的变量一种是以&quot;lang_&quot;为前缀的,它们会被相应名称的语言包替换。例如,&lt;b&gt;{$lang_test}&lt;/b&gt;被语言变量&quot;tinyMCELang['lang_test']&quot;所替换,输出就成了&lt;b&gt;Test&lt;/b&gt;<BR>另外的变量是所用模板直接传递的,列举如下。 注意用[]括起来的变量是可选的。<br>
<br>
<strong>变量:</strong></p>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>editor_id</strong></td>
<td>此为编辑器实例的ID它应当被放在模板必须包含的IFRAME组件的ID属性中。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>[default_document]</strong></td>
<td>为了解决MSIE的安全问题增加了此设置它会被替换成空白HTML页面。把它放在模板IFRAME组件的SRC属性中。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>[area_width]</strong></td>
<td>IFRAME区域的宽度以象素为单位。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>[area_height]</strong></td>
<td>IFRAME区域的高度以象素为单位。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td>整个编辑器区域的宽度,以象素为单位。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td>整个编辑器区域的高度,以象素为单位。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>[themeurl]</strong></td>
<td>主题所在位置的URL。</td>
</tr>
</table>
<p>注意从这个模板可以调用两个JavaScript函数它们是在当前选定编辑器区域中执行命令的tinyMCE.execCommand及切换特定组件CSS类的tinyMCE.switchClass。<BR>
欲了解execCommand中可以执行的更多命令细节请查看&nbsp;<a href="http://www.mozilla.org/editor/midas-spec.html" target="_blank">Mozilla midas specification</a>&nbsp;&nbsp;<a href="using.htm#execcommand">TinyMCE specific commands</a>. <br>
</p>
<hr noshade>
<br>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_getInsertLinkTemplate(settings)</span>
<p>此函数负责插入链接弹出窗口的布局,它返回包含特定名称的<U>名称-值</U>对的数组。解释如下,注意用[]括起来的名称是可选的。<BR>此函数的settings参数是一个包含了tinyMCE设置和选项的<U>名称-值</U>对的数组。</p>
<strong>模板数据:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>html</strong></td>
<td>HTML模板数据它的值是实现链接对话框所需的全部HTML代码。注意在使用时{$&lt;variable&gt;}会被实际的值替换。关于这些特定值的更详细说明见后面。如果&quot;file&quot;参数有赋值,此参数不是必须的。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td bgcolor="#EEEEEE"><strong>file</strong></td>
<td>要使用的外部模板文件的名称,它可以是像.php,.asp,.jsp这样的动态页。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td>弹出窗口的宽度以象素为单位默认为320.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150" bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td>弹出窗口的高度以象素为单位默认为200.</td>
</tr>
</table>
<p>上述&quot;html&quot;中的变量被TinyMCE的内部值所替换。有两种不同类型的变量一种是以&quot;lang_&quot;为前缀的,它们会被相应名称的语言包替换。例如,&lt;b&gt;{$lang_test}&lt;/b&gt;被语言变量&quot;tinyMCELang['lang_test']&quot;所替换,输出就成了&lt;b&gt;Test&lt;/b&gt;<BR>另外的变量是所用模板直接传递的,列举如下。 注意用[]括起来的变量是可选的。<br>
<br>
<strong>变量/窗口 参数:</strong></p>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[href]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个链接,此变量被链接中的&quot;href&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[target]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个链接,此变量被链接中的&quot;target&quot;属性值所替代。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[css]</strong></td>
<td bgcolor="#FFFFFF">主题中弹出窗口CSS的位置。</td>
</tr>
</table>
<p>注意:从这个模板中可以调用&quot;window.opener.tinyMCE.insertLink(href, target)&quot;这个javascript函数它的作用是是在当前选定的编辑器中插入链接并且应当在&quot;插入&quot;按钮按下时被调用。</p>
<hr noshade>
<br>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_getInsertImageTemplate(settings)</span>
<p>此函数负责插入图像弹出窗口的布局,它返回包含特定名称的<U>名称-值</U>对的数组。解释如下,注意用[]括起来的名称是可选的。<BR>此函数的settings参数是一个包含了tinyMCE设置和选项的<U>名称-值</U>对的数组。</p>
<strong>模板数据:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#EEEEEE"><strong>html</strong></td>
<td bgcolor="#FFFFFF">HTML模板数据它的值是实现图像对话框所需的全部HTML代码。注意在使用时{$&lt;variable&gt;}会被实际的值替换。关于这些特定值的更详细说明见后面。如果&quot;file&quot;参数有赋值,此参数不是必须的。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>file</strong></td>
<td bgcolor="#FFFFFF">要使用的外部模板文件的名称,它可以是像.php,.asp,.jsp这样的动态页。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td bgcolor="#FFFFFF">弹出窗口的宽度以象素为单位默认为320.</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td bgcolor="#FFFFFF">弹出窗口的高度以象素为单位默认为200.</td>
</tr>
</table>
<p>上述&quot;html&quot;中的变量被TinyMCE的内部值所替换。有两种不同类型的变量一种是以&quot;lang_&quot;为前缀的,它们会被相应名称的语言包替换。例如,&lt;b&gt;{$lang_test}&lt;/b&gt;被语言变量&quot;tinyMCELang['lang_test']&quot;所替换,输出就成了&lt;b&gt;Test&lt;/b&gt;<BR>另外的变量是所用模板直接传递的,列举如下。 注意用[]括起来的变量是可选的。<br>
<br>
<strong>变量/窗口 参数:</strong></p>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[src]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;src&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[alt]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;alt&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[border]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;border&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[hspace]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;hspace&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[vspace]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;vspace&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;width&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;height&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[align]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个图像,此变量被图像中的&quot;align&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[css]</strong></td>
<td bgcolor="#FFFFFF">主题中弹出窗口CSS的位置。</td>
</tr>
</table>
<p>注意:从这个模板中可以调用&quot;window.opener.tinyMCE.insertImage(src, alt, border, hspace, vspace, width,
height, align)&quot;这个javascript函数它的作用是是在当前选定的编辑器中插入图像并且应当在&quot;插入&quot;按钮按下时被调用。</p>
<hr noshade>
<br>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_getInsertTableTemplate(settings)</span>
<span class="subtitle">(可选)</span>
<p>此函数负责插入表格弹出窗口的布局,它返回包含特定名称的<U>名称-值</U>对的数组。解释如下,注意用[]括起来的名称是可选的。<BR>此函数的settings参数是一个包含了tinyMCE设置和选项的<U>名称-值</U>对的数组。</p>
<strong>模板数据:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#EEEEEE"><strong>html</strong></td>
<td bgcolor="#FFFFFF">HTML模板数据它的值是实现表格对话框所需的全部HTML代码。注意在使用时{$&lt;variable&gt;}会被实际的值替换。关于这些特定值的更详细说明见后面。如果&quot;file&quot;参数有赋值,此参数不是必须的。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>file</strong></td>
<td bgcolor="#FFFFFF">要使用的外部模板文件的名称,它可以是像.php,.asp,.jsp这样的动态页。 </td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td bgcolor="#FFFFFF">弹出窗口的宽度,以象素为单位。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td bgcolor="#FFFFFF">弹出窗口的高度,以象素为单位。</td>
</tr>
</table>
<p>上述&quot;html&quot;中的变量被TinyMCE的内部值所替换。有两种不同类型的变量一种是以&quot;lang_&quot;为前缀的,它们会被相应名称的语言包替换。例如,&lt;b&gt;{$lang_test}&lt;/b&gt;被语言变量&quot;tinyMCELang['lang_test']&quot;所替换,输出就成了&lt;b&gt;Test&lt;/b&gt;<BR>另外的变量是所用模板直接传递的,列举如下。 注意用[]括起来的变量是可选的。<br>
<br>
<strong>变量/窗口 参数:</strong></p>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>[cols]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的列数所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[rows]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的行数所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[border]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;border&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[cellpadding]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;cellpadding&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[cellspacing]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;cellspacing&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[width]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;width&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[height]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;height&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[align]</strong></td>
<td bgcolor="#FFFFFF">如果有选定一个表格,此变量会被表格的&quot;align&quot;属性值所替代。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>[action]</strong></td>
<td bgcolor="#FFFFFF">根据用户是选择了一个表格还是创建一个新的表格来选择操作类型是&quot;update&quot;还是&quot;insert&quot;</td>
</tr>
</table>
<br>
<hr noshade>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_handleNodeChange (可选)</span>
<p>此函数在某个编辑器实例的聚焦状态发生改变时被调用,当前新聚焦的节点被做为参数传递给此函数。这对于你需要根据用户的选择来改变用户界面非常有用。</p>
<strong>参数:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#EEEEEE"><strong>editor_id</strong></td>
<td bgcolor="#FFFFFF">编辑器的唯一ID号这跟getEditorTemplate中的$editor_id变量一致。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>node</strong></td>
<td bgcolor="#FFFFFF">当前鼠标所在位置节点的引用。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>undo_index</strong></td>
<td bgcolor="#FFFFFF">当前撤消索引,如果撤消/重做功能被禁用,其值为-1。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>undo_levels</strong></td>
<td bgcolor="#FFFFFF">当前撤消层次的数目,如果撤消/重做功能被禁用,其值为-1。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>visual_aid</strong></td>
<td bgcolor="#FFFFFF">视觉帮助模式的状态True/false。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>any_selection</strong></td>
<td bgcolor="#FFFFFF">是否选定任何文字或图像。</td>
</tr>
</table>
<br>
<hr noshade>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;<font color="#CC0000">theme or plugin</font>&gt;</font>_execCommand (可选)</span>
<p>当执行像&quot;bold&quot;&quot;createlink&quot;这样的命令时,此方法被调用。然后此 回调/主题/插件 函数回中断主题特定命令并执行客户逻辑。如果此命令返回true命令处理被终止默认的tinyMCE命令处理永远不会被执行。</p>
<strong>参数:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#EEEEEE"><strong>editor_id</strong></td>
<td bgcolor="#FFFFFF">编辑器的唯一ID号这跟getEditorTemplate中的$editor_id变量一致。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>element</strong></td>
<td bgcolor="#FFFFFF">对编辑器实例中文档DOM根组件的引用。</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>command</strong></td>
<td bgcolor="#FFFFFF">要执行的命令,例如:&quot;myCommand&quot;</td>
</tr>
<tr>
<td bgcolor="#EEEEEE"><strong>user_interface</strong></td>
<td bgcolor="#FFFFFF">是否使用用户界面true/false选项。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>value</strong></td>
<td bgcolor="#FFFFFF">要传给命令的自定义数据值,可以是任何数据类型。</td>
</tr>
</table>
<br>
<strong>返回:</strong> true - 命令被终止命令处理不再继续false - 继续execCommand处理冒泡的。<br>
<hr noshade>
<span class="subtitle">函数 TinyMCE_<font color="#CC0000">&lt;theme or plugin&gt;</font>_getControlHTML(control_name) (可选)</span>
<p>当编辑器需要实现某个特定控制/按钮的时候此函数被调用它返回的是那个控制的HTML模板如果控制的名字不能被识别则返回空串。<BR>注意变量{$pluginurl}会被当前插件目录的URL前缀所替换。</p>
<strong>参数:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td width="150" bgcolor="#EEEEEE"><span class="subtitle">control_name</span></td>
<td bgcolor="#FFFFFF">要匹配的的控制的名称。例如,&quot;iespell&quot;代表的是iespell插件。</td>
</tr>
</table>
<br>
<strong>返回:</strong>返回的该控制的HTML模板如果控制的名字不能被识别则返回空串。
<hr noshade>
<span class="subtitle"><a name="cleanup"></a>函数 TinyMCE_<font color="#CC0000">&lt;plugin&gt;</font>_cleanup(type, content) (可选)</span>
<p>当编辑器对内容进行清理时此函数被调用。</p>
<strong>参数:<br>
<br>
</strong>
<table cellpadding="3" cellspacing="1" bgcolor="#000000">
<tr>
<td bgcolor="#EEEEEE"><span class="subtitle">type</span></td>
<td bgcolor="#FFFFFF">清理的类型insert_to_editor或者get_from_editor。<BR>
当向编辑器中传递内容时使用insert_to_editor当从编辑器中获取内容时使用get_from_editor。</td>
</tr>
<tr>
<td width="150" bgcolor="#EEEEEE"><strong>content</strong></td>
<td bgcolor="#FFFFFF">要清理的HTML内容该字符串包含了HTML代码。</td>
</tr>
</table>
<br>
<strong>返回:</strong>清理后的HTML代码。<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</table>
<br>
</BODY>
</HTML>

View file

@ -0,0 +1,706 @@
<html>
<head>
<title>使用/集成TinyMCE</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pageheader">
<tr>
<td><span class="title">使用/集成TinyMCE</span></td>
<td align="right"><a href="index.htm">内容提要</a></td>
</tr>
</table>
<hr noshade>
<br>
<a name="init"></a>
<span class="subtitle">初始化</span><br>
<br>
在初始化TinyMCE的时候需要把以下代码加入到页面的HEAD标签中。按以下例子中的设置所有的TEXTAREA文本域在页面加载时将被转换成编辑器。另外还有其他模块我们将在后面详细讲述。<br>
<br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">&lt;!-- tinyMCE --&gt;<br>
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;
src=&quot;<font color="#990000">jscripts/tiny_mce/tiny_mce.js</font>&quot;&gt;&lt;/script&gt;<br>
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;<font color="#000099">tinyMCE.init({<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode : &quot;textareas&quot;<br>
&nbsp;&nbsp;&nbsp;});</font><br>
&lt;/script&gt;<br>
&lt;!-- /tinyMCE --&gt;</td>
</tr>
</table>
<br>
注意以上红色部分是tiny_mce.js脚本文件的位置该文件中包含了编辑器所需要的全部代码主题及语言包将在初始化时被加载。<br>
蓝色部分是初始化调用它生成TinyMCE的全局实例其中的设置及<U>名称-值</U>属性将在以后描述。<br>
<br>
<a name="settings" id="settings"></a> <span class="subtitle">设置</span><br>
<br>
<U>名称-值</U>属性方式传递给tinyMCE的init方法的设置控制着程序的全局行为。所有的键及可能的键值如下表所示。注意用[]括起来的名称是可选的,不是必须的设置。<br>
<br>
<table cellpadding="5" cellspacing="1" bgcolor="#111111">
<tr bgcolor="#CCCCCC">
<td colspan="2"><strong>常规设置</strong></td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150"><strong>mode</strong></td>
<td>Mode可以是以下几个值之一<br>
<br> <strong>textareas</strong>
- 页面加载时把所有TEXTAREA组件转换成编辑器.<br> <strong>specific_textareas</strong>
- 将所有&quot;mce_editable&quot;属性值为true的TEXTAREA转换成编辑器.<br>
<strong>exact</strong> - 只转换在&quot;elements&quot;设置中指定的确切组件.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150"><strong>[theme]</strong></td>
<td>指定要使用的主题名称主题将被放在TinyMCE的themes目录下默认为default。TinyMCE自带三个内置的主题它们是simpledefault和advanced。<BR>
如果你想创建自己的主题,请仔细阅读文档的&nbsp;<a href="themes.htm">主题</a>&nbsp;部分。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[plugins]</strong></td>
<td>此选项是一系列以逗号分隔的主题插件列表(例如,可以只用来扩展图像对话框)。这些插件覆盖了主题模板中定义的功能。插件逻辑应该包含在一个叫&quot;editor_plugin.js&quot;的文件中,它是插件目录中唯一被包含进来的文件。<BR>
例如:&quot;my_image_dialog,my_link_dialog&quot;.
<BR>如果你想创建自己的插件,请仔细阅读文档的&nbsp;<a href="themes.htm">主题</a>&nbsp;部分。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150"><strong>[language]</strong></td>
<td>TinyMCE中使用的语言包这应该是像se,uk,us等诸如此类的FN代码它被用来从&quot;langs&quot;目录中获取语言包,该设置的默认值为&quot;uk&quot;.<BR>
中文用户建议您使用&quot;zh-CN&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150"><strong>[elements]</strong></td>
<td>以逗号分隔的用来转换成编辑器的组件列表,该选项仅在&quot;mode&quot;选项被设置成&quot;exact&quot;时使用。该列表中的元素可以是任何有id或name属性的HTML组件。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[ask]</strong></td>
<td>&quot;mode&quot;被设置成&quot;textareas&quot;&quot;specific_textareas&quot;的时候,该选项被应用,询问用户输入框是否将被转换成编辑器。 <BR>
如果你想使用这个选项将它设置为true.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[textarea_trigger]</strong></td>
<td>textarea文本域触发器的属性默认值为&quot;mce_editable&quot;<BR>
该选项仅在&quot;mode&quot;被设置为&quot;specific_textareas&quot;时使用。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[valid_elements]</strong></td>
<td>以逗号分隔开的组件转换部分的列表。<br>
<br>
例如: a[href|target=_blank],strong/b,div[align],br.<br> <br>
以上例子告诉TinyMCE移除所有除了&quot;a, strong, div&quot;&quot;br&quot;的组件将元素b转换成strong默认target设为&quot;_blank&quot;并保持href、target、align属性。在匹配组件及属性的名称时可以使用像*,+,?这样的通配符。<br>
<br> <strong>字符:</strong><br>
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td>&nbsp;,&nbsp;</td>
<td>各组件定义之间的分隔符。</td>
</tr>
<tr>
<td>&nbsp;/&nbsp;</td>
<td>两个同义组件之间的分隔符。第一个组件是会被用来输出的那个(即第二个组件被第一个替换)。</td>
</tr>
<tr>
<td>&nbsp;|&nbsp;</td>
<td>各属性定义之间的分隔符。</td>
</tr>
<tr>
<td>&nbsp;[&nbsp;</td>
<td>定义某组件的属性列表的开始符号。</td>
</tr>
<tr>
<td>&nbsp;]&nbsp;</td>
<td>定义某组件的属性列表的结束符号。</td>
</tr>
<tr>
<td>&nbsp;=&nbsp;</td>
<td>将属性的默认值设为特定值。例如:&quot;target=_blank&quot;</td>
</tr>
<tr>
<td>&nbsp;:&nbsp;</td>
<td>将属性的值强行设为特定值。例如:&quot;border:0&quot;</td>
</tr>
<tr>
<td>&nbsp;&lt;&nbsp;</td>
<td>校验某个属性的值。例如:&quot;target&lt;_blank?_self&quot;</td>
</tr>
<tr>
<td>&nbsp;?&nbsp;</td>
<td>属性校验值之间的分隔符,见上。 </td>
</tr>
</table>
<br>
<strong>特殊变量:</strong><br>
{$uid} - 产生一个唯一ID号。 例如:&quot;p[id:{$uid}]&quot;.<br>
<br>此选项的默认值是以下模式:<br> &quot;a[href|target],strong/b[class],em/i[class],strike[class],u[class],p[class|align],ol,ul,li,br,<br>
img[class|src|border=0|alt|hspace|vspace|width|height|align],sub,sup,blockquote[dir|style],<br>
table[border=0|cellspacing|cellpadding|width|height|class|align],tr[rowspan],<br>
td[colspan|rowspan|width|height],div[class|align],span[class|align],pre[class|align],<br>
address[class|align],h1[class|align],h2[class|align],h3[class|align],<br>
h4[class|align],h5[class|align],h6[class|align],hr&quot;.<br>
<br>要包含所有组件及属性,请使用 *[*] 这在使用invalid_elements选项时特别有用。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[extended_valid_elements]</strong></td>
<td>&quot;valid_elements&quot;列表末尾添加可用组件。此选项在你仅仅想往默认列表中增添部分组件时相当有用。<BR>
格式与&quot;valid_elements&quot;一致。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[invalid_elements]</strong></td>
<td>输出时需要排除在外的组件名称列表,以逗号分隔开。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[trim_span_elements]</strong></td>
<td>True/False选项。如果设置为true不需要的组件将被移除。默认值即为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[verify_css_classes]</strong></td>
<td>True/False选项。如果设置为true将会校验CSS的class属性。默认值即为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[verify_html]</strong></td>
<td>True/False选项。代表着HTML内容是否需要校验。默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[urlconvertor_callback]</strong></td>
<td>当清理进程处理URL的时候调用的函数名。此函数必须遵从以下的格式func(url, node, on_save) 返回转换后的URL。此设置专为集成目的而设。参数url代表要转换的地址node代表包含URL的那个节点on_save是一个布尔值在用户提交表单时为真</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[preformatted]</strong></td>
<td>True/False选项。如果设置为true编辑器将把制表符TAB转换成缩进除此外保持其他whitespace空白字符、换行等字符就如同HTML标签中的PRE的效果。默认值为false。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[insertlink_callback]</strong></td>
<td>当执行&quot;insertlink&quot;命令时调用的函数名。此函数获取选定链接的地址和目标,返回一个以&quot;href&quot;, &quot;target&quot;&quot;title&quot;为collection名称的数组。当使用新窗口时为了兼容Mozilla会在window.opener弹出窗口的母窗口译者注上调用tinyMCE.insertLink。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[insertimage_callback]</strong></td>
<td>当执行&quot;insertimage&quot;命令时调用的函数名。此函数获取选定图像的url并返回一个以src和alt为collection名称的数组。当使用新窗口时为了兼容Mozilla会在window.opener上调用tinyMCE.insertImage。<BR>
函数格式insertimage(src, alt, border, hspace, vspace, width, height, align, title,
onmouseover, onmouseout, action).</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[setupcontent_callback]</strong></td>
<td>当编辑器初始化时调用的函数名。函数格式setupContentCallback(editor_id, node)其中editor_id是编辑器的idnode是编辑器所在的body组件节点。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[save_callback]</strong></td>
<td>当执行triggerSave触发保存命令被调用时调用的函数名。函数格式save(id, content, node)如果有特定返回值其值将会被加到HTML表单组件上。所以可以通过此函数来自定义用户转换逻辑。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[docs_language]</strong></td>
<td>TinyMCE文档中使用的语言这应该是像se,uk,us等诸如此类的FN代码它被用来从&quot;&lt;theme&gt;/docs/&lt;lang&gt;&quot;目录中获取文档。
该选项的默认值跟language选项一致。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[width]</strong></td>
<td>编辑器的宽度,它默认的宽度是原先被替换的组件宽度。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[height]</strong></td>
<td>编辑器的高度,它默认的高度是原先被替换的组件高度。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[content_css]</strong></td>
<td>编辑窗口中要使用的CSS文件其路径应该跟页面相关。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[popups_css]</strong></td>
<td>像插入链接和图片时的弹出窗口中使用的CSS文件其路径应该跟页面相关。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[editor_css]</strong></td>
<td>编辑器使用的CSS文件其路径应该跟页面相关。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[encoding]</strong></td>
<td>编辑器的输出编码,此选项目前只能为&quot;html&quot;或者空。如果设置为&quot;html&quot;编辑器的输出将经过HTML编码处理。<BR>
例如:&lt;将会变成&amp;lt;,依此类推。默认值是空。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[debug]</strong></td>
<td>True/False选项。如果设置成true像css文件路径等调试信息将会被显示。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[visual]</strong></td>
<td>True/False选项。如果设置成true当边框设置成0的时候为达到更好的视觉效果在编辑器中表格会有虚线出现。<BR>
默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[visual_table_style]</strong></td>
<td>用户可自定义表格的样式,默认值为:&quot;border: 1px dashed #BBBBBB&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[add_form_submit_trigger]</strong></td>
<td>True/False选项。如果设置成true将强制进行所有表单的&quot;onsubmit&quot;事件处理并引发保存。此选项默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[add_unload_trigger]</strong></td>
<td>True/False选项。如果设置成true&quot;onunload&quot;事件发生时当前窗口会引发一个triggerSave调用。此triggerSave调用不会做任何清理工作因为它是用来处理 前进/后退 按钮的。此选项默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[force_br_newlines]</strong></td>
<td>True/False选项。此选项强制编辑器将段落符号(P)替换成换行符(BR)。此选项默认值为false。实验阶段</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[force_p_newlines]</strong></td>
<td>True/False选项。如果打开此选项在按下回车键Enter时Mozilla/Firefox浏览器会生成段落符号(P)在按下Shift+Enter时会生成换行符(BR)。此选项默认为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[relative_urls]</strong></td>
<td>True/False选项。如果设置成true绝对路径将被转换成相对路径。默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[remove_script_host]</strong></td>
<td>True/False选项。在设置成true的情况下如果URL中的主机名、端口号跟编辑器当前所在一致它们会被移除。<BR>
例如:编辑器所在站点为 http://www.somesite.com ,那么以下链接 http://www.somesite.com/somedir/somepage.html 将会被转换成 /somedir/somepage.html 。<BR>如果relative_urls被设置成false此选项默认为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[focus_alert]</strong></td>
<td>True/False选项。如果设置成true编辑器在失去焦点的时候就会出现一个烦人的警告框。默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[document_base_url]</strong></td>
<td>在将绝对路径转换成相对路径的时候会用到此文档的URL。这个选项指定了编辑器当前的默认文档。<BR>
注意如果此选项指定到一个域名请添加协议前缀并以斜杠结尾。例如http://www.somehost.com/mydir/</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[custom_undo_redo]</strong></td>
<td>True/False选项。此选项可以使 撤消/重做 功能更加完善。默认值为true。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[custom_undo_redo_levels]</strong></td>
<td>自定义最多可撤消操作的次数,默认是无限制。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[custom_undo_redo_keyboard_shortcuts]</strong></td>
<td>如果使用编辑器可以使用Ctrl+Z和Ctrl+Y快捷键来实现撤消和重做。默认允许。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[fix_content_duplication]</strong></td>
<td>True/False选项。此选项修正了MSIE中一个内容重复的bug。默认启用但是为了兼容性也可以禁用(false)。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[directionality]</strong></td>
<td>此选项可以设置像阿拉伯语等语言的文字方向。可能的值为ltr, rtl。默认值: ltr从左到右</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[auto_cleanup_word]</strong></td>
<td>如果启用从MS office/Word粘贴的HTML将会自动被清理。此选项默认值为false。<BR>
注意此操作当前仅支持MSIE。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[cleanup_on_startup]</strong></td>
<td>如果启用在编辑器初始化时文本域及组件将会被清理。默认值为false。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[inline_styles]</strong></td>
<td>如果启用像width,height,vspace,hspace和align等属性将会被风格属性替代。默认值为false。<BR>
在使用此选项时记得要把风格属性应用在正确的组件上。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[convert_newlines_to_brs]</strong></td>
<td>如果启用,所有的\n(新行)将会在编辑器启动时被转换成&lt;br /&gt;组件。此选项默认值为false。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[auto_reset_designmode]</strong></td>
<td>因为在调用style.display的none/block方法来显示/隐藏某个TinyMCE编辑器的时候有bug设计模式需要被重置。此选项一旦启用当编辑器聚焦时将自动重置。默认值为false。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[entities]</strong></td>
<td>一张以字符代码来查找名称的表,该表中元素是以逗号分隔开的实体列表。该列表以奇数项、偶数项区分,其中奇数项是被用来转换的字符代码,偶数项是代表那个字符代码的实体名称。例如:&quot;8205,zwj,8206,lrm,8207,rlm,173,shy&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[cleanup_callback]</strong></td>
<td>自定义清理函数。此选项能让用户在默认的清理基础上有所扩展。此函数调用跟默认的调用是分开的,它并不替换默认的清理函数,而仅仅是扩展。点击 <a href="themes.htm#cleanup">插件清理</a> 查看更多细节。</td>
</tr>
<tr bgcolor="#CCCCCC">
<td colspan="2"><strong>主题的高级特定设置</strong></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_toolbar_location]</strong></td>
<td>此选项用来改变工具栏的默认位置。可能的值为:&quot;top&quot;&quot;bottom&quot;。默认值是&quot;bottom&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_toolbar_align]</strong></td>
<td>此选项用来设置工具栏的对齐方式是left, center还是right。默认值是center。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_styles]</strong></td>
<td>此选项可以用来增加风格下拉框中的CSS类和名称。格式如下&quot;&lt;title&gt;=&lt;class&gt;;..&quot;<BR>
如果没有指定此选项主内容部分的CSS类将会被自动导入。<br>
例如:&quot;Header 1=header1;Header 2=header2;Header 3=header3&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_buttons1]</strong></td>
<td>工具栏上第一行要包含的按钮列表,以逗号分隔开。例如:&quot;bold,italic,underline&quot;<br>
<br>
允许的按钮名称如下:<br>
bold, italic, underline, strikethrough, justifyleft, justifycenter, justifyright,
justifyfull, styleselect, bullist, numlist, outdent, indent, undo,redo,
link, unlink, image, cleanup, help, code, table, row_before, row_after,
delete_row, separator, rowseparator, col_before, col_after, delete_col, hr, removeformat,
sub, sup, formatselect, fontselect, fontsizeselect, forecolor,charmap,visualaid,spacer,cut,copy,paste</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_buttons2]</strong></td>
<td>同上,差别在于指定的是工具栏第二行。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_buttons3]</strong></td>
<td>同上,差别在于指定的是工具栏第三行。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_buttons&lt;N&gt;_add]</strong></td>
<td>向工具栏上特定的第N行中增加额外的控制/按钮。例如theme_advaned_buttons3_add : &quot;iespell&quot;.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_buttons&lt;N&gt;_add_before]</strong></td>
<td>向工具栏上特定的第N行的默认按钮前面增加额外的控制/按钮。例如theme_advaned_buttons3_add_before : &quot;iespell&quot;</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_disable]</strong></td>
<td>要禁用的按钮/组件的列表,以逗号分隔。例如:&quot;formatselect&quot;.</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_source_editor_width]</strong></td>
<td>源文件编辑器窗口的宽度。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_source_editor_height]</strong></td>
<td>源文件编辑器窗口的高度。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_path_location]</strong></td>
<td>组件路径列表的位置,可能的值为:&quot;top&quot;&quot;bottom&quot;。默认值为:&quot;none&quot; </td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>[theme_advanced_blockformats]</strong></td>
<td>formatselect列表要屏蔽的格式列表以逗号分隔开。默认值p,address,pre,h1,h2,h3,h4,h5,h6。</td>
</tr>
</table>
<br>
以下是一个较为复杂的初始化例子:<br>
<br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">&lt;!-- tinyMCE --&gt;<br> &lt;script language=&quot;javascript&quot;
type=&quot;text/javascript&quot; src=&quot;<font color="#990000">jscripts/tiny_mce/tiny_mce.js</font>&quot;&gt;&lt;/script&gt;<br>
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br>
&nbsp;&nbsp;&nbsp;<font color="#000099">tinyMCE.init({<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode : &quot;exact&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;theme : &quot;mytheme&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;language : &quot;se&quot;,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elements : &quot;elm1,elm2&quot;<br>
&nbsp;&nbsp;});</font><br> &lt;/script&gt;<br> &lt;!-- /tinyMCE --&gt;</td>
</tr>
</table>
<br>
<a name="functions" id="functions"></a> <span class="subtitle"><strong>函数</strong></span><strong>
(供高级使用)</strong><br>
<br>
TinyMCE有一个全局实例它能提供一些可从页面调用的公用函数。<br>
<hr noshade>
<strong>语法:</strong> tinyMCE.triggerSave([skip_cleanup]);<br>
<br>
<strong>描述:</strong>进行清除操作并将编辑器内容移回到表单域中。tinyMCE通过向表单提交方法中增加触发器来自动调用此函数。<br>
<br>
<strong>参数:</strong><br>
[skip_cleanup] - 禁用保存触发器的清除功能默认为false。(可选)<br>
<br>
<strong>返回:</strong><br>
<hr noshade>
<strong>语法:</strong> tinyMCE.updateContent(form_element_name);<br>
<br>
<strong>描述:</strong>将表单组件的内容转移到编辑器中此操作的功能跟triggerSave()正好相反。当你想动态改变编辑器内容时可以使用此方法。<br>
<br>
<strong>参数:<br>
</strong>form_element_name - 要获取内容的组件所在表单的名称。<br>
<br>
<strong>返回:</strong>
<hr noshade>
<strong>语法:</strong> tinyMCE.execInstanceCommand(editor_id, command, [user_interface], [value]);<br>
<br>
<strong>描述:</strong>此方法通过editor_id参数找到某个编辑器实例在此编辑器上执行一个命令。<br>
<br>
<strong>参数:</strong><br>
editor_id - 编辑器实例的ID或者被替换后的组件id/名称。<br>
command - 要执行的命令。查看execCommand函数以获取更多细节。<br>
[user_interface] - 是否使用用户界面。<br>
[value] - 执行命令时要传递的参数例如一个URL。<br>
<br>
<strong>返回:</strong>
<hr noshade>
<strong><a name="execcommand"></a>语法:</strong> tinyMCE.execCommand(command, [user_interface], [value]);<br>
<br>
<strong>描述:</strong>此方法在选定编辑器中通过名称执行特定命令。<br>
<br>
<strong>参数:<br>
</strong>command - 要执行的命令,例如:&quot;Bold&quot; or &quot;Italic&quot;<a href="http://www.mozilla.org/editor/midas-spec.html" target="_blank">你可以通过此连接来查看Mozilla Midas spec</a>。但是tinyMCE也有自身一些特殊的命令如下表所示<br>
<br>
<table cellpadding="3" cellspacing="1" bgcolor="#111111">
<tr bgcolor="#FFFFFF">
<td width="150"><strong>mceLink</strong></td>
<td>打开插入链接对话框并插入链接。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td width="150"><strong>mceImage</strong></td>
<td>打开插入图像对话框并插入图像。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceCleanup</strong></td>
<td>从HTML代码中移除不需要的组件和属性。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceHelp</strong></td>
<td>打开文档页面。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceInsertTable</strong></td>
<td>在鼠标位置插入表格默认尺寸为2×2。如果execCommand函数中有指定value参数它的格式必须为name/value形式的数组其中name有以下选项cols, rows, border, cellspacing, cellpadding。border边框的默认大小为0。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableInsertRowBefore</strong></td>
<td>在当前鼠标所在位置之前插入一行。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableInsertRowAfter</strong></td>
<td>在当前鼠标所在位置之后插入一行。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableDeleteRow</strong></td>
<td>将当前鼠标所在行删除。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableInsertColBefore</strong></td>
<td>在当前鼠标所在位置之前插入一列。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableInsertColAfter</strong></td>
<td>在当前鼠标所在位置之后插入一列。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceTableDeleteCol</strong></td>
<td>将当前鼠标所在列删除。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceAddControl</strong></td>
<td>向编辑器添加组件控制此编辑器的id/name由value指定。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceRemoveControl</strong></td>
<td>通过editor_id名称来移除特定控制。value是要移除的editor_id编辑器ID编辑器ID格式如下&quot;mce_editor_&lt;index&gt;&quot;<BR>
也可以使用DOM组件的ID和表单名。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceFocus</strong></td>
<td>使以value的值为ID的编辑器获得焦点。编辑器ID格式如下&quot;mce_editor_&lt;index&gt;&quot;。也可以使用DOM组件的ID和表单名。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceSetCSSClass</strong></td>
<td>设置CSS类属性或者在选择框中创建新的span。value的值是要给选定组件指派的css类名或者要新创建的span组件名称。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceInsertContent</strong></td>
<td>在当前鼠标所在位置插入value的内容。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceReplaceContent</strong></td>
<td>将当前选定部分替换为value中的HTML代码。{$selection}变量由当前选定部分的文字内容替换。</td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceSetAttribute</strong></td>
<td><p>为当前选定组件设置属性。此命令的value应该是name/value数组其参数如下<br>
<br>
<strong>name</strong> - 要设置的属性名。<br>
<strong>value</strong> - 要设置的属性值。<br>
<strong>[targets]</strong> - 要增加属性的目标组件默认为p,img,span,div,td,h1,h2,h3,h4,h5,h6,pre,address。<br>
<br>
使用示例:<br>
tinyMCE.execCommand('mceSetAttribute',false,{name:'align',value:'right'});</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceToggleVisualAid</strong></td>
<td><p>是否开启视觉帮助模式</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceAnchor</strong></td>
<td><p>插入名称锚点。value是锚点的名称。</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceResetDesignMode</strong></td>
<td><p>重置所有编辑器实例的设计模式状态。在Firefox中当编辑器被放在制表符中或者用style.display=&quot;none/block&quot;来控制隐显的时候,此命令非常有用。在编辑器重新显示时调用此命令。</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceSelectNode</strong></td>
<td><p>选定value指定的节点/组件。同时此命令会使编辑器滚动到此组件所在位置。</p></td>
</tr>
<tr bgcolor="#FFFFFF">
<td><strong>mceSelectNodeDepth</strong></td>
<td><p>从当前节点以深度关系选择指定的节点/组件。所以0值会选定当前聚焦的节点。同时此命令会使编辑器滚动到此组件所在位置。</p>
</td>
</tr>
</table>
<br>
user_interface - 申明某命令是否会显示用户界面。True/False选项。<br>
value - 要传递给命令的值。例如插入链接时它就是链接的URL。<br>
<br>
<strong>返回:</strong><br>
<br>
<strong>示例:</strong><br>
<table border="0" cellspacing="3" cellpadding="2" class="sample">
<tr>
<td class="samplecontent">&lt;a href=&quot;<font color="#990000">javascript:tinymce.execCommand('Bold');</font>&quot;&gt;[Do
bold]&lt;/a&gt;</td>
</tr>
</table>
<hr noshade>
<strong>语法:</strong> tinyMCE.insertLink(href, target);<br>
<br>
<strong>描述:</strong>此方法在当前选定编辑器实例的鼠标位置插入一个链接或者用新的数据来更新已有链接。当你创建自己的主题时此方法应在插入链接的弹出窗口中的OK按钮按下时被调用。<br>
<br>
<strong>参数:<br>
</strong>href - 链接的地址/URL。<br>
target - 链接的目标。<br>
<br>
<strong>返回:</strong>
<hr noshade>
<strong>语法:</strong> tinyMCE.insertImage(src, alt, border, hspace, vspace,
width, height, align, title, onmouseover, onmouseout);<br>
<br>
<strong>描述:</strong>此方法在当前选定编辑器实例的鼠标位置插入图像或者用新的数据来更新已有图像。当你创建自己的主题时此方法应在插入图像的弹出窗口中的OK按钮按下时被调用。<br>
<br>
<strong>参数:<br>
</strong>src - 图像地址。<br>
alt - 图片的替代文字。<br>
border - 图像边框。<br>
hspace - 图像水平间距。<br>
vspace - 图像垂直间距。<br>
width - 图像宽。<br>
height - 图像高。<br>
align - 图像对齐方式。<br>
title - 图像链接的标题。<br>
onmouseover - 图像在鼠标放上去时的事件处理。<br>
onmouseout - 图像在鼠标移开时的事件处理。<br>
<br>
<strong>返回:</strong>
<hr noshade>
<strong>语法:</strong> tinyMCE.triggerNodeChange();<br>
<br>
<strong>描述:</strong>当编辑器发生外部变化时此方法被调用。然后此方法回调主题的&quot;handleNodeChangeCallback&quot;方法。<br>
<br>
<strong>参数: </strong>None<br>
<br>
<strong>返回:</strong>
<hr noshade>
<strong>语法:</strong> tinyMCE.getContent();<br>
<br>
<strong>描述:</strong>此方法返回当前选定编辑器中的HTML内容。如果没有任何选定编辑器该方法返回null。<br>
<br>
<strong>参数: </strong>None<br>
<br>
<strong>返回:</strong>当前选定编辑器中的HTML内容或者null。
<hr noshade>
<strong>语法:</strong> tinyMCE.setContent(html);<br>
<br>
<strong>描述:</strong>此方法设定当前选定编辑器的HTML内容。<br>
<br>
<strong>参数:<br>
</strong>html - 要设定的HTML源代码。<br>
<br>
<strong>返回:</strong> None.
<hr noshade>
<strong>语法:</strong> tinyMCE.getEditorInstance(editor_id);<br>
<br>
<strong>描述:</strong>此方法通过editor_id返回某个编辑器实例。<br>
<br>
<strong>参数:<br>
</strong>editor_id - 要获取的编辑器实例。<br>
<br>
<strong>返回:</strong>编辑器实例(TinyMCEControl)。
<hr noshade>
<strong>语法:</strong> tinyMCE.importThemeLanguagePack([theme]);<br>
<br>
<strong>描述:</strong>此方法导入主题中特定的语言包。自定义主题中可以调用此方法。<br>
<br>
<strong>参数:</strong><br>
[theme] - 当前主题名称。此选项可选,默认为全局的&quot;theme&quot;设定。此参数在主题插件中非常有用。<br>
<br>
<strong>返回:</strong> None.
<hr noshade>
<strong>语法:</strong> tinyMCE.importPluginLanguagePack(plugin, valid_languages);<br>
<br>
<strong>描述:</strong>此方法导入插件中特定的语言包。自定义插件中可以调用此方法。<br>
<br>
<strong>参数:</strong><br>
plugin - 当前插件的名称。<br>
valid_languages - 以逗号分隔的所支持语言包列表。<br>
<br>
<strong>返回:</strong> None.
<hr noshade>
<strong>语法:</strong> tinyMCE.applyTemplate(html);<br>
<br>
<strong>描述:</strong>此方法替换主题中的设置及语言变量。<br>
<br>
<strong>参数:</strong>
<br>
html - 要替换主题变量的HTML代码。<br>
<br>
<strong>返回:</strong> 转换后的HTML代码。
<hr noshade>
<strong>语法:</strong> tinyMCE.openWindow(template, [args]);<br>
<br>
<strong>描述:</strong>此方法通过从指定的template参数中获取width, height及html数据来打开新窗口。数组参数args中包含要替换的变量名。<br>
<br>
还有一些自定义的窗口参数:<br>
mce_replacevariables
- 启用/禁用HTML文档中的语言/变量替换。默认启用。<br>
mce_windowresize - 启用/禁用弹出窗口的自动resize特征默认启用。<br>
<br>
<strong>参数:</strong> <br>
template - Name/Value数组以width, height, html和file为键。<br>
[args] - 包含要替换变量名的Name/Value数组。模板文件中的键值变量被参数列表所替换。<BR>
例如image.php?src={$src}被替换为image.php?src=image.gif。<br>
<br>
<strong>返回:</strong> None.
<hr noshade>
<strong>语法:</strong> tinyMCE.getWindowArg(name, [default_value]);<br>
<br>
<strong>描述:</strong>此方法根据name返回窗口参数它可以用在主题中的弹出窗口中以获取对话框中的参数。<br>
<br>
<strong>参数:</strong> <br>
name - 要获取的窗口参数的名称。<br>
[default_value] - 窗口参数丢失时返回的默认值。<br>
<br>
<strong>返回:</strong> 窗口参数的值。
<hr noshade>
<strong>语法:</strong> tinyMCE.setWindowArg(name, value);<br>
<br>
<strong>描述:</strong>此方法根据name设定窗口参数例如它在某插件调用其他插件时非常有用。<br>
<br>
<strong>参数:</strong> <br>
name - 要设置的窗口参数。<br>
value - 窗口参数中要设置的值。<br>
<br>
<strong>返回:</strong> 窗口参数值。
<hr noshade>
<strong>语法:</strong> tinyMCE.getParam(name, [default_value], [strip_whitespace]);<br>
<br>
<strong>描述:</strong>此方法返回TinyMCE的配置参数。<br>
<br>
<strong>参数:</strong> <br>
name - 要获取的窗口参数名。<br>
[default_value] - 窗口参数丢失时返回的默认值。<br>
[strip_whitespace] - 如果为真所有返回值中的空白字符将会被除去。默认false。<br>
<br>
<strong>返回:</strong>TinyMCE配置参数。<br>
<hr noshade>
<table width="100%" border="0" cellpadding="1" cellspacing="3" class="pagefooter">
<tr>
<td>返回&nbsp;<a href="index.htm">内容提要</a></td>
<td align="right"><a href="#">顶部</a></td>
</tr>
</table>
<br>
</body>
</html>

View file

@ -30,6 +30,10 @@ body {
color: #0000FF
}
.tablerow1 {
background-color: #BBBBBB;
}
td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;

View file

@ -7,7 +7,7 @@
<script language="javascript" type="text/javascript">
tinyMCE.init({
theme : "advanced",
//language : "se",
//language : "sv",
mode : "exact",
elements : "elm1,elm2",
//insertlink_callback : "customInsertLink",
@ -15,8 +15,10 @@
save_callback : "customSave",
content_css : "example_advanced.css",
extended_valid_elements : "a[href|target|name]",
plugins : "table",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
//invalid_elements : "a",
theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3", // Theme specific setting CSS classes
theme_advanced_styles : "Header 1=header1;Header 2=header2;Header 3=header3;Table Row=tableRow1", // Theme specific setting CSS classes
debug : false
});

View file

@ -0,0 +1,9 @@
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There flash movies will be displayed as a dropdown in all flash dialogs if the "flash_external_list_url"
// option is defined in TinyMCE init.
var tinyMCEFlashList = new Array(
// Name, URL
["Some Flash 1", "test1.swf"],
["Some Flash 2", "test2.swf"]
);

View file

@ -41,3 +41,7 @@ pre {
font-size: 12px;
color: #FF0000
}
.tablerow1 {
background-color: #BBBBBB;
}

View file

@ -1,5 +1,6 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="../docs/style.css" rel="stylesheet" type="text/css">
<!-- tinyMCE -->
@ -8,11 +9,12 @@
tinyMCE.init({
mode : "textareas",
theme : "advanced",
plugins : "save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print",
plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print",
theme_advanced_buttons1_add_before : "save,separator",
theme_advanced_buttons1_add : "fontselect,fontsizeselect",
theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor",
theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
theme_advanced_buttons3_add_before : "tablecontrols,separator",
theme_advanced_buttons3_add : "emotions,iespell,flash,advhr,separator,print",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
@ -20,8 +22,17 @@
content_css : "example_full.css",
plugin_insertdate_dateFormat : "%Y-%m-%d",
plugin_insertdate_timeFormat : "%H:%M:%S",
extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]"
extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
external_link_list_url : "example_link_list.js",
external_image_list_url : "example_image_list.js",
flash_external_list_url : "example_flash_list.js",
file_browser_callback : "fileBrowserCallBack"
});
function fileBrowserCallBack(field_name, url, type) {
// This is where you insert your custom filebrowser logic
alert("Filebrowser callback: " + field_name + "," + url + "," + type);
}
</script>
<!-- /tinyMCE -->

View file

@ -0,0 +1,9 @@
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url"
// option is defined in TinyMCE init.
var tinyMCEImageList = new Array(
// Name, URL
["Logo 1", "logo.jpg"],
["Lgog 2", "logo_over.jpg"]
);

View file

@ -0,0 +1,10 @@
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system.
// There links will be displayed as a dropdown in all link dialogs if the "external_link_list_url"
// option is defined in TinyMCE init.
var tinyMCELinkList = new Array(
// Name, URL
["Moxiecode", "http://www.moxiecode.com"],
["Freshmeat", "http://www.freshmeat.com"],
["Sourceforge", "http://www.sourceforge.com"]
);

View file

@ -9,7 +9,9 @@
theme : "advanced",
mode : "textareas",
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,formatselect,fontselect,fontsizeselect,forecolor",
extended_valid_elements : "font[face|size|color]"
extended_valid_elements : "font[face|size|color]",
plugins : "table",
theme_advanced_buttons3_add_before : "tablecontrols,separator"
});
</script>
<!-- /tinyMCE -->

View file

@ -0,0 +1,38 @@
// CZ lang variables thanks to "Pavel Novák" - repaired by Josef Klimosz
tinyMCELang['lang_bold_desc'] = 'Tuènì';
tinyMCELang['lang_italic_desc'] = 'Kurzíva';
tinyMCELang['lang_underline_desc'] = 'Podtržení';
tinyMCELang['lang_striketrough_desc'] = 'Pøeškrtnutí';
tinyMCELang['lang_justifyleft_desc'] = 'Zarovnání vlevo';
tinyMCELang['lang_justifycenter_desc'] = 'Zarovnání na støed';
tinyMCELang['lang_justifyright_desc'] = 'Zarovnání vpravo';
tinyMCELang['lang_justifyfull_desc'] = 'Zarovnání do bloku';
tinyMCELang['lang_bullist_desc'] = 'Seznam s odrážkami';
tinyMCELang['lang_numlist_desc'] = 'Èíslovaný seznam';
tinyMCELang['lang_outdent_desc'] = 'Snížit odsazení';
tinyMCELang['lang_indent_desc'] = 'Zvýšit odsazení';
tinyMCELang['lang_undo_desc'] = 'Zpìt';
tinyMCELang['lang_redo_desc'] = 'Znovu';
tinyMCELang['lang_link_desc'] = 'Vložit odkaz';
tinyMCELang['lang_unlink_desc'] = 'Zrušit odkaz';
tinyMCELang['lang_image_desc'] = 'Vložit obrázek';
tinyMCELang['lang_cleanup_desc'] = 'Vyèistit kód';
tinyMCELang['lang_focus_alert'] = 'Pøed použitím tohoto pøíkazu musí být kurzor v oknì editoru.';
tinyMCELang['lang_edit_confirm'] = 'Chcete použít WYSIWYG editaci pro tento text?';
tinyMCELang['lang_insert_link_title'] = 'Vložit/upravit odkaz';
tinyMCELang['lang_insert'] = 'Vložit';
tinyMCELang['lang_update'] = 'Zmìnit';
tinyMCELang['lang_cancel'] = 'Zrušit';
tinyMCELang['lang_insert_link_url'] = 'URL odkazu';
tinyMCELang['lang_insert_link_target'] = 'Cíl';
tinyMCELang['lang_insert_link_target_same'] = 'Otevøít odkaz ve stejném oknì';
tinyMCELang['lang_insert_link_target_blank'] = 'Otevøít odkaz v novém oknì';
tinyMCELang['lang_insert_image_title'] = 'Vložit/upravit obrázek';
tinyMCELang['lang_insert_image_src'] = 'URL obrázku';
tinyMCELang['lang_insert_image_alt'] = 'Popis obrázku';
tinyMCELang['lang_help_desc'] = 'Nápovìda';
tinyMCELang['lang_bold_img'] = 'bold.gif';
tinyMCELang['lang_italic_img'] = 'italic.gif';
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste není použitelné v Mozille a Firefoxu.\nChcete více informací o tomto problému?';

View file

@ -0,0 +1,38 @@
// DK lang variables contributed by Jan Moelgaard
tinyMCELang['lang_bold_desc'] = 'Fed';
tinyMCELang['lang_italic_desc'] = 'Kursiv';
tinyMCELang['lang_underline_desc'] = 'Understreg';
tinyMCELang['lang_striketrough_desc'] = 'Gennemstreg';
tinyMCELang['lang_justifyleft_desc'] = 'Venstrestil';
tinyMCELang['lang_justifycenter_desc'] = 'Centrer';
tinyMCELang['lang_justifyright_desc'] = 'H&#248;jrestil';
tinyMCELang['lang_justifyfull_desc'] = 'Lige margin';
tinyMCELang['lang_bullist_desc'] = 'Bulletliste';
tinyMCELang['lang_numlist_desc'] = 'Nummerliste';
tinyMCELang['lang_outdent_desc'] = 'Ryk til venstre';
tinyMCELang['lang_indent_desc'] = 'Ryk til h&#248;jre';
tinyMCELang['lang_undo_desc'] = 'Fortryd';
tinyMCELang['lang_redo_desc'] = 'G&#248;r igen';
tinyMCELang['lang_link_desc'] = 'Inds&#230;t link';
tinyMCELang['lang_unlink_desc'] = 'Fjern link';
tinyMCELang['lang_image_desc'] = 'Inds&#230;t billede';
tinyMCELang['lang_cleanup_desc'] = 'Ryd op i koden';
tinyMCELang['lang_focus_alert'] = 'Der skal s&#230;ttes fokus p&#229; sessionen, f&#248;r man kan bruge denne kommando';
tinyMCELang['lang_edit_confirm'] = 'Vil du bruge WYSIWYG mode til dette textomr&#229;de?';
tinyMCELang['lang_insert_link_title'] = 'Inds&#230;t eller rediger link';
tinyMCELang['lang_insert'] = 'Inds&#230;t';
tinyMCELang['lang_update'] = 'Opdater';
tinyMCELang['lang_cancel'] = 'Fortryd';
tinyMCELang['lang_insert_link_url'] = 'Linkadresse';
tinyMCELang['lang_insert_link_target'] = 'Target';
tinyMCELang['lang_insert_link_target_same'] = 'Luk linket op i samme vindue';
tinyMCELang['lang_insert_link_target_blank'] = 'Luk linket op i et nyt vindue';
tinyMCELang['lang_insert_image_title'] = 'Inds&#230;t / rediger billede';
tinyMCELang['lang_insert_image_src'] = 'Billedets adresse';
tinyMCELang['lang_insert_image_alt'] = 'Alternativ tekst';
tinyMCELang['lang_help_desc'] = 'Hj&#230;lp';
tinyMCELang['lang_bold_img'] = "bold.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?';

View file

@ -1,73 +1,73 @@
// DE lang variables
// Translated 2004 by Crazy Chrissi
// Edited 2004 by Krokogras
tinyMCELang['lang_theme_style_select'] = 'Styles';
tinyMCELang['lang_theme_code_desc'] = 'HTML-Modus';
tinyMCELang['lang_theme_code_title'] = 'HTML-Code Editor';
tinyMCELang['lang_theme_code_wordwrap'] = 'Zeilenumbruch';
tinyMCELang['lang_theme_code_save'] = 'Speichern';
tinyMCELang['lang_theme_sub_desc'] = 'Tiefergestellt';
tinyMCELang['lang_theme_sup_desc'] = 'H&ouml;hergestellt';
tinyMCELang['lang_theme_hr_desc'] = 'Horizontale Linie einf&uuml;gen';
tinyMCELang['lang_theme_removeformat_desc'] = 'Formatierung l&ouml;schen';
tinyMCELang['lang_theme_table_desc'] = 'Neue Tabelle einf&uuml;gen / Tabelle bearbeiten';
tinyMCELang['lang_theme_table_insert_row_before_desc'] = 'Zeile vor aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_insert_row_after_desc'] = 'Zeile nach aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_delete_row_desc'] = 'Aktuelle Zeile l&ouml;schen';
tinyMCELang['lang_theme_table_insert_col_before_desc'] = 'Spalte vor aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_insert_col_after_desc'] = 'Spalte nach aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_delete_col_desc'] = 'Aktuelle Spalte l&ouml;schen';
tinyMCELang['lang_theme_custom1_desc'] = 'Beschreibung eingeben';
tinyMCELang['lang_insert_image_border'] = 'Rahmen';
tinyMCELang['lang_insert_image_dimensions'] = 'Gr&ouml;&szlig;e';
tinyMCELang['lang_insert_image_vspace'] = 'Vertikal einr&uuml;cken';
tinyMCELang['lang_insert_image_hspace'] = 'Horizontal einr&uuml;cken';
tinyMCELang['lang_insert_image_align'] = 'Ausrichten';
tinyMCELang['lang_insert_image_align_default'] = 'Normal';
tinyMCELang['lang_insert_image_align_baseline'] = 'Grundlinie';
tinyMCELang['lang_insert_image_align_top'] = 'Oben';
tinyMCELang['lang_insert_image_align_middle'] = 'Mitte';
tinyMCELang['lang_insert_image_align_bottom'] = 'Unten';
tinyMCELang['lang_insert_image_align_texttop'] = 'Textoberkante';
tinyMCELang['lang_insert_image_align_absmiddle'] = 'Absolute Mitte';
tinyMCELang['lang_insert_image_align_absbottom'] = 'Absolut unten';
tinyMCELang['lang_insert_image_align_left'] = 'Links';
tinyMCELang['lang_insert_image_align_right'] = 'Rechts';
tinyMCELang['lang_insert_table_title'] = 'Tabelle einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_table_width'] = 'Breite';
tinyMCELang['lang_insert_table_height'] = 'H&ouml;he';
tinyMCELang['lang_insert_table_cols'] = 'Spalten';
tinyMCELang['lang_insert_table_rows'] = 'Zeilen';
tinyMCELang['lang_insert_table_cellspacing'] = 'Zellabstand';
tinyMCELang['lang_insert_table_cellpadding'] = 'Zellauff&uuml;llung';
tinyMCELang['lang_insert_table_border'] = 'Rahmen';
tinyMCELang['lang_insert_table_align'] = 'Ausrichten';
tinyMCELang['lang_insert_table_align_default'] = 'Normal';
tinyMCELang['lang_insert_table_align_left'] = 'Links';
tinyMCELang['lang_insert_table_align_right'] = 'Rechts';
tinyMCELang['lang_insert_table_align_middle'] = 'Zentriert';
tinyMCELang['lang_insert_table_class'] = 'Klasse';
tinyMCELang['lang_insert_table_delta_width'] = 30;
tinyMCELang['lang_theme_fontdefault'] = 'Normal';
tinyMCELang['lang_theme_paragraph'] = 'Standard-Text';
tinyMCELang['lang_theme_div'] = 'Div';
tinyMCELang['lang_theme_address'] = 'Addresse';
tinyMCELang['lang_theme_pre'] = 'Vorformatiert (pre)';
tinyMCELang['lang_theme_h1'] = '&Uuml;berschrift 1';
tinyMCELang['lang_theme_h2'] = '&Uuml;berschrift 2';
tinyMCELang['lang_theme_h3'] = '&Uuml;berschrift 3';
tinyMCELang['lang_theme_h4'] = '&Uuml;berschrift 4';
tinyMCELang['lang_theme_h5'] = '&Uuml;berschrift 5';
tinyMCELang['lang_theme_h6'] = '&Uuml;berschrift 6';
tinyMCELang['lang_theme_colorpicker_title'] = 'Farbe ausw&auml;hlen';
tinyMCELang['lang_theme_colorpicker_apply'] = '&Uuml;bernehmen';
tinyMCELang['lang_theme_forecolor_desc'] = 'Schriftfarbe ausw„hlen';
tinyMCELang['lang_theme_charmap_title'] = 'Sonderzeichen einf&uuml;gen';
tinyMCELang['lang_theme_charmap_desc'] = 'Sonderzeichen einf&uuml;gen';
tinyMCELang['lang_theme_visualaid_desc'] = 'Anzeige von Hilfslinien / unsichtbaren Elementen an/aus';
tinyMCELang['lang_insert_anchor_title'] = 'Anker einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_anchor_name'] = 'Ankername';
tinyMCELang['lang_theme_anchor_desc'] = 'Anker einf&uuml;gen / bearbeiten';
tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title';
// DE lang variables
// Translated 2004 by Crazy Chrissi
// Edited 2004 by Krokogras
tinyMCELang['lang_theme_style_select'] = 'Styles';
tinyMCELang['lang_theme_code_desc'] = 'HTML-Modus';
tinyMCELang['lang_theme_code_title'] = 'HTML-Code Editor';
tinyMCELang['lang_theme_code_wordwrap'] = 'Zeilenumbruch';
tinyMCELang['lang_theme_code_save'] = 'Speichern';
tinyMCELang['lang_theme_sub_desc'] = 'Tiefergestellt';
tinyMCELang['lang_theme_sup_desc'] = 'H&ouml;hergestellt';
tinyMCELang['lang_theme_hr_desc'] = 'Horizontale Linie einf&uuml;gen';
tinyMCELang['lang_theme_removeformat_desc'] = 'Formatierung l&ouml;schen';
tinyMCELang['lang_theme_table_desc'] = 'Neue Tabelle einf&uuml;gen / Tabelle bearbeiten';
tinyMCELang['lang_theme_table_insert_row_before_desc'] = 'Zeile vor aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_insert_row_after_desc'] = 'Zeile nach aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_delete_row_desc'] = 'Aktuelle Zeile l&ouml;schen';
tinyMCELang['lang_theme_table_insert_col_before_desc'] = 'Spalte vor aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_insert_col_after_desc'] = 'Spalte nach aktueller einf&uuml;gen';
tinyMCELang['lang_theme_table_delete_col_desc'] = 'Aktuelle Spalte l&ouml;schen';
tinyMCELang['lang_theme_custom1_desc'] = 'Beschreibung eingeben';
tinyMCELang['lang_insert_image_border'] = 'Rahmen';
tinyMCELang['lang_insert_image_dimensions'] = 'Gr&ouml;&szlig;e';
tinyMCELang['lang_insert_image_vspace'] = 'Vertikal einr&uuml;cken';
tinyMCELang['lang_insert_image_hspace'] = 'Horizontal einr&uuml;cken';
tinyMCELang['lang_insert_image_align'] = 'Ausrichten';
tinyMCELang['lang_insert_image_align_default'] = 'Normal';
tinyMCELang['lang_insert_image_align_baseline'] = 'Grundlinie';
tinyMCELang['lang_insert_image_align_top'] = 'Oben';
tinyMCELang['lang_insert_image_align_middle'] = 'Mitte';
tinyMCELang['lang_insert_image_align_bottom'] = 'Unten';
tinyMCELang['lang_insert_image_align_texttop'] = 'Textoberkante';
tinyMCELang['lang_insert_image_align_absmiddle'] = 'Absolute Mitte';
tinyMCELang['lang_insert_image_align_absbottom'] = 'Absolut unten';
tinyMCELang['lang_insert_image_align_left'] = 'Links';
tinyMCELang['lang_insert_image_align_right'] = 'Rechts';
tinyMCELang['lang_insert_table_title'] = 'Tabelle einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_table_width'] = 'Breite';
tinyMCELang['lang_insert_table_height'] = 'H&ouml;he';
tinyMCELang['lang_insert_table_cols'] = 'Spalten';
tinyMCELang['lang_insert_table_rows'] = 'Zeilen';
tinyMCELang['lang_insert_table_cellspacing'] = 'Zellabstand';
tinyMCELang['lang_insert_table_cellpadding'] = 'Zellauff&uuml;llung';
tinyMCELang['lang_insert_table_border'] = 'Rahmen';
tinyMCELang['lang_insert_table_align'] = 'Ausrichten';
tinyMCELang['lang_insert_table_align_default'] = 'Normal';
tinyMCELang['lang_insert_table_align_left'] = 'Links';
tinyMCELang['lang_insert_table_align_right'] = 'Rechts';
tinyMCELang['lang_insert_table_align_middle'] = 'Zentriert';
tinyMCELang['lang_insert_table_class'] = 'Klasse';
tinyMCELang['lang_insert_table_delta_width'] = 30;
tinyMCELang['lang_theme_fontdefault'] = 'Normal';
tinyMCELang['lang_theme_paragraph'] = 'Standard-Text';
tinyMCELang['lang_theme_div'] = 'Div';
tinyMCELang['lang_theme_address'] = 'Addresse';
tinyMCELang['lang_theme_pre'] = 'Vorformatiert (pre)';
tinyMCELang['lang_theme_h1'] = '&Uuml;berschrift 1';
tinyMCELang['lang_theme_h2'] = '&Uuml;berschrift 2';
tinyMCELang['lang_theme_h3'] = '&Uuml;berschrift 3';
tinyMCELang['lang_theme_h4'] = '&Uuml;berschrift 4';
tinyMCELang['lang_theme_h5'] = '&Uuml;berschrift 5';
tinyMCELang['lang_theme_h6'] = '&Uuml;berschrift 6';
tinyMCELang['lang_theme_colorpicker_title'] = 'Farbe ausw&auml;hlen';
tinyMCELang['lang_theme_colorpicker_apply'] = '&Uuml;bernehmen';
tinyMCELang['lang_theme_forecolor_desc'] = 'Schriftfarbe ausw„hlen';
tinyMCELang['lang_theme_charmap_title'] = 'Sonderzeichen einf&uuml;gen';
tinyMCELang['lang_theme_charmap_desc'] = 'Sonderzeichen einf&uuml;gen';
tinyMCELang['lang_theme_visualaid_desc'] = 'Anzeige von Hilfslinien / unsichtbaren Elementen an/aus';
tinyMCELang['lang_insert_anchor_title'] = 'Anker einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_anchor_name'] = 'Ankername';
tinyMCELang['lang_theme_anchor_desc'] = 'Anker einf&uuml;gen / bearbeiten';
tinyMCELang['lang_theme_insert_link_titlefield'] = 'Title';

View file

@ -0,0 +1,38 @@
// UK lang variables
tinyMCELang['lang_bold_desc'] = 'Bold';
tinyMCELang['lang_italic_desc'] = 'Italic';
tinyMCELang['lang_underline_desc'] = 'Underline';
tinyMCELang['lang_striketrough_desc'] = 'Striketrough';
tinyMCELang['lang_justifyleft_desc'] = 'Align left';
tinyMCELang['lang_justifycenter_desc'] = 'Align center';
tinyMCELang['lang_justifyright_desc'] = 'Align right';
tinyMCELang['lang_justifyfull_desc'] = 'Align full';
tinyMCELang['lang_bullist_desc'] = 'Unordered list';
tinyMCELang['lang_numlist_desc'] = 'Ordered list';
tinyMCELang['lang_outdent_desc'] = 'Outdent';
tinyMCELang['lang_indent_desc'] = 'Indent';
tinyMCELang['lang_undo_desc'] = 'Undo';
tinyMCELang['lang_redo_desc'] = 'Redo';
tinyMCELang['lang_link_desc'] = 'Insert/edit link';
tinyMCELang['lang_unlink_desc'] = 'Unlink';
tinyMCELang['lang_image_desc'] = 'Insert/edit image';
tinyMCELang['lang_cleanup_desc'] = 'Cleanup messy code';
tinyMCELang['lang_focus_alert'] = 'A editor instance must be focused before using this command.';
tinyMCELang['lang_edit_confirm'] = 'Do you want to use the WYSIWYG mode for this textarea?';
tinyMCELang['lang_insert_link_title'] = 'Insert/edit link';
tinyMCELang['lang_insert'] = 'Insert';
tinyMCELang['lang_update'] = 'Update';
tinyMCELang['lang_cancel'] = 'Cancel';
tinyMCELang['lang_insert_link_url'] = 'Link URL';
tinyMCELang['lang_insert_link_target'] = 'Target';
tinyMCELang['lang_insert_link_target_same'] = 'Open link in the same window';
tinyMCELang['lang_insert_link_target_blank'] = 'Open link in a new window';
tinyMCELang['lang_insert_image_title'] = 'Insert/edit image';
tinyMCELang['lang_insert_image_src'] = 'Image URL';
tinyMCELang['lang_insert_image_alt'] = 'Image description';
tinyMCELang['lang_help_desc'] = 'Help';
tinyMCELang['lang_bold_img'] = "bold.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?';

View file

@ -0,0 +1,38 @@
// Canadian French lang variables by Virtuelcom
tinyMCELang['lang_bold_desc'] = 'Gras';
tinyMCELang['lang_italic_desc'] = 'Italique';
tinyMCELang['lang_underline_desc'] = 'Souligner';
tinyMCELang['lang_striketrough_desc'] = 'Barrer';
tinyMCELang['lang_justifyleft_desc'] = 'Aligner &agrave; gauche';
tinyMCELang['lang_justifycenter_desc'] = 'Aligner au centre';
tinyMCELang['lang_justifyright_desc'] = 'Aligner &agrave; droite';
tinyMCELang['lang_justifyfull_desc'] = 'Justifier';
tinyMCELang['lang_bullist_desc'] = 'Puces';
tinyMCELang['lang_numlist_desc'] = 'Num&eacute;rotation';
tinyMCELang['lang_outdent_desc'] = 'R&eacute;duire le retrait';
tinyMCELang['lang_indent_desc'] = 'Augmenter le retrait';
tinyMCELang['lang_undo_desc'] = 'Annuler la derni&egrave;re action';
tinyMCELang['lang_redo_desc'] = 'Refaire la derni&egrave;re action annul&eacute;e';
tinyMCELang['lang_link_desc'] = 'Ins&eacute;rer un hyperlien';
tinyMCELang['lang_unlink_desc'] = 'Supprimer un hyperlien';
tinyMCELang['lang_image_desc'] = 'Ins&eacute;rer une image';
tinyMCELang['lang_cleanup_desc'] = 'Nettoyer le code';
tinyMCELang['lang_focus_alert'] = 'Un &eacute;diteur doit &ecirc;tre s&eacute;lectionn&eacute; pour utiliser cette fonction.';
tinyMCELang['lang_edit_confirm'] = 'D&eacute;sirez-vous utiliser l\'&eacute;diteur pour modifier cette zone?';
tinyMCELang['lang_insert_link_title'] = 'Ins&eacute;rer/modifier un hyperlien';
tinyMCELang['lang_insert'] = 'Ins&eacute;rer';
tinyMCELang['lang_update'] = 'Ins&eacute;rer';
tinyMCELang['lang_cancel'] = 'Annuler';
tinyMCELang['lang_insert_link_url'] = 'Adresse URL';
tinyMCELang['lang_insert_link_target'] = 'Destination';
tinyMCELang['lang_insert_link_target_same'] = 'Ouvrir dans la m&ecirc;me fen&ecirc;tre';
tinyMCELang['lang_insert_link_target_blank'] = 'Ouvrir dans une nouvelle fen&ecirc;tre';
tinyMCELang['lang_insert_image_title'] = 'Ins&eacute;rer/modifier une image';
tinyMCELang['lang_insert_image_src'] = 'Adresse de l\'image';
tinyMCELang['lang_insert_image_alt'] = 'Description de l\'image';
tinyMCELang['lang_help_desc'] = 'Aide';
tinyMCELang['lang_bold_img'] = "bold_fr.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?';

View file

@ -0,0 +1,38 @@
// JP lang variables
tinyMCELang['lang_bold_desc'] = '$BB@;z(B';
tinyMCELang['lang_italic_desc'] = '$B<PBN(B';
tinyMCELang['lang_underline_desc'] = '$B2<@~(B';
tinyMCELang['lang_striketrough_desc'] = '$BKu>C@~(B';
tinyMCELang['lang_justifyleft_desc'] = '$B:85M$a(B';
tinyMCELang['lang_justifycenter_desc'] = '$BCf1{9g$o$;(B';
tinyMCELang['lang_justifyright_desc'] = '$B1&5M$a(B';
tinyMCELang['lang_justifyfull_desc'] = '$B9TB7$((B';
tinyMCELang['lang_bullist_desc'] = '$B2U>r=q(B';
tinyMCELang['lang_numlist_desc'] = '$BHV9fIU$-2U>r=q(B';
tinyMCELang['lang_outdent_desc'] = '$B;z>e$2(B';
tinyMCELang['lang_indent_desc'] = '$B;z2<$2(B';
tinyMCELang['lang_undo_desc'] = '$B$d$j$J$*$7(B';
tinyMCELang['lang_redo_desc'] = '$B:F<B9T(B';
tinyMCELang['lang_link_desc'] = '$B%j%s%/$NA^F~(B/$BJT=8(B';
tinyMCELang['lang_unlink_desc'] = '$B%j%s%/$N:o=|(B';
tinyMCELang['lang_image_desc'] = '$B2hA|$NA^F~(B/$BJT=8(B';
tinyMCELang['lang_cleanup_desc'] = '$B%3!<%I@0M}(B';
tinyMCELang['lang_focus_alert'] = '$B$3$N%3%^%s%I$r;H$&A0$K%(%G%#%?>e$N$I$3$+$rA*Br$9$kI,MW$,$"$j$^$9!#(B';
tinyMCELang['lang_edit_confirm'] = 'WYSIWYG$B%b!<%I$G$3$N%F%-%9%H%(%j%"$rJT=8$7$^$9$+!)(B';
tinyMCELang['lang_insert_link_title'] = '$B%j%s%/$NA^F~(B/$BJT=8(B';
tinyMCELang['lang_insert'] = '$BA^F~(B';
tinyMCELang['lang_update'] = '$BA^F~(B';
tinyMCELang['lang_cancel'] = '$B<h$j>C$7(B';
tinyMCELang['lang_insert_link_url'] = '$B%j%s%/@h(BURL';
tinyMCELang['lang_insert_link_target'] = '$B%?!<%2%C%H(B';
tinyMCELang['lang_insert_link_target_same'] = '$BF1$8Ak$G%j%s%/$r3+$/(B';
tinyMCELang['lang_insert_link_target_blank'] = '$B?7$7$$Ak$G%j%s%/$r3+$/(B';
tinyMCELang['lang_insert_image_title'] = '$B2hA|$NA^F~(B/$BJT=8(B';
tinyMCELang['lang_insert_image_src'] = '$B2hA|$N(BURL';
tinyMCELang['lang_insert_image_alt'] = '$B2hA|$N@bL@(B';
tinyMCELang['lang_help_desc'] = '$B%X%k%W(B';
tinyMCELang['lang_bold_img'] = "bold.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?';

View file

@ -0,0 +1,2 @@
The language pack codes are based on ISO-639-2
http://www.loc.gov/standards/iso639-2/englangn.html

View file

@ -0,0 +1,40 @@
// SE lang variables
tinyMCELang['lang_bold_desc'] = 'Fet';
tinyMCELang['lang_italic_desc'] = 'Kursiv';
tinyMCELang['lang_underline_desc'] = 'Understruken';
tinyMCELang['lang_striketrough_desc'] = 'Genomstruken';
tinyMCELang['lang_justifyleft_desc'] = 'V&#228;nsterjustera';
tinyMCELang['lang_justifycenter_desc'] = 'Centrera';
tinyMCELang['lang_justifyright_desc'] = 'H&#246;gerjustera';
tinyMCELang['lang_justifyfull_desc'] = 'Kantjustera';
tinyMCELang['lang_bullist_desc'] = 'Punktlista';
tinyMCELang['lang_numlist_desc'] = 'Nummerlista';
tinyMCELang['lang_outdent_desc'] = 'Utdrag';
tinyMCELang['lang_indent_desc'] = 'Indrag';
tinyMCELang['lang_undo_desc'] = '&#197;ngra';
tinyMCELang['lang_redo_desc'] = 'G&#246;r om';
tinyMCELang['lang_link_desc'] = 'Skapa l&#228;nk';
tinyMCELang['lang_unlink_desc'] = 'Ta bort l&#228;nk';
tinyMCELang['lang_image_desc'] = 'Skapa/redigera bild';
tinyMCELang['lang_cleanup_desc'] = 'Rensa skr&#228;pkod';
tinyMCELang['lang_focus_alert'] = 'Flytta mark\u00F6ren till en textyta innan du anv\u00E4nder detta kommando.';
tinyMCELang['lang_edit_confirm'] = 'Vill du anv&#228;nda WYSIWYG editorn f&#246;r detta textf&#228;lt?';
tinyMCELang['lang_insert_link_title'] = 'Skapa/redigera l&#228;nk';
tinyMCELang['lang_insert'] = 'Skapa';
tinyMCELang['lang_update'] = 'Uppdatera';
tinyMCELang['lang_cancel'] = 'Avbryt';
tinyMCELang['lang_insert_link_url'] = 'L&#228;nkens URL';
tinyMCELang['lang_insert_link_target'] = 'F&#246;nster';
tinyMCELang['lang_insert_link_target_same'] = '&#214;ppna l&#228;nken i samma f&#246;nster';
tinyMCELang['lang_insert_link_target_blank'] = '&#214;ppna l&#228;nken i ett nytt f&#246;nster';
tinyMCELang['lang_insert_link_delta_width'] = 20;
tinyMCELang['lang_insert_link_delta_height'] = 10;
tinyMCELang['lang_insert_image_title'] = 'Skapa/redigera bild';
tinyMCELang['lang_insert_image_src'] = 'Bildens URL';
tinyMCELang['lang_insert_image_alt'] = 'Bildens beskrivning';
tinyMCELang['lang_bold_img'] = 'bold_de_se.gif';
tinyMCELang['lang_italic_img'] = 'italic_de_se.gif';
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Klipput/Kopiera/Klistra fungerar inte Mozilla och Firefox. Vill du veta mer om detta?';
tinyMCELang['lang_help_desc'] = "Hjälp";

View file

@ -0,0 +1,37 @@
// TH lang variables Thai contributed by Innozent
tinyMCELang['lang_bold_desc'] = 'µÑÇ˹Ò';
tinyMCELang['lang_italic_desc'] = 'µÑÇéàÍÕ§';
tinyMCELang['lang_underline_desc'] = '¢Õ´àÊé¹ãµé';
tinyMCELang['lang_striketrough_desc'] = '¢Õ´¤ÅèÍÁ';
tinyMCELang['lang_justifyleft_desc'] = 'ªÔ´¢Íº«éÒÂ';
tinyMCELang['lang_justifycenter_desc'] = '¡Öè§¡ÅÒ§';
tinyMCELang['lang_justifyright_desc'] = 'ªÔ´¢Íº¢ÇÒ';
tinyMCELang['lang_justifyfull_desc'] = '¨Ñ´ªÔ´¢Íº';
tinyMCELang['lang_bullist_desc'] = 'ÊÑ­ÅѡɳìáÊ´§ËÑÇ¢éÍÂèÍÂ';
tinyMCELang['lang_numlist_desc'] = 'ÅӴѺàÅ¢';
tinyMCELang['lang_outdent_desc'] = 'Å´¡ÒÃàÂ×éͧ';
tinyMCELang['lang_indent_desc'] = 'à¾ÔèÁ¡ÒÃàÂ×éͧ';
tinyMCELang['lang_undo_desc'] = 'àÅÔ¡·Ó';
tinyMCELang['lang_redo_desc'] = '·ÓãËÁè';
tinyMCELang['lang_link_desc'] = 'à¾ÔèÁÅÔ§¤ì';
tinyMCELang['lang_unlink_desc'] = 'źÅÔ§¤ì';
tinyMCELang['lang_image_desc'] = 'ãÊèÃÙ»';
tinyMCELang['lang_cleanup_desc'] = '·Ó¤ÇÒÁÊÐÍÒ´¢éͤÇÒÁ';
tinyMCELang['lang_focus_alert'] = 'µéͧàÅ×Í¡¡Åèͧ¢éͤÇÒÁ¡è͹·Õè¨Ðãªé¤ÓÊÑè§¹Õé';
tinyMCELang['lang_edit_confirm'] = '¤Ø³µéͧ¡Ò÷Õè¨Ðãªé WYSIWYG mode ÊÓËÃѺ¡Åèͧ¢éͤÇÒÁ¹ÕéËÃ×ÍäÁè?';
tinyMCELang['lang_insert_link_title'] = 'à¾ÔèÁ/á¡éä¢ ÅÔ§¤ì';
tinyMCELang['lang_insert'] = 'à¾ÔèÁ';
tinyMCELang['lang_cancel'] = '¡àÅÔ¡';
tinyMCELang['lang_insert_link_url'] = 'Link URL';
tinyMCELang['lang_insert_link_target'] = 'à»Ô´ÅÔ§¤ìã¹';
tinyMCELang['lang_insert_link_target_same'] = '˹éÒµèÒ§à´ÕÂǡѹ';
tinyMCELang['lang_insert_link_target_blank'] = '˹éÒµèÒ§ãËÁè';
tinyMCELang['lang_insert_image_title'] = 'à¾ÔèÁ/á¡éä¢ ÃÙ»';
tinyMCELang['lang_insert_image_src'] = 'URL ¢Í§ÃÙ»';
tinyMCELang['lang_insert_image_alt'] = '¤Ó͸ԺÒÂÃÙ»';
tinyMCELang['lang_help_desc'] = 'ªèÇÂàËÅ×Í';
tinyMCELang['lang_bold_img'] = "bold.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = 'Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?';

View file

@ -0,0 +1,38 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_bold_desc'] = '粗体';
tinyMCELang['lang_italic_desc'] = '斜体';
tinyMCELang['lang_underline_desc'] = '下划线';
tinyMCELang['lang_striketrough_desc'] = '删除线';
tinyMCELang['lang_justifyleft_desc'] = '左对齐';
tinyMCELang['lang_justifycenter_desc'] = '居中对齐';
tinyMCELang['lang_justifyright_desc'] = '右对齐';
tinyMCELang['lang_justifyfull_desc'] = '两端对齐';
tinyMCELang['lang_bullist_desc'] = '无序列表';
tinyMCELang['lang_numlist_desc'] = '有序列表';
tinyMCELang['lang_outdent_desc'] = '减少缩进';
tinyMCELang['lang_indent_desc'] = '增加缩进';
tinyMCELang['lang_undo_desc'] = '撤消';
tinyMCELang['lang_redo_desc'] = '重做';
tinyMCELang['lang_link_desc'] = '插入/编辑 链接';
tinyMCELang['lang_unlink_desc'] = '删除链接';
tinyMCELang['lang_image_desc'] = '插入/编辑 图像';
tinyMCELang['lang_cleanup_desc'] = '清除冗余代码';
tinyMCELang['lang_focus_alert'] = '在使用此命令前某个编辑器必须先获得焦点!';
tinyMCELang['lang_edit_confirm'] = '你想在此TextArea上使用所见即所得编辑器么';
tinyMCELang['lang_insert_link_title'] = '插入/编辑 链接';
tinyMCELang['lang_insert'] = '插入';
tinyMCELang['lang_update'] = '更新';
tinyMCELang['lang_cancel'] = '取消';
tinyMCELang['lang_insert_link_url'] = '链接地址';
tinyMCELang['lang_insert_link_target'] = '目标';
tinyMCELang['lang_insert_link_target_same'] = '在同一窗口中打开链接';
tinyMCELang['lang_insert_link_target_blank'] = '在新窗口中打开链接';
tinyMCELang['lang_insert_image_title'] = '插入/编辑 图像';
tinyMCELang['lang_insert_image_src'] = '图像地址';
tinyMCELang['lang_insert_image_alt'] = '图像描述';
tinyMCELang['lang_help_desc'] = '帮助';
tinyMCELang['lang_bold_img'] = "bold.gif";
tinyMCELang['lang_italic_img'] = "italic.gif";
tinyMCELang['lang_underline_img'] = "underline.gif";
tinyMCELang['lang_clipboard_msg'] = '剪切/复制/粘贴功能在Mozilla和Firefox上尚不可用。\n你想了解关于这个问题的更多信息吗';

View file

@ -1,55 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advhr', 'uk,de,se');
function TinyMCE_advhr_getControlHTML(control_name) {
switch (control_name) {
case "advhr":
return '<img id="{$editor_id}_advhr" src="{$pluginurl}/images/advhr.gif" title="{$lang_insert_advhr_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');" />';
}
return "";
}
/**
* Executes the mceAdvanceHr command.
*/
function TinyMCE_advhr_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceAdvancedHr":
var template = new Array();
template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme
template['width'] = 270;
template['height'] = 180;
var size = "", width = "", noshade = "";
if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr"){
tinyMCE.hrElement = tinyMCE.selectedElement;
if (tinyMCE.hrElement) {
size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
}
tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
} else {
if (tinyMCE.isMSIE) {
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
} else {
tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'insert'});
}
}
return true;
}
// Pass to next handler in chain
return false;
}
function TinyMCE_advhr_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonNormal');
do {
if (node.nodeName.toLowerCase() == "hr")
tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonSelected');
} while ((node = node.parentNode));
return true;
}
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advhr','en,de,sv,zh_cn,cs');function TinyMCE_advhr_getControlHTML(control_name){switch(control_name){case "advhr":return '<img id="{$editor_id}_advhr" src="{$pluginurl}/images/advhr.gif" title="{$lang_insert_advhr_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');" />';}return "";}function TinyMCE_advhr_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceAdvancedHr":var template=new Array();template['file']='../../plugins/advhr/rule.htm';template['width']=270;template['height']=180;var size="",width="",noshade="";if(tinyMCE.selectedElement!=null&&tinyMCE.selectedElement.nodeName.toLowerCase()=="hr"){tinyMCE.hrElement=tinyMCE.selectedElement;if(tinyMCE.hrElement){size=tinyMCE.hrElement.getAttribute('size')?tinyMCE.hrElement.getAttribute('size'):"";width=tinyMCE.hrElement.getAttribute('width')?tinyMCE.hrElement.getAttribute('width'):"";noshade=tinyMCE.hrElement.getAttribute('noshade')?tinyMCE.hrElement.getAttribute('noshade'):"";}tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'update'});}else{if(tinyMCE.isMSIE){tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,'<hr />');}else{tinyMCE.openWindow(template,{editor_id:editor_id,size:size,width:width,noshade:noshade,mceDo:'insert'});}}return true;}return false;}function TinyMCE_advhr_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){tinyMCE.switchClassSticky(editor_id+'_advhr','mceButtonNormal');do{if(node.nodeName.toLowerCase()=="hr")tinyMCE.switchClassSticky(editor_id+'_advhr','mceButtonSelected');}while((node=node.parentNode));return true;}

View file

@ -0,0 +1,55 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advhr', 'en,de,sv,zh_cn,cs');
function TinyMCE_advhr_getControlHTML(control_name) {
switch (control_name) {
case "advhr":
return '<img id="{$editor_id}_advhr" src="{$pluginurl}/images/advhr.gif" title="{$lang_insert_advhr_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceAdvancedHr\');" />';
}
return "";
}
/**
* Executes the mceAdvanceHr command.
*/
function TinyMCE_advhr_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceAdvancedHr":
var template = new Array();
template['file'] = '../../plugins/advhr/rule.htm'; // Relative to theme
template['width'] = 270;
template['height'] = 180;
var size = "", width = "", noshade = "";
if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "hr"){
tinyMCE.hrElement = tinyMCE.selectedElement;
if (tinyMCE.hrElement) {
size = tinyMCE.hrElement.getAttribute('size') ? tinyMCE.hrElement.getAttribute('size') : "";
width = tinyMCE.hrElement.getAttribute('width') ? tinyMCE.hrElement.getAttribute('width') : "";
noshade = tinyMCE.hrElement.getAttribute('noshade') ? tinyMCE.hrElement.getAttribute('noshade') : "";
}
tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'update'});
} else {
if (tinyMCE.isMSIE) {
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false,'<hr />');
} else {
tinyMCE.openWindow(template, {editor_id : editor_id, size : size, width : width, noshade : noshade, mceDo : 'insert'});
}
}
return true;
}
// Pass to next handler in chain
return false;
}
function TinyMCE_advhr_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonNormal');
do {
if (node.nodeName.toLowerCase() == "hr")
tinyMCE.switchClassSticky(editor_id + '_advhr', 'mceButtonSelected');
} while ((node = node.parentNode));
return true;
}

View file

@ -0,0 +1,6 @@
// UK lang variables
tinyMCELang['lang_insert_advhr_desc'] = 'Vložit/editovat vodorovný oddìlovaè'
tinyMCELang['lang_insert_advhr_width'] = 'Šíøka';
tinyMCELang['lang_insert_advhr_size'] = 'Výška';
tinyMCELang['lang_insert_advhr_noshade'] = 'Nestínovat';

View file

@ -1,6 +1,6 @@
// DE lang variables
tinyMCELang['lang_insert_advhr_desc'] = 'Horizontale Linie einf&uuml;gen / bearbeiten'
tinyMCELang['lang_insert_advhr_width'] = 'Breite';
tinyMCELang['lang_insert_advhr_size'] = 'H&ouml;he';
tinyMCELang['lang_insert_advhr_noshade'] = 'Keinen Schatten';
// DE lang variables
tinyMCELang['lang_insert_advhr_desc'] = 'Horizontale Linie einf&uuml;gen / bearbeiten'
tinyMCELang['lang_insert_advhr_width'] = 'Breite';
tinyMCELang['lang_insert_advhr_size'] = 'H&ouml;he';
tinyMCELang['lang_insert_advhr_noshade'] = 'Keinen Schatten';

View file

@ -0,0 +1,6 @@
// UK lang variables
tinyMCELang['lang_insert_advhr_desc'] = 'Insert / edit Horizontale Rule'
tinyMCELang['lang_insert_advhr_width'] = 'Width';
tinyMCELang['lang_insert_advhr_size'] = 'Height';
tinyMCELang['lang_insert_advhr_noshade'] = 'No shadow';

View file

@ -0,0 +1,6 @@
// SE lang variables
tinyMCELang['lang_insert_advhr_desc'] = 'Skapa / uppdatera Horizontell linie'
tinyMCELang['lang_insert_advhr_width'] = 'Bredd';
tinyMCELang['lang_insert_advhr_size'] = 'Höjd';
tinyMCELang['lang_insert_advhr_noshade'] = 'Ingen skugga';

View file

@ -0,0 +1,6 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insert_advhr_desc'] = '插入/编辑 水平标尺'
tinyMCELang['lang_insert_advhr_width'] = '宽度';
tinyMCELang['lang_insert_advhr_size'] = '高度';
tinyMCELang['lang_insert_advhr_noshade'] = '无阴影';

View file

@ -1,20 +1,20 @@
Advhr plugin for TinyMCE
-----------------------------
About:
This is a more advanced hr dialog contributed by Michael Keck.
This one supports noshade, width and size.
Installation instructions:
* Copy the advhr directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "advhr".
* Add this "hr[class|width|size|noshade]" to extended_valid_elements option.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "advhr",
theme_advanced_buttons1_add : "advhr",
extended_valid_elements : "hr[class|width|size|noshade]"
});
Advhr plugin for TinyMCE
-----------------------------
About:
This is a more advanced hr dialog contributed by Michael Keck.
This one supports noshade, width and size.
Installation instructions:
* Copy the advhr directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "advhr".
* Add this "hr[class|width|size|noshade]" to extended_valid_elements option.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "advhr",
theme_advanced_buttons1_add : "advhr",
extended_valid_elements : "hr[class|width|size|noshade]"
});

View file

@ -1,108 +1,108 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_link_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
function init() {
// modified 2004-11-10 by Michael Keck (me@michaelkeck.de)
// supporting onclick event to open pop windows
var formObj = document.forms[0];
formObj.width.value = tinyMCE.getWindowArg('width');
formObj.size.value = tinyMCE.getWindowArg('size');
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
if (tinyMCE.getWindowArg('noshade')) {
formObj.noshade.checked = true;
}
if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1);
}
window.focus();
}
function insertHR() {
var formObj = document.forms[0];
if (window.opener) {
var width = formObj.width.value;
var size = formObj.size.value;
var html = '<hr';
if (size!='' && size!=0) {
html += ' size="' + size + '"';
}
if (width!='' && width!=0) {
html += ' width="' + width;
if (formObj.width2.value=='%') {
html += '%';
}
html += '"';
}
if (formObj.noshade.checked==true) {
html += ' noshade';
}
html += ' />';
tinyMCE.execCommand("mceInsertContent",true,html);
top.close();
}
}
function cancelAction() {
top.close();
}
//-->
</script>
<style type="text/css">
<!--
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
-->
</style>
</head>
<body onload="init();">
<form onsubmit="insertHR();return false;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2" class="title">{$lang_insert_advhr_desc}</td>
</tr>
<tr>
<td align="right">{$lang_insert_advhr_width}:</td>
<td nowrap="nowrap">
<input name="width" type="text" id="width" value="" style="width: 50px; vertical-align: middle;" />
<select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
<tr>
<td align="right" valign="top">{$lang_insert_advhr_size}:</td>
<td><select name="size" type="text" id="size" value="" style="width: 100px;">
<option value="">Normal</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
<tr>
<td align="right" valign="top"><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
<td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>
</tr>
<tr>
<td><input type="button" name="insert" value="{$lang_insert}" onclick="insertHR();" id="insert" /></td>
<td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_link_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
function init() {
// modified 2004-11-10 by Michael Keck (me@michaelkeck.de)
// supporting onclick event to open pop windows
var formObj = document.forms[0];
formObj.width.value = tinyMCE.getWindowArg('width');
formObj.size.value = tinyMCE.getWindowArg('size');
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
if (tinyMCE.getWindowArg('noshade')) {
formObj.noshade.checked = true;
}
if (tinyMCE.getWindowArg('width').lastIndexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = formObj.width.value.substring(0,formObj.width.value.length-1);
}
window.focus();
}
function insertHR() {
var formObj = document.forms[0];
if (window.opener) {
var width = formObj.width.value;
var size = formObj.size.value;
var html = '<hr';
if (size!='' && size!=0) {
html += ' size="' + size + '"';
}
if (width!='' && width!=0) {
html += ' width="' + width;
if (formObj.width2.value=='%') {
html += '%';
}
html += '"';
}
if (formObj.noshade.checked==true) {
html += ' noshade';
}
html += ' />';
tinyMCE.execCommand("mceInsertContent",true,html);
top.close();
}
}
function cancelAction() {
top.close();
}
//-->
</script>
<style type="text/css">
<!--
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
-->
</style>
</head>
<body onload="init();">
<form onsubmit="insertHR();return false;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
<tr>
<td colspan="2" class="title">{$lang_insert_advhr_desc}</td>
</tr>
<tr>
<td align="right">{$lang_insert_advhr_width}:</td>
<td nowrap="nowrap">
<input name="width" type="text" id="width" value="" style="width: 50px; vertical-align: middle;" />
<select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
<tr>
<td align="right" valign="top">{$lang_insert_advhr_size}:</td>
<td><select name="size" type="text" id="size" value="" style="width: 100px;">
<option value="">Normal</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select></td>
<tr>
<td align="right" valign="top"><input type="checkbox" name="noshade" id="noshade" class="radio" /></td>
<td><label for="noshade">{$lang_insert_advhr_noshade}</label></td>
</tr>
<tr>
<td><input type="button" name="insert" value="{$lang_insert}" onclick="insertHR();" id="insert" /></td>
<td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>

View file

@ -1,19 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advimage', 'uk,se,de');
/**
* Insert image template function.
*/
function TinyMCE_advimage_getInsertImageTemplate() {
var template = new Array();
template['file'] = '../../plugins/advimage/image.htm';
template['width'] = 380;
template['height'] = 380;
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
return template;
}
tinyMCE.importPluginLanguagePack('advimage','en,de,sv,zh_cn,cs');function TinyMCE_advimage_getInsertImageTemplate(){var template=new Array();template['file']='../../plugins/advimage/image.htm';template['width']=380;template['height']=380;template['width']+=tinyMCE.getLang('lang_insert_image_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_image_delta_height',0);return template;}

View file

@ -0,0 +1,19 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advimage', 'en,de,sv,zh_cn,cs');
/**
* Insert image template function.
*/
function TinyMCE_advimage_getInsertImageTemplate() {
var template = new Array();
template['file'] = '../../plugins/advimage/image.htm';
template['width'] = 380;
template['height'] = 380;
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_image_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_image_delta_height', 0);
return template;
}

View file

@ -4,6 +4,11 @@
<head>
<title>{$lang_insert_image_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript">
var url = tinyMCE.getParam("external_image_list_url");
if (url != null)
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.documentBasePath + "/" + url + '"></sc'+'ript>');
</script>
<script language="javascript" type="text/javascript">
<!--
@ -101,8 +106,24 @@
formObj.onmouseout.value = '';
}
window.focus();
// Handle file browser
if (tinyMCE.getParam("file_browser_callback") != null) {
document.getElementById('src').style.width = '180px';
var html = '';
html += '<img id="browserBtn" src="../../themes/advanced/images/browse.gif"';
html += ' onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"';
html += ' onmouseout="tinyMCE.restoreClass(this);"';
html += ' onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"';
html += ' onclick="javascript:tinyMCE.openFileBrowser(\'src\',document.forms[0].src.value,\'image\');"';
html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" />';
document.getElementById('browser').innerHTML = html;
}
window.focus();
}
// added 2004-11-10 by Michael Keck (me@michaelkeck.de)
@ -144,8 +165,31 @@
</tr>
<tr>
<td align="right" nowrap="nowrap">{$lang_insert_image_src}:</td>
<td><input name="src" type="text" id="src" value="" style="width: 200px" /></td>
<td> <table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input name="src" type="text" id="src" value="" style="width: 200px" /></td>
<td id="browser"></td>
</tr>
</table></td>
</tr>
<!-- Image list -->
<script language="javascript">
if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
var html = "";
html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>';
html += '<td><select name="image_list" style="width: 200px" onchange="this.form.src.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
for (var i=0; i<tinyMCEImageList.length; i++)
html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
html += '</select></td></tr>';
document.write(html);
}
</script>
<!-- /Image list -->
<tr>
<td align="right" nowrap="nowrap">{$lang_insert_image_alt}:</td>
<td><input name="alt" type="text" id="alt" value="" style="width: 200px" onblur="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" onfocus="if(document.forms[0].title.value==''){ document.forms[0].title.value=this.value; }" /></td>
@ -196,10 +240,46 @@
<td align="right" nowrap="nowrap" id="showInput1">{$lang_insert_image_mouseover}:</td>
<td><input name="onmouseover" type="text" id="onmouseover" value="" style="width: 200px" /></td>
</tr>
<!-- Image list -->
<script language="javascript">
if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
var html = "";
html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>';
html += '<td><select name="image_list2" style="width: 200px" onchange="this.form.onmouseover.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
for (var i=0; i<tinyMCEImageList.length; i++)
html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
html += '</select></td></tr>';
document.write(html);
}
</script>
<!-- /Image list -->
<tr>
<td align="right" nowrap="nowrap" id="showInput2">{$lang_insert_image_mouseout}:</td>
<td><input name="onmouseout" type="text" id="onmouseout" value="" style="width: 200px" /></td>
</tr>
<!-- Image list -->
<script language="javascript">
if (typeof(tinyMCEImageList) != "undefined" && tinyMCEImageList.length > 0) {
var html = "";
html += '<tr><td align="right" nowrap="nowrap">{$lang_image_list}:</td>';
html += '<td><select name="image_list3" style="width: 200px" onchange="this.form.onmouseout.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
for (var i=0; i<tinyMCEImageList.length; i++)
html += '<option value="' + tinyMCEImageList[i][1] + '">' + tinyMCEImageList[i][0] + '</option>';
html += '</select></td></tr>';
document.write(html);
}
</script>
<!-- /Image list -->
<tr>
<td><input type="button" name="insert" value="{$lang_insert}" onclick="insertImage();" id="insert" /></td>
<td align="right"><input type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" /></td>

View file

@ -0,0 +1,6 @@
// UK lang variables
tinyMCELang['lang_insert_image_alt2'] = 'Název obrázku';
tinyMCELang['lang_insert_image_onmousemove'] = 'Alternativní obrázek'
tinyMCELang['lang_insert_image_mouseover'] = 'pøi najetí myši';
tinyMCELang['lang_insert_image_mouseout'] = 'pøi odjetí myši';

View file

@ -0,0 +1,6 @@
// UK lang variables
tinyMCELang['lang_insert_image_alt2'] = 'Image title';
tinyMCELang['lang_insert_image_onmousemove'] = 'Alternative image'
tinyMCELang['lang_insert_image_mouseover'] = 'for mouse over';
tinyMCELang['lang_insert_image_mouseout'] = 'for mouse out';

View file

@ -0,0 +1,6 @@
// SE lang variables
tinyMCELang['lang_insert_image_alt2'] = 'Bildens titel';
tinyMCELang['lang_insert_image_onmousemove'] = 'Alternativ bild'
tinyMCELang['lang_insert_image_mouseover'] = 'n&auml;r pekaren &auml;r &ouml;ver';
tinyMCELang['lang_insert_image_mouseout'] = 'n&auml;r pekaren &auml;r utanf&ouml;r';

View file

@ -0,0 +1,6 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insert_image_alt2'] = '图片标题';
tinyMCELang['lang_insert_image_onmousemove'] = '替代图像'
tinyMCELang['lang_insert_image_mouseover'] = '鼠标移上时';
tinyMCELang['lang_insert_image_mouseout'] = '鼠标移开时';

View file

@ -1,18 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advlink', 'uk,se,de');
/**
* Insert link template function.
*/
function TinyMCE_advlink_getInsertLinkTemplate() {
var template = new Array();
template['file'] = '../../plugins/advlink/link.htm';
template['width'] = 440;
template['height'] = 420;
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
return template;
}
tinyMCE.importPluginLanguagePack('advlink','en,de,sv,zh_cn,cs');function TinyMCE_advlink_getInsertLinkTemplate(){var template=new Array();template['file']='../../plugins/advlink/link.htm';template['width']=440;template['height']=420;template['width']+=tinyMCE.getLang('lang_insert_link_delta_width',0);template['height']+=tinyMCE.getLang('lang_insert_link_delta_height',0);return template;}

View file

@ -0,0 +1,18 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('advlink', 'en,de,sv,zh_cn,cs');
/**
* Insert link template function.
*/
function TinyMCE_advlink_getInsertLinkTemplate() {
var template = new Array();
template['file'] = '../../plugins/advlink/link.htm';
template['width'] = 440;
template['height'] = 420;
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_link_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_link_delta_height', 0);
return template;
}

View file

@ -0,0 +1,20 @@
// CZ lang variables
tinyMCELang['lang_insert_link_target_same'] = 'Otevøít ve stejném oknì/rámu';
tinyMCELang['lang_insert_link_target_parent'] = 'Otevøít v rodièovském oknì/rámu';
tinyMCELang['lang_insert_link_target_top'] = 'Otevøít v nejvyšším rámu (pøepíše všechny rámy)';
tinyMCELang['lang_insert_link_target_blank'] = 'Otevøít v novém oknì';
tinyMCELang['lang_insert_link_target_named'] = 'Otevøít v oknì';
tinyMCELang['lang_insert_link_popup'] = 'JS-Popup';
tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL';
tinyMCELang['lang_insert_link_popup_name'] = 'Název okna';
tinyMCELang['lang_insert_link_popup_return'] = 'insert \'return false\'';
tinyMCELang['lang_insert_link_popup_scrollbars'] = 'Ukázat posuvníky';
tinyMCELang['lang_insert_link_popup_statusbar'] = 'Ukázat stavový øádek';
tinyMCELang['lang_insert_link_popup_toolbar'] = 'Ukázat ovl. lištu';
tinyMCELang['lang_insert_link_popup_menubar'] = 'Ukázat menu';
tinyMCELang['lang_insert_link_popup_location'] = 'Ukázat lištu umístìní';
tinyMCELang['lang_insert_link_popup_resizable'] = 'Promìnná velikost okna';
tinyMCELang['lang_insert_link_popup_size'] = 'Velikost';
tinyMCELang['lang_insert_link_popup_position'] = 'Umístìní (X/Y)';
tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Vložte název cíle nebo vyberte jinou volbu.';

View file

@ -0,0 +1,20 @@
// UK lang variables
tinyMCELang['lang_insert_link_target_same'] = 'Open in this window / frame';
tinyMCELang['lang_insert_link_target_parent'] = 'Open in parent window / frame';
tinyMCELang['lang_insert_link_target_top'] = 'Open in top frame (replaces all frames)';
tinyMCELang['lang_insert_link_target_blank'] = 'Open in new window';
tinyMCELang['lang_insert_link_target_named'] = 'Open in the window';
tinyMCELang['lang_insert_link_popup'] = 'JS-Popup';
tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL';
tinyMCELang['lang_insert_link_popup_name'] = 'Window name';
tinyMCELang['lang_insert_link_popup_return'] = 'insert \'return false\'';
tinyMCELang['lang_insert_link_popup_scrollbars'] = 'Show scrollbars';
tinyMCELang['lang_insert_link_popup_statusbar'] = 'Show statusbar';
tinyMCELang['lang_insert_link_popup_toolbar'] = 'Show toolbars';
tinyMCELang['lang_insert_link_popup_menubar'] = 'Show menubar';
tinyMCELang['lang_insert_link_popup_location'] = 'Show locationbar';
tinyMCELang['lang_insert_link_popup_resizable'] = 'Make window resizable';
tinyMCELang['lang_insert_link_popup_size'] = 'Size';
tinyMCELang['lang_insert_link_popup_position'] = 'Position (X/Y)';
tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Please insert a name for the target or choose another option.';

View file

@ -0,0 +1,20 @@
// SE lang variables
tinyMCELang['lang_insert_link_target_same'] = '&Ouml;ppna i samma f&ouml;nster / ram';
tinyMCELang['lang_insert_link_target_parent'] = '&Ouml;ppna i underliggande f&ouml;nster / ram';
tinyMCELang['lang_insert_link_target_top'] = '&Ouml;ppna i topp ramen (ers&auml;tter alla ramar)';
tinyMCELang['lang_insert_link_target_blank'] = '&Ouml;ppna i ett nytt f&ouml;nster';
tinyMCELang['lang_insert_link_target_named'] = '&Ouml;ppna i ett specifikt f&ouml;nster';
tinyMCELang['lang_insert_link_popup'] = 'JS-Popup';
tinyMCELang['lang_insert_link_popup_url'] = 'Popup URL';
tinyMCELang['lang_insert_link_popup_name'] = 'F&ouml;nstrets namn';
tinyMCELang['lang_insert_link_popup_return'] = 'S&auml;ttin \'return false\'';
tinyMCELang['lang_insert_link_popup_scrollbars'] = 'Visa scrollbars';
tinyMCELang['lang_insert_link_popup_statusbar'] = 'Visa statusbar';
tinyMCELang['lang_insert_link_popup_toolbar'] = 'Visa toolbars';
tinyMCELang['lang_insert_link_popup_menubar'] = 'Visa menubar';
tinyMCELang['lang_insert_link_popup_location'] = 'Visa locationbar';
tinyMCELang['lang_insert_link_popup_resizable'] = 'G&ouml;r f&ouml;nstret skalbart';
tinyMCELang['lang_insert_link_popup_size'] = 'Storlek';
tinyMCELang['lang_insert_link_popup_position'] = 'Position (X/Y)';
tinyMCELang['lang_insert_link_popup_missingtarget'] = 'Var god skriv ett namn för målet eller välj ett annat val.';

View file

@ -0,0 +1,20 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insert_link_target_same'] = '在本窗口/框架中打开';
tinyMCELang['lang_insert_link_target_parent'] = '在父窗口/框架中打开';
tinyMCELang['lang_insert_link_target_top'] = '在根框架中打开(替换所有框架)';
tinyMCELang['lang_insert_link_target_blank'] = '在新窗口中打开';
tinyMCELang['lang_insert_link_target_named'] = '在此窗口中打开';
tinyMCELang['lang_insert_link_popup'] = 'JS-Popup';
tinyMCELang['lang_insert_link_popup_url'] = '弹出窗口地址';
tinyMCELang['lang_insert_link_popup_name'] = '窗口名称';
tinyMCELang['lang_insert_link_popup_return'] = '插入 \'return false\'';
tinyMCELang['lang_insert_link_popup_scrollbars'] = '显示滚动条';
tinyMCELang['lang_insert_link_popup_statusbar'] = '显示状态栏';
tinyMCELang['lang_insert_link_popup_toolbar'] = '显示工具栏';
tinyMCELang['lang_insert_link_popup_menubar'] = '显示菜单栏';
tinyMCELang['lang_insert_link_popup_location'] = '显示地址栏';
tinyMCELang['lang_insert_link_popup_resizable'] = '可重定义窗口大小';
tinyMCELang['lang_insert_link_popup_size'] = '尺寸';
tinyMCELang['lang_insert_link_popup_position'] = '位置(X/Y)';
tinyMCELang['lang_insert_link_popup_missingtarget'] = '请插入目标名称或者选择另外的选项。';

View file

@ -4,6 +4,11 @@
<head>
<title>{$lang_insert_link_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript">
var url = tinyMCE.getParam("external_link_list_url");
if (url != null)
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.documentBasePath + "/" + url + '"></sc'+'ript>');
</script>
<script language="javascript" type="text/javascript">
<!--
function myRegexpReplace(in_str, reg_exp, replace_str, opts) {
@ -73,6 +78,24 @@
formObj.href.value = tinyMCE.getWindowArg('href');
formObj.linktitle.value = tinyMCE.getWindowArg('title');
setMyTarget(myTarget);
// Handle file browser
if (tinyMCE.getParam("file_browser_callback") != null) {
document.getElementById('href').style.width = '280px';
var html = '';
html += '<img id="browserBtn" src="../../themes/advanced/images/browse.gif"';
html += ' onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"';
html += ' onmouseout="tinyMCE.restoreClass(this);"';
html += ' onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"';
html += ' onclick="javascript:tinyMCE.openFileBrowser(\'href\',document.forms[0].href.value,\'file\');"';
html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" />';
document.getElementById('browser').innerHTML = html;
}
window.focus();
}
@ -242,7 +265,6 @@
function cancelAction() {
top.close();
}
//-->
</script>
<style type="text/css">
@ -265,8 +287,31 @@
</tr>
<tr>
<td align="right">{$lang_insert_link_url}:</td>
<td><input name="href" type="text" id="href" value="" style="width: 300px;" /></td>
<td><table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input name="href" type="text" id="href" value="" style="width: 300px;" /></td>
<td id="browser"></td>
</tr>
</table></td>
</tr>
<!-- Link list -->
<script language="javascript">
if (typeof(tinyMCELinkList) != "undefined" && tinyMCELinkList.length > 0) {
var html = "";
html += '<tr><td align="right">{$lang_link_list}:</td>';
html += '<td><select name="link_list" style="width: 300px" onchange="this.form.href.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
for (var i=0; i<tinyMCELinkList.length; i++)
html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
html += '</select></td></tr>';
document.write(html);
}
</script>
<!-- /Link list -->
<tr>
<td align="right">{$lang_theme_insert_link_titlefield}:</td>
<td><input name="linktitle" type="text" id="linktitle" value="" style="width: 300px;" /></td>

View file

@ -1,36 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('emotions', 'uk,se');
/**
* Returns the HTML contents of the emotions control.
*/
function TinyMCE_emotions_getControlHTML(control_name) {
switch (control_name) {
case "emotions":
return '<img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');">';
}
return "";
}
/**
* Executes the mceEmotion command.
*/
function TinyMCE_emotions_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceEmotion":
var template = new Array();
template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
template['width'] = 150;
template['height'] = 180;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
}
// Pass to next handler in chain
return false;
}
tinyMCE.importPluginLanguagePack('emotions','en,sv,zh_cn,cs');function TinyMCE_emotions_getControlHTML(control_name){switch(control_name){case "emotions":return '<img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');">';}return "";}function TinyMCE_emotions_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceEmotion":var template=new Array();template['file']='../../plugins/emotions/emotions.htm';template['width']=150;template['height']=180;tinyMCE.openWindow(template,{editor_id:editor_id});return true;}return false;}

View file

@ -0,0 +1,36 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('emotions', 'en,sv,zh_cn,cs');
/**
* Returns the HTML contents of the emotions control.
*/
function TinyMCE_emotions_getControlHTML(control_name) {
switch (control_name) {
case "emotions":
return '<img id="{$editor_id}_emotions" src="{$pluginurl}/images/emotions.gif" title="{$lang_emotions_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceEmotion\');">';
}
return "";
}
/**
* Executes the mceEmotion command.
*/
function TinyMCE_emotions_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceEmotion":
var template = new Array();
template['file'] = '../../plugins/emotions/emotions.htm'; // Relative to theme
template['width'] = 150;
template['height'] = 180;
tinyMCE.openWindow(template, {editor_id : editor_id});
return true;
}
// Pass to next handler in chain
return false;
}

View file

@ -0,0 +1,4 @@
// UK lang variables
tinyMCELang['lang_insert_emotions_title'] = 'Vložit emotikon';
tinyMCELang['lang_emotions_desc'] = 'Emotikony';

View file

@ -0,0 +1,5 @@
// UK lang variables
tinyMCELang['lang_insert_emotions_title'] = 'Insert emotion';
tinyMCELang['lang_emotions_desc'] = 'Emotions';

View file

@ -0,0 +1,5 @@
// CAN_FR lang variables
tinyMCELang['lang_insert_emotions_title'] = 'Ins&egrave;rer un &eacute;moticon';
tinyMCELang['lang_emotions_desc'] = '&Eacute;moticons';

View file

@ -0,0 +1,4 @@
// SE lang variables
tinyMCELang['lang_insert_emotions_title'] = 'Klistain kännsla';
tinyMCELang['lang_emotions_desc'] = 'Kännslor';

View file

@ -0,0 +1,5 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insert_emotions_title'] = '²åÈë±íÇé';
tinyMCELang['lang_emotions_desc'] = '񡀂';

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,684 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('flash', 'en,de,sv,zh_cn,cs');
function TinyMCE_flash_getControlHTML(control_name) {
switch (control_name) {
case "flash":
return '<img id="{$editor_id}_flash" src="{$pluginurl}/images/flash.gif" title="{$lang_insert_flash}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceFlash\');" />';
}
return "";
}
/**
* Executes the mceFlash command.
*/
function TinyMCE_flash_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceFlash":
var template = new Array();
template['file'] = '../../plugins/flash/flash.htm'; // Relative to theme
template['width'] = 400;
template['height'] = 180;
var name = "", swffile = "", swfwidth = "", swfheight = "", mceDo = "insert";
if (tinyMCE.selectedElement != null && tinyMCE.selectedElement.nodeName.toLowerCase() == "img") {
tinyMCE.flashElement = tinyMCE.selectedElement;
if (tinyMCE.flashElement) {
name = tinyMCE.flashElement.getAttribute('name') ? tinyMCE.flashElement.getAttribute('name') : "";
if (name!='mce_plugin_flash')
return;
swfwidth = tinyMCE.flashElement.getAttribute('width') ? tinyMCE.flashElement.getAttribute('width') : "";
swfheight = tinyMCE.flashElement.getAttribute('height') ? tinyMCE.flashElement.getAttribute('height') : "";
swffile = tinyMCE.flashElement.getAttribute('alt') ? tinyMCE.flashElement.getAttribute('alt') : "";
mceDo = "update";
}
}
tinyMCE.openWindow(template, {editor_id : editor_id, swffile : swffile, swfwidth : swfwidth, swfheight : swfheight, mceDo : mceDo});
return true;
}
// Pass to next handler in chain
return false;
}
/**
* Called when content cleanup is performed.
*/
function TinyMCE_flash_cleanup(type, content) {
// Handle custom cleanup
switch (type) {
// Called when editor is filled with content
case "insert_to_editor":
return TinyMCE_flash_mkCodeCleanup('insertToEditor', content);
// Called when editor is pass out content
case "get_from_editor":
return TinyMCE_flash_mkCodeCleanup('getFromEditor', content);
}
// Pass through to next handler in chain
return content;
}
function TinyMCE_flash_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
function getAttrib(elm, name) {
return elm.getAttribute(name) ? elm.getAttribute(name) : "";
}
tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonNormal');
do {
if (node.nodeName.toLowerCase() == "img" && getAttrib(node, 'name').indexOf('mce_plugin_flash') == 0)
tinyMCE.switchClassSticky(editor_id + '_flash', 'mceButtonSelected');
} while ((node = node.parentNode));
return true;
}
/**
* function to convert flash object tags to img
* or img tags to flash object tags
*/
function TinyMCE_flash_mkCodeCleanup(action, content) {
switch(action) {
case 'insertToEditor':
content = replace(content);
break;
case 'getFromEditor':
content = restore(content);
break;
}
return content;
}
/**
* object to manage a html tag. Maintains two lists of
* of attribute names and values and can parse a tag
* through the populate method.
**/
function TagObject() {
this.tagName = "";
this.attributeNames = new Array();
this.attributeValues = new Array();
this.spaceRemoveRegex = new RegExp('[ ]*','g');
this.newLineRemoveRegex = new RegExp('[\n]*','g');
};
/**
* set the name of the tag
*/
TagObject.prototype.setTagName = function(name) {
this.tagName = name;
};
/**
* get the name of the tag
*/
TagObject.prototype.getTagName = function() {
return this.tagName;
};
/**
* add a attribute name/value pair to the lists.
* does not check for duplicate attribute names
*/
TagObject.prototype.addAttribute = function(name,value) {
this.attributeNames[this.attributeNames.length] = name;
this.attributeValues[this.attributeValues.length] = value;
};
/**
* returns array of attribute names
*/
TagObject.prototype.getAttributeNames = function() {
return this.attributeNames;
};
/**
* returns array of attribute values
*/
TagObject.prototype.getAttributeValues = function() {
return this.attributeValues;
};
/**
* parses a html tag i.e. <tag attribute1=value1 attribute2=value2 ..>
* and sets the tag name and attribute name and value lists. All attribute
* names are converted to lowercase.
*/
TagObject.prototype.populate = function(tag) {
//look for starting angle bracket
var stIndex = 0;
while (tag.charAt(stIndex) != '<')
stIndex++;
stIndex++;
this.tagName = tag.substring(stIndex,tag.indexOf(" "));
stIndex = tag.indexOf(" ");
var endIndex;
while(true) {
// hunt for first equals
endIndex = tag.indexOf("=",stIndex);
if ( endIndex == -1 )
break;
var attrName = tag.substring(stIndex,endIndex);
attrName = attrName.replace(this.spaceRemoveRegex,"");
attrName = attrName.replace(this.newLineRemoveRegex,"");
attrName = attrName.toLowerCase();
stIndex = endIndex+1;
// hunt for first space
endIndex = tag.indexOf(" ",stIndex);
if (endIndex == -1) {
// look for terminating angle bracket
endIndex = tag.indexOf(">",stIndex);
if ( endIndex == -1 )
endIndex = tag.length;
}
var attrValue = tag.substring(stIndex,endIndex);
attrValue = attrValue.replace("/>","");
attrValue = attrValue.replace(">","");
this.addAttribute(attrName,attrValue);
stIndex = endIndex;
}
};
/**
* returns the value for a given attribute name. returns null
* if the attribute name does not exist
*/
TagObject.prototype.getAttributeValue = function(attribName) {
for (var i = 0; i<this.attributeNames.length; i++) {
if (this.attributeNames[i] == attribName)
return this.attributeValues[i];
}
return null;
};
/**
* sets a value for the given attribute name. If the attribute value
* exists, it is replaced with the new value, otherwise a attribute
* name/value pair is created.
*/
TagObject.prototype.setAttributeValue = function(attribName, attribValue) {
for (var i = 0; i<this.attributeNames.length; i++) {
if (this.attributeNames[i] == attribName) {
this.attributeValues[i] = attribValue;
return;
}
}
this.addAttribute(attribName,attribValue);
};
/**
* convert img to flash object tags for the supplied html content
* and returns the new content.
*/
function restore(content) {
//ensure img tags are consistent by removing spaces and
//different cases
content = content.replace(new RegExp('<[ ]*img','gi'),'<img');
var newContent = "";
var startString;
var stImgIndex;
var endImgIndex;
var imgString;
var stIndex = 0;
var tagObjs;
while( (stImgIndex = content.indexOf('<img',stIndex)) != -1 )
{
startString = content.substring(stIndex,stImgIndex);
newContent = newContent.concat(startString);
endImgIndex = content.indexOf('/>',stImgIndex);
if ( endImgIndex == -1 ) //should be well formed
break;
stIndex = endImgIndex+"/>".length;
imgString = content.substring(stImgIndex,stIndex);
var tagObj = new TagObject();
tagObj.populate(imgString);
if ( tagObj.getAttributeValue("name") == '"mce_plugin_flash"')
{
var width = tagObj.getAttributeValue("width");
var height = tagObj.getAttributeValue("height");
var src = tagObj.getAttributeValue("alt");
//create object replacement tags
var objTags = decodeAttributes(tagObj);
var obj = getTagByName( objTags, "object");
obj.setAttributeValue( "width", width );
obj.setAttributeValue( "height", height );
var embed = getTagByName( objTags, "embed");
embed.setAttributeValue( "width", width );
embed.setAttributeValue( "height", height );
embed.setAttributeValue( "src", src );
newContent = newContent.concat(
objectTagsToHTML(objTags));
}
else
{
newContent = newContent.concat(imgString);
}
}
newContent = newContent.concat(content.substring(stIndex,content.length));
return newContent;
}
/**
* convert flash object to img tags for the given html content and
* returns the converted html.
*/
function replace(content)
{
//ensure object tags are consistent by removing spaces and
//different cases
content = content.replace(new RegExp('<[ ]*object','gi'),'<object');
content = content.replace(new RegExp('<[ ]*/object[ ]*>','gi'),'</object>');
var newContent = "";
var startString;
var stObjIndex;
var endObjIndex;
var objString;
var stIndex = 0;
var tagObjs;
while( (stObjIndex = content.indexOf('<object',stIndex)) != -1 )
{
startString = content.substring(stIndex,stObjIndex);
newContent = newContent.concat(startString);
endObjIndex = content.indexOf('</object>',stIndex);
if ( endObjIndex == -1 ) //should be well formed
break;
stIndex = endObjIndex+"</object>".length;
objString = content.substring(stObjIndex,stIndex);
tagObjs = getObjectTags(objString);
if ( tagObjs.length > 0 )
{
var objTag = getTagByName( tagObjs, "object");
var height = objTag.getAttributeValue("height");
var width = objTag.getAttributeValue("width");
var embedTag = getTagByName(tagObjs,"embed");
var src = embedTag.getAttributeValue("src");
//encode object tags into attribute values
var imgAttr = encodeObjectTags(tagObjs);
var imgTag = '<img width='+width+' height='+height+
' alt='+src+' title='+src+' '+imgAttr+
' name="mce_plugin_flash" class="mce_plugin_flash" '+
'src="' + (tinyMCE.getParam("theme_href") +
'/images/spacer.gif" />');
newContent = newContent.concat(imgTag);
}
else
{
newContent = newContent.concat(objString);
}
}
newContent = newContent.concat(content.substring(stIndex,content.length));
return newContent;
}
/**
* returns array of TagObject corresponding to the object, param and embed
* tags (in that order) within the html of objStr. Returns a empty array
* if the object tag does not correspond to a flash object.
*/
function getObjectTags(objStr)
{
var tagObjs = new Array();
var tagObject;
var stIndex = 0;
var endIndex = 0;
stIndex = objStr.indexOf("<object");
if ( stIndex == -1 )
return tagObjs;
endIndex = objStr.indexOf(">");
tagObject = new TagObject();
tagObject.populate(objStr.substring(stIndex,endIndex+1));
//make sure this is a flash object
if ( tagObject.getAttributeValue("classid")
!= "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000")
return tagObjs;
tagObjs[tagObjs.length] = tagObject;
//ensure param and embed tags are lower case and have no leading spaces
objStr = objStr.replace(new RegExp('<[ ]*param','gi'),'<param');
objStr = objStr.replace(new RegExp('<[ ]*/param[ ]*>','gi'),'</param>');
objStr = objStr.replace(new RegExp('<[ ]*embed','gi'),'<embed');
objStr = objStr.replace(new RegExp('<[ ]*/embed[ ]*>','gi'),'</embed>');
//pull in param tags
stIndex = endIndex;
while( (endIndex = objStr.indexOf("<param",stIndex)) != -1 )
{
stIndex = endIndex;
endIndex = objStr.indexOf(">",stIndex);
tagObject = new TagObject();
tagObject.populate(objStr.substring(stIndex,endIndex+1));
tagObjs[tagObjs.length] = tagObject;
stIndex = endIndex;
}
//pull in embed tags
endIndex = objStr.indexOf("<embed",stIndex);
if ( endIndex != -1 )
{
stIndex = endIndex;
endIndex = objStr.indexOf(">",stIndex);
tagObject = new TagObject();
tagObject.populate(objStr.substring(stIndex,endIndex+1));
tagObjs[tagObjs.length] = tagObject;
stIndex = endIndex;
}
return tagObjs;
}
/**
* converts array TagObject to a html string representation of the tags
* and returns the string. This function assumes the array contains an
* object tag followed by some number of param tags and a ending embed tag.
*/
function objectTagsToHTML( objTags )
{
var htmlStr = "";
for( var i = 0; i < objTags.length; i++ )
{
var tag = objTags[i];
var tagAttrs = tag.getAttributeNames();
var tagValues = tag.getAttributeValues();
htmlStr = htmlStr.concat('<',tag.getTagName(),' ');
for( var j = 0; j < tagAttrs.length; j++ )
{
htmlStr = htmlStr.concat(tagAttrs[j],'=',tagValues[j],
(j < tagAttrs.length-1) ? ' ' : '');
}
if (tag.getTagName() == "param")
htmlStr = htmlStr.concat(' />\n');
else
htmlStr = htmlStr.concat('>\n');
}
htmlStr = htmlStr.concat('</embed>\n');
htmlStr = htmlStr.concat('</object>\n');
return htmlStr;
}
/**
* converts the object tags into specially encoded tag attributes to
* hold the content of the original tags. This allows the original content
* of the tags to be stored withing these attributes and later restored to the
* original tag structure. The object tag is stored via the "obj" attribute,
* param tags into the "param" attribute and embed tag to the "embed"
* attribute. Each attribute/value of the tag is encoded into a question
* mark delimited field like "?attribute1=value1?attribute2=value2..". Since
* the attribute values may contain ?=" characters these are encoded into
* special html like escape sequences prior to encoding the name value pairs.
* Param tags are handled differently than object and embed tags since a
* param tag is structured like <param name='paramName' value='paramValue' ..>
* and there can be multiple param tags. These are encoded like
* ?paramName1=paramValue1?paramName2=paramValue2.
*/
function encodeObjectTags( objTags )
{
var equal = "&eqs;";
var quote = "&quot;";
var question = "&quest;";
var equalReplace = new RegExp('=','g');
var quoteReplace = new RegExp('"','g');
var questionReplace = new RegExp("[\?]",'g');
var objAttr = 'obj="';
var paramAttr = 'param="';
var embedAttr = 'embed="';
for( var i = 0; i < objTags.length; i++ )
{
var tagObj = objTags[i];
var attrNames = tagObj.getAttributeNames();
var attrValues = tagObj.getAttributeValues();
if ( tagObj.getTagName() == 'object' )
{
for( var j = 0; j < attrNames.length; j++ )
{
var v = attrValues[j];
v = v.replace(equalReplace,equal);
v = v.replace(quoteReplace,quote);
v = v.replace(questionReplace,question);
objAttr = objAttr.concat('?',
attrNames[j],'=',v);
}
}
else if ( tagObj.getTagName() == 'param' )
{
var n = tagObj.getAttributeValue("name");
var v = tagObj.getAttributeValue("value");
n = n.replace(quoteReplace,quote);
v = v.replace(equalReplace,equal);
v = v.replace(quoteReplace,quote);
v = v.replace(questionReplace,question);
paramAttr = paramAttr.concat('?',n,'=',v);
}
else if ( tagObj.getTagName() == 'embed' )
{
for( var j = 0; j < attrNames.length; j++ )
{
var v = attrValues[j];
v = v.replace(equalReplace,equal);
v = v.replace(quoteReplace,quote);
v = v.replace(questionReplace,question);
embedAttr = embedAttr.concat('?',
attrNames[j],'=',v);
}
}
}
objAttr = objAttr.concat('"');
paramAttr = paramAttr.concat('"');
embedAttr = embedAttr.concat('"');
var imageAttr = objAttr+" "+paramAttr+" "+embedAttr;
return imageAttr;
}
/**
* decodes the obj,param, and embed attributes into a array of TagObjects.
* If the special attributes don't exist, a array of default flash objects
* is created.
*/
function decodeAttributes( tagObj )
{
var objAttr = tagObj.getAttributeValue("obj");
if ( objAttr == null )
return creatDefaultFlashObjectTags();
var paramAttr = tagObj.getAttributeValue("param");
var embedAttr = tagObj.getAttributeValue("embed");
var pArray = new Array(objAttr,paramAttr,embedAttr);
var tagArray = new Array();
var equal = "&eqs;";
var quote = "&quot;";
var question = "&quest;";
var equalReplace = new RegExp(equal,'g');
var quoteReplace = new RegExp(quote,'g');
var questionReplace = new RegExp(question,'g');
for( var i = 0; i < pArray.length; i++ )
{
var tObj;
if ( i == 0 )
{
tObj = new TagObject();
tObj.setTagName("object");
}
else if ( i == 2 )
{
tObj = new TagObject();
tObj.setTagName("embed");
}
//remove first question mark and begin and end quotes
var attr = pArray[i].substring(2,pArray[i].length-1);
//break up name value pairs on question mark
var pairs = attr.split('?');
//for each name value pair break on equal sign
//decode
for( var j = 0; j < pairs.length; j++ )
{
var nvpair = pairs[j].split('=');
var name = nvpair[0];
name = name.replace(quoteReplace,'"');
var value = nvpair[1];
value = value.replace(equalReplace,'=');
value = value.replace(quoteReplace,'"');
value = value.replace(questionReplace,'?');
if ( i == 0 || i == 2 )
{
tObj.addAttribute(name,value);
}
else
{
tObj = new TagObject();
tObj.setTagName("param");
tObj.addAttribute('name',name);
tObj.addAttribute('value',value);
tagArray[tagArray.length] = tObj;
}
}
if ( i != 1 )
tagArray[tagArray.length] = tObj;
}
return tagArray;
}
/**
* returns a TagObject from the array whose tag name matches tag name.
*/
function getTagByName( tagObjs, tagName )
{
for( var i = 0; i < tagObjs.length; i++ )
{
var tObj = tagObjs[i];
if ( tObj.getTagName() == tagName )
return tObj;
}
return null;
}
/**
* returns a TagObject corresponding to a param tag whose parameter value
* of the name attribute matches paramName.
*/
function getParameterTagWithName( tagObjs, paramName )
{
paramName = paramName.toLowerCase();
for( var i = 0; i < tagObjs.length; i++ )
{
var tObj = tagObjs[i];
if ( tObj.getTagName() != 'param' )
continue;
var name = tObj.getAttributeValue('name');
name = name.toLowerCase();
if ( name != paramName )
continue;
return tObj;
}
return null;
}
/**
* build and return a array of TagObjects corresponding to a reasonable
* default set of object,param, and embed tags for a flash movie. Note
* that the height,width, and src attributes need to be set on the TagObjects
* before converting to the array into a real set of flash tags.
*/
function creatDefaultFlashObjectTags()
{
var tagObjs = new Array();
var objTag = new TagObject();
objTag.setTagName('object');
objTag.addAttribute('classid',
'"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"');
objTag.addAttribute('codebase',
'"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"');
tagObjs[tagObjs.length] = objTag;
var paramTag = new TagObject();
paramTag.setTagName('param');
paramTag.addAttribute( 'name','"quality"');
paramTag.addAttribute( 'value','"high"');
tagObjs[tagObjs.length] = paramTag;
paramTag = new TagObject();
paramTag.setTagName('param');
paramTag.addAttribute( 'name','"menu"');
paramTag.addAttribute( 'value','"false"');
tagObjs[tagObjs.length] = paramTag;
var embedTag = new TagObject();
embedTag.setTagName('embed');
embedTag.addAttribute( 'quality','"high"');
embedTag.addAttribute( 'type','"application/x-shockwave-flash"');
embedTag.addAttribute( 'pluginspace','"http://www.macromedia.com/go/getflashplayer"');
tagObjs[tagObjs.length] = embedTag;
return tagObjs;
}

View file

@ -1,123 +1,169 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_flash}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
function init() {
// modified 2004-11-10 by Michael Keck (me@michaelkeck.de)
// supporting onclick event to open pop windows
var formObj = document.forms[0];
var swffile = tinyMCE.getWindowArg('swffile');
var swfwidth = '' + tinyMCE.getWindowArg('swfwidth');
var swfheight = '' + tinyMCE.getWindowArg('swfheight');
if (swfwidth.indexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = swfwidth.substring(0,swfwidth.length-1);
} else {
formObj.width2.value = "px";
formObj.width.value = swfwidth;
}
if (swfheight.indexOf('%')!=-1) {
formObj.height2.value = "%";
formObj.height.value = swfheight.substring(0,swfheight.length-1);
} else {
formObj.height2.value = "px";
formObj.height.value = swfheight;
}
formObj.file.value = swffile;
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
window.focus();
}
function insertFlash() {
var formObj = document.forms[0];
if (window.opener) {
var html = '';
var file = formObj.file.value;
var width = formObj.width.value;
var height = formObj.height.value;
if (formObj.width2.value=='%') {
width = width + '%';
}
if (formObj.height2.value=='%') {
height = height + '%';
}
if (width == "")
width = 100;
if (height == "")
height = 100;
html += ''
+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
+ 'width="' + width + '" height="' + height + '" '
+ 'border="0" alt="' + file + '" title="' + file + '" class="mce_plugin_flash" name="mce_plugin_flash" />';
tinyMCE.execCommand("mceInsertContent",true,html);
top.close();
}
}
function cancelAction() {
top.close();
}
//-->
</script>
<style type="text/css">
<!--
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
-->
</style>
</head>
<body onload="init();">
<form onsubmit="insertFlash();return false;">
<table border="0" cellpadding="0" cellspacing="4" width="100%">
<tr>
<td class="title">{$lang_insert_flash}</td>
</tr>
<tr>
<td><hr size="1" noshade="noshade" /></td>
</tr>
<tr>
<td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
<tr>
<td align="right">{$lang_insert_flash_file}:</td>
<td nowrap="nowrap">
<input name="file" type="text" id="file" value="" onfocus="this.select();" style="width: 250px; vertical-align: middle;" />
</td>
</tr>
<tr>
<td align="right">{$lang_insert_flash_size}:</td>
<td nowrap="nowrap">
<input name="width" type="text" id="width" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
<select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>&nbsp;x&nbsp;<input name="height" type="text" id="height" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
<select name="height2" id="height2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
</table></td>
<tr>
<td><hr size="1" noshade="noshade" /></td>
</tr>
<tr>
<td nowrap="nowrap" align="left">
<input style="float:left" type="button" name="insert" value="{$lang_insert}" onclick="insertFlash();" id="insert" /><input style="float:right" type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" />
</td>
</tr>
</table>
</form>
</body>
</html>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_insert_flash}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript">
var url = tinyMCE.getParam("flash_external_list_url");
if (url != null)
document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + tinyMCE.documentBasePath + "/" + url + '"></sc'+'ript>');
</script>
<script language="javascript" type="text/javascript">
<!--
function init() {
// modified 2004-11-10 by Michael Keck (me@michaelkeck.de)
// supporting onclick event to open pop windows
var formObj = document.forms[0];
var swffile = tinyMCE.getWindowArg('swffile');
var swfwidth = '' + tinyMCE.getWindowArg('swfwidth');
var swfheight = '' + tinyMCE.getWindowArg('swfheight');
if (swfwidth.indexOf('%')!=-1) {
formObj.width2.value = "%";
formObj.width.value = swfwidth.substring(0,swfwidth.length-1);
} else {
formObj.width2.value = "px";
formObj.width.value = swfwidth;
}
if (swfheight.indexOf('%')!=-1) {
formObj.height2.value = "%";
formObj.height.value = swfheight.substring(0,swfheight.length-1);
} else {
formObj.height2.value = "px";
formObj.height.value = swfheight;
}
formObj.file.value = swffile;
formObj.insert.value = tinyMCE.getLang('lang_' + tinyMCE.getWindowArg('mceDo'));
// Handle file browser
if (tinyMCE.getParam("file_browser_callback") != null) {
document.getElementById('file').style.width = '230px';
var html = '';
html += '<img id="browserBtn" src="../../themes/advanced/images/browse.gif"';
html += ' onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');"';
html += ' onmouseout="tinyMCE.restoreClass(this);"';
html += ' onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');"';
html += ' onclick="javascript:tinyMCE.openFileBrowser(\'file\',document.forms[0].file.value,\'flash\');"';
html += ' width="20" height="18" border="0" title="' + tinyMCE.getLang('lang_browse') + '"';
html += ' class="mceButtonNormal" alt="' + tinyMCE.getLang('lang_browse') + '" />';
document.getElementById('browser').innerHTML = html;
}
window.focus();
}
function insertFlash() {
var formObj = document.forms[0];
if (window.opener) {
var html = '';
var file = formObj.file.value;
var width = formObj.width.value;
var height = formObj.height.value;
if (formObj.width2.value=='%') {
width = width + '%';
}
if (formObj.height2.value=='%') {
height = height + '%';
}
if (width == "")
width = 100;
if (height == "")
height = 100;
html += ''
+ '<img src="' + (tinyMCE.getParam("theme_href") + "/images/spacer.gif") + '" '
+ 'width="' + width + '" height="' + height + '" '
+ 'border="0" alt="' + file + '" title="' + file + '" class="mce_plugin_flash" name="mce_plugin_flash" />';
tinyMCE.execCommand("mceInsertContent",true,html);
top.close();
}
}
function cancelAction() {
top.close();
}
//-->
</script>
<style type="text/css">
<!--
input.radio {
border: 1px none #000000;
background-color: transparent;
vertical-align: middle;
}
-->
</style>
</head>
<body onload="init();">
<form onsubmit="insertFlash();return false;">
<table border="0" cellpadding="0" cellspacing="4" width="100%">
<tr>
<td class="title">{$lang_insert_flash}</td>
</tr>
<tr>
<td><hr size="1" noshade="noshade" /></td>
</tr>
<tr>
<td align="center" valign="middle"><table border="0" cellpadding="4" cellspacing="0">
<tr>
<td align="right">{$lang_insert_flash_file}:</td>
<td nowrap="nowrap">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td><input name="file" type="text" id="file" value="" onfocus="this.select();" style="width: 250px; vertical-align: middle;" /></td>
<td id="browser"></td>
</tr>
</table>
</td>
</tr>
<!-- Link list -->
<script language="javascript">
if (typeof(tinyMCEFlashList) != "undefined" && tinyMCEFlashList.length > 0) {
var html = "";
html += '<tr><td align="right">{$lang_insert_flash_list}:</td>';
html += '<td><select name="link_list" style="width: 250px" onchange="this.form.file.value=this.options[this.selectedIndex].value;">';
html += '<option value="">---</option>';
for (var i=0; i<tinyMCEFlashList.length; i++)
html += '<option value="' + tinyMCEFlashList[i][1] + '">' + tinyMCEFlashList[i][0] + '</option>';
html += '</select></td></tr>';
document.write(html);
}
</script>
<!-- /Link list -->
<tr>
<td align="right">{$lang_insert_flash_size}:</td>
<td nowrap="nowrap">
<input name="width" type="text" id="width" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
<select name="width2" id="width2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>&nbsp;x&nbsp;<input name="height" type="text" id="height" value="" onfocus="this.select();" style="width: 50px; vertical-align: middle;" />
<select name="height2" id="height2" style="width: 50px; vertical-align: middle;">
<option value="">px</option>
<option value="%">%</option>
</select>
</td>
</tr>
</table></td>
<tr>
<td><hr size="1" noshade="noshade" /></td>
</tr>
<tr>
<td nowrap="nowrap" align="left">
<input style="float:left" type="button" name="insert" value="{$lang_insert}" onclick="insertFlash();" id="insert" /><input style="float:right" type="button" name="cancel" value="{$lang_cancel}" onclick="cancelAction();" id="cancel" />
</td>
</tr>
</table>
</form>
</body>
</html>

View file

@ -0,0 +1,5 @@
// UK lang variables
tinyMCELang['lang_insert_flash'] = 'Vložit/editovat Flash Movie';
tinyMCELang['lang_insert_flash_file'] = 'Flash soubor (.swf)';
tinyMCELang['lang_insert_flash_size'] = 'Velikost';

View file

@ -1,4 +1,5 @@
// DE lang variables
tinyMCELang['lang_insert_flash'] = 'Flash Movie einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_flash_file'] = 'Flash-Datei';
tinyMCELang['lang_insert_flash_size'] = 'Gr&ouml;&szlig;e';
// DE lang variables
tinyMCELang['lang_insert_flash'] = 'Flash Movie einf&uuml;gen / bearbeiten';
tinyMCELang['lang_insert_flash_file'] = 'Flash-Datei';
tinyMCELang['lang_insert_flash_size'] = 'Gr&ouml;&szlig;e';
tinyMCELang['lang_insert_flash_list'] = 'Flash files';

View file

@ -0,0 +1,6 @@
// UK lang variables
tinyMCELang['lang_insert_flash'] = 'Insert / edit Flash Movie';
tinyMCELang['lang_insert_flash_file'] = 'Flash-File (.swf)';
tinyMCELang['lang_insert_flash_size'] = 'Size';
tinyMCELang['lang_insert_flash_list'] = 'Flash files';

View file

@ -0,0 +1,6 @@
// SE lang variables
tinyMCELang['lang_insert_flash'] = 'Skapa / uppdatera flash film';
tinyMCELang['lang_insert_flash_file'] = 'Flash film (.swf)';
tinyMCELang['lang_insert_flash_size'] = 'Storlek';
tinyMCELang['lang_insert_flash_list'] = 'Flash filer';

View file

@ -0,0 +1,6 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insert_flash'] = '插入/编辑 Flash电影';
tinyMCELang['lang_insert_flash_file'] = 'Flash文件(.swf)';
tinyMCELang['lang_insert_flash_size'] = '尺寸';
tinyMCELang['lang_insert_flash_list'] = 'Flash files';

View file

@ -1,47 +1,48 @@
FLASH plugin for TinyMCE
-----------------------------
About:
This is the INSERT FLASH Dialog contributed by Michael Keck.
This one supports popup windows and targets.
Note:
The placeholder for Flash is called 'mce_plugin_flash' and needs a class 'mce_plugin_flash' in the 'css_-style'.
Do not name another image 'name="mce_plugin_flash"!
Installation instructions:
* Copy the flash directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "flash".
* Add this "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]" to extended_valid_elements option.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "flash",
extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]"
});
----------------------------------------------------------------
ADDITIONAL NOTE:
The flash plugin has been heavily modified (the original is editor_plugin_original.js) since the original did not play nicely with html content that
already contained existing flash tags and in fact stripped out the object
tags for existing flash html. The rewrite corrects this as well attempts
to preserve the existing flash tags where possible. The tinyMCE.init call
should be be something like:
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "flash",
extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|obj|param|embed]"
});
Note the extra obj,param,embed attributes for the img tag. These attributes
are used to serialize data from existing flash tags so that they can be
properly restored. Editing a flash tag with the plugin will cause this
information to be lost (sorry !) but still produces a working flash nevertheless.
FLASH plugin for TinyMCE
-----------------------------
About:
This is the INSERT FLASH Dialog contributed by Michael Keck.
This one supports popup windows and targets.
Note:
The placeholder for Flash is called 'mce_plugin_flash' and needs a class 'mce_plugin_flash' in the 'css_-style'.
Do not name another image 'name="mce_plugin_flash"!
Installation instructions:
* Copy the flash directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "flash".
* Add this "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]" to extended_valid_elements option.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "flash",
extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name]"
flash_external_list_url : "example_flash_list.js" // Optional URL to a list of Flash movies
});
----------------------------------------------------------------
ADDITIONAL NOTE:
The flash plugin has been heavily modified (the original is editor_plugin_original.js) since the original did not play nicely with html content that
already contained existing flash tags and in fact stripped out the object
tags for existing flash html. The rewrite corrects this as well attempts
to preserve the existing flash tags where possible. The tinyMCE.init call
should be be something like:
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "flash",
extended_valid_elements : "img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|obj|param|embed]"
});
Note the extra obj,param,embed attributes for the img tag. These attributes
are used to serialize data from existing flash tags so that they can be
properly restored. Editing a flash tag with the plugin will cause this
information to be lost (sorry !) but still produces a working flash nevertheless.

View file

@ -1,37 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('iespell', 'uk,se');
/**
* Returns the HTML contents of the iespell control.
*/
function TinyMCE_iespell_getControlHTML(control_name) {
// Is it the iespell control and is the brower MSIE.
if (control_name == "iespell" && tinyMCE.isMSIE)
return '<img id="{$editor_id}_iespell" src="{$pluginurl}/images/iespell.gif" title="{$lang_iespell_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');">';
return "";
}
/**
* Executes the mceIESpell command.
*/
function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface, value) {
// Handle ieSpellCommand
if (command == "mceIESpell") {
try {
var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
} catch (e) {
if (e.number == -2146827859) {
if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
} else
alert("Error Loading ieSpell: Exception " + e.number);
}
return true;
}
// Pass to next handler in chain
return false;
}
tinyMCE.importPluginLanguagePack('iespell','cs,el,en,fr_ca,it,ko,sv,zh_cn');function TinyMCE_iespell_getControlHTML(control_name){if(control_name=="iespell"&&tinyMCE.isMSIE)return '<img id="{$editor_id}_iespell" src="{$pluginurl}/images/iespell.gif" title="{$lang_iespell_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');">';return "";}function TinyMCE_iespell_execCommand(editor_id,element,command,user_interface,value){if(command=="mceIESpell"){try{var ieSpell=new ActiveXObject("ieSpell.ieSpellExtension");ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);}catch(e){if(e.number==-2146827859){if(confirm(tinyMCE.getLang("lang_iespell_download","",true)))window.open('http://www.iespell.com/download.php','ieSpellDownload','');}else alert("Error Loading ieSpell: Exception "+e.number);}return true;}return false;}

View file

@ -0,0 +1,37 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('iespell', 'cs,el,en,fr_ca,it,ko,sv,zh_cn');
/**
* Returns the HTML contents of the iespell control.
*/
function TinyMCE_iespell_getControlHTML(control_name) {
// Is it the iespell control and is the brower MSIE.
if (control_name == "iespell" && tinyMCE.isMSIE)
return '<img id="{$editor_id}_iespell" src="{$pluginurl}/images/iespell.gif" title="{$lang_iespell_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceIESpell\');">';
return "";
}
/**
* Executes the mceIESpell command.
*/
function TinyMCE_iespell_execCommand(editor_id, element, command, user_interface, value) {
// Handle ieSpellCommand
if (command == "mceIESpell") {
try {
var ieSpell = new ActiveXObject("ieSpell.ieSpellExtension");
ieSpell.CheckDocumentNode(tinyMCE.getInstanceById(editor_id).contentDocument.documentElement);
} catch (e) {
if (e.number == -2146827859) {
if (confirm(tinyMCE.getLang("lang_iespell_download", "", true)))
window.open('http://www.iespell.com/download.php', 'ieSpellDownload', '');
} else
alert("Error Loading ieSpell: Exception " + e.number);
}
return true;
}
// Pass to next handler in chain
return false;
}

View file

@ -0,0 +1,4 @@
// UK lang variables
tinyMCELang['lang_iespell_desc'] = 'Spustit kontrolu pravopisu';
tinyMCELang['lang_iespell_download'] = "ieSpell nedetekován. Kliknìte na OK a otevøete stahovací stránku."

View file

@ -0,0 +1,4 @@
// UK lang variables
tinyMCELang['lang_iespell_desc'] = 'Run spell checking';
tinyMCELang['lang_iespell_download'] = "ieSpell not detected. Click OK to go to download page."

View file

@ -0,0 +1,4 @@
// CAN_FR lang variables
tinyMCELang['lang_iespell_desc'] = 'Executer le v&eacute;rificateur d\'orthographe';
tinyMCELang['lang_iespell_download'] = "ieSpell n\'a pas &eacute;t&eacute; trouv&eacute;. Cliquez sur OK pour aller au site de t&eacute;l&eacute;chargement."

View file

@ -0,0 +1,4 @@
// SE lang variables
tinyMCELang['lang_iespell_desc'] = 'Kör rättstavningskontroll';
tinyMCELang['lang_iespell_download'] = "ieSpell verkar inte vara installerad. Klicka OK f&ouml;r att ladda hem."

View file

@ -0,0 +1,4 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_iespell_desc'] = '运行拼写检查';
tinyMCELang['lang_iespell_download'] = "未检测到ieSpell拼写检查点击 OK 前往下载页面。"

View file

@ -1,66 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('insertdatetime', 'uk,se');
/**
* Returns the HTML contents of the insertdate, inserttime controls.
*/
function TinyMCE_insertdatetime_getControlHTML(control_name) {
switch (control_name) {
case "insertdate":
return '<img id="{$editor_id}_insertdate" src="{$pluginurl}/images/insertdate.gif" title="{$lang_insertdate_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertDate\');">';
case "inserttime":
return '<img id="{$editor_id}_inserttime" src="{$pluginurl}/images/inserttime.gif" title="{$lang_inserttime_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');">';
}
return "";
}
/**
* Executes the mceInsertDate command.
*/
function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_interface, value) {
/* Adds zeros infront of value */
function addZeros(value, len) {
value = "" + value;
if (value.length < len) {
for (var i=0; i<(len-value.length); i++)
value = "0" + value;
}
return value;
}
/* Returns the date object in the specified format */
function getDateTime(date, format) {
format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y");
format = tinyMCE.regexpReplace(format, "%r", "%I:%M:%S %p");
format = tinyMCE.regexpReplace(format, "%Y", "" + date.getFullYear());
format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear());
format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1, 2));
format = tinyMCE.regexpReplace(format, "%d", addZeros(date.getDate(), 2));
format = tinyMCE.regexpReplace(format, "%H", "" + addZeros(date.getHours(), 2));
format = tinyMCE.regexpReplace(format, "%M", "" + addZeros(date.getMinutes(), 2));
format = tinyMCE.regexpReplace(format, "%S", "" + addZeros(date.getSeconds(), 2));
format = tinyMCE.regexpReplace(format, "%I", "" + (date.getHours() < 12 ? (date.getHours()+1) : 24-date.getHours()));
format = tinyMCE.regexpReplace(format, "%p", "" + (date.getHours() < 12 ? "AM" : "PM"));
format = tinyMCE.regexpReplace(format, "%%", "%");
return format;
}
// Handle commands
switch (command) {
case "mceInsertDate":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", "%Y-%m-%d")));
return true;
case "mceInsertTime":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", "%H:%M:%S")));
return true;
}
// Pass to next handler in chain
return false;
}
tinyMCE.importPluginLanguagePack('insertdatetime','cs,el,en,fr_ca,it,ko,sv,zh_cn');function TinyMCE_insertdatetime_getControlHTML(control_name){switch(control_name){case "insertdate":return '<img id="{$editor_id}_insertdate" src="{$pluginurl}/images/insertdate.gif" title="{$lang_insertdate_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertDate\');">';case "inserttime":return '<img id="{$editor_id}_inserttime" src="{$pluginurl}/images/inserttime.gif" title="{$lang_inserttime_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');">';}return "";}function TinyMCE_insertdatetime_execCommand(editor_id,element,command,user_interface,value){function addZeros(value,len){value=""+value;if(value.length<len){for(var i=0;i<(len-value.length);i++)value="0"+value;}return value;}function getDateTime(date,format){format=tinyMCE.regexpReplace(format,"%D","%m/%d/%y");format=tinyMCE.regexpReplace(format,"%r","%I:%M:%S %p");format=tinyMCE.regexpReplace(format,"%Y",""+date.getFullYear());format=tinyMCE.regexpReplace(format,"%y",""+date.getYear());format=tinyMCE.regexpReplace(format,"%m",addZeros(date.getMonth()+1,2));format=tinyMCE.regexpReplace(format,"%d",addZeros(date.getDate(),2));format=tinyMCE.regexpReplace(format,"%H",""+addZeros(date.getHours(),2));format=tinyMCE.regexpReplace(format,"%M",""+addZeros(date.getMinutes(),2));format=tinyMCE.regexpReplace(format,"%S",""+addZeros(date.getSeconds(),2));format=tinyMCE.regexpReplace(format,"%I",""+(date.getHours()<12?(date.getHours()+1):24-date.getHours()));format=tinyMCE.regexpReplace(format,"%p",""+(date.getHours()<12?"AM":"PM"));format=tinyMCE.regexpReplace(format,"%%","%");return format;}switch(command){case "mceInsertDate":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_dateFormat","%Y-%m-%d")));return true;case "mceInsertTime":tinyMCE.execInstanceCommand(editor_id,'mceInsertContent',false,getDateTime(new Date(),tinyMCE.getParam("plugin_insertdate_timeFormat","%H:%M:%S")));return true;}return false;}

View file

@ -0,0 +1,66 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('insertdatetime', 'cs,el,en,fr_ca,it,ko,sv,zh_cn');
/**
* Returns the HTML contents of the insertdate, inserttime controls.
*/
function TinyMCE_insertdatetime_getControlHTML(control_name) {
switch (control_name) {
case "insertdate":
return '<img id="{$editor_id}_insertdate" src="{$pluginurl}/images/insertdate.gif" title="{$lang_insertdate_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertDate\');">';
case "inserttime":
return '<img id="{$editor_id}_inserttime" src="{$pluginurl}/images/inserttime.gif" title="{$lang_inserttime_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceInsertTime\');">';
}
return "";
}
/**
* Executes the mceInsertDate command.
*/
function TinyMCE_insertdatetime_execCommand(editor_id, element, command, user_interface, value) {
/* Adds zeros infront of value */
function addZeros(value, len) {
value = "" + value;
if (value.length < len) {
for (var i=0; i<(len-value.length); i++)
value = "0" + value;
}
return value;
}
/* Returns the date object in the specified format */
function getDateTime(date, format) {
format = tinyMCE.regexpReplace(format, "%D", "%m/%d/%y");
format = tinyMCE.regexpReplace(format, "%r", "%I:%M:%S %p");
format = tinyMCE.regexpReplace(format, "%Y", "" + date.getFullYear());
format = tinyMCE.regexpReplace(format, "%y", "" + date.getYear());
format = tinyMCE.regexpReplace(format, "%m", addZeros(date.getMonth()+1, 2));
format = tinyMCE.regexpReplace(format, "%d", addZeros(date.getDate(), 2));
format = tinyMCE.regexpReplace(format, "%H", "" + addZeros(date.getHours(), 2));
format = tinyMCE.regexpReplace(format, "%M", "" + addZeros(date.getMinutes(), 2));
format = tinyMCE.regexpReplace(format, "%S", "" + addZeros(date.getSeconds(), 2));
format = tinyMCE.regexpReplace(format, "%I", "" + (date.getHours() < 12 ? (date.getHours()+1) : 24-date.getHours()));
format = tinyMCE.regexpReplace(format, "%p", "" + (date.getHours() < 12 ? "AM" : "PM"));
format = tinyMCE.regexpReplace(format, "%%", "%");
return format;
}
// Handle commands
switch (command) {
case "mceInsertDate":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_dateFormat", "%Y-%m-%d")));
return true;
case "mceInsertTime":
tinyMCE.execInstanceCommand(editor_id, 'mceInsertContent', false, getDateTime(new Date(), tinyMCE.getParam("plugin_insertdate_timeFormat", "%H:%M:%S")));
return true;
}
// Pass to next handler in chain
return false;
}

View file

@ -0,0 +1,4 @@
// UK lang variables
tinyMCELang['lang_insertdate_desc'] = 'Vložit datum';
tinyMCELang['lang_inserttime_desc'] = 'Vložit èas';

View file

@ -0,0 +1,4 @@
// UK lang variables
tinyMCELang['lang_insertdate_desc'] = 'Insert date';
tinyMCELang['lang_inserttime_desc'] = 'Insert time';

View file

@ -0,0 +1,4 @@
// CAN_FR lang variables
tinyMCELang['lang_insertdate_desc'] = 'Ins&egrave;rer la date';
tinyMCELang['lang_inserttime_desc'] = 'Ins&egrave;rer l\'heure';

View file

@ -0,0 +1,4 @@
// SE lang variables
tinyMCELang['lang_insertdate_desc'] = 'Klistra in datum';
tinyMCELang['lang_inserttime_desc'] = 'Klistra in tid';

View file

@ -0,0 +1,4 @@
// Simplified Chinese lang variables contributed by cube316 (cube316@etang.com)
tinyMCELang['lang_insertdate_desc'] = '插入当前日期';
tinyMCELang['lang_inserttime_desc'] = '插入当前时间';

View file

@ -1,61 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('preview', 'uk,se,de,pt');
/**
* Returns the HTML contents of the preview control.
*/
function TinyMCE_preview_getControlHTML(control_name) {
switch (control_name) {
case "preview":
return '<img id="{$editor_id}_preview" src="{$pluginurl}/images/preview.gif" title="{$lang_preview_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');" />';
}
return "";
}
/**
* Executes the mcePreview command.
*/
function TinyMCE_preview_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mcePreview":
var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
// Use a custom preview page
if (previewPage) {
var template = new Array();
template['file'] = previewPage;
template['width'] = previewWidth;
template['height'] = previewHeight;
tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
} else {
var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height=" + previewHeight);
var html = "";
html += '<!doctype html public "-//w3c//dtd html 4.0 transitional//en">';
html += '<html>';
html += '<head>';
html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
html += '<link href="' + tinyMCE.getParam("content_css") + '" rel="stylesheet" type="text/css">';
html += '</head>';
html += '<body>';
html += tinyMCE.getContent();
html += '</body>';
html += '</html>';
win.document.write(html);
win.document.close();
}
return true;
}
// Pass to next handler in chain
return false;
}
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('preview','cs,de,el,en,fr_ca,it,ko,pt,sv,zh_cn');function TinyMCE_preview_getControlHTML(control_name){switch(control_name){case "preview":return '<img id="{$editor_id}_preview" src="{$pluginurl}/images/preview.gif" title="{$lang_preview_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePreview\');" />';}return "";}function TinyMCE_preview_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePreview":var previewPage=tinyMCE.getParam("plugin_preview_pageurl",null);var previewWidth=tinyMCE.getParam("plugin_preview_width","550");var previewHeight=tinyMCE.getParam("plugin_preview_height","600");if(previewPage){var template=new Array();template['file']=previewPage;template['width']=previewWidth;template['height']=previewHeight;tinyMCE.openWindow(template,{editor_id:editor_id,resizable:"yes",scrollbars:"yes",content:tinyMCE.getContent(),content_css:tinyMCE.getParam("content_css")});}else{var win=window.open("","mcePreview","menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width="+previewWidth+",height="+previewHeight);var html="";html+='<!doctype html public "-//w3c//dtd html 4.0 transitional//en">';html+='<html>';html+='<head>';html+='<title>'+tinyMCE.getLang('lang_preview_desc')+'</title>';html+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';html+='<link href="'+tinyMCE.getParam("content_css")+'" rel="stylesheet" type="text/css">';html+='</head>';html+='<body>';html+=tinyMCE.getContent();html+='</body>';html+='</html>';win.document.write(html);win.document.close();}return true;}return false;}

View file

@ -1,3 +1,3 @@
// UK lang variables
tinyMCELang['lang_preview_desc'] = 'Vorschau';
// UK lang variables
tinyMCELang['lang_preview_desc'] = 'Vorschau';

View file

@ -1,26 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('print', 'uk,se');
function TinyMCE_print_getControlHTML(control_name) {
switch (control_name) {
case "print":
return '<img id="{$editor_id}_print" src="{$pluginurl}/images/print.gif" title="{$lang_print_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePrint\',true);" />';
}
return "";
}
/**
* Executes the search/replace commands.
*/
function TinyMCE_print_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mcePrint":
tinyMCE.getInstanceById(editor_id).contentWindow.print();
return true;
}
// Pass to next handler in chain
return false;
}
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('print','en,sv,zh_cn');function TinyMCE_print_getControlHTML(control_name){switch(control_name){case "print":return '<img id="{$editor_id}_print" src="{$pluginurl}/images/print.gif" title="{$lang_print_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mcePrint\',true);" />';}return "";}function TinyMCE_print_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mcePrint":tinyMCE.getInstanceById(editor_id).contentWindow.print();return true;}return false;}

View file

@ -1,17 +1,17 @@
Print plugin for TinyMCE
-----------------------------
About:
This plugin adds a print button to TinyMCE.
Installation instructions:
* Copy the print directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "print".
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "print",
theme_advanced_buttons1_add : "print",
});
Print plugin for TinyMCE
-----------------------------
About:
This plugin adds a print button to TinyMCE.
Installation instructions:
* Copy the print directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "print".
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "print",
theme_advanced_buttons1_add : "print",
});

View file

@ -1,43 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('save', 'uk');
/**
* Returns the HTML contents of the save control.
*/
function TinyMCE_save_getControlHTML(control_name) {
switch (control_name) {
case "save":
return '<img id="{$editor_id}_save" src="{$pluginurl}/images/save.gif" title="{$lang_save_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.switchClass(this,\'mceButtonNormal\');" onmousedown="tinyMCE.switchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSave\');" />';
}
return "";
}
/**
* Executes the save command.
*/
function TinyMCE_save_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceSave":
var formObj = tinyMCE.selectedInstance.formElement.form;
if (formObj) {
tinyMCE.triggerSave();
// Disable all UI form elements that TinyMCE created
for (var i=0; i<formObj.elements.length; i++) {
var elementId = formObj.elements[i].name ? formObj.elements[i].name : formObj.elements[i].id;
if (elementId.indexOf('mce_editor_') == 0)
formObj.elements[i].disabled = true;
}
tinyMCE.selectedInstance.formElement.form.submit();
} else
alert("Error: No form element found.");
return true;
}
// Pass to next handler in chain
return false;
}
tinyMCE.importPluginLanguagePack('save','en,zh_cn,cs');function TinyMCE_save_getControlHTML(control_name){switch(control_name){case "save":return '<img id="{$editor_id}_save" src="{$pluginurl}/images/save.gif" title="{$lang_save_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.switchClass(this,\'mceButtonNormal\');" onmousedown="tinyMCE.switchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSave\');" />';}return "";}function TinyMCE_save_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceSave":var formObj=tinyMCE.selectedInstance.formElement.form;if(formObj){tinyMCE.triggerSave();for(var i=0;i<formObj.elements.length;i++){var elementId=formObj.elements[i].name?formObj.elements[i].name:formObj.elements[i].id;if(elementId.indexOf('mce_editor_')==0)formObj.elements[i].disabled=true;}tinyMCE.selectedInstance.formElement.form.submit();}else alert("Error: No form element found.");return true;}return false;}

View file

@ -1,156 +1,2 @@
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('searchreplace', 'uk,se');
function TinyMCE_searchreplace_getControlHTML(control_name) {
switch (control_name) {
case "search":
return '<img id="{$editor_id}_search" src="{$pluginurl}/images/search.gif" title="{$lang_searchreplace_search_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);" />';
case "replace":
return '<img id="{$editor_id}_replace" src="{$pluginurl}/images/replace.gif" title="{$lang_searchreplace_replace_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);" />';
}
return "";
}
/**
* Executes the search/replace commands.
*/
function TinyMCE_searchreplace_execCommand(editor_id, element, command, user_interface, value) {
function defValue(key, default_value) {
value[key] = typeof(value[key]) == "undefined" ? default_value : value[key];
}
function replaceSel(str) {
// Get current selection
if (!tinyMCE.isMSIE) {
var sel = instance.contentWindow.getSelection();
var rng = sel.getRangeAt(0);
} else {
var rng = instance.contentWindow.document.selection.createRange();
}
// Replace current one
if (!tinyMCE.isMSIE) {
rng.deleteContents();
rng.insertNode(rng.createContextualFragment(str));
rng.collapse(false);
} else {
if (rng.item)
rng.item(0).outerHTML = str;
else
rng.pasteHTML(str);
}
}
var instance = tinyMCE.getInstanceById(editor_id);
if (!value)
value = new Array();
// Setup defualt values
defValue("editor_id", editor_id);
defValue("searchstring", "");
defValue("replacestring", null);
defValue("replacemode", "none");
defValue("casesensitive", false);
defValue("backwards", false);
defValue("wrap", false);
defValue("wholeword", false);
// Handle commands
switch (command) {
case "mceResetSearch":
tinyMCE.lastSearchRng = null;
return true;
case "mceSearch":
if (user_interface) {
// Open search dialog
var template = new Array();
if (value['replacestring'] != null) {
template['file'] = '../../plugins/searchreplace/replace.htm'; // Relative to theme
template['width'] = 310;
template['height'] = 180;
} else {
template['file'] = '../../plugins/searchreplace/search.htm'; // Relative to theme
template['width'] = 280;
template['height'] = 180;
}
tinyMCE.openWindow(template, value);
} else {
var win = tinyMCE.getInstanceById(editor_id).contentWindow;
var doc = tinyMCE.getInstanceById(editor_id).contentWindow.document;
// Handle replace current
if (value['replacemode'] == "current") {
replaceSel(value['replacestring']);
// Search next one
value['replacemode'] = "none";
tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
return true;
}
if (tinyMCE.isMSIE) {
var rng = tinyMCE.lastSearchRng ? tinyMCE.lastSearchRng : doc.selection.createRange();
var flags = 0;
if (value['wholeword'])
flags = flags | 2;
if (value['casesensitive'])
flags = flags | 4;
// Handle replace all mode
if (value['replacemode'] == "all") {
while (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
rng.scrollIntoView();
rng.select();
rng.collapse(false);
replaceSel(value['replacestring']);
}
alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
return true;
}
if (rng.findText(value['string'], value['backwards'] ? -1 : 1, flags)) {
rng.scrollIntoView();
rng.select();
rng.collapse(value['backwards']);
tinyMCE.lastSearchRng = rng;
} else
alert(tinyMCE.getLang('lang_searchreplace_notfound'));
} else {
if (value['replacemode'] == "all") {
while (win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
replaceSel(value['replacestring']);
alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));
return true;
}
if (!win.find(value['string'], value['casesensitive'], value['backwards'], value['wrap'], value['wholeword'], false, false))
alert(tinyMCE.getLang('lang_searchreplace_notfound'));
}
}
return true;
case "mceSearchReplace":
value['replacestring'] = "";
tinyMCE.execInstanceCommand(editor_id, 'mceSearch', user_interface, value, false);
return true;
}
// Pass to next handler in chain
return false;
}
function TinyMCE_searchreplace_handleNodeChange(editor_id, node, undo_index, undo_levels, visual_aid, any_selection) {
return true;
}
/* Import theme specific language pack */
tinyMCE.importPluginLanguagePack('searchreplace','en,sv,zh_cn');function TinyMCE_searchreplace_getControlHTML(control_name){switch(control_name){case "search":return '<img id="{$editor_id}_search" src="{$pluginurl}/images/search.gif" title="{$lang_searchreplace_search_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearch\',true);" />';case "replace":return '<img id="{$editor_id}_replace" src="{$pluginurl}/images/replace.gif" title="{$lang_searchreplace_replace_desc}" width="20" height="20" class="mceButtonNormal" onmouseover="tinyMCE.switchClass(this,\'mceButtonOver\');" onmouseout="tinyMCE.restoreClass(this);" onmousedown="tinyMCE.restoreAndSwitchClass(this,\'mceButtonDown\');" onclick="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceSearchReplace\',true);" />';}return "";}function TinyMCE_searchreplace_execCommand(editor_id,element,command,user_interface,value){function defValue(key,default_value){value[key]=typeof(value[key])=="undefined"?default_value:value[key];}function replaceSel(search_str,str){if(!tinyMCE.isMSIE){var sel=instance.contentWindow.getSelection();var rng=sel.getRangeAt(0);}else{var rng=instance.contentWindow.document.selection.createRange();}if(!tinyMCE.isMSIE){var doc=instance.contentWindow.document;if(str.indexOf(search_str)==-1){rng.deleteContents();rng.insertNode(rng.createContextualFragment(str));rng.collapse(false);}else{doc.execCommand("insertimage",false,"#mce_temp_url#");var elm=tinyMCE.getElementByAttributeValue(doc.body,"img","src","#mce_temp_url#");elm.parentNode.replaceChild(doc.createTextNode(str),elm);}}else{if(rng.item)rng.item(0).outerHTML=str;else rng.pasteHTML(str);}}var instance=tinyMCE.getInstanceById(editor_id);if(!value)value=new Array();defValue("editor_id",editor_id);defValue("searchstring","");defValue("replacestring",null);defValue("replacemode","none");defValue("casesensitive",false);defValue("backwards",false);defValue("wrap",false);defValue("wholeword",false);switch(command){case "mceResetSearch":tinyMCE.lastSearchRng=null;return true;case "mceSearch":if(user_interface){var template=new Array();if(value['replacestring']!=null){template['file']='../../plugins/searchreplace/replace.htm';template['width']=310;template['height']=180;}else{template['file']='../../plugins/searchreplace/search.htm';template['width']=280;template['height']=180;}tinyMCE.openWindow(template,value);}else{var win=tinyMCE.getInstanceById(editor_id).contentWindow;var doc=tinyMCE.getInstanceById(editor_id).contentWindow.document;if(value['replacemode']=="current"){replaceSel(value['string'],value['replacestring']);value['replacemode']="none";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}if(tinyMCE.isMSIE){var rng=tinyMCE.lastSearchRng?tinyMCE.lastSearchRng:doc.selection.createRange();var flags=0;if(value['wholeword'])flags=flags|2;if(value['casesensitive'])flags=flags|4;if(value['replacemode']=="all"){while(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(false);replaceSel(value['string'],value['replacestring']);}alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(rng.findText(value['string'],value['backwards']?-1:1,flags)){rng.scrollIntoView();rng.select();rng.collapse(value['backwards']);tinyMCE.lastSearchRng=rng;}else alert(tinyMCE.getLang('lang_searchreplace_notfound'));}else{if(value['replacemode']=="all"){while(win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))replaceSel(value['string'],value['replacestring']);alert(tinyMCE.getLang('lang_searchreplace_allreplaced'));return true;}if(!win.find(value['string'],value['casesensitive'],value['backwards'],value['wrap'],value['wholeword'],false,false))alert(tinyMCE.getLang('lang_searchreplace_notfound'));}}return true;case "mceSearchReplace":value['replacestring']="";tinyMCE.execInstanceCommand(editor_id,'mceSearch',user_interface,value,false);return true;}return false;}function TinyMCE_searchreplace_handleNodeChange(editor_id,node,undo_index,undo_levels,visual_aid,any_selection){return true;}

View file

@ -1,18 +1,18 @@
searchreplace plugin for TinyMCE
-----------------------------
About:
This plugin adds search/replace dialogs to TinyMCE.
Installation instructions:
* Copy the searchreplace directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "searchreplace".
* Add buttons "search,replace" to the button list.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "searchreplace",
theme_advanced_buttons1_add : "search,replace",
});
searchreplace plugin for TinyMCE
-----------------------------
About:
This plugin adds search/replace dialogs to TinyMCE.
Installation instructions:
* Copy the searchreplace directory to the plugins directory of TinyMCE (/jscripts/tiny_mce/plugins).
* Add plugin to TinyMCE plugin option list example: plugins : "searchreplace".
* Add buttons "search,replace" to the button list.
Initialization example:
tinyMCE.init({
theme : "advanced",
mode : "textareas",
plugins : "searchreplace",
theme_advanced_buttons1_add : "search,replace",
});

View file

@ -1,38 +1,7 @@
/* Import theme specific language pack */
//tinyMCE.importPluginLanguagePack('zoom', 'uk,se,pt');
/**
* Returns the HTML contents of the zoom control.
*/
function TinyMCE_zoom_getControlHTML(control_name) {
if (!tinyMCE.isMSIE || tinyMCE.isMSIE5_0)
return "";
switch (control_name) {
case "zoom":
return '<select id="{$editor_id}_formatSelect" name="{$editor_id}_zoomSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
function TinyMCE_zoom_getControlHTML(control_name){if(!tinyMCE.isMSIE||tinyMCE.isMSIE5_0)return "";switch(control_name){case "zoom":return '<select id="{$editor_id}_formatSelect" name="{$editor_id}_zoomSelect" onchange="tinyMCE.execInstanceCommand(\'{$editor_id}\',\'mceZoom\',false,this.options[this.selectedIndex].value);" class="mceSelectList">\
<option value="100%">+ 100%</option>\
<option value="150%">+ 150%</option>\
<option value="200%">+ 200%</option>\
<option value="250%">+ 250%</option>\
</select>';
}
return "";
}
/**
* Executes the mceZoom command.
*/
function TinyMCE_zoom_execCommand(editor_id, element, command, user_interface, value) {
// Handle commands
switch (command) {
case "mceZoom":
tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom = value;
tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom = value;
return true;
}
// Pass to next handler in chain
return false;
}
</select>';}return "";}function TinyMCE_zoom_execCommand(editor_id,element,command,user_interface,value){switch(command){case "mceZoom":tinyMCE.getInstanceById(editor_id).contentDocument.body.style.zoom=value;tinyMCE.getInstanceById(editor_id).contentDocument.body.style.mozZoom=value;return true;}return false;}

View file

@ -1,382 +1,382 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_theme_charmap_title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
var charmap = new Array();
// for mor details please see w3c.org
// now here is the complete list ;)
charmap = [
['&nbsp;', '&#160;', true, 'no-break space'],
['&amp;', '&#38;', true, 'ampersand'],
['&quot;', '&#34;', true, 'quotation mark'],
// finance
['&cent;', '&#162;', true, 'cent sign'],
['&euro;', '&#8364;', true, 'euro sign'],
['&pound;', '&#163;', true, 'pound sign'],
['&yen;', '&#165;', true, 'yen sign'],
// signs
['&copy;', '&#169;', true, 'copyright sign'],
['&reg;', '&#174;', true, 'registered sign'],
['&trade;', '&#8482;', true, 'trade mark sign'],
['&permil;', '&#8240;', true, 'per mille sign'],
['&micro;', '&#181;', true, 'micro sign'],
['&middot;', '&#183;', true, 'middle dot'],
['&bull;', '&#8226;', true, 'bullet'],
['&hellip;', '&#8230;', true, 'three dot leader'],
['&prime;', '&#8242;', true, 'minutes / feet'],
['&Prime;', '&#8243;', true, 'seconds / inches'],
['&sect;', '&#167;', true, 'section sign'],
['&para;', '&#182;', true, 'paragraph sign'],
['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
// quotations
['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
['&laquo;', '&#171;', true, 'left pointing guillemet'],
['&raquo;', '&#187;', true, 'right pointing guillemet'],
['&lsquo;', '&#8216;', true, 'left single quotation mark'],
['&rsquo;', '&#8217;', true, 'right single quotation mark'],
['&ldquo;', '&#8220;', true, 'left double quotation mark'],
['&rdquo;', '&#8221;', true, 'right double quotation mark'],
['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
['&lt;', '&#60;', true, 'less-than sign'],
['&gt;', '&#62;', true, 'greater-than sign'],
['&le;', '&#8804;', true, 'less-than or equal to'],
['&ge;', '&#8805;', true, 'greater-than or equal to'],
['&ndash;', '&#8211;', true, 'en dash'],
['&mdash;', '&#8212;', true, 'em dash'],
['&macr;', '&#175;', true, 'macron'],
['&oline;', '&#8254;', true, 'overline'],
['&curren;', '&#164;', true, 'currency sign'],
['&brvbar;', '&#166;', true, 'broken bar'],
['&uml;', '&#168;', true, 'diaeresis'],
['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
['&iquest;', '&#191;', true, 'turned question mark'],
['&circ;', '&#710;', true, 'circumflex accent'],
['&tilde;', '&#732;', true, 'small tilde'],
['&deg;', '&#176;', true, 'degree sign'],
['&minus;', '&#8722;', true, 'minus sign'],
['&plusmn;', '&#177;', true, 'plus-minus sign'],
['&divide;', '&#247;', true, 'division sign'],
['&frasl;', '&#8260;', true, 'fraction slash'],
['&times;', '&#215;', true, 'multiplication sign'],
['&sup1;', '&#185;', true, 'superscript one'],
['&sup2;', '&#178;', true, 'superscript two'],
['&sup3;', '&#179;', true, 'superscript three'],
['&frac14;', '&#188;', true, 'fraction one quarter'],
['&frac12;', '&#189;', true, 'fraction one half'],
['&frac34;', '&#190;', true, 'fraction three quarters'],
// math / logical
['&fnof;', '&#402;', true, 'function / florin'],
['&int;', '&#8747;', true, 'integral'],
['&sum;', '&#8721;', true, 'n-ary sumation'],
['&infin;', '&#8734;', true, 'infinity'],
['&radic;', '&#8730;', true, 'square root'],
['&sim;', '&#8764;', false,'similar to'],
['&cong;', '&#8773;', false,'approximately equal to'],
['&asymp;', '&#8776;', true, 'almost equal to'],
['&ne;', '&#8800;', true, 'not equal to'],
['&equiv;', '&#8801;', true, 'identical to'],
['&isin;', '&#8712;', false,'element of'],
['&notin;', '&#8713;', false,'not an element of'],
['&ni;', '&#8715;', false,'contains as member'],
['&prod;', '&#8719;', true, 'n-ary product'],
['&and;', '&#8743;', false,'logical and'],
['&or;', '&#8744;', false,'logical or'],
['&not;', '&#172;', true, 'not sign'],
['&cap;', '&#8745;', true, 'intersection'],
['&cup;', '&#8746;', false,'union'],
['&part;', '&#8706;', true, 'partial differential'],
['&forall;', '&#8704;', false,'for all'],
['&exist;', '&#8707;', false,'there exists'],
['&empty;', '&#8709;', false,'diameter'],
['&nabla;', '&#8711;', false,'backward difference'],
['&lowast;', '&#8727;', false,'asterisk operator'],
['&prop;', '&#8733;', false,'proportional to'],
['&ang;', '&#8736;', false,'angle'],
// undefined
['&acute;', '&#180;', true, 'acute accent'],
['&cedil;', '&#184;', true, 'cedilla'],
['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
['&dagger;', '&#8224;', true, 'dagger'],
['&Dagger;', '&#8225;', true, 'double dagger'],
// alphabetical special chars
['&Agrave;', '&#192;', true, 'A - grave'],
['&Aacute;', '&#193;', true, 'A - acute'],
['&Acirc;', '&#194;', true, 'A - circumflex'],
['&Atilde;', '&#195;', true, 'A - tilde'],
['&Auml;', '&#196;', true, 'A - diaeresis'],
['&Aring;', '&#197;', true, 'A - ring above'],
['&AElig;', '&#198;', true, 'ligature AE'],
['&Ccedil;', '&#199;', true, 'C - cedilla'],
['&Egrave;', '&#200;', true, 'E - grave'],
['&Eacute;', '&#201;', true, 'E - acute'],
['&Ecirc;', '&#202;', true, 'E - circumflex'],
['&Euml;', '&#203;', true, 'E - diaeresis'],
['&Igrave;', '&#204;', true, 'I - grave'],
['&Iacute;', '&#205;', true, 'I - acute'],
['&Icirc;', '&#206;', true, 'I - circumflex'],
['&Iuml;', '&#207;', true, 'I - diaeresis'],
['&ETH;', '&#208;', true, 'ETH'],
['&Ntilde;', '&#209;', true, 'N - tilde'],
['&Ograve;', '&#210;', true, 'O - grave'],
['&Oacute;', '&#211;', true, 'O - acute'],
['&Ocirc;', '&#212;', true, 'O - circumflex'],
['&Otilde;', '&#213;', true, 'O - tilde'],
['&Ouml;', '&#214;', true, 'O - diaeresis'],
['&Oslash;', '&#216;', true, 'O - slash'],
['&OElig;', '&#338;', true, 'ligature OE'],
['&Scaron;', '&#352;', true, 'S - caron'],
['&Ugrave;', '&#217;', true, 'U - grave'],
['&Uacute;', '&#218;', true, 'U - acute'],
['&Ucirc;', '&#219;', true, 'U - circumflex'],
['&Uuml;', '&#220;', true, 'U - diaeresis'],
['&Yacute;', '&#221;', true, 'Y - acute'],
['&Yuml;', '&#376;', true, 'Y - diaeresis'],
['&THORN;', '&#222;', true, 'THORN'],
['&agrave;', '&#224;', true, 'a - grave'],
['&aacute;', '&#225;', true, 'a - acute'],
['&acirc;', '&#226;', true, 'a - circumflex'],
['&atilde;', '&#227;', true, 'a - tilde'],
['&auml;', '&#228;', true, 'a - diaeresis'],
['&aring;', '&#229;', true, 'a - ring above'],
['&aelig;', '&#230;', true, 'ligature ae'],
['&ccedil;', '&#231;', true, 'c - cedilla'],
['&egrave;', '&#232;', true, 'e - grave'],
['&eacute;', '&#233;', true, 'e - acute'],
['&ecirc;', '&#234;', true, 'e - circumflex'],
['&euml;', '&#235;', true, 'e - diaeresis'],
['&igrave;', '&#236;', true, 'i - grave'],
['&iacute;', '&#237;', true, 'i - acute'],
['&icirc;', '&#238;', true, 'i - circumflex'],
['&iuml;', '&#239;', true, 'i - diaeresis'],
['&eth;', '&#240;', true, 'eth'],
['&ntilde;', '&#241;', true, 'n - tilde'],
['&ograve;', '&#242;', true, 'o - grave'],
['&oacute;', '&#243;', true, 'o - acute'],
['&ocirc;', '&#244;', true, 'o - circumflex'],
['&otilde;', '&#245;', true, 'o - tilde'],
['&ouml;', '&#246;', true, 'o - diaeresis'],
['&oslash;', '&#248;', true, 'o slash'],
['&oelig;', '&#339;', true, 'ligature oe'],
['&scaron;', '&#353;', true, 's - caron'],
['&ugrave;', '&#249;', true, 'u - grave'],
['&uacute;', '&#250;', true, 'u - acute'],
['&ucirc;', '&#251;', true, 'u - circumflex'],
['&uuml;', '&#252;', true, 'u - diaeresis'],
['&yacute;', '&#253;', true, 'y - acute'],
['&thorn;', '&#254;', true, 'thorn'],
['&yuml;', '&#255;', true, 'y - diaeresis'],
// ['&Alpha;', '&#913;', true, 'Alpha'],
['&Beta;', '&#914;', true, 'Beta'],
['&Gamma;', '&#915;', true, 'Gamma'],
['&Delta;', '&#916;', true, 'Delta'],
['&Epsilon;', '&#917;', true, 'Epsilon'],
['&Zeta;', '&#918;', true, 'Zeta'],
['&Eta;', '&#919;', true, 'Eta'],
['&Theta;', '&#920;', true, 'Theta'],
['&Iota;', '&#921;', true, 'Iota'],
['&Kappa;', '&#922;', true, 'Kappa'],
['&Lambda;', '&#923;', true, 'Lambda'],
['&Mu;', '&#924;', true, 'Mu'],
['&Nu;', '&#925;', true, 'Nu'],
['&Xi;', '&#926;', true, 'Xi'],
['&Omicron;', '&#927;', true, 'Omicron'],
['&Pi;', '&#928;', true, 'Pi'],
['&Rho;', '&#929;', true, 'Rho'],
['&Sigma;', '&#931;', true, 'Sigma'],
['&Tau;', '&#932;', true, 'Tau'],
['&Upsilon;', '&#933;', true, 'Upsilon'],
['&Phi;', '&#934;', true, 'Phi'],
['&Chi;', '&#935;', true, 'Chi'],
['&Psi;', '&#936;', true, 'Psi'],
['&Omega;', '&#937;', true, 'Omega'],
['&alpha;', '&#945;', true, 'alpha'],
['&beta;', '&#946;', true, 'beta'],
['&gamma;', '&#947;', true, 'gamma'],
['&delta;', '&#948;', true, 'delta'],
['&epsilon;', '&#949;', true, 'epsilon'],
['&zeta;', '&#950;', true, 'zeta'],
['&eta;', '&#951;', true, 'eta'],
['&theta;', '&#952;', true, 'theta'],
['&iota;', '&#953;', true, 'iota'],
['&kappa;', '&#954;', true, 'kappa'],
['&lambda;', '&#955;', true, 'lambda'],
['&mu;', '&#956;', true, 'mu'],
['&nu;', '&#957;', true, 'nu'],
['&xi;', '&#958;', true, 'xi'],
['&omicron;', '&#959;', true, 'omicron'],
['&pi;', '&#960;', true, 'pi'],
['&rho;', '&#961;', true, 'rho'],
['&sigmaf;', '&#962;', true, 'final sigma'],
['&sigma;', '&#963;', true, 'sigma'],
['&tau;', '&#964;', true, 'tau'],
['&upsilon;', '&#965;', true, 'upsilon'],
['&phi;', '&#966;', true, 'phi'],
['&chi;', '&#967;', true, 'chi'],
['&psi;', '&#968;', true, 'psi'],
['&omega;', '&#969;', true, 'omega'],
// symbols
['&alefsym;', '&#8501;', false,'alef symbol'],
['&piv;', '&#982;', false,'pi symbol'],
['&real;', '&#8476;', false,'real part symbol'],
['&thetasym;','&#977;', false,'theta symbol'],
['&upsih;', '&#978;', false,'upsilon - hook symbol'],
['&weierp;', '&#8472;', false,'Weierstrass p'],
['&image;', '&#8465;', false,'imaginary part'],
// arrows
['&larr;', '&#8592;', true, 'leftwards arrow'],
['&uarr;', '&#8593;', true, 'upwards arrow'],
['&rarr;', '&#8594;', true, 'rightwards arrow'],
['&darr;', '&#8595;', true, 'downwards arrow'],
['&harr;', '&#8596;', true, 'left right arrow'],
['&crarr;', '&#8629;', false,'carriage return'],
['&lArr;', '&#8656;', false,'leftwards double arrow'],
['&uArr;', '&#8657;', false,'upwards double arrow'],
['&rArr;', '&#8658;', false,'rightwards double arrow'],
['&dArr;', '&#8659;', false,'downwards double arrow'],
['&hArr;', '&#8660;', false,'left right double arrow'],
['&there4;', '&#8756;', false,'therefore'],
['&sub;', '&#8834;', false,'subset of'],
['&sup;', '&#8835;', false,'superset of'],
['&nsub;', '&#8836;', false,'not a subset of'],
['&sube;', '&#8838;', false,'subset of or equal to'],
['&supe;', '&#8839;', false,'superset of or equal to'],
['&oplus;', '&#8853;', false,'circled plus'],
['&otimes;', '&#8855;', false,'circled times'],
['&perp;', '&#8869;', false,'perpendicular'],
['&sdot;', '&#8901;', false,'dot operator'],
['&lceil;', '&#8968;', false,'left ceiling'],
['&rceil;', '&#8969;', false,'right ceiling'],
['&lfloor;', '&#8970;', false,'left floor'],
['&rfloor;', '&#8971;', false,'right floor'],
['&lang;', '&#9001;', false,'left-pointing angle bracket'],
['&rang;', '&#9002;', false,'right-pointing angle bracket'],
['&loz;', '&#9674;', true,'lozenge'],
['&spades;', '&#9824;', false,'black spade suit'],
['&clubs;', '&#9827;', true, 'black club suit'],
['&hearts;', '&#9829;', true, 'black heart suit'],
['&diams;', '&#9830;', true, 'black diamond suit'],
['&ensp;', '&#8194;', false,'en space'],
['&emsp;', '&#8195;', false,'em space'],
['&thinsp;', '&#8201;', false,'thin space'],
['&zwnj;', '&#8204;', false,'zero width non-joiner'],
['&zwj;', '&#8205;', false,'zero width joiner'],
['&lrm;', '&#8206;', false,'left-to-right mark'],
['&rlm;', '&#8207;', false,'right-to-left mark'],
['&shy;', '&#173;', false,'soft hyphen']
];
function renderCharMapHTML() {
var charsPerRow = 20, tdWidth=20, tdHeight=20;
var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
var cols=-1;
for (var i=0; i<charmap.length; i++) {
if (charmap[i][2]==true) {
cols++;
html += ''
+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+ ' onmouseover="tinyMCE.switchClass(this,\'charmapOver\');'
+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+ ' onmouseout="tinyMCE.restoreClass(this,\'charmapOver\');"'
+ ' onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');return false;"'
+ ' title="' + charmap[i][3] + '" nowrap="nowrap">'
+ charmap[i][1]
+ '</td>';
if ((cols+1) % charsPerRow == 0)
html += '</tr><tr height="' + tdHeight + '">';
}
}
if (cols % charsPerRow > 0) {
var padd = charsPerRow - (cols % charsPerRow);
for (var i=0; i<padd-1; i++)
html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
}
html += '</tr></table>';
document.write(html);
}
function insertChar(chr) {
tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'), 'mceInsertContent', false, '\&#' + chr + ';');
//window.close();
self.focus();
}
function previewChar(codeA, codeB, codeN) {
var elmA = document.getElementById('codeA');
var elmB = document.getElementById('codeB');
var elmV = document.getElementById('codeV');
var elmN = document.getElementById('codeN');
if (codeA=='#160;') {
elmV.innerHTML = '__';
} else {
elmV.innerHTML = '&' + codeA;
}
elmB.innerHTML = '&amp;' + codeA;
elmA.innerHTML = '&amp;' + codeB;
elmN.innerHTML = codeN;
}
window.focus();
//-->
</script>
</head>
<body>
<table align="center" border="0" cellspacing="0" cellpadding="2">
<tr>
<td colspan="2" class="title">{$lang_theme_charmap_title}</td>
</tr>
<tr>
<td rowspan="2" align="left" valign="top">
<script language="javascript" type="text/javascript">
<!--
renderCharMapHTML();
//-->
</script>
</td>
<td width="100" align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100" height="100">
<tr>
<td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom" style="padding-bottom: 3px;">
<table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 1px;">&nbsp;</td>
</tr>
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>{$lang_theme_charmap_title}</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
var charmap = new Array();
// for mor details please see w3c.org
// now here is the complete list ;)
charmap = [
['&nbsp;', '&#160;', true, 'no-break space'],
['&amp;', '&#38;', true, 'ampersand'],
['&quot;', '&#34;', true, 'quotation mark'],
// finance
['&cent;', '&#162;', true, 'cent sign'],
['&euro;', '&#8364;', true, 'euro sign'],
['&pound;', '&#163;', true, 'pound sign'],
['&yen;', '&#165;', true, 'yen sign'],
// signs
['&copy;', '&#169;', true, 'copyright sign'],
['&reg;', '&#174;', true, 'registered sign'],
['&trade;', '&#8482;', true, 'trade mark sign'],
['&permil;', '&#8240;', true, 'per mille sign'],
['&micro;', '&#181;', true, 'micro sign'],
['&middot;', '&#183;', true, 'middle dot'],
['&bull;', '&#8226;', true, 'bullet'],
['&hellip;', '&#8230;', true, 'three dot leader'],
['&prime;', '&#8242;', true, 'minutes / feet'],
['&Prime;', '&#8243;', true, 'seconds / inches'],
['&sect;', '&#167;', true, 'section sign'],
['&para;', '&#182;', true, 'paragraph sign'],
['&szlig;', '&#223;', true, 'sharp s / ess-zed'],
// quotations
['&lsaquo;', '&#8249;', true, 'single left-pointing angle quotation mark'],
['&rsaquo;', '&#8250;', true, 'single right-pointing angle quotation mark'],
['&laquo;', '&#171;', true, 'left pointing guillemet'],
['&raquo;', '&#187;', true, 'right pointing guillemet'],
['&lsquo;', '&#8216;', true, 'left single quotation mark'],
['&rsquo;', '&#8217;', true, 'right single quotation mark'],
['&ldquo;', '&#8220;', true, 'left double quotation mark'],
['&rdquo;', '&#8221;', true, 'right double quotation mark'],
['&sbquo;', '&#8218;', true, 'single low-9 quotation mark'],
['&bdquo;', '&#8222;', true, 'double low-9 quotation mark'],
['&lt;', '&#60;', true, 'less-than sign'],
['&gt;', '&#62;', true, 'greater-than sign'],
['&le;', '&#8804;', true, 'less-than or equal to'],
['&ge;', '&#8805;', true, 'greater-than or equal to'],
['&ndash;', '&#8211;', true, 'en dash'],
['&mdash;', '&#8212;', true, 'em dash'],
['&macr;', '&#175;', true, 'macron'],
['&oline;', '&#8254;', true, 'overline'],
['&curren;', '&#164;', true, 'currency sign'],
['&brvbar;', '&#166;', true, 'broken bar'],
['&uml;', '&#168;', true, 'diaeresis'],
['&iexcl;', '&#161;', true, 'inverted exclamation mark'],
['&iquest;', '&#191;', true, 'turned question mark'],
['&circ;', '&#710;', true, 'circumflex accent'],
['&tilde;', '&#732;', true, 'small tilde'],
['&deg;', '&#176;', true, 'degree sign'],
['&minus;', '&#8722;', true, 'minus sign'],
['&plusmn;', '&#177;', true, 'plus-minus sign'],
['&divide;', '&#247;', true, 'division sign'],
['&frasl;', '&#8260;', true, 'fraction slash'],
['&times;', '&#215;', true, 'multiplication sign'],
['&sup1;', '&#185;', true, 'superscript one'],
['&sup2;', '&#178;', true, 'superscript two'],
['&sup3;', '&#179;', true, 'superscript three'],
['&frac14;', '&#188;', true, 'fraction one quarter'],
['&frac12;', '&#189;', true, 'fraction one half'],
['&frac34;', '&#190;', true, 'fraction three quarters'],
// math / logical
['&fnof;', '&#402;', true, 'function / florin'],
['&int;', '&#8747;', true, 'integral'],
['&sum;', '&#8721;', true, 'n-ary sumation'],
['&infin;', '&#8734;', true, 'infinity'],
['&radic;', '&#8730;', true, 'square root'],
['&sim;', '&#8764;', false,'similar to'],
['&cong;', '&#8773;', false,'approximately equal to'],
['&asymp;', '&#8776;', true, 'almost equal to'],
['&ne;', '&#8800;', true, 'not equal to'],
['&equiv;', '&#8801;', true, 'identical to'],
['&isin;', '&#8712;', false,'element of'],
['&notin;', '&#8713;', false,'not an element of'],
['&ni;', '&#8715;', false,'contains as member'],
['&prod;', '&#8719;', true, 'n-ary product'],
['&and;', '&#8743;', false,'logical and'],
['&or;', '&#8744;', false,'logical or'],
['&not;', '&#172;', true, 'not sign'],
['&cap;', '&#8745;', true, 'intersection'],
['&cup;', '&#8746;', false,'union'],
['&part;', '&#8706;', true, 'partial differential'],
['&forall;', '&#8704;', false,'for all'],
['&exist;', '&#8707;', false,'there exists'],
['&empty;', '&#8709;', false,'diameter'],
['&nabla;', '&#8711;', false,'backward difference'],
['&lowast;', '&#8727;', false,'asterisk operator'],
['&prop;', '&#8733;', false,'proportional to'],
['&ang;', '&#8736;', false,'angle'],
// undefined
['&acute;', '&#180;', true, 'acute accent'],
['&cedil;', '&#184;', true, 'cedilla'],
['&ordf;', '&#170;', true, 'feminine ordinal indicator'],
['&ordm;', '&#186;', true, 'masculine ordinal indicator'],
['&dagger;', '&#8224;', true, 'dagger'],
['&Dagger;', '&#8225;', true, 'double dagger'],
// alphabetical special chars
['&Agrave;', '&#192;', true, 'A - grave'],
['&Aacute;', '&#193;', true, 'A - acute'],
['&Acirc;', '&#194;', true, 'A - circumflex'],
['&Atilde;', '&#195;', true, 'A - tilde'],
['&Auml;', '&#196;', true, 'A - diaeresis'],
['&Aring;', '&#197;', true, 'A - ring above'],
['&AElig;', '&#198;', true, 'ligature AE'],
['&Ccedil;', '&#199;', true, 'C - cedilla'],
['&Egrave;', '&#200;', true, 'E - grave'],
['&Eacute;', '&#201;', true, 'E - acute'],
['&Ecirc;', '&#202;', true, 'E - circumflex'],
['&Euml;', '&#203;', true, 'E - diaeresis'],
['&Igrave;', '&#204;', true, 'I - grave'],
['&Iacute;', '&#205;', true, 'I - acute'],
['&Icirc;', '&#206;', true, 'I - circumflex'],
['&Iuml;', '&#207;', true, 'I - diaeresis'],
['&ETH;', '&#208;', true, 'ETH'],
['&Ntilde;', '&#209;', true, 'N - tilde'],
['&Ograve;', '&#210;', true, 'O - grave'],
['&Oacute;', '&#211;', true, 'O - acute'],
['&Ocirc;', '&#212;', true, 'O - circumflex'],
['&Otilde;', '&#213;', true, 'O - tilde'],
['&Ouml;', '&#214;', true, 'O - diaeresis'],
['&Oslash;', '&#216;', true, 'O - slash'],
['&OElig;', '&#338;', true, 'ligature OE'],
['&Scaron;', '&#352;', true, 'S - caron'],
['&Ugrave;', '&#217;', true, 'U - grave'],
['&Uacute;', '&#218;', true, 'U - acute'],
['&Ucirc;', '&#219;', true, 'U - circumflex'],
['&Uuml;', '&#220;', true, 'U - diaeresis'],
['&Yacute;', '&#221;', true, 'Y - acute'],
['&Yuml;', '&#376;', true, 'Y - diaeresis'],
['&THORN;', '&#222;', true, 'THORN'],
['&agrave;', '&#224;', true, 'a - grave'],
['&aacute;', '&#225;', true, 'a - acute'],
['&acirc;', '&#226;', true, 'a - circumflex'],
['&atilde;', '&#227;', true, 'a - tilde'],
['&auml;', '&#228;', true, 'a - diaeresis'],
['&aring;', '&#229;', true, 'a - ring above'],
['&aelig;', '&#230;', true, 'ligature ae'],
['&ccedil;', '&#231;', true, 'c - cedilla'],
['&egrave;', '&#232;', true, 'e - grave'],
['&eacute;', '&#233;', true, 'e - acute'],
['&ecirc;', '&#234;', true, 'e - circumflex'],
['&euml;', '&#235;', true, 'e - diaeresis'],
['&igrave;', '&#236;', true, 'i - grave'],
['&iacute;', '&#237;', true, 'i - acute'],
['&icirc;', '&#238;', true, 'i - circumflex'],
['&iuml;', '&#239;', true, 'i - diaeresis'],
['&eth;', '&#240;', true, 'eth'],
['&ntilde;', '&#241;', true, 'n - tilde'],
['&ograve;', '&#242;', true, 'o - grave'],
['&oacute;', '&#243;', true, 'o - acute'],
['&ocirc;', '&#244;', true, 'o - circumflex'],
['&otilde;', '&#245;', true, 'o - tilde'],
['&ouml;', '&#246;', true, 'o - diaeresis'],
['&oslash;', '&#248;', true, 'o slash'],
['&oelig;', '&#339;', true, 'ligature oe'],
['&scaron;', '&#353;', true, 's - caron'],
['&ugrave;', '&#249;', true, 'u - grave'],
['&uacute;', '&#250;', true, 'u - acute'],
['&ucirc;', '&#251;', true, 'u - circumflex'],
['&uuml;', '&#252;', true, 'u - diaeresis'],
['&yacute;', '&#253;', true, 'y - acute'],
['&thorn;', '&#254;', true, 'thorn'],
['&yuml;', '&#255;', true, 'y - diaeresis'],
// ['&Alpha;', '&#913;', true, 'Alpha'],
['&Beta;', '&#914;', true, 'Beta'],
['&Gamma;', '&#915;', true, 'Gamma'],
['&Delta;', '&#916;', true, 'Delta'],
['&Epsilon;', '&#917;', true, 'Epsilon'],
['&Zeta;', '&#918;', true, 'Zeta'],
['&Eta;', '&#919;', true, 'Eta'],
['&Theta;', '&#920;', true, 'Theta'],
['&Iota;', '&#921;', true, 'Iota'],
['&Kappa;', '&#922;', true, 'Kappa'],
['&Lambda;', '&#923;', true, 'Lambda'],
['&Mu;', '&#924;', true, 'Mu'],
['&Nu;', '&#925;', true, 'Nu'],
['&Xi;', '&#926;', true, 'Xi'],
['&Omicron;', '&#927;', true, 'Omicron'],
['&Pi;', '&#928;', true, 'Pi'],
['&Rho;', '&#929;', true, 'Rho'],
['&Sigma;', '&#931;', true, 'Sigma'],
['&Tau;', '&#932;', true, 'Tau'],
['&Upsilon;', '&#933;', true, 'Upsilon'],
['&Phi;', '&#934;', true, 'Phi'],
['&Chi;', '&#935;', true, 'Chi'],
['&Psi;', '&#936;', true, 'Psi'],
['&Omega;', '&#937;', true, 'Omega'],
['&alpha;', '&#945;', true, 'alpha'],
['&beta;', '&#946;', true, 'beta'],
['&gamma;', '&#947;', true, 'gamma'],
['&delta;', '&#948;', true, 'delta'],
['&epsilon;', '&#949;', true, 'epsilon'],
['&zeta;', '&#950;', true, 'zeta'],
['&eta;', '&#951;', true, 'eta'],
['&theta;', '&#952;', true, 'theta'],
['&iota;', '&#953;', true, 'iota'],
['&kappa;', '&#954;', true, 'kappa'],
['&lambda;', '&#955;', true, 'lambda'],
['&mu;', '&#956;', true, 'mu'],
['&nu;', '&#957;', true, 'nu'],
['&xi;', '&#958;', true, 'xi'],
['&omicron;', '&#959;', true, 'omicron'],
['&pi;', '&#960;', true, 'pi'],
['&rho;', '&#961;', true, 'rho'],
['&sigmaf;', '&#962;', true, 'final sigma'],
['&sigma;', '&#963;', true, 'sigma'],
['&tau;', '&#964;', true, 'tau'],
['&upsilon;', '&#965;', true, 'upsilon'],
['&phi;', '&#966;', true, 'phi'],
['&chi;', '&#967;', true, 'chi'],
['&psi;', '&#968;', true, 'psi'],
['&omega;', '&#969;', true, 'omega'],
// symbols
['&alefsym;', '&#8501;', false,'alef symbol'],
['&piv;', '&#982;', false,'pi symbol'],
['&real;', '&#8476;', false,'real part symbol'],
['&thetasym;','&#977;', false,'theta symbol'],
['&upsih;', '&#978;', false,'upsilon - hook symbol'],
['&weierp;', '&#8472;', false,'Weierstrass p'],
['&image;', '&#8465;', false,'imaginary part'],
// arrows
['&larr;', '&#8592;', true, 'leftwards arrow'],
['&uarr;', '&#8593;', true, 'upwards arrow'],
['&rarr;', '&#8594;', true, 'rightwards arrow'],
['&darr;', '&#8595;', true, 'downwards arrow'],
['&harr;', '&#8596;', true, 'left right arrow'],
['&crarr;', '&#8629;', false,'carriage return'],
['&lArr;', '&#8656;', false,'leftwards double arrow'],
['&uArr;', '&#8657;', false,'upwards double arrow'],
['&rArr;', '&#8658;', false,'rightwards double arrow'],
['&dArr;', '&#8659;', false,'downwards double arrow'],
['&hArr;', '&#8660;', false,'left right double arrow'],
['&there4;', '&#8756;', false,'therefore'],
['&sub;', '&#8834;', false,'subset of'],
['&sup;', '&#8835;', false,'superset of'],
['&nsub;', '&#8836;', false,'not a subset of'],
['&sube;', '&#8838;', false,'subset of or equal to'],
['&supe;', '&#8839;', false,'superset of or equal to'],
['&oplus;', '&#8853;', false,'circled plus'],
['&otimes;', '&#8855;', false,'circled times'],
['&perp;', '&#8869;', false,'perpendicular'],
['&sdot;', '&#8901;', false,'dot operator'],
['&lceil;', '&#8968;', false,'left ceiling'],
['&rceil;', '&#8969;', false,'right ceiling'],
['&lfloor;', '&#8970;', false,'left floor'],
['&rfloor;', '&#8971;', false,'right floor'],
['&lang;', '&#9001;', false,'left-pointing angle bracket'],
['&rang;', '&#9002;', false,'right-pointing angle bracket'],
['&loz;', '&#9674;', true,'lozenge'],
['&spades;', '&#9824;', false,'black spade suit'],
['&clubs;', '&#9827;', true, 'black club suit'],
['&hearts;', '&#9829;', true, 'black heart suit'],
['&diams;', '&#9830;', true, 'black diamond suit'],
['&ensp;', '&#8194;', false,'en space'],
['&emsp;', '&#8195;', false,'em space'],
['&thinsp;', '&#8201;', false,'thin space'],
['&zwnj;', '&#8204;', false,'zero width non-joiner'],
['&zwj;', '&#8205;', false,'zero width joiner'],
['&lrm;', '&#8206;', false,'left-to-right mark'],
['&rlm;', '&#8207;', false,'right-to-left mark'],
['&shy;', '&#173;', false,'soft hyphen']
];
function renderCharMapHTML() {
var charsPerRow = 20, tdWidth=20, tdHeight=20;
var html = '<table border="0" cellspacing="1" cellpadding="0" width="' + (tdWidth*charsPerRow) + '"><tr height="' + tdHeight + '">';
var cols=-1;
for (var i=0; i<charmap.length; i++) {
if (charmap[i][2]==true) {
cols++;
html += ''
+ '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap"'
+ ' onmouseover="tinyMCE.switchClass(this,\'charmapOver\');'
+ 'previewChar(\'' + charmap[i][1].substring(1,charmap[i][1].length) + '\',\'' + charmap[i][0].substring(1,charmap[i][0].length) + '\',\'' + charmap[i][3] + '\');"'
+ ' onmouseout="tinyMCE.restoreClass(this,\'charmapOver\');"'
+ ' onclick="insertChar(\'' + charmap[i][1].substring(2,charmap[i][1].length-1) + '\');return false;"'
+ ' title="' + charmap[i][3] + '" nowrap="nowrap">'
+ charmap[i][1]
+ '</td>';
if ((cols+1) % charsPerRow == 0)
html += '</tr><tr height="' + tdHeight + '">';
}
}
if (cols % charsPerRow > 0) {
var padd = charsPerRow - (cols % charsPerRow);
for (var i=0; i<padd-1; i++)
html += '<td width="' + tdWidth + '" height="' + tdHeight + '" class="charmap">&nbsp;</td>';
}
html += '</tr></table>';
document.write(html);
}
function insertChar(chr) {
tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'), 'mceInsertContent', false, '\&#' + chr + ';');
//window.close();
self.focus();
}
function previewChar(codeA, codeB, codeN) {
var elmA = document.getElementById('codeA');
var elmB = document.getElementById('codeB');
var elmV = document.getElementById('codeV');
var elmN = document.getElementById('codeN');
if (codeA=='#160;') {
elmV.innerHTML = '__';
} else {
elmV.innerHTML = '&' + codeA;
}
elmB.innerHTML = '&amp;' + codeA;
elmA.innerHTML = '&amp;' + codeB;
elmN.innerHTML = codeN;
}
window.focus();
//-->
</script>
</head>
<body>
<table align="center" border="0" cellspacing="0" cellpadding="2">
<tr>
<td colspan="2" class="title">{$lang_theme_charmap_title}</td>
</tr>
<tr>
<td rowspan="2" align="left" valign="top">
<script language="javascript" type="text/javascript">
<!--
renderCharMapHTML();
//-->
</script>
</td>
<td width="100" align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100" height="100">
<tr>
<td class="charmapOver" style="font-size: 40px; height:80px;" id="codeV">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 10px; font-family: Arial, Helvetica, sans-serif; text-align:center;" id="codeN">&nbsp;</td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom" style="padding-bottom: 3px;">
<table width="100" align="center" border="0" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">HTML-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeA" align="center">&nbsp;</td>
</tr>
<tr>
<td style="font-size: 1px;">&nbsp;</td>
</tr>
<tr>
<td align="center" style="border-left: 1px solid #666699; border-top: 1px solid #666699; border-right: 1px solid #666699;">NUM-Code</td>
</tr>
<tr>
<td style="font-size: 16px; font-weight: bold; border-left: 1px solid #666699; border-bottom: 1px solid #666699; border-right: 1px solid #666699;" id="codeB" align="center">&nbsp;</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

View file

@ -1,272 +1,272 @@
<html>
<head>
<title>{$lang_theme_colorpicker_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
function selectColor() {
var color = document.getElementById("selectedColorBox").value;
if (window.opener)
window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color);
window.close();
}
function showColor(color) {
document.getElementById("selectedColor").style.backgroundColor = color;
document.getElementById("selectedColorBox").value = color;
}
window.focus();
var colorPicker = "";
var colors = new Array(
"#000000",
"#000033",
"#000066",
"#000099",
"#0000cc",
"#0000ff",
"#330000",
"#330033",
"#330066",
"#330099",
"#3300cc",
"#3300ff",
"#660000",
"#660033",
"#660066",
"#660099",
"#6600cc",
"#6600ff",
"#990000",
"#990033",
"#990066",
"#990099",
"#9900cc",
"#9900ff",
"#cc0000",
"#cc0033",
"#cc0066",
"#cc0099",
"#cc00cc",
"#cc00ff",
"#ff0000",
"#ff0033",
"#ff0066",
"#ff0099",
"#ff00cc",
"#ff00ff",
"#003300",
"#003333",
"#003366",
"#003399",
"#0033cc",
"#0033ff",
"#333300",
"#333333",
"#333366",
"#333399",
"#3333cc",
"#3333ff",
"#663300",
"#663333",
"#663366",
"#663399",
"#6633cc",
"#6633ff",
"#993300",
"#993333",
"#993366",
"#993399",
"#9933cc",
"#9933ff",
"#cc3300",
"#cc3333",
"#cc3366",
"#cc3399",
"#cc33cc",
"#cc33ff",
"#ff3300",
"#ff3333",
"#ff3366",
"#ff3399",
"#ff33cc",
"#ff33ff",
"#006600",
"#006633",
"#006666",
"#006699",
"#0066cc",
"#0066ff",
"#336600",
"#336633",
"#336666",
"#336699",
"#3366cc",
"#3366ff",
"#666600",
"#666633",
"#666666",
"#666699",
"#6666cc",
"#6666ff",
"#996600",
"#996633",
"#996666",
"#996699",
"#9966cc",
"#9966ff",
"#cc6600",
"#cc6633",
"#cc6666",
"#cc6699",
"#cc66cc",
"#cc66ff",
"#ff6600",
"#ff6633",
"#ff6666",
"#ff6699",
"#ff66cc",
"#ff66ff",
"#009900",
"#009933",
"#009966",
"#009999",
"#0099cc",
"#0099ff",
"#339900",
"#339933",
"#339966",
"#339999",
"#3399cc",
"#3399ff",
"#669900",
"#669933",
"#669966",
"#669999",
"#6699cc",
"#6699ff",
"#999900",
"#999933",
"#999966",
"#999999",
"#9999cc",
"#9999ff",
"#cc9900",
"#cc9933",
"#cc9966",
"#cc9999",
"#cc99cc",
"#cc99ff",
"#ff9900",
"#ff9933",
"#ff9966",
"#ff9999",
"#ff99cc",
"#ff99ff",
"#00cc00",
"#00cc33",
"#00cc66",
"#00cc99",
"#00cccc",
"#00ccff",
"#33cc00",
"#33cc33",
"#33cc66",
"#33cc99",
"#33cccc",
"#33ccff",
"#66cc00",
"#66cc33",
"#66cc66",
"#66cc99",
"#66cccc",
"#66ccff",
"#99cc00",
"#99cc33",
"#99cc66",
"#99cc99",
"#99cccc",
"#99ccff",
"#cccc00",
"#cccc33",
"#cccc66",
"#cccc99",
"#cccccc",
"#ccccff",
"#ffcc00",
"#ffcc33",
"#ffcc66",
"#ffcc99",
"#ffcccc",
"#ffccff",
"#00ff00",
"#00ff33",
"#00ff66",
"#00ff99",
"#00ffcc",
"#00ffff",
"#33ff00",
"#33ff33",
"#33ff66",
"#33ff99",
"#33ffcc",
"#33ffff",
"#66ff00",
"#66ff33",
"#66ff66",
"#66ff99",
"#66ffcc",
"#66ffff",
"#99ff00",
"#99ff33",
"#99ff66",
"#99ff99",
"#99ffcc",
"#99ffff",
"#ccff00",
"#ccff33",
"#ccff66",
"#ccff99",
"#ccffcc",
"#ccffff",
"#ffff00",
"#ffff33",
"#ffff66",
"#ffff99",
"#ffffcc",
"#ffffff"
);
colorPicker += '<table border="0" cellspacing="1" cellpadding="0">'
+ '<tr>';
for (var i=0; i<colors.length; i++) {
colorPicker += '<td bgcolor="' + colors[i] + '">'
+ '<a href="#top" onclick="selectColor();return false;" onmouseover="showColor(\'' + colors[i] + '\');">'
+ '<img border="0" src="images/spacer.gif" width="10" height="10" /></a></td>';
if ((i+1) % 18 == 0)
colorPicker += '</tr><tr>';
}
colorPicker += '<tr><td colspan="18">'
+ '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
+ '<tr><td>'
+ '<img id="selectedColor" style="background-color:' + tinyMCE.getWindowArg('input_color') + '" border="0" src="images/spacer.gif" width="80" height="16" />'
+ '</td><td align="right">'
+ '<input id="selectedColorBox" name="selectedColorBox" type="text" size="7" maxlength="7" style="width:65px" value="' + tinyMCE.getWindowArg('input_color') + '" />'
+ '</td></tr>'
+ '</table>'
+ '<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" style="margin-top:3px" onclick="selectColor();">'
+ '</td></tr>'
+ '</table>';
//-->
</script>
</head>
<body marginheight="3" topmargin="3" leftmargin="3" marginwidth="3">
<div align="center">
<script language="javascript" type="text/javascript">
<!--
document.write(colorPicker);
//-->
</script>
</div>
</body>
</html>
<html>
<head>
<title>{$lang_theme_colorpicker_title}</title>
<script language="javascript" type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script language="javascript" type="text/javascript">
<!--
function selectColor() {
var color = document.getElementById("selectedColorBox").value;
if (window.opener)
window.opener.tinyMCE.execInstanceCommand(tinyMCE.getWindowArg('editor_id'),tinyMCE.getWindowArg('command'),false,color);
window.close();
}
function showColor(color) {
document.getElementById("selectedColor").style.backgroundColor = color;
document.getElementById("selectedColorBox").value = color;
}
window.focus();
var colorPicker = "";
var colors = new Array(
"#000000",
"#000033",
"#000066",
"#000099",
"#0000cc",
"#0000ff",
"#330000",
"#330033",
"#330066",
"#330099",
"#3300cc",
"#3300ff",
"#660000",
"#660033",
"#660066",
"#660099",
"#6600cc",
"#6600ff",
"#990000",
"#990033",
"#990066",
"#990099",
"#9900cc",
"#9900ff",
"#cc0000",
"#cc0033",
"#cc0066",
"#cc0099",
"#cc00cc",
"#cc00ff",
"#ff0000",
"#ff0033",
"#ff0066",
"#ff0099",
"#ff00cc",
"#ff00ff",
"#003300",
"#003333",
"#003366",
"#003399",
"#0033cc",
"#0033ff",
"#333300",
"#333333",
"#333366",
"#333399",
"#3333cc",
"#3333ff",
"#663300",
"#663333",
"#663366",
"#663399",
"#6633cc",
"#6633ff",
"#993300",
"#993333",
"#993366",
"#993399",
"#9933cc",
"#9933ff",
"#cc3300",
"#cc3333",
"#cc3366",
"#cc3399",
"#cc33cc",
"#cc33ff",
"#ff3300",
"#ff3333",
"#ff3366",
"#ff3399",
"#ff33cc",
"#ff33ff",
"#006600",
"#006633",
"#006666",
"#006699",
"#0066cc",
"#0066ff",
"#336600",
"#336633",
"#336666",
"#336699",
"#3366cc",
"#3366ff",
"#666600",
"#666633",
"#666666",
"#666699",
"#6666cc",
"#6666ff",
"#996600",
"#996633",
"#996666",
"#996699",
"#9966cc",
"#9966ff",
"#cc6600",
"#cc6633",
"#cc6666",
"#cc6699",
"#cc66cc",
"#cc66ff",
"#ff6600",
"#ff6633",
"#ff6666",
"#ff6699",
"#ff66cc",
"#ff66ff",
"#009900",
"#009933",
"#009966",
"#009999",
"#0099cc",
"#0099ff",
"#339900",
"#339933",
"#339966",
"#339999",
"#3399cc",
"#3399ff",
"#669900",
"#669933",
"#669966",
"#669999",
"#6699cc",
"#6699ff",
"#999900",
"#999933",
"#999966",
"#999999",
"#9999cc",
"#9999ff",
"#cc9900",
"#cc9933",
"#cc9966",
"#cc9999",
"#cc99cc",
"#cc99ff",
"#ff9900",
"#ff9933",
"#ff9966",
"#ff9999",
"#ff99cc",
"#ff99ff",
"#00cc00",
"#00cc33",
"#00cc66",
"#00cc99",
"#00cccc",
"#00ccff",
"#33cc00",
"#33cc33",
"#33cc66",
"#33cc99",
"#33cccc",
"#33ccff",
"#66cc00",
"#66cc33",
"#66cc66",
"#66cc99",
"#66cccc",
"#66ccff",
"#99cc00",
"#99cc33",
"#99cc66",
"#99cc99",
"#99cccc",
"#99ccff",
"#cccc00",
"#cccc33",
"#cccc66",
"#cccc99",
"#cccccc",
"#ccccff",
"#ffcc00",
"#ffcc33",
"#ffcc66",
"#ffcc99",
"#ffcccc",
"#ffccff",
"#00ff00",
"#00ff33",
"#00ff66",
"#00ff99",
"#00ffcc",
"#00ffff",
"#33ff00",
"#33ff33",
"#33ff66",
"#33ff99",
"#33ffcc",
"#33ffff",
"#66ff00",
"#66ff33",
"#66ff66",
"#66ff99",
"#66ffcc",
"#66ffff",
"#99ff00",
"#99ff33",
"#99ff66",
"#99ff99",
"#99ffcc",
"#99ffff",
"#ccff00",
"#ccff33",
"#ccff66",
"#ccff99",
"#ccffcc",
"#ccffff",
"#ffff00",
"#ffff33",
"#ffff66",
"#ffff99",
"#ffffcc",
"#ffffff"
);
colorPicker += '<table border="0" cellspacing="1" cellpadding="0">'
+ '<tr>';
for (var i=0; i<colors.length; i++) {
colorPicker += '<td bgcolor="' + colors[i] + '">'
+ '<a href="#top" onclick="selectColor();return false;" onmouseover="showColor(\'' + colors[i] + '\');">'
+ '<img border="0" src="images/spacer.gif" width="10" height="10" /></a></td>';
if ((i+1) % 18 == 0)
colorPicker += '</tr><tr>';
}
colorPicker += '<tr><td colspan="18">'
+ '<table width="100%" border="0" cellspacing="0" cellpadding="0">'
+ '<tr><td>'
+ '<img id="selectedColor" style="background-color:' + tinyMCE.getWindowArg('input_color') + '" border="0" src="images/spacer.gif" width="80" height="16" />'
+ '</td><td align="right">'
+ '<input id="selectedColorBox" name="selectedColorBox" type="text" size="7" maxlength="7" style="width:65px" value="' + tinyMCE.getWindowArg('input_color') + '" />'
+ '</td></tr>'
+ '</table>'
+ '<input type="button" id="insert" name="insert" value="{$lang_theme_colorpicker_apply}" style="margin-top:3px" onclick="selectColor();">'
+ '</td></tr>'
+ '</table>';
//-->
</script>
</head>
<body marginheight="3" topmargin="3" leftmargin="3" marginwidth="3">
<div align="center">
<script language="javascript" type="text/javascript">
<!--
document.write(colorPicker);
//-->
</script>
</div>
</body>
</html>

View file

@ -100,31 +100,31 @@ Peque&ntilde;a descripci&oacute;n de cada boto&oacute;n.<img src="../../images/s
<td>Abre el editor de HTML. </td>
</tr>
<tr>
<td><img src="../../images/table.gif" width="20" height="20"></td>
<td><img src="../images/table.gif" width="20" height="20"></td>
<td>Inserta una nueva tabla de 2x2. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
<td>A&ntilde;ade una fila encima. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
<td>A&ntilde;ade una fila debajo. </td>
</tr>
<tr>
<td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
<td>Elimina una fila. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
<td>A&ntilde;ade una columna antes de la actual .</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
<td>A&ntilde;ade una columna despu&eacute;s de la actual.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
<td>Elimina la columna actual.</td>
</tr>
<tr>

View file

@ -100,31 +100,31 @@ Alla on lyhyt selostus kaikista toimintonapeista.<img src="../../images/spacer.g
<td>Avaa HTML lähdekoodieditorin. </td>
</tr>
<tr>
<td><img src="../../images/table.gif" width="20" height="20"></td>
<td><img src="../images/table.gif" width="20" height="20"></td>
<td>Lisää tualu. Lue lisää tästä toiminnosta <a href="insert_table_button.htm"> lisää taulu -osiosta</a>. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
<td>Lisää rivi valitun rivin edelle. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
<td>Lisää rivi valitun rivin jälkeen. </td>
</tr>
<tr>
<td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
<td>Poista valittu rivi. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
<td>Lisää saraka valitun sarakkeen jälkeen.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
<td>Lisää sarake valitun sarakkeen edelle.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
<td>Poistaa valitun sarakkeen.</td>
</tr>
<tr>

View file

@ -120,31 +120,31 @@ programma office<br>
<td>Apre l'editor del sorgente HTML. </td>
</tr>
<tr>
<td><img src="../../images/table.gif" width="20" height="20"></td>
<td><img src="../images/table.gif" width="20" height="20"></td>
<td>Inserisce una nuova tabella 2x2 alla posizione corrente.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
<td>Aggiunge una riga sopra quella corrente.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
<td>Aggiunge una roga sotto quella corrente.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
<td>Rimuove la riga corrente. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
<td>Aggiunge una colonna prima di quella corrente.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
<td>Aggiunge una colonna dopo quella corrente.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
<td>Rimuove la colonna corrente.</td>
</tr>
<tr>

View file

@ -124,31 +124,31 @@ knoppen een beknopte beschrijving.
<br>
<table width=100% border="1" cellpadding="3" cellspacing="0">
<tr>
<td><img src="../../images/table.gif" width="20" height="20"></td>
<td><img src="../images/table.gif" width="20" height="20"></td>
<td>Voegt een nieuwe tabel met 2 rijen en kolommen in op de huidige positie in te tekst. </td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
<td>Voegt een nieuwe rij toe aan de tabel boven de huidige.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
<td>Voegt een nieuwe rij toe aan de tabel onder de huidige.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
<td>Verwijdert de huidige rij uit de tabel.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
<td>Voegt een nieuwe kolom toe aan de tabel voor de huidige.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
<td>Voegt een nieuwe kolom toe aan de tabel achter de huidige.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
<td>Verwijdert de huidige kolom uit de tabel.</td>
</tr>
<tr>

View file

@ -109,31 +109,31 @@ Poni
<td>Otwarcie edytora kodu HTML.</td>
</tr>
<tr>
<td><img src="../../images/table.gif" width="20" height="20"></td>
<td><img src="../images/table.gif" width="20" height="20"></td>
<td>Wstawienie nowej tabeli 2x2 w bieżącej pozycji.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_before.gif" width="20" height="20"></td>
<td>Wstawienie wiersza ponad aktualnie zaznaczonym.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_row_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_row_after.gif" width="20" height="20"></td>
<td>Wstawienie wiersz poniżej aktualnie zaznaczonego.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_row.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_row.gif" width="20" height="20"></td>
<td>Usunięcie wiersza.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_before.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_before.gif" width="20" height="20"></td>
<td>Wstawienie kolumny przed aktualnie zaznaczoną.</td>
</tr>
<tr>
<td><img src="../../images/table_insert_col_after.gif" width="20" height="20"></td>
<td><img src="../images/table_insert_col_after.gif" width="20" height="20"></td>
<td>Wstawienie kolumny za aktualnie zaznaczoną.</td>
</tr>
<tr>
<td><img src="../../images/table_delete_col.gif" width="20" height="20"></td>
<td><img src="../images/table_delete_col.gif" width="20" height="20"></td>
<td>Usunięcie kolumny.</td>
</tr>
<tr>

View file

@ -90,3 +90,28 @@ input.checkbox {
background-color: transparent;
vertical-align: middle;
}
.mceButtonNormal, .mceButtonOver, .mceButtonDown, .mceSeparator, .mceButtonDisabled, .mceButtonSelected {
margin-left: 1px;
}
.mceButtonNormal {
border-top: 1px solid;
border-left: 1px solid;
border-bottom: 1px solid;
border-right: 1px solid;
border-color: #F0F0EE;
cursor: arrow;
}
.mceButtonOver {
border: 1px solid #0A246A;
cursor: arrow;
background-color: #B6BDD2;
}
.mceButtonDown {
cursor: arrow;
border: 1px solid #0A246A;
background-color: #8592B5;
}

File diff suppressed because one or more lines are too long

View file

@ -30,13 +30,6 @@ var TinyMCE_advanced_buttons = [
['cleanup', 'cleanup.gif', '{$lang_cleanup_desc}', 'mceCleanup'],
['help', 'help.gif', '{$lang_help_desc}', 'mceHelp'],
['code', 'code.gif', '{$lang_theme_code_desc}', 'mceCodeEditor'],
['table', 'table.gif', '{$lang_theme_table_desc}', 'mceInsertTable', true],
['row_before', 'table_insert_row_before.gif', '{$lang_theme_table_insert_row_before_desc}', 'mceTableInsertRowBefore'],
['row_after', 'table_insert_row_after.gif', '{$lang_theme_table_insert_row_after_desc}', 'mceTableInsertRowAfter'],
['delete_row', 'table_delete_row.gif', '{$lang_theme_table_delete_row_desc}', 'mceTableDeleteRow'],
['col_before', 'table_insert_col_before.gif', '{$lang_theme_table_insert_col_before_desc}', 'mceTableInsertColBefore'],
['col_after', 'table_insert_col_after.gif', '{$lang_theme_table_insert_col_after_desc}', 'mceTableInsertColAfter'],
['delete_col', 'table_delete_col.gif', '{$lang_theme_table_delete_col_desc}', 'mceTableDeleteCol'],
['hr', 'hr.gif', '{$lang_theme_hr_desc}', 'inserthorizontalrule'],
['removeformat', 'removeformat.gif', '{$lang_theme_removeformat_desc}', 'removeformat'],
['sub', 'sub.gif', '{$lang_theme_sub_desc}', 'subscript'],
@ -53,7 +46,7 @@ var TinyMCE_advanced_buttons = [
* Returns HTML code for the specificed control.
*/
function TinyMCE_advanced_getControlHTML(button_name) {
var buttonTileMap = new Array('anchor.gif','backcolor.gif','bullist.gif','center.gif','charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif','cut.gif','forecolor.gif','full.gif','help.gif','hr.gif','image.gif','indent.gif','left.gif','link.gif','numlist.gif','outdent.gif','paste.gif','redo.gif','removeformat.gif','right.gif','strikethrough.gif','sub.gif','sup.gif','table.gif','table_delete_col.gif','table_delete_row.gif','table_insert_col_after.gif','table_insert_col_before.gif','table_insert_row_after.gif','table_insert_row_before.gif','undo.gif','unlink.gif','visualaid.gif');
var buttonTileMap = new Array('anchor.gif','backcolor.gif','bullist.gif','center.gif','charmap.gif','cleanup.gif','code.gif','copy.gif','custom_1.gif','cut.gif','forecolor.gif','full.gif','help.gif','hr.gif','image.gif','indent.gif','left.gif','link.gif','numlist.gif','outdent.gif','paste.gif','redo.gif','removeformat.gif','right.gif','strikethrough.gif','sub.gif','sup.gif','undo.gif','unlink.gif','visualaid.gif');
// Lookup button in button list
for (var i=0; i<TinyMCE_advanced_buttons.length; i++) {
@ -226,78 +219,167 @@ function TinyMCE_advanced_getEditorTemplate(settings) {
outArray[outArray.length] = in_array[i];
}
return outArray;
return outArray;
}
function addToArray(in_array, add_array) {
for (var i=0; i<add_array.length; i++)
in_array[in_array.length] = add_array[i];
return in_array;
return in_array;
}
var template = new Array();
var toolbarHTML = "", pathHTML = "";
var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none");
var deltaHeight = 0;
// Setup path HTML
pathHTML ='{$lang_theme_path}: <span id="{$editor_id}_path">&nbsp;</span>';
//###########################################################################################################
// <Layout Manager Modification by SlyD, 14.1.2005>
//###########################################################################################################
// Render row 1
var buttonNamesRow1 = tinyMCE.getParam("theme_advanced_buttons1", "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", true, ',');
buttonNamesRow1 = removeFromArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow1 = addToArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_buttons1_add", "", true, ','));
buttonNamesRow1 = addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before", "", true, ','), buttonNamesRow1);
for (var i=0; i<buttonNamesRow1.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow1[i]);
var pathHTML = '{$lang_theme_path}: <span id="{$editor_id}_path">&nbsp;</span>';
var layoutManager = tinyMCE.getParam("theme_advanced_layout_manager", "SimpleLayout");
if (buttonNamesRow1.length > 0)
toolbarHTML += "<br />";
switch(layoutManager)
{
case "SimpleLayout" : //the default TinyMCE Layout (for backwards compatibility)...
var toolbarHTML = "";
var toolbarLocation = tinyMCE.getParam("theme_advanced_toolbar_location", "bottom");
var toolbarAlign = tinyMCE.getParam("theme_advanced_toolbar_align", "center");
var pathLocation = tinyMCE.getParam("theme_advanced_path_location", "none");
// Render row 2
var buttonNamesRow2 = tinyMCE.getParam("theme_advanced_buttons2", "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", true, ',');
buttonNamesRow2 = removeFromArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow2 = addToArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_buttons2_add", "", true, ','));
buttonNamesRow2 = addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before", "", true, ','), buttonNamesRow2);
for (var i=0; i<buttonNamesRow2.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow2[i]);
// Render row 1
var buttonNamesRow1 = tinyMCE.getParam("theme_advanced_buttons1", "bold,italic,underline,strikethrough,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect", true, ',');
buttonNamesRow1 = removeFromArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow1 = addToArray(buttonNamesRow1, tinyMCE.getParam("theme_advanced_buttons1_add", "", true, ','));
buttonNamesRow1 = addToArray(tinyMCE.getParam("theme_advanced_buttons1_add_before", "", true, ','), buttonNamesRow1);
for (var i=0; i<buttonNamesRow1.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow1[i]);
if (buttonNamesRow2.length > 0)
toolbarHTML += "<br />";
if (buttonNamesRow1.length > 0) {
toolbarHTML += "<br />";
deltaHeight -= 23;
}
// Render row 3
var buttonNamesRow3 = tinyMCE.getParam("theme_advanced_buttons3", "table,separator,row_before,row_after,delete_row,separator,col_before,col_after,delete_col,separator,hr,removeformat,visualaid,separator,sub,sup,separator,charmap", true, ',');
buttonNamesRow3 = removeFromArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow3 = addToArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_buttons3_add", "", true, ','));
buttonNamesRow3 = addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before", "", true, ','), buttonNamesRow3);
for (var i=0; i<buttonNamesRow3.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow3[i]);
// Render row 2
var buttonNamesRow2 = tinyMCE.getParam("theme_advanced_buttons2", "bullist,numlist,separator,outdent,indent,separator,undo,redo,separator,link,unlink,anchor,image,cleanup,help,code", true, ',');
buttonNamesRow2 = removeFromArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow2 = addToArray(buttonNamesRow2, tinyMCE.getParam("theme_advanced_buttons2_add", "", true, ','));
buttonNamesRow2 = addToArray(tinyMCE.getParam("theme_advanced_buttons2_add_before", "", true, ','), buttonNamesRow2);
for (var i=0; i<buttonNamesRow2.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow2[i]);
// Setup template html
template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}">';
if (buttonNamesRow2.length > 0) {
toolbarHTML += "<br />";
deltaHeight -= 23;
}
if (toolbarLocation == "top")
template['html'] += '<tr><td class="mceToolbarTop" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
// Render row 3
var buttonNamesRow3 = tinyMCE.getParam("theme_advanced_buttons3", "hr,removeformat,visualaid,separator,sub,sup,separator,charmap", true, ',');
buttonNamesRow3 = removeFromArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_disable", "", true, ','));
buttonNamesRow3 = addToArray(buttonNamesRow3, tinyMCE.getParam("theme_advanced_buttons3_add", "", true, ','));
buttonNamesRow3 = addToArray(tinyMCE.getParam("theme_advanced_buttons3_add_before", "", true, ','), buttonNamesRow3);
for (var i=0; i<buttonNamesRow3.length; i++)
toolbarHTML += tinyMCE.getControlHTML(buttonNamesRow3[i]);
if (pathLocation == "top")
template['html'] += '<tr><td class="mcePathTop">' + pathHTML + '</td></tr>';
if (buttonNamesRow3.length > 0)
deltaHeight -= 20;
/* template['html'] += '<tr><td align="center">\
<iframe id="{$editor_id}" class="mceEditorArea" border="1" frameborder="0" src="{$default_document}" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" style="width:{$area_width};height:{$area_height}" width="{$area_width}" height="{$area_height}"></iframe>\
</td></tr>';*/
template['html'] += '<tr><td align="center">\
<span id="{$editor_id}"></span>\
</td></tr>';
// Setup template html
template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}"><tbody>';
if (toolbarLocation == "bottom")
template['html'] += '<tr><td class="mceToolbarBottom" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
if (toolbarLocation == "top")
template['html'] += '<tr><td class="mceToolbarTop" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
if (pathLocation == "bottom")
template['html'] += '<tr><td class="mcePathBottom">' + pathHTML + '</td></tr>';
if (pathLocation == "top") {
template['html'] += '<tr><td class="mcePathTop">' + pathHTML + '</td></tr>';
deltaHeight -= 23;
}
template['html'] += '</table>';
/* template['html'] += '<tr><td align="center">\
<iframe id="{$editor_id}" class="mceEditorArea" border="1" frameborder="0" src="{$default_document}" marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" style="width:{$area_width};height:{$area_height}" width="{$area_width}" height="{$area_height}"></iframe>\
</td></tr>';*/
template['html'] += '<tr><td align="center">\
<span id="{$editor_id}"></span>\
</td></tr>';
if (toolbarLocation == "bottom")
template['html'] += '<tr><td class="mceToolbarBottom" align="' + toolbarAlign + '" height="1">' + toolbarHTML + '</td></tr>';
if (pathLocation == "bottom") {
template['html'] += '<tr><td class="mcePathBottom">' + pathHTML + '</td></tr>';
deltaHeight -= 23;
}
template['html'] += '</table>';
break;
case "RowLayout" : //Container Layout - containers defined in "theme_advanced_containers" are rendered from top to bottom.
template['html'] = '<table class="mceEditor" border="0" cellpadding="0" cellspacing="0" width="{$width}" height="{$height}"><tbody>';
var containers = tinyMCE.getParam("theme_advanced_containers", "", true, ",");
var defaultContainerCSS = tinyMCE.getParam("theme_advanced_containers_default_class", "container");
var defaultContainerAlign = tinyMCE.getParam("theme_advanced_containers_default_align", "center");
//Render Containers:
for(var i = 0; i < containers.length; i++)
{
if(containers[i] == "mceEditor") //Exceptions for mceEditor and ...
{
template['html'] += '<tr><td align="center" class="mceEditor_border">\
<span id="{$editor_id}"></span>\
</td></tr>';
}
else if(containers[i] == "mceElementpath") // ... mceElementpath:
{
var pathClass = "mcePath";
if (i == containers.length-1)
pathClass = "mcePathBottom";
else if (i == 0)
pathClass = "mcePathTop";
else
deltaHeight-=2;
template['html'] += '<tr><td class="' + pathClass + '">' + pathHTML + '</td></tr>';
deltaHeight -= 22;
}
else //Render normal Container:
{
var curContainer = tinyMCE.getParam("theme_advanced_container_"+containers[i], "", true, ',');
var curContainerHTML = "";
var curAlign = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_align", defaultContainerAlign);
var curCSS = tinyMCE.getParam("theme_advanced_container_"+containers[i]+"_class", defaultContainerCSS);
for (var j=0; j<curContainer.length; j++)
curContainerHTML += tinyMCE.getControlHTML(curContainer[j]);
if (curContainer.length > 0) {
curContainerHTML += "<br />";
deltaHeight -= 23;
}
template['html'] += '<tr><td class="' + curCSS + '" align="' + curAlign + '" height="1">' + curContainerHTML + '</td></tr>';
}
}
template['html'] += '</tbody></table>';
break;
case "BorderLayout" : //will be like java.awt.BorderLayout of SUN Java...
// Not implemented yet...
break;
case "CustomLayout" : //User defined layout callback...
var customLayout = tinyMCE.getParam("theme_advanced_custom_layout","");
if (customLayout != "" && eval("typeof(" + customLayout + ")") != "undefined")
template = eval(customLayout + "(template);");
break;
default:
alert('UNDEFINED LAYOUT MANAGER! PLEASE CHECK YOUR TINYMCE CONFIG!');
break;
}
//###########################################################################################################
// </Modification by SlyD, 14.1.2005>
//###########################################################################################################
// Setup style select options
var styleSelectHTML = '<option value="">-- {$lang_theme_style_select} --</option>';
@ -317,7 +399,7 @@ function TinyMCE_advanced_getEditorTemplate(settings) {
template['html'] = tinyMCE.replaceVar(template['html'], 'style_select_options', styleSelectHTML);
template['delta_width'] = 0;
template['delta_height'] = -40;
template['delta_height'] = deltaHeight;
return template;
}
@ -356,23 +438,6 @@ function TinyMCE_advanced_getInsertImageTemplate() {
return template;
}
/**
* Insert table template function.
*/
function TinyMCE_advanced_getInsertTableTemplate(settings) {
var template = new Array();
template['file'] = 'table.htm';
template['width'] = 340;
template['height'] = 220;
// Language specific width and height addons
template['width'] += tinyMCE.getLang('lang_insert_table_delta_width', 0);
template['height'] += tinyMCE.getLang('lang_insert_table_delta_height', 0);
return template;
}
/**
* Node change handler.
*/
@ -428,7 +493,7 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev
if (getAttrib(path[i], 'class') != "")
nodeData += "class: " + path[i].getAttribute('class') + " ";
if (getAttrib(path[i], 'className') != "")
nodeData += "class: " + path[i].getAttribute('className') + " ";
@ -473,16 +538,9 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev
tinyMCE.switchClassSticky(editor_id + '_numlist', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_sub', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_sup', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_anchor', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_link', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_unlink', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonDisabled', true);
tinyMCE.switchClassSticky(editor_id + '_image', 'mceButtonNormal');
tinyMCE.switchClassSticky(editor_id + '_hr', 'mceButtonNormal');
@ -510,20 +568,6 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev
tinyMCE.switchClassSticky(editor_id + '_redo', 'mceButtonDisabled', true);
}
// Within a td element
if (tinyMCE.getParentElement(node, "td")) {
tinyMCE.switchClassSticky(editor_id + '_row_before', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_row_after', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_delete_row', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_col_before', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_col_after', 'mceButtonNormal', false);
tinyMCE.switchClassSticky(editor_id + '_delete_col', 'mceButtonNormal', false);
}
// Within table
if (tinyMCE.getParentElement(node, "table"))
tinyMCE.switchClassSticky(editor_id + '_table', 'mceButtonSelected');
// Within li, blockquote
if (tinyMCE.getParentElement(node, "li,blockquote"))
tinyMCE.switchClassSticky(editor_id + '_outdent', 'mceButtonNormal', false);
@ -555,7 +599,7 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev
}
}
}
} while (!breakOut && (classNode = classNode.parentNode));
} while (!breakOut && classNode != null && (classNode = classNode.parentNode));
selectElm.selectedIndex = index;
}
@ -641,7 +685,7 @@ function TinyMCE_advanced_handleNodeChange(editor_id, node, undo_index, undo_lev
case "strike":
tinyMCE.switchClassSticky(editor_id + '_strikethrough', 'mceButtonSelected');
break;
case "ul":
tinyMCE.switchClassSticky(editor_id + '_bullist', 'mceButtonSelected');
break;
@ -688,4 +732,4 @@ function TinyMCE_advanced_setupCSSClasses(editor_id) {
if (csses != null && csses.length > 0)
selectElm.setAttribute('cssImported', 'true');
}
}
}

Some files were not shown because too many files have changed in this diff Show more