]>
git.wh0rd.org - tt-rss.git/blob - lib/dijit/Editor.js
2 define("dijit/Editor",["dojo/_base/array","dojo/_base/declare","dojo/_base/Deferred","dojo/i18n","dojo/dom-attr","dojo/dom-class","dojo/dom-geometry","dojo/dom-style","dojo/_base/event","dojo/keys","dojo/_base/lang","dojo/_base/sniff","dojo/string","dojo/topic","dojo/_base/window","./_base/focus","./_Container","./Toolbar","./ToolbarSeparator","./layout/_LayoutWidget","./form/ToggleButton","./_editor/_Plugin","./_editor/plugins/EnterKeyHandling","./_editor/html","./_editor/range","./_editor/RichText",".","dojo/i18n!./_editor/nls/commands"],function(_1
,_2
,_3
,_4
,_5
,_6
,_7
,_8
,_9
,_a
,_b
,_c
,_d
,_e
,_f
,_10
,_11
,_12
,_13
,_14
,_15
,_16
,_17
,_18
,_19
,_1a
,_1b
){var _1c
=_2("dijit.Editor",_1a
,{plugins
:null,extraPlugins
:null,constructor:function(){if(!_b
.isArray(this.plugins
)){this.plugins
=["undo","redo","|","cut","copy","paste","|","bold","italic","underline","strikethrough","|","insertOrderedList","insertUnorderedList","indent","outdent","|","justifyLeft","justifyRight","justifyCenter","justifyFull",_17
];}this._plugins
=[];this._editInterval
=this.editActionInterval
*1000;if(_c("ie")){this.events
.push("onBeforeDeactivate");this.events
.push("onBeforeActivate");}},postMixInProperties:function(){this.setValueDeferred
=new _3();this.inherited(arguments
);},postCreate:function(){this._steps
=this._steps
.slice(0);this._undoedSteps
=this._undoedSteps
.slice(0);if(_b
.isArray(this.extraPlugins
)){this.plugins
=this.plugins
.concat(this.extraPlugins
);}this.inherited(arguments
);this.commands
=_4
.getLocalization("dijit._editor","commands",this.lang
);if(!this.toolbar
){this.toolbar
=new _12({dir
:this.dir
,lang
:this.lang
});this.header
.appendChild(this.toolbar
.domNode
);}_1
.forEach(this.plugins
,this.addPlugin
,this);this.setValueDeferred
.callback(true);_6
.add(this.iframe
.parentNode
,"dijitEditorIFrameContainer");_6
.add(this.iframe
,"dijitEditorIFrame");_5
.set(this.iframe
,"allowTransparency",true);if(_c("webkit")){_8
.set(this.domNode
,"KhtmlUserSelect","none");}this.toolbar
.startup();this.onNormalizedDisplayChanged();},destroy:function(){_1
.forEach(this._plugins
,function(p
){if(p
&&p
.destroy
){p
.destroy();}});this._plugins
=[];this.toolbar
.destroyRecursive();delete this.toolbar
;this.inherited(arguments
);},addPlugin:function(_1d
,_1e
){var _1f
=_b
.isString(_1d
)?{name
:_1d
}:_b
.isFunction(_1d
)?{ctor
:_1d
}:_1d
;if(!_1f
.setEditor
){var o
={"args":_1f
,"plugin":null,"editor":this};if(_1f
.name
){if(_16
.registry
[_1f
.name
]){o
.plugin
=_16
.registry
[_1f
.name
](_1f
);}else{_e
.publish(_1b
._scopeName
+".Editor.getPlugin",o
);}}if(!o
.plugin
){var pc
=_1f
.ctor
||_b
.getObject(_1f
.name
);if(pc
){o
.plugin
=new pc(_1f
);}}if(!o
.plugin
){console
.warn("Cannot find plugin",_1d
);return;}_1d
=o
.plugin
;}if(arguments
.length
>1){this._plugins
[_1e
]=_1d
;}else{this._plugins
.push(_1d
);}_1d
.setEditor(this);if(_b
.isFunction(_1d
.setToolbar
)){_1d
.setToolbar(this.toolbar
);}},resize:function(_20
){if(_20
){_14
.prototype.resize
.apply(this,arguments
);}},layout:function(){var _21
=(this._contentBox
.h
-(this.getHeaderHeight()+this.getFooterHeight()+_7
.getPadBorderExtents(this.iframe
.parentNode
).h
+_7
.getMarginExtents(this.iframe
.parentNode
).h
));this.editingArea
.style
.height
=_21
+"px";if(this.iframe
){this.iframe
.style
.height
="100%";}this._layoutMode
=true;},_onIEMouseDown:function(e
){var _22
;var b
=this.document
.body
;var _23
=b
.clientWidth
;var _24
=b
.clientHeight
;var _25
=b
.clientLeft
;var _26
=b
.offsetWidth
;var _27
=b
.offsetHeight
;var _28
=b
.offsetLeft
;if(/^rtl
$/i
.test(b
.dir
||"")){if(_23
<_26
&&e
.x
>_23
&&e
.x
<_26
){_22
=true;}}else{if(e
.x
<_25
&&e
.x
>_28
){_22
=true;}}if(!_22
){if(_24
<_27
&&e
.y
>_24
&&e
.y
<_27
){_22
=true;}}if(!_22
){delete this._cursorToStart
;delete this._savedSelection
;if(e
.target
.tagName
=="BODY"){setTimeout(_b
.hitch(this,"placeCursorAtEnd"),0);}this.inherited(arguments
);}},onBeforeActivate:function(){this._restoreSelection();},onBeforeDeactivate:function(e
){if(this.customUndo
){this.endEditing(true);}if(e
.target
.tagName
!="BODY"){this._saveSelection();}},customUndo
:true,editActionInterval
:3,beginEditing:function(cmd
){if(!this._inEditing
){this._inEditing
=true;this._beginEditing(cmd
);}if(this.editActionInterval
>0){if(this._editTimer
){clearTimeout(this._editTimer
);}this._editTimer
=setTimeout(_b
.hitch(this,this.endEditing
),this._editInterval
);}},_steps
:[],_undoedSteps
:[],execCommand:function(cmd
){if(this.customUndo
&&(cmd
=="undo"||cmd
=="redo")){return this[cmd
]();}else{if(this.customUndo
){this.endEditing();this._beginEditing();}var r
=this.inherited(arguments
);if(this.customUndo
){this._endEditing();}return r
;}},_pasteImpl:function(){return this._clipboardCommand("paste");},_cutImpl:function(){return this._clipboardCommand("cut");},_copyImpl:function(){return this._clipboardCommand("copy");},_clipboardCommand:function(cmd
){var r
;try{r
=this.document
.execCommand(cmd
,false,null);if(_c("webkit")&&!r
){throw {code
:1011};}}catch(e
){if(e
.code
==1011){var sub
=_d
.substitute
,_29
={cut
:"X",copy
:"C",paste
:"V"};alert(sub(this.commands
.systemShortcut
,[this.commands
[cmd
],sub(this.commands
[_c("mac")?"appleKey":"ctrlKey"],[_29
[cmd
]])]));}r
=false;}return r
;},queryCommandEnabled:function(cmd
){if(this.customUndo
&&(cmd
=="undo"||cmd
=="redo")){return cmd
=="undo"?(this._steps
.length
>1):(this._undoedSteps
.length
>0);}else{return this.inherited(arguments
);}},_moveToBookmark:function(b
){var _2a
=b
.mark
;var _2b
=b
.mark
;var col
=b
.isCollapsed
;var r
,_2c
,_2d
,sel
;if(_2b
){if(_c("ie")<9){if(_b
.isArray(_2b
)){_2a
=[];_1
.forEach(_2b
,function(n
){_2a
.push(_19
.getNode(n
,this.editNode
));},this);_f
.withGlobal(this.window
,"moveToBookmark",_1b
,[{mark
:_2a
,isCollapsed
:col
}]);}else{if(_2b
.startContainer
&&_2b
.endContainer
){sel
=_19
.getSelection(this.window
);if(sel
&&sel
.removeAllRanges
){sel
.removeAllRanges();r
=_19
.create(this.window
);_2c
=_19
.getNode(_2b
.startContainer
,this.editNode
);_2d
=_19
.getNode(_2b
.endContainer
,this.editNode
);if(_2c
&&_2d
){r
.setStart(_2c
,_2b
.startOffset
);r
.setEnd(_2d
,_2b
.endOffset
);sel
.addRange(r
);}}}}}else{sel
=_19
.getSelection(this.window
);if(sel
&&sel
.removeAllRanges
){sel
.removeAllRanges();r
=_19
.create(this.window
);_2c
=_19
.getNode(_2b
.startContainer
,this.editNode
);_2d
=_19
.getNode(_2b
.endContainer
,this.editNode
);if(_2c
&&_2d
){r
.setStart(_2c
,_2b
.startOffset
);r
.setEnd(_2d
,_2b
.endOffset
);sel
.addRange(r
);}}}}},_changeToStep:function(_2e
,to
){this.setValue(to
.text
);var b
=to
.bookmark
;if(!b
){return;}this._moveToBookmark(b
);},undo:function(){var ret
=false;if(!this._undoRedoActive
){this._undoRedoActive
=true;this.endEditing(true);var s
=this._steps
.pop();if(s
&&this._steps
.length
>0){this.focus();this._changeToStep(s
,this._steps
[this._steps
.length
-1]);this._undoedSteps
.push(s
);this.onDisplayChanged();delete this._undoRedoActive
;ret
=true;}delete this._undoRedoActive
;}return ret
;},redo:function(){var ret
=false;if(!this._undoRedoActive
){this._undoRedoActive
=true;this.endEditing(true);var s
=this._undoedSteps
.pop();if(s
&&this._steps
.length
>0){this.focus();this._changeToStep(this._steps
[this._steps
.length
-1],s
);this._steps
.push(s
);this.onDisplayChanged();ret
=true;}delete this._undoRedoActive
;}return ret
;},endEditing:function(_2f
){if(this._editTimer
){clearTimeout(this._editTimer
);}if(this._inEditing
){this._endEditing(_2f
);this._inEditing
=false;}},_getBookmark:function(){var b
=_f
.withGlobal(this.window
,_10
.getBookmark
);var tmp
=[];if(b
&&b
.mark
){var _30
=b
.mark
;if(_c("ie")<9){var sel
=_19
.getSelection(this.window
);if(!_b
.isArray(_30
)){if(sel
){var _31
;if(sel
.rangeCount
){_31
=sel
.getRangeAt(0);}if(_31
){b
.mark
=_31
.cloneRange();}else{b
.mark
=_f
.withGlobal(this.window
,_10
.getBookmark
);}}}else{_1
.forEach(b
.mark
,function(n
){tmp
.push(_19
.getIndex(n
,this.editNode
).o
);},this);b
.mark
=tmp
;}}try{if(b
.mark
&&b
.mark
.startContainer
){tmp
=_19
.getIndex(b
.mark
.startContainer
,this.editNode
).o
;b
.mark
={startContainer
:tmp
,startOffset
:b
.mark
.startOffset
,endContainer
:b
.mark
.endContainer
===b
.mark
.startContainer
?tmp
:_19
.getIndex(b
.mark
.endContainer
,this.editNode
).o
,endOffset
:b
.mark
.endOffset
};}}catch(e
){b
.mark
=null;}}return b
;},_beginEditing:function(){if(this._steps
.length
===0){this._steps
.push({"text":_18
.getChildrenHtml(this.editNode
),"bookmark":this._getBookmark()});}},_endEditing:function(){var v
=_18
.getChildrenHtml(this.editNode
);this._undoedSteps
=[];this._steps
.push({text
:v
,bookmark
:this._getBookmark()});},onKeyDown:function(e
){if(!_c("ie")&&!this.iframe
&&e
.keyCode
==_a
.TAB
&&!this.tabIndent
){this._saveSelection();}if(!this.customUndo
){this.inherited(arguments
);return;}var k
=e
.keyCode
;if(e
.ctrlKey
&&!e
.altKey
){if(k
==90||k
==122){_9
.stop(e
);this.undo();return;}else{if(k
==89||k
==121){_9
.stop(e
);this.redo();return;}}}this.inherited(arguments
);switch(k
){case _a
.ENTER
:case _a
.BACKSPACE
:case _a
.DELETE
:this.beginEditing();break;case 88:case 86:if(e
.ctrlKey
&&!e
.altKey
&&!e
.metaKey
){this.endEditing();if(e
.keyCode
==88){this.beginEditing("cut");setTimeout(_b
.hitch(this,this.endEditing
),1);}else{this.beginEditing("paste");setTimeout(_b
.hitch(this,this.endEditing
),1);}break;}default:if(!e
.ctrlKey
&&!e
.altKey
&&!e
.metaKey
&&(e
.keyCode
<_a
.F1
||e
.keyCode
>_a
.F15
)){this.beginEditing();break;}case _a
.ALT
:this.endEditing();break;case _a
.UP_ARROW
:case _a
.DOWN_ARROW
:case _a
.LEFT_ARROW
:case _a
.RIGHT_ARROW
:case _a
.HOME
:case _a
.END
:case _a
.PAGE_UP
:case _a
.PAGE_DOWN
:this.endEditing(true);break;case _a
.CTRL
:case _a
.SHIFT
:case _a
.TAB
:break;}},_onBlur:function(){this.inherited(arguments
);this.endEditing(true);},_saveSelection:function(){try{this._savedSelection
=this._getBookmark();}catch(e
){}},_restoreSelection:function(){if(this._savedSelection
){delete this._cursorToStart
;if(_f
.withGlobal(this.window
,"isCollapsed",_1b
)){this._moveToBookmark(this._savedSelection
);}delete this._savedSelection
;}},onClick:function(){this.endEditing(true);this.inherited(arguments
);},replaceValue:function(_32
){if(!this.customUndo
){this.inherited(arguments
);}else{if(this.isClosed
){this.setValue(_32
);}else{this.beginEditing();if(!_32
){_32
=" ";}this.setValue(_32
);this.endEditing();}}},_setDisabledAttr:function(_33
){var _34
=_b
.hitch(this,function(){if((!this.disabled
&&_33
)||(!this._buttonEnabledPlugins
&&_33
)){_1
.forEach(this._plugins
,function(p
){p
.set("disabled",true);});}else{if(this.disabled
&&!_33
){_1
.forEach(this._plugins
,function(p
){p
.set("disabled",false);});}}});this.setValueDeferred
.addCallback(_34
);this.inherited(arguments
);},_setStateClass:function(){try{this.inherited(arguments
);if(this.document
&&this.document
.body
){_8
.set(this.document
.body
,"color",_8
.get(this.iframe
,"color"));}}catch(e
){}}});function _35(_36
){return new _16({command
:_36
.name
});};function _37(_38
){return new _16({buttonClass
:_15
,command
:_38
.name
});};_b
.mixin(_16
.registry
,{"undo":_35
,"redo":_35
,"cut":_35
,"copy":_35
,"paste":_35
,"insertOrderedList":_35
,"insertUnorderedList":_35
,"indent":_35
,"outdent":_35
,"justifyCenter":_35
,"justifyFull":_35
,"justifyLeft":_35
,"justifyRight":_35
,"delete":_35
,"selectAll":_35
,"removeFormat":_35
,"unlink":_35
,"insertHorizontalRule":_35
,"bold":_37
,"italic":_37
,"underline":_37
,"strikethrough":_37
,"subscript":_37
,"superscript":_37
,"|":function(){return new _16({button
:new _13(),setEditor:function(_39
){this.editor
=_39
;}});}});return _1c
;});