267 lines
4.9 KiB
JavaScript
267 lines
4.9 KiB
JavaScript
//>>built
|
|
define("dijit/_editor/selection",["dojo/dom","dojo/_base/lang","dojo/_base/sniff","dojo/_base/window",".."],function(_1,_2,_3,_4,_5){
|
|
_2.getObject("_editor.selection",true,_5);
|
|
_2.mixin(_5._editor.selection,{getType:function(){
|
|
if(_3("ie")<9){
|
|
return _4.doc.selection.type.toLowerCase();
|
|
}else{
|
|
var _6="text";
|
|
var _7;
|
|
try{
|
|
_7=_4.global.getSelection();
|
|
}
|
|
catch(e){
|
|
}
|
|
if(_7&&_7.rangeCount==1){
|
|
var _8=_7.getRangeAt(0);
|
|
if((_8.startContainer==_8.endContainer)&&((_8.endOffset-_8.startOffset)==1)&&(_8.startContainer.nodeType!=3)){
|
|
_6="control";
|
|
}
|
|
}
|
|
return _6;
|
|
}
|
|
},getSelectedText:function(){
|
|
if(_3("ie")<9){
|
|
if(_5._editor.selection.getType()=="control"){
|
|
return null;
|
|
}
|
|
return _4.doc.selection.createRange().text;
|
|
}else{
|
|
var _9=_4.global.getSelection();
|
|
if(_9){
|
|
return _9.toString();
|
|
}
|
|
}
|
|
return "";
|
|
},getSelectedHtml:function(){
|
|
if(_3("ie")<9){
|
|
if(_5._editor.selection.getType()=="control"){
|
|
return null;
|
|
}
|
|
return _4.doc.selection.createRange().htmlText;
|
|
}else{
|
|
var _a=_4.global.getSelection();
|
|
if(_a&&_a.rangeCount){
|
|
var i;
|
|
var _b="";
|
|
for(i=0;i<_a.rangeCount;i++){
|
|
var _c=_a.getRangeAt(i).cloneContents();
|
|
var _d=_4.doc.createElement("div");
|
|
_d.appendChild(_c);
|
|
_b+=_d.innerHTML;
|
|
}
|
|
return _b;
|
|
}
|
|
return null;
|
|
}
|
|
},getSelectedElement:function(){
|
|
if(_5._editor.selection.getType()=="control"){
|
|
if(_3("ie")<9){
|
|
var _e=_4.doc.selection.createRange();
|
|
if(_e&&_e.item){
|
|
return _4.doc.selection.createRange().item(0);
|
|
}
|
|
}else{
|
|
var _f=_4.global.getSelection();
|
|
return _f.anchorNode.childNodes[_f.anchorOffset];
|
|
}
|
|
}
|
|
return null;
|
|
},getParentElement:function(){
|
|
if(_5._editor.selection.getType()=="control"){
|
|
var p=this.getSelectedElement();
|
|
if(p){
|
|
return p.parentNode;
|
|
}
|
|
}else{
|
|
if(_3("ie")<9){
|
|
var r=_4.doc.selection.createRange();
|
|
r.collapse(true);
|
|
return r.parentElement();
|
|
}else{
|
|
var _10=_4.global.getSelection();
|
|
if(_10){
|
|
var _11=_10.anchorNode;
|
|
while(_11&&(_11.nodeType!=1)){
|
|
_11=_11.parentNode;
|
|
}
|
|
return _11;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
},hasAncestorElement:function(_12){
|
|
return this.getAncestorElement.apply(this,arguments)!=null;
|
|
},getAncestorElement:function(_13){
|
|
var _14=this.getSelectedElement()||this.getParentElement();
|
|
return this.getParentOfType(_14,arguments);
|
|
},isTag:function(_15,_16){
|
|
if(_15&&_15.tagName){
|
|
var _17=_15.tagName.toLowerCase();
|
|
for(var i=0;i<_16.length;i++){
|
|
var _18=String(_16[i]).toLowerCase();
|
|
if(_17==_18){
|
|
return _18;
|
|
}
|
|
}
|
|
}
|
|
return "";
|
|
},getParentOfType:function(_19,_1a){
|
|
while(_19){
|
|
if(this.isTag(_19,_1a).length){
|
|
return _19;
|
|
}
|
|
_19=_19.parentNode;
|
|
}
|
|
return null;
|
|
},collapse:function(_1b){
|
|
if(window.getSelection){
|
|
var _1c=_4.global.getSelection();
|
|
if(_1c.removeAllRanges){
|
|
if(_1b){
|
|
_1c.collapseToStart();
|
|
}else{
|
|
_1c.collapseToEnd();
|
|
}
|
|
}else{
|
|
_1c.collapse(_1b);
|
|
}
|
|
}else{
|
|
if(_3("ie")){
|
|
var _1d=_4.doc.selection.createRange();
|
|
_1d.collapse(_1b);
|
|
_1d.select();
|
|
}
|
|
}
|
|
},remove:function(){
|
|
var sel=_4.doc.selection;
|
|
if(_3("ie")<9){
|
|
if(sel.type.toLowerCase()!="none"){
|
|
sel.clear();
|
|
}
|
|
return sel;
|
|
}else{
|
|
sel=_4.global.getSelection();
|
|
sel.deleteFromDocument();
|
|
return sel;
|
|
}
|
|
},selectElementChildren:function(_1e,_1f){
|
|
var _20=_4.global;
|
|
var doc=_4.doc;
|
|
var _21;
|
|
_1e=_1.byId(_1e);
|
|
if(doc.selection&&_3("ie")<9&&_4.body().createTextRange){
|
|
_21=_1e.ownerDocument.body.createTextRange();
|
|
_21.moveToElementText(_1e);
|
|
if(!_1f){
|
|
try{
|
|
_21.select();
|
|
}
|
|
catch(e){
|
|
}
|
|
}
|
|
}else{
|
|
if(_20.getSelection){
|
|
var _22=_4.global.getSelection();
|
|
if(_3("opera")){
|
|
if(_22.rangeCount){
|
|
_21=_22.getRangeAt(0);
|
|
}else{
|
|
_21=doc.createRange();
|
|
}
|
|
_21.setStart(_1e,0);
|
|
_21.setEnd(_1e,(_1e.nodeType==3)?_1e.length:_1e.childNodes.length);
|
|
_22.addRange(_21);
|
|
}else{
|
|
_22.selectAllChildren(_1e);
|
|
}
|
|
}
|
|
}
|
|
},selectElement:function(_23,_24){
|
|
var _25;
|
|
var doc=_4.doc;
|
|
var _26=_4.global;
|
|
_23=_1.byId(_23);
|
|
if(_3("ie")<9&&_4.body().createTextRange){
|
|
try{
|
|
var tg=_23.tagName?_23.tagName.toLowerCase():"";
|
|
if(tg==="img"||tg==="table"){
|
|
_25=_4.body().createControlRange();
|
|
}else{
|
|
_25=_4.body().createRange();
|
|
}
|
|
_25.addElement(_23);
|
|
if(!_24){
|
|
_25.select();
|
|
}
|
|
}
|
|
catch(e){
|
|
this.selectElementChildren(_23,_24);
|
|
}
|
|
}else{
|
|
if(_26.getSelection){
|
|
var _27=_26.getSelection();
|
|
_25=doc.createRange();
|
|
if(_27.removeAllRanges){
|
|
if(_3("opera")){
|
|
if(_27.getRangeAt(0)){
|
|
_25=_27.getRangeAt(0);
|
|
}
|
|
}
|
|
_25.selectNode(_23);
|
|
_27.removeAllRanges();
|
|
_27.addRange(_25);
|
|
}
|
|
}
|
|
}
|
|
},inSelection:function(_28){
|
|
if(_28){
|
|
var _29;
|
|
var doc=_4.doc;
|
|
var _2a;
|
|
if(_4.global.getSelection){
|
|
var sel=_4.global.getSelection();
|
|
if(sel&&sel.rangeCount>0){
|
|
_2a=sel.getRangeAt(0);
|
|
}
|
|
if(_2a&&_2a.compareBoundaryPoints&&doc.createRange){
|
|
try{
|
|
_29=doc.createRange();
|
|
_29.setStart(_28,0);
|
|
if(_2a.compareBoundaryPoints(_2a.START_TO_END,_29)===1){
|
|
return true;
|
|
}
|
|
}
|
|
catch(e){
|
|
}
|
|
}
|
|
}else{
|
|
if(doc.selection){
|
|
_2a=doc.selection.createRange();
|
|
try{
|
|
_29=_28.ownerDocument.body.createControlRange();
|
|
if(_29){
|
|
_29.addElement(_28);
|
|
}
|
|
}
|
|
catch(e1){
|
|
try{
|
|
_29=_28.ownerDocument.body.createTextRange();
|
|
_29.moveToElementText(_28);
|
|
}
|
|
catch(e2){
|
|
}
|
|
}
|
|
if(_2a&&_29){
|
|
if(_2a.compareEndPoints("EndToStart",_29)===1){
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}});
|
|
return _5._editor.selection;
|
|
});
|