Dojo Dialog with confirmation button

http://stackoverflow.com/questions/10401512/dojo-dialog-with-confirmation-button

HTML

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.2/dijit/themes/claro/claro.css">
<script type="text/template" id="confirm-dialog-template">
    <div style="width:300px;">
      
      <div class="dijitDialogPaneContentArea">
        <div data-dojo-attach-point="contentNode">
            ${message}              
        </div>
      </div>
    
      <div class="dijitDialogPaneActionBar">
          
        <button
          data-dojo-type="dijit.form.Button"
          data-dojo-attach-point="submitButton"
          type="submit"
        >
          OK
        </button>
        
        <button
          data-dojo-type="dijit.form.Button"
          data-dojo-attach-point="cancelButton"
        >
          Cancel
        </button>
    
      </div>
      
    </div>
</script>

<button data-dojo-type="dijit.form.Button" id="show-button">
    ConfirmDialog.show()
</button>

<button data-dojo-type="dijit.form.Button" id="confirm-button">
    MessageBox.confirm()
</button>

JavaScript

require([
    "dojo/ready",
    "dojo/_base/declare",
    "dojo/_base/lang",
    "dojo/_base/Deferred",
    "dojo/_base/array",
    "dojo/dom",
    "dojo/aspect",
    
    "dijit/registry",
    "dijit/_Widget",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dijit/Dialog",
    
    "dijit/form/Button",
    "dojo/domReady!"
], function(
    ready,
    declare,
    lang,
    Deferred,
    array,
    dom,
    aspect,
        
    registry,
    _Widget,
    _TemplatedMixin,
    _WidgetsInTemplateMixin,
    Dialog    
){
    
    var ConfirmDialog = declare(Dialog, {
        
        title: "Confirm",
        message: "Are you sure?",
    
        constructor: function(/*Object*/ kwArgs) {
            lang.mixin(this, kwArgs);
            
            var template = dom.byId("confirm-dialog-template").textContent;
            var message = this.message;
            
            var contentWidget = new (declare(
                [_Widget, _TemplatedMixin, _WidgetsInTemplateMixin],
                {
                    templateString: template,
                    message: message                    
                }
            )); 
            contentWidget.startup();
            this.content = contentWidget;
        },
        
        postCreate: function() {
            this.inherited(arguments);
            this.connect(this.content.cancelButton, "onClick", "onCancel");
        },
 
        onExecute: function() {
            console.log("OK");
        },
        
        onCancel: function() {
            console.log("Cancel");            
        }
    
    });
        
    var MessageBox = {};
    MessageBox.confirm = function(kwArgs) {
        var confirmDialog = new ConfirmDialog(kwArgs);
        confirmDialog.startup();
        
        var deferred = new Deferred();
        var signal, signals = [];
        
        var destroyDialog = function() {
            array.forEach(signals, function(signal) {
                signal.remove();
...