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,64 @@
1
+ /*
2
+ YMDP LOGGER
3
+
4
+ Send logging messages to OIB.
5
+
6
+ Messages are saved in log/ymdp.log
7
+
8
+
9
+ // DO NOT USE the @view instance variable in any files in /app/javascripts/base.
10
+ // The way they are cached makes it not safe to do so.
11
+
12
+ */
13
+
14
+
15
+ /* set asset version */
16
+
17
+ var LOGGER, Logger;
18
+
19
+ LOGGER = {
20
+ VERSION: "<%= @hash %>",
21
+ MESSAGE: "<%= @message %>",
22
+ DEPLOYED: <%= Time.now.to_i %>,
23
+ DEPLOYED_STRING: "<%= Time.now.to_s %>"
24
+ };
25
+
26
+ YAHOO.namespace("logger");
27
+
28
+ YAHOO.logger.write = function(level, message) {
29
+ if (YAHOO.oib.login) {
30
+ message = "[login: " + YAHOO.oib.login + "] " + message;
31
+ }
32
+ if (YAHOO.oib.guid) {
33
+ message = "[guid: " + YAHOO.oib.guid + "] " + message;
34
+ }
35
+ OIB.post("ymdp/log",
36
+ {
37
+ level: level,
38
+ message: message
39
+ },
40
+ function(response) {
41
+ // log message written successfully
42
+ });
43
+ };
44
+
45
+ YAHOO.logger.debug = function(message) {
46
+ YAHOO.logger.write("debug", message);
47
+ };
48
+ YAHOO.logger.info = function(message) {
49
+ YAHOO.logger.write("info", message);
50
+ };
51
+ YAHOO.logger.warn = function(message) {
52
+ YAHOO.logger.write("warn", message);
53
+ };
54
+ YAHOO.logger.error = function(message) {
55
+ YAHOO.logger.write("warn", message);
56
+ };
57
+ YAHOO.logger.fatal = function(message) {
58
+ YAHOO.logger.write("fatal", message);
59
+ };
60
+
61
+
62
+ Logger = YAHOO.logger;
63
+
64
+ // END YMDP LOGGER
@@ -0,0 +1,35 @@
1
+ var Params = {
2
+ names: ["invitation", "page"],
3
+ parameters: {},
4
+
5
+ init: function(launchParams) {
6
+ launchParams = launchParams || {};
7
+ Debug.log("Params.init", launchParams);
8
+
9
+ try {
10
+ if (launchParams) {
11
+ Params.parameters = launchParams;
12
+ } else {
13
+ Params.parameters = {};
14
+ }
15
+ } catch(wtf) {
16
+ Debug.error(wtf);
17
+ }
18
+ },
19
+
20
+ get: function(name) {
21
+ Debug.log("Params.get", name);
22
+ var index, result;
23
+
24
+ try {
25
+ index = Params.names.indexOf(name);
26
+
27
+ if (index >= 0) {
28
+ result = Params.parameters["param" + index];
29
+ }
30
+ } catch(wtf) {
31
+ Debug.error(wtf);
32
+ }
33
+ return result;
34
+ }
35
+ };
@@ -0,0 +1,47 @@
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
+ var Reporter;
5
+
6
+ // Reports pageviews to OIB for tracking counts of each pageview.
7
+ //
8
+ // The main interface to this class is located in "header.js" where it can
9
+ // make use of the current view name.
10
+ //
11
+ // == Usage
12
+ //
13
+ // Reporter.reportCurrentView(guid);
14
+ //
15
+ Reporter = {
16
+ error: function(guid, params) {
17
+ Debug.log("Reporter.error", params);
18
+ Reporter.report(guid, "error", params);
19
+ },
20
+
21
+ reportCurrentView: function(guid) {
22
+ Reporter.report(guid, View.name);
23
+ },
24
+
25
+ // Report the Ymail guid and page view name to OIB.
26
+ //
27
+ report: function(guid, view, params) {
28
+ params = params || {};
29
+
30
+ params["ymail_guid"] = guid;
31
+ params["view"] = view;
32
+
33
+ Debug.log("Reporting guid " + guid + ", view " + view);
34
+ // Reporter.post(params);
35
+ },
36
+
37
+ // Post data back to OIB, to the URL /ymdp/report.
38
+ //
39
+ post: function(params) {
40
+ params = params || {};
41
+ OIB.post("ymdp/report", params, function(response) {
42
+ Debug.log("Reported page view", params);
43
+ }, function(response) {
44
+ Debug.error("Error reporting page view with params", response);
45
+ });
46
+ },
47
+ };
@@ -0,0 +1,182 @@
1
+ /* TAG HELPERS */
2
+
3
+
4
+ // DO NOT USE the @view instance variable in any files in /app/javascripts/base.
5
+ // The way they are cached makes it not safe to do so.
6
+
7
+ var Tags;
8
+
9
+ function tagHelper(tag_name, text, options) {
10
+ var m, opts;
11
+
12
+ m = "";
13
+ opts = "";
14
+
15
+ Object.keys(options).each(function(key) {
16
+ opts = opts + " " + key + "='" + options[key] + "'";
17
+ });
18
+
19
+ m = m + "<" + tag_name + " " + opts + ">";
20
+ m = m + text;
21
+ m = m + "<\/" + tag_name + ">";
22
+ return m;
23
+ }
24
+
25
+ function optionTag(text, options) {
26
+ return tagHelper("option", text, options);
27
+ }
28
+
29
+ function selectTag(text, options) {
30
+ return tagHelper("select", text, options);
31
+ }
32
+
33
+ function spanTag(text, options) {
34
+ return tagHelper("span", text, options);
35
+ }
36
+
37
+ function liTag(text, options) {
38
+ return tagHelper("li", text, options);
39
+ }
40
+
41
+ function divTag(text, options) {
42
+ return tagHelper("div", text, options);
43
+ }
44
+
45
+ function tdTag(text, options) {
46
+ return tagHelper("td", text, options);
47
+ }
48
+
49
+ function inputTag(value, options) {
50
+ options['value'] = value;
51
+ return tagHelper("input", "", options);
52
+ }
53
+
54
+ function textField(value, options) {
55
+ return inputTag(value, options);
56
+ }
57
+
58
+ function submitTag(value, options) {
59
+ options['type'] = 'submit';
60
+ return inputTag(value, options);
61
+ }
62
+
63
+ function optionsForSelect(options, selected) {
64
+ var m;
65
+ m = "";
66
+ options.each(function(option) {
67
+ var key, value, opts;
68
+
69
+ if (Object.isArray(option)) {
70
+ key = option[0];
71
+ value = option[1];
72
+ } else {
73
+ key = option;
74
+ value = option;
75
+ }
76
+
77
+ opts = {
78
+ value: value
79
+ };
80
+
81
+ if (key === selected) {
82
+ opts.selected = 'selected';
83
+ }
84
+
85
+ m = m + optionTag(key, opts);
86
+ });
87
+ return m;
88
+ }
89
+
90
+ Tags = {
91
+ create: function(tag_name, text, options) {
92
+ options = options || {};
93
+ var m, opts;
94
+
95
+ m = "";
96
+ opts = "";
97
+
98
+ Object.keys(options).each(function(key) {
99
+ if (options[key]) {
100
+ opts = opts + " " + key + "='" + options[key] + "'";
101
+ }
102
+ });
103
+
104
+ m = m + "<" + tag_name + " " + opts + ">";
105
+ m = m + text;
106
+ m = m + "<\/" + tag_name + ">";
107
+ return m;
108
+ },
109
+
110
+ input: function(value, options) {
111
+ options = options || {};
112
+ options["value"] = value;
113
+ options["name"] = options["name"] || "";
114
+ options["id"] = options["id"] || options["name"];
115
+
116
+ return Tags.create("input", "", options);
117
+ },
118
+
119
+ hiddenInput: function(value, options) {
120
+ options = options || {};
121
+ options["type"] = "hidden";
122
+ return Tags.input(value, options);
123
+ },
124
+
125
+ checkBox: function(name, options) {
126
+ options = options || {};
127
+ var check_box, hidden_options, hidden_check_box;
128
+
129
+ options["type"] = "checkbox";
130
+ options["name"] = name;
131
+
132
+ if (options["checked"]) {
133
+ options["checked"] = "checked";
134
+ } else {
135
+ options["checked"] = undefined;
136
+ }
137
+
138
+ check_box = Tags.input("1", options);
139
+
140
+ hidden_options = {
141
+ "name": name
142
+ };
143
+ hidden_check_box = Tags.hiddenInput("0", hidden_options);
144
+
145
+ return check_box + " " + hidden_check_box;
146
+ },
147
+
148
+ submit: function(value, options) {
149
+ options = options || {};
150
+ options["value"] = value;
151
+ options["id"] = options["id"] || options["name"];
152
+ options["type"] = "submit";
153
+ return Tags.input(value, options);
154
+ },
155
+
156
+ linkToFunction: function(value, onclick, options) {
157
+ options = options || {};
158
+ var jv;
159
+
160
+ jv = "#";
161
+ options["href"] = options["href"] || jv;
162
+ options["onclick"] = onclick;
163
+ return Tags.a(value, options);
164
+ },
165
+
166
+ div: function(text, options) {
167
+ return new Element('div', options).update(text);
168
+ },
169
+
170
+ init: function() {
171
+ $w("li ol ul span div p a option select strong table th tr td").each(function(tag_name) {
172
+ Tags[tag_name] = function(text, options) {
173
+ options = options || {};
174
+ return Tags.create(tag_name, text, options);
175
+ };
176
+ });
177
+ }
178
+ };
179
+
180
+ Tags.init();
181
+
182
+ /* END TAG HELPERS */
@@ -0,0 +1,207 @@
1
+ // gets both guid and ymail_wssid and stores them then runs the callback_function
2
+ //
3
+ // YAHOO.oib.ymail_wssid
4
+ // YAHOO.oib.guid
5
+ //
6
+ YAHOO.oib.getGuidAndYmailWssid = function(callback_function) {
7
+ Debug.log("YAHOO.oib.getGuidAndYmailWssid");
8
+ YAHOO.oib.getGuid(function(guid) {
9
+ YAHOO.oib.getYmailWssid(function(ymail_wssid) {
10
+ callback_function(guid, ymail_wssid);
11
+ });
12
+ });
13
+ };
14
+
15
+ // gets user's state info from /ymdp/state
16
+ // including the user's OIB login
17
+ //
18
+ YAHOO.oib.getUserState = function(success_function) {
19
+ Debug.log("YAHOO.oib.getUserState");
20
+ OIB.get("ymdp/state", {}, function(response) {
21
+ Debug.log("YAHOO.oib.getUserState callback", response);
22
+ YAHOO.oib.response = response;
23
+ try {
24
+ YAHOO.oib.since_date = formatUnixDate(YAHOO.oib.response.since_date.s);
25
+ } catch(omg) {
26
+ YAHOO.oib.since_date = 1294869484;
27
+ }
28
+ YAHOO.oib.login = response.login;
29
+ YAHOO.oib.state = response.state;
30
+
31
+ if (success_function) {
32
+ Debug.log("YAHOO.oib.getUserState: About to success function")
33
+ success_function(response);
34
+ }
35
+ },
36
+ function() {
37
+ YAHOO.logger.error("Failed to get user's state");
38
+ });
39
+ };
40
+
41
+
42
+
43
+ /*
44
+ YAHOO.oib.verifyUser
45
+
46
+ global to all views. calls the 'verify' action on ymdp controller and executes
47
+ a function with the result.
48
+ */
49
+ YAHOO.oib.verifyUser = function(success_function, error_function) {
50
+ Debug.log("YAHOO.oib.verifyUser");
51
+
52
+ OIB.get("ymdp/verify", {
53
+ ymail_guid: YAHOO.oib.guid,
54
+ ymail_wssid: YAHOO.oib.ymail_wssid,
55
+ application: View.application
56
+ }, function(response) {
57
+ YAHOO.oib.user = response;
58
+ Debug.log("YAHOO.oib.verifyUser YAHOO.oib.user", YAHOO.oib.user);
59
+ if (success_function) {
60
+ Debug.log("YAHOO.oib.verifyUser: About to success function");
61
+ success_function(YAHOO.oib.user);
62
+ }
63
+ }, error_function);
64
+ };
65
+
66
+
67
+ /*
68
+ AUTHENTICATION
69
+ */
70
+
71
+ YAHOO.oib.signInUser = function() {
72
+ Debug.log("YAHOO.oib.signInUser");
73
+ OIB.get("ymdp/signin", {}, function(response) {
74
+ Debug.log("inside ymdp/signin callback", response);
75
+ Debug.log("YAHOO.oib.response", YAHOO.oib.response);
76
+ if (response.ymail_wssid === "false") {
77
+ // signin didn't work properly, display an error
78
+ Debug.log("YAHOO.oib.response was false");
79
+ YAHOO.oib.showError({
80
+ "method": "YAHOO.oib.signInUser",
81
+ "description": "no ymail_wssid"
82
+ });
83
+ } else {
84
+ Debug.log("YAHOO.oib.response wasn't false");
85
+ // store ymail_wssid in permanent store
86
+
87
+ var raw_wssid = response.ymail_wssid || "";
88
+ var sliced_wssid = raw_wssid.slice(0, 255);
89
+
90
+ var data = {
91
+ "ymail_wssid": sliced_wssid
92
+ };
93
+
94
+ Debug.log("About to call Data.sore", data);
95
+
96
+ Data.store(data);
97
+ YAHOO.oib.ymail_wssid = response.ymail_wssid;
98
+
99
+ YAHOO.oib.verifyUser(YAHOO.launcher.launchMain);
100
+ }
101
+ });
102
+ };
103
+
104
+
105
+ // gets the guid from the Yahoo! environment and executes the success callback
106
+ // if there is a guid, and the error callback if it's undefined
107
+ //
108
+ // YAHOO.oib.guid
109
+ //
110
+ YAHOO.oib.getGuid = function(success_function, error_function) {
111
+ Debug.log("YAHOO.oib.getGuid");
112
+
113
+ openmail.Application.getParameters(function(response) {
114
+ YAHOO.oib.guid = response.user.guid;
115
+ try {
116
+ Debug.log("YAHOO.oib.getGuid getParameters response", response);
117
+
118
+ var params = {};
119
+ if (response.data) {
120
+ params = response.data.launchParams;
121
+ }
122
+ Params.init(params);
123
+ } catch(omg) {
124
+ Debug.error("error getting parameters: " + omg);
125
+ }
126
+ if (YAHOO.oib.guid !== undefined) {
127
+ Try.these(
128
+ function() { success_function(YAHOO.oib.guid); }
129
+ );
130
+ }
131
+ else {
132
+ Try.these(error_function);
133
+ }
134
+ });
135
+ };
136
+
137
+
138
+ // gets the ymail_wssid from the permanent store and executes the callback function
139
+ // if there is a ymail_wssid, and the error callback if it's undefined
140
+ //
141
+ // YAHOO.oib.ymail_wssid
142
+ //
143
+ YAHOO.oib.getYmailWssid = function(success_function, error_function) {
144
+ Debug.log("YAHOO.oib.getYmailWssid");
145
+
146
+ // this function will show the error page if the ymail_wssid has not been set
147
+ //
148
+ var show_error = function() {
149
+ if (YAHOO.oib.ymail_wssid === undefined) {
150
+ Debug.log("No YAHOO.oib.ymail_wssid");
151
+
152
+ YAHOO.oib.showError({
153
+ "retry": "hide"
154
+ });
155
+ } else {
156
+ Debug.log("YAHOO.oib.ymail_wssid does exist", YAHOO.oib.ymail_wssid);
157
+ }
158
+ };
159
+
160
+ // run the show_error function after 5 seconds
161
+ //
162
+ Debug.log("Set timeout for error function to 5 seconds");
163
+ YAHOO.oib.setTimeoutInSeconds(show_error, 5);
164
+ Debug.log("About to call Data.fetch");
165
+
166
+ // retrieve the user's ymail_wssid and store it in YAHOO.oib.ymail_wssid
167
+ //
168
+ Data.fetch(["ymail_wssid"], function(response) {
169
+ Debug.log("Inside Data.fetch callback");
170
+ YAHOO.oib.ymail_wssid = response.data.ymail_wssid;
171
+ if (YAHOO.oib.ymail_wssid !== undefined) {
172
+ Debug.log("YAHOO.oib.ymail_wssid is defined", YAHOO.oib.ymail_wssid);
173
+
174
+ try {
175
+ success_function(YAHOO.oib.ymail_wssid);
176
+ } catch(omg) {
177
+ Debug.error("Error in YAHOO.oib.getYmailWssid getData callback", omg);
178
+ }
179
+
180
+ }
181
+ else {
182
+ Try.these(error_function);
183
+ }
184
+ });
185
+ };
186
+
187
+ YAHOO.oib.deactivateUser = function() {
188
+ YAHOO.oib.getGuidAndYmailWssid(function() {
189
+ var guid, ymail_wssid;
190
+
191
+ guid = YAHOO.oib.guid;
192
+ ymail_wssid = YAHOO.oib.ymail_wssid;
193
+
194
+ Data.clear();
195
+
196
+ OIB.post("/ymdp/deactivate", {
197
+ "ymail_guid": guid,
198
+ "ymail_wssid": ymail_wssid
199
+ },
200
+ function(response) {
201
+ // YAHOO.logger.info("Finished deactivating user");
202
+ if (View.name !== "deactivate") {
203
+ YAHOO.launcher.launchGoodbye();
204
+ }
205
+ });
206
+ });
207
+ };