Zeta-Dialog: Erweiterung um „Closable“-Parameter

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);                
            }                
        })
}());
Dieser Beitrag wurde unter Allgemein, Dojo Toolkit, HTML, Java Script, Web, XPages abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert