forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
/
calendar.js
112 lines (109 loc) · 4.32 KB
/
calendar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/**
* Define a blocks namespace if it has not already been defined
* @namespace
*/
M = M || {};
/**
* A calendar namespace for the calendar block
* @namespace
*/
M.core_calendar = {
// The seconds to delay the show of a calendar event by
showdelaysecs: 1,
// The calendar event currently pending display
showdelayevent: null,
// An array containing all calendar events
events : [],
init : function(Y, properties) {
var id = properties.id;
this.events[id] = (function(Y, properties){
// Prepares an event object that this function will return
var event = {
id : properties.id,
title : properties.title,
content : properties.content,
displayed : false,
panel : null,
node : Y.one('#'+properties.id),
/**
* Initialises the calendar event to show after the given delay
* @function
* @param {Event} e
*/
show_init : function(e) {
if (M.core_calendar.showdelayevent !== this.id) {
if (M.core_calendar.showdelayevent !== null) {
M.core_calendar.events[M.blocks.calendar.showdelayevent].hide(e);
}
M.core_calendar.showdelayevent = this.id;
setTimeout(M.core_calendar.show_event_callback, M.core_calendar.showdelaysecs*1000);
}
},
/**
* Hides the events panel if it is being displayed
* @function
* @param {Event} e
*/
hide : function(e) {
M.core_calendar.showdelayevent = null;
if (this.displayed) {
this.displayed = false;
this.panel.hide();
}
},
/**
* Shows the calendar event
* @function
*/
show : function() {
this.panel = new YAHOO.widget.Panel(this.id+'_panel', {
width:"240px",
visible:false,
draggable:false,
close:false,
constraintoviewport:true,
context: [this.id, 'tl', 'br', ["beforeShow", "windowResize"]]
});
this.panel.setHeader(this.title);
this.panel.setBody(this.content);
this.panel.render(Y.one(document.body));
this.panel.show();
this.displayed = true;
}
}
event.node.on('mouseenter', event.show_init, event);
event.node.on('mouseleave', event.hide, event);
return event;
})(Y, properties);
},
/**
* Callback function for the showback method
* @function
*/
show_event_callback : function() {
if (M.core_calendar.showdelayevent !== null) {
M.core_calendar.events[M.core_calendar.showdelayevent].show();
}
},
init_basic_export : function(Y, allowthisweek, allownextweek, allownextmonth, username, authtoken) {
Y.one('#generateurl').on('click', function(){
var presetwhat = 'all';
if (Y.one('#pw_course').get('checked')) {
presetwhat = 'courses';
}
var presettime = 'recentupcoming';
if (allowthisweek && Y.one('#pt_wknow').get('checked')) {
presettime = 'weeknow';
} else if (allownextweek && Y.one('#pt_wknext').get('checked')) {
presettime = 'weeknext';
} else if (allownextmonth && Y.one('#pt_monnext').get('checked')) {
presettime = 'monthnext';
} else if (Y.one('#pt_monnow').get('checked')) {
presettime = 'monthnow';
}
var urlstr = M.cfg.wwwroot+'/calendar/export_execute.php?preset_what='+presetwhat+'&preset_time='+presettime+'&username='+username+'&authtoken='+authtoken;
Y.one('#url').setContent(urlstr);
Y.one('#urlbox').setStyle('display', 'block');
}, this);
}
}