ymdp 0.0.7 → 0.0.8

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.
Files changed (64) hide show
  1. data/VERSION +1 -1
  2. data/bin/ymdp +51 -0
  3. data/lib/new_application/.base +11 -0
  4. data/lib/new_application/Gemfile +12 -0
  5. data/lib/new_application/Rakefile +3 -0
  6. data/lib/new_application/app/.gitignore +1 -0
  7. data/lib/new_application/app/assets/images/lightbox/lightbox_bg.png +0 -0
  8. data/lib/new_application/app/assets/javascripts/OpenMailIntl.js +291 -0
  9. data/lib/new_application/app/assets/javascripts/controls.js +965 -0
  10. data/lib/new_application/app/assets/javascripts/date.js +104 -0
  11. data/lib/new_application/app/assets/javascripts/dragdrop.js +974 -0
  12. data/lib/new_application/app/assets/javascripts/effects.js +1123 -0
  13. data/lib/new_application/app/assets/javascripts/lowpro.js +320 -0
  14. data/lib/new_application/app/assets/javascripts/prototype.js +4874 -0
  15. data/lib/new_application/app/assets/javascripts/scriptaculous.js +68 -0
  16. data/lib/new_application/app/assets/yrb/en-US/application_en-US.pres +7 -0
  17. data/lib/new_application/app/helpers/application_helper.rb +3 -0
  18. data/lib/new_application/app/javascripts/application.js +580 -0
  19. data/lib/new_application/app/javascripts/debug.js +138 -0
  20. data/lib/new_application/app/javascripts/flash.js +96 -0
  21. data/lib/new_application/app/javascripts/header.js +13 -0
  22. data/lib/new_application/app/javascripts/help.js +76 -0
  23. data/lib/new_application/app/javascripts/i18n.js +235 -0
  24. data/lib/new_application/app/javascripts/launcher.js +159 -0
  25. data/lib/new_application/app/javascripts/logger.js +61 -0
  26. data/lib/new_application/app/javascripts/tag_helper.js +178 -0
  27. data/lib/new_application/app/stylesheets/application.css +0 -0
  28. data/lib/new_application/app/stylesheets/ie.css +0 -0
  29. data/lib/new_application/app/stylesheets/ie6.css +0 -0
  30. data/lib/new_application/app/stylesheets/ie7.css +0 -0
  31. data/lib/new_application/app/stylesheets/ie8.css +0 -0
  32. data/lib/new_application/app/stylesheets/lightbox.css +30 -0
  33. data/lib/new_application/app/stylesheets/non_ie.css +0 -0
  34. data/lib/new_application/app/views/layouts/application.html.haml +35 -0
  35. data/lib/new_application/app/views/shared/_error.html.haml +8 -0
  36. data/lib/new_application/app/views/shared/_flash.html.haml +2 -0
  37. data/lib/new_application/app/views/shared/_javascripts.html.haml +22 -0
  38. data/lib/new_application/app/views/shared/_loading.html.haml +13 -0
  39. data/lib/new_application/app/views/shared/_stylesheets.html.haml +23 -0
  40. data/lib/new_application/config/categories.yml +6 -0
  41. data/lib/new_application/config/config.yml.example +30 -0
  42. data/lib/new_application/config/constants.rb +54 -0
  43. data/lib/new_application/config/servers.yml.example +9 -0
  44. data/lib/new_application/lib/init.rb +13 -0
  45. data/lib/new_application/lib/tasks/environment.rake +4 -0
  46. data/lib/new_application/lib/tasks/keys.rake +235 -0
  47. data/lib/new_application/lib/tasks/setup.rake +13 -0
  48. data/lib/new_application/lib/tasks/ymdp.rake +718 -0
  49. data/lib/new_application/script/build +9 -0
  50. data/lib/new_application/script/config +13 -0
  51. data/lib/new_application/script/destroy +18 -0
  52. data/lib/new_application/script/generate +4 -0
  53. data/lib/new_application/script/gitrm +17 -0
  54. data/lib/new_application/script/growl +6 -0
  55. data/lib/new_application/script/images +48 -0
  56. data/lib/new_application/script/jslint.js +5072 -0
  57. data/lib/new_application/script/langs +31 -0
  58. data/lib/new_application/script/translate +5 -0
  59. data/lib/new_application/script/ymdt +1895 -0
  60. data/lib/new_application/script/ymdt.old +1890 -0
  61. data/lib/new_application/script/yuicompressor-2.4.2.jar +0 -0
  62. data/lib/new_application/ymdp +8 -0
  63. data/ymdp.gemspec +64 -1
  64. metadata +65 -4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
data/bin/ymdp ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ @command = ARGV[0]
4
+
5
+ if @command == "init"
6
+
7
+ require 'fileutils'
8
+
9
+ dir = File.dirname(__FILE__)
10
+
11
+ new_application_dir = "#{dir}/../lib/new_application/."
12
+
13
+ # Create the structure for a YMDP project
14
+
15
+ @project_name = ARGV[1]
16
+
17
+ @message = <<MESSAGE
18
+ Creating YMDP directory for project #{@project_name}
19
+
20
+ First, run:
21
+
22
+ gem bundle
23
+
24
+ Then:
25
+
26
+ ./script/config
27
+
28
+ Then open config.yml and set your username and password.
29
+ Then open servers.yml and set your server keys.
30
+
31
+ Then run:
32
+
33
+ bin/rake create:all
34
+
35
+ to fetch your applications from Yahoo! Mail's servers.
36
+
37
+ MESSAGE
38
+
39
+ puts @message
40
+
41
+ FileUtils.mkdir_p(@project_name)
42
+ FileUtils.cp_r(new_application_dir, @project_name)
43
+ else
44
+ commands = ARGV.join(" ")
45
+ if File.exists?("./rake")
46
+ system "./rake #{commands}"
47
+ else
48
+ system "rake #{commands}"
49
+ end
50
+ end
51
+
@@ -0,0 +1,11 @@
1
+ [load_paths]
2
+ vendor/ymdp/**
3
+ lib
4
+ config
5
+
6
+ [requires]
7
+
8
+ [consts]
9
+ APPLICATION_PATH=vendor/ymdp/application_view
10
+ SERVERS_PATH=servers
11
+ TMP_PATH=./tmp
@@ -0,0 +1,12 @@
1
+ gem "haml"
2
+ gem "grit"
3
+ gem "json"
4
+ gem "hpricot"
5
+ gem "ruby-growl"
6
+ gem "activesupport", :require_as => "active_support"
7
+ gem "sishen-rtranslate"
8
+ gem "basepath"
9
+ gem "rake"
10
+ gem "ymdp"
11
+
12
+ disable_system_gems
@@ -0,0 +1,3 @@
1
+ Dir["./lib/tasks/*.rake"].each do |file|
2
+ load file
3
+ end
@@ -0,0 +1 @@
1
+ assets.zip
@@ -0,0 +1,291 @@
1
+ /**
2
+ * The OpenMailIntl class provides minimal internationalization
3
+ * support for OpenMail.
4
+ * @module openmailintl
5
+ */
6
+
7
+ /**
8
+ * The OpenMailIntl class provides minimal internationalization
9
+ * support for OpenMail.
10
+ * @class OpenMailIntl
11
+ */
12
+
13
+ /*global window, YAHOO, ActiveXObject, XMLHttpRequest */
14
+
15
+ var OpenMailIntl = function () {
16
+
17
+ var openmailintl = {};
18
+
19
+ /**
20
+ * Returns the user's preferred languages as a list of
21
+ * RFC 4646 language tags in decreasing priority order.
22
+ * @method getPreferredLanguages
23
+ * @private
24
+ * @return {String[]} A list of RFC 4646 language tags.
25
+ */
26
+ var getPreferredLanguages = function () {
27
+ // this is a stub until OpenMail can synchronously provide
28
+ // a complete and accurate language list
29
+ var intl, match;
30
+ intl = "us";
31
+ match = window.location.href.match(/[\?&]\.intl=([a-z0-9]{2})/);
32
+ if (match) {
33
+ intl = match[1];
34
+ }
35
+ switch (intl) {
36
+ // only support Mail INTLs
37
+ case "aa": return ["en-AA"];
38
+ case "ar": return ["es-AR"];
39
+ case "au": return ["en-AU"];
40
+ case "br": return ["pt-BR"];
41
+ case "ca": return ["en-CA"];
42
+ case "cf": return ["fr-CA"];
43
+ case "cl": return ["es-CL"];
44
+ case "cn": return ["zh-Hans-CN"];
45
+ case "co": return ["es-CO"];
46
+ case "de": return ["de-DE"];
47
+ case "dk": return ["da-DK"];
48
+ case "e1": return ["es-US"];
49
+ case "es": return ["es-ES"];
50
+ case "fr": return ["fr-FR"];
51
+ case "hk": return ["zh-Hant-HK"];
52
+ case "cn": return ["zh-Hant-CN"];
53
+ case "in": return ["en-IN"];
54
+ case "it": return ["it-IT"];
55
+ case "jp": return ["ja-JP"];
56
+ case "kr": return ["ko-KR"];
57
+ case "mx": return ["es-MX"];
58
+ case "my": return ["en-MY"];
59
+ case "nl": return ["nl-NL"];
60
+ case "no": return ["nb-NO"];
61
+ case "nz": return ["en-NZ"];
62
+ case "pe": return ["es-PE"];
63
+ case "ph": return ["en-PH"];
64
+ case "pl": return ["pl-PL"];
65
+ case "ru": return ["ru-RU"];
66
+ case "se": return ["sv-SE"];
67
+ case "sg": return ["en-SG"];
68
+ case "th": return ["th-TH"];
69
+ case "tr": return ["tr-TR"];
70
+ case "tw": return ["zh-Hant-TW"];
71
+ case "uk": return ["en-GB"];
72
+ case "us": return ["en-US"];
73
+ case "ve": return ["es-VE"];
74
+ case "vn": return ["vi-VN"];
75
+ case "id": return ["id-ID"];
76
+ default: return ["en-US"];
77
+ }
78
+ };
79
+
80
+ /**
81
+ * Returns the language among those available that
82
+ * best matches the user's preferences, using the Lookup
83
+ * algorithm of RFC 4647.
84
+ * If none of the available languages meets the user's preferences,
85
+ * then <code>availableLanguages[0]</code> is returned.
86
+ * @method findBestLanguage
87
+ * @param {String[]} availableLanguages The list of languages
88
+ * that the application supports, represented as RFC 4646 language
89
+ * tags.
90
+ * @return {String} The available language that best matches the
91
+ * user's preferences.
92
+ */
93
+ openmailintl.findBestLanguage = function (availableLanguages) {
94
+
95
+ var preferencesList, i, language, normalized, result, index, normalization;
96
+
97
+ preferencesList = getPreferredLanguages();
98
+
99
+ // check whether the list of available languages
100
+ // contains language; if so return it
101
+ function scan(language) {
102
+ var i;
103
+ for (i = 0; i < availableLanguages.length; i += 1) {
104
+ if (language.toLowerCase() === availableLanguages[i].toLowerCase()) {
105
+ return availableLanguages[i];
106
+ }
107
+ }
108
+ }
109
+
110
+ normalization = {
111
+ "zh-hk": "zh-Hant-TW",
112
+ "zh-cn": "zh-Hant-CN",
113
+ "zh-tw": "zh-Hant-TW",
114
+ "zh": "zh-Hant-CN",
115
+ "hk": "zh-Hant-TW",
116
+ "en": "en-US",
117
+ "es": "es-ES",
118
+ "fr": "fr-FR",
119
+ "hi": "hi-IN",
120
+ "id": "id-ID",
121
+ "it": "it-IT",
122
+ "ja": "ja-JP",
123
+ "kr": "ko-KR",
124
+ "nb": "nb-NO",
125
+ "nl": "nl-NL",
126
+ "pl": "pl-PL",
127
+ "pt": "pt-BR",
128
+ "ru": "ru-RU",
129
+ "sv": "sv-SE",
130
+ "th": "th-TH",
131
+ "tr": "tr-TR",
132
+ "vi": "vi-VN",
133
+ "zh": "zh-Hans-CN",
134
+ "zh-cn": "zh-Hans-CN",
135
+ "zh-hk": "zh-Hant-HK",
136
+ "zh-tw": "zh-Hant-TW"
137
+ };
138
+ if (YAHOO.lang.isString(preferencesList)) {
139
+ preferencesList = preferencesList.split(/[, ]/);
140
+ }
141
+ for (i = 0; i < preferencesList.length; i += 1) {
142
+ language = preferencesList[i];
143
+ if (!language) {
144
+ continue;
145
+ }
146
+ normalized = normalization[language.toLowerCase()];
147
+ if (normalized) {
148
+ language = normalized;
149
+ }
150
+ // check the fallback sequence for one language
151
+ while (language.length > 0) {
152
+ result = scan(language);
153
+ if (result) {
154
+ return result;
155
+ } else {
156
+ index = language.lastIndexOf("-");
157
+ if (index >= 0) {
158
+ language = language.substring(0, index);
159
+ // one-character subtags get cut along with the following subtag
160
+ if (index >= 2 && language.charAt(index - 2) === "-") {
161
+ language = language.substring(0, index - 2);
162
+ }
163
+ } else {
164
+ // nothing available for this language
165
+ break;
166
+ }
167
+ }
168
+ }
169
+ }
170
+
171
+ // we use the first available language as the default
172
+ return availableLanguages[0];
173
+ };
174
+
175
+
176
+ var getFile = function (url) {
177
+ var XHR;
178
+ if (window.XMLHttpRequest) {
179
+ XHR = new XMLHttpRequest();
180
+ } else {
181
+ XHR = new ActiveXObject("Microsoft.XMLHTTP");
182
+ }
183
+ if (XHR) {
184
+ XHR.open("GET", url, false);
185
+ XHR.send(null);
186
+ if (XHR.status === 200) {
187
+ return XHR.responseText;
188
+ }
189
+ }
190
+ };
191
+
192
+ /**
193
+ * Retrieves a language specific JSON file that's part of the application's assets,
194
+ * and returns the decoded JSON object.
195
+ * The method first looks for the asset with the name <code>assetPath + baseName + "_" + language + ".json"</code>.
196
+ * If that asset doesn't exist, it looks for the asset with the name <code>assetPath + baseName + ".json"</code>.
197
+ * @method getResources
198
+ * @param {String} assetPath The path to the assets of the application.
199
+ * @param {String} baseName The base name of a resource bundle.
200
+ * @param {String} language The language for which resources are needed, as an RFC 4646 language tag.
201
+ * @return {Object} The object decoded from the JSON file found.
202
+ */
203
+ openmailintl.getResources = function (assetPath, baseName, language) {
204
+ var url, contents;
205
+
206
+ if (assetPath.charAt(assetPath.length - 1) !== "/") {
207
+ assetPath += "/";
208
+ }
209
+ if (language) {
210
+ url = assetPath + baseName + "_" + language + ".json";
211
+ } else {
212
+ url = assetPath + baseName + ".json";
213
+ }
214
+
215
+ contents = getFile(url);
216
+ if (contents) {
217
+ try {
218
+ return YAHOO.lang.JSON.parse(contents);
219
+ } catch (x) {
220
+ }
221
+ }
222
+ if (language) {
223
+ return this.getResources(assetPath, baseName);
224
+ } else {
225
+ throw new Error("bundle " + baseName + " for language " + language + " not found.");
226
+ }
227
+ };
228
+
229
+ /**
230
+ * Formats a string by substituting parameters into the pattern.
231
+ * The pattern syntax is similar to that of the Java
232
+ * <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat class</a>,
233
+ * but currently only the following format elements are supported:
234
+ * <ul>
235
+ * <li>{ <i>ArgumentIndex</i> }
236
+ * <li>{ <i>ArgumentIndex</i> , number }
237
+ * <li>{ <i>ArgumentIndex</i> , date }
238
+ * </ul>
239
+ * Quote characters do not escape braces; if you want to use
240
+ * a literal brace, write it as &amp;#x007b; or &amp;#x007d;.
241
+ * @method formatMessage
242
+ * @param {String} pattern The pattern string into which the arguments are inserted.
243
+ * @param {Object[]} arguments The objects to insert into the pattern string.
244
+ * @param {String} language The language for which arguments such as numbers and dates
245
+ * should be formatted.
246
+ * @return {String} The pattern string with substituted parameters.
247
+ */
248
+ openmailintl.formatMessage = function (pattern, args, language) {
249
+ var i, j, k, token, key, value, meta;
250
+
251
+ for (;;) {
252
+ i = pattern.lastIndexOf('{');
253
+ if (i < 0) {
254
+ break;
255
+ }
256
+ j = pattern.indexOf('}', i);
257
+ if (i + 1 >= j) {
258
+ break;
259
+ }
260
+
261
+ // extract format element information
262
+ token = pattern.substring(i + 1, j);
263
+ key = token;
264
+ meta = null;
265
+ k = key.indexOf(',');
266
+ if (k > -1) {
267
+ meta = key.substring(k + 1);
268
+ key = key.substring(0, k);
269
+ }
270
+
271
+ // lookup the value
272
+ value = args[key];
273
+
274
+ if (meta !== null) {
275
+ if (meta.indexOf("date") === 0 && value instanceof Date) {
276
+ value = value.toLocaleString();
277
+ } else if (meta.indexOf("number") === 0 && typeof value === "number") {
278
+ value = value.toLocaleString();
279
+ }
280
+ }
281
+
282
+ pattern = pattern.substring(0, i) + value + pattern.substring(j + 1);
283
+ }
284
+
285
+ return pattern;
286
+ };
287
+
288
+ return openmailintl;
289
+
290
+ }();
291
+