Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F9121858
editor_plugin.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
13 KB
Referenced Files
None
Subscribers
None
editor_plugin.js
View Options
(
function
(
b
){
var
c
=
b
.
each
;
function
a
(
E
,
D
,
H
){
var
e
,
I
,
A
,
n
;
r
();
n
=
D
.
getParent
(
H
.
getStart
(),
"th,td"
);
if
(
n
){
I
=
C
(
n
);
A
=
F
();
n
=
v
(
I
.
x
,
I
.
y
)}
function
r
(){
var
J
=
0
;
e
=
[];
c
([
"thead"
,
"tbody"
,
"tfoot"
],
function
(
K
){
var
L
=
D
.
select
(
K
+
" tr"
,
E
);
c
(
L
,
function
(
M
,
N
){
N
+=
J
;
c
(
D
.
select
(
"td,th"
,
M
),
function
(
T
,
O
){
var
P
,
Q
,
R
,
S
;
if
(
e
[
N
]){
while
(
e
[
N
][
O
]){
O
++
}}
R
=
g
(
T
,
"rowspan"
);
S
=
g
(
T
,
"colspan"
);
for
(
Q
=
N
;
Q
<
N
+
R
;
Q
++
){
if
(
!
e
[
Q
]){
e
[
Q
]
=
[]}
for
(
P
=
O
;
P
<
O
+
S
;
P
++
){
e
[
Q
][
P
]
=
{
part
:
K
,
real
:
Q
==
N
&&
P
==
O
,
elm
:
T
,
rowspan
:
R
,
colspan
:
S
}}}})});
J
+=
L
.
length
})}
function
v
(
J
,
L
){
var
K
;
K
=
e
[
L
];
if
(
K
){
return
K
[
J
]}}
function
g
(
K
,
J
){
return
parseInt
(
K
.
getAttribute
(
J
)
||
1
)}
function
h
(
J
){
return
D
.
hasClass
(
J
.
elm
,
"mceSelected"
)
||
J
==
n
}
function
j
(){
var
J
=
[];
c
(
E
.
rows
,
function
(
K
){
c
(
K
.
cells
,
function
(
L
){
if
(
D
.
hasClass
(
L
,
"mceSelected"
)
||
L
==
n
.
elm
){
J
.
push
(
K
);
return
false
}})});
return
J
}
function
q
(){
var
J
=
D
.
createRng
();
J
.
setStartAfter
(
E
);
J
.
setEndAfter
(
E
);
H
.
setRng
(
J
);
D
.
remove
(
E
)}
function
d
(
J
){
var
K
;
b
.
walk
(
J
,
function
(
M
){
var
L
;
if
(
M
.
nodeType
==
3
){
c
(
D
.
getParents
(
M
.
parentNode
,
null
,
J
).
reverse
(),
function
(
N
){
N
=
N
.
cloneNode
(
false
);
if
(
!
K
){
K
=
L
=
N
}
else
{
if
(
L
){
L
.
appendChild
(
N
)}}
L
=
N
});
if
(
L
){
L
.
innerHTML
=
b
.
isIE
?
" "
:
'<br _mce_bogus="1" />'
}
return
false
}},
"childNodes"
);
J
=
J
.
cloneNode
(
false
);
J
.
rowSpan
=
J
.
colSpan
=
1
;
if
(
K
){
J
.
appendChild
(
K
)}
else
{
if
(
!
b
.
isIE
){
J
.
innerHTML
=
'<br _mce_bogus="1" />'
}}
return
J
}
function
p
(){
var
J
=
D
.
createRng
();
c
(
D
.
select
(
"tr"
,
E
),
function
(
K
){
if
(
K
.
cells
.
length
==
0
){
D
.
remove
(
K
)}});
if
(
D
.
select
(
"tr"
,
E
).
length
==
0
){
J
.
setStartAfter
(
E
);
J
.
setEndAfter
(
E
);
H
.
setRng
(
J
);
D
.
remove
(
E
);
return
}
c
(
D
.
select
(
"thead,tbody,tfoot"
,
E
),
function
(
K
){
if
(
K
.
rows
.
length
==
0
){
D
.
remove
(
K
)}});
r
();
row
=
e
[
Math
.
min
(
e
.
length
-
1
,
I
.
y
)];
if
(
row
){
H
.
select
(
row
[
Math
.
min
(
row
.
length
-
1
,
I
.
x
)].
elm
,
true
);
H
.
collapse
(
true
)}}
function
s
(
P
,
N
,
R
,
O
){
var
M
,
K
,
J
,
L
,
Q
;
M
=
e
[
N
][
P
].
elm
.
parentNode
;
for
(
J
=
1
;
J
<=
R
;
J
++
){
M
=
D
.
getNext
(
M
,
"tr"
);
if
(
M
){
for
(
K
=
P
;
K
>=
0
;
K
--
){
Q
=
e
[
N
+
J
][
K
].
elm
;
if
(
Q
.
parentNode
==
M
){
for
(
L
=
1
;
L
<=
O
;
L
++
){
D
.
insertAfter
(
d
(
Q
),
Q
)}
break
}}
if
(
K
==-
1
){
for
(
L
=
1
;
L
<=
O
;
L
++
){
M
.
insertBefore
(
d
(
M
.
cells
[
0
]),
M
.
cells
[
0
])}}}}}
function
z
(){
c
(
e
,
function
(
J
,
K
){
c
(
J
,
function
(
M
,
L
){
var
P
,
O
,
Q
,
N
;
if
(
h
(
M
)){
M
=
M
.
elm
;
P
=
g
(
M
,
"colspan"
);
O
=
g
(
M
,
"rowspan"
);
if
(
P
>
1
||
O
>
1
){
M
.
colSpan
=
M
.
rowSpan
=
1
;
for
(
N
=
0
;
N
<
P
-
1
;
N
++
){
D
.
insertAfter
(
d
(
M
),
M
)}
s
(
L
,
K
,
O
-
1
,
P
)}}})})}
function
o
(
R
,
O
,
U
){
var
M
,
L
,
T
,
S
,
Q
,
N
,
P
,
J
,
R
,
K
;
if
(
R
){
pos
=
C
(
R
);
M
=
pos
.
x
;
L
=
pos
.
y
;
T
=
M
+
(
O
-
1
);
S
=
L
+
(
U
-
1
)}
else
{
M
=
I
.
x
;
L
=
I
.
y
;
T
=
A
.
x
;
S
=
A
.
y
}
P
=
v
(
M
,
L
);
J
=
v
(
T
,
S
);
if
(
P
&&
J
&&
P
.
part
==
J
.
part
){
z
();
r
();
P
=
v
(
M
,
L
).
elm
;
P
.
colSpan
=
(
T
-
M
)
+
1
;
P
.
rowSpan
=
(
S
-
L
)
+
1
;
for
(
N
=
L
;
N
<=
S
;
N
++
){
for
(
Q
=
M
;
Q
<=
T
;
Q
++
){
R
=
e
[
N
][
Q
].
elm
;
if
(
R
!=
P
){
K
=
b
.
grep
(
R
.
childNodes
);
c
(
K
,
function
(
W
,
V
){
if
(
W
.
nodeName
!=
"BR"
||
V
!=
K
.
length
-
1
){
P
.
appendChild
(
W
)}});
D
.
remove
(
R
)}}}
p
()}}
function
k
(
M
){
var
J
,
O
,
L
,
N
,
P
,
Q
,
K
,
R
;
c
(
e
,
function
(
S
,
T
){
c
(
S
,
function
(
V
,
U
){
if
(
h
(
V
)){
V
=
V
.
elm
;
P
=
V
.
parentNode
;
Q
=
P
.
cloneNode
(
false
);
J
=
T
;
if
(
M
){
return
false
}}});
if
(
M
){
return
!
J
}});
for
(
N
=
0
;
N
<
e
[
0
].
length
;
N
++
){
O
=
e
[
J
][
N
].
elm
;
if
(
O
!=
L
){
if
(
!
M
){
rowSpan
=
g
(
O
,
"rowspan"
);
if
(
rowSpan
>
1
){
O
.
rowSpan
=
rowSpan
+
1
;
continue
}}
else
{
if
(
J
>
0
&&
e
[
J
-
1
][
N
]){
R
=
e
[
J
-
1
][
N
].
elm
;
rowSpan
=
g
(
R
,
"rowspan"
);
if
(
rowSpan
>
1
){
R
.
rowSpan
=
rowSpan
+
1
;
continue
}}}
K
=
d
(
O
);
K
.
colSpan
=
O
.
colSpan
;
Q
.
appendChild
(
K
);
L
=
O
}}
if
(
Q
.
hasChildNodes
()){
if
(
!
M
){
D
.
insertAfter
(
Q
,
P
)}
else
{
P
.
parentNode
.
insertBefore
(
Q
,
P
)}}}
function
f
(
K
){
var
L
,
J
;
c
(
e
,
function
(
M
,
N
){
c
(
M
,
function
(
P
,
O
){
if
(
h
(
P
)){
L
=
O
;
if
(
K
){
return
false
}}});
if
(
K
){
return
!
L
}});
c
(
e
,
function
(
P
,
Q
){
var
M
=
P
[
L
].
elm
,
N
,
O
;
if
(
M
!=
J
){
O
=
g
(
M
,
"colspan"
);
N
=
g
(
M
,
"rowspan"
);
if
(
O
==
1
){
if
(
!
K
){
D
.
insertAfter
(
d
(
M
),
M
);
s
(
L
,
Q
,
N
-
1
,
O
)}
else
{
M
.
parentNode
.
insertBefore
(
d
(
M
),
M
);
s
(
L
,
Q
,
N
-
1
,
O
)}}
else
{
M
.
colSpan
++
}
J
=
M
}})}
function
m
(){
var
J
=
[];
c
(
e
,
function
(
K
,
L
){
c
(
K
,
function
(
N
,
M
){
if
(
h
(
N
)
&&
b
.
inArray
(
J
,
M
)
===-
1
){
c
(
e
,
function
(
Q
){
var
O
=
Q
[
M
].
elm
,
P
;
P
=
g
(
O
,
"colspan"
);
if
(
P
>
1
){
O
.
colSpan
=
P
-
1
}
else
{
D
.
remove
(
O
)}});
J
.
push
(
M
)}})});
p
()}
function
l
(){
var
K
;
function
J
(
N
){
var
M
,
O
,
L
;
M
=
D
.
getNext
(
N
,
"tr"
);
c
(
N
.
cells
,
function
(
P
){
var
Q
=
g
(
P
,
"rowspan"
);
if
(
Q
>
1
){
P
.
rowSpan
=
Q
-
1
;
O
=
C
(
P
);
s
(
O
.
x
,
O
.
y
,
1
,
1
)}});
O
=
C
(
N
.
cells
[
0
]);
c
(
e
[
O
.
y
],
function
(
P
){
var
Q
;
P
=
P
.
elm
;
if
(
P
!=
L
){
Q
=
g
(
P
,
"rowspan"
);
if
(
Q
<=
1
){
D
.
remove
(
P
)}
else
{
P
.
rowSpan
=
Q
-
1
}
L
=
P
}})}
K
=
j
();
c
(
K
.
reverse
(),
function
(
L
){
J
(
L
)});
p
()}
function
B
(){
var
J
=
j
();
D
.
remove
(
J
);
p
();
return
J
}
function
G
(){
var
J
=
j
();
c
(
J
,
function
(
L
,
K
){
J
[
K
]
=
L
.
cloneNode
(
true
)});
return
J
}
function
w
(
L
,
K
){
var
M
=
j
(),
J
=
M
[
K
?
0
:
M
.
length
-
1
],
N
=
J
.
cells
.
length
;
c
(
e
,
function
(
P
){
var
O
;
N
=
0
;
c
(
P
,
function
(
R
,
Q
){
if
(
R
.
real
){
N
+=
R
.
colspan
}
if
(
R
.
elm
.
parentNode
==
J
){
O
=
1
}});
if
(
O
){
return
false
}});
if
(
!
K
){
L
.
reverse
()}
c
(
L
,
function
(
Q
){
var
P
=
Q
.
cells
.
length
,
O
;
for
(
i
=
0
;
i
<
P
;
i
++
){
O
=
Q
.
cells
[
i
];
O
.
colSpan
=
O
.
rowSpan
=
1
}
for
(
i
=
P
;
i
<
N
;
i
++
){
Q
.
appendChild
(
d
(
Q
.
cells
[
P
-
1
]))}
for
(
i
=
N
;
i
<
P
;
i
++
){
D
.
remove
(
Q
.
cells
[
i
])}
if
(
K
){
J
.
parentNode
.
insertBefore
(
Q
,
J
)}
else
{
D
.
insertAfter
(
Q
,
J
)}})}
function
C
(
J
){
var
K
;
c
(
e
,
function
(
L
,
M
){
c
(
L
,
function
(
O
,
N
){
if
(
O
.
elm
==
J
){
K
=
{
x
:
N
,
y
:
M
};
return
false
}});
return
!
K
});
return
K
}
function
u
(
J
){
I
=
C
(
J
)}
function
F
(){
var
L
,
K
,
J
;
K
=
J
=
0
;
c
(
e
,
function
(
M
,
N
){
c
(
M
,
function
(
P
,
O
){
var
R
,
Q
;
if
(
h
(
P
)){
P
=
e
[
N
][
O
];
if
(
O
>
K
){
K
=
O
}
if
(
N
>
J
){
J
=
N
}
if
(
P
.
real
){
R
=
P
.
colspan
-
1
;
Q
=
P
.
rowspan
-
1
;
if
(
R
){
if
(
O
+
R
>
K
){
K
=
O
+
R
}}
if
(
Q
){
if
(
N
+
Q
>
J
){
J
=
N
+
Q
}}}}})});
return
{
x
:
K
,
y
:
J
}}
function
t
(
P
){
var
M
,
L
,
R
,
Q
,
K
,
J
,
N
,
O
;
A
=
C
(
P
);
if
(
I
&&
A
){
M
=
Math
.
min
(
I
.
x
,
A
.
x
);
L
=
Math
.
min
(
I
.
y
,
A
.
y
);
R
=
Math
.
max
(
I
.
x
,
A
.
x
);
Q
=
Math
.
max
(
I
.
y
,
A
.
y
);
K
=
R
;
J
=
Q
;
for
(
y
=
L
;
y
<=
J
;
y
++
){
P
=
e
[
y
][
M
];
if
(
!
P
.
real
){
if
(
M
-
(
P
.
colspan
-
1
)
<
M
){
M
-=
P
.
colspan
-
1
}}}
for
(
x
=
M
;
x
<=
K
;
x
++
){
P
=
e
[
L
][
x
];
if
(
!
P
.
real
){
if
(
L
-
(
P
.
rowspan
-
1
)
<
L
){
L
-=
P
.
rowspan
-
1
}}}
for
(
y
=
L
;
y
<=
Q
;
y
++
){
for
(
x
=
M
;
x
<=
R
;
x
++
){
P
=
e
[
y
][
x
];
if
(
P
.
real
){
N
=
P
.
colspan
-
1
;
O
=
P
.
rowspan
-
1
;
if
(
N
){
if
(
x
+
N
>
K
){
K
=
x
+
N
}}
if
(
O
){
if
(
y
+
O
>
J
){
J
=
y
+
O
}}}}}
D
.
removeClass
(
D
.
select
(
"td.mceSelected,th.mceSelected"
),
"mceSelected"
);
for
(
y
=
L
;
y
<=
J
;
y
++
){
for
(
x
=
M
;
x
<=
K
;
x
++
){
D
.
addClass
(
e
[
y
][
x
].
elm
,
"mceSelected"
)}}}}
b
.
extend
(
this
,{
deleteTable
:
q
,
split
:
z
,
merge
:
o
,
insertRow
:
k
,
insertCol
:
f
,
deleteCols
:
m
,
deleteRows
:
l
,
cutRows
:
B
,
copyRows
:
G
,
pasteRows
:
w
,
getPos
:
C
,
setStartCell
:
u
,
setEndCell
:
t
})}
b
.
create
(
"tinymce.plugins.TablePlugin"
,{
init
:
function
(
e
,
f
){
var
d
,
j
;
function
h
(
m
){
var
l
=
e
.
selection
,
k
=
e
.
dom
.
getParent
(
m
||
l
.
getNode
(),
"table"
);
if
(
k
){
return
new
a
(
k
,
e
.
dom
,
l
)}}
function
g
(){
e
.
getBody
().
style
.
webkitUserSelect
=
""
;
e
.
dom
.
removeClass
(
e
.
dom
.
select
(
"td.mceSelected,th.mceSelected"
),
"mceSelected"
)}
c
([[
"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
(
k
){
e
.
addButton
(
k
[
0
],{
title
:
k
[
1
],
cmd
:
k
[
2
],
ui
:
k
[
3
]})});
if
(
!
b
.
isIE
){
e
.
onClick
.
add
(
function
(
k
,
l
){
l
=
l
.
target
;
if
(
l
.
nodeName
===
"TABLE"
){
k
.
selection
.
select
(
l
)}})}
e
.
onNodeChange
.
add
(
function
(
l
,
k
,
o
){
var
m
;
o
=
l
.
selection
.
getStart
();
m
=
l
.
dom
.
getParent
(
o
,
"td,th,caption"
);
k
.
setActive
(
"table"
,
o
.
nodeName
===
"TABLE"
||!!
m
);
if
(
m
&&
m
.
nodeName
===
"CAPTION"
){
m
=
0
}
k
.
setDisabled
(
"delete_table"
,
!
m
);
k
.
setDisabled
(
"delete_col"
,
!
m
);
k
.
setDisabled
(
"delete_table"
,
!
m
);
k
.
setDisabled
(
"delete_row"
,
!
m
);
k
.
setDisabled
(
"col_after"
,
!
m
);
k
.
setDisabled
(
"col_before"
,
!
m
);
k
.
setDisabled
(
"row_after"
,
!
m
);
k
.
setDisabled
(
"row_before"
,
!
m
);
k
.
setDisabled
(
"row_props"
,
!
m
);
k
.
setDisabled
(
"cell_props"
,
!
m
);
k
.
setDisabled
(
"split_cells"
,
!
m
);
k
.
setDisabled
(
"merge_cells"
,
!
m
)});
e
.
onInit
.
add
(
function
(
l
){
var
k
,
o
,
p
=
l
.
dom
,
m
;
d
=
l
.
windowManager
;
l
.
onMouseDown
.
add
(
function
(
q
,
r
){
if
(
r
.
button
!=
2
){
g
();
o
=
p
.
getParent
(
r
.
target
,
"td,th"
);
k
=
p
.
getParent
(
o
,
"table"
)}});
p
.
bind
(
l
.
getDoc
(),
"mouseover"
,
function
(
t
){
var
r
,
q
,
s
=
t
.
target
;
if
(
o
&&
(
m
||
s
!=
o
)
&&
(
s
.
nodeName
==
"TD"
||
s
.
nodeName
==
"TH"
)){
q
=
p
.
getParent
(
s
,
"table"
);
if
(
q
==
k
){
if
(
!
m
){
m
=
h
(
q
);
m
.
setStartCell
(
o
);
l
.
getBody
().
style
.
webkitUserSelect
=
"none"
}
m
.
setEndCell
(
s
)}
r
=
l
.
selection
.
getSel
();
if
(
r
.
removeAllRanges
){
r
.
removeAllRanges
()}
else
{
r
.
empty
()}
t
.
preventDefault
()}});
l
.
onMouseUp
.
add
(
function
(
z
,
A
){
var
r
,
t
=
z
.
selection
,
B
,
C
=
t
.
getSel
(),
q
,
u
,
s
,
w
;
if
(
o
){
if
(
m
){
z
.
getBody
().
style
.
webkitUserSelect
=
""
}
function
v
(
D
,
F
){
var
E
=
new
b
.
dom
.
TreeWalker
(
D
,
D
);
do
{
if
(
D
.
nodeType
==
3
&&
b
.
trim
(
D
.
nodeValue
).
length
!=
0
){
if
(
F
){
r
.
setStart
(
D
,
0
)}
else
{
r
.
setEnd
(
D
,
D
.
nodeValue
.
length
)}
return
}
if
(
D
.
nodeName
==
"BR"
){
if
(
F
){
r
.
setStartBefore
(
D
)}
else
{
r
.
setEndBefore
(
D
)}
return
}}
while
(
D
=
(
F
?
E
.
next
()
:
E
.
prev
()))}
B
=
p
.
select
(
"td.mceSelected,th.mceSelected"
);
if
(
B
.
length
>
0
){
r
=
p
.
createRng
();
u
=
B
[
0
];
w
=
B
[
B
.
length
-
1
];
v
(
u
,
1
);
q
=
new
b
.
dom
.
TreeWalker
(
u
,
p
.
getParent
(
B
[
0
],
"table"
));
do
{
if
(
u
.
nodeName
==
"TD"
||
u
.
nodeName
==
"TH"
){
if
(
!
p
.
hasClass
(
u
,
"mceSelected"
)){
break
}
s
=
u
}}
while
(
u
=
q
.
next
());
v
(
s
);
t
.
setRng
(
r
)}
z
.
nodeChanged
();
o
=
m
=
k
=
null
}});
l
.
onKeyUp
.
add
(
function
(
q
,
r
){
g
()});
if
(
l
&&
l
.
plugins
.
contextmenu
){
l
.
plugins
.
contextmenu
.
onContextMenu
.
add
(
function
(
s
,
q
,
u
){
var
v
,
t
=
l
.
selection
,
r
=
t
.
getNode
()
||
l
.
getBody
();
if
(
l
.
dom
.
getParent
(
u
,
"td"
)
||
l
.
dom
.
getParent
(
u
,
"th"
)){
q
.
removeAll
();
if
(
r
.
nodeName
==
"A"
&&!
l
.
dom
.
getAttrib
(
r
,
"name"
)){
q
.
add
({
title
:
"advanced.link_desc"
,
icon
:
"link"
,
cmd
:
l
.
plugins
.
advlink
?
"mceAdvLink"
:
"mceLink"
,
ui
:
true
});
q
.
add
({
title
:
"advanced.unlink_desc"
,
icon
:
"unlink"
,
cmd
:
"UnLink"
});
q
.
addSeparator
()}
if
(
r
.
nodeName
==
"IMG"
&&
r
.
className
.
indexOf
(
"mceItem"
)
==-
1
){
q
.
add
({
title
:
"advanced.image_desc"
,
icon
:
"image"
,
cmd
:
l
.
plugins
.
advimage
?
"mceAdvImage"
:
"mceImage"
,
ui
:
true
});
q
.
addSeparator
()}
q
.
add
({
title
:
"table.desc"
,
icon
:
"table"
,
cmd
:
"mceInsertTable"
,
value
:
{
action
:
"insert"
}});
q
.
add
({
title
:
"table.props_desc"
,
icon
:
"table_props"
,
cmd
:
"mceInsertTable"
});
q
.
add
({
title
:
"table.del"
,
icon
:
"delete_table"
,
cmd
:
"mceTableDelete"
});
q
.
addSeparator
();
v
=
q
.
addMenu
({
title
:
"table.cell"
});
v
.
add
({
title
:
"table.cell_desc"
,
icon
:
"cell_props"
,
cmd
:
"mceTableCellProps"
});
v
.
add
({
title
:
"table.split_cells_desc"
,
icon
:
"split_cells"
,
cmd
:
"mceTableSplitCells"
});
v
.
add
({
title
:
"table.merge_cells_desc"
,
icon
:
"merge_cells"
,
cmd
:
"mceTableMergeCells"
});
v
=
q
.
addMenu
({
title
:
"table.row"
});
v
.
add
({
title
:
"table.row_desc"
,
icon
:
"row_props"
,
cmd
:
"mceTableRowProps"
});
v
.
add
({
title
:
"table.row_before_desc"
,
icon
:
"row_before"
,
cmd
:
"mceTableInsertRowBefore"
});
v
.
add
({
title
:
"table.row_after_desc"
,
icon
:
"row_after"
,
cmd
:
"mceTableInsertRowAfter"
});
v
.
add
({
title
:
"table.delete_row_desc"
,
icon
:
"delete_row"
,
cmd
:
"mceTableDeleteRow"
});
v
.
addSeparator
();
v
.
add
({
title
:
"table.cut_row_desc"
,
icon
:
"cut"
,
cmd
:
"mceTableCutRow"
});
v
.
add
({
title
:
"table.copy_row_desc"
,
icon
:
"copy"
,
cmd
:
"mceTableCopyRow"
});
v
.
add
({
title
:
"table.paste_row_before_desc"
,
icon
:
"paste"
,
cmd
:
"mceTablePasteRowBefore"
}).
setDisabled
(
!
j
);
v
.
add
({
title
:
"table.paste_row_after_desc"
,
icon
:
"paste"
,
cmd
:
"mceTablePasteRowAfter"
}).
setDisabled
(
!
j
);
v
=
q
.
addMenu
({
title
:
"table.col"
});
v
.
add
({
title
:
"table.col_before_desc"
,
icon
:
"col_before"
,
cmd
:
"mceTableInsertColBefore"
});
v
.
add
({
title
:
"table.col_after_desc"
,
icon
:
"col_after"
,
cmd
:
"mceTableInsertColAfter"
});
v
.
add
({
title
:
"table.delete_col_desc"
,
icon
:
"delete_col"
,
cmd
:
"mceTableDeleteCol"
})}
else
{
q
.
add
({
title
:
"table.desc"
,
icon
:
"table"
,
cmd
:
"mceInsertTable"
})}})}
if
(
!
b
.
isIE
){
function
n
(){
var
q
;
for
(
q
=
l
.
getBody
().
lastChild
;
q
&&
q
.
nodeType
==
3
&&!
q
.
nodeValue
.
length
;
q
=
q
.
previousSibling
){}
if
(
q
&&
q
.
nodeName
==
"TABLE"
){
l
.
dom
.
add
(
l
.
getBody
(),
"p"
,
null
,
'<br mce_bogus="1" />'
)}}
if
(
b
.
isGecko
){
l
.
onKeyDown
.
add
(
function
(
r
,
t
){
var
q
,
s
,
u
=
r
.
dom
;
if
(
t
.
keyCode
==
37
||
t
.
keyCode
==
38
){
q
=
r
.
selection
.
getRng
();
s
=
u
.
getParent
(
q
.
startContainer
,
"table"
);
if
(
s
&&
r
.
getBody
().
firstChild
==
s
){
if
(
isAtStart
(
q
,
s
)){
q
=
u
.
createRng
();
q
.
setStartBefore
(
s
);
q
.
setEndBefore
(
s
);
r
.
selection
.
setRng
(
q
);
t
.
preventDefault
()}}}})}
l
.
onKeyUp
.
add
(
n
);
l
.
onSetContent
.
add
(
n
);
l
.
onVisualAid
.
add
(
n
);
l
.
onPreProcess
.
add
(
function
(
q
,
s
){
var
r
=
s
.
node
.
lastChild
;
if
(
r
&&
r
.
childNodes
.
length
==
1
&&
r
.
firstChild
.
nodeName
==
"BR"
){
q
.
dom
.
remove
(
r
)}});
n
()}});
c
({
mceTableSplitCells
:
function
(
k
){
k
.
split
()},
mceTableMergeCells
:
function
(
l
){
var
m
,
n
,
k
;
k
=
e
.
dom
.
getParent
(
e
.
selection
.
getNode
(),
"th,td"
);
if
(
k
){
m
=
k
.
rowSpan
;
n
=
k
.
colSpan
}
if
(
!
e
.
dom
.
select
(
"td.mceSelected,th.mceSelected"
).
length
){
d
.
open
({
url
:
f
+
"/merge_cells.htm"
,
width
:
240
+
parseInt
(
e
.
getLang
(
"table.merge_cells_delta_width"
,
0
)),
height
:
110
+
parseInt
(
e
.
getLang
(
"table.merge_cells_delta_height"
,
0
)),
inline
:
1
},{
rows
:
m
,
cols
:
n
,
onaction
:
function
(
o
){
l
.
merge
(
k
,
o
.
cols
,
o
.
rows
)},
plugin_url
:
f
})}
else
{
l
.
merge
()}},
mceTableInsertRowBefore
:
function
(
k
){
k
.
insertRow
(
true
)},
mceTableInsertRowAfter
:
function
(
k
){
k
.
insertRow
()},
mceTableInsertColBefore
:
function
(
k
){
k
.
insertCol
(
true
)},
mceTableInsertColAfter
:
function
(
k
){
k
.
insertCol
()},
mceTableDeleteCol
:
function
(
k
){
k
.
deleteCols
()},
mceTableDeleteRow
:
function
(
k
){
k
.
deleteRows
()},
mceTableCutRow
:
function
(
k
){
j
=
k
.
cutRows
()},
mceTableCopyRow
:
function
(
k
){
j
=
k
.
copyRows
()},
mceTablePasteRowBefore
:
function
(
k
){
k
.
pasteRows
(
j
,
true
)},
mceTablePasteRowAfter
:
function
(
k
){
k
.
pasteRows
(
j
)},
mceTableDelete
:
function
(
k
){
k
.
deleteTable
()}},
function
(
l
,
k
){
e
.
addCommand
(
k
,
function
(){
var
m
=
h
();
if
(
m
){
l
(
m
);
e
.
execCommand
(
"mceRepaint"
);
g
()}})});
c
({
mceInsertTable
:
function
(
k
){
d
.
open
({
url
:
f
+
"/table.htm"
,
width
:
400
+
parseInt
(
e
.
getLang
(
"table.table_delta_width"
,
0
)),
height
:
320
+
parseInt
(
e
.
getLang
(
"table.table_delta_height"
,
0
)),
inline
:
1
},{
plugin_url
:
f
,
action
:
k
?
k
.
action
:
0
})},
mceTableRowProps
:
function
(){
d
.
open
({
url
:
f
+
"/row.htm"
,
width
:
400
+
parseInt
(
e
.
getLang
(
"table.rowprops_delta_width"
,
0
)),
height
:
295
+
parseInt
(
e
.
getLang
(
"table.rowprops_delta_height"
,
0
)),
inline
:
1
},{
plugin_url
:
f
})},
mceTableCellProps
:
function
(){
d
.
open
({
url
:
f
+
"/cell.htm"
,
width
:
400
+
parseInt
(
e
.
getLang
(
"table.cellprops_delta_width"
,
0
)),
height
:
295
+
parseInt
(
e
.
getLang
(
"table.cellprops_delta_height"
,
0
)),
inline
:
1
},{
plugin_url
:
f
})}},
function
(
l
,
k
){
e
.
addCommand
(
k
,
function
(
m
,
n
){
l
(
n
)})})}});
b
.
PluginManager
.
add
(
"table"
,
b
.
plugins
.
TablePlugin
)})(
tinymce
);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Jul 30, 3:04 AM (14 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1179911
Default Alt Text
editor_plugin.js (13 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment