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);
}
})
}());