Initial Commit Update Telerik
This commit is contained in:
8
LPWeb20/RichtextEditor/downlevel/blank.htm
Normal file
8
LPWeb20/RichtextEditor/downlevel/blank.htm
Normal file
@@ -0,0 +1,8 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>blank</title>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
288
LPWeb20/RichtextEditor/downlevel/common.xml
Normal file
288
LPWeb20/RichtextEditor/downlevel/common.xml
Normal file
@@ -0,0 +1,288 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jsml xmlns="http://cutesoft.net/jsml"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../core/jsml.xsd">
|
||||
|
||||
|
||||
<execute>
|
||||
<![CDATA[
|
||||
jsml.brsw1=["border-top-width","border-right-width","border-bottom-width","border-left-width"];
|
||||
jsml.brsw2=["borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"];
|
||||
]]>
|
||||
</execute>
|
||||
|
||||
<jsml-def name="rteborderstyle">
|
||||
<attach name="attach_dom">
|
||||
<![CDATA[
|
||||
if(self._border)return;
|
||||
var sty=jsml.msie?self._element.currentStyle:window.getComputedStyle(self._element,null);
|
||||
var arr=jsml.msie?jsml.brsw2:jsml.brsw1;
|
||||
var bor=[];
|
||||
for(var i=0;i<arr.length;i++)
|
||||
{
|
||||
var val=jsml.msie?sty[arr[i]]:sty.getPropertyValue(arr[i]);
|
||||
bor[i]=parseInt(val)||0;
|
||||
}
|
||||
self.set_border_width(bor);
|
||||
]]>
|
||||
</attach>
|
||||
</jsml-def>
|
||||
|
||||
<jsml-def name="rtemousecontrol">
|
||||
<jsml-ref name="rteborderstyle"/>
|
||||
<initialize>
|
||||
self._element.ondragstart=new Function("","return false");
|
||||
</initialize>
|
||||
<attach name="mousehover">
|
||||
if(self._hovered)return;
|
||||
self._hovered=true;
|
||||
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
||||
</attach>
|
||||
<attach name="mousedown" arguments="jevent,devent">
|
||||
self._isclicked=true;
|
||||
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
||||
if(devent)devent.cancel_default();
|
||||
</attach>
|
||||
<attach name="mouseup">
|
||||
self._isclicked=false;
|
||||
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
||||
</attach>
|
||||
<attach name="mouseleave">
|
||||
<![CDATA[
|
||||
self._hovered=false;
|
||||
setTimeout(function()
|
||||
{
|
||||
if(self._hovered)return;
|
||||
self._isclicked=false;
|
||||
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
||||
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
||||
},1);
|
||||
]]>
|
||||
</attach>
|
||||
<attach name="detach_dom">
|
||||
self._hovered=false;
|
||||
self._isclicked=false;
|
||||
self.invoke_event("tooglecssclass","hovered",self._hovered);
|
||||
self.invoke_event("tooglecssclass","clicked",self._isclicked);
|
||||
</attach>
|
||||
</jsml-def>
|
||||
|
||||
<jsml-def name="rtebuttoncontrol">
|
||||
<jsml-ref name="rtemousecontrol"/>
|
||||
<initialize>
|
||||
self.toggle_css_class("tbcontrol",true);
|
||||
</initialize>
|
||||
<property name="checked">
|
||||
<get>return self._checked</get>
|
||||
<set>self._checked=!!value;this.invoke_event("set_checked");</set>
|
||||
</property>
|
||||
<property name="disabled">
|
||||
<get>return self._disabled</get>
|
||||
<set>self._disabled=!!value;this.invoke_event("set_disabled");</set>
|
||||
</property>
|
||||
<attach name="set_checked">
|
||||
self.invoke_event("tooglecssclass","checked",self._checked);
|
||||
</attach>
|
||||
<attach name="set_disabled">
|
||||
self.invoke_event("tooglecssclass","disabled",self._disabled);
|
||||
</attach>
|
||||
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
||||
self.toggle_css_class("tbcontrol_"+name,mode);
|
||||
</attach>
|
||||
</jsml-def>
|
||||
|
||||
<jsml-def name="rtecommandcontrol">
|
||||
<property name="command">
|
||||
<get>
|
||||
return self._command;
|
||||
</get>
|
||||
<set>
|
||||
self._command=value;
|
||||
self.update_image();
|
||||
</set>
|
||||
</property>
|
||||
<property name="arguments">
|
||||
<get>
|
||||
return self._arguments;
|
||||
</get>
|
||||
<set>
|
||||
self._arguments=value;
|
||||
</set>
|
||||
</property>
|
||||
<property name="imagename">
|
||||
<get>
|
||||
return self._imagename;
|
||||
</get>
|
||||
<set>
|
||||
self._imagename=value;
|
||||
self.update_image();
|
||||
</set>
|
||||
</property>
|
||||
<method name="find_config">
|
||||
<![CDATA[
|
||||
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
|
||||
if(ctrl._rteconfig)return ctrl._rteconfig;
|
||||
var editor=self.find_editor();
|
||||
if(editor)return editor._config;
|
||||
]]>
|
||||
</method>
|
||||
<method name="find_editor">
|
||||
<![CDATA[
|
||||
if(self._rteinstance)return self._rteinstance;
|
||||
for(var ctrl=self;ctrl!=null;ctrl=ctrl.get_jsml_parent())
|
||||
{
|
||||
if(!ctrl._rteinstance)continue;
|
||||
self._rteinstance=ctrl._rteinstance;
|
||||
return ctrl._rteinstance;
|
||||
}
|
||||
]]>
|
||||
</method>
|
||||
|
||||
<method name="change_src" arguments="image,value">
|
||||
<![CDATA[
|
||||
image.set_src(value);
|
||||
]]>
|
||||
</method>
|
||||
<method name="update_image">
|
||||
<![CDATA[
|
||||
|
||||
var image=self.image||self;
|
||||
|
||||
if(!self._dom_attached)return;
|
||||
var imgname=self._imagename||self._command;
|
||||
if(!imgname)
|
||||
return;
|
||||
|
||||
imgname=imgname.toLowerCase();
|
||||
var imgfile="images/"+imgname+".png";
|
||||
|
||||
self.change_src(image,"{folder}"+imgfile);
|
||||
|
||||
]]>
|
||||
</method>
|
||||
<attach name="attach_dom">
|
||||
self._config=self.find_config();
|
||||
|
||||
self.update_image();
|
||||
</attach>
|
||||
<attach name="click">
|
||||
self.exec_command();
|
||||
</attach>
|
||||
<method name="exec_command" arguments="suffix,splitcmd">
|
||||
<![CDATA[
|
||||
var editor=self.find_editor();
|
||||
if(!editor)return;
|
||||
if(!splitcmd)
|
||||
{
|
||||
splitcmd=self.get_command();
|
||||
if(!splitcmd)return;
|
||||
if(suffix)splitcmd+=suffix;
|
||||
}
|
||||
var args=self.get_arguments();
|
||||
if(!args)args=[];
|
||||
else args=args.split(',');
|
||||
var target=self._commandelement||self._element;
|
||||
editor.ExecUICommand(target,splitcmd,args[0],args[1],args[2],args[3]);
|
||||
]]>
|
||||
</method>
|
||||
|
||||
</jsml-def>
|
||||
|
||||
<jsml-def name="rtetoolbarcontrol">
|
||||
|
||||
<jsml-ref name="rtecommandcontrol" />
|
||||
|
||||
<attach name="contextmenu" arguments="je,de">
|
||||
de.cancel_default();
|
||||
</attach>
|
||||
|
||||
<property name="noactive">
|
||||
<get>return self._noactive;</get>
|
||||
<set>self._noactive=value;</set>
|
||||
</property>
|
||||
<attach name="editor_ready" arguments="jevent,arg0">
|
||||
<![CDATA[
|
||||
self._rteinstance=arg0;
|
||||
self._rteinstanceeventid=self._rteinstance.AttachEvent("UpdateUI",function(editor,e){
|
||||
self.invoke_event("update_statusui");
|
||||
});
|
||||
self.invoke_event("update_statusui");
|
||||
]]>
|
||||
</attach>
|
||||
<attach name="disposing">
|
||||
if(self._rteinstanceeventid)self._rteinstance.DetachEvent("UpdateUI",self._rteinstanceeventid);
|
||||
</attach>
|
||||
<attach name="update_statusui">
|
||||
<![CDATA[
|
||||
var command=self.get_command();
|
||||
if(!command)return;
|
||||
|
||||
var dc=!self._rteinstance.IsCommandReady(command)
|
||||
if(dc!=(!!self._disabled))
|
||||
{
|
||||
self.set_disabled(dc);
|
||||
}
|
||||
var qc=this._noactive?false:(!!self._rteinstance.IsCommandActive(command));
|
||||
if(qc!=(!!self._checked))
|
||||
{
|
||||
self.set_checked(qc);
|
||||
}
|
||||
]]>
|
||||
</attach>
|
||||
</jsml-def>
|
||||
|
||||
<jsml-def name="rtecommandcolor">
|
||||
<panel id="colorpanel" width="16" height="4" left="2" bottom="2" back_color="black" />
|
||||
|
||||
<attach name="update_statusui">
|
||||
<![CDATA[
|
||||
var image=self.image;
|
||||
var editor=self._rteinstance;
|
||||
var cmdlower=self.get_command().toLowerCase();
|
||||
var colorpanel=self.find_child("colorpanel");
|
||||
if(cmdlower=='forecolor')
|
||||
{
|
||||
var color=editor.current_forecolor||editor._config.default_forecolor;
|
||||
colorpanel.set_back_color(color);
|
||||
}
|
||||
if(cmdlower=='backcolor')
|
||||
{
|
||||
var color=editor.current_backcolor||editor._config.default_backcolor;
|
||||
colorpanel.set_back_color(color);
|
||||
}
|
||||
]]>
|
||||
</attach>
|
||||
</jsml-def>
|
||||
|
||||
|
||||
<image jsml-class="dlimage" cursor="pointer" width="22" height="20" overflow="none" dock="left">
|
||||
<jsml-ref name="rtebuttoncontrol" />
|
||||
<jsml-ref name="rtetoolbarcontrol"/>
|
||||
<initialize>
|
||||
self.toggle_css_class("dlimage");
|
||||
</initialize>
|
||||
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
||||
self.toggle_css_class("dlimage_"+name,mode);
|
||||
</attach>
|
||||
</image>
|
||||
|
||||
<panel jsml-class="dlgroup" dock="flow" overflow_x="visible" margin="2,3,3,1" height="22" width="20" padding="0,-1,0,-1">
|
||||
|
||||
<jsml-ref name="rteborderstyle"/>
|
||||
|
||||
<initialize>
|
||||
self.toggle_css_class("dlgroup");
|
||||
</initialize>
|
||||
<attach name="tooglecssclass" arguments="jevent,name,mode">
|
||||
self.toggle_css_class("dlgroup_"+name,mode);
|
||||
</attach>
|
||||
</panel>
|
||||
|
||||
|
||||
|
||||
<execute>
|
||||
<![CDATA[
|
||||
jsml.rtecommonlibraryloaded=true;
|
||||
]]>
|
||||
</execute>
|
||||
|
||||
</jsml>
|
||||
570
LPWeb20/RichtextEditor/downlevel/downlevel.js
Normal file
570
LPWeb20/RichtextEditor/downlevel/downlevel.js
Normal file
@@ -0,0 +1,570 @@
|
||||
window.RTEDownlevelInit=function(config)
|
||||
{
|
||||
var ua=navigator.userAgent;
|
||||
|
||||
if(!config.ubbmode&&ua.match(/MSIE [5678]/i))
|
||||
return;
|
||||
if(ua.match(/Firefox\/1\.[0-4]/i))
|
||||
return;
|
||||
if(ua.match(/Safari\/41/i))
|
||||
return;
|
||||
|
||||
var _debugmode=false;
|
||||
if(location.href.indexOf("://127.0.0.1")!=-1||location.href.indexOf("rtenocache")!=-1)
|
||||
_debugmode=true;
|
||||
|
||||
var d=new Date();
|
||||
var urlsuffix="2012073100" //String(d.getFullYear()*10000+(1+d.getMonth())*100+d.getDate());
|
||||
|
||||
if(_debugmode)
|
||||
urlsuffix=d.getTime();
|
||||
|
||||
var _showLangWarning=false;
|
||||
|
||||
function createxh()
|
||||
{
|
||||
return window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP");;
|
||||
}
|
||||
|
||||
var scriptmap={};
|
||||
function asyncloadscript(url,callback,runcode)
|
||||
{
|
||||
var item=scriptmap[url];
|
||||
if(item)
|
||||
{
|
||||
if(item.loading!='loading')
|
||||
{
|
||||
setTimeout(function()
|
||||
{
|
||||
callback(item.loading);
|
||||
},0);
|
||||
}
|
||||
else
|
||||
{
|
||||
item.callbacks.push(callback);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
item={url:url,loading:'loading',callbacks:[callback]};
|
||||
scriptmap[url]=item;
|
||||
|
||||
var index=0;
|
||||
function runcallbacks()
|
||||
{
|
||||
var func=item.callbacks[index];
|
||||
index++;
|
||||
if(index<item.callbacks.length)setTimeout(runcallbacks,0);
|
||||
func(item.loading);
|
||||
}
|
||||
|
||||
var xh=createxh();
|
||||
xh.open("GET",url,true);
|
||||
xh.onreadystatechange=function()
|
||||
{
|
||||
if(xh.readyState!=4)return;
|
||||
xh.onreadystatechange=new Function("","");
|
||||
setTimeout(runcallbacks,0);
|
||||
if(xh.status!=200)
|
||||
{
|
||||
item.succeed=false;
|
||||
item.loading='httperror:'+xh.status;
|
||||
//alert(item.loading)
|
||||
throw(new Error("failed to load "+url+" , \r\n http"+xh.status));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var code=xh.responseText;
|
||||
if(!runcode)
|
||||
runcode=new Function("","eval(arguments[0])");
|
||||
runcode(code);
|
||||
item.loading=null;
|
||||
}
|
||||
catch(x)
|
||||
{
|
||||
item.loading='scripterror:'+x.message;
|
||||
alert(x.message);
|
||||
throw(new Error("failed to load "+url+" , \r\n"+x.message));
|
||||
}
|
||||
|
||||
}
|
||||
xh.send("");
|
||||
}
|
||||
|
||||
|
||||
var loader={};
|
||||
loader._config=config;
|
||||
|
||||
config._debugmode=_debugmode;
|
||||
|
||||
var folder=config.folder;
|
||||
if(folder.indexOf("://")==-1&&folder.charAt(0)!="/")
|
||||
{
|
||||
var url=window.location.href.split('#')[0].split('?')[0].split('/');
|
||||
url[url.length-1]=folder;
|
||||
url.splice(0,3);
|
||||
config.folder=folder="/"+url.join('/');
|
||||
}
|
||||
|
||||
config.initdate=new Date();
|
||||
config._urlsuffix=urlsuffix;
|
||||
|
||||
|
||||
var langs=[];
|
||||
|
||||
function runlangcode(lang,code)
|
||||
{
|
||||
var func=new Function("lang,__code","eval(__code)");
|
||||
if(!lang._data)lang._data={};
|
||||
func(lang._data,code);
|
||||
}
|
||||
function asyncloadlangindex(index)
|
||||
{
|
||||
var lang=langs[index];
|
||||
if(!lang)return;
|
||||
if(lang.loading)return;
|
||||
lang.loading=true;
|
||||
function runcode(code)
|
||||
{
|
||||
runlangcode(lang,code);
|
||||
}
|
||||
function nextstep(err)
|
||||
{
|
||||
lang.loading=false;
|
||||
lang.loaded=true;
|
||||
if(index>0)asyncloadlangindex(index+1);
|
||||
}
|
||||
if(!lang.loaded)
|
||||
{
|
||||
asyncloadscript(lang.langurl,nextstep,runcode)
|
||||
}
|
||||
else
|
||||
{
|
||||
nextstep();
|
||||
}
|
||||
}
|
||||
function syncloadlang(lang)
|
||||
{
|
||||
var xh=createxh();
|
||||
xh.open("GET",lang.langurl,false);
|
||||
xh.send("");
|
||||
if(xh.status!=200)return;
|
||||
runlangcode(lang,xh.responseText);
|
||||
}
|
||||
|
||||
loader.getLangText=function(name)
|
||||
{
|
||||
var showWarning=_showLangWarning;
|
||||
if(!name)return "{empty}";
|
||||
|
||||
name=name.toLowerCase().replace(/(^\s+|\s+$)/g,"");
|
||||
for(var i=0;i<langs.length;i++)
|
||||
{
|
||||
var lang=langs[i];
|
||||
var dict=lang._data;
|
||||
if(!dict)
|
||||
{
|
||||
if(showWarning)
|
||||
{
|
||||
showWarning=false;
|
||||
setTimeout(function()
|
||||
{
|
||||
throw(new Error("Warning,sync load "+lang.langurl+" for text {"+name+"}"));
|
||||
},1);
|
||||
}
|
||||
syncloadlang(lang);
|
||||
dict=lang._data;
|
||||
}
|
||||
if(!dict)continue;
|
||||
var text=dict[name];
|
||||
if(!text)continue;
|
||||
if(text.indexOf("{")!=-1&&text.indexOf("}")!=-1)
|
||||
{
|
||||
for(var i=1;i<arguments.length;i++)
|
||||
{
|
||||
text=text.split("{"+(i-1)+"}").join(arguments[i]);
|
||||
}
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
if(config._debugmode)
|
||||
return "{"+name+"}";
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
function translate_lang(val)
|
||||
{
|
||||
if(val.indexOf("|")==-1)
|
||||
return loader.getLangText(val.substring(1));
|
||||
var pairs=val.split("|");
|
||||
for(var i=0;i<pairs.length;i++)
|
||||
{
|
||||
val=pairs[i];
|
||||
if(val.charAt(0)=="@")
|
||||
{
|
||||
if(val.length==1)
|
||||
pairs[i]="";
|
||||
else
|
||||
pairs[i]=loader.getLangText(val.substring(1));
|
||||
}
|
||||
}
|
||||
return pairs.join("");
|
||||
}
|
||||
|
||||
loader.translateText=function(text)
|
||||
{
|
||||
if(!text)return "";
|
||||
if(text.charAt(0)=="@")
|
||||
return translate_lang(text);
|
||||
return text;
|
||||
}
|
||||
|
||||
|
||||
function _loadmain()
|
||||
{
|
||||
if(loader._loadcalled)return;
|
||||
loader._loadcalled=true;
|
||||
|
||||
var ctrls=document.getElementsByName(config.uniqueid);
|
||||
for(var i=0;i<ctrls.length;i++)
|
||||
{
|
||||
var ctrl=ctrls[i];
|
||||
if(ctrl.nodeName=="INPUT"||ctrl.nodeName=="TEXTAREA")
|
||||
loader.textarea=ctrl;
|
||||
}
|
||||
if(!loader.textarea)
|
||||
{
|
||||
//error no textarea
|
||||
return;
|
||||
}
|
||||
|
||||
loader.textareainitvalue=loader.textarea.value;
|
||||
|
||||
function nextstep(err)
|
||||
{
|
||||
if(err)
|
||||
{
|
||||
alert("Unable to load config.js \r\n"+err);
|
||||
}
|
||||
else
|
||||
{
|
||||
_configready()
|
||||
}
|
||||
};
|
||||
if(config.baseconfig||window.RTE_Configuration)
|
||||
_configready();
|
||||
else
|
||||
asyncloadscript(config.folder+"scripts/config.js?"+config._urlsuffix,nextstep)
|
||||
}
|
||||
function _configready()
|
||||
{
|
||||
var baseconfig=config.baseconfig||window.RTE_Configuration;
|
||||
|
||||
if(baseconfig)
|
||||
{
|
||||
for(var p in baseconfig)
|
||||
{
|
||||
if(!config.hasOwnProperty(p))
|
||||
config[p]=baseconfig[p];
|
||||
}
|
||||
}
|
||||
|
||||
var csscontainer=document.getElementsByTagName("head")[0]||document.body;
|
||||
|
||||
if(!window.richtexteditorcss)
|
||||
{
|
||||
var link=document.createElement("LINK");
|
||||
link.setAttribute("rel","stylesheet");
|
||||
link.setAttribute("href",config.folder+"downlevel/style.css?"+config._urlsuffix);
|
||||
csscontainer.insertBefore(link,csscontainer.firstChild);
|
||||
window.richtexteditorcss=link;
|
||||
}
|
||||
|
||||
config.skin_div=document.getElementById(config.containerid);
|
||||
config.skin_divborder=config.skin_div.style.border;
|
||||
config.skin_div.style.border="solid 1px #eeeeee";
|
||||
|
||||
config.skin_div.innerHTML="<table style='width:100%;height:100%;'><tr>"
|
||||
+"<td style='vertical-align:center;text-align:center;'>"
|
||||
+"<img src='"+config.folder+"images/"+config.loader_loadingimage+"'/></td></tr></table>";
|
||||
|
||||
|
||||
if(config.langfiles)
|
||||
{
|
||||
var langarr=config.langfiles.split(',');
|
||||
for(var i=0;i<langarr.length;i++)
|
||||
{
|
||||
langs.push({langfile:langarr[i],langurl:config.folder+"lang/"+langarr[i]+".js?"+config._urlsuffix});
|
||||
}
|
||||
asyncloadlangindex(0);
|
||||
}
|
||||
|
||||
|
||||
setTimeout(function()
|
||||
{
|
||||
_loadjsml();
|
||||
},config.loader_loadcodedelay||1);
|
||||
|
||||
|
||||
}
|
||||
function _loadjsml()
|
||||
{
|
||||
function nextstep()
|
||||
{
|
||||
_loadcommonxml();
|
||||
};
|
||||
if(window.jsml)
|
||||
nextstep();
|
||||
else
|
||||
asyncloadscript(config.folder+"core/jsml.js?"+config._urlsuffix,nextstep)
|
||||
}
|
||||
|
||||
function translate_value(val)
|
||||
{
|
||||
if(val.charAt(0)=="@")
|
||||
return translate_lang(val);
|
||||
if(val.indexOf('}')==-1)
|
||||
return val;
|
||||
val=val.split('{folder}').join(config.folder);
|
||||
val=val.split('{timems}').join(config._debugmode?new Date().getTime():config._urlsuffix);
|
||||
return val;
|
||||
}
|
||||
|
||||
function _load_jsml_xml(url,callback)
|
||||
{
|
||||
jsml.jsmlfolder=config.folder+"core";
|
||||
var xh=jsml.xmlhttp();
|
||||
xh.onreadystatechange=function()
|
||||
{
|
||||
if(xh.readyState<4)return;
|
||||
xh.onreadystatechange=new Function();
|
||||
if(xh.status==0)return;
|
||||
if(xh.status!=200)
|
||||
{
|
||||
alert("Unable to load "+url+", http error "+xh.status);
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
jsml.parse_xmldoc(xh.responseXML,null,null,null,translate_value);
|
||||
}
|
||||
catch(x)
|
||||
{
|
||||
alert("Unable to parse "+url+" , "+x.message);
|
||||
return;
|
||||
}
|
||||
//callback();
|
||||
setTimeout(callback,12);
|
||||
};
|
||||
xh.open("GET",url,true);
|
||||
xh.send("");
|
||||
}
|
||||
|
||||
function _loadcommonxml()
|
||||
{
|
||||
if(jsml.rtecommonlibraryloaded)
|
||||
{
|
||||
_loaduihtml();
|
||||
return;
|
||||
}
|
||||
var url=config.folder+"downlevel/common.xml?"+config._urlsuffix;
|
||||
_load_jsml_xml(url,function()
|
||||
{
|
||||
_loaduihtml();
|
||||
});
|
||||
}
|
||||
function _loaduihtml()
|
||||
{
|
||||
config.uixmlclass=config.ubbmode?"rteubblayout":"rtehtmlayout";
|
||||
if(jsml.class_exists(config.uixmlclass))
|
||||
{
|
||||
_loadeditorui();
|
||||
return;
|
||||
}
|
||||
var url=config.folder+"downlevel/"+(config.ubbmode?"rteubb":"rtehtm")+".xml?"+config._urlsuffix;
|
||||
_load_jsml_xml(url,_loadeditorui);
|
||||
}
|
||||
|
||||
function _loadeditorui()
|
||||
{
|
||||
config.skin_div.style.border=config.skin_divborder;
|
||||
jsml.suppend_layout();
|
||||
config.skin_control=jsml.class_create_instance(config.uixmlclass);
|
||||
|
||||
config.skin_control._rteconfig=config;
|
||||
config.skin_container=config.skin_control.editor_frame_container;
|
||||
var width=config.skin_div.clientWidth||parseInt(config.skin_div.style.width)||760;
|
||||
var height=config.skin_div.clientHeight||parseInt(config.skin_div.style.height)||480;
|
||||
config.skin_control.set_width(width);
|
||||
config.skin_control.set_height(height);
|
||||
|
||||
|
||||
|
||||
if(config.ubbmode)
|
||||
{
|
||||
loader.textbox=jsml.class_create_instance("textbox",[loader.textarea]);
|
||||
//fix IE bug :
|
||||
loader.textbox.set_text(loader.textareainitvalue);
|
||||
loader.textbox.set_dock("fill");
|
||||
config.skin_container.append_child(loader.textbox);
|
||||
config.skin_div.innerHTML="";
|
||||
config.skin_control.set_parent(config.skin_div);
|
||||
setTimeout(_loadtextbox,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
loader.textarea.style.display='none';
|
||||
config.skin_div.parentNode.insertBefore(loader.textarea,config.skin_div);
|
||||
config.skin_div.innerHTML="";
|
||||
config.skin_control.set_parent(config.skin_div);
|
||||
setTimeout(_loadframe,1);
|
||||
}
|
||||
|
||||
jsml.resume_layout();
|
||||
}
|
||||
|
||||
function _loadtextbox()
|
||||
{
|
||||
_loadscript();
|
||||
}
|
||||
|
||||
function _loadframe()
|
||||
{
|
||||
var frame=document.createElement("IFRAME");
|
||||
config.skin_frame=frame;
|
||||
function handle_resize()
|
||||
{
|
||||
frame.style.width=Math.max(0,config.skin_container.get_client_width()-0)+"px";
|
||||
frame.style.height=Math.max(0,config.skin_container.get_client_height()-0)+"px";
|
||||
}
|
||||
var frameurl=config.folder+"downlevel/blank.htm?"+config._urlsuffix;
|
||||
var frameloaded=false;
|
||||
function frameonload()
|
||||
{
|
||||
frameloaded=true;
|
||||
frame.onload=new Function();
|
||||
|
||||
if(config.designtimeblankhtml)
|
||||
{
|
||||
_loadscript();
|
||||
return;
|
||||
}
|
||||
|
||||
var url=frameurl;
|
||||
var xh=jsml.xmlhttp();
|
||||
xh.onreadystatechange=function()
|
||||
{
|
||||
if(xh.readyState<4)return;
|
||||
xh.onreadystatechange=new Function();
|
||||
if(xh.status==0)return;
|
||||
if(xh.status!=200)
|
||||
{
|
||||
alert("Unable to load "+url);
|
||||
return;
|
||||
}
|
||||
|
||||
config.designtimeblankhtml=xh.responseText;
|
||||
_loadscript();
|
||||
};
|
||||
xh.open("GET",url,true);
|
||||
xh.send("");
|
||||
};
|
||||
//frame.onload=frameonload;
|
||||
frame.frameBorder=0;
|
||||
frame.setAttribute("src",frameurl);
|
||||
config.skin_container._content.appendChild(frame);
|
||||
config.skin_container.attach_event("resize",handle_resize);
|
||||
handle_resize();
|
||||
|
||||
//some browsers has trouble on frame.onload
|
||||
function checkframeload()
|
||||
{
|
||||
if(frameloaded)return;
|
||||
var win=frame.contentWindow;
|
||||
//if(win&&win.document&&win.document.readyState=="complete")
|
||||
// return frameonload();
|
||||
if(win&&win.document&&win.document.body)
|
||||
return frameonload();
|
||||
setTimeout(checkframeload,10);
|
||||
|
||||
}
|
||||
setTimeout(checkframeload,10);
|
||||
}
|
||||
|
||||
function GetEditorClass()
|
||||
{
|
||||
return config.ubbmode?window.RTEBBCodeEditor:window.RTESimpleEditor;
|
||||
}
|
||||
|
||||
function _loadscript()
|
||||
{
|
||||
if(GetEditorClass())
|
||||
{
|
||||
_loadeditor();
|
||||
return;
|
||||
}
|
||||
if(config.ubbmode)
|
||||
asyncloadscript(config.folder+"downlevel/rteubb.js?"+config._urlsuffix,_loadeditor);
|
||||
else
|
||||
asyncloadscript(config.folder+"downlevel/rtehtm.js?"+config._urlsuffix,_loadeditor);
|
||||
}
|
||||
|
||||
function _loadeditor()
|
||||
{
|
||||
var frame=config.skin_frame;
|
||||
var editorctor=GetEditorClass();
|
||||
var editor=new editorctor(config,loader.textarea,loader);
|
||||
config.skin_control._rteinstance=editor;
|
||||
config.skin_control.invoke_recursive("editor_ready",editor);
|
||||
|
||||
asyncloadlangindex(1);
|
||||
|
||||
}
|
||||
|
||||
loader.asyncloadscript=asyncloadscript;
|
||||
|
||||
loader.translate_value=translate_value;
|
||||
|
||||
loader.load=function()
|
||||
{
|
||||
_loadmain();
|
||||
}
|
||||
loader.startLoadTimer=function(timeout)
|
||||
{
|
||||
loader._loadtimerid=setTimeout(_loadmain,timeout);
|
||||
}
|
||||
loader.cancelLoadTimer=function()
|
||||
{
|
||||
clearTimeout(loader._loadtimerid);
|
||||
}
|
||||
|
||||
loader.preloadScripts=function()
|
||||
{
|
||||
var arr=[];
|
||||
arr.push(config.folder+"scripts/config.js?"+config._urlsuffix);
|
||||
arr.push(config.folder+"core/jsml.js?"+config._urlsuffix);
|
||||
if(config.ubbmode)
|
||||
arr.push(config.folder+"downlevel/rteubb.js?"+config._urlsuffix);
|
||||
else
|
||||
arr.push(config.folder+"downlevel/rtehtm.js?"+config._urlsuffix);
|
||||
var index=-1;
|
||||
function LoadNext()
|
||||
{
|
||||
var url=arr[++index];
|
||||
if(url)asyncloadscript(url,LoadNext)
|
||||
//else , load the xml..
|
||||
}
|
||||
LoadNext();
|
||||
}
|
||||
|
||||
|
||||
_loadmain();
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
190
LPWeb20/RichtextEditor/downlevel/rtehtm.js
Normal file
190
LPWeb20/RichtextEditor/downlevel/rtehtm.js
Normal file
@@ -0,0 +1,190 @@
|
||||
|
||||
window.RTESimpleEditor=$rte.Base._extends(function(base,type){
|
||||
|
||||
this.init=function(config,textarea,loader)
|
||||
{
|
||||
var frame=config.skin_frame;
|
||||
var win=frame.contentWindow;
|
||||
var doc=win.document;
|
||||
if(jsml.msie)
|
||||
doc.body.contentEditable=true
|
||||
else
|
||||
doc.designMode='on';
|
||||
|
||||
|
||||
var body=doc.body;
|
||||
body.innerHTML=textarea.value;
|
||||
|
||||
var head=doc.getElementsByTagName("head")[0]
|
||||
|
||||
var link=doc.createElement("LINK");
|
||||
link.setAttribute("rel","stylesheet");
|
||||
link.setAttribute("href",config.folder+"styles/tabedit.css?"+config._urlsuffix);
|
||||
head.appendChild(link);
|
||||
|
||||
var contentcss=config.contentcss;
|
||||
if(contentcss)
|
||||
{
|
||||
contentcss=contentcss.split(',');
|
||||
for(var i=0;i<contentcss.length;i++)
|
||||
{
|
||||
if(!contentcss[i])
|
||||
continue;
|
||||
var link=doc.createElement("LINK");
|
||||
link.setAttribute("rel","stylesheet");
|
||||
link.setAttribute("href",this.MakeAbsoluteUrl(contentcss[i]));
|
||||
head.appendChild(link);
|
||||
}
|
||||
}
|
||||
|
||||
this._config=config;
|
||||
this._loader=loader;
|
||||
this._frame=frame;
|
||||
this._win=win;
|
||||
|
||||
var editor=this;
|
||||
this._updateuifunc=function()
|
||||
{
|
||||
editor.FireEvent("UpdateUI");
|
||||
};
|
||||
setTimeout(function()
|
||||
{
|
||||
editor._HookEvents();
|
||||
},100);
|
||||
}
|
||||
|
||||
this.MakeAbsoluteUrl=function(url)
|
||||
{
|
||||
if(url.charAt(0)!="/"&&url.indexOf("://")==-1)
|
||||
{
|
||||
var prefix=window.location.href.split('#')[0].split('?')[0].split('/');
|
||||
prefix[prefix.length-1]=url;
|
||||
prefix.splice(0,3);
|
||||
url="/"+prefix.join('/');
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
this._HookEvents=function()
|
||||
{
|
||||
var win=this._win;
|
||||
var doc=win.document;
|
||||
var editor=this;
|
||||
|
||||
function hook(obj,name,handler)
|
||||
{
|
||||
obj.addEventListener(name,handler,false);
|
||||
}
|
||||
|
||||
hook(doc,"click",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
hook(doc,"mousedown",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
hook(doc,"mouseup",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
hook(doc,"keyup",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
hook(doc,"keydown",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
hook(win,"selectionchange",function()
|
||||
{
|
||||
editor.CheckContentVersion();
|
||||
});
|
||||
}
|
||||
|
||||
this.CheckContentVersion=function()
|
||||
{
|
||||
clearTimeout(this._updateuitimerid);
|
||||
this._updateuitimerid=setTimeout(this._updateuifunc,100);
|
||||
}
|
||||
|
||||
this.IsCommandReady=function(command)
|
||||
{
|
||||
switch(command.toLowerCase())
|
||||
{
|
||||
case "insertblockquote":
|
||||
command="formatblock";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return this._win.document.queryCommandEnabled(command);
|
||||
}
|
||||
catch(x)
|
||||
{
|
||||
//document.title=command+","+x.message
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.IsCommandActive=function(command)
|
||||
{
|
||||
switch(command.toLowerCase())
|
||||
{
|
||||
case "justifyleft":
|
||||
return false;
|
||||
case "insertblockquote":
|
||||
return this.HasFormatBlock("blockquote");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
return this._win.document.queryCommandState(command);
|
||||
}
|
||||
catch(x)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this.ExecCommand=function(command,arg0,arg1)
|
||||
{
|
||||
switch(command.toLowerCase())
|
||||
{
|
||||
case "insertblockquote":
|
||||
command="formatblock";
|
||||
if(this.HasFormatBlock("blockquote"))
|
||||
command="outdent";
|
||||
else
|
||||
arg0="blockquote";
|
||||
break;
|
||||
}
|
||||
|
||||
this._win.document.execCommand(command,false,arg0);
|
||||
this.CheckContentVersion();
|
||||
}
|
||||
this.ExecUICommand=function(element,command,arg0,arg1)
|
||||
{
|
||||
this.ExecCommand(command,arg0,arg1);
|
||||
}
|
||||
|
||||
this.HasFormatBlock=function(name)
|
||||
{
|
||||
name=name.toUpperCase();
|
||||
var val=this._win.document.queryCommandValue("formatblock");
|
||||
if(val&&val.toUpperCase()==name)
|
||||
return true;
|
||||
var sel=this._win.getSelection();
|
||||
if(sel.rangeCount==0)
|
||||
return false;
|
||||
var rng=sel.getRangeAt(0);
|
||||
var node=rng.startContainer;
|
||||
if(!node)
|
||||
return false;
|
||||
for(;node;node=node.parentNode)
|
||||
if(node.nodeName==name)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
66
LPWeb20/RichtextEditor/downlevel/rtehtm.xml
Normal file
66
LPWeb20/RichtextEditor/downlevel/rtehtm.xml
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jsml xmlns="http://cutesoft.net/jsml"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../core/jsml.xsd">
|
||||
|
||||
|
||||
<panel jsml-class="rtehtmlayout" border_style="solid" border_width="1" border_color="#9abcd5">
|
||||
<panel dock="top" overflow="visible" padding="1,0,1,2" border_width="0,0,1,0" border_color="#9abcd5" background="#F0F7FE url({folder}styles/images/tbribbon_lightblue.png) repeat-x left bottom">
|
||||
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Undo" tooltip="@UNDO" />
|
||||
<image jsml-base="dlimage" command="Redo" tooltip="@REDO" />
|
||||
</panel>
|
||||
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Bold" tooltip="@BOLD" />
|
||||
<image jsml-base="dlimage" command="Italic" tooltip="@ITALIC" />
|
||||
<image jsml-base="dlimage" command="Underline" tooltip="@UNDERLINE" imagename="under" />
|
||||
<image jsml-base="dlimage" command="StrikeThrough" tooltip="@LINETHROUGH" imagename="strike" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Superscript" tooltip="@SUPERSCRIPT" />
|
||||
<image jsml-base="dlimage" command="Subscript" tooltip="@SUBSCRIPT" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="removeformat" tooltip="@REMOVEFORMAT" imagename="unformat" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="JustifyLeft" tooltip="@JUSTIFYLEFT" imagename="left" />
|
||||
<image jsml-base="dlimage" command="JustifyCenter" tooltip="@JUSTIFYCENTER" imagename="center" />
|
||||
<image jsml-base="dlimage" command="JustifyRight" tooltip="@JUSTIFYRIGHT" imagename="right" />
|
||||
<!--
|
||||
<image jsml-base="dlimage" command="JustifyFull"/>
|
||||
-->
|
||||
<image jsml-base="dlimage" command="insertblockquote" tooltip="@INSERTBLOCKQUOTE" imagename="blockquote" />
|
||||
</panel>
|
||||
|
||||
<!--
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Indent" tooltip="@INDENT" />
|
||||
<image jsml-base="dlimage" command="Outdent" tooltip="@OUTDENT" />
|
||||
</panel>
|
||||
-->
|
||||
|
||||
<attach name="contextmenu" arguments="je,de">
|
||||
de.cancel_default();
|
||||
</attach>
|
||||
<attach name="editor_ready" arguments="je,editor">
|
||||
//alert(editor);
|
||||
</attach>
|
||||
</panel>
|
||||
|
||||
<htmlcontrol jsml-member="editor_frame_container" dock="fill" back_color="white">
|
||||
|
||||
</htmlcontrol>
|
||||
|
||||
</panel>
|
||||
|
||||
|
||||
|
||||
|
||||
</jsml>
|
||||
121
LPWeb20/RichtextEditor/downlevel/rteubb.js
Normal file
121
LPWeb20/RichtextEditor/downlevel/rteubb.js
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
window.RTEBBCodeEditor=$rte.Base._extends(function(base,type){
|
||||
|
||||
this.init=function(config,textarea,loader)
|
||||
{
|
||||
this._textbox=loader.textbox;
|
||||
this._textbox.start_log();
|
||||
this._textbox.attach_event("logchange",this.delegate(function()
|
||||
{
|
||||
this.FireEvent("UpdateUI");
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
this.IsCommandReady=function(command)
|
||||
{
|
||||
switch(command.toLowerCase())
|
||||
{
|
||||
case "undo":
|
||||
return this._textbox.can_undo();
|
||||
case "redo":
|
||||
return this._textbox.can_redo();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
this.IsCommandActive=function(command)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
this.ExecCommand=function(command)
|
||||
{
|
||||
switch(command.toLowerCase())
|
||||
{
|
||||
case "undo":
|
||||
this._textbox.undo();
|
||||
break;
|
||||
case "redo":
|
||||
this._textbox.redo();
|
||||
break;
|
||||
case "bold":
|
||||
this.Surround("[b]","[/b]",["b"]);
|
||||
break;
|
||||
case "italic":
|
||||
this.Surround("[i]","[/i]",["i"]);
|
||||
break;
|
||||
case "underline":
|
||||
this.Surround("[u]","[/u]",["u"]);
|
||||
break;
|
||||
case "strikethrough":
|
||||
this.Surround("[s]","[/s]",["s"]);
|
||||
break;
|
||||
case "superscript":
|
||||
this.Surround("[sup]","[/sup]",["sup"]);
|
||||
break;
|
||||
case "subscript":
|
||||
this.Surround("[sub]","[/sub]",["sub"]);
|
||||
break;
|
||||
case "insertblockquote":
|
||||
this.Surround("[quote]","[/quote]",["quote"]);
|
||||
break;
|
||||
case "justifyleft":
|
||||
this.Surround("[align=left]","[/align]",["align"]);
|
||||
break;
|
||||
case "justifycenter":
|
||||
this.Surround("[align=center]","[/align]",["align"]);
|
||||
break;
|
||||
case "justifyright":
|
||||
this.Surround("[align=right]","[/align]",["align"]);
|
||||
break;
|
||||
case "removeformat":
|
||||
this.Surround("","",["b","i","u","s","sup","sub","face","size","color"]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.ExecUICommand=function(element,command)
|
||||
{
|
||||
this.ExecCommand(command);
|
||||
}
|
||||
|
||||
this.Surround=function(left,right,removes)
|
||||
{
|
||||
var txt=this._textbox.get_range_text();
|
||||
var add=true;
|
||||
if(txt)
|
||||
{
|
||||
var pl=txt.indexOf(left);
|
||||
var pr=txt.lastIndexOf(right);
|
||||
if(pl>-1&&pr>pl)
|
||||
{
|
||||
var l=txt.substring(0,pl);
|
||||
var r=txt.substring(pr+right.length);
|
||||
var re=/\[\/?[a-z\*]+(=[^\]]*)?\]/ig;
|
||||
if(!l.replace(re,"")&&!r.replace(re,""))
|
||||
{
|
||||
add=false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(txt&&removes)
|
||||
{
|
||||
for(var i=0;i<removes.length;i++)
|
||||
{
|
||||
var remove=removes[i];
|
||||
var re=new RegExp("\\[\\/?"+remove+"(=[^\\]]*)?\\]","ig");
|
||||
txt=txt.replace(re,"")
|
||||
}
|
||||
}
|
||||
if(add)
|
||||
{
|
||||
//TODO: prompt inner text
|
||||
//if(!txt)txt="content"
|
||||
txt=left+txt+right;
|
||||
}
|
||||
this._textbox.set_range_text(txt);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
58
LPWeb20/RichtextEditor/downlevel/rteubb.xml
Normal file
58
LPWeb20/RichtextEditor/downlevel/rteubb.xml
Normal file
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<jsml xmlns="http://cutesoft.net/jsml"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://cutesoft.net/jsml ../core/jsml.xsd">
|
||||
|
||||
|
||||
<panel jsml-class="rteubblayout" border_style="solid" border_width="1" border_color="#9abcd5">
|
||||
<panel dock="top" overflow="visible" padding="1,0,1,2" border_width="0,0,1,0" border_color="#9abcd5" background="#F0F7FE url({folder}styles/images/tbribbon_lightblue.png) repeat-x left bottom">
|
||||
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Undo" tooltip="@UNDO" />
|
||||
<image jsml-base="dlimage" command="Redo" tooltip="@REDO" />
|
||||
</panel>
|
||||
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Bold" tooltip="@BOLD" />
|
||||
<image jsml-base="dlimage" command="Italic" tooltip="@ITALIC" />
|
||||
<image jsml-base="dlimage" command="Underline" tooltip="@UNDERLINE" imagename="under" />
|
||||
<image jsml-base="dlimage" command="StrikeThrough" tooltip="@LINETHROUGH" imagename="strike" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="Superscript" tooltip="@SUPERSCRIPT" />
|
||||
<image jsml-base="dlimage" command="Subscript" tooltip="@SUBSCRIPT" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="removeformat" tooltip="@REMOVEFORMAT" imagename="unformat" />
|
||||
</panel>
|
||||
|
||||
<panel jsml-base="dlgroup">
|
||||
<image jsml-base="dlimage" command="JustifyLeft" tooltip="@JUSTIFYLEFT" imagename="left" />
|
||||
<image jsml-base="dlimage" command="JustifyCenter" tooltip="@JUSTIFYCENTER" imagename="center" />
|
||||
<image jsml-base="dlimage" command="JustifyRight" tooltip="@JUSTIFYRIGHT" imagename="right" />
|
||||
<!--
|
||||
<image jsml-base="dlimage" command="JustifyFull"/>
|
||||
-->
|
||||
<image jsml-base="dlimage" command="insertblockquote" tooltip="@INSERTBLOCKQUOTE" imagename="blockquote" />
|
||||
</panel>
|
||||
|
||||
<attach name="contextmenu" arguments="je,de">
|
||||
de.cancel_default();
|
||||
</attach>
|
||||
<attach name="editor_ready" arguments="je,editor">
|
||||
//alert(editor);
|
||||
</attach>
|
||||
</panel>
|
||||
|
||||
<panel jsml-member="editor_frame_container" dock="fill" back_color="white">
|
||||
|
||||
</panel>
|
||||
</panel>
|
||||
|
||||
|
||||
|
||||
|
||||
</jsml>
|
||||
203
LPWeb20/RichtextEditor/downlevel/style.css
Normal file
203
LPWeb20/RichtextEditor/downlevel/style.css
Normal file
@@ -0,0 +1,203 @@
|
||||
.jsml_textbox input,.jsml_textbox textarea,button.jsml_button,.jsml_dropdown select,fieldset
|
||||
{
|
||||
color: windowtext;
|
||||
font-family:"Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size:11px;
|
||||
}
|
||||
|
||||
.jsml_textbox input,.jsml_textbox textarea
|
||||
{
|
||||
line-height:14px;
|
||||
}
|
||||
|
||||
.jsml_button
|
||||
{
|
||||
color: windowtext;
|
||||
font-family: Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
.jsml_label, .menuitemlabel
|
||||
{
|
||||
color: windowtext;
|
||||
font-family: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
.jsml_dialogskin .jsml_label
|
||||
{
|
||||
color: windowtext;
|
||||
font-family: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
|
||||
/* default skin */
|
||||
|
||||
.tbcontrol , .splitbtnsplit , .dropdownsplit , .menuitem , .menuitemimage
|
||||
{
|
||||
border-color:transparent;
|
||||
*border-color:#fedcba;
|
||||
*filter:chroma(color=#fedcba);
|
||||
}
|
||||
|
||||
.floatmenu
|
||||
{
|
||||
background-color:#E9EEEE!important;
|
||||
background-image:url(images/menuleft.gif);
|
||||
}
|
||||
|
||||
.menuitem , .imagebutton , .panelbutton
|
||||
{
|
||||
border-width:1px;
|
||||
border-style:solid;
|
||||
background-color:transparent;
|
||||
}
|
||||
.menuitem .menuitemimage
|
||||
{
|
||||
background-color:transparent;
|
||||
}
|
||||
.menuitem
|
||||
{
|
||||
border-radius:3px;
|
||||
}
|
||||
.menuitem .menuitemimage
|
||||
{
|
||||
border-radius:3px;
|
||||
}
|
||||
|
||||
|
||||
/* checked */
|
||||
|
||||
.menuitem_checked .menuitemimage
|
||||
{
|
||||
background-color:#eeddcc;
|
||||
}
|
||||
.imagebutton_checked , .panelbutton_checked
|
||||
{
|
||||
border-color:#999999;
|
||||
background-image:url(images/tbcontrol_checked.png);
|
||||
}
|
||||
|
||||
/* hovered */
|
||||
|
||||
.menuitem_hovered , .imagebutton_hovered , .panelbutton_hovered
|
||||
{
|
||||
border-color:#FFBD69;
|
||||
background-color:#FFE7A2;
|
||||
/*background-image:url(images/tbcontrol_hovered.png);
|
||||
background-repeat:repeat-x;*/
|
||||
}
|
||||
|
||||
|
||||
/* clicked */
|
||||
.menuitem_clicked , .imagebutton_clicked , .panelbutton_clicked
|
||||
{
|
||||
border-color:#ABC1DE;
|
||||
background-color:#FFC450;
|
||||
/*background-image:url(images/tbcontrol_clicked.png);
|
||||
background-repeat:repeat-x;*/
|
||||
}
|
||||
|
||||
|
||||
/* disabled */
|
||||
|
||||
|
||||
.tbcontrol_disabled
|
||||
{
|
||||
opacity:0.5;
|
||||
filter:alpha(opacity=50)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* other */
|
||||
|
||||
|
||||
.dialogbutton
|
||||
{
|
||||
color:rgba(0,0,0,0.9);
|
||||
text-shadow:1px 1px 0px rgba(255,255,255,0.8);
|
||||
border-radius:2px;
|
||||
cursor:pointer;
|
||||
border:solid 1px #707070;
|
||||
padding:0;
|
||||
background-image:url(images/formbn.gif);
|
||||
background-repeat:repeat-x;
|
||||
background-color:#efefef;
|
||||
font-family: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
|
||||
.rtelinktreegroup
|
||||
{
|
||||
padding:2px 0;
|
||||
font-family: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
.rtelinktreeitem
|
||||
{
|
||||
cursor:pointer;
|
||||
text-decoration:underline;
|
||||
font-family: "Lucida Grande", Tahoma, Verdana, Arial, sans-serif;
|
||||
font-size: 11px;
|
||||
padding:2px 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.dlgroup
|
||||
{
|
||||
-o-border-radius:3px;
|
||||
-moz-border-radius:3px;
|
||||
-webkit-border-radius:3px;
|
||||
border-style:solid;
|
||||
border-width:1px;
|
||||
border-color:#b5bdc8;
|
||||
background-image:url(../styles/images/tbgroup_blue2010.png);
|
||||
background-repeat:repeat-x;
|
||||
}
|
||||
.dlimage
|
||||
{
|
||||
border-left:1px solid #D8E6F7;
|
||||
border-right:1px solid #ABC1DE;
|
||||
}
|
||||
.dlimage_checked
|
||||
{
|
||||
border-left-color:#ABC1DE;
|
||||
background-image:url(../styles/images/tbcontrol_checked.png);
|
||||
background-repeat:repeat-x;
|
||||
}
|
||||
.dlimage_hovered
|
||||
{
|
||||
border-left-color:#ABC1DE;
|
||||
background-image:url(../styles/images/tbcontrol_hovered.png);
|
||||
background-repeat:repeat-x;
|
||||
}
|
||||
.dlimage_clicked
|
||||
{
|
||||
border-left-color:#ABC1DE;
|
||||
background-image:url(../styles/images/tbcontrol_clicked.png);
|
||||
background-repeat:repeat-x;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user