Fixed calendar using backwards compatibility hack in global scope
authorArtem Andreev <andreev.artem@gmail.com>
Sat, 22 Dec 2012 11:26:16 +0000 (15:26 +0400)
committerArtem Andreev <andreev.artem@gmail.com>
Sat, 22 Dec 2012 11:26:16 +0000 (15:26 +0400)
calendar.js
renderer.php

index c899eba..eaa8e8b 100644 (file)
-document.body.className += ' yui-skin-sam';
+YUI().use('yui2-container', 'yui2-calendar', function(Y) {
+    var YAHOO = Y.YUI2;
 
-YAHOO.util.Event.onDOMReady(function(){
+    document.body.className += ' yui-skin-sam';
 
-    var Event = YAHOO.util.Event,
-        Dom = YAHOO.util.Dom,
-        dialog, calendar;
+    YAHOO.util.Event.onDOMReady(function(){
 
-    var showBtn = Dom.get("show");
+        var Event = YAHOO.util.Event,
+            Dom = YAHOO.util.Dom,
+            dialog, calendar;
 
-    Event.on(showBtn, "click", function() {
+        var showBtn = Dom.get("show");
 
-        // Lazy Dialog Creation - Wait to create the Dialog, and setup document click listeners, until the first time the button is clicked.
-        if (!dialog) {
+        Event.on(showBtn, "click", function() {
 
-            // Hide Calendar if we click anywhere in the document other than the calendar
-            Event.on(document, "click", function(e) {
-                var el = Event.getTarget(e);
-                var dialogEl = dialog.element;
-                if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) {
+            // Lazy Dialog Creation - Wait to create the Dialog, and setup document click listeners, until the first time the button is clicked.
+            if (!dialog) {
+
+                // Hide Calendar if we click anywhere in the document other than the calendar
+                Event.on(document, "click", function(e) {
+                    var el = Event.getTarget(e);
+                    var dialogEl = dialog.element;
+                    if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) {
+                        dialog.hide();
+                    }
+                });
+
+                function resetHandler() {
+                    calendar.cfg.setProperty("pagedate", calendar.today);
+                    calendar.render();
+                }
+
+                function closeHandler() {
                     dialog.hide();
                 }
-            });
 
-            function resetHandler() {
-                calendar.cfg.setProperty("pagedate", calendar.today);
-                calendar.render();
+                dialog = new YAHOO.widget.Dialog("attcalendarcontainer", {
+                    visible:false,
+                    context:["show", "tl", "bl"],
+                    buttons:[{text: M.str.attforblock.caltoday, handler: resetHandler, isDefault:true}, {text: M.str.attforblock.calclose, handler: closeHandler}],
+                    draggable:false,
+                    close:false
+                });
+                dialog.setHeader('');
+                dialog.setBody('<div id="cal"></div>');
+                dialog.render(document.body);
+
+                dialog.showEvent.subscribe(function() {
+                    if (YAHOO.env.ua.ie) {
+                        // Since we're hiding the table using yui-overlay-hidden, we
+                        // want to let the dialog know that the content size has changed, when
+                        // shown
+                        dialog.fireEvent("changeContent");
+                    }
+                });
             }
-            
-            function closeHandler() {
-                dialog.hide();
-            }
-
-            dialog = new YAHOO.widget.Dialog("attcalendarcontainer", {
-                visible:false,
-                context:["show", "tl", "bl"],
-                buttons:[{text: M.str.attforblock.caltoday, handler: resetHandler, isDefault:true}, {text: M.str.attforblock.calclose, handler: closeHandler}],
-                draggable:false,
-                close:false
-            });
-            dialog.setHeader('');
-            dialog.setBody('<div id="cal"></div>');
-            dialog.render(document.body);
-
-            dialog.showEvent.subscribe(function() {
-                if (YAHOO.env.ua.ie) {
-                    // Since we're hiding the table using yui-overlay-hidden, we
-                    // want to let the dialog know that the content size has changed, when
-                    // shown
-                    dialog.fireEvent("changeContent");
-                }
-            });
-        }
 
-        // Lazy Calendar Creation - Wait to create the Calendar until the first time the button is clicked.
-        if (!calendar) {
+            // Lazy Calendar Creation - Wait to create the Calendar until the first time the button is clicked.
+            if (!calendar) {
 
-            calendar = new YAHOO.widget.Calendar("cal", {
-                iframe:false,          // Turn iframe off, since container has iframe support.
-                hide_blank_weeks:true  // Enable, to demonstrate how we handle changing height, using changeContent
-            });
+                calendar = new YAHOO.widget.Calendar("cal", {
+                    iframe:false,          // Turn iframe off, since container has iframe support.
+                    hide_blank_weeks:true  // Enable, to demonstrate how we handle changing height, using changeContent
+                });
 
-            calendar.cfg.setProperty("start_weekday", M.attforblock.cal_start_weekday);
-            calendar.cfg.setProperty("MONTHS_LONG", M.attforblock.cal_months);
-            calendar.cfg.setProperty("WEEKDAYS_SHORT", M.attforblock.cal_week_days);
-            calendar.select(new Date(M.attforblock.cal_cur_date*1000));
-            calendar.render();
+                calendar.cfg.setProperty("start_weekday", M.attforblock.cal_start_weekday);
+                calendar.cfg.setProperty("MONTHS_LONG", M.attforblock.cal_months);
+                calendar.cfg.setProperty("WEEKDAYS_SHORT", M.attforblock.cal_week_days);
+                calendar.select(new Date(M.attforblock.cal_cur_date*1000));
+                calendar.render();
 
-            calendar.selectEvent.subscribe(function() {
-                if (calendar.getSelectedDates().length > 0) {
+                calendar.selectEvent.subscribe(function() {
+                    if (calendar.getSelectedDates().length > 0) {
 
-                    Dom.get("curdate").value = calendar.getSelectedDates()[0] / 1000;
+                        Dom.get("curdate").value = calendar.getSelectedDates()[0] / 1000;
 
-                    Dom.get("currentdate").submit();
-                }
-                dialog.hide();
-            });
+                        Dom.get("currentdate").submit();
+                    }
+                    dialog.hide();
+                });
 
-            calendar.renderEvent.subscribe(function() {
-                // Tell Dialog it's contents have changed, which allows
-                // container to redraw the underlay (for IE6/Safari2)
-                dialog.fireEvent("changeContent");
-            });
-        }
+                calendar.renderEvent.subscribe(function() {
+                    // Tell Dialog it's contents have changed, which allows
+                    // container to redraw the underlay (for IE6/Safari2)
+                    dialog.fireEvent("changeContent");
+                });
+            }
 
-        var seldate = calendar.getSelectedDates();
+            var seldate = calendar.getSelectedDates();
 
-        if (seldate.length > 0) {
-            // Set the pagedate to show the selected date if it exists
-            calendar.cfg.setProperty("pagedate", seldate[0]);
-            calendar.render();
-        }
+            if (seldate.length > 0) {
+                // Set the pagedate to show the selected date if it exists
+                calendar.cfg.setProperty("pagedate", seldate[0]);
+                calendar.render();
+            }
 
-        dialog.show();
+            dialog.show();
+        });
     });
 });
+
index c3003e7..fcca382 100644 (file)
@@ -106,8 +106,6 @@ class mod_attforblock_renderer extends plugin_renderer_base {
                     'cal_cur_date'  => $fcontrols->curdate);
             $curdate_controls = html_writer::script(js_writer::set_variable('M.attforblock', $jsvals));
 
-            //$this->page->requires->yui2_lib('container');
-            //$this->page->requires->yui2_lib('calendar');
             $this->page->requires->js('/mod/attforblock/calendar.js');
 
             $curdate_controls .= html_writer::link($fcontrols->url(array('curdate' => $fcontrols->prevcur)), $this->output->larrow());