ymdp 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,67 @@
1
+ var Data;
2
+
3
+ Data = {
4
+ // values cannot be longer than 255 chars
5
+ //
6
+ store: function(data, success_function, error_function) {
7
+ Debug.log("Data.store", data);
8
+
9
+ var keys = {
10
+ "keys": data
11
+ };
12
+ openmail.Application.setData(keys, function(response) {
13
+ Debug.log("openmail.Application.setData response", response);
14
+
15
+ if (response.error && (response.error !== YAHOO.openmail.ERR_NONE)) {
16
+ // storage error detected
17
+ Debug.error("Error saving data", response);
18
+ if (error_function) {
19
+ error_function(response);
20
+ }
21
+ } else {
22
+ if (success_function) {
23
+ success_function(response);
24
+ }
25
+ }
26
+ });
27
+ },
28
+
29
+ // keys must be an array
30
+ //
31
+ fetch: function(keys, success_function, error_function) {
32
+ Debug.log("Data.fetch", keys);
33
+
34
+ keys = {
35
+ "keys": keys
36
+ };
37
+
38
+ openmail.Application.getData(keys, function(response) {
39
+ try {
40
+ Debug.log("Inside openmail.Application.getData callback", response);
41
+
42
+ if (response.error && (response.error !== YAHOO.openmail.ERR_NONE)) {
43
+ Debug.error("Error retrieving data", response);
44
+ if (error_function) {
45
+ error_function(response);
46
+ }
47
+ } else {
48
+ Debug.log("success in openmail.Application.getData", response);
49
+ if (success_function) {
50
+ success_function(response);
51
+ }
52
+ }
53
+ } catch(omg) {
54
+ Debug.error(omg);
55
+ }
56
+ });
57
+ },
58
+
59
+ clear: function() {
60
+ Data.store({
61
+ "ymail_wssid": null
62
+ }, function(response) {
63
+ YAHOO.oib.guid = null;
64
+ YAHOO.oib.ymail_wssid = null;
65
+ });
66
+ }
67
+ };
@@ -0,0 +1,109 @@
1
+
2
+ // DO NOT USE the @view instance variable in any files in /app/javascripts/base.
3
+ // The way they are cached makes it not safe to do so.
4
+
5
+ var Debug;
6
+
7
+ Debug = {
8
+ on: false,
9
+ console: true,
10
+ logs: false,
11
+
12
+ consoleOn: function() {
13
+ return (typeof window['console'] !== 'undefined' && this.console);
14
+ },
15
+
16
+ profile: function(name) {
17
+ if (this.consoleOn()) {
18
+ console.profile(name);
19
+ }
20
+ },
21
+
22
+ profileEnd: function(name) {
23
+ if (this.consoleOn()) {
24
+ console.profileEnd(name);
25
+ }
26
+ },
27
+
28
+ call: function() {
29
+ var level, message;
30
+ var args = [].slice.call(arguments,0);
31
+ level = args.shift();
32
+
33
+ message = this.message.apply(Debug, args);
34
+
35
+ if (this.consoleOn()) {
36
+ console[level](message);
37
+ }
38
+ },
39
+
40
+ log: function() {
41
+ var args = [].slice.call(arguments,0);
42
+ args.unshift("log");
43
+ this.call.apply(this, args);
44
+ },
45
+
46
+ error: function() {
47
+ var args = [].slice.call(arguments,0);
48
+ args.unshift("error");
49
+ this.call.apply(this, args);
50
+ },
51
+
52
+ message: function() {
53
+ var parts, message;
54
+ parts = [];
55
+
56
+ parts.push(this.timestamp());
57
+ parts.push(this.generalInfo());
58
+
59
+ var args = [].slice.call(arguments,0);
60
+
61
+ args.each(function(arg) {
62
+ parts.push(Debug.object(arg));
63
+ });
64
+
65
+ message = parts.join(" ");
66
+
67
+ return message;
68
+ },
69
+
70
+ object: function(obj) {
71
+ if (typeof obj === "string") {
72
+ return obj;
73
+ } else if (obj === undefined) {
74
+ return "undefined";
75
+ } else if (obj === null) {
76
+ return "null";
77
+ } else if (obj.inspect) {
78
+ return(obj.inspect());
79
+ } else {
80
+ return(Object.toJSON(obj));
81
+ }
82
+ },
83
+
84
+ checktime: function(i) {
85
+ if (i<10) {
86
+ i="0" + i;
87
+ }
88
+ return i;
89
+ },
90
+
91
+ timestamp: function() {
92
+ var time, hour, minute, second, timestamp, checktime;
93
+
94
+ time = new Date();
95
+ hour = this.checktime(time.getHours());
96
+ minute = this.checktime(time.getMinutes());
97
+ second = this.checktime(time.getSeconds());
98
+
99
+ // timestamp = month + "/" + date + "/" + year + " " +
100
+
101
+ timestamp = hour + ":" + minute + ":" + second;
102
+
103
+ return timestamp;
104
+ },
105
+
106
+ generalInfo: function() {
107
+ return "[<%= @domain %>/<%= @server %>] [<%= @version %> <%= @sprint_name %>]";
108
+ }
109
+ };
@@ -0,0 +1,166 @@
1
+ var Education;
2
+
3
+ Education = {
4
+ init: function(name) {
5
+ try {
6
+ Debug.log("Education.init", name);
7
+ var m;
8
+
9
+ Education.name = name;
10
+
11
+ m = "";
12
+ m = m + Tags.linkToFunction("Close", "Education.educate(); return false;", {"class": "close"});
13
+ m = m + Education.educationModule();
14
+
15
+ Education.container().insert(m);
16
+ Education.container().insert({"after": Education.forcedEducation()});
17
+
18
+ Education.load();
19
+ } catch(omg) {
20
+ Debug.error(omg);
21
+ }
22
+ },
23
+
24
+ educationModule: function() {
25
+ var m;
26
+
27
+ m = Tags.div(Education.ol(), {"id": Education.name, "class": "education_module"});
28
+
29
+ return m;
30
+ },
31
+
32
+ forcedEducation: function() {
33
+ var m;
34
+
35
+ m = Tags.div(Education.minForcedEducation(), {"id": "forced_education", "style": "display: none;"});
36
+
37
+ return m;
38
+ },
39
+
40
+ minForcedEducation: function() {
41
+ var m, id;
42
+
43
+ id = "min_" + Education.name + "_education";
44
+ Debug.log("getting min forced education key", id);
45
+ m = Tags.div(I18n.t(id), {"id": id});
46
+
47
+ Debug.log("got key", m);
48
+
49
+ return m;
50
+ },
51
+
52
+ ol: function() {
53
+ var m, entries;
54
+
55
+ entries = Education.entries();
56
+
57
+ entries = entries.join("");
58
+ m = Tags.ol(entries);
59
+
60
+ return m;
61
+ },
62
+
63
+ entries: function() {
64
+ var m, entries, entry, i;
65
+ entries = [];
66
+
67
+ i = 0;
68
+
69
+ do {
70
+ i = i + 1;
71
+ entry = Education.entry(i);
72
+ entries.push(entry);
73
+ } while(entry);
74
+
75
+ return entries;
76
+ },
77
+
78
+ entry: function(index) {
79
+ var m, text, id;
80
+
81
+ id = Education.name + "_" + String(index);
82
+ text = I18n.t(id);
83
+
84
+ if (text) {
85
+ m = Tags.li(text, {"id": id});
86
+ }
87
+ return m;
88
+ },
89
+
90
+ show: function(educations) {
91
+ Debug.log('Education.init');
92
+ Education.educations = educations;
93
+ Debug.log("Educations.educations: ", educations);
94
+ if (Education.container() !== null) {
95
+ Education.getModules();
96
+ }
97
+ },
98
+
99
+ get: function(params, success_function, error_function) {
100
+ Debug.log('Education.get. About to call OIB.get');
101
+ OIB.get("educations/", params, success_function, error_function);
102
+ },
103
+
104
+ post: function(params, success_function, error_function) {
105
+ Debug.log('Education.post');
106
+ OIB.post("educations/create", params, success_function, error_function);
107
+ },
108
+
109
+ educate: function() {
110
+ // Grab the children divs of $('education') with the class education_module that are NOT HIDDEN
111
+ // For each education module returned, post the id and view as params[:title] and params[:page_name]
112
+ $$('.education_module').each(function(element) {
113
+ if (!element.hasClassName('educated')) {
114
+ Debug.log(element.identify());
115
+ Education.post({"page_name": View.name, "title": element.identify()}, function(response) {
116
+ Debug.log("Response: " + response);
117
+ });
118
+ }
119
+ });
120
+ Education.container().hide();
121
+ $('forced_education').show();
122
+ },
123
+
124
+ getModules: function() {
125
+ var showContainer = false;
126
+ $$('.education_module').each(function(element) {
127
+ Education.educations.each(function(education) {
128
+ if (element.identify() === education.title && View.name.toLowerCase() === education.page_name.toLowerCase()) {
129
+ element.addClassName('educated');
130
+ }
131
+ });
132
+ });
133
+
134
+ $$('.education_module').each(function(element) {
135
+ if(!element.hasClassName('educated')) {
136
+ showContainer = true;
137
+ }
138
+ });
139
+
140
+ if (showContainer) {
141
+ Education.container().show();
142
+ } else {
143
+ $('forced_education').show();
144
+ }
145
+ },
146
+
147
+ container: function() {
148
+ return $('education');
149
+ },
150
+
151
+ load: function() {
152
+ try {
153
+ Debug.log('Education.load');
154
+ Education.get({}, function(response) {
155
+ Education.show(response);
156
+ });
157
+ } catch(err) {
158
+ YAHOO.oib.showError({
159
+ "method": "Education.load",
160
+ "type": "exception caught",
161
+ "error": err
162
+ });
163
+ Debug.error(err);
164
+ }
165
+ }
166
+ };
@@ -0,0 +1,100 @@
1
+
2
+ // DO NOT USE the @view instance variable in any files in /app/javascripts/base.
3
+ // The way they are cached makes it not safe to do so.
4
+
5
+ var FLASH, Flash;
6
+
7
+ /* set asset version */
8
+
9
+ FLASH = {
10
+ VERSION: "<%= @hash %>",
11
+ MESSAGE: "<%= @message %>",
12
+ DEPLOYED: <%= Time.now.to_i %>,
13
+ DEPLOYED_STRING: "<%= Time.now.to_s %>"
14
+ };
15
+
16
+
17
+ /* FLASH MESSAGE HANDLERS */
18
+
19
+ YAHOO.namespace("flash");
20
+
21
+ Flash = {};
22
+
23
+ Flash.timeout = 8;
24
+ Flash.duration = 0.25;
25
+
26
+ Flash.write = function(type, message) {
27
+ type = type || "notice";
28
+ if (message) {
29
+ $('flash_message').update(message);
30
+ Flash.setFlashClass('flash', type);
31
+
32
+ // blindDown if the flash is currently hidden
33
+ if ($('flash').getStyle("display") === "none") {
34
+ $('flash').blindDown({queue: "end", duration: Flash.duration});
35
+ }
36
+ YAHOO.oib.setTimeoutInSeconds(Flash.close, Flash.timeout);
37
+ }
38
+ };
39
+
40
+ Flash.close = function() {
41
+ Try.these(function() {
42
+ $('flash').blindUp({queue: "end", duration: Flash.duration});
43
+ });
44
+ };
45
+
46
+ Flash.setFlashClass = function(flash_id, type) {
47
+ if (type === "error") {
48
+ Try.these(function() {
49
+ $(flash_id).removeClassName('notice');
50
+ });
51
+ }
52
+ if (type === "notice") {
53
+ Try.these(function() {
54
+ $(flash_id).removeClassName('error');
55
+ });
56
+ }
57
+ Try.these(function() {
58
+ $(flash_id).addClassName(type);
59
+ });
60
+ };
61
+
62
+
63
+ Flash.error = function(message) {
64
+ // YAHOO.logger.error(message);
65
+ Flash.write("error", message, true);
66
+ };
67
+
68
+ Flash.notice = function(message) {
69
+ Flash.write("notice", message, true);
70
+ };
71
+
72
+ Flash.success = Flash.notice;
73
+
74
+ Flash.t = {};
75
+ Flash.t.notice = function(key, args) {
76
+ var m;
77
+
78
+ m = I18n.t(key, args);
79
+ Flash.notice(m);
80
+ };
81
+ Flash.t.success = Flash.t.notice;
82
+
83
+ Flash.t.error = function(key, args) {
84
+ var m;
85
+
86
+ m = I18n.t(key, args);
87
+ Flash.error(m);
88
+ };
89
+
90
+
91
+ Flash.settingsChanged = function() {
92
+ Flash.t.success("SETTINGS_CHANGED");
93
+ };
94
+ Flash.problemSubmitting = function() {
95
+ Flash.t.error("PROBLEM_SUBMITTING");
96
+ };
97
+
98
+ YAHOO.flash = Flash;
99
+
100
+ /* ----------------------- */
@@ -0,0 +1,79 @@
1
+ // DO NOT USE the @view instance variable in any files in /app/javascripts/base.
2
+ // The way they are cached makes it not safe to do so.
3
+
4
+ // popup help text
5
+ //
6
+ var Help = function(content) {
7
+ try {
8
+ this.content = content;
9
+
10
+ // instance method
11
+ this.show = function(event) {
12
+ var x = event.clientX + 20;
13
+ var y = event.clientY - 10;
14
+ this.create(x,y);
15
+ };
16
+
17
+ this.create = function(x, y) {
18
+ try {
19
+ if (!$(this.css_id)) {
20
+ var popup = new Element('div', {
21
+ "id": this.css_id,
22
+ "class": "popup"
23
+ });
24
+ popup.update(this.content);
25
+ popup.setStyle({
26
+ "display": "none",
27
+ "left": x + "px",
28
+ "top": y + "px"
29
+ });
30
+ $$('body').first().insert(popup);
31
+ setTimeout("$(\"" + this.css_id + "\").show();", 500);
32
+ }
33
+ } catch(e) {
34
+ // alert(e);
35
+ }
36
+ };
37
+
38
+ this.destroy = function() {
39
+ setTimeout("$('" + this.css_id + "').remove();", 4000);
40
+ };
41
+
42
+ this.link = function(text) {
43
+ text = text || "?";
44
+ return Tags.linkToFunction(text, "", {
45
+ "onmouseover": "Help.show(event, " + this.id + ");",
46
+ "onmouseout": "Help.destroy(" + this.id + ")"
47
+ });
48
+ };
49
+
50
+ Help.popups = Help.popups || [];
51
+ Help.popups.push(this);
52
+
53
+ this.id = Help.popups.size() - 1;
54
+ this.css_id = "popup_" + this.id;
55
+ } catch(e) {
56
+ // alert(e);
57
+ }
58
+ };
59
+
60
+ Help.show = function(event, id) {
61
+ var help = Help.popups[id];
62
+ help.show(event);
63
+ };
64
+
65
+ Help.destroy = function(id) {
66
+ var help = Help.popups[id];
67
+ help.destroy();
68
+ };
69
+
70
+ Help.closeAll = function() {
71
+ $$('.popup').each(function(p) {
72
+ p.remove();
73
+ });
74
+ };
75
+
76
+ Help.init = function() {
77
+ // initialize any help popups. Overwrite this locally.
78
+ };
79
+