dune-dashboard 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (561) hide show
  1. checksums.yaml +7 -0
  2. data/.bowerrc +3 -0
  3. data/.gitignore +22 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +13 -0
  6. data/CHANGELOG.md +6 -0
  7. data/Gemfile +12 -0
  8. data/Gemfile.lock +392 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +58 -0
  11. data/Rakefile +23 -0
  12. data/app/assets/images/dune/dashboard/logo@2x.png +0 -0
  13. data/app/assets/javascripts/adapters/channel_adapter.coffee +1 -0
  14. data/app/assets/javascripts/adapters/form_data.coffee +26 -0
  15. data/app/assets/javascripts/adapters/press_asset_adapter.coffee +1 -0
  16. data/app/assets/javascripts/configs.coffee +10 -0
  17. data/app/assets/javascripts/controllers/.gitkeep +0 -0
  18. data/app/assets/javascripts/controllers/channels.coffee +40 -0
  19. data/app/assets/javascripts/controllers/contributions.coffee +26 -0
  20. data/app/assets/javascripts/controllers/press_assets.coffee +24 -0
  21. data/app/assets/javascripts/controllers/projects.coffee +36 -0
  22. data/app/assets/javascripts/controllers/sessions.coffee +2 -0
  23. data/app/assets/javascripts/controllers/tags.coffee +24 -0
  24. data/app/assets/javascripts/controllers/users.coffee +8 -0
  25. data/app/assets/javascripts/dashboard.coffee +5 -0
  26. data/app/assets/javascripts/dune-dashboard-application.js +16 -0
  27. data/app/assets/javascripts/dune-dashboard-libs.js +25 -0
  28. data/app/assets/javascripts/dune-dashboard-templates.js +1 -0
  29. data/app/assets/javascripts/helpers/daterangepicker.coffee +1 -0
  30. data/app/assets/javascripts/helpers/format-date.coffee +5 -0
  31. data/app/assets/javascripts/helpers/loading.coffee +14 -0
  32. data/app/assets/javascripts/helpers/number-to-currency.coffee +5 -0
  33. data/app/assets/javascripts/helpers/pagination.coffee +1 -0
  34. data/app/assets/javascripts/helpers/show-boolean.coffee +5 -0
  35. data/app/assets/javascripts/i18n/translations_en.js +165 -0
  36. data/app/assets/javascripts/initializers/authentication.coffee +50 -0
  37. data/app/assets/javascripts/mixins/modal-controller.coffee +7 -0
  38. data/app/assets/javascripts/mixins/modal-view.coffee +15 -0
  39. data/app/assets/javascripts/mixins/paginable.coffee +25 -0
  40. data/app/assets/javascripts/mixins/searchable.coffee +58 -0
  41. data/app/assets/javascripts/models/.gitkeep +0 -0
  42. data/app/assets/javascripts/models/channel.coffee +25 -0
  43. data/app/assets/javascripts/models/contributions.coffee +15 -0
  44. data/app/assets/javascripts/models/press_asset.coffee +5 -0
  45. data/app/assets/javascripts/models/project.coffee +16 -0
  46. data/app/assets/javascripts/models/reward.coffee +4 -0
  47. data/app/assets/javascripts/models/tag.coffee +4 -0
  48. data/app/assets/javascripts/models/user.coffee +13 -0
  49. data/app/assets/javascripts/router.coffee +36 -0
  50. data/app/assets/javascripts/routes/.gitkeep +0 -0
  51. data/app/assets/javascripts/routes/application.coffee +35 -0
  52. data/app/assets/javascripts/routes/channels-edit.coffee +4 -0
  53. data/app/assets/javascripts/routes/channels-new.coffee +4 -0
  54. data/app/assets/javascripts/routes/channels.coffee +21 -0
  55. data/app/assets/javascripts/routes/contributions.coffee +29 -0
  56. data/app/assets/javascripts/routes/index.coffee +4 -0
  57. data/app/assets/javascripts/routes/press_assets-edit.coffee +4 -0
  58. data/app/assets/javascripts/routes/press_assets-new.coffee +5 -0
  59. data/app/assets/javascripts/routes/press_assets.coffee +13 -0
  60. data/app/assets/javascripts/routes/projects.coffee +23 -0
  61. data/app/assets/javascripts/routes/sessions.coffee +3 -0
  62. data/app/assets/javascripts/routes/tags-edit.coffee +4 -0
  63. data/app/assets/javascripts/routes/tags-new.coffee +5 -0
  64. data/app/assets/javascripts/routes/tags.coffee +15 -0
  65. data/app/assets/javascripts/routes/users.coffee +17 -0
  66. data/app/assets/javascripts/serializers/channel.coffee +10 -0
  67. data/app/assets/javascripts/serializers/file.coffee +6 -0
  68. data/app/assets/javascripts/serializers/object.coffee +6 -0
  69. data/app/assets/javascripts/serializers/project.coffee +4 -0
  70. data/app/assets/javascripts/store.coffee +5 -0
  71. data/app/assets/javascripts/templates/.gitkeep +0 -0
  72. data/app/assets/javascripts/templates/channels/_form.emblem +256 -0
  73. data/app/assets/javascripts/templates/channels/edit.emblem +1 -0
  74. data/app/assets/javascripts/templates/channels/index.emblem +66 -0
  75. data/app/assets/javascripts/templates/channels/new.emblem +1 -0
  76. data/app/assets/javascripts/templates/channels/search-form.emblem +13 -0
  77. data/app/assets/javascripts/templates/contributions/index.emblem +111 -0
  78. data/app/assets/javascripts/templates/contributions/search-form.emblem +27 -0
  79. data/app/assets/javascripts/templates/contributions/show.emblem +79 -0
  80. data/app/assets/javascripts/templates/daterangepicker.emblem +5 -0
  81. data/app/assets/javascripts/templates/layouts/application.emblem +19 -0
  82. data/app/assets/javascripts/templates/layouts/header.emblem +25 -0
  83. data/app/assets/javascripts/templates/layouts/sidebar.emblem +32 -0
  84. data/app/assets/javascripts/templates/pagination.emblem +10 -0
  85. data/app/assets/javascripts/templates/press_assets/_form.emblem +33 -0
  86. data/app/assets/javascripts/templates/press_assets/edit.emblem +1 -0
  87. data/app/assets/javascripts/templates/press_assets/index.emblem +45 -0
  88. data/app/assets/javascripts/templates/press_assets/new.emblem +1 -0
  89. data/app/assets/javascripts/templates/projects/index.emblem +119 -0
  90. data/app/assets/javascripts/templates/projects/search-form.emblem +19 -0
  91. data/app/assets/javascripts/templates/search-tab.emblem +6 -0
  92. data/app/assets/javascripts/templates/sessions/new.emblem +17 -0
  93. data/app/assets/javascripts/templates/tags/_form.emblem +24 -0
  94. data/app/assets/javascripts/templates/tags/edit.emblem +1 -0
  95. data/app/assets/javascripts/templates/tags/index.emblem +46 -0
  96. data/app/assets/javascripts/templates/tags/new.emblem +1 -0
  97. data/app/assets/javascripts/templates/users/index.emblem +51 -0
  98. data/app/assets/javascripts/templates/users/search-form.emblem +13 -0
  99. data/app/assets/javascripts/views/auto-save-checkbox.coffee +14 -0
  100. data/app/assets/javascripts/views/contributions/show.coffee +1 -0
  101. data/app/assets/javascripts/views/daterangepicker.coffee +60 -0
  102. data/app/assets/javascripts/views/file.coffee +7 -0
  103. data/app/assets/javascripts/views/layouts/header.coffee +23 -0
  104. data/app/assets/javascripts/views/layouts/sidebar.coffee +6 -0
  105. data/app/assets/javascripts/views/page-title.coffee +45 -0
  106. data/app/assets/javascripts/views/pagination.coffee +51 -0
  107. data/app/assets/javascripts/views/projects/index.coffee +5 -0
  108. data/app/assets/javascripts/views/search-tab.coffee +24 -0
  109. data/app/assets/stylesheets/core/core.sass +299 -0
  110. data/app/assets/stylesheets/core/mixins.sass +83 -0
  111. data/app/assets/stylesheets/core/settings.sass +75 -0
  112. data/app/assets/stylesheets/dune-dashboard-application.sass +12 -0
  113. data/app/assets/stylesheets/modules/alerts.sass +21 -0
  114. data/app/assets/stylesheets/modules/avatar.sass +13 -0
  115. data/app/assets/stylesheets/modules/boxes.sass +274 -0
  116. data/app/assets/stylesheets/modules/buttons.sass +160 -0
  117. data/app/assets/stylesheets/modules/dl-details.sass +13 -0
  118. data/app/assets/stylesheets/modules/forms.sass +53 -0
  119. data/app/assets/stylesheets/modules/generic.sass +9 -0
  120. data/app/assets/stylesheets/modules/header.sass +153 -0
  121. data/app/assets/stylesheets/modules/labels.sass +3 -0
  122. data/app/assets/stylesheets/modules/navs.sass +98 -0
  123. data/app/assets/stylesheets/modules/pagination.sass +19 -0
  124. data/app/assets/stylesheets/modules/sidebar.sass +147 -0
  125. data/app/assets/stylesheets/modules/small-box.sass +78 -0
  126. data/app/assets/stylesheets/pages/login.sass +42 -0
  127. data/app/controllers/dune/dashboard/ember_controller.rb +7 -0
  128. data/app/views/layouts/dune/dashboard/application.html.erb +15 -0
  129. data/bower.json +28 -0
  130. data/config/ember-i18n.yml +2 -0
  131. data/config/ember_locales/channels.en.yml +49 -0
  132. data/config/ember_locales/contributions.en.yml +42 -0
  133. data/config/ember_locales/en.yml +1 -0
  134. data/config/ember_locales/layouts.en.yml +16 -0
  135. data/config/ember_locales/press_assets.en.yml +14 -0
  136. data/config/ember_locales/projects.en.yml +33 -0
  137. data/config/ember_locales/sessions.en.yml +11 -0
  138. data/config/ember_locales/tags.en.yml +12 -0
  139. data/config/ember_locales/titles.en.yml +22 -0
  140. data/config/ember_locales/users.en.yml +12 -0
  141. data/config/ember_locales/words.en.yml +12 -0
  142. data/config/routes.rb +4 -0
  143. data/dune-dashboard.gemspec +28 -0
  144. data/lib/dune/dashboard.rb +11 -0
  145. data/lib/dune/dashboard/engine.rb +12 -0
  146. data/lib/dune/dashboard/i18n.rb +108 -0
  147. data/lib/dune/dashboard/version.rb +5 -0
  148. data/spec/dummy/README.rdoc +28 -0
  149. data/spec/dummy/Rakefile +6 -0
  150. data/spec/dummy/app/assets/images/.keep +0 -0
  151. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  152. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  153. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  154. data/spec/dummy/app/controllers/concerns/.keep +0 -0
  155. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  156. data/spec/dummy/app/mailers/.keep +0 -0
  157. data/spec/dummy/app/models/.keep +0 -0
  158. data/spec/dummy/app/models/concerns/.keep +0 -0
  159. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  160. data/spec/dummy/bin/bundle +3 -0
  161. data/spec/dummy/bin/rails +4 -0
  162. data/spec/dummy/bin/rake +4 -0
  163. data/spec/dummy/config.ru +4 -0
  164. data/spec/dummy/config/application.rb +30 -0
  165. data/spec/dummy/config/boot.rb +5 -0
  166. data/spec/dummy/config/environment.rb +5 -0
  167. data/spec/dummy/config/environments/development.rb +29 -0
  168. data/spec/dummy/config/environments/production.rb +80 -0
  169. data/spec/dummy/config/environments/test.rb +38 -0
  170. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  171. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  172. data/spec/dummy/config/initializers/inflections.rb +16 -0
  173. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  174. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  175. data/spec/dummy/config/initializers/session_store.rb +3 -0
  176. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  177. data/spec/dummy/config/locales/en.yml +23 -0
  178. data/spec/dummy/config/routes.rb +3 -0
  179. data/spec/dummy/lib/assets/.keep +0 -0
  180. data/spec/dummy/log/.keep +0 -0
  181. data/spec/dummy/public/404.html +58 -0
  182. data/spec/dummy/public/422.html +58 -0
  183. data/spec/dummy/public/500.html +57 -0
  184. data/spec/dummy/public/favicon.ico +0 -0
  185. data/spec/javascripts/controllers/channels_spec.coffee +16 -0
  186. data/spec/javascripts/controllers/press_assets_spec.coffee +5 -0
  187. data/spec/javascripts/controllers/projects_spec.coffee +16 -0
  188. data/spec/javascripts/controllers/users_spec.coffee +16 -0
  189. data/spec/javascripts/fixtures/channels.coffee +49 -0
  190. data/spec/javascripts/fixtures/contributions.coffee +46 -0
  191. data/spec/javascripts/fixtures/press_assets.coffee +15 -0
  192. data/spec/javascripts/fixtures/projects.coffee +108 -0
  193. data/spec/javascripts/fixtures/tags.coffee +15 -0
  194. data/spec/javascripts/fixtures/users.coffee +26 -0
  195. data/spec/javascripts/helpers/auththentication.coffee +11 -0
  196. data/spec/javascripts/integration/channels_spec.coffee +109 -0
  197. data/spec/javascripts/integration/contributions_spec.coffee +108 -0
  198. data/spec/javascripts/integration/press_assets_spec.coffee +66 -0
  199. data/spec/javascripts/integration/projects_spec.coffee +110 -0
  200. data/spec/javascripts/integration/sessions_spec.coffee +71 -0
  201. data/spec/javascripts/integration/tags_spec.coffee +65 -0
  202. data/spec/javascripts/integration/users_spec.coffee +108 -0
  203. data/spec/javascripts/models/channel_spec.coffee +4 -0
  204. data/spec/javascripts/models/contribution_spec.coffee +4 -0
  205. data/spec/javascripts/models/press_asset_spec.coffee +5 -0
  206. data/spec/javascripts/models/project_spec.coffee +4 -0
  207. data/spec/javascripts/models/reward_spec.coffee +4 -0
  208. data/spec/javascripts/models/tag_spec.coffee +4 -0
  209. data/spec/javascripts/models/user_spec.coffee +4 -0
  210. data/spec/javascripts/spec_helper.coffee +56 -0
  211. data/spec/javascripts/support/jquery.mockjax.js +598 -0
  212. data/spec/teaspoon_env.rb +183 -0
  213. data/vendor/assets/components/cldr/.bower.json +14 -0
  214. data/vendor/assets/components/cldr/README.md +47 -0
  215. data/vendor/assets/components/cldr/plurals.js +240 -0
  216. data/vendor/assets/components/ember-i18n/.bower.json +46 -0
  217. data/vendor/assets/components/ember-i18n/CONTRIBUTING.md +13 -0
  218. data/vendor/assets/components/ember-i18n/Changelog.md +82 -0
  219. data/vendor/assets/components/ember-i18n/LICENSE +10 -0
  220. data/vendor/assets/components/ember-i18n/README.md +148 -0
  221. data/vendor/assets/components/ember-i18n/VERSION +1 -0
  222. data/vendor/assets/components/ember-i18n/bower.json +34 -0
  223. data/vendor/assets/components/ember-i18n/lib/i18n.js +215 -0
  224. data/vendor/assets/components/ember-i18n/package.json +27 -0
  225. data/vendor/assets/components/ember-i18n/script/buildSuite.js +34 -0
  226. data/vendor/assets/components/ember-i18n/script/fetch_vendor.js +66 -0
  227. data/vendor/assets/components/ember-i18n/script/run.js +24 -0
  228. data/vendor/assets/components/ember-simple-auth/.bower.json +31 -0
  229. data/vendor/assets/components/ember-simple-auth/LICENSE +20 -0
  230. data/vendor/assets/components/ember-simple-auth/README.md +15 -0
  231. data/vendor/assets/components/ember-simple-auth/bower.json +21 -0
  232. data/vendor/assets/components/ember-simple-auth/simple-auth-cookie-store.amd.js +220 -0
  233. data/vendor/assets/components/ember-simple-auth/simple-auth-cookie-store.js +284 -0
  234. data/vendor/assets/components/ember-simple-auth/simple-auth-devise.amd.js +243 -0
  235. data/vendor/assets/components/ember-simple-auth/simple-auth-devise.js +312 -0
  236. data/vendor/assets/components/ember-simple-auth/simple-auth-oauth2.amd.js +386 -0
  237. data/vendor/assets/components/ember-simple-auth/simple-auth-oauth2.js +455 -0
  238. data/vendor/assets/components/ember-simple-auth/simple-auth-testing.amd.js +79 -0
  239. data/vendor/assets/components/ember-simple-auth/simple-auth-testing.js +137 -0
  240. data/vendor/assets/components/ember-simple-auth/simple-auth-torii.amd.js +142 -0
  241. data/vendor/assets/components/ember-simple-auth/simple-auth-torii.js +199 -0
  242. data/vendor/assets/components/ember-simple-auth/simple-auth.amd.js +1450 -0
  243. data/vendor/assets/components/ember-simple-auth/simple-auth.js +1548 -0
  244. data/vendor/assets/components/ember/.bower.json +21 -0
  245. data/vendor/assets/components/ember/.gitignore +5 -0
  246. data/vendor/assets/components/ember/Makefile +9 -0
  247. data/vendor/assets/components/ember/README.md +12 -0
  248. data/vendor/assets/components/ember/bower.json +11 -0
  249. data/vendor/assets/components/ember/component.json +13 -0
  250. data/vendor/assets/components/ember/composer.json +27 -0
  251. data/vendor/assets/components/ember/ember-template-compiler.js +336 -0
  252. data/vendor/assets/components/ember/ember.js +46762 -0
  253. data/vendor/assets/components/ember/ember.min.js +20 -0
  254. data/vendor/assets/components/ember/ember.prod.js +46319 -0
  255. data/vendor/assets/components/ember/package.json +11 -0
  256. data/vendor/assets/components/handlebars/.bower.json +16 -0
  257. data/vendor/assets/components/handlebars/.gitignore +2 -0
  258. data/vendor/assets/components/handlebars/README.md +11 -0
  259. data/vendor/assets/components/handlebars/bower.json +6 -0
  260. data/vendor/assets/components/handlebars/component.json +9 -0
  261. data/vendor/assets/components/handlebars/composer.json +35 -0
  262. data/vendor/assets/components/handlebars/handlebars-source.gemspec +21 -0
  263. data/vendor/assets/components/handlebars/handlebars.amd.js +2719 -0
  264. data/vendor/assets/components/handlebars/handlebars.amd.min.js +28 -0
  265. data/vendor/assets/components/handlebars/handlebars.js +2746 -0
  266. data/vendor/assets/components/handlebars/handlebars.js.nuspec +17 -0
  267. data/vendor/assets/components/handlebars/handlebars.min.js +28 -0
  268. data/vendor/assets/components/handlebars/handlebars.runtime.amd.js +515 -0
  269. data/vendor/assets/components/handlebars/handlebars.runtime.amd.min.js +27 -0
  270. data/vendor/assets/components/handlebars/handlebars.runtime.js +530 -0
  271. data/vendor/assets/components/handlebars/handlebars.runtime.min.js +27 -0
  272. data/vendor/assets/components/handlebars/lib/handlebars/source.rb +11 -0
  273. data/vendor/assets/components/jquery/.bower.json +37 -0
  274. data/vendor/assets/components/jquery/MIT-LICENSE.txt +21 -0
  275. data/vendor/assets/components/jquery/bower.json +27 -0
  276. data/vendor/assets/components/jquery/dist/jquery.js +9111 -0
  277. data/vendor/assets/components/jquery/dist/jquery.min.js +5 -0
  278. data/vendor/assets/components/jquery/dist/jquery.min.map +1 -0
  279. data/vendor/assets/components/jquery/src/ajax.js +806 -0
  280. data/vendor/assets/components/jquery/src/ajax/jsonp.js +89 -0
  281. data/vendor/assets/components/jquery/src/ajax/load.js +75 -0
  282. data/vendor/assets/components/jquery/src/ajax/parseJSON.js +13 -0
  283. data/vendor/assets/components/jquery/src/ajax/parseXML.js +28 -0
  284. data/vendor/assets/components/jquery/src/ajax/script.js +64 -0
  285. data/vendor/assets/components/jquery/src/ajax/var/nonce.js +5 -0
  286. data/vendor/assets/components/jquery/src/ajax/var/rquery.js +3 -0
  287. data/vendor/assets/components/jquery/src/ajax/xhr.js +130 -0
  288. data/vendor/assets/components/jquery/src/attributes.js +11 -0
  289. data/vendor/assets/components/jquery/src/attributes/attr.js +143 -0
  290. data/vendor/assets/components/jquery/src/attributes/classes.js +158 -0
  291. data/vendor/assets/components/jquery/src/attributes/prop.js +96 -0
  292. data/vendor/assets/components/jquery/src/attributes/support.js +35 -0
  293. data/vendor/assets/components/jquery/src/attributes/val.js +153 -0
  294. data/vendor/assets/components/jquery/src/callbacks.js +205 -0
  295. data/vendor/assets/components/jquery/src/core.js +500 -0
  296. data/vendor/assets/components/jquery/src/core/access.js +60 -0
  297. data/vendor/assets/components/jquery/src/core/init.js +123 -0
  298. data/vendor/assets/components/jquery/src/core/parseHTML.js +39 -0
  299. data/vendor/assets/components/jquery/src/core/ready.js +96 -0
  300. data/vendor/assets/components/jquery/src/core/var/rsingleTag.js +4 -0
  301. data/vendor/assets/components/jquery/src/css.js +455 -0
  302. data/vendor/assets/components/jquery/src/css/addGetHookIf.js +24 -0
  303. data/vendor/assets/components/jquery/src/css/curCSS.js +57 -0
  304. data/vendor/assets/components/jquery/src/css/defaultDisplay.js +69 -0
  305. data/vendor/assets/components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  306. data/vendor/assets/components/jquery/src/css/support.js +83 -0
  307. data/vendor/assets/components/jquery/src/css/swap.js +28 -0
  308. data/vendor/assets/components/jquery/src/css/var/cssExpand.js +3 -0
  309. data/vendor/assets/components/jquery/src/css/var/getStyles.js +5 -0
  310. data/vendor/assets/components/jquery/src/css/var/isHidden.js +13 -0
  311. data/vendor/assets/components/jquery/src/css/var/rmargin.js +3 -0
  312. data/vendor/assets/components/jquery/src/css/var/rnumnonpx.js +5 -0
  313. data/vendor/assets/components/jquery/src/data.js +175 -0
  314. data/vendor/assets/components/jquery/src/data/Data.js +181 -0
  315. data/vendor/assets/components/jquery/src/data/accepts.js +20 -0
  316. data/vendor/assets/components/jquery/src/data/var/data_priv.js +5 -0
  317. data/vendor/assets/components/jquery/src/data/var/data_user.js +5 -0
  318. data/vendor/assets/components/jquery/src/deferred.js +149 -0
  319. data/vendor/assets/components/jquery/src/deprecated.js +13 -0
  320. data/vendor/assets/components/jquery/src/dimensions.js +50 -0
  321. data/vendor/assets/components/jquery/src/effects.js +642 -0
  322. data/vendor/assets/components/jquery/src/effects/Tween.js +114 -0
  323. data/vendor/assets/components/jquery/src/effects/animatedSelector.js +13 -0
  324. data/vendor/assets/components/jquery/src/event.js +859 -0
  325. data/vendor/assets/components/jquery/src/event/alias.js +39 -0
  326. data/vendor/assets/components/jquery/src/event/support.js +9 -0
  327. data/vendor/assets/components/jquery/src/exports/amd.js +18 -0
  328. data/vendor/assets/components/jquery/src/exports/global.js +32 -0
  329. data/vendor/assets/components/jquery/src/intro.js +44 -0
  330. data/vendor/assets/components/jquery/src/jquery.js +36 -0
  331. data/vendor/assets/components/jquery/src/manipulation.js +583 -0
  332. data/vendor/assets/components/jquery/src/manipulation/_evalUrl.js +18 -0
  333. data/vendor/assets/components/jquery/src/manipulation/support.js +24 -0
  334. data/vendor/assets/components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  335. data/vendor/assets/components/jquery/src/offset.js +204 -0
  336. data/vendor/assets/components/jquery/src/outro.js +1 -0
  337. data/vendor/assets/components/jquery/src/queue.js +142 -0
  338. data/vendor/assets/components/jquery/src/queue/delay.js +22 -0
  339. data/vendor/assets/components/jquery/src/selector-native.js +171 -0
  340. data/vendor/assets/components/jquery/src/selector-sizzle.js +14 -0
  341. data/vendor/assets/components/jquery/src/selector.js +1 -0
  342. data/vendor/assets/components/jquery/src/serialize.js +111 -0
  343. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.js +2015 -0
  344. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  345. data/vendor/assets/components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  346. data/vendor/assets/components/jquery/src/traversing.js +200 -0
  347. data/vendor/assets/components/jquery/src/traversing/findFilter.js +100 -0
  348. data/vendor/assets/components/jquery/src/traversing/var/rneedsContext.js +6 -0
  349. data/vendor/assets/components/jquery/src/var/arr.js +3 -0
  350. data/vendor/assets/components/jquery/src/var/class2type.js +4 -0
  351. data/vendor/assets/components/jquery/src/var/concat.js +5 -0
  352. data/vendor/assets/components/jquery/src/var/hasOwn.js +5 -0
  353. data/vendor/assets/components/jquery/src/var/indexOf.js +5 -0
  354. data/vendor/assets/components/jquery/src/var/pnum.js +3 -0
  355. data/vendor/assets/components/jquery/src/var/push.js +5 -0
  356. data/vendor/assets/components/jquery/src/var/rnotwhite.js +3 -0
  357. data/vendor/assets/components/jquery/src/var/slice.js +5 -0
  358. data/vendor/assets/components/jquery/src/var/strundefined.js +3 -0
  359. data/vendor/assets/components/jquery/src/var/support.js +4 -0
  360. data/vendor/assets/components/jquery/src/var/toString.js +5 -0
  361. data/vendor/assets/components/jquery/src/var/trim.js +3 -0
  362. data/vendor/assets/components/jquery/src/wrap.js +78 -0
  363. data/vendor/assets/components/moment/.bower.json +30 -0
  364. data/vendor/assets/components/moment/LICENSE +22 -0
  365. data/vendor/assets/components/moment/bower.json +20 -0
  366. data/vendor/assets/components/moment/lang/ar-ma.js +56 -0
  367. data/vendor/assets/components/moment/lang/ar-sa.js +96 -0
  368. data/vendor/assets/components/moment/lang/ar.js +97 -0
  369. data/vendor/assets/components/moment/lang/az.js +102 -0
  370. data/vendor/assets/components/moment/lang/bg.js +86 -0
  371. data/vendor/assets/components/moment/lang/bn.js +106 -0
  372. data/vendor/assets/components/moment/lang/br.js +107 -0
  373. data/vendor/assets/components/moment/lang/bs.js +139 -0
  374. data/vendor/assets/components/moment/lang/ca.js +66 -0
  375. data/vendor/assets/components/moment/lang/cs.js +155 -0
  376. data/vendor/assets/components/moment/lang/cv.js +59 -0
  377. data/vendor/assets/components/moment/lang/cy.js +77 -0
  378. data/vendor/assets/components/moment/lang/da.js +56 -0
  379. data/vendor/assets/components/moment/lang/de-at.js +72 -0
  380. data/vendor/assets/components/moment/lang/de.js +71 -0
  381. data/vendor/assets/components/moment/lang/el.js +90 -0
  382. data/vendor/assets/components/moment/lang/en-au.js +62 -0
  383. data/vendor/assets/components/moment/lang/en-ca.js +59 -0
  384. data/vendor/assets/components/moment/lang/en-gb.js +63 -0
  385. data/vendor/assets/components/moment/lang/eo.js +65 -0
  386. data/vendor/assets/components/moment/lang/es.js +75 -0
  387. data/vendor/assets/components/moment/lang/et.js +76 -0
  388. data/vendor/assets/components/moment/lang/eu.js +60 -0
  389. data/vendor/assets/components/moment/lang/fa.js +97 -0
  390. data/vendor/assets/components/moment/lang/fi.js +103 -0
  391. data/vendor/assets/components/moment/lang/fo.js +56 -0
  392. data/vendor/assets/components/moment/lang/fr-ca.js +54 -0
  393. data/vendor/assets/components/moment/lang/fr.js +58 -0
  394. data/vendor/assets/components/moment/lang/gl.js +71 -0
  395. data/vendor/assets/components/moment/lang/he.js +77 -0
  396. data/vendor/assets/components/moment/lang/hi.js +105 -0
  397. data/vendor/assets/components/moment/lang/hr.js +140 -0
  398. data/vendor/assets/components/moment/lang/hu.js +105 -0
  399. data/vendor/assets/components/moment/lang/hy-am.js +113 -0
  400. data/vendor/assets/components/moment/lang/id.js +67 -0
  401. data/vendor/assets/components/moment/lang/is.js +124 -0
  402. data/vendor/assets/components/moment/lang/it.js +59 -0
  403. data/vendor/assets/components/moment/lang/ja.js +58 -0
  404. data/vendor/assets/components/moment/lang/ka.js +108 -0
  405. data/vendor/assets/components/moment/lang/km.js +55 -0
  406. data/vendor/assets/components/moment/lang/ko.js +63 -0
  407. data/vendor/assets/components/moment/lang/lb.js +160 -0
  408. data/vendor/assets/components/moment/lang/lt.js +118 -0
  409. data/vendor/assets/components/moment/lang/lv.js +77 -0
  410. data/vendor/assets/components/moment/lang/mk.js +86 -0
  411. data/vendor/assets/components/moment/lang/ml.js +64 -0
  412. data/vendor/assets/components/moment/lang/mr.js +104 -0
  413. data/vendor/assets/components/moment/lang/ms-my.js +66 -0
  414. data/vendor/assets/components/moment/lang/nb.js +57 -0
  415. data/vendor/assets/components/moment/lang/ne.js +105 -0
  416. data/vendor/assets/components/moment/lang/nl.js +67 -0
  417. data/vendor/assets/components/moment/lang/nn.js +56 -0
  418. data/vendor/assets/components/moment/lang/pl.js +98 -0
  419. data/vendor/assets/components/moment/lang/pt-br.js +56 -0
  420. data/vendor/assets/components/moment/lang/pt.js +60 -0
  421. data/vendor/assets/components/moment/lang/ro.js +72 -0
  422. data/vendor/assets/components/moment/lang/ru.js +166 -0
  423. data/vendor/assets/components/moment/lang/sk.js +156 -0
  424. data/vendor/assets/components/moment/lang/sl.js +144 -0
  425. data/vendor/assets/components/moment/lang/sq.js +61 -0
  426. data/vendor/assets/components/moment/lang/sr-cyrl.js +106 -0
  427. data/vendor/assets/components/moment/lang/sr.js +106 -0
  428. data/vendor/assets/components/moment/lang/sv.js +63 -0
  429. data/vendor/assets/components/moment/lang/ta.js +112 -0
  430. data/vendor/assets/components/moment/lang/th.js +58 -0
  431. data/vendor/assets/components/moment/lang/tl-ph.js +58 -0
  432. data/vendor/assets/components/moment/lang/tr.js +93 -0
  433. data/vendor/assets/components/moment/lang/tzm-latn.js +55 -0
  434. data/vendor/assets/components/moment/lang/tzm.js +55 -0
  435. data/vendor/assets/components/moment/lang/uk.js +157 -0
  436. data/vendor/assets/components/moment/lang/uz.js +55 -0
  437. data/vendor/assets/components/moment/lang/vi.js +62 -0
  438. data/vendor/assets/components/moment/lang/zh-cn.js +108 -0
  439. data/vendor/assets/components/moment/lang/zh-tw.js +84 -0
  440. data/vendor/assets/components/moment/min/langs.js +6426 -0
  441. data/vendor/assets/components/moment/min/langs.min.js +4 -0
  442. data/vendor/assets/components/moment/min/moment-with-langs.js +8521 -0
  443. data/vendor/assets/components/moment/min/moment-with-langs.min.js +9 -0
  444. data/vendor/assets/components/moment/min/moment.min.js +6 -0
  445. data/vendor/assets/components/moment/moment.js +2610 -0
  446. data/vendor/assets/components/moment/readme.md +388 -0
  447. data/vendor/assets/components/numeral/.bower.json +28 -0
  448. data/vendor/assets/components/numeral/.gitignore +29 -0
  449. data/vendor/assets/components/numeral/.travis.yml +7 -0
  450. data/vendor/assets/components/numeral/Gruntfile.js +91 -0
  451. data/vendor/assets/components/numeral/LICENSE +22 -0
  452. data/vendor/assets/components/numeral/README.md +213 -0
  453. data/vendor/assets/components/numeral/bower.json +16 -0
  454. data/vendor/assets/components/numeral/component.json +16 -0
  455. data/vendor/assets/components/numeral/languages.js +989 -0
  456. data/vendor/assets/components/numeral/languages/be-nl.js +35 -0
  457. data/vendor/assets/components/numeral/languages/chs.js +34 -0
  458. data/vendor/assets/components/numeral/languages/cs.js +34 -0
  459. data/vendor/assets/components/numeral/languages/da-dk.js +34 -0
  460. data/vendor/assets/components/numeral/languages/de-ch.js +34 -0
  461. data/vendor/assets/components/numeral/languages/de.js +34 -0
  462. data/vendor/assets/components/numeral/languages/en-gb.js +38 -0
  463. data/vendor/assets/components/numeral/languages/es-ES.js +39 -0
  464. data/vendor/assets/components/numeral/languages/es.js +39 -0
  465. data/vendor/assets/components/numeral/languages/et.js +37 -0
  466. data/vendor/assets/components/numeral/languages/fi.js +34 -0
  467. data/vendor/assets/components/numeral/languages/fr-CA.js +34 -0
  468. data/vendor/assets/components/numeral/languages/fr-ch.js +34 -0
  469. data/vendor/assets/components/numeral/languages/fr.js +34 -0
  470. data/vendor/assets/components/numeral/languages/hu.js +34 -0
  471. data/vendor/assets/components/numeral/languages/it.js +34 -0
  472. data/vendor/assets/components/numeral/languages/ja.js +34 -0
  473. data/vendor/assets/components/numeral/languages/nl-nl.js +35 -0
  474. data/vendor/assets/components/numeral/languages/pl.js +34 -0
  475. data/vendor/assets/components/numeral/languages/pt-br.js +34 -0
  476. data/vendor/assets/components/numeral/languages/pt-pt.js +34 -0
  477. data/vendor/assets/components/numeral/languages/ru-UA.js +35 -0
  478. data/vendor/assets/components/numeral/languages/ru.js +37 -0
  479. data/vendor/assets/components/numeral/languages/sk.js +34 -0
  480. data/vendor/assets/components/numeral/languages/th.js +34 -0
  481. data/vendor/assets/components/numeral/languages/tr.js +67 -0
  482. data/vendor/assets/components/numeral/languages/uk-UA.js +35 -0
  483. data/vendor/assets/components/numeral/min/languages.min.js +129 -0
  484. data/vendor/assets/components/numeral/min/languages/be-nl.min.js +6 -0
  485. data/vendor/assets/components/numeral/min/languages/chs.min.js +6 -0
  486. data/vendor/assets/components/numeral/min/languages/cs.min.js +6 -0
  487. data/vendor/assets/components/numeral/min/languages/da-dk.min.js +6 -0
  488. data/vendor/assets/components/numeral/min/languages/de-ch.min.js +6 -0
  489. data/vendor/assets/components/numeral/min/languages/de.min.js +6 -0
  490. data/vendor/assets/components/numeral/min/languages/en-gb.min.js +6 -0
  491. data/vendor/assets/components/numeral/min/languages/es-ES.min.js +6 -0
  492. data/vendor/assets/components/numeral/min/languages/es.min.js +6 -0
  493. data/vendor/assets/components/numeral/min/languages/et.min.js +9 -0
  494. data/vendor/assets/components/numeral/min/languages/fi.min.js +6 -0
  495. data/vendor/assets/components/numeral/min/languages/fr-CA.min.js +6 -0
  496. data/vendor/assets/components/numeral/min/languages/fr-ch.min.js +6 -0
  497. data/vendor/assets/components/numeral/min/languages/fr.min.js +6 -0
  498. data/vendor/assets/components/numeral/min/languages/hu.min.js +6 -0
  499. data/vendor/assets/components/numeral/min/languages/it.min.js +6 -0
  500. data/vendor/assets/components/numeral/min/languages/ja.min.js +6 -0
  501. data/vendor/assets/components/numeral/min/languages/nl-nl.min.js +6 -0
  502. data/vendor/assets/components/numeral/min/languages/pl.min.js +6 -0
  503. data/vendor/assets/components/numeral/min/languages/pt-br.min.js +6 -0
  504. data/vendor/assets/components/numeral/min/languages/pt-pt.min.js +6 -0
  505. data/vendor/assets/components/numeral/min/languages/ru-UA.min.js +1 -0
  506. data/vendor/assets/components/numeral/min/languages/ru.min.js +6 -0
  507. data/vendor/assets/components/numeral/min/languages/sk.min.js +6 -0
  508. data/vendor/assets/components/numeral/min/languages/th.min.js +6 -0
  509. data/vendor/assets/components/numeral/min/languages/tr.min.js +6 -0
  510. data/vendor/assets/components/numeral/min/languages/uk-UA.min.js +1 -0
  511. data/vendor/assets/components/numeral/min/numeral.min.js +8 -0
  512. data/vendor/assets/components/numeral/numeral.js +679 -0
  513. data/vendor/assets/components/numeral/package.json +50 -0
  514. data/vendor/assets/components/numeral/tests/languages/be-nl.js +107 -0
  515. data/vendor/assets/components/numeral/tests/languages/chs.js +101 -0
  516. data/vendor/assets/components/numeral/tests/languages/cs.js +102 -0
  517. data/vendor/assets/components/numeral/tests/languages/da-dk.js +101 -0
  518. data/vendor/assets/components/numeral/tests/languages/de-ch.js +101 -0
  519. data/vendor/assets/components/numeral/tests/languages/de.js +101 -0
  520. data/vendor/assets/components/numeral/tests/languages/en-gb.js +101 -0
  521. data/vendor/assets/components/numeral/tests/languages/en.js +98 -0
  522. data/vendor/assets/components/numeral/tests/languages/es-ES.js +101 -0
  523. data/vendor/assets/components/numeral/tests/languages/es.js +101 -0
  524. data/vendor/assets/components/numeral/tests/languages/et.js +101 -0
  525. data/vendor/assets/components/numeral/tests/languages/fi.js +101 -0
  526. data/vendor/assets/components/numeral/tests/languages/fr-CA.js +101 -0
  527. data/vendor/assets/components/numeral/tests/languages/fr-ch.js +101 -0
  528. data/vendor/assets/components/numeral/tests/languages/fr.js +101 -0
  529. data/vendor/assets/components/numeral/tests/languages/hu.js +101 -0
  530. data/vendor/assets/components/numeral/tests/languages/it.js +101 -0
  531. data/vendor/assets/components/numeral/tests/languages/ja.js +101 -0
  532. data/vendor/assets/components/numeral/tests/languages/nl-nl.js +109 -0
  533. data/vendor/assets/components/numeral/tests/languages/pl.js +102 -0
  534. data/vendor/assets/components/numeral/tests/languages/pt-br.js +101 -0
  535. data/vendor/assets/components/numeral/tests/languages/pt-pt.js +101 -0
  536. data/vendor/assets/components/numeral/tests/languages/ru-UA.js +102 -0
  537. data/vendor/assets/components/numeral/tests/languages/ru.js +102 -0
  538. data/vendor/assets/components/numeral/tests/languages/sk.js +101 -0
  539. data/vendor/assets/components/numeral/tests/languages/th.js +101 -0
  540. data/vendor/assets/components/numeral/tests/languages/tr.js +101 -0
  541. data/vendor/assets/components/numeral/tests/languages/uk-UA.js +102 -0
  542. data/vendor/assets/components/numeral/tests/numeral/format.js +204 -0
  543. data/vendor/assets/components/numeral/tests/numeral/manipulate.js +104 -0
  544. data/vendor/assets/components/numeral/tests/numeral/misc.js +123 -0
  545. data/vendor/assets/components/numeral/tests/numeral/unformat.js +96 -0
  546. data/vendor/assets/components/qunit-bdd/.bower.json +31 -0
  547. data/vendor/assets/components/qunit-bdd/LICENSE +13 -0
  548. data/vendor/assets/components/qunit-bdd/README.md +282 -0
  549. data/vendor/assets/components/qunit-bdd/bower.json +22 -0
  550. data/vendor/assets/components/qunit-bdd/karma.conf.js +70 -0
  551. data/vendor/assets/components/qunit-bdd/lib/qunit-bdd.js +755 -0
  552. data/vendor/assets/components/qunit-bdd/package.json +33 -0
  553. data/vendor/assets/javascripts/bs-breadcrumbs.js +85 -0
  554. data/vendor/assets/javascripts/bs-core.js +476 -0
  555. data/vendor/assets/javascripts/bs-notifications.js +111 -0
  556. data/vendor/assets/javascripts/daterangepicker.js +1030 -0
  557. data/vendor/assets/javascripts/fix_bind_phantomjs.js +37 -0
  558. data/vendor/assets/javascripts/jquery-deparam.js +97 -0
  559. data/vendor/assets/javascripts/sidebar-tree.js +68 -0
  560. data/vendor/assets/stylesheets/daterangepicker.css +271 -0
  561. metadata +766 -0
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "ember-i18n",
3
+ "version": "2.0.0",
4
+ "description": "I18n support for Ember.js",
5
+ "main": [
6
+ "lib/i18n.js"
7
+ ],
8
+ "dependencies": {
9
+ "cldr": "^1.0",
10
+ "jquery": ">=1.7 <3",
11
+ "handlebars": "^1.0",
12
+ "ember": "^1.0"
13
+ },
14
+ "scripts": {
15
+ "test": "rake"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git://github.com/jamesarosen/ember-i18n.git"
20
+ },
21
+ "keywords": [
22
+ "ember",
23
+ "emberjs",
24
+ "i18n",
25
+ "internationalization"
26
+ ],
27
+ "author": "James A. Rosen",
28
+ "license": "APLv2",
29
+ "ignore": [
30
+ "**/.*",
31
+ "node_modules",
32
+ "spec",
33
+ "vendor",
34
+ "Makefile"
35
+ ],
36
+ "homepage": "https://github.com/jamesarosen/ember-i18n",
37
+ "_release": "2.0.0",
38
+ "_resolution": {
39
+ "type": "version",
40
+ "tag": "v2.0.0",
41
+ "commit": "529d4223bf36d7c7b5ca5055f32e0f9d44382423"
42
+ },
43
+ "_source": "git://github.com/jamesarosen/ember-i18n.git",
44
+ "_target": "~2.0.0",
45
+ "_originalSource": "ember-i18n"
46
+ }
@@ -0,0 +1,13 @@
1
+ ## Running the tests
2
+
3
+ You'll need [npm](https://npmjs.org) and `make`.
4
+
5
+ ```bash
6
+ make test
7
+ ```
8
+
9
+ ## Commit-Bit Policy
10
+
11
+ If a commit of yours lands in the `master` branch, you've earned committer
12
+ rights. If you would like to be added to the contributors list, please say
13
+ so in your pull request or email me.
@@ -0,0 +1,82 @@
1
+ ## 2.0.0 2014-05-28
2
+
3
+ * Drop support for Ember 0.x.
4
+
5
+ ## v1.6.4 2014-05-27
6
+
7
+ * Use `Ember.Handlebars`, not `Handlebars` for helper management
8
+ * The default `compileTemplate` throws an `Ember.Error` if the full
9
+ `Ember.Handlebars` is not available
10
+ * Check `view.$()` instead of `view.state` as Ember is deprecating the
11
+ latter in favor in favor of `view._state`, but doesn't consider either
12
+ to be part of the public API.
13
+ * Convert `Em` to `Ember` for consistency
14
+
15
+ ## v1.6.3 2014-02-19
16
+
17
+ * relax CLDR and Handlebars dependencies via the `^` operator
18
+
19
+ ## v1.6.2 2014-02-19
20
+
21
+ * relax Ember dependency to ">0.9.7 <2"
22
+
23
+ ## v1.6.1 2014-02-09
24
+
25
+ * relax jQuery dependency to ">=1.7 <3"
26
+
27
+ ## v1.6.0 2014-02-06
28
+
29
+ * Add `Ember.I18n.on`
30
+ * Emit `missing` events when translation missin
31
+ * Add `{{ta}}` helper as shorthand for `{{translateAttr}}`
32
+ * `TranslateableProperties` observes when the translation key changes
33
+ * Use the `afterRender` queue if available (Ember 1+)
34
+ * Expose `Ember.I18n.eachTranslatedAttribute`
35
+
36
+ ## v1.5.0 2013-07-30
37
+
38
+ * Add Ember warning if missing translation
39
+ * Add `I18n.exists(key)`
40
+ * Avoid calling `compile` for missing translations
41
+
42
+ ## v1.4.1 2013-06-25
43
+
44
+ * Don't rely on `Ember.uuid`, but use it if Ember defines it
45
+
46
+ ## v1.4.0 2013-06-04
47
+
48
+ * No more CoffeeScript
49
+ * Use `Ember.uuid` instead of `jQuery.uuid`
50
+ * Change license to APLv2
51
+ * Dotted-style keys win over nested-style keys
52
+ * Add `TranslateableProperties` mixin
53
+
54
+ ## v1.3.2 2013-01-09
55
+
56
+ * Support use with `jQuery.noconflict`
57
+
58
+ ## v1.3.1 2013-01-03
59
+
60
+ * Support defining translations in nested objects
61
+ * Prefer `Ember.assert` to `ember_assert`
62
+ * Add Bower support
63
+ * Use `Ember.Handlebars.get` instead of `getPath` if on Ember 1
64
+
65
+ ## v1.3.0 2012-04-20
66
+
67
+ * Remove all references to `Sproutcore` and `SC`
68
+ * Use correct context for `getPath` when getting the value of a bound attribute
69
+
70
+ ## v1.2.0 2012-02-14
71
+
72
+ * Add inflection support via CLDR.js
73
+
74
+ ## v1.1.0 2012-01-24
75
+
76
+ * Use MIT license
77
+ * Make `I18n` available in the `Ember` namespace
78
+ * Use `Ember`, not `Sproutcore`
79
+
80
+ ## v1.0.0 2011-09-29
81
+
82
+ Initial version
@@ -0,0 +1,10 @@
1
+ ## Copyright and license
2
+
3
+ Copyright 2011 James A. Rosen
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
@@ -0,0 +1,148 @@
1
+ ## Ember.I18n
2
+
3
+ Internationalization for Ember
4
+
5
+ ### Requirements
6
+
7
+ Set `Ember.I18n.translations` to an object containing your translation
8
+ information. If the values of `Ember.I18n.translations` are `Function`s,
9
+ they will be used as-is; if they are `String`s, they will first be
10
+ compiled via `Ember.I18n.compile`, which defaults to using
11
+ `Handlebars.compile`. (That means that if you haven't precompiled your
12
+ translations, you'll need to include the full Handlebars, not just
13
+ `handlebars-runtime.js` in your application.)
14
+
15
+ If you want to support inflection based on `count`, you will
16
+ also need to include the
17
+ [CLDR.js pluralization library](https://github.com/jamesarosen/CLDR.js)
18
+ and set `CLDR.defaultLanguage` to the current locale code (e.g. "de").
19
+
20
+ ### Examples
21
+
22
+ Given
23
+ ```javascript
24
+ Em.I18n.translations = {
25
+ 'user.edit.title': 'Edit User',
26
+ 'user.followers.title.one': 'One Follower',
27
+ 'user.followers.title.other': 'All {{count}} Followers',
28
+ 'button.add_user.title': 'Add a user',
29
+ 'button.add_user.text': 'Add',
30
+ 'button.add_user.disabled': 'Saving...'
31
+ };
32
+ ```
33
+ #### A simple translation:
34
+ ```html
35
+ <h2>{{t "user.edit.title"}}</h2>
36
+ ```
37
+ yields
38
+ ```html
39
+ <h2><span id="i18n-123">Edit User</span></h2>
40
+ ```
41
+ #### Remove the `span` by specifying a `tagName`:
42
+ ```html
43
+ {{t "user.edit.title" tagName="h2"}}
44
+ ```
45
+ yields
46
+ ```html
47
+ <h2 id="i18n-123">Edit User</h2>
48
+ ```
49
+ #### Set interpolated values directly:
50
+ ```html
51
+ <h2>{{t "user.followers.title" count="2"}}</h2>
52
+ ```
53
+ yields
54
+ ```html
55
+ <h2><span id="i18n-123">All 2 Followers</span></h2>
56
+ ```
57
+ #### Bind interpolated values:
58
+ ```html
59
+ <h2>{{t "user.followers.title" countBinding="user.followers.count"}}</h2>
60
+ ```
61
+ yields
62
+ ```html
63
+ <h2><span id="i18n-123">All 2 Followers</span></h2>
64
+ ```
65
+ if `user.getPath('followers.count')` returns `2`.
66
+
67
+ #### Translate properties on any object:
68
+
69
+ The `Em.I18n.TranslateableProperties` mixin automatically translates
70
+ any property ending in `"Translation"`:
71
+ ```javascript
72
+ userButton = Em.Object.extend(Em.I18n.TranslateableProperties, {
73
+ labelTranslation: 'button.add_user.title'
74
+ });
75
+
76
+ userButton.get('label');
77
+ ```
78
+ yields
79
+
80
+ "Add a user"
81
+
82
+ #### Translate attributes in a view:
83
+
84
+ Add the mixin `Em.Button.reopen(Em.I18n.TranslateableAttributes)` and use like this:
85
+
86
+ ```html
87
+ {{#view Em.Button titleTranslation="button.add_user.title">
88
+ {{t "button.add_user.text"}}
89
+ {{/view}}
90
+ ```
91
+ yields
92
+ ```html
93
+ <button title="Add a user">
94
+ Add
95
+ </button>
96
+ ```
97
+
98
+ #### Translate attributes on a plain tag:
99
+ ```html
100
+ <a {{translateAttr title="button.add_user.title" data-disable-with="button.add_user.disabled"}}>
101
+ {{t "button.add_user.text"}}
102
+ </a>
103
+ ```
104
+ yields
105
+ ```html
106
+ <a title="Add a user" data-disable-with="Saving...">
107
+ Add
108
+ </a>
109
+ ```
110
+ #### Nested Translation Syntax:
111
+
112
+ The above translation data can also be expressed as nested JSON objects:
113
+ ```javascript
114
+ Em.I18n.translations = {
115
+ 'user': {
116
+ 'edit': {
117
+ 'title': 'Edit User'
118
+ },
119
+ 'followers': {
120
+ 'title': {
121
+ 'one': 'One Follower',
122
+ 'other': 'All {{count}} Followers'
123
+ }
124
+ }
125
+ },
126
+ 'button': {
127
+ 'add_user': {
128
+ 'title': 'Add a user',
129
+ 'text': 'Add',
130
+ 'disabled': 'Saving...'
131
+ }
132
+ }
133
+ };
134
+ ```
135
+ This format is often smaller and so makes downloading translation packs faster.
136
+
137
+ ### Limitations
138
+
139
+ * There is no way to pass interpolations to attribute translations. I can't
140
+ think of a syntax to support this. It *might* be possible to look up
141
+ interpolations from the current context.
142
+ * `Em.I18n.translations` **must** be fully populated before Ember
143
+ renders any views. There are no bindings on the translations themselves,
144
+ so Ember will not know to re-render views when translations change.
145
+
146
+ ### Building
147
+
148
+ For more detail on running tests and contributing, see [CONTRIBUTING.md](https://github.com/jamesarosen/ember-i18n/blob/master/CONTRIBUTING.md).
@@ -0,0 +1 @@
1
+ 2.0.0
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "ember-i18n",
3
+ "version": "2.0.0",
4
+ "description": "I18n support for Ember.js",
5
+ "main": [ "lib/i18n.js" ],
6
+ "dependencies": {
7
+ "cldr": "^1.0",
8
+ "jquery": ">=1.7 <3",
9
+ "handlebars": "^1.0",
10
+ "ember": "^1.0"
11
+ },
12
+ "scripts": {
13
+ "test": "rake"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git://github.com/jamesarosen/ember-i18n.git"
18
+ },
19
+ "keywords": [
20
+ "ember",
21
+ "emberjs",
22
+ "i18n",
23
+ "internationalization"
24
+ ],
25
+ "author": "James A. Rosen",
26
+ "license": "APLv2",
27
+ "ignore": [
28
+ "**/.*",
29
+ "node_modules",
30
+ "spec",
31
+ "vendor",
32
+ "Makefile"
33
+ ]
34
+ }
@@ -0,0 +1,215 @@
1
+ (function(window) {
2
+ var I18n, assert, findTemplate, get, set, isBinding, lookupKey, pluralForm,
3
+ PlainHandlebars, EmHandlebars, keyExists, compileTemplate;
4
+
5
+ PlainHandlebars = window.Handlebars;
6
+ EmHandlebars = Ember.Handlebars;
7
+ get = EmHandlebars.get;
8
+ set = Ember.set;
9
+ assert = Ember.assert;
10
+
11
+ function warn(msg) { Ember.Logger.warn(msg); }
12
+
13
+ if (typeof CLDR !== "undefined" && CLDR !== null) pluralForm = CLDR.pluralForm;
14
+
15
+ if (pluralForm == null) {
16
+ warn("CLDR.pluralForm not found. Ember.I18n will not support count-based inflection.");
17
+ }
18
+
19
+ lookupKey = function(key, hash) {
20
+ var firstKey, idx, remainingKeys;
21
+
22
+ if (hash[key] != null) { return hash[key]; }
23
+
24
+ if ((idx = key.indexOf('.')) !== -1) {
25
+ firstKey = key.substr(0, idx);
26
+ remainingKeys = key.substr(idx + 1);
27
+ hash = hash[firstKey];
28
+ if (hash) { return lookupKey(remainingKeys, hash); }
29
+ }
30
+ };
31
+
32
+ findTemplate = function(key, setOnMissing) {
33
+ assert("You must provide a translation key string, not %@".fmt(key), typeof key === 'string');
34
+ var result = lookupKey(key, I18n.translations);
35
+
36
+ if (setOnMissing) {
37
+ if (result == null) {
38
+ result = I18n.translations[key] = function() { return "Missing translation: " + key; };
39
+ result._isMissing = true;
40
+ warn("Missing translation: " + key);
41
+ I18n[(typeof I18n.trigger === 'function' ? 'trigger' : 'fire')]('missing', key); //Support 0.9 style .fire
42
+ }
43
+ }
44
+
45
+ if ((result != null) && !jQuery.isFunction(result)) {
46
+ result = I18n.translations[key] = I18n.compile(result);
47
+ }
48
+
49
+ return result;
50
+ };
51
+
52
+ keyExists = function(key) {
53
+ var translation = lookupKey(key, I18n.translations);
54
+ return translation != null && !translation._isMissing;
55
+ };
56
+
57
+ function eachTranslatedAttribute(object, fn) {
58
+ var isTranslatedAttribute = /(.+)Translation$/,
59
+ isTranslatedAttributeMatch;
60
+
61
+ for (var key in object) {
62
+ isTranslatedAttributeMatch = key.match(isTranslatedAttribute);
63
+ if (isTranslatedAttributeMatch) {
64
+ fn.call(object, isTranslatedAttributeMatch[1], I18n.t(object[key]));
65
+ }
66
+ }
67
+ }
68
+
69
+ compileTemplate = (function() {
70
+ if (typeof PlainHandlebars.compile === 'function') {
71
+ return function compileWithHandlebars(template) {
72
+ return PlainHandlebars.compile(template);
73
+ };
74
+ } else {
75
+ return function cannotCompileTemplate() {
76
+ throw new Ember.Error('The default Ember.I18n.compile function requires the full Handlebars. Either include the full Handlebars or override Ember.I18n.compile.');
77
+ };
78
+ }
79
+ }());
80
+
81
+ I18n = Ember.Evented.apply({
82
+ compile: compileTemplate,
83
+
84
+ translations: {},
85
+
86
+ // Ember.I18n.eachTranslatedAttribute(object, callback)
87
+ //
88
+ // Iterate over the keys in `object`; for each property that ends in "Translation",
89
+ // call `callback` with the property name (minus the "Translation" suffix) and the
90
+ // translation whose key is the property's value.
91
+ eachTranslatedAttribute: eachTranslatedAttribute,
92
+
93
+ template: function(key, count) {
94
+ var interpolatedKey, result, suffix;
95
+ if ((count != null) && (pluralForm != null)) {
96
+ suffix = pluralForm(count);
97
+ interpolatedKey = "%@.%@".fmt(key, suffix);
98
+ result = findTemplate(interpolatedKey, false);
99
+ }
100
+ return result != null ? result : result = findTemplate(key, true);
101
+ },
102
+
103
+ t: function(key, context) {
104
+ var template;
105
+ if (context == null) context = {};
106
+ template = I18n.template(key, context.count);
107
+ return template(context);
108
+ },
109
+
110
+ exists: keyExists,
111
+
112
+ TranslateableProperties: Ember.Mixin.create({
113
+ init: function() {
114
+ var result = this._super.apply(this, arguments);
115
+ eachTranslatedAttribute(this, function(attribute, translation) {
116
+ this.addObserver(attribute + 'Translation', this, function(){
117
+ set(this, attribute, I18n.t(this.get(attribute + 'Translation')));
118
+ });
119
+ set(this, attribute, translation);
120
+ });
121
+
122
+ return result;
123
+ }
124
+ }),
125
+
126
+ TranslateableAttributes: Ember.Mixin.create({
127
+ didInsertElement: function() {
128
+ var result = this._super.apply(this, arguments);
129
+ eachTranslatedAttribute(this, function(attribute, translation) {
130
+ this.$().attr(attribute, translation);
131
+ });
132
+ return result;
133
+ }
134
+ })
135
+ });
136
+
137
+ Ember.I18n = I18n;
138
+
139
+ isBinding = /(.+)Binding$/;
140
+
141
+ // CRUFT: in v2, which requires Ember 1.0+, Ember.uuid will always be
142
+ // available, so this function can be cleaned up.
143
+ var uniqueElementId = (function(){
144
+ var id = Ember.uuid || 0;
145
+ return function() {
146
+ var elementId = 'i18n-' + id++;
147
+ return elementId;
148
+ };
149
+ })();
150
+
151
+ EmHandlebars.registerHelper('t', function(key, options) {
152
+ var attrs, context, data, elementID, result, tagName, view;
153
+ context = this;
154
+ attrs = options.hash;
155
+ data = options.data;
156
+ view = data.view;
157
+ tagName = attrs.tagName || 'span';
158
+ delete attrs.tagName;
159
+ elementID = uniqueElementId();
160
+
161
+ Ember.keys(attrs).forEach(function(property) {
162
+ var bindPath, currentValue, invoker, isBindingMatch, normalized, normalizedPath, observer, propertyName, root, _ref;
163
+ isBindingMatch = property.match(isBinding);
164
+
165
+ if (isBindingMatch) {
166
+ propertyName = isBindingMatch[1];
167
+ bindPath = attrs[property];
168
+ currentValue = get(context, bindPath, options);
169
+ attrs[propertyName] = currentValue;
170
+ invoker = null;
171
+ normalized = EmHandlebars.normalizePath(context, bindPath, data);
172
+ _ref = [normalized.root, normalized.path], root = _ref[0], normalizedPath = _ref[1];
173
+
174
+ observer = function() {
175
+ var elem, newValue;
176
+ if (view.$() == null) {
177
+ Ember.removeObserver(root, normalizedPath, invoker);
178
+ return;
179
+ }
180
+ newValue = get(context, bindPath, options);
181
+ elem = view.$("#" + elementID);
182
+ attrs[propertyName] = newValue;
183
+ return elem.html(I18n.t(key, attrs));
184
+ };
185
+
186
+ invoker = function() {
187
+ Ember.run.scheduleOnce('afterRender', observer);
188
+ };
189
+
190
+ return Ember.addObserver(root, normalizedPath, invoker);
191
+ }
192
+ });
193
+
194
+ result = '<%@ id="%@">%@</%@>'.fmt(tagName, elementID, I18n.t(key, attrs), tagName);
195
+ return new EmHandlebars.SafeString(result);
196
+ });
197
+
198
+ var attrHelperFunction = function(options) {
199
+ var attrs, result;
200
+ attrs = options.hash;
201
+ result = [];
202
+
203
+ Ember.keys(attrs).forEach(function(property) {
204
+ var translatedValue;
205
+ translatedValue = I18n.t(attrs[property]);
206
+ return result.push('%@="%@"'.fmt(property, translatedValue));
207
+ });
208
+
209
+ return new EmHandlebars.SafeString(result.join(' '));
210
+ };
211
+
212
+ EmHandlebars.registerHelper('translateAttr', attrHelperFunction);
213
+ EmHandlebars.registerHelper('ta', attrHelperFunction);
214
+
215
+ }).call(undefined, this);