Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F6063693
plugin.min.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
7 KB
Referenced Files
None
Subscribers
None
plugin.min.js
View Options
tinymce
.
PluginManager
.
add
(
"lists"
,
function
(
a
){
function
b
(
a
){
return
a
&&
/^(OL|UL|DL)$/
.
test
(
a
.
nodeName
)}
function
c
(
a
){
return
a
.
parentNode
.
firstChild
==
a
}
function
d
(
a
){
return
a
.
parentNode
.
lastChild
==
a
}
function
e
(
b
){
return
b
&&!!
a
.
schema
.
getTextBlockElements
()[
b
.
nodeName
]}
var
f
=
this
;
a
.
on
(
"init"
,
function
(){
function
g
(
a
){
function
b
(
b
){
var
d
,
e
,
f
;
e
=
a
[
b
?
"startContainer"
:
"endContainer"
],
f
=
a
[
b
?
"startOffset"
:
"endOffset"
],
1
==
e
.
nodeType
&&
(
d
=
v
.
create
(
"span"
,{
"data-mce-type"
:
"bookmark"
}),
e
.
hasChildNodes
()
?
(
f
=
Math
.
min
(
f
,
e
.
childNodes
.
length
-
1
),
b
?
e
.
insertBefore
(
d
,
e
.
childNodes
[
f
])
:
v
.
insertAfter
(
d
,
e
.
childNodes
[
f
]))
:
e
.
appendChild
(
d
),
e
=
d
,
f
=
0
),
c
[
b
?
"startContainer"
:
"endContainer"
]
=
e
,
c
[
b
?
"startOffset"
:
"endOffset"
]
=
f
}
var
c
=
{};
return
b
(
!
0
),
a
.
collapsed
||
b
(),
c
}
function
h
(
a
){
function
b
(
b
){
function
c
(
a
){
for
(
var
b
=
a
.
parentNode
.
firstChild
,
c
=
0
;
b
;){
if
(
b
==
a
)
return
c
;(
1
!=
b
.
nodeType
||
"bookmark"
!=
b
.
getAttribute
(
"data-mce-type"
))
&&
c
++
,
b
=
b
.
nextSibling
}
return
-
1
}
var
d
,
e
,
f
;
d
=
f
=
a
[
b
?
"startContainer"
:
"endContainer"
],
e
=
a
[
b
?
"startOffset"
:
"endOffset"
],
d
&&
(
1
==
d
.
nodeType
&&
(
e
=
c
(
d
),
d
=
d
.
parentNode
,
v
.
remove
(
f
)),
a
[
b
?
"startContainer"
:
"endContainer"
]
=
d
,
a
[
b
?
"startOffset"
:
"endOffset"
]
=
e
)}
b
(
!
0
),
b
();
var
c
=
v
.
createRng
();
c
.
setStart
(
a
.
startContainer
,
a
.
startOffset
),
a
.
endContainer
&&
c
.
setEnd
(
a
.
endContainer
,
a
.
endOffset
),
w
.
setRng
(
c
)}
function
i
(
b
,
c
){
var
d
,
e
,
f
,
g
=
v
.
createFragment
(),
h
=
a
.
schema
.
getBlockElements
();
if
(
a
.
settings
.
forced_root_block
&&
(
c
=
c
||
a
.
settings
.
forced_root_block
),
c
&&
(
e
=
v
.
create
(
c
),
e
.
tagName
===
a
.
settings
.
forced_root_block
&&
v
.
setAttribs
(
e
,
a
.
settings
.
forced_root_block_attrs
),
g
.
appendChild
(
e
)),
b
)
for
(;
d
=
b
.
firstChild
;){
var
i
=
d
.
nodeName
;
f
||
"SPAN"
==
i
&&
"bookmark"
==
d
.
getAttribute
(
"data-mce-type"
)
||
(
f
=!
0
),
h
[
i
]
?
(
g
.
appendChild
(
d
),
e
=
null
)
:
c
?
(
e
||
(
e
=
v
.
create
(
c
),
g
.
appendChild
(
e
)),
e
.
appendChild
(
d
))
:
g
.
appendChild
(
d
)}
return
a
.
settings
.
forced_root_block
?
f
||
tinymce
.
Env
.
ie
&&!
(
tinymce
.
Env
.
ie
>
10
)
||
e
.
appendChild
(
v
.
create
(
"br"
,{
"data-mce-bogus"
:
"1"
}))
:
g
.
appendChild
(
v
.
create
(
"br"
)),
g
}
function
j
(){
return
tinymce
.
grep
(
w
.
getSelectedBlocks
(),
function
(
a
){
return
/^(LI|DT|DD)$/
.
test
(
a
.
nodeName
)})}
function
k
(
a
,
b
,
c
){
function
d
(
a
){
tinymce
.
each
(
g
,
function
(
c
){
a
.
parentNode
.
insertBefore
(
c
,
b
.
parentNode
)}),
v
.
remove
(
a
)}
var
e
,
f
,
g
,
h
;
for
(
g
=
v
.
select
(
'span[data-mce-type="bookmark"]'
,
a
),
c
=
c
||
i
(
b
),
e
=
v
.
createRng
(),
e
.
setStartAfter
(
b
),
e
.
setEndAfter
(
a
),
f
=
e
.
extractContents
(),
h
=
f
.
firstChild
;
h
;
h
=
h
.
firstChild
)
if
(
"LI"
==
h
.
nodeName
&&
v
.
isEmpty
(
h
)){
v
.
remove
(
h
);
break
}
v
.
isEmpty
(
f
)
||
v
.
insertAfter
(
f
,
a
),
v
.
insertAfter
(
c
,
a
),
v
.
isEmpty
(
b
.
parentNode
)
&&
d
(
b
.
parentNode
),
v
.
remove
(
b
),
v
.
isEmpty
(
a
)
&&
v
.
remove
(
a
)}
function
l
(
a
){
var
c
,
d
;
if
(
c
=
a
.
nextSibling
,
c
&&
b
(
c
)
&&
c
.
nodeName
==
a
.
nodeName
){
for
(;
d
=
c
.
firstChild
;)
a
.
appendChild
(
d
);
v
.
remove
(
c
)}
if
(
c
=
a
.
previousSibling
,
c
&&
b
(
c
)
&&
c
.
nodeName
==
a
.
nodeName
){
for
(;
d
=
c
.
firstChild
;)
a
.
insertBefore
(
d
,
a
.
firstChild
);
v
.
remove
(
c
)}}
function
m
(
a
){
tinymce
.
each
(
tinymce
.
grep
(
v
.
select
(
"ol,ul"
,
a
)),
function
(
a
){
var
c
,
d
=
a
.
parentNode
;
"LI"
==
d
.
nodeName
&&
d
.
firstChild
==
a
&&
(
c
=
d
.
previousSibling
,
c
&&
"LI"
==
c
.
nodeName
&&
(
c
.
appendChild
(
a
),
v
.
isEmpty
(
d
)
&&
v
.
remove
(
d
))),
b
(
d
)
&&
(
c
=
d
.
previousSibling
,
c
&&
"LI"
==
c
.
nodeName
&&
c
.
appendChild
(
a
))})}
function
n
(
a
){
function
e
(
a
){
v
.
isEmpty
(
a
)
&&
v
.
remove
(
a
)}
var
f
,
g
=
a
.
parentNode
,
h
=
g
.
parentNode
;
return
"DD"
==
a
.
nodeName
?
(
v
.
rename
(
a
,
"DT"
),
!
0
)
:
c
(
a
)
&&
d
(
a
)
?
(
"LI"
==
h
.
nodeName
?
(
v
.
insertAfter
(
a
,
h
),
e
(
h
),
v
.
remove
(
g
))
:
b
(
h
)
?
v
.
remove
(
g
,
!
0
)
:
(
h
.
insertBefore
(
i
(
a
),
g
),
v
.
remove
(
g
)),
!
0
)
:
c
(
a
)
?
(
"LI"
==
h
.
nodeName
?
(
v
.
insertAfter
(
a
,
h
),
a
.
appendChild
(
g
),
e
(
h
))
:
b
(
h
)
?
h
.
insertBefore
(
a
,
g
)
:
(
h
.
insertBefore
(
i
(
a
),
g
),
v
.
remove
(
a
)),
!
0
)
:
d
(
a
)
?
(
"LI"
==
h
.
nodeName
?
v
.
insertAfter
(
a
,
h
)
:
b
(
h
)
?
v
.
insertAfter
(
a
,
g
)
:
(
v
.
insertAfter
(
i
(
a
),
g
),
v
.
remove
(
a
)),
!
0
)
:
(
"LI"
==
h
.
nodeName
?
(
g
=
h
,
f
=
i
(
a
,
"LI"
))
:
f
=
b
(
h
)
?
i
(
a
,
"LI"
)
:
i
(
a
),
k
(
g
,
a
,
f
),
m
(
g
.
parentNode
),
!
0
)}
function
o
(
a
){
function
c
(
c
,
d
){
var
e
;
if
(
b
(
c
)){
for
(;
e
=
a
.
lastChild
.
firstChild
;)
d
.
appendChild
(
e
);
v
.
remove
(
c
)}}
var
d
,
e
;
return
"DT"
==
a
.
nodeName
?
(
v
.
rename
(
a
,
"DD"
),
!
0
)
:
(
d
=
a
.
previousSibling
,
d
&&
b
(
d
)
?
(
d
.
appendChild
(
a
),
!
0
)
:
d
&&
"LI"
==
d
.
nodeName
&&
b
(
d
.
lastChild
)
?
(
d
.
lastChild
.
appendChild
(
a
),
c
(
a
.
lastChild
,
d
.
lastChild
),
!
0
)
:
(
d
=
a
.
nextSibling
,
d
&&
b
(
d
)
?
(
d
.
insertBefore
(
a
,
d
.
firstChild
),
!
0
)
:
d
&&
"LI"
==
d
.
nodeName
&&
b
(
a
.
lastChild
)
?!
1
:
(
d
=
a
.
previousSibling
,
d
&&
"LI"
==
d
.
nodeName
?
(
e
=
v
.
create
(
a
.
parentNode
.
nodeName
),
d
.
appendChild
(
e
),
e
.
appendChild
(
a
),
c
(
a
.
lastChild
,
e
),
!
0
)
:!
1
)))}
function
p
(){
var
b
=
j
();
if
(
b
.
length
){
for
(
var
c
=
g
(
w
.
getRng
(
!
0
)),
d
=
0
;
d
<
b
.
length
&&
(
o
(
b
[
d
])
||
0
!==
d
);
d
++
);
return
h
(
c
),
a
.
nodeChanged
(),
!
0
}}
function
q
(){
var
b
=
j
();
if
(
b
.
length
){
var
c
,
d
,
e
=
g
(
w
.
getRng
(
!
0
)),
f
=
a
.
getBody
();
for
(
c
=
b
.
length
;
c
--
;)
for
(
var
i
=
b
[
c
].
parentNode
;
i
&&
i
!=
f
;){
for
(
d
=
b
.
length
;
d
--
;)
if
(
b
[
d
]
===
i
){
b
.
splice
(
c
,
1
);
break
}
i
=
i
.
parentNode
}
for
(
c
=
0
;
c
<
b
.
length
&&
(
n
(
b
[
c
])
||
0
!==
c
);
c
++
);
return
h
(
e
),
a
.
nodeChanged
(),
!
0
}}
function
r
(
c
){
function
d
(){
function
b
(
a
){
var
b
,
c
;
for
(
b
=
f
[
a
?
"startContainer"
:
"endContainer"
],
c
=
f
[
a
?
"startOffset"
:
"endOffset"
],
1
==
b
.
nodeType
&&
(
b
=
b
.
childNodes
[
Math
.
min
(
c
,
b
.
childNodes
.
length
-
1
)]
||
b
);
b
.
parentNode
!=
g
;){
if
(
e
(
b
))
return
b
;
if
(
/^(TD|TH)$/
.
test
(
b
.
parentNode
.
nodeName
))
return
b
;
b
=
b
.
parentNode
}
return
b
}
for
(
var
c
,
d
=
[],
g
=
a
.
getBody
(),
h
=
b
(
!
0
),
i
=
b
(),
j
=
[],
k
=
h
;
k
&&
(
j
.
push
(
k
),
k
!=
i
);
k
=
k
.
nextSibling
);
return
tinymce
.
each
(
j
,
function
(
a
){
if
(
e
(
a
))
return
d
.
push
(
a
),
void
(
c
=
null
);
if
(
v
.
isBlock
(
a
)
||
"BR"
==
a
.
nodeName
)
return
"BR"
==
a
.
nodeName
&&
v
.
remove
(
a
),
void
(
c
=
null
);
var
b
=
a
.
nextSibling
;
return
tinymce
.
dom
.
BookmarkManager
.
isBookmarkNode
(
a
)
&&
(
e
(
b
)
||!
b
&&
a
.
parentNode
==
g
)
?
void
(
c
=
null
)
:
(
c
||
(
c
=
v
.
create
(
"p"
),
a
.
parentNode
.
insertBefore
(
c
,
a
),
d
.
push
(
c
)),
void
c
.
appendChild
(
a
))}),
d
}
var
f
=
w
.
getRng
(
!
0
),
i
=
g
(
f
),
j
=
"LI"
;
c
=
c
.
toUpperCase
(),
"DL"
==
c
&&
(
j
=
"DT"
),
tinymce
.
each
(
d
(),
function
(
a
){
var
d
,
e
;
e
=
a
.
previousSibling
,
e
&&
b
(
e
)
&&
e
.
nodeName
==
c
?
(
d
=
e
,
a
=
v
.
rename
(
a
,
j
),
e
.
appendChild
(
a
))
:
(
d
=
v
.
create
(
c
),
a
.
parentNode
.
insertBefore
(
d
,
a
),
d
.
appendChild
(
a
),
a
=
v
.
rename
(
a
,
j
)),
l
(
d
)}),
h
(
i
)}
function
s
(){
var
c
=
g
(
w
.
getRng
(
!
0
)),
d
=
a
.
getBody
();
tinymce
.
each
(
j
(),
function
(
a
){
var
c
,
e
;
if
(
v
.
isEmpty
(
a
))
return
void
n
(
a
);
for
(
c
=
a
;
c
&&
c
!=
d
;
c
=
c
.
parentNode
)
b
(
c
)
&&
(
e
=
c
);
k
(
e
,
a
)}),
h
(
c
)}
function
t
(
a
){
var
b
=
v
.
getParent
(
w
.
getStart
(),
"OL,UL,DL"
);
if
(
b
)
if
(
b
.
nodeName
==
a
)
s
(
a
);
else
{
var
c
=
g
(
w
.
getRng
(
!
0
));
l
(
v
.
rename
(
b
,
a
)),
h
(
c
)}
else
r
(
a
)}
function
u
(
b
){
return
function
(){
var
c
=
v
.
getParent
(
a
.
selection
.
getStart
(),
"UL,OL,DL"
);
return
c
&&
c
.
nodeName
==
b
}}
var
v
=
a
.
dom
,
w
=
a
.
selection
;
f
.
backspaceDelete
=
function
(
c
){
function
d
(
b
,
c
){
var
d
,
e
,
f
=
b
.
startContainer
,
g
=
b
.
startOffset
;
if
(
3
==
f
.
nodeType
&&
(
c
?
g
<
f
.
data
.
length
:
g
>
0
))
return
f
;
for
(
d
=
a
.
schema
.
getNonEmptyElements
(),
e
=
new
tinymce
.
dom
.
TreeWalker
(
b
.
startContainer
);
f
=
e
[
c
?
"next"
:
"prev"
]();){
if
(
"LI"
==
f
.
nodeName
&&!
f
.
hasChildNodes
())
return
f
;
if
(
d
[
f
.
nodeName
])
return
f
;
if
(
3
==
f
.
nodeType
&&
f
.
data
.
length
>
0
)
return
f
}}
function
e
(
a
,
c
){
var
d
,
e
,
f
=
a
.
parentNode
;
if
(
b
(
c
.
lastChild
)
&&
(
e
=
c
.
lastChild
),
d
=
c
.
lastChild
,
d
&&
"BR"
==
d
.
nodeName
&&
a
.
hasChildNodes
()
&&
v
.
remove
(
d
),
v
.
isEmpty
(
c
)
&&
v
.
$
(
c
).
empty
(),
!
v
.
isEmpty
(
a
))
for
(;
d
=
a
.
firstChild
;)
c
.
appendChild
(
d
);
e
&&
c
.
appendChild
(
e
),
v
.
remove
(
a
),
v
.
isEmpty
(
f
)
&&
v
.
remove
(
f
)}
if
(
w
.
isCollapsed
()){
var
f
=
v
.
getParent
(
w
.
getStart
(),
"LI"
);
if
(
f
){
var
i
=
w
.
getRng
(
!
0
),
j
=
v
.
getParent
(
d
(
i
,
c
),
"LI"
);
if
(
j
&&
j
!=
f
){
var
k
=
g
(
i
);
return
c
?
e
(
j
,
f
)
:
e
(
f
,
j
),
h
(
k
),
!
0
}
if
(
!
j
&&!
c
&&
s
(
f
.
parentNode
.
nodeName
))
return
!
0
}}},
a
.
on
(
"BeforeExecCommand"
,
function
(
b
){
var
c
,
d
=
b
.
command
.
toLowerCase
();
return
"indent"
==
d
?
p
()
&&
(
c
=!
0
)
:
"outdent"
==
d
&&
q
()
&&
(
c
=!
0
),
c
?
(
a
.
fire
(
"ExecCommand"
,{
command
:
b
.
command
}),
b
.
preventDefault
(),
!
0
)
:
void
0
}),
a
.
addCommand
(
"InsertUnorderedList"
,
function
(){
t
(
"UL"
)}),
a
.
addCommand
(
"InsertOrderedList"
,
function
(){
t
(
"OL"
)}),
a
.
addCommand
(
"InsertDefinitionList"
,
function
(){
t
(
"DL"
)}),
a
.
addQueryStateHandler
(
"InsertUnorderedList"
,
u
(
"UL"
)),
a
.
addQueryStateHandler
(
"InsertOrderedList"
,
u
(
"OL"
)),
a
.
addQueryStateHandler
(
"InsertDefinitionList"
,
u
(
"DL"
)),
a
.
on
(
"keydown"
,
function
(
b
){
9
!=
b
.
keyCode
||
tinymce
.
util
.
VK
.
metaKeyPressed
(
b
)
||
a
.
dom
.
getParent
(
a
.
selection
.
getStart
(),
"LI,DT,DD"
)
&&
(
b
.
preventDefault
(),
b
.
shiftKey
?
q
()
:
p
())})}),
a
.
addButton
(
"indent"
,{
icon
:
"indent"
,
title
:
"Increase indent"
,
cmd
:
"Indent"
,
onPostRender
:
function
(){
var
b
=
this
;
a
.
on
(
"nodechange"
,
function
(){
for
(
var
d
=
a
.
selection
.
getSelectedBlocks
(),
e
=!
1
,
f
=
0
,
g
=
d
.
length
;
!
e
&&
g
>
f
;
f
++
){
var
h
=
d
[
f
].
nodeName
;
e
=
"LI"
==
h
&&
c
(
d
[
f
])
||
"UL"
==
h
||
"OL"
==
h
||
"DD"
==
h
}
b
.
disabled
(
e
)})}}),
a
.
on
(
"keydown"
,
function
(
a
){
a
.
keyCode
==
tinymce
.
util
.
VK
.
BACKSPACE
?
f
.
backspaceDelete
()
&&
a
.
preventDefault
()
:
a
.
keyCode
==
tinymce
.
util
.
VK
.
DELETE
&&
f
.
backspaceDelete
(
!
0
)
&&
a
.
preventDefault
()})});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, May 22, 4:11 AM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
758746
Default Alt Text
plugin.min.js (7 KB)
Attached To
Mode
R3 roundcubemail
Attached
Detach File
Event Timeline
Log In to Comment