Version Description
- Updated TinyMCE table plug-in to corresponding TinyMCE update in WordPress 3.1 (still supports <3.1 too)
Download this release
Release Info
Developer | jakemgold |
Plugin | MCE Table Buttons |
Version | 1.0.4 |
Comparing to | |
See all releases |
Code changes from version 1.0.3.1 to 1.0.4
- mce_table_buttons.php +6 -2
- readme.txt +5 -2
- {mce-table → table-old}/cell.htm +0 -0
- {mce-table → table-old}/css/cell.css +0 -0
- {mce-table → table-old}/css/row.css +0 -0
- {mce-table → table-old}/css/table.css +0 -0
- {mce-table → table-old}/editor_plugin.js +0 -0
- {mce-table → table-old}/js/cell.js +0 -0
- {mce-table → table-old}/js/merge_cells.js +0 -0
- {mce-table → table-old}/js/row.js +0 -0
- {mce-table → table-old}/js/table.js +0 -0
- {mce-table → table-old}/langs/en_dlg.js +0 -0
- {mce-table → table-old}/merge_cells.htm +0 -0
- {mce-table → table-old}/row.htm +0 -0
- {mce-table → table-old}/table.htm +0 -0
- table/cell.htm +178 -0
- table/css/cell.css +17 -0
- table/css/row.css +25 -0
- table/css/table.css +13 -0
- table/editor_plugin.js +1 -0
- table/js/cell.js +286 -0
- table/js/merge_cells.js +27 -0
- table/js/row.js +237 -0
- table/js/table.js +454 -0
- table/langs/en_dlg.js +74 -0
- table/merge_cells.htm +32 -0
- table/row.htm +155 -0
- table/table.htm +187 -0
mce_table_buttons.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: MCE Table Buttons
|
4 |
Plugin URI: http://www.get10up.com/plugins-modules/wordpress-mce-table-buttons/
|
5 |
Description: Add <strong>buttons for table editing</strong> to the WordPress WYSIWYG editor with this very <strong>light weight</strong> plug-in.
|
6 |
-
Version: 1.0.
|
7 |
Author: Jake Goldman
|
8 |
Author URI: http://www.get10up.com
|
9 |
|
@@ -40,7 +40,11 @@ class mce_table_buttons
|
|
40 |
|
41 |
function mce_external_plugins( $plugin_array )
|
42 |
{
|
43 |
-
|
|
|
|
|
|
|
|
|
44 |
return $plugin_array;
|
45 |
}
|
46 |
|
3 |
Plugin Name: MCE Table Buttons
|
4 |
Plugin URI: http://www.get10up.com/plugins-modules/wordpress-mce-table-buttons/
|
5 |
Description: Add <strong>buttons for table editing</strong> to the WordPress WYSIWYG editor with this very <strong>light weight</strong> plug-in.
|
6 |
+
Version: 1.0.4
|
7 |
Author: Jake Goldman
|
8 |
Author URI: http://www.get10up.com
|
9 |
|
40 |
|
41 |
function mce_external_plugins( $plugin_array )
|
42 |
{
|
43 |
+
if ( get_option('db_version') < 17056 ) // 17056 is WordPress 3.1
|
44 |
+
$plugin_array['table'] = plugin_dir_url( __FILE__ ) . 'table-old/editor_plugin.js';
|
45 |
+
else
|
46 |
+
$plugin_array['table'] = plugin_dir_url( __FILE__ ) . 'table/editor_plugin.js';
|
47 |
+
|
48 |
return $plugin_array;
|
49 |
}
|
50 |
|
readme.txt
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
=== MCE Table Buttons ===
|
2 |
-
Contributors: jakemgold
|
3 |
Donate link: http://www.get10up.com/plugins-modules/wordpress-mce-table-buttons/
|
4 |
Tags: tables, table, editor, WYSIWYG, buttons, tinymce
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 3.1
|
7 |
-
Stable tag: 1.0.
|
8 |
|
9 |
Adds table editing buttons to a new, third row in the WordPress WYSIWYG editor.
|
10 |
|
@@ -30,6 +30,9 @@ Hoping to add the ability to hide the new table editing toolbar with the "kitche
|
|
30 |
|
31 |
== Changelog ==
|
32 |
|
|
|
|
|
|
|
33 |
= 1.0.3.1 =
|
34 |
* Updated support / developer information
|
35 |
|
1 |
=== MCE Table Buttons ===
|
2 |
+
Contributors: jakemgold, thinkoomph
|
3 |
Donate link: http://www.get10up.com/plugins-modules/wordpress-mce-table-buttons/
|
4 |
Tags: tables, table, editor, WYSIWYG, buttons, tinymce
|
5 |
Requires at least: 2.8
|
6 |
Tested up to: 3.1
|
7 |
+
Stable tag: 1.0.4
|
8 |
|
9 |
Adds table editing buttons to a new, third row in the WordPress WYSIWYG editor.
|
10 |
|
30 |
|
31 |
== Changelog ==
|
32 |
|
33 |
+
= 1.0.4 =
|
34 |
+
* Updated TinyMCE table plug-in to corresponding TinyMCE update in WordPress 3.1 (still supports <3.1 too)
|
35 |
+
|
36 |
= 1.0.3.1 =
|
37 |
* Updated support / developer information
|
38 |
|
{mce-table → table-old}/cell.htm
RENAMED
File without changes
|
{mce-table → table-old}/css/cell.css
RENAMED
File without changes
|
{mce-table → table-old}/css/row.css
RENAMED
File without changes
|
{mce-table → table-old}/css/table.css
RENAMED
File without changes
|
{mce-table → table-old}/editor_plugin.js
RENAMED
File without changes
|
{mce-table → table-old}/js/cell.js
RENAMED
File without changes
|
{mce-table → table-old}/js/merge_cells.js
RENAMED
File without changes
|
{mce-table → table-old}/js/row.js
RENAMED
File without changes
|
{mce-table → table-old}/js/table.js
RENAMED
File without changes
|
{mce-table → table-old}/langs/en_dlg.js
RENAMED
File without changes
|
{mce-table → table-old}/merge_cells.htm
RENAMED
File without changes
|
{mce-table → table-old}/row.htm
RENAMED
File without changes
|
{mce-table → table-old}/table.htm
RENAMED
File without changes
|
table/cell.htm
ADDED
@@ -0,0 +1,178 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<title>{#table_dlg.cell_title}</title>
|
5 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
6 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/mctabs.js"></script>
|
7 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/form_utils.js"></script>
|
8 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/editable_selects.js"></script>
|
9 |
+
<script type="text/javascript" src="js/cell.js"></script>
|
10 |
+
<link href="css/cell.css" rel="stylesheet" type="text/css" />
|
11 |
+
</head>
|
12 |
+
<body id="tablecell" style="display: none">
|
13 |
+
<form onsubmit="updateAction();return false;" action="#">
|
14 |
+
<div class="tabs">
|
15 |
+
<ul>
|
16 |
+
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
|
17 |
+
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
|
18 |
+
</ul>
|
19 |
+
</div>
|
20 |
+
|
21 |
+
<div class="panel_wrapper">
|
22 |
+
<div id="general_panel" class="panel current">
|
23 |
+
<fieldset>
|
24 |
+
<legend>{#table_dlg.general_props}</legend>
|
25 |
+
|
26 |
+
<table border="0" cellpadding="4" cellspacing="0">
|
27 |
+
<tr>
|
28 |
+
<td><label for="align">{#table_dlg.align}</label></td>
|
29 |
+
<td>
|
30 |
+
<select id="align" name="align" class="mceFocus">
|
31 |
+
<option value="">{#not_set}</option>
|
32 |
+
<option value="center">{#table_dlg.align_middle}</option>
|
33 |
+
<option value="left">{#table_dlg.align_left}</option>
|
34 |
+
<option value="right">{#table_dlg.align_right}</option>
|
35 |
+
</select>
|
36 |
+
</td>
|
37 |
+
|
38 |
+
<td><label for="celltype">{#table_dlg.cell_type}</label></td>
|
39 |
+
<td>
|
40 |
+
<select id="celltype" name="celltype">
|
41 |
+
<option value="td">{#table_dlg.td}</option>
|
42 |
+
<option value="th">{#table_dlg.th}</option>
|
43 |
+
</select>
|
44 |
+
</td>
|
45 |
+
</tr>
|
46 |
+
|
47 |
+
<tr>
|
48 |
+
<td><label for="valign">{#table_dlg.valign}</label></td>
|
49 |
+
<td>
|
50 |
+
<select id="valign" name="valign">
|
51 |
+
<option value="">{#not_set}</option>
|
52 |
+
<option value="top">{#table_dlg.align_top}</option>
|
53 |
+
<option value="middle">{#table_dlg.align_middle}</option>
|
54 |
+
<option value="bottom">{#table_dlg.align_bottom}</option>
|
55 |
+
</select>
|
56 |
+
</td>
|
57 |
+
|
58 |
+
<td><label for="scope">{#table_dlg.scope}</label></td>
|
59 |
+
<td>
|
60 |
+
<select id="scope" name="scope">
|
61 |
+
<option value="">{#not_set}</option>
|
62 |
+
<option value="col">{#table.col}</option>
|
63 |
+
<option value="row">{#table.row}</option>
|
64 |
+
<option value="rowgroup">{#table_dlg.rowgroup}</option>
|
65 |
+
<option value="colgroup">{#table_dlg.colgroup}</option>
|
66 |
+
</select>
|
67 |
+
</td>
|
68 |
+
|
69 |
+
</tr>
|
70 |
+
|
71 |
+
<tr>
|
72 |
+
<td><label for="width">{#table_dlg.width}</label></td>
|
73 |
+
<td><input id="width" name="width" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
|
74 |
+
|
75 |
+
<td><label for="height">{#table_dlg.height}</label></td>
|
76 |
+
<td><input id="height" name="height" type="text" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
|
77 |
+
</tr>
|
78 |
+
|
79 |
+
<tr id="styleSelectRow">
|
80 |
+
<td><label for="class">{#class_name}</label></td>
|
81 |
+
<td colspan="3">
|
82 |
+
<select id="class" name="class" class="mceEditableSelect">
|
83 |
+
<option value="" selected="selected">{#not_set}</option>
|
84 |
+
</select>
|
85 |
+
</td>
|
86 |
+
</tr>
|
87 |
+
</table>
|
88 |
+
</fieldset>
|
89 |
+
</div>
|
90 |
+
|
91 |
+
<div id="advanced_panel" class="panel">
|
92 |
+
<fieldset>
|
93 |
+
<legend>{#table_dlg.advanced_props}</legend>
|
94 |
+
|
95 |
+
<table border="0" cellpadding="0" cellspacing="4">
|
96 |
+
<tr>
|
97 |
+
<td class="column1"><label for="id">{#table_dlg.id}</label></td>
|
98 |
+
<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
|
99 |
+
</tr>
|
100 |
+
|
101 |
+
<tr>
|
102 |
+
<td><label for="style">{#table_dlg.style}</label></td>
|
103 |
+
<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
|
104 |
+
</tr>
|
105 |
+
|
106 |
+
<tr>
|
107 |
+
<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
|
108 |
+
<td>
|
109 |
+
<select id="dir" name="dir" style="width: 200px">
|
110 |
+
<option value="">{#not_set}</option>
|
111 |
+
<option value="ltr">{#table_dlg.ltr}</option>
|
112 |
+
<option value="rtl">{#table_dlg.rtl}</option>
|
113 |
+
</select>
|
114 |
+
</td>
|
115 |
+
</tr>
|
116 |
+
|
117 |
+
<tr>
|
118 |
+
<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
|
119 |
+
<td>
|
120 |
+
<input id="lang" name="lang" type="text" value="" style="width: 200px" />
|
121 |
+
</td>
|
122 |
+
</tr>
|
123 |
+
|
124 |
+
<tr>
|
125 |
+
<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
|
126 |
+
<td>
|
127 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
128 |
+
<tr>
|
129 |
+
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
|
130 |
+
<td id="backgroundimagebrowsercontainer"> </td>
|
131 |
+
</tr>
|
132 |
+
</table>
|
133 |
+
</td>
|
134 |
+
</tr>
|
135 |
+
|
136 |
+
<tr>
|
137 |
+
<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td>
|
138 |
+
<td>
|
139 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
140 |
+
<tr>
|
141 |
+
<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
|
142 |
+
<td id="bordercolor_pickcontainer"> </td>
|
143 |
+
</tr>
|
144 |
+
</table>
|
145 |
+
</td>
|
146 |
+
</tr>
|
147 |
+
|
148 |
+
<tr>
|
149 |
+
<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
|
150 |
+
<td>
|
151 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
152 |
+
<tr>
|
153 |
+
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
|
154 |
+
<td id="bgcolor_pickcontainer"> </td>
|
155 |
+
</tr>
|
156 |
+
</table>
|
157 |
+
</td>
|
158 |
+
</tr>
|
159 |
+
</table>
|
160 |
+
</fieldset>
|
161 |
+
</div>
|
162 |
+
</div>
|
163 |
+
|
164 |
+
<div class="mceActionPanel">
|
165 |
+
<div>
|
166 |
+
<select id="action" name="action">
|
167 |
+
<option value="cell">{#table_dlg.cell_cell}</option>
|
168 |
+
<option value="row">{#table_dlg.cell_row}</option>
|
169 |
+
<option value="all">{#table_dlg.cell_all}</option>
|
170 |
+
</select>
|
171 |
+
</div>
|
172 |
+
|
173 |
+
<input type="submit" id="insert" name="insert" value="{#update}" />
|
174 |
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
175 |
+
</div>
|
176 |
+
</form>
|
177 |
+
</body>
|
178 |
+
</html>
|
table/css/cell.css
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* CSS file for cell dialog in the table plugin */
|
2 |
+
|
3 |
+
.panel_wrapper div.current {
|
4 |
+
height: 200px;
|
5 |
+
}
|
6 |
+
|
7 |
+
.advfield {
|
8 |
+
width: 200px;
|
9 |
+
}
|
10 |
+
|
11 |
+
#action {
|
12 |
+
margin-bottom: 3px;
|
13 |
+
}
|
14 |
+
|
15 |
+
#class {
|
16 |
+
width: 150px;
|
17 |
+
}
|
table/css/row.css
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* CSS file for row dialog in the table plugin */
|
2 |
+
|
3 |
+
.panel_wrapper div.current {
|
4 |
+
height: 200px;
|
5 |
+
}
|
6 |
+
|
7 |
+
.advfield {
|
8 |
+
width: 200px;
|
9 |
+
}
|
10 |
+
|
11 |
+
#action {
|
12 |
+
margin-bottom: 3px;
|
13 |
+
}
|
14 |
+
|
15 |
+
#rowtype,#align,#valign,#class,#height {
|
16 |
+
width: 150px;
|
17 |
+
}
|
18 |
+
|
19 |
+
#height {
|
20 |
+
width: 50px;
|
21 |
+
}
|
22 |
+
|
23 |
+
.col2 {
|
24 |
+
padding-left: 20px;
|
25 |
+
}
|
table/css/table.css
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* CSS file for table dialog in the table plugin */
|
2 |
+
|
3 |
+
.panel_wrapper div.current {
|
4 |
+
height: 245px;
|
5 |
+
}
|
6 |
+
|
7 |
+
.advfield {
|
8 |
+
width: 200px;
|
9 |
+
}
|
10 |
+
|
11 |
+
#class {
|
12 |
+
width: 150px;
|
13 |
+
}
|
table/editor_plugin.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
(function(c){var d=c.each;function b(f,g){var h=g.ownerDocument,e=h.createRange(),j;e.setStartBefore(g);e.setEnd(f.endContainer,f.endOffset);j=h.createElement("body");j.appendChild(e.cloneContents());return j.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(G,F,J){var f,K,C,o;s();o=F.getParent(J.getStart(),"th,td");if(o){K=E(o);C=H();o=w(K.x,K.y)}function z(M,L){M=M.cloneNode(L);M.removeAttribute("id");return M}function s(){var L=0;f=[];d(["thead","tbody","tfoot"],function(M){var N=F.select("> "+M+" tr",G);d(N,function(O,P){P+=L;d(F.select("> td, > th",O),function(V,Q){var R,S,T,U;if(f[P]){while(f[P][Q]){Q++}}T=h(V,"rowspan");U=h(V,"colspan");for(S=P;S<P+T;S++){if(!f[S]){f[S]=[]}for(R=Q;R<Q+U;R++){f[S][R]={part:M,real:S==P&&R==Q,elm:V,rowspan:T,colspan:U}}}})});L+=N.length})}function w(L,N){var M;M=f[N];if(M){return M[L]}}function h(M,L){return parseInt(M.getAttribute(L)||1)}function j(L){return F.hasClass(L.elm,"mceSelected")||L==o}function k(){var L=[];d(G.rows,function(M){d(M.cells,function(N){if(F.hasClass(N,"mceSelected")||N==o.elm){L.push(M);return false}})});return L}function r(){var L=F.createRng();L.setStartAfter(G);L.setEndAfter(G);J.setRng(L);F.remove(G)}function e(L){var M;c.walk(L,function(O){var N;if(O.nodeType==3){d(F.getParents(O.parentNode,null,L).reverse(),function(P){P=z(P,false);if(!M){M=N=P}else{if(N){N.appendChild(P)}}N=P});if(N){N.innerHTML=c.isIE?" ":'<br _mce_bogus="1" />'}return false}},"childNodes");L=z(L,false);L.rowSpan=L.colSpan=1;if(M){L.appendChild(M)}else{if(!c.isIE){L.innerHTML='<br _mce_bogus="1" />'}}return L}function q(){var L=F.createRng();d(F.select("tr",G),function(M){if(M.cells.length==0){F.remove(M)}});if(F.select("tr",G).length==0){L.setStartAfter(G);L.setEndAfter(G);J.setRng(L);F.remove(G);return}d(F.select("thead,tbody,tfoot",G),function(M){if(M.rows.length==0){F.remove(M)}});s();row=f[Math.min(f.length-1,K.y)];if(row){J.select(row[Math.min(row.length-1,K.x)].elm,true);J.collapse(true)}}function t(R,P,T,Q){var O,M,L,N,S;O=f[P][R].elm.parentNode;for(L=1;L<=T;L++){O=F.getNext(O,"tr");if(O){for(M=R;M>=0;M--){S=f[P+L][M].elm;if(S.parentNode==O){for(N=1;N<=Q;N++){F.insertAfter(e(S),S)}break}}if(M==-1){for(N=1;N<=Q;N++){O.insertBefore(e(O.cells[0]),O.cells[0])}}}}}function B(){d(f,function(L,M){d(L,function(O,N){var R,Q,S,P;if(j(O)){O=O.elm;R=h(O,"colspan");Q=h(O,"rowspan");if(R>1||Q>1){O.colSpan=O.rowSpan=1;for(P=0;P<R-1;P++){F.insertAfter(e(O),O)}t(N,M,Q-1,R)}}})})}function p(T,Q,W){var O,N,V,U,S,P,R,L,T,M;if(T){pos=E(T);O=pos.x;N=pos.y;V=O+(Q-1);U=N+(W-1)}else{O=K.x;N=K.y;V=C.x;U=C.y}R=w(O,N);L=w(V,U);if(R&&L&&R.part==L.part){B();s();R=w(O,N).elm;R.colSpan=(V-O)+1;R.rowSpan=(U-N)+1;for(P=N;P<=U;P++){for(S=O;S<=V;S++){T=f[P][S].elm;if(T!=R){M=c.grep(T.childNodes);d(M,function(Y,X){if(Y.nodeName!="BR"||X!=M.length-1){R.appendChild(Y)}});F.remove(T)}}}q()}}function l(O){var L,Q,N,P,R,S,M,T;d(f,function(U,V){d(U,function(X,W){if(j(X)){X=X.elm;R=X.parentNode;S=z(R,false);L=V;if(O){return false}}});if(O){return !L}});for(P=0;P<f[0].length;P++){Q=f[L][P].elm;if(Q!=N){if(!O){rowSpan=h(Q,"rowspan");if(rowSpan>1){Q.rowSpan=rowSpan+1;continue}}else{if(L>0&&f[L-1][P]){T=f[L-1][P].elm;rowSpan=h(T,"rowspan");if(rowSpan>1){T.rowSpan=rowSpan+1;continue}}}M=e(Q);M.colSpan=Q.colSpan;S.appendChild(M);N=Q}}if(S.hasChildNodes()){if(!O){F.insertAfter(S,R)}else{R.parentNode.insertBefore(S,R)}}}function g(M){var N,L;d(f,function(O,P){d(O,function(R,Q){if(j(R)){N=Q;if(M){return false}}});if(M){return !N}});d(f,function(R,S){var O=R[N].elm,P,Q;if(O!=L){Q=h(O,"colspan");P=h(O,"rowspan");if(Q==1){if(!M){F.insertAfter(e(O),O);t(N,S,P-1,Q)}else{O.parentNode.insertBefore(e(O),O);t(N,S,P-1,Q)}}else{O.colSpan++}L=O}})}function n(){var L=[];d(f,function(M,N){d(M,function(P,O){if(j(P)&&c.inArray(L,O)===-1){d(f,function(S){var Q=S[O].elm,R;R=h(Q,"colspan");if(R>1){Q.colSpan=R-1}else{F.remove(Q)}});L.push(O)}})});q()}function m(){var M;function L(P){var O,Q,N;O=F.getNext(P,"tr");d(P.cells,function(R){var S=h(R,"rowspan");if(S>1){R.rowSpan=S-1;Q=E(R);t(Q.x,Q.y,1,1)}});Q=E(P.cells[0]);d(f[Q.y],function(R){var S;R=R.elm;if(R!=N){S=h(R,"rowspan");if(S<=1){F.remove(R)}else{R.rowSpan=S-1}N=R}})}M=k();d(M.reverse(),function(N){L(N)});q()}function D(){var L=k();F.remove(L);q();return L}function I(){var L=k();d(L,function(N,M){L[M]=z(N,true)});return L}function A(N,M){var O=k(),L=O[M?0:O.length-1],P=L.cells.length;d(f,function(R){var Q;P=0;d(R,function(T,S){if(T.real){P+=T.colspan}if(T.elm.parentNode==L){Q=1}});if(Q){return false}});if(!M){N.reverse()}d(N,function(S){var R=S.cells.length,Q;for(i=0;i<R;i++){Q=S.cells[i];Q.colSpan=Q.rowSpan=1}for(i=R;i<P;i++){S.appendChild(e(S.cells[R-1]))}for(i=P;i<R;i++){F.remove(S.cells[i])}if(M){L.parentNode.insertBefore(S,L)}else{F.insertAfter(S,L)}})}function E(L){var M;d(f,function(N,O){d(N,function(Q,P){if(Q.elm==L){M={x:P,y:O};return false}});return !M});return M}function v(L){K=E(L)}function H(){var N,M,L;M=L=0;d(f,function(O,P){d(O,function(R,Q){var T,S;if(j(R)){R=f[P][Q];if(Q>M){M=Q}if(P>L){L=P}if(R.real){T=R.colspan-1;S=R.rowspan-1;if(T){if(Q+T>M){M=Q+T}}if(S){if(P+S>L){L=P+S}}}}})});return{x:M,y:L}}function u(R){var O,N,T,S,M,L,P,Q;C=E(R);if(K&&C){O=Math.min(K.x,C.x);N=Math.min(K.y,C.y);T=Math.max(K.x,C.x);S=Math.max(K.y,C.y);M=T;L=S;for(y=N;y<=L;y++){R=f[y][O];if(!R.real){if(O-(R.colspan-1)<O){O-=R.colspan-1}}}for(x=O;x<=M;x++){R=f[N][x];if(!R.real){if(N-(R.rowspan-1)<N){N-=R.rowspan-1}}}for(y=N;y<=S;y++){for(x=O;x<=T;x++){R=f[y][x];if(R.real){P=R.colspan-1;Q=R.rowspan-1;if(P){if(x+P>M){M=x+P}}if(Q){if(y+Q>L){L=y+Q}}}}}F.removeClass(F.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=N;y<=L;y++){for(x=O;x<=M;x++){F.addClass(f[y][x].elm,"mceSelected")}}}}c.extend(this,{deleteTable:r,split:B,merge:p,insertRow:l,insertCol:g,deleteCols:n,deleteRows:m,cutRows:D,copyRows:I,pasteRows:A,getPos:E,setStartCell:v,setEndCell:u})}c.create("tinymce.plugins.TablePlugin",{init:function(f,g){var e,k;function j(n){var m=f.selection,l=f.dom.getParent(n||m.getNode(),"table");if(l){return new a(l,f.dom,m)}}function h(){f.getBody().style.webkitUserSelect="";f.dom.removeClass(f.dom.select("td.mceSelected,th.mceSelected"),"mceSelected")}d([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(l){f.addButton(l[0],{title:l[1],cmd:l[2],ui:l[3]})});if(!c.isIE){f.onClick.add(function(l,m){m=m.target;if(m.nodeName==="TABLE"){l.selection.select(m)}})}f.onNodeChange.add(function(m,l,q){var o;q=m.selection.getStart();o=m.dom.getParent(q,"td,th,caption");l.setActive("table",q.nodeName==="TABLE"||!!o);if(o&&o.nodeName==="CAPTION"){o=0}l.setDisabled("delete_table",!o);l.setDisabled("delete_col",!o);l.setDisabled("delete_table",!o);l.setDisabled("delete_row",!o);l.setDisabled("col_after",!o);l.setDisabled("col_before",!o);l.setDisabled("row_after",!o);l.setDisabled("row_before",!o);l.setDisabled("row_props",!o);l.setDisabled("cell_props",!o);l.setDisabled("split_cells",!o);l.setDisabled("merge_cells",!o)});f.onInit.add(function(m){var l,p,q=m.dom,n;e=m.windowManager;m.onMouseDown.add(function(r,s){if(s.button!=2){h();p=q.getParent(s.target,"td,th");l=q.getParent(p,"table")}});q.bind(m.getDoc(),"mouseover",function(u){var s,r,t=u.target;if(p&&(n||t!=p)&&(t.nodeName=="TD"||t.nodeName=="TH")){r=q.getParent(t,"table");if(r==l){if(!n){n=j(r);n.setStartCell(p);m.getBody().style.webkitUserSelect="none"}n.setEndCell(t)}s=m.selection.getSel();if(s.removeAllRanges){s.removeAllRanges()}else{s.empty()}u.preventDefault()}});m.onMouseUp.add(function(A,B){var s,u=A.selection,C,D=u.getSel(),r,v,t,z;if(p){if(n){A.getBody().style.webkitUserSelect=""}function w(E,G){var F=new c.dom.TreeWalker(E,E);do{if(E.nodeType==3&&c.trim(E.nodeValue).length!=0){if(G){s.setStart(E,0)}else{s.setEnd(E,E.nodeValue.length)}return}if(E.nodeName=="BR"){if(G){s.setStartBefore(E)}else{s.setEndBefore(E)}return}}while(E=(G?F.next():F.prev()))}C=q.select("td.mceSelected,th.mceSelected");if(C.length>0){s=q.createRng();v=C[0];z=C[C.length-1];w(v,1);r=new c.dom.TreeWalker(v,q.getParent(C[0],"table"));do{if(v.nodeName=="TD"||v.nodeName=="TH"){if(!q.hasClass(v,"mceSelected")){break}t=v}}while(v=r.next());w(t);u.setRng(s)}A.nodeChanged();p=n=l=null}});m.onKeyUp.add(function(r,s){h()});if(m&&m.plugins.contextmenu){m.plugins.contextmenu.onContextMenu.add(function(t,r,v){var w,u=m.selection,s=u.getNode()||m.getBody();if(m.dom.getParent(v,"td")||m.dom.getParent(v,"th")||m.dom.select("td.mceSelected,th.mceSelected").length){r.removeAll();if(s.nodeName=="A"&&!m.dom.getAttrib(s,"name")){r.add({title:"advanced.link_desc",icon:"link",cmd:m.plugins.advlink?"mceAdvLink":"mceLink",ui:true});r.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});r.addSeparator()}if(s.nodeName=="IMG"&&s.className.indexOf("mceItem")==-1){r.add({title:"advanced.image_desc",icon:"image",cmd:m.plugins.advimage?"mceAdvImage":"mceImage",ui:true});r.addSeparator()}r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});r.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});r.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});r.addSeparator();w=r.addMenu({title:"table.cell"});w.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});w.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});w.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});w=r.addMenu({title:"table.row"});w.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});w.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});w.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});w.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});w.addSeparator();w.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});w.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});w.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!k);w.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!k);w=r.addMenu({title:"table.col"});w.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});w.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});w.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{r.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(!c.isIE){function o(){var r;for(r=m.getBody().lastChild;r&&r.nodeType==3&&!r.nodeValue.length;r=r.previousSibling){}if(r&&r.nodeName=="TABLE"){m.dom.add(m.getBody(),"p",null,'<br mce_bogus="1" />')}}if(c.isGecko){m.onKeyDown.add(function(s,u){var r,t,v=s.dom;if(u.keyCode==37||u.keyCode==38){r=s.selection.getRng();t=v.getParent(r.startContainer,"table");if(t&&s.getBody().firstChild==t){if(b(r,t)){r=v.createRng();r.setStartBefore(t);r.setEndBefore(t);s.selection.setRng(r);u.preventDefault()}}}})}m.onKeyUp.add(o);m.onSetContent.add(o);m.onVisualAid.add(o);m.onPreProcess.add(function(r,t){var s=t.node.lastChild;if(s&&s.childNodes.length==1&&s.firstChild.nodeName=="BR"){r.dom.remove(s)}});o()}});d({mceTableSplitCells:function(l){l.split()},mceTableMergeCells:function(m){var n,o,l;l=f.dom.getParent(f.selection.getNode(),"th,td");if(l){n=l.rowSpan;o=l.colSpan}if(!f.dom.select("td.mceSelected,th.mceSelected").length){e.open({url:g+"/merge_cells.htm",width:240+parseInt(f.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(f.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:n,cols:o,onaction:function(p){m.merge(l,p.cols,p.rows)},plugin_url:g})}else{m.merge()}},mceTableInsertRowBefore:function(l){l.insertRow(true)},mceTableInsertRowAfter:function(l){l.insertRow()},mceTableInsertColBefore:function(l){l.insertCol(true)},mceTableInsertColAfter:function(l){l.insertCol()},mceTableDeleteCol:function(l){l.deleteCols()},mceTableDeleteRow:function(l){l.deleteRows()},mceTableCutRow:function(l){k=l.cutRows()},mceTableCopyRow:function(l){k=l.copyRows()},mceTablePasteRowBefore:function(l){l.pasteRows(k,true)},mceTablePasteRowAfter:function(l){l.pasteRows(k)},mceTableDelete:function(l){l.deleteTable()}},function(m,l){f.addCommand(l,function(){var n=j();if(n){m(n);f.execCommand("mceRepaint");h()}})});d({mceInsertTable:function(l){e.open({url:g+"/table.htm",width:400+parseInt(f.getLang("table.table_delta_width",0)),height:320+parseInt(f.getLang("table.table_delta_height",0)),inline:1},{plugin_url:g,action:l?l.action:0})},mceTableRowProps:function(){e.open({url:g+"/row.htm",width:400+parseInt(f.getLang("table.rowprops_delta_width",0)),height:295+parseInt(f.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:g})},mceTableCellProps:function(){e.open({url:g+"/cell.htm",width:400+parseInt(f.getLang("table.cellprops_delta_width",0)),height:295+parseInt(f.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:g})}},function(m,l){f.addCommand(l,function(n,o){m(o)})})}});c.PluginManager.add("table",c.plugins.TablePlugin)})(tinymce);
|
table/js/cell.js
ADDED
@@ -0,0 +1,286 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCEPopup.requireLangPack();
|
2 |
+
|
3 |
+
var ed;
|
4 |
+
|
5 |
+
function init() {
|
6 |
+
ed = tinyMCEPopup.editor;
|
7 |
+
tinyMCEPopup.resizeToInnerSize();
|
8 |
+
|
9 |
+
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
|
10 |
+
document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
|
11 |
+
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor')
|
12 |
+
|
13 |
+
var inst = ed;
|
14 |
+
var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th");
|
15 |
+
var formObj = document.forms[0];
|
16 |
+
var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style"));
|
17 |
+
|
18 |
+
// Get table cell data
|
19 |
+
var celltype = tdElm.nodeName.toLowerCase();
|
20 |
+
var align = ed.dom.getAttrib(tdElm, 'align');
|
21 |
+
var valign = ed.dom.getAttrib(tdElm, 'valign');
|
22 |
+
var width = trimSize(getStyle(tdElm, 'width', 'width'));
|
23 |
+
var height = trimSize(getStyle(tdElm, 'height', 'height'));
|
24 |
+
var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor'));
|
25 |
+
var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor'));
|
26 |
+
var className = ed.dom.getAttrib(tdElm, 'class');
|
27 |
+
var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
|
28 |
+
var id = ed.dom.getAttrib(tdElm, 'id');
|
29 |
+
var lang = ed.dom.getAttrib(tdElm, 'lang');
|
30 |
+
var dir = ed.dom.getAttrib(tdElm, 'dir');
|
31 |
+
var scope = ed.dom.getAttrib(tdElm, 'scope');
|
32 |
+
|
33 |
+
// Setup form
|
34 |
+
addClassesToList('class', 'table_cell_styles');
|
35 |
+
TinyMCE_EditableSelects.init();
|
36 |
+
|
37 |
+
if (!ed.dom.hasClass(tdElm, 'mceSelected')) {
|
38 |
+
formObj.bordercolor.value = bordercolor;
|
39 |
+
formObj.bgcolor.value = bgcolor;
|
40 |
+
formObj.backgroundimage.value = backgroundimage;
|
41 |
+
formObj.width.value = width;
|
42 |
+
formObj.height.value = height;
|
43 |
+
formObj.id.value = id;
|
44 |
+
formObj.lang.value = lang;
|
45 |
+
formObj.style.value = ed.dom.serializeStyle(st);
|
46 |
+
selectByValue(formObj, 'align', align);
|
47 |
+
selectByValue(formObj, 'valign', valign);
|
48 |
+
selectByValue(formObj, 'class', className, true, true);
|
49 |
+
selectByValue(formObj, 'celltype', celltype);
|
50 |
+
selectByValue(formObj, 'dir', dir);
|
51 |
+
selectByValue(formObj, 'scope', scope);
|
52 |
+
|
53 |
+
// Resize some elements
|
54 |
+
if (isVisible('backgroundimagebrowser'))
|
55 |
+
document.getElementById('backgroundimage').style.width = '180px';
|
56 |
+
|
57 |
+
updateColor('bordercolor_pick', 'bordercolor');
|
58 |
+
updateColor('bgcolor_pick', 'bgcolor');
|
59 |
+
} else
|
60 |
+
tinyMCEPopup.dom.hide('action');
|
61 |
+
}
|
62 |
+
|
63 |
+
function updateAction() {
|
64 |
+
var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0];
|
65 |
+
|
66 |
+
tinyMCEPopup.restoreSelection();
|
67 |
+
el = ed.selection.getStart();
|
68 |
+
tdElm = ed.dom.getParent(el, "td,th");
|
69 |
+
trElm = ed.dom.getParent(el, "tr");
|
70 |
+
tableElm = ed.dom.getParent(el, "table");
|
71 |
+
|
72 |
+
// Cell is selected
|
73 |
+
if (ed.dom.hasClass(tdElm, 'mceSelected')) {
|
74 |
+
// Update all selected sells
|
75 |
+
tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) {
|
76 |
+
updateCell(td);
|
77 |
+
});
|
78 |
+
|
79 |
+
ed.addVisual();
|
80 |
+
ed.nodeChanged();
|
81 |
+
inst.execCommand('mceEndUndoLevel');
|
82 |
+
tinyMCEPopup.close();
|
83 |
+
return;
|
84 |
+
}
|
85 |
+
|
86 |
+
ed.execCommand('mceBeginUndoLevel');
|
87 |
+
|
88 |
+
switch (getSelectValue(formObj, 'action')) {
|
89 |
+
case "cell":
|
90 |
+
var celltype = getSelectValue(formObj, 'celltype');
|
91 |
+
var scope = getSelectValue(formObj, 'scope');
|
92 |
+
|
93 |
+
function doUpdate(s) {
|
94 |
+
if (s) {
|
95 |
+
updateCell(tdElm);
|
96 |
+
|
97 |
+
ed.addVisual();
|
98 |
+
ed.nodeChanged();
|
99 |
+
inst.execCommand('mceEndUndoLevel');
|
100 |
+
tinyMCEPopup.close();
|
101 |
+
}
|
102 |
+
};
|
103 |
+
|
104 |
+
if (ed.getParam("accessibility_warnings", 1)) {
|
105 |
+
if (celltype == "th" && scope == "")
|
106 |
+
tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate);
|
107 |
+
else
|
108 |
+
doUpdate(1);
|
109 |
+
|
110 |
+
return;
|
111 |
+
}
|
112 |
+
|
113 |
+
updateCell(tdElm);
|
114 |
+
break;
|
115 |
+
|
116 |
+
case "row":
|
117 |
+
var cell = trElm.firstChild;
|
118 |
+
|
119 |
+
if (cell.nodeName != "TD" && cell.nodeName != "TH")
|
120 |
+
cell = nextCell(cell);
|
121 |
+
|
122 |
+
do {
|
123 |
+
cell = updateCell(cell, true);
|
124 |
+
} while ((cell = nextCell(cell)) != null);
|
125 |
+
|
126 |
+
break;
|
127 |
+
|
128 |
+
case "all":
|
129 |
+
var rows = tableElm.getElementsByTagName("tr");
|
130 |
+
|
131 |
+
for (var i=0; i<rows.length; i++) {
|
132 |
+
var cell = rows[i].firstChild;
|
133 |
+
|
134 |
+
if (cell.nodeName != "TD" && cell.nodeName != "TH")
|
135 |
+
cell = nextCell(cell);
|
136 |
+
|
137 |
+
do {
|
138 |
+
cell = updateCell(cell, true);
|
139 |
+
} while ((cell = nextCell(cell)) != null);
|
140 |
+
}
|
141 |
+
|
142 |
+
break;
|
143 |
+
}
|
144 |
+
|
145 |
+
ed.addVisual();
|
146 |
+
ed.nodeChanged();
|
147 |
+
inst.execCommand('mceEndUndoLevel');
|
148 |
+
tinyMCEPopup.close();
|
149 |
+
}
|
150 |
+
|
151 |
+
function nextCell(elm) {
|
152 |
+
while ((elm = elm.nextSibling) != null) {
|
153 |
+
if (elm.nodeName == "TD" || elm.nodeName == "TH")
|
154 |
+
return elm;
|
155 |
+
}
|
156 |
+
|
157 |
+
return null;
|
158 |
+
}
|
159 |
+
|
160 |
+
function updateCell(td, skip_id) {
|
161 |
+
var inst = ed;
|
162 |
+
var formObj = document.forms[0];
|
163 |
+
var curCellType = td.nodeName.toLowerCase();
|
164 |
+
var celltype = getSelectValue(formObj, 'celltype');
|
165 |
+
var doc = inst.getDoc();
|
166 |
+
var dom = ed.dom;
|
167 |
+
|
168 |
+
if (!skip_id)
|
169 |
+
td.setAttribute('id', formObj.id.value);
|
170 |
+
|
171 |
+
td.setAttribute('align', formObj.align.value);
|
172 |
+
td.setAttribute('vAlign', formObj.valign.value);
|
173 |
+
td.setAttribute('lang', formObj.lang.value);
|
174 |
+
td.setAttribute('dir', getSelectValue(formObj, 'dir'));
|
175 |
+
td.setAttribute('style', ed.dom.serializeStyle(ed.dom.parseStyle(formObj.style.value)));
|
176 |
+
td.setAttribute('scope', formObj.scope.value);
|
177 |
+
ed.dom.setAttrib(td, 'class', getSelectValue(formObj, 'class'));
|
178 |
+
|
179 |
+
// Clear deprecated attributes
|
180 |
+
ed.dom.setAttrib(td, 'width', '');
|
181 |
+
ed.dom.setAttrib(td, 'height', '');
|
182 |
+
ed.dom.setAttrib(td, 'bgColor', '');
|
183 |
+
ed.dom.setAttrib(td, 'borderColor', '');
|
184 |
+
ed.dom.setAttrib(td, 'background', '');
|
185 |
+
|
186 |
+
// Set styles
|
187 |
+
td.style.width = getCSSSize(formObj.width.value);
|
188 |
+
td.style.height = getCSSSize(formObj.height.value);
|
189 |
+
if (formObj.bordercolor.value != "") {
|
190 |
+
td.style.borderColor = formObj.bordercolor.value;
|
191 |
+
td.style.borderStyle = td.style.borderStyle == "" ? "solid" : td.style.borderStyle;
|
192 |
+
td.style.borderWidth = td.style.borderWidth == "" ? "1px" : td.style.borderWidth;
|
193 |
+
} else
|
194 |
+
td.style.borderColor = '';
|
195 |
+
|
196 |
+
td.style.backgroundColor = formObj.bgcolor.value;
|
197 |
+
|
198 |
+
if (formObj.backgroundimage.value != "")
|
199 |
+
td.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
|
200 |
+
else
|
201 |
+
td.style.backgroundImage = '';
|
202 |
+
|
203 |
+
if (curCellType != celltype) {
|
204 |
+
// changing to a different node type
|
205 |
+
var newCell = doc.createElement(celltype);
|
206 |
+
|
207 |
+
for (var c=0; c<td.childNodes.length; c++)
|
208 |
+
newCell.appendChild(td.childNodes[c].cloneNode(1));
|
209 |
+
|
210 |
+
for (var a=0; a<td.attributes.length; a++)
|
211 |
+
ed.dom.setAttrib(newCell, td.attributes[a].name, ed.dom.getAttrib(td, td.attributes[a].name));
|
212 |
+
|
213 |
+
td.parentNode.replaceChild(newCell, td);
|
214 |
+
td = newCell;
|
215 |
+
}
|
216 |
+
|
217 |
+
dom.setAttrib(td, 'style', dom.serializeStyle(dom.parseStyle(td.style.cssText)));
|
218 |
+
|
219 |
+
return td;
|
220 |
+
}
|
221 |
+
|
222 |
+
function changedBackgroundImage() {
|
223 |
+
var formObj = document.forms[0];
|
224 |
+
var st = ed.dom.parseStyle(formObj.style.value);
|
225 |
+
|
226 |
+
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
|
227 |
+
|
228 |
+
formObj.style.value = ed.dom.serializeStyle(st);
|
229 |
+
}
|
230 |
+
|
231 |
+
function changedSize() {
|
232 |
+
var formObj = document.forms[0];
|
233 |
+
var st = ed.dom.parseStyle(formObj.style.value);
|
234 |
+
|
235 |
+
var width = formObj.width.value;
|
236 |
+
if (width != "")
|
237 |
+
st['width'] = getCSSSize(width);
|
238 |
+
else
|
239 |
+
st['width'] = "";
|
240 |
+
|
241 |
+
var height = formObj.height.value;
|
242 |
+
if (height != "")
|
243 |
+
st['height'] = getCSSSize(height);
|
244 |
+
else
|
245 |
+
st['height'] = "";
|
246 |
+
|
247 |
+
formObj.style.value = ed.dom.serializeStyle(st);
|
248 |
+
}
|
249 |
+
|
250 |
+
function changedColor() {
|
251 |
+
var formObj = document.forms[0];
|
252 |
+
var st = ed.dom.parseStyle(formObj.style.value);
|
253 |
+
|
254 |
+
st['background-color'] = formObj.bgcolor.value;
|
255 |
+
st['border-color'] = formObj.bordercolor.value;
|
256 |
+
|
257 |
+
formObj.style.value = ed.dom.serializeStyle(st);
|
258 |
+
}
|
259 |
+
|
260 |
+
function changedStyle() {
|
261 |
+
var formObj = document.forms[0];
|
262 |
+
var st = ed.dom.parseStyle(formObj.style.value);
|
263 |
+
|
264 |
+
if (st['background-image'])
|
265 |
+
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
|
266 |
+
else
|
267 |
+
formObj.backgroundimage.value = '';
|
268 |
+
|
269 |
+
if (st['width'])
|
270 |
+
formObj.width.value = trimSize(st['width']);
|
271 |
+
|
272 |
+
if (st['height'])
|
273 |
+
formObj.height.value = trimSize(st['height']);
|
274 |
+
|
275 |
+
if (st['background-color']) {
|
276 |
+
formObj.bgcolor.value = st['background-color'];
|
277 |
+
updateColor('bgcolor_pick','bgcolor');
|
278 |
+
}
|
279 |
+
|
280 |
+
if (st['border-color']) {
|
281 |
+
formObj.bordercolor.value = st['border-color'];
|
282 |
+
updateColor('bordercolor_pick','bordercolor');
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
tinyMCEPopup.onInit.add(init);
|
table/js/merge_cells.js
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCEPopup.requireLangPack();
|
2 |
+
|
3 |
+
var MergeCellsDialog = {
|
4 |
+
init : function() {
|
5 |
+
var f = document.forms[0];
|
6 |
+
|
7 |
+
f.numcols.value = tinyMCEPopup.getWindowArg('cols', 1);
|
8 |
+
f.numrows.value = tinyMCEPopup.getWindowArg('rows', 1);
|
9 |
+
},
|
10 |
+
|
11 |
+
merge : function() {
|
12 |
+
var func, f = document.forms[0];
|
13 |
+
|
14 |
+
tinyMCEPopup.restoreSelection();
|
15 |
+
|
16 |
+
func = tinyMCEPopup.getWindowArg('onaction');
|
17 |
+
|
18 |
+
func({
|
19 |
+
cols : f.numcols.value,
|
20 |
+
rows : f.numrows.value
|
21 |
+
});
|
22 |
+
|
23 |
+
tinyMCEPopup.close();
|
24 |
+
}
|
25 |
+
};
|
26 |
+
|
27 |
+
tinyMCEPopup.onInit.add(MergeCellsDialog.init, MergeCellsDialog);
|
table/js/row.js
ADDED
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCEPopup.requireLangPack();
|
2 |
+
|
3 |
+
function init() {
|
4 |
+
tinyMCEPopup.resizeToInnerSize();
|
5 |
+
|
6 |
+
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
|
7 |
+
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
|
8 |
+
|
9 |
+
var inst = tinyMCEPopup.editor;
|
10 |
+
var dom = inst.dom;
|
11 |
+
var trElm = dom.getParent(inst.selection.getStart(), "tr");
|
12 |
+
var formObj = document.forms[0];
|
13 |
+
var st = dom.parseStyle(dom.getAttrib(trElm, "style"));
|
14 |
+
|
15 |
+
// Get table row data
|
16 |
+
var rowtype = trElm.parentNode.nodeName.toLowerCase();
|
17 |
+
var align = dom.getAttrib(trElm, 'align');
|
18 |
+
var valign = dom.getAttrib(trElm, 'valign');
|
19 |
+
var height = trimSize(getStyle(trElm, 'height', 'height'));
|
20 |
+
var className = dom.getAttrib(trElm, 'class');
|
21 |
+
var bgcolor = convertRGBToHex(getStyle(trElm, 'bgcolor', 'backgroundColor'));
|
22 |
+
var backgroundimage = getStyle(trElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
|
23 |
+
var id = dom.getAttrib(trElm, 'id');
|
24 |
+
var lang = dom.getAttrib(trElm, 'lang');
|
25 |
+
var dir = dom.getAttrib(trElm, 'dir');
|
26 |
+
|
27 |
+
selectByValue(formObj, 'rowtype', rowtype);
|
28 |
+
|
29 |
+
// Any cells selected
|
30 |
+
if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
|
31 |
+
// Setup form
|
32 |
+
addClassesToList('class', 'table_row_styles');
|
33 |
+
TinyMCE_EditableSelects.init();
|
34 |
+
|
35 |
+
formObj.bgcolor.value = bgcolor;
|
36 |
+
formObj.backgroundimage.value = backgroundimage;
|
37 |
+
formObj.height.value = height;
|
38 |
+
formObj.id.value = id;
|
39 |
+
formObj.lang.value = lang;
|
40 |
+
formObj.style.value = dom.serializeStyle(st);
|
41 |
+
selectByValue(formObj, 'align', align);
|
42 |
+
selectByValue(formObj, 'valign', valign);
|
43 |
+
selectByValue(formObj, 'class', className, true, true);
|
44 |
+
selectByValue(formObj, 'dir', dir);
|
45 |
+
|
46 |
+
// Resize some elements
|
47 |
+
if (isVisible('backgroundimagebrowser'))
|
48 |
+
document.getElementById('backgroundimage').style.width = '180px';
|
49 |
+
|
50 |
+
updateColor('bgcolor_pick', 'bgcolor');
|
51 |
+
} else
|
52 |
+
tinyMCEPopup.dom.hide('action');
|
53 |
+
}
|
54 |
+
|
55 |
+
function updateAction() {
|
56 |
+
var inst = tinyMCEPopup.editor, dom = inst.dom, trElm, tableElm, formObj = document.forms[0];
|
57 |
+
var action = getSelectValue(formObj, 'action');
|
58 |
+
|
59 |
+
tinyMCEPopup.restoreSelection();
|
60 |
+
trElm = dom.getParent(inst.selection.getStart(), "tr");
|
61 |
+
tableElm = dom.getParent(inst.selection.getStart(), "table");
|
62 |
+
|
63 |
+
// Update all selected rows
|
64 |
+
if (dom.select('td.mceSelected,th.mceSelected', trElm).length > 0) {
|
65 |
+
tinymce.each(tableElm.rows, function(tr) {
|
66 |
+
var i;
|
67 |
+
|
68 |
+
for (i = 0; i < tr.cells.length; i++) {
|
69 |
+
if (dom.hasClass(tr.cells[i], 'mceSelected')) {
|
70 |
+
updateRow(tr, true);
|
71 |
+
return;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
});
|
75 |
+
|
76 |
+
inst.addVisual();
|
77 |
+
inst.nodeChanged();
|
78 |
+
inst.execCommand('mceEndUndoLevel');
|
79 |
+
tinyMCEPopup.close();
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
+
inst.execCommand('mceBeginUndoLevel');
|
84 |
+
|
85 |
+
switch (action) {
|
86 |
+
case "row":
|
87 |
+
updateRow(trElm);
|
88 |
+
break;
|
89 |
+
|
90 |
+
case "all":
|
91 |
+
var rows = tableElm.getElementsByTagName("tr");
|
92 |
+
|
93 |
+
for (var i=0; i<rows.length; i++)
|
94 |
+
updateRow(rows[i], true);
|
95 |
+
|
96 |
+
break;
|
97 |
+
|
98 |
+
case "odd":
|
99 |
+
case "even":
|
100 |
+
var rows = tableElm.getElementsByTagName("tr");
|
101 |
+
|
102 |
+
for (var i=0; i<rows.length; i++) {
|
103 |
+
if ((i % 2 == 0 && action == "odd") || (i % 2 != 0 && action == "even"))
|
104 |
+
updateRow(rows[i], true, true);
|
105 |
+
}
|
106 |
+
|
107 |
+
break;
|
108 |
+
}
|
109 |
+
|
110 |
+
inst.addVisual();
|
111 |
+
inst.nodeChanged();
|
112 |
+
inst.execCommand('mceEndUndoLevel');
|
113 |
+
tinyMCEPopup.close();
|
114 |
+
}
|
115 |
+
|
116 |
+
function updateRow(tr_elm, skip_id, skip_parent) {
|
117 |
+
var inst = tinyMCEPopup.editor;
|
118 |
+
var formObj = document.forms[0];
|
119 |
+
var dom = inst.dom;
|
120 |
+
var curRowType = tr_elm.parentNode.nodeName.toLowerCase();
|
121 |
+
var rowtype = getSelectValue(formObj, 'rowtype');
|
122 |
+
var doc = inst.getDoc();
|
123 |
+
|
124 |
+
// Update row element
|
125 |
+
if (!skip_id)
|
126 |
+
tr_elm.setAttribute('id', formObj.id.value);
|
127 |
+
|
128 |
+
tr_elm.setAttribute('align', getSelectValue(formObj, 'align'));
|
129 |
+
tr_elm.setAttribute('vAlign', getSelectValue(formObj, 'valign'));
|
130 |
+
tr_elm.setAttribute('lang', formObj.lang.value);
|
131 |
+
tr_elm.setAttribute('dir', getSelectValue(formObj, 'dir'));
|
132 |
+
tr_elm.setAttribute('style', dom.serializeStyle(dom.parseStyle(formObj.style.value)));
|
133 |
+
dom.setAttrib(tr_elm, 'class', getSelectValue(formObj, 'class'));
|
134 |
+
|
135 |
+
// Clear deprecated attributes
|
136 |
+
tr_elm.setAttribute('background', '');
|
137 |
+
tr_elm.setAttribute('bgColor', '');
|
138 |
+
tr_elm.setAttribute('height', '');
|
139 |
+
|
140 |
+
// Set styles
|
141 |
+
tr_elm.style.height = getCSSSize(formObj.height.value);
|
142 |
+
tr_elm.style.backgroundColor = formObj.bgcolor.value;
|
143 |
+
|
144 |
+
if (formObj.backgroundimage.value != "")
|
145 |
+
tr_elm.style.backgroundImage = "url('" + formObj.backgroundimage.value + "')";
|
146 |
+
else
|
147 |
+
tr_elm.style.backgroundImage = '';
|
148 |
+
|
149 |
+
// Setup new rowtype
|
150 |
+
if (curRowType != rowtype && !skip_parent) {
|
151 |
+
// first, clone the node we are working on
|
152 |
+
var newRow = tr_elm.cloneNode(1);
|
153 |
+
|
154 |
+
// next, find the parent of its new destination (creating it if necessary)
|
155 |
+
var theTable = dom.getParent(tr_elm, "table");
|
156 |
+
var dest = rowtype;
|
157 |
+
var newParent = null;
|
158 |
+
for (var i = 0; i < theTable.childNodes.length; i++) {
|
159 |
+
if (theTable.childNodes[i].nodeName.toLowerCase() == dest)
|
160 |
+
newParent = theTable.childNodes[i];
|
161 |
+
}
|
162 |
+
|
163 |
+
if (newParent == null) {
|
164 |
+
newParent = doc.createElement(dest);
|
165 |
+
|
166 |
+
if (dest == "thead") {
|
167 |
+
if (theTable.firstChild.nodeName == 'CAPTION')
|
168 |
+
inst.dom.insertAfter(newParent, theTable.firstChild);
|
169 |
+
else
|
170 |
+
theTable.insertBefore(newParent, theTable.firstChild);
|
171 |
+
} else
|
172 |
+
theTable.appendChild(newParent);
|
173 |
+
}
|
174 |
+
|
175 |
+
// append the row to the new parent
|
176 |
+
newParent.appendChild(newRow);
|
177 |
+
|
178 |
+
// remove the original
|
179 |
+
tr_elm.parentNode.removeChild(tr_elm);
|
180 |
+
|
181 |
+
// set tr_elm to the new node
|
182 |
+
tr_elm = newRow;
|
183 |
+
}
|
184 |
+
|
185 |
+
dom.setAttrib(tr_elm, 'style', dom.serializeStyle(dom.parseStyle(tr_elm.style.cssText)));
|
186 |
+
}
|
187 |
+
|
188 |
+
function changedBackgroundImage() {
|
189 |
+
var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
|
190 |
+
var st = dom.parseStyle(formObj.style.value);
|
191 |
+
|
192 |
+
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
|
193 |
+
|
194 |
+
formObj.style.value = dom.serializeStyle(st);
|
195 |
+
}
|
196 |
+
|
197 |
+
function changedStyle() {
|
198 |
+
var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
|
199 |
+
var st = dom.parseStyle(formObj.style.value);
|
200 |
+
|
201 |
+
if (st['background-image'])
|
202 |
+
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1");
|
203 |
+
else
|
204 |
+
formObj.backgroundimage.value = '';
|
205 |
+
|
206 |
+
if (st['height'])
|
207 |
+
formObj.height.value = trimSize(st['height']);
|
208 |
+
|
209 |
+
if (st['background-color']) {
|
210 |
+
formObj.bgcolor.value = st['background-color'];
|
211 |
+
updateColor('bgcolor_pick','bgcolor');
|
212 |
+
}
|
213 |
+
}
|
214 |
+
|
215 |
+
function changedSize() {
|
216 |
+
var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
|
217 |
+
var st = dom.parseStyle(formObj.style.value);
|
218 |
+
|
219 |
+
var height = formObj.height.value;
|
220 |
+
if (height != "")
|
221 |
+
st['height'] = getCSSSize(height);
|
222 |
+
else
|
223 |
+
st['height'] = "";
|
224 |
+
|
225 |
+
formObj.style.value = dom.serializeStyle(st);
|
226 |
+
}
|
227 |
+
|
228 |
+
function changedColor() {
|
229 |
+
var formObj = document.forms[0], dom = tinyMCEPopup.editor.dom;
|
230 |
+
var st = dom.parseStyle(formObj.style.value);
|
231 |
+
|
232 |
+
st['background-color'] = formObj.bgcolor.value;
|
233 |
+
|
234 |
+
formObj.style.value = dom.serializeStyle(st);
|
235 |
+
}
|
236 |
+
|
237 |
+
tinyMCEPopup.onInit.add(init);
|
table/js/table.js
ADDED
@@ -0,0 +1,454 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCEPopup.requireLangPack();
|
2 |
+
|
3 |
+
var action, orgTableWidth, orgTableHeight, dom = tinyMCEPopup.editor.dom;
|
4 |
+
|
5 |
+
function insertTable() {
|
6 |
+
var formObj = document.forms[0];
|
7 |
+
var inst = tinyMCEPopup.editor, dom = inst.dom;
|
8 |
+
var cols = 2, rows = 2, border = 0, cellpadding = -1, cellspacing = -1, align, width, height, className, caption, frame, rules;
|
9 |
+
var html = '', capEl, elm;
|
10 |
+
var cellLimit, rowLimit, colLimit;
|
11 |
+
|
12 |
+
tinyMCEPopup.restoreSelection();
|
13 |
+
|
14 |
+
if (!AutoValidator.validate(formObj)) {
|
15 |
+
tinyMCEPopup.alert(inst.getLang('invalid_data'));
|
16 |
+
return false;
|
17 |
+
}
|
18 |
+
|
19 |
+
elm = dom.getParent(inst.selection.getNode(), 'table');
|
20 |
+
|
21 |
+
// Get form data
|
22 |
+
cols = formObj.elements['cols'].value;
|
23 |
+
rows = formObj.elements['rows'].value;
|
24 |
+
border = formObj.elements['border'].value != "" ? formObj.elements['border'].value : 0;
|
25 |
+
cellpadding = formObj.elements['cellpadding'].value != "" ? formObj.elements['cellpadding'].value : "";
|
26 |
+
cellspacing = formObj.elements['cellspacing'].value != "" ? formObj.elements['cellspacing'].value : "";
|
27 |
+
align = getSelectValue(formObj, "align");
|
28 |
+
frame = getSelectValue(formObj, "tframe");
|
29 |
+
rules = getSelectValue(formObj, "rules");
|
30 |
+
width = formObj.elements['width'].value;
|
31 |
+
height = formObj.elements['height'].value;
|
32 |
+
bordercolor = formObj.elements['bordercolor'].value;
|
33 |
+
bgcolor = formObj.elements['bgcolor'].value;
|
34 |
+
className = getSelectValue(formObj, "class");
|
35 |
+
id = formObj.elements['id'].value;
|
36 |
+
summary = formObj.elements['summary'].value;
|
37 |
+
style = formObj.elements['style'].value;
|
38 |
+
dir = formObj.elements['dir'].value;
|
39 |
+
lang = formObj.elements['lang'].value;
|
40 |
+
background = formObj.elements['backgroundimage'].value;
|
41 |
+
caption = formObj.elements['caption'].checked;
|
42 |
+
|
43 |
+
cellLimit = tinyMCEPopup.getParam('table_cell_limit', false);
|
44 |
+
rowLimit = tinyMCEPopup.getParam('table_row_limit', false);
|
45 |
+
colLimit = tinyMCEPopup.getParam('table_col_limit', false);
|
46 |
+
|
47 |
+
// Validate table size
|
48 |
+
if (colLimit && cols > colLimit) {
|
49 |
+
tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit));
|
50 |
+
return false;
|
51 |
+
} else if (rowLimit && rows > rowLimit) {
|
52 |
+
tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit));
|
53 |
+
return false;
|
54 |
+
} else if (cellLimit && cols * rows > cellLimit) {
|
55 |
+
tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit));
|
56 |
+
return false;
|
57 |
+
}
|
58 |
+
|
59 |
+
// Update table
|
60 |
+
if (action == "update") {
|
61 |
+
inst.execCommand('mceBeginUndoLevel');
|
62 |
+
|
63 |
+
dom.setAttrib(elm, 'cellPadding', cellpadding, true);
|
64 |
+
dom.setAttrib(elm, 'cellSpacing', cellspacing, true);
|
65 |
+
dom.setAttrib(elm, 'border', border);
|
66 |
+
dom.setAttrib(elm, 'align', align);
|
67 |
+
dom.setAttrib(elm, 'frame', frame);
|
68 |
+
dom.setAttrib(elm, 'rules', rules);
|
69 |
+
dom.setAttrib(elm, 'class', className);
|
70 |
+
dom.setAttrib(elm, 'style', style);
|
71 |
+
dom.setAttrib(elm, 'id', id);
|
72 |
+
dom.setAttrib(elm, 'summary', summary);
|
73 |
+
dom.setAttrib(elm, 'dir', dir);
|
74 |
+
dom.setAttrib(elm, 'lang', lang);
|
75 |
+
|
76 |
+
capEl = inst.dom.select('caption', elm)[0];
|
77 |
+
|
78 |
+
if (capEl && !caption)
|
79 |
+
capEl.parentNode.removeChild(capEl);
|
80 |
+
|
81 |
+
if (!capEl && caption) {
|
82 |
+
capEl = elm.ownerDocument.createElement('caption');
|
83 |
+
|
84 |
+
if (!tinymce.isIE)
|
85 |
+
capEl.innerHTML = '<br _mce_bogus="1"/>';
|
86 |
+
|
87 |
+
elm.insertBefore(capEl, elm.firstChild);
|
88 |
+
}
|
89 |
+
|
90 |
+
if (width && inst.settings.inline_styles) {
|
91 |
+
dom.setStyle(elm, 'width', width);
|
92 |
+
dom.setAttrib(elm, 'width', '');
|
93 |
+
} else {
|
94 |
+
dom.setAttrib(elm, 'width', width, true);
|
95 |
+
dom.setStyle(elm, 'width', '');
|
96 |
+
}
|
97 |
+
|
98 |
+
// Remove these since they are not valid XHTML
|
99 |
+
dom.setAttrib(elm, 'borderColor', '');
|
100 |
+
dom.setAttrib(elm, 'bgColor', '');
|
101 |
+
dom.setAttrib(elm, 'background', '');
|
102 |
+
|
103 |
+
if (height && inst.settings.inline_styles) {
|
104 |
+
dom.setStyle(elm, 'height', height);
|
105 |
+
dom.setAttrib(elm, 'height', '');
|
106 |
+
} else {
|
107 |
+
dom.setAttrib(elm, 'height', height, true);
|
108 |
+
dom.setStyle(elm, 'height', '');
|
109 |
+
}
|
110 |
+
|
111 |
+
if (background != '')
|
112 |
+
elm.style.backgroundImage = "url('" + background + "')";
|
113 |
+
else
|
114 |
+
elm.style.backgroundImage = '';
|
115 |
+
|
116 |
+
/* if (tinyMCEPopup.getParam("inline_styles")) {
|
117 |
+
if (width != '')
|
118 |
+
elm.style.width = getCSSSize(width);
|
119 |
+
}*/
|
120 |
+
|
121 |
+
if (bordercolor != "") {
|
122 |
+
elm.style.borderColor = bordercolor;
|
123 |
+
elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle;
|
124 |
+
elm.style.borderWidth = border == "" ? "1px" : border;
|
125 |
+
} else
|
126 |
+
elm.style.borderColor = '';
|
127 |
+
|
128 |
+
elm.style.backgroundColor = bgcolor;
|
129 |
+
elm.style.height = getCSSSize(height);
|
130 |
+
|
131 |
+
inst.addVisual();
|
132 |
+
|
133 |
+
// Fix for stange MSIE align bug
|
134 |
+
//elm.outerHTML = elm.outerHTML;
|
135 |
+
|
136 |
+
inst.nodeChanged();
|
137 |
+
inst.execCommand('mceEndUndoLevel');
|
138 |
+
|
139 |
+
// Repaint if dimensions changed
|
140 |
+
if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight)
|
141 |
+
inst.execCommand('mceRepaint');
|
142 |
+
|
143 |
+
tinyMCEPopup.close();
|
144 |
+
return true;
|
145 |
+
}
|
146 |
+
|
147 |
+
// Create new table
|
148 |
+
html += '<table';
|
149 |
+
|
150 |
+
html += makeAttrib('id', id);
|
151 |
+
html += makeAttrib('border', border);
|
152 |
+
html += makeAttrib('cellpadding', cellpadding);
|
153 |
+
html += makeAttrib('cellspacing', cellspacing);
|
154 |
+
html += makeAttrib('_mce_new', '1');
|
155 |
+
|
156 |
+
if (width && inst.settings.inline_styles) {
|
157 |
+
if (style)
|
158 |
+
style += '; ';
|
159 |
+
|
160 |
+
// Force px
|
161 |
+
if (/^[0-9\.]+$/.test(width))
|
162 |
+
width += 'px';
|
163 |
+
|
164 |
+
style += 'width: ' + width;
|
165 |
+
} else
|
166 |
+
html += makeAttrib('width', width);
|
167 |
+
|
168 |
+
/* if (height) {
|
169 |
+
if (style)
|
170 |
+
style += '; ';
|
171 |
+
|
172 |
+
style += 'height: ' + height;
|
173 |
+
}*/
|
174 |
+
|
175 |
+
//html += makeAttrib('height', height);
|
176 |
+
//html += makeAttrib('bordercolor', bordercolor);
|
177 |
+
//html += makeAttrib('bgcolor', bgcolor);
|
178 |
+
html += makeAttrib('align', align);
|
179 |
+
html += makeAttrib('frame', frame);
|
180 |
+
html += makeAttrib('rules', rules);
|
181 |
+
html += makeAttrib('class', className);
|
182 |
+
html += makeAttrib('style', style);
|
183 |
+
html += makeAttrib('summary', summary);
|
184 |
+
html += makeAttrib('dir', dir);
|
185 |
+
html += makeAttrib('lang', lang);
|
186 |
+
html += '>';
|
187 |
+
|
188 |
+
if (caption) {
|
189 |
+
if (!tinymce.isIE)
|
190 |
+
html += '<caption><br _mce_bogus="1"/></caption>';
|
191 |
+
else
|
192 |
+
html += '<caption></caption>';
|
193 |
+
}
|
194 |
+
|
195 |
+
for (var y=0; y<rows; y++) {
|
196 |
+
html += "<tr>";
|
197 |
+
|
198 |
+
for (var x=0; x<cols; x++) {
|
199 |
+
if (!tinymce.isIE)
|
200 |
+
html += '<td><br _mce_bogus="1"/></td>';
|
201 |
+
else
|
202 |
+
html += '<td></td>';
|
203 |
+
}
|
204 |
+
|
205 |
+
html += "</tr>";
|
206 |
+
}
|
207 |
+
|
208 |
+
html += "</table>";
|
209 |
+
|
210 |
+
inst.execCommand('mceBeginUndoLevel');
|
211 |
+
|
212 |
+
// Move table
|
213 |
+
if (inst.settings.fix_table_elements) {
|
214 |
+
var patt = '';
|
215 |
+
|
216 |
+
inst.focus();
|
217 |
+
inst.selection.setContent('<br class="_mce_marker" />');
|
218 |
+
|
219 |
+
tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) {
|
220 |
+
if (patt)
|
221 |
+
patt += ',';
|
222 |
+
|
223 |
+
patt += n + ' ._mce_marker';
|
224 |
+
});
|
225 |
+
|
226 |
+
tinymce.each(inst.dom.select(patt), function(n) {
|
227 |
+
inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n);
|
228 |
+
});
|
229 |
+
|
230 |
+
dom.setOuterHTML(dom.select('br._mce_marker')[0], html);
|
231 |
+
} else
|
232 |
+
inst.execCommand('mceInsertContent', false, html);
|
233 |
+
|
234 |
+
tinymce.each(dom.select('table[_mce_new]'), function(node) {
|
235 |
+
var td = dom.select('td', node);
|
236 |
+
|
237 |
+
try {
|
238 |
+
// IE9 might fail to do this selection
|
239 |
+
inst.selection.select(td[0], true);
|
240 |
+
inst.selection.collapse();
|
241 |
+
} catch (ex) {
|
242 |
+
// Ignore
|
243 |
+
}
|
244 |
+
|
245 |
+
dom.setAttrib(node, '_mce_new', '');
|
246 |
+
});
|
247 |
+
|
248 |
+
inst.addVisual();
|
249 |
+
inst.execCommand('mceEndUndoLevel');
|
250 |
+
|
251 |
+
tinyMCEPopup.close();
|
252 |
+
}
|
253 |
+
|
254 |
+
function makeAttrib(attrib, value) {
|
255 |
+
var formObj = document.forms[0];
|
256 |
+
var valueElm = formObj.elements[attrib];
|
257 |
+
|
258 |
+
if (typeof(value) == "undefined" || value == null) {
|
259 |
+
value = "";
|
260 |
+
|
261 |
+
if (valueElm)
|
262 |
+
value = valueElm.value;
|
263 |
+
}
|
264 |
+
|
265 |
+
if (value == "")
|
266 |
+
return "";
|
267 |
+
|
268 |
+
// XML encode it
|
269 |
+
value = value.replace(/&/g, '&');
|
270 |
+
value = value.replace(/\"/g, '"');
|
271 |
+
value = value.replace(/</g, '<');
|
272 |
+
value = value.replace(/>/g, '>');
|
273 |
+
|
274 |
+
return ' ' + attrib + '="' + value + '"';
|
275 |
+
}
|
276 |
+
|
277 |
+
function init() {
|
278 |
+
tinyMCEPopup.resizeToInnerSize();
|
279 |
+
|
280 |
+
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
|
281 |
+
document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table');
|
282 |
+
document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor');
|
283 |
+
document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor');
|
284 |
+
|
285 |
+
var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', '');
|
286 |
+
var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = "";
|
287 |
+
var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = "";
|
288 |
+
var inst = tinyMCEPopup.editor, dom = inst.dom;
|
289 |
+
var formObj = document.forms[0];
|
290 |
+
var elm = dom.getParent(inst.selection.getNode(), "table");
|
291 |
+
|
292 |
+
action = tinyMCEPopup.getWindowArg('action');
|
293 |
+
|
294 |
+
if (!action)
|
295 |
+
action = elm ? "update" : "insert";
|
296 |
+
|
297 |
+
if (elm && action != "insert") {
|
298 |
+
var rowsAr = elm.rows;
|
299 |
+
var cols = 0;
|
300 |
+
for (var i=0; i<rowsAr.length; i++)
|
301 |
+
if (rowsAr[i].cells.length > cols)
|
302 |
+
cols = rowsAr[i].cells.length;
|
303 |
+
|
304 |
+
cols = cols;
|
305 |
+
rows = rowsAr.length;
|
306 |
+
|
307 |
+
st = dom.parseStyle(dom.getAttrib(elm, "style"));
|
308 |
+
border = trimSize(getStyle(elm, 'border', 'borderWidth'));
|
309 |
+
cellpadding = dom.getAttrib(elm, 'cellpadding', "");
|
310 |
+
cellspacing = dom.getAttrib(elm, 'cellspacing', "");
|
311 |
+
width = trimSize(getStyle(elm, 'width', 'width'));
|
312 |
+
height = trimSize(getStyle(elm, 'height', 'height'));
|
313 |
+
bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor'));
|
314 |
+
bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor'));
|
315 |
+
align = dom.getAttrib(elm, 'align', align);
|
316 |
+
frame = dom.getAttrib(elm, 'frame');
|
317 |
+
rules = dom.getAttrib(elm, 'rules');
|
318 |
+
className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, ''));
|
319 |
+
id = dom.getAttrib(elm, 'id');
|
320 |
+
summary = dom.getAttrib(elm, 'summary');
|
321 |
+
style = dom.serializeStyle(st);
|
322 |
+
dir = dom.getAttrib(elm, 'dir');
|
323 |
+
lang = dom.getAttrib(elm, 'lang');
|
324 |
+
background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
|
325 |
+
formObj.caption.checked = elm.getElementsByTagName('caption').length > 0;
|
326 |
+
|
327 |
+
orgTableWidth = width;
|
328 |
+
orgTableHeight = height;
|
329 |
+
|
330 |
+
action = "update";
|
331 |
+
formObj.insert.value = inst.getLang('update');
|
332 |
+
}
|
333 |
+
|
334 |
+
addClassesToList('class', "table_styles");
|
335 |
+
TinyMCE_EditableSelects.init();
|
336 |
+
|
337 |
+
// Update form
|
338 |
+
selectByValue(formObj, 'align', align);
|
339 |
+
selectByValue(formObj, 'tframe', frame);
|
340 |
+
selectByValue(formObj, 'rules', rules);
|
341 |
+
selectByValue(formObj, 'class', className, true, true);
|
342 |
+
formObj.cols.value = cols;
|
343 |
+
formObj.rows.value = rows;
|
344 |
+
formObj.border.value = border;
|
345 |
+
formObj.cellpadding.value = cellpadding;
|
346 |
+
formObj.cellspacing.value = cellspacing;
|
347 |
+
formObj.width.value = width;
|
348 |
+
formObj.height.value = height;
|
349 |
+
formObj.bordercolor.value = bordercolor;
|
350 |
+
formObj.bgcolor.value = bgcolor;
|
351 |
+
formObj.id.value = id;
|
352 |
+
formObj.summary.value = summary;
|
353 |
+
formObj.style.value = style;
|
354 |
+
formObj.dir.value = dir;
|
355 |
+
formObj.lang.value = lang;
|
356 |
+
formObj.backgroundimage.value = background;
|
357 |
+
|
358 |
+
updateColor('bordercolor_pick', 'bordercolor');
|
359 |
+
updateColor('bgcolor_pick', 'bgcolor');
|
360 |
+
|
361 |
+
// Resize some elements
|
362 |
+
if (isVisible('backgroundimagebrowser'))
|
363 |
+
document.getElementById('backgroundimage').style.width = '180px';
|
364 |
+
|
365 |
+
// Disable some fields in update mode
|
366 |
+
if (action == "update") {
|
367 |
+
formObj.cols.disabled = true;
|
368 |
+
formObj.rows.disabled = true;
|
369 |
+
}
|
370 |
+
}
|
371 |
+
|
372 |
+
function changedSize() {
|
373 |
+
var formObj = document.forms[0];
|
374 |
+
var st = dom.parseStyle(formObj.style.value);
|
375 |
+
|
376 |
+
/* var width = formObj.width.value;
|
377 |
+
if (width != "")
|
378 |
+
st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : "";
|
379 |
+
else
|
380 |
+
st['width'] = "";*/
|
381 |
+
|
382 |
+
var height = formObj.height.value;
|
383 |
+
if (height != "")
|
384 |
+
st['height'] = getCSSSize(height);
|
385 |
+
else
|
386 |
+
st['height'] = "";
|
387 |
+
|
388 |
+
formObj.style.value = dom.serializeStyle(st);
|
389 |
+
}
|
390 |
+
|
391 |
+
function changedBackgroundImage() {
|
392 |
+
var formObj = document.forms[0];
|
393 |
+
var st = dom.parseStyle(formObj.style.value);
|
394 |
+
|
395 |
+
st['background-image'] = "url('" + formObj.backgroundimage.value + "')";
|
396 |
+
|
397 |
+
formObj.style.value = dom.serializeStyle(st);
|
398 |
+
}
|
399 |
+
|
400 |
+
function changedBorder() {
|
401 |
+
var formObj = document.forms[0];
|
402 |
+
var st = dom.parseStyle(formObj.style.value);
|
403 |
+
|
404 |
+
// Update border width if the element has a color
|
405 |
+
if (formObj.border.value != "" && formObj.bordercolor.value != "")
|
406 |
+
st['border-width'] = formObj.border.value + "px";
|
407 |
+
|
408 |
+
formObj.style.value = dom.serializeStyle(st);
|
409 |
+
}
|
410 |
+
|
411 |
+
function changedColor() {
|
412 |
+
var formObj = document.forms[0];
|
413 |
+
var st = dom.parseStyle(formObj.style.value);
|
414 |
+
|
415 |
+
st['background-color'] = formObj.bgcolor.value;
|
416 |
+
|
417 |
+
if (formObj.bordercolor.value != "") {
|
418 |
+
st['border-color'] = formObj.bordercolor.value;
|
419 |
+
|
420 |
+
// Add border-width if it's missing
|
421 |
+
if (!st['border-width'])
|
422 |
+
st['border-width'] = formObj.border.value == "" ? "1px" : formObj.border.value + "px";
|
423 |
+
}
|
424 |
+
|
425 |
+
formObj.style.value = dom.serializeStyle(st);
|
426 |
+
}
|
427 |
+
|
428 |
+
function changedStyle() {
|
429 |
+
var formObj = document.forms[0];
|
430 |
+
var st = dom.parseStyle(formObj.style.value);
|
431 |
+
|
432 |
+
if (st['background-image'])
|
433 |
+
formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1");
|
434 |
+
else
|
435 |
+
formObj.backgroundimage.value = '';
|
436 |
+
|
437 |
+
if (st['width'])
|
438 |
+
formObj.width.value = trimSize(st['width']);
|
439 |
+
|
440 |
+
if (st['height'])
|
441 |
+
formObj.height.value = trimSize(st['height']);
|
442 |
+
|
443 |
+
if (st['background-color']) {
|
444 |
+
formObj.bgcolor.value = st['background-color'];
|
445 |
+
updateColor('bgcolor_pick','bgcolor');
|
446 |
+
}
|
447 |
+
|
448 |
+
if (st['border-color']) {
|
449 |
+
formObj.bordercolor.value = st['border-color'];
|
450 |
+
updateColor('bordercolor_pick','bordercolor');
|
451 |
+
}
|
452 |
+
}
|
453 |
+
|
454 |
+
tinyMCEPopup.onInit.add(init);
|
table/langs/en_dlg.js
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
tinyMCE.addI18n('en.table_dlg',{
|
2 |
+
general_tab:"General",
|
3 |
+
advanced_tab:"Advanced",
|
4 |
+
general_props:"General properties",
|
5 |
+
advanced_props:"Advanced properties",
|
6 |
+
rowtype:"Row in table part",
|
7 |
+
title:"Insert/Modify table",
|
8 |
+
width:"Width",
|
9 |
+
height:"Height",
|
10 |
+
cols:"Cols",
|
11 |
+
rows:"Rows",
|
12 |
+
cellspacing:"Cellspacing",
|
13 |
+
cellpadding:"Cellpadding",
|
14 |
+
border:"Border",
|
15 |
+
align:"Alignment",
|
16 |
+
align_default:"Default",
|
17 |
+
align_left:"Left",
|
18 |
+
align_right:"Right",
|
19 |
+
align_middle:"Center",
|
20 |
+
row_title:"Table row properties",
|
21 |
+
cell_title:"Table cell properties",
|
22 |
+
cell_type:"Cell type",
|
23 |
+
valign:"Vertical alignment",
|
24 |
+
align_top:"Top",
|
25 |
+
align_bottom:"Bottom",
|
26 |
+
bordercolor:"Border color",
|
27 |
+
bgcolor:"Background color",
|
28 |
+
merge_cells_title:"Merge table cells",
|
29 |
+
id:"Id",
|
30 |
+
style:"Style",
|
31 |
+
langdir:"Language direction",
|
32 |
+
langcode:"Language code",
|
33 |
+
mime:"Target MIME type",
|
34 |
+
ltr:"Left to right",
|
35 |
+
rtl:"Right to left",
|
36 |
+
bgimage:"Background image",
|
37 |
+
summary:"Summary",
|
38 |
+
td:"Data",
|
39 |
+
th:"Header",
|
40 |
+
cell_cell:"Update current cell",
|
41 |
+
cell_row:"Update all cells in row",
|
42 |
+
cell_all:"Update all cells in table",
|
43 |
+
row_row:"Update current row",
|
44 |
+
row_odd:"Update odd rows in table",
|
45 |
+
row_even:"Update even rows in table",
|
46 |
+
row_all:"Update all rows in table",
|
47 |
+
thead:"Table Head",
|
48 |
+
tbody:"Table Body",
|
49 |
+
tfoot:"Table Foot",
|
50 |
+
scope:"Scope",
|
51 |
+
rowgroup:"Row Group",
|
52 |
+
colgroup:"Col Group",
|
53 |
+
col_limit:"You've exceeded the maximum number of columns of {$cols}.",
|
54 |
+
row_limit:"You've exceeded the maximum number of rows of {$rows}.",
|
55 |
+
cell_limit:"You've exceeded the maximum number of cells of {$cells}.",
|
56 |
+
missing_scope:"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.",
|
57 |
+
caption:"Table caption",
|
58 |
+
frame:"Frame",
|
59 |
+
frame_none:"none",
|
60 |
+
frame_groups:"groups",
|
61 |
+
frame_rows:"rows",
|
62 |
+
frame_cols:"cols",
|
63 |
+
frame_all:"all",
|
64 |
+
rules:"Rules",
|
65 |
+
rules_void:"void",
|
66 |
+
rules_above:"above",
|
67 |
+
rules_below:"below",
|
68 |
+
rules_hsides:"hsides",
|
69 |
+
rules_lhs:"lhs",
|
70 |
+
rules_rhs:"rhs",
|
71 |
+
rules_vsides:"vsides",
|
72 |
+
rules_box:"box",
|
73 |
+
rules_border:"border"
|
74 |
+
});
|
table/merge_cells.htm
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<title>{#table_dlg.merge_cells_title}</title>
|
5 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
6 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/mctabs.js"></script>
|
7 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/validate.js"></script>
|
8 |
+
<script type="text/javascript" src="js/merge_cells.js"></script>
|
9 |
+
</head>
|
10 |
+
<body style="margin: 8px">
|
11 |
+
<form onsubmit="MergeCellsDialog.merge();return false;" action="#">
|
12 |
+
<fieldset>
|
13 |
+
<legend>{#table_dlg.merge_cells_title}</legend>
|
14 |
+
<table border="0" cellpadding="0" cellspacing="3" width="100%">
|
15 |
+
<tr>
|
16 |
+
<td>{#table_dlg.cols}:</td>
|
17 |
+
<td align="right"><input type="text" name="numcols" value="" class="number min1 mceFocus" style="width: 30px" /></td>
|
18 |
+
</tr>
|
19 |
+
<tr>
|
20 |
+
<td>{#table_dlg.rows}:</td>
|
21 |
+
<td align="right"><input type="text" name="numrows" value="" class="number min1" style="width: 30px" /></td>
|
22 |
+
</tr>
|
23 |
+
</table>
|
24 |
+
</fieldset>
|
25 |
+
|
26 |
+
<div class="mceActionPanel">
|
27 |
+
<input type="submit" id="insert" name="insert" value="{#update}" />
|
28 |
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
29 |
+
</div>
|
30 |
+
</form>
|
31 |
+
</body>
|
32 |
+
</html>
|
table/row.htm
ADDED
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<title>{#table_dlg.row_title}</title>
|
5 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
6 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/mctabs.js"></script>
|
7 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/form_utils.js"></script>
|
8 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/editable_selects.js"></script>
|
9 |
+
<script type="text/javascript" src="js/row.js"></script>
|
10 |
+
<link href="css/row.css" rel="stylesheet" type="text/css" />
|
11 |
+
</head>
|
12 |
+
<body id="tablerow" style="display: none">
|
13 |
+
<form onsubmit="updateAction();return false;" action="#">
|
14 |
+
<div class="tabs">
|
15 |
+
<ul>
|
16 |
+
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
|
17 |
+
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
|
18 |
+
</ul>
|
19 |
+
</div>
|
20 |
+
|
21 |
+
<div class="panel_wrapper">
|
22 |
+
<div id="general_panel" class="panel current">
|
23 |
+
<fieldset>
|
24 |
+
<legend>{#table_dlg.general_props}</legend>
|
25 |
+
|
26 |
+
<table border="0" cellpadding="4" cellspacing="0">
|
27 |
+
<tr>
|
28 |
+
<td><label for="rowtype">{#table_dlg.rowtype}</label></td>
|
29 |
+
<td class="col2">
|
30 |
+
<select id="rowtype" name="rowtype" class="mceFocus">
|
31 |
+
<option value="thead">{#table_dlg.thead}</option>
|
32 |
+
<option value="tbody">{#table_dlg.tbody}</option>
|
33 |
+
<option value="tfoot">{#table_dlg.tfoot}</option>
|
34 |
+
</select>
|
35 |
+
</td>
|
36 |
+
</tr>
|
37 |
+
|
38 |
+
<tr>
|
39 |
+
<td><label for="align">{#table_dlg.align}</label></td>
|
40 |
+
<td class="col2">
|
41 |
+
<select id="align" name="align">
|
42 |
+
<option value="">{#not_set}</option>
|
43 |
+
<option value="center">{#table_dlg.align_middle}</option>
|
44 |
+
<option value="left">{#table_dlg.align_left}</option>
|
45 |
+
<option value="right">{#table_dlg.align_right}</option>
|
46 |
+
</select>
|
47 |
+
</td>
|
48 |
+
</tr>
|
49 |
+
|
50 |
+
<tr>
|
51 |
+
<td><label for="valign">{#table_dlg.valign}</label></td>
|
52 |
+
<td class="col2">
|
53 |
+
<select id="valign" name="valign">
|
54 |
+
<option value="">{#not_set}</option>
|
55 |
+
<option value="top">{#table_dlg.align_top}</option>
|
56 |
+
<option value="middle">{#table_dlg.align_middle}</option>
|
57 |
+
<option value="bottom">{#table_dlg.align_bottom}</option>
|
58 |
+
</select>
|
59 |
+
</td>
|
60 |
+
</tr>
|
61 |
+
|
62 |
+
<tr id="styleSelectRow">
|
63 |
+
<td><label for="class">{#class_name}</label></td>
|
64 |
+
<td class="col2">
|
65 |
+
<select id="class" name="class" class="mceEditableSelect">
|
66 |
+
<option value="" selected="selected">{#not_set}</option>
|
67 |
+
</select>
|
68 |
+
</td>
|
69 |
+
</tr>
|
70 |
+
|
71 |
+
<tr>
|
72 |
+
<td><label for="height">{#table_dlg.height}</label></td>
|
73 |
+
<td class="col2"><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" /></td>
|
74 |
+
</tr>
|
75 |
+
</table>
|
76 |
+
</fieldset>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
<div id="advanced_panel" class="panel">
|
80 |
+
<fieldset>
|
81 |
+
<legend>{#table_dlg.advanced_props}</legend>
|
82 |
+
|
83 |
+
<table border="0" cellpadding="0" cellspacing="4">
|
84 |
+
<tr>
|
85 |
+
<td class="column1"><label for="id">{#table_dlg.id}</label></td>
|
86 |
+
<td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
|
87 |
+
</tr>
|
88 |
+
|
89 |
+
<tr>
|
90 |
+
<td><label for="style">{#table_dlg.style}</label></td>
|
91 |
+
<td><input type="text" id="style" name="style" value="" style="width: 200px;" onchange="changedStyle();" /></td>
|
92 |
+
</tr>
|
93 |
+
|
94 |
+
<tr>
|
95 |
+
<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
|
96 |
+
<td>
|
97 |
+
<select id="dir" name="dir" style="width: 200px">
|
98 |
+
<option value="">{#not_set}</option>
|
99 |
+
<option value="ltr">{#table_dlg.ltr}</option>
|
100 |
+
<option value="rtl">{#table_dlg.rtl}</option>
|
101 |
+
</select>
|
102 |
+
</td>
|
103 |
+
</tr>
|
104 |
+
|
105 |
+
<tr>
|
106 |
+
<td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
|
107 |
+
<td>
|
108 |
+
<input id="lang" name="lang" type="text" value="" style="width: 200px" />
|
109 |
+
</td>
|
110 |
+
</tr>
|
111 |
+
|
112 |
+
<tr>
|
113 |
+
<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
|
114 |
+
<td>
|
115 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
116 |
+
<tr>
|
117 |
+
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" style="width: 200px" onchange="changedBackgroundImage();" /></td>
|
118 |
+
<td id="backgroundimagebrowsercontainer"> </td>
|
119 |
+
</tr>
|
120 |
+
</table>
|
121 |
+
</td>
|
122 |
+
</tr>
|
123 |
+
|
124 |
+
<tr>
|
125 |
+
<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
|
126 |
+
<td>
|
127 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
128 |
+
<tr>
|
129 |
+
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
|
130 |
+
<td id="bgcolor_pickcontainer"> </td>
|
131 |
+
</tr>
|
132 |
+
</table>
|
133 |
+
</td>
|
134 |
+
</tr>
|
135 |
+
</table>
|
136 |
+
</fieldset>
|
137 |
+
</div>
|
138 |
+
</div>
|
139 |
+
|
140 |
+
<div class="mceActionPanel">
|
141 |
+
<div>
|
142 |
+
<select id="action" name="action">
|
143 |
+
<option value="row">{#table_dlg.row_row}</option>
|
144 |
+
<option value="odd">{#table_dlg.row_odd}</option>
|
145 |
+
<option value="even">{#table_dlg.row_even}</option>
|
146 |
+
<option value="all">{#table_dlg.row_all}</option>
|
147 |
+
</select>
|
148 |
+
</div>
|
149 |
+
|
150 |
+
<input type="submit" id="insert" name="insert" value="{#update}" />
|
151 |
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
152 |
+
</div>
|
153 |
+
</form>
|
154 |
+
</body>
|
155 |
+
</html>
|
table/table.htm
ADDED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
2 |
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
3 |
+
<head>
|
4 |
+
<title>{#table_dlg.title}</title>
|
5 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/tiny_mce_popup.js"></script>
|
6 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/mctabs.js"></script>
|
7 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/form_utils.js"></script>
|
8 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/validate.js"></script>
|
9 |
+
<script type="text/javascript" src="../../../../wp-includes/js/tinymce/utils/editable_selects.js"></script>
|
10 |
+
<script type="text/javascript" src="js/table.js"></script>
|
11 |
+
<link href="css/table.css" rel="stylesheet" type="text/css" />
|
12 |
+
</head>
|
13 |
+
<body id="table" style="display: none">
|
14 |
+
<form onsubmit="insertTable();return false;" action="#">
|
15 |
+
<div class="tabs">
|
16 |
+
<ul>
|
17 |
+
<li id="general_tab" class="current"><span><a href="javascript:mcTabs.displayTab('general_tab','general_panel');" onmousedown="return false;">{#table_dlg.general_tab}</a></span></li>
|
18 |
+
<li id="advanced_tab"><span><a href="javascript:mcTabs.displayTab('advanced_tab','advanced_panel');" onmousedown="return false;">{#table_dlg.advanced_tab}</a></span></li>
|
19 |
+
</ul>
|
20 |
+
</div>
|
21 |
+
|
22 |
+
<div class="panel_wrapper">
|
23 |
+
<div id="general_panel" class="panel current">
|
24 |
+
<fieldset>
|
25 |
+
<legend>{#table_dlg.general_props}</legend>
|
26 |
+
<table border="0" cellpadding="4" cellspacing="0" width="100%">
|
27 |
+
<tr>
|
28 |
+
<td><label id="colslabel" for="cols">{#table_dlg.cols}</label></td>
|
29 |
+
<td><input id="cols" name="cols" type="text" value="" size="3" maxlength="3" class="required number min1 mceFocus" /></td>
|
30 |
+
<td><label id="rowslabel" for="rows">{#table_dlg.rows}</label></td>
|
31 |
+
<td><input id="rows" name="rows" type="text" value="" size="3" maxlength="3" class="required number min1" /></td>
|
32 |
+
</tr>
|
33 |
+
<tr>
|
34 |
+
<td><label id="cellpaddinglabel" for="cellpadding">{#table_dlg.cellpadding}</label></td>
|
35 |
+
<td><input id="cellpadding" name="cellpadding" type="text" value="" size="3" maxlength="3" class="number" /></td>
|
36 |
+
<td><label id="cellspacinglabel" for="cellspacing">{#table_dlg.cellspacing}</label></td>
|
37 |
+
<td><input id="cellspacing" name="cellspacing" type="text" value="" size="3" maxlength="3" class="number" /></td>
|
38 |
+
</tr>
|
39 |
+
<tr>
|
40 |
+
<td><label id="alignlabel" for="align">{#table_dlg.align}</label></td>
|
41 |
+
<td><select id="align" name="align">
|
42 |
+
<option value="">{#not_set}</option>
|
43 |
+
<option value="center">{#table_dlg.align_middle}</option>
|
44 |
+
<option value="left">{#table_dlg.align_left}</option>
|
45 |
+
<option value="right">{#table_dlg.align_right}</option>
|
46 |
+
</select></td>
|
47 |
+
<td><label id="borderlabel" for="border">{#table_dlg.border}</label></td>
|
48 |
+
<td><input id="border" name="border" type="text" value="" size="3" maxlength="3" onchange="changedBorder();" class="number" /></td>
|
49 |
+
</tr>
|
50 |
+
<tr id="width_row">
|
51 |
+
<td><label id="widthlabel" for="width">{#table_dlg.width}</label></td>
|
52 |
+
<td><input name="width" type="text" id="width" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
|
53 |
+
<td><label id="heightlabel" for="height">{#table_dlg.height}</label></td>
|
54 |
+
<td><input name="height" type="text" id="height" value="" size="4" maxlength="4" onchange="changedSize();" class="size" /></td>
|
55 |
+
</tr>
|
56 |
+
<tr id="styleSelectRow">
|
57 |
+
<td><label id="classlabel" for="class">{#class_name}</label></td>
|
58 |
+
<td colspan="3">
|
59 |
+
<select id="class" name="class" class="mceEditableSelect">
|
60 |
+
<option value="" selected="selected">{#not_set}</option>
|
61 |
+
</select></td>
|
62 |
+
</tr>
|
63 |
+
<tr>
|
64 |
+
<td class="column1"><label for="caption">{#table_dlg.caption}</label></td>
|
65 |
+
<td><input id="caption" name="caption" type="checkbox" class="checkbox" value="true" /></td>
|
66 |
+
</tr>
|
67 |
+
</table>
|
68 |
+
</fieldset>
|
69 |
+
</div>
|
70 |
+
|
71 |
+
<div id="advanced_panel" class="panel">
|
72 |
+
<fieldset>
|
73 |
+
<legend>{#table_dlg.advanced_props}</legend>
|
74 |
+
|
75 |
+
<table border="0" cellpadding="0" cellspacing="4">
|
76 |
+
<tr>
|
77 |
+
<td class="column1"><label for="id">{#table_dlg.id}</label></td>
|
78 |
+
<td><input id="id" name="id" type="text" value="" class="advfield" /></td>
|
79 |
+
</tr>
|
80 |
+
|
81 |
+
<tr>
|
82 |
+
<td class="column1"><label for="summary">{#table_dlg.summary}</label></td>
|
83 |
+
<td><input id="summary" name="summary" type="text" value="" class="advfield" /></td>
|
84 |
+
</tr>
|
85 |
+
|
86 |
+
<tr>
|
87 |
+
<td><label for="style">{#table_dlg.style}</label></td>
|
88 |
+
<td><input type="text" id="style" name="style" value="" class="advfield" onchange="changedStyle();" /></td>
|
89 |
+
</tr>
|
90 |
+
|
91 |
+
<tr>
|
92 |
+
<td class="column1"><label id="langlabel" for="lang">{#table_dlg.langcode}</label></td>
|
93 |
+
<td>
|
94 |
+
<input id="lang" name="lang" type="text" value="" class="advfield" />
|
95 |
+
</td>
|
96 |
+
</tr>
|
97 |
+
|
98 |
+
<tr>
|
99 |
+
<td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
|
100 |
+
<td>
|
101 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
102 |
+
<tr>
|
103 |
+
<td><input id="backgroundimage" name="backgroundimage" type="text" value="" class="advfield" onchange="changedBackgroundImage();" /></td>
|
104 |
+
<td id="backgroundimagebrowsercontainer"> </td>
|
105 |
+
</tr>
|
106 |
+
</table>
|
107 |
+
</td>
|
108 |
+
</tr>
|
109 |
+
|
110 |
+
<tr>
|
111 |
+
<td class="column1"><label for="tframe">{#table_dlg.frame}</label></td>
|
112 |
+
<td>
|
113 |
+
<select id="tframe" name="tframe" class="advfield">
|
114 |
+
<option value="">{#not_set}</option>
|
115 |
+
<option value="void">{#table_dlg.rules_void}</option>
|
116 |
+
<option value="above">{#table_dlg.rules_above}</option>
|
117 |
+
<option value="below">{#table_dlg.rules_below}</option>
|
118 |
+
<option value="hsides">{#table_dlg.rules_hsides}</option>
|
119 |
+
<option value="lhs">{#table_dlg.rules_lhs}</option>
|
120 |
+
<option value="rhs">{#table_dlg.rules_rhs}</option>
|
121 |
+
<option value="vsides">{#table_dlg.rules_vsides}</option>
|
122 |
+
<option value="box">{#table_dlg.rules_box}</option>
|
123 |
+
<option value="border">{#table_dlg.rules_border}</option>
|
124 |
+
</select>
|
125 |
+
</td>
|
126 |
+
</tr>
|
127 |
+
|
128 |
+
<tr>
|
129 |
+
<td class="column1"><label for="rules">{#table_dlg.rules}</label></td>
|
130 |
+
<td>
|
131 |
+
<select id="rules" name="rules" class="advfield">
|
132 |
+
<option value="">{#not_set}</option>
|
133 |
+
<option value="none">{#table_dlg.frame_none}</option>
|
134 |
+
<option value="groups">{#table_dlg.frame_groups}</option>
|
135 |
+
<option value="rows">{#table_dlg.frame_rows}</option>
|
136 |
+
<option value="cols">{#table_dlg.frame_cols}</option>
|
137 |
+
<option value="all">{#table_dlg.frame_all}</option>
|
138 |
+
</select>
|
139 |
+
</td>
|
140 |
+
</tr>
|
141 |
+
|
142 |
+
<tr>
|
143 |
+
<td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
|
144 |
+
<td>
|
145 |
+
<select id="dir" name="dir" class="advfield">
|
146 |
+
<option value="">{#not_set}</option>
|
147 |
+
<option value="ltr">{#table_dlg.ltr}</option>
|
148 |
+
<option value="rtl">{#table_dlg.rtl}</option>
|
149 |
+
</select>
|
150 |
+
</td>
|
151 |
+
</tr>
|
152 |
+
|
153 |
+
<tr>
|
154 |
+
<td class="column1"><label for="bordercolor">{#table_dlg.bordercolor}</label></td>
|
155 |
+
<td>
|
156 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
157 |
+
<tr>
|
158 |
+
<td><input id="bordercolor" name="bordercolor" type="text" value="" size="9" onchange="updateColor('bordercolor_pick','bordercolor');changedColor();" /></td>
|
159 |
+
<td id="bordercolor_pickcontainer"> </td>
|
160 |
+
</tr>
|
161 |
+
</table>
|
162 |
+
</td>
|
163 |
+
</tr>
|
164 |
+
|
165 |
+
<tr>
|
166 |
+
<td class="column1"><label for="bgcolor">{#table_dlg.bgcolor}</label></td>
|
167 |
+
<td>
|
168 |
+
<table border="0" cellpadding="0" cellspacing="0">
|
169 |
+
<tr>
|
170 |
+
<td><input id="bgcolor" name="bgcolor" type="text" value="" size="9" onchange="updateColor('bgcolor_pick','bgcolor');changedColor();" /></td>
|
171 |
+
<td id="bgcolor_pickcontainer"> </td>
|
172 |
+
</tr>
|
173 |
+
</table>
|
174 |
+
</td>
|
175 |
+
</tr>
|
176 |
+
</table>
|
177 |
+
</fieldset>
|
178 |
+
</div>
|
179 |
+
</div>
|
180 |
+
|
181 |
+
<div class="mceActionPanel">
|
182 |
+
<input type="submit" id="insert" name="insert" value="{#insert}" />
|
183 |
+
<input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
|
184 |
+
</div>
|
185 |
+
</form>
|
186 |
+
</body>
|
187 |
+
</html>
|