Jeremy Hodge hat den dijit.Dialog erweitert und die wunderbare Komponente ZetaDialog für die Domino-Welt bereitgestellt, einen XPages-Kompatiblen Dojo Dialog. Doch leider fehlt dem Dialog eine Kleinigkeit, nämlich die Möglichkeit, zu Verhindern, das der User das Dialogfenster per <ESC> oder Close-Icon einfach schließt.
Daher habe ich den Code ergänzt, so dass dies programmatisch unterbunden werden kann:
<xp:scriptBlock id="scriptBlockZetaDialog"> <xp:this.value><![CDATA[dojo.addOnLoad( function(){ dijit.byId('#{id:zeta}').setCloseButtonDisabled( true ); dijit.byId('#{id:zeta}').show(); } )]]> </xp:this.value> </xp:scriptBlock>
[In Fett: die Funktion setCloseButtonDisabled verhindert das Schließen durch den User]
Hier der vollständige ergänzte Sourcecode:
//Licensed under http://creativecommons.org/licenses/by/3.0/ // //Modified by Sven Hasselbach: Now dialog no longer closable if required! //http://blog.hasselba.ch // //Oringinal Code from Jeremy Hodge on the XPages Blog //http://xpagesblog.com/xpages-blog/2010/4/10/xpages-compatible-dojo-dialog-reusable-component.html // com.ZetaOne.Widget.Dialog dojo.provide('com.ZetaOne.widget.Dialog'); dojo.require('dijit.Dialog'); (function(){ dojo.declare("com.ZetaOne.widget.Dialog", dijit.Dialog, { disableCloseButton: false, _onKey: function(evt) { if(this.disableCloseButton && evt.charOrCode == dojo.keys.ESCAPE) return; this.inherited(arguments); }, setCloseButtonDisabled: function(flag) { this.disableCloseButton = flag; this._updateCloseButtonState(); }, _updateCloseButtonState: function() { dojo.style(this.closeButtonNode, "display",this.disableCloseButton ? "none" : "block"); }, postCreate: function(){ this.inherited(arguments); this._updateCloseButtonState(); dojo.query('form', dojo.body())[0].appendChild(this.domNode); }, _setup: function() { this.inherited(arguments); if (this.domNode.parentNode.nodeName.toLowerCase() == 'body') dojo.query('form', dojo.body())[0].appendChild(this.domNode); } }) }());