|
|
1 |
|
(function(
){var Even
t=tinymce.
dom.Event,
grep=tinym
ce.grep,ea
ch=tinymce
.each,inAr
ray=tinymc
e.inArray,
isOldWebKi
t=tinymce.
isOldWebKi
t;tinymce.
create('ti
nymce.plug
ins.Safari
',{init:fu
nction(ed)
{var t=thi
s,dom;if(!
tinymce.is
WebKit)ret
urn;t.edit
or=ed;t.we
bKitFontSi
zes=['x-sm
all','smal
l','medium
','large',
'x-large',
'xx-large'
,'-webkit-
xxx-large'
];t.namedF
ontSizes=[
'xx-small'
,'x-small'
,'small','
medium','l
arge','x-l
arge','xx-
large'];ed
.onKeyUp.a
dd(functio
n(ed,e){va
r h;if(e.k
eyCode==46
||e.keyCod
e==8){h=ed
.getBody()
.innerHTML
;if(!/<(im
g|hr)/.tes
t(h)&&tiny
mce.trim(h
.replace(/
<[^>]+>/g,
'')).lengt
h==0)ed.se
tContent('
',{format:
'raw'});}}
);ed.addCo
mmand('For
matBlock',
function(u
,v){var do
m=ed.dom,e
=dom.getPa
rent(ed.se
lection.ge
tNode(),do
m.isBlock)
;if(e)dom.
replace(do
m.create(v
),e,1);els
e ed.getDo
c().execCo
mmand("For
matBlock",
false,v);}
);ed.addCo
mmand('mce
InsertCont
ent',funct
ion(u,v){e
d.getDoc()
.execComma
nd("Insert
Text",fals
e,'mce_mar
ker');ed.g
etBody().i
nnerHTML=e
d.getBody(
).innerHTM
L.replace(
/mce_marke
r/g,v+'<sp
an id="_mc
e_tmp">XX<
/span>');e
d.selectio
n.select(e
d.dom.get(
'_mce_tmp'
));ed.getD
oc().execC
ommand("De
lete",fals
e,' ');});
ed.onKeyPr
ess.add(fu
nction(ed,
e){if(e.ke
yCode==13&
&(e.shiftK
ey||ed.set
tings.forc
e_br_newli
nes&&ed.se
lection.ge
tNode().no
deName!='L
I')){t._in
sertBR(ed)
;Event.can
cel(e);}})
;ed.addQue
ryValueHan
dler('Font
Size',func
tion(u,v){
var e,v;if
((e=ed.dom
.getParent
(ed.select
ion.getSta
rt(),'span
'))&&(v=e.
style.font
Size))retu
rn tinymce
.inArray(t
.namedFont
Sizes,v)+1
;if((e=ed.
dom.getPar
ent(ed.sel
ection.get
End(),'spa
n'))&&(v=e
.style.fon
tSize))ret
urn tinymc
e.inArray(
t.namedFon
tSizes,v)+
1;return e
d.getDoc()
.queryComm
andValue('
FontSize')
;});ed.add
QueryValue
Handler('F
ontName',f
unction(u,
v){var e,v
;if((e=ed.
dom.getPar
ent(ed.sel
ection.get
Start(),'s
pan'))&&(v
=e.style.f
ontFamily)
)return v.
replace(/,
/g,',');i
f((e=ed.do
m.getParen
t(ed.selec
tion.getEn
d(),'span'
))&&(v=e.s
tyle.fontF
amily))ret
urn v.repl
ace(/, /g,
',');retur
n ed.getDo
c().queryC
ommandValu
e('FontNam
e');});ed.
onClick.ad
d(function
(ed,e){e=e
.target;if
(e.nodeNam
e=='IMG'){
t.selElm=e
;ed.select
ion.select
(e);}else
t.selElm=n
ull;});ed.
onBeforeEx
ecCommand.
add(functi
on(ed,c,b)
{var r=t.b
ookmarkRng
;if(r){ed.
selection.
setRng(r);
t.bookmark
Rng=null;}
});ed.onIn
it.add(fun
ction(){t.
_fixWebKit
Spans();ed
.windowMan
ager.onOpe
n.add(func
tion(){var
r=ed.sele
ction.getR
ng();if(r.
startConta
iner!=ed.g
etDoc()){t
.bookmarkR
ng=r.clone
Range();}}
);ed.windo
wManager.o
nClose.add
(function(
){t.bookma
rkRng=null
;});if(isO
ldWebKit)t
._patchSaf
ari2x(ed);
});ed.onSe
tContent.a
dd(functio
n(){dom=ed
.dom;each(
['strong',
'b','em','
u','strike
','sub','s
up','a'],f
unction(v)
{each(grep
(dom.selec
t(v)).reve
rse(),func
tion(n){va
r nn=n.nod
eName.toLo
werCase(),
st;if(nn==
'a'){if(n.
name)dom.r
eplace(dom
.create('i
mg',{mce_n
ame:'a',na
me:n.name,
'class':'m
ceItemAnch
or'}),n);r
eturn;}swi
tch(nn){ca
se'b':case
'strong':i
f(nn=='b')
nn='strong
';st='font
-weight: b
old;';brea
k;case'em'
:st='font-
style: ita
lic;';brea
k;case'u':
st='text-d
ecoration:
underline
;';break;c
ase'sub':s
t='vertica
l-align: s
ub;';break
;case'sup'
:st='verti
cal-align:
super;';b
reak;case'
strike':st
='text-dec
oration: l
ine-throug
h;';break;
}dom.repla
ce(dom.cre
ate('span'
,{mce_name
:nn,style:
st,'class'
:'Apple-st
yle-span'}
),n,1);});
});});ed.o
nPreProces
s.add(func
tion(ed,o)
{dom=ed.do
m;each(gre
p(o.node.g
etElements
ByTagName(
'span')).r
everse(),f
unction(n)
{var v,bg;
if(o.get){
if(dom.has
Class(n,'A
pple-style
-span')){b
g=n.style.
background
Color;swit
ch(dom.get
Attrib(n,'
mce_name')
){case'fon
t':if(!ed.
settings.c
onvert_fon
ts_to_span
s)dom.setA
ttrib(n,'s
tyle','');
break;case
'strong':c
ase'em':ca
se'sub':ca
se'sup':do
m.setAttri
b(n,'style
','');brea
k;case'str
ike':case'
u':if(!ed.
settings.i
nline_styl
es)dom.set
Attrib(n,'
style','')
;else dom.
setAttrib(
n,'mce_nam
e','');bre
ak;default
:if(!ed.se
ttings.inl
ine_styles
)dom.setAt
trib(n,'st
yle','');}
if(bg)n.st
yle.backgr
oundColor=
bg;}}if(do
m.hasClass
(n,'mceIte
mRemoved')
)dom.remov
e(n,1);});
});ed.onPo
stProcess.
add(functi
on(ed,o){o
.content=o
.content.r
eplace(/<b
r \/><\/(h
[1-6]|div|
p|address|
pre)>/g,'<
/$1>');o.c
ontent=o.c
ontent.rep
lace(/ id=
\"undefine
d\"/g,'');
});},_fixW
ebKitSpans
:function(
){var t=th
is,ed=t.ed
itor;if(!i
sOldWebKit
){Event.ad
d(ed.getDo
c(),'DOMNo
deInserted
',function
(e){e=e.ta
rget;if(e&
&e.nodeTyp
e==1)t._fi
xAppleSpan
(e);});}el
se{ed.onEx
ecCommand.
add(functi
on(){each(
ed.dom.sel
ect('span'
),function
(n){t._fix
AppleSpan(
n);});ed.n
odeChanged
();});}},_
fixAppleSp
an:functio
n(e){var e
d=this.edi
tor,dom=ed
.dom,fz=th
is.webKitF
ontSizes,f
zn=this.na
medFontSiz
es,s=ed.se
ttings,st,
p;if(dom.g
etAttrib(e
,'mce_fixe
d'))return
;if(e.node
Name=='SPA
N'&&e.clas
sName=='Ap
ple-style-
span'){st=
e.style;if
(!s.conver
t_fonts_to
_spans){if
(st.fontSi
ze){dom.se
tAttrib(e,
'mce_name'
,'font');d
om.setAttr
ib(e,'size
',inArray(
fz,st.font
Size)+1);}
if(st.font
Family){do
m.setAttri
b(e,'mce_n
ame','font
');dom.set
Attrib(e,'
face',st.f
ontFamily)
;}if(st.co
lor){dom.s
etAttrib(e
,'mce_name
','font');
dom.setAtt
rib(e,'col
or',dom.to
Hex(st.col
or));}if(s
t.backgrou
ndColor){d
om.setAttr
ib(e,'mce_
name','fon
t');dom.se
tStyle(e,'
background
-color',st
.backgroun
dColor);}}
else{if(st
.fontSize)
dom.setSty
le(e,'font
Size',fzn[
inArray(fz
,st.fontSi
ze)]);}if(
st.fontWei
ght=='bold
')dom.setA
ttrib(e,'m
ce_name','
strong');i
f(st.fontS
tyle=='ita
lic')dom.s
etAttrib(e
,'mce_name
','em');if
(st.textDe
coration==
'underline
')dom.setA
ttrib(e,'m
ce_name','
u');if(st.
textDecora
tion=='lin
e-through'
)dom.setAt
trib(e,'mc
e_name','s
trike');if
(st.vertic
alAlign=='
super')dom
.setAttrib
(e,'mce_na
me','sup')
;if(st.ver
ticalAlign
=='sub')do
m.setAttri
b(e,'mce_n
ame','sub'
);dom.setA
ttrib(e,'m
ce_fixed',
'1');}},_p
atchSafari
2x:functio
n(ed){var
t=this,set
Content,ge
tNode,dom=
ed.dom,lr;
if(ed.wind
owManager.
onBeforeOp
en){ed.win
dowManager
.onBeforeO
pen.add(fu
nction(){r
=ed.select
ion.getRng
();});}ed.
selection.
select=fun
ction(n){t
his.getSel
().setBase
AndExtent(
n,0,n,1);}
;getNode=e
d.selectio
n.getNode;
ed.selecti
on.getNode
=function(
){return t
.selElm||g
etNode.cal
l(this);};
ed.selecti
on.getRng=
function()
{var t=thi
s,s=t.getS
el(),d=ed.
getDoc(),r
,rb,ra,di;
if(s.ancho
rNode){r=d
.createRan
ge();try{r
b=d.create
Range();rb
.setStart(
s.anchorNo
de,s.ancho
rOffset);r
b.collapse
(1);ra=d.c
reateRange
();ra.setS
tart(s.foc
usNode,s.f
ocusOffset
);ra.colla
pse(1);di=
rb.compare
BoundaryPo
ints(rb.ST
ART_TO_END
,ra)<0;r.s
etStart(di
?s.anchorN
ode:s.focu
sNode,di?s
.anchorOff
set:s.focu
sOffset);r
.setEnd(di
?s.focusNo
de:s.ancho
rNode,di?s
.focusOffs
et:s.ancho
rOffset);l
r=r;}catch
(ex){}}ret
urn r||lr;
};setConte
nt=ed.sele
ction.setC
ontent;ed.
selection.
setContent
=function(
h,s){var r
=this.getR
ng(),b;try
{setConten
t.call(thi
s,h,s);}ca
tch(ex){b=
dom.create
('body');b
.innerHTML
=h;each(b.
childNodes
,function(
n){r.inser
tNode(n.cl
oneNode(tr
ue));});}}
;},_insert
BR:functio
n(ed){var
dom=ed.dom
,s=ed.sele
ction,r=s.
getRng(),b
r;r.insert
Node(br=do
m.create('
br'));r.se
tStartAfte
r(br);r.se
tEndAfter(
br);s.setR
ng(r);if(s
.getSel().
focusNode=
=br.previo
usSibling)
{s.select(
dom.insert
After(dom.
doc.create
TextNode('
\u00a0'),b
r));s.coll
apse(1);}e
d.getWin()
.scrollTo(
0,dom.getP
os(s.getRn
g().startC
ontainer).
y);}});tin
ymce.Plugi
nManager.a
dd('safari
',tinymce.
plugins.Sa
fari);})()
;
|