Merge branch 'MDL-33649-master-2' of git://git.luns.net.uk/moodle
[moodle.git] / lib / yui / chooserdialogue / chooserdialogue.js
index bd29b81..1a499a8 100644 (file)
@@ -25,6 +25,7 @@ YUI.add('moodle-core-chooserdialogue', function(Y) {
             var params = {
                 bodyContent : bodycontent.get('innerHTML'),
                 headerContent : headercontent.get('innerHTML'),
+                draggable : true,
                 visible : false, // Hide by default
                 zindex : 100, // Display in front of other items
                 lightbox : true, // This dialogue should be modal
@@ -78,6 +79,18 @@ YUI.add('moodle-core-chooserdialogue', function(Y) {
 
             var thisevent;
 
+            // This will detect a change in orientation and retrigger centering
+            thisevent = Y.one('document').on('orientationchange', function(e) {
+                this.center_dialogue(dialogue);
+            }, this);
+            this.listenevents.push(thisevent);
+
+            // Detect window resizes (most browsers)
+            thisevent = Y.one('window').on('resize', function(e) {
+                this.center_dialogue(dialogue);
+            }, this);
+            this.listenevents.push(thisevent);
+
             // These will trigger a check_options call to display the correct help
             thisevent = this.container.on('click', this.check_options, this);
             this.listenevents.push(thisevent);
@@ -105,10 +118,14 @@ YUI.add('moodle-core-chooserdialogue', function(Y) {
             }, this);
 
             // Hook onto the cancel button to hide the form
-            this.container.one('#addcancel').on('click', this.cancel_popup, this);
+            thisevent = this.container.one('#addcancel').on('click', this.cancel_popup, this);
+            this.listenevents.push(thisevent);
+            thisevent = bb.one('div.closebutton').on('click', this.cancel_popup, this);
+            this.listenevents.push(thisevent);
 
             // Grab global keyup events and handle them
-            Y.one('document').on('keyup', this.handle_key_press, this);
+            thisevent = Y.one('document').on('keyup', this.handle_key_press, this);
+            this.listenevents.push(thisevent);
 
             // Add references to various elements we adjust
             this.jumplink     = this.container.one('#jump');
@@ -162,6 +179,7 @@ YUI.add('moodle-core-chooserdialogue', function(Y) {
             var bb = this.overlay.get('boundingBox');
 
             var winheight = bb.get('winHeight');
+            var winwidth = bb.get('winWidth');
             var offsettop = 0;
 
             // Try and set a sensible max-height -- this must be done before setting the top
@@ -209,6 +227,13 @@ YUI.add('moodle-core-chooserdialogue', function(Y) {
             // We need to set the height for the yui3-widget - can't work
             // out what we're setting at present -- shoud be the boudingBox
             bb.setStyle('top', dialoguetop + 'px');
+
+            // Calculate the left location of the chooser
+            // We don't set a minimum width in the same way as we do height as the width would be far lower than the
+            // optimal width for moodle anyway.
+            var dialoguewidth = bb.get('offsetWidth');
+            var dialogueleft = (winwidth - dialoguewidth) / 2;
+            bb.setStyle('left', dialogueleft + 'px');
         },
 
         handle_key_press : function(e) {