platform 3.1.1

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 (480) hide show
  1. data/.gitignore +21 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +14 -0
  4. data/Gemfile.lock +191 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.rdoc +5 -0
  7. data/Rakefile +37 -0
  8. data/app/assets/images/platform/.gitkeep +0 -0
  9. data/app/assets/images/platform/accept.png +0 -0
  10. data/app/assets/images/platform/action_tab_bkgd.gif +0 -0
  11. data/app/assets/images/platform/action_tab_white_bkgd.gif +0 -0
  12. data/app/assets/images/platform/add.png +0 -0
  13. data/app/assets/images/platform/apps/app_icon.gif +0 -0
  14. data/app/assets/images/platform/apps/app_logo.gif +0 -0
  15. data/app/assets/images/platform/arrow_down.gif +0 -0
  16. data/app/assets/images/platform/arrow_down.png +0 -0
  17. data/app/assets/images/platform/arrow_down_grey.png +0 -0
  18. data/app/assets/images/platform/arrow_right.gif +0 -0
  19. data/app/assets/images/platform/arrow_up.png +0 -0
  20. data/app/assets/images/platform/arrow_up_grey.png +0 -0
  21. data/app/assets/images/platform/bullet_go.png +0 -0
  22. data/app/assets/images/platform/buttons.png +0 -0
  23. data/app/assets/images/platform/cancel.png +0 -0
  24. data/app/assets/images/platform/clipboard_icon.gif +0 -0
  25. data/app/assets/images/platform/close.gif +0 -0
  26. data/app/assets/images/platform/cross.png +0 -0
  27. data/app/assets/images/platform/default_app_icon.gif +0 -0
  28. data/app/assets/images/platform/default_app_logo.gif +0 -0
  29. data/app/assets/images/platform/delete.png +0 -0
  30. data/app/assets/images/platform/disk.png +0 -0
  31. data/app/assets/images/platform/exclamation.png +0 -0
  32. data/app/assets/images/platform/eye.png +0 -0
  33. data/app/assets/images/platform/eye_not.png +0 -0
  34. data/app/assets/images/platform/field_sprite.gif +0 -0
  35. data/app/assets/images/platform/find.png +0 -0
  36. data/app/assets/images/platform/globe.gif +0 -0
  37. data/app/assets/images/platform/help.png +0 -0
  38. data/app/assets/images/platform/help/app_reg.png +0 -0
  39. data/app/assets/images/platform/help/app_reg_ext.png +0 -0
  40. data/app/assets/images/platform/help/app_reg_web.png +0 -0
  41. data/app/assets/images/platform/help/auth_desktop.png +0 -0
  42. data/app/assets/images/platform/help/auth_iframe.png +0 -0
  43. data/app/assets/images/platform/help/auth_iphone.png +0 -0
  44. data/app/assets/images/platform/help/auth_web.png +0 -0
  45. data/app/assets/images/platform/help/authorize.png +0 -0
  46. data/app/assets/images/platform/help/ext.png +0 -0
  47. data/app/assets/images/platform/help/login.png +0 -0
  48. data/app/assets/images/platform/help/login_desktop.png +0 -0
  49. data/app/assets/images/platform/help/login_iphone.png +0 -0
  50. data/app/assets/images/platform/help/login_web.png +0 -0
  51. data/app/assets/images/platform/help2.png +0 -0
  52. data/app/assets/images/platform/information.png +0 -0
  53. data/app/assets/images/platform/keyboard.png +0 -0
  54. data/app/assets/images/platform/language_selector_arrow.gif +0 -0
  55. data/app/assets/images/platform/left_quote.png +0 -0
  56. data/app/assets/images/platform/lightning.png +0 -0
  57. data/app/assets/images/platform/loading.gif +0 -0
  58. data/app/assets/images/platform/loading2.gif +0 -0
  59. data/app/assets/images/platform/loading3.gif +0 -0
  60. data/app/assets/images/platform/loading_animation.gif +0 -0
  61. data/app/assets/images/platform/loading_large.gif +0 -0
  62. data/app/assets/images/platform/lock.png +0 -0
  63. data/app/assets/images/platform/lock_add.png +0 -0
  64. data/app/assets/images/platform/lock_delete.png +0 -0
  65. data/app/assets/images/platform/lock_open.png +0 -0
  66. data/app/assets/images/platform/medals/bronze.png +0 -0
  67. data/app/assets/images/platform/medals/gold.png +0 -0
  68. data/app/assets/images/platform/medals/runner.png +0 -0
  69. data/app/assets/images/platform/medals/silver.png +0 -0
  70. data/app/assets/images/platform/minus_node.png +0 -0
  71. data/app/assets/images/platform/oauth/perm_tile.gif +0 -0
  72. data/app/assets/images/platform/oauth/right_grey.png +0 -0
  73. data/app/assets/images/platform/pencil.png +0 -0
  74. data/app/assets/images/platform/photo_silhouette.gif +0 -0
  75. data/app/assets/images/platform/pixel.gif +0 -0
  76. data/app/assets/images/platform/platform.png +0 -0
  77. data/app/assets/images/platform/platform2.png +0 -0
  78. data/app/assets/images/platform/platform3.png +0 -0
  79. data/app/assets/images/platform/platform4.png +0 -0
  80. data/app/assets/images/platform/platform5.png +0 -0
  81. data/app/assets/images/platform/plus.png +0 -0
  82. data/app/assets/images/platform/plus_node.png +0 -0
  83. data/app/assets/images/platform/random.png +0 -0
  84. data/app/assets/images/platform/random2.png +0 -0
  85. data/app/assets/images/platform/rating_star0.png +0 -0
  86. data/app/assets/images/platform/rating_star05.png +0 -0
  87. data/app/assets/images/platform/rating_star1.png +0 -0
  88. data/app/assets/images/platform/rating_stars.gif +0 -0
  89. data/app/assets/images/platform/rating_stars.psd +0 -0
  90. data/app/assets/images/platform/reply.png +0 -0
  91. data/app/assets/images/platform/right_quote.png +0 -0
  92. data/app/assets/images/platform/rotating_world.gif +0 -0
  93. data/app/assets/images/platform/script.png +0 -0
  94. data/app/assets/images/platform/script_edit.png +0 -0
  95. data/app/assets/images/platform/script_gear.png +0 -0
  96. data/app/assets/images/platform/site_sprite.gif +0 -0
  97. data/app/assets/images/platform/spinner.gif +0 -0
  98. data/app/assets/images/platform/star.png +0 -0
  99. data/app/assets/images/platform/table_edit.png +0 -0
  100. data/app/assets/images/platform/table_gear.png +0 -0
  101. data/app/assets/images/platform/table_multiple.png +0 -0
  102. data/app/assets/images/platform/thumb_down.png +0 -0
  103. data/app/assets/images/platform/thumb_up.png +0 -0
  104. data/app/assets/images/platform/top_left_stem.png +0 -0
  105. data/app/assets/images/platform/top_right_stem.png +0 -0
  106. data/app/assets/images/platform/translate_icn.gif +0 -0
  107. data/app/assets/images/platform/treeview/diffDoc.gif +0 -0
  108. data/app/assets/images/platform/treeview/diffFolder.gif +0 -0
  109. data/app/assets/images/platform/treeview/ftv2blank.gif +0 -0
  110. data/app/assets/images/platform/treeview/ftv2doc.gif +0 -0
  111. data/app/assets/images/platform/treeview/ftv2folderclosed.gif +0 -0
  112. data/app/assets/images/platform/treeview/ftv2folderopen.gif +0 -0
  113. data/app/assets/images/platform/treeview/ftv2lastnode.gif +0 -0
  114. data/app/assets/images/platform/treeview/ftv2link.gif +0 -0
  115. data/app/assets/images/platform/treeview/ftv2mlastnode.gif +0 -0
  116. data/app/assets/images/platform/treeview/ftv2mnode.gif +0 -0
  117. data/app/assets/images/platform/treeview/ftv2node.gif +0 -0
  118. data/app/assets/images/platform/treeview/ftv2plastnode.gif +0 -0
  119. data/app/assets/images/platform/treeview/ftv2pnode.gif +0 -0
  120. data/app/assets/images/platform/treeview/ftv2vertline.gif +0 -0
  121. data/app/assets/images/platform/wizard.png +0 -0
  122. data/app/assets/images/platform/world_link.png +0 -0
  123. data/app/assets/javascripts/platform/api_explorer.js +628 -0
  124. data/app/assets/javascripts/platform/application.js +9 -0
  125. data/app/assets/javascripts/platform/ftiens4.js +1197 -0
  126. data/app/assets/javascripts/platform/jsdk.js +539 -0
  127. data/app/assets/javascripts/platform/platform.js +447 -0
  128. data/app/assets/javascripts/platform/shortcut.js +223 -0
  129. data/app/assets/javascripts/platform/ua.js +147 -0
  130. data/app/assets/stylesheets/platform/api_explorer.css.scss +140 -0
  131. data/app/assets/stylesheets/platform/application.css.scss +6 -0
  132. data/app/assets/stylesheets/platform/components.css.scss +208 -0
  133. data/app/assets/stylesheets/platform/layout.css.scss +119 -0
  134. data/app/assets/stylesheets/platform/oauth.css +51 -0
  135. data/app/assets/stylesheets/platform/platform.css.scss +311 -0
  136. data/app/controllers/platform/admin/apps_controller.rb +99 -0
  137. data/app/controllers/platform/admin/base_controller.rb +60 -0
  138. data/app/controllers/platform/admin/categories_controller.rb +132 -0
  139. data/app/controllers/platform/admin/clientsdk_controller.rb +30 -0
  140. data/app/controllers/platform/admin/developers_controller.rb +30 -0
  141. data/app/controllers/platform/admin/exceptions_controller.rb +30 -0
  142. data/app/controllers/platform/admin/forum_controller.rb +34 -0
  143. data/app/controllers/platform/admin/metrics_controller.rb +42 -0
  144. data/app/controllers/platform/api/apps_controller.rb +40 -0
  145. data/app/controllers/platform/api/base_controller.rb +541 -0
  146. data/app/controllers/platform/apps_controller.rb +142 -0
  147. data/app/controllers/platform/base_controller.rb +127 -0
  148. data/app/controllers/platform/developer/api_explorer_controller.rb +56 -0
  149. data/app/controllers/platform/developer/apps_controller.rb +161 -0
  150. data/app/controllers/platform/developer/base_controller.rb +51 -0
  151. data/app/controllers/platform/developer/blog_controller.rb +29 -0
  152. data/app/controllers/platform/developer/dashboard_controller.rb +63 -0
  153. data/app/controllers/platform/developer/forum_controller.rb +85 -0
  154. data/app/controllers/platform/developer/help_controller.rb +113 -0
  155. data/app/controllers/platform/developer/info_controller.rb +41 -0
  156. data/app/controllers/platform/developer/registration_controller.rb +39 -0
  157. data/app/controllers/platform/developer/resources_controller.rb +30 -0
  158. data/app/controllers/platform/forum_controller.rb +74 -0
  159. data/app/controllers/platform/oauth_controller.rb +421 -0
  160. data/app/controllers/platform/ratings_controller.rb +61 -0
  161. data/app/helpers/platform/admin/categories_helper.rb +54 -0
  162. data/app/helpers/platform/apps_helper.rb +26 -0
  163. data/app/helpers/platform/developer/dashboard_helper.rb +42 -0
  164. data/app/helpers/platform/developer/help_helper.rb +45 -0
  165. data/app/helpers/platform_helper.rb +26 -0
  166. data/app/models/platform/application.rb +394 -0
  167. data/app/models/platform/application_category.rb +34 -0
  168. data/app/models/platform/application_developer.rb +30 -0
  169. data/app/models/platform/application_filter.rb +30 -0
  170. data/app/models/platform/application_log.rb +32 -0
  171. data/app/models/platform/application_log_filter.rb +34 -0
  172. data/app/models/platform/application_metric.rb +58 -0
  173. data/app/models/platform/application_metric_filter.rb +34 -0
  174. data/app/models/platform/application_permission.rb +30 -0
  175. data/app/models/platform/application_permission_filter.rb +30 -0
  176. data/app/models/platform/application_usage_metric.rb +58 -0
  177. data/app/models/platform/application_usage_metric_filter.rb +34 -0
  178. data/app/models/platform/application_user.rb +45 -0
  179. data/app/models/platform/application_user_filter.rb +34 -0
  180. data/app/models/platform/base_filter.rb +46 -0
  181. data/app/models/platform/category.rb +64 -0
  182. data/app/models/platform/daily_application_metric.rb +31 -0
  183. data/app/models/platform/developer.rb +45 -0
  184. data/app/models/platform/developer_filter.rb +26 -0
  185. data/app/models/platform/forum_message.rb +35 -0
  186. data/app/models/platform/forum_message_filter.rb +26 -0
  187. data/app/models/platform/forum_topic.rb +38 -0
  188. data/app/models/platform/forum_topic_filter.rb +26 -0
  189. data/app/models/platform/logged_exception.rb +290 -0
  190. data/app/models/platform/logged_exception_filter.rb +58 -0
  191. data/app/models/platform/media/image.rb +26 -0
  192. data/app/models/platform/media/media.rb +58 -0
  193. data/app/models/platform/monthly_application_metric.rb +31 -0
  194. data/app/models/platform/oauth/access_token.rb +57 -0
  195. data/app/models/platform/oauth/client_token.rb +38 -0
  196. data/app/models/platform/oauth/oauth_model_methods.rb +41 -0
  197. data/app/models/platform/oauth/oauth_token.rb +57 -0
  198. data/app/models/platform/oauth/oauth_token_filter.rb +34 -0
  199. data/app/models/platform/oauth/refresh_token.rb +47 -0
  200. data/app/models/platform/oauth/request_token.rb +50 -0
  201. data/app/models/platform/permission.rb +27 -0
  202. data/app/models/platform/rating.rb +43 -0
  203. data/app/models/platform/rating_filter.rb +30 -0
  204. data/app/models/platform/rollup_log.rb +27 -0
  205. data/app/models/platform/rollup_log_filter.rb +30 -0
  206. data/app/models/platform/total_application_metric.rb +40 -0
  207. data/app/models/platform/weekly_application_metric.rb +31 -0
  208. data/app/views/platform/admin/apps/_categories.html.erb +17 -0
  209. data/app/views/platform/admin/apps/_categories_scripts.html.erb +17 -0
  210. data/app/views/platform/admin/apps/_tabs.html.erb +25 -0
  211. data/app/views/platform/admin/apps/index.html.erb +32 -0
  212. data/app/views/platform/admin/apps/permissions.html.erb +7 -0
  213. data/app/views/platform/admin/apps/ratings.html.erb +7 -0
  214. data/app/views/platform/admin/apps/tokens.html.erb +18 -0
  215. data/app/views/platform/admin/apps/users.html.erb +7 -0
  216. data/app/views/platform/admin/apps/view.html.erb +170 -0
  217. data/app/views/platform/admin/categories/_tabs.html.erb +22 -0
  218. data/app/views/platform/admin/categories/category_assigner.html.erb +9 -0
  219. data/app/views/platform/admin/categories/category_assigner_tree.html.erb +81 -0
  220. data/app/views/platform/admin/categories/index.html.erb +106 -0
  221. data/app/views/platform/admin/categories/items.html.erb +153 -0
  222. data/app/views/platform/admin/categories/lb_update_application_category.html.erb +54 -0
  223. data/app/views/platform/admin/categories/lb_update_category.html.erb +64 -0
  224. data/app/views/platform/admin/categories/tree.html.erb +64 -0
  225. data/app/views/platform/admin/clientsdk/index.html.erb +89 -0
  226. data/app/views/platform/admin/common/_footer.html.erb +1 -0
  227. data/app/views/platform/admin/common/_header.html.erb +32 -0
  228. data/app/views/platform/admin/common/_lightbox_buttons.html.erb +5 -0
  229. data/app/views/platform/admin/common/_paginator.html.erb +20 -0
  230. data/app/views/platform/admin/developers/_tabs.html.erb +22 -0
  231. data/app/views/platform/admin/developers/index.html.erb +7 -0
  232. data/app/views/platform/admin/exceptions/_tabs.html.erb +22 -0
  233. data/app/views/platform/admin/exceptions/index.html.erb +7 -0
  234. data/app/views/platform/admin/forum/_tabs.html.erb +22 -0
  235. data/app/views/platform/admin/forum/index.html.erb +7 -0
  236. data/app/views/platform/admin/forum/messages.html.erb +7 -0
  237. data/app/views/platform/admin/metrics/_tabs.html.erb +25 -0
  238. data/app/views/platform/admin/metrics/application_log.html.erb +7 -0
  239. data/app/views/platform/admin/metrics/index.html.erb +9 -0
  240. data/app/views/platform/admin/metrics/rollup_log.html.erb +7 -0
  241. data/app/views/platform/admin/metrics/usage.html.erb +7 -0
  242. data/app/views/platform/apps/_actions_module.html.erb +3 -0
  243. data/app/views/platform/apps/_app_footer.html.erb +8 -0
  244. data/app/views/platform/apps/_app_header.html.erb +25 -0
  245. data/app/views/platform/apps/_apps_module.html.erb +42 -0
  246. data/app/views/platform/apps/_authorize_form.html.erb +11 -0
  247. data/app/views/platform/apps/_categories_module.html.erb +11 -0
  248. data/app/views/platform/apps/_featured_apps_module.html.erb +40 -0
  249. data/app/views/platform/apps/_left.html.erb +20 -0
  250. data/app/views/platform/apps/_monthly_users_module.html.erb +8 -0
  251. data/app/views/platform/apps/_paginator.html.erb +13 -0
  252. data/app/views/platform/apps/_rank_module.html.erb +18 -0
  253. data/app/views/platform/apps/_search_apps_module.html.erb +35 -0
  254. data/app/views/platform/apps/canvas_app.html.erb +15 -0
  255. data/app/views/platform/apps/index.html.erb +86 -0
  256. data/app/views/platform/apps/view.html.erb +71 -0
  257. data/app/views/platform/apps/xd.html.erb +11 -0
  258. data/app/views/platform/common/_footer.html.erb +1 -0
  259. data/app/views/platform/common/_header.html.erb +4 -0
  260. data/app/views/platform/common/_paginator.html.erb +32 -0
  261. data/app/views/platform/common/_scripts.html.erb +7 -0
  262. data/app/views/platform/common/_user_login.html.erb +11 -0
  263. data/app/views/platform/developer/api_explorer/history.html.erb +31 -0
  264. data/app/views/platform/developer/api_explorer/index.html.erb +134 -0
  265. data/app/views/platform/developer/api_explorer/oauth_lander.html.erb +4 -0
  266. data/app/views/platform/developer/api_explorer/options.html.erb +44 -0
  267. data/app/views/platform/developer/apps/_form.html.erb +340 -0
  268. data/app/views/platform/developer/apps/create_version.html.erb +19 -0
  269. data/app/views/platform/developer/apps/edit.html.erb +21 -0
  270. data/app/views/platform/developer/apps/index.html.erb +375 -0
  271. data/app/views/platform/developer/apps/new.html.erb +20 -0
  272. data/app/views/platform/developer/blog/index.html.erb +7 -0
  273. data/app/views/platform/developer/common/_footer.html.erb +1 -0
  274. data/app/views/platform/developer/common/_header.html.erb +34 -0
  275. data/app/views/platform/developer/dashboard/_apps_info.html.erb +84 -0
  276. data/app/views/platform/developer/dashboard/_discussions.html.erb +68 -0
  277. data/app/views/platform/developer/dashboard/_header.html.erb +12 -0
  278. data/app/views/platform/developer/dashboard/_reviews.html.erb +53 -0
  279. data/app/views/platform/developer/dashboard/_statistics.html.erb +105 -0
  280. data/app/views/platform/developer/dashboard/index.html.erb +85 -0
  281. data/app/views/platform/developer/dashboard/settings.html.erb +23 -0
  282. data/app/views/platform/developer/forum/_message.html.erb +17 -0
  283. data/app/views/platform/developer/forum/_messages.html.erb +14 -0
  284. data/app/views/platform/developer/forum/_new_message.html.erb +28 -0
  285. data/app/views/platform/developer/forum/_new_topic.html.erb +39 -0
  286. data/app/views/platform/developer/forum/index.html.erb +89 -0
  287. data/app/views/platform/developer/forum/topic.html.erb +28 -0
  288. data/app/views/platform/developer/help/_footer.html.erb +4 -0
  289. data/app/views/platform/developer/help/_header.html.erb +95 -0
  290. data/app/views/platform/developer/help/_navigation.html.erb +99 -0
  291. data/app/views/platform/developer/help/api.html.erb +120 -0
  292. data/app/views/platform/developer/help/credits.html.erb +77 -0
  293. data/app/views/platform/developer/help/index.html.erb +19 -0
  294. data/app/views/platform/developer/help/license.html.erb +586 -0
  295. data/app/views/platform/developer/help/oauth_app_login.html.erb +177 -0
  296. data/app/views/platform/developer/help/oauth_client_side.html.erb +264 -0
  297. data/app/views/platform/developer/help/oauth_desktop.html.erb +191 -0
  298. data/app/views/platform/developer/help/oauth_extensions.html.erb +342 -0
  299. data/app/views/platform/developer/help/oauth_intro.html.erb +371 -0
  300. data/app/views/platform/developer/help/oauth_mobile.html.erb +292 -0
  301. data/app/views/platform/developer/help/oauth_server_side.html.erb +603 -0
  302. data/app/views/platform/developer/help/oauth_trusted_client.html.erb +202 -0
  303. data/app/views/platform/developer/help/reference.html.erb +42 -0
  304. data/app/views/platform/developer/help/sdk_ios.html.erb +31 -0
  305. data/app/views/platform/developer/help/sdk_js.html.erb +202 -0
  306. data/app/views/platform/developer/info/_basic_info.html.erb +74 -0
  307. data/app/views/platform/developer/info/_header.html.erb +12 -0
  308. data/app/views/platform/developer/info/index.html.erb +23 -0
  309. data/app/views/platform/developer/registration/index.html.erb +134 -0
  310. data/app/views/platform/developer/resources/index.html.erb +23 -0
  311. data/app/views/platform/forum/_message.html.erb +17 -0
  312. data/app/views/platform/forum/_messages.html.erb +14 -0
  313. data/app/views/platform/forum/_new_message.html.erb +26 -0
  314. data/app/views/platform/forum/_new_topic.html.erb +38 -0
  315. data/app/views/platform/forum/_topic.html.erb +18 -0
  316. data/app/views/platform/forum/_topics.html.erb +74 -0
  317. data/app/views/platform/login/index.html.erb +31 -0
  318. data/app/views/platform/login/register.html.erb +55 -0
  319. data/app/views/platform/oauth/_authorization_box.html.erb +75 -0
  320. data/app/views/platform/oauth/_authorization_popup.html.erb +38 -0
  321. data/app/views/platform/oauth/_authorize_form.html.erb +11 -0
  322. data/app/views/platform/oauth/auth_failed.html.erb +0 -0
  323. data/app/views/platform/oauth/auth_success.html.erb +0 -0
  324. data/app/views/platform/oauth/authorize_desktop.html.erb +76 -0
  325. data/app/views/platform/oauth/authorize_failure_iframe.html.erb +1 -0
  326. data/app/views/platform/oauth/authorize_failure_mobile.html.erb +24 -0
  327. data/app/views/platform/oauth/authorize_failure_popup.html.erb +24 -0
  328. data/app/views/platform/oauth/authorize_failure_web.html.erb +1 -0
  329. data/app/views/platform/oauth/authorize_iframe.html.erb +16 -0
  330. data/app/views/platform/oauth/authorize_mobile.html.erb +1 -0
  331. data/app/views/platform/oauth/authorize_popup.html.erb +1 -0
  332. data/app/views/platform/oauth/authorize_success_iframe.html.erb +1 -0
  333. data/app/views/platform/oauth/authorize_success_mobile.html.erb +24 -0
  334. data/app/views/platform/oauth/authorize_success_popup.html.erb +24 -0
  335. data/app/views/platform/oauth/authorize_success_web.html.erb +1 -0
  336. data/app/views/platform/oauth/authorize_web.html.erb +3 -0
  337. data/app/views/platform/oauth/xd.html.erb +13 -0
  338. data/app/views/platform/ratings/_list.html.erb +30 -0
  339. data/app/views/platform/ratings/_new.html.erb +70 -0
  340. data/app/views/platform/ratings/_rating.html.erb +17 -0
  341. data/config/platform/config.yml +133 -0
  342. data/config/platform/data/default_applications.yml +39 -0
  343. data/config/platform/data/default_categories.yml +56 -0
  344. data/config/platform/data/default_permissions.yml +0 -0
  345. data/config/platform/site/features.yml +66 -0
  346. data/config/routes.rb +59 -0
  347. data/db/migrate/20110602232141_create_platform_tables.rb +262 -0
  348. data/docs/Classes.graffle +7315 -0
  349. data/docs/Classes.pdf +0 -0
  350. data/lib/generators/platform/platform_generator.rb +56 -0
  351. data/lib/generators/platform/templates/db/create_platform_tables.rb +262 -0
  352. data/lib/generators/platform/templates/layouts/platform.html.erb +49 -0
  353. data/lib/generators/platform/templates/layouts/platform_admin.html.erb +60 -0
  354. data/lib/platform.rb +6 -0
  355. data/lib/platform/api/already_jsoned_string.rb +9 -0
  356. data/lib/platform/api/proxy.rb +45 -0
  357. data/lib/platform/api/proxy/base.rb +62 -0
  358. data/lib/platform/cache.rb +78 -0
  359. data/lib/platform/config.rb +666 -0
  360. data/lib/platform/engine.rb +5 -0
  361. data/lib/platform/exception.rb +27 -0
  362. data/lib/platform/extensions/action_controller_extension.rb +65 -0
  363. data/lib/platform/extensions/action_view_extension.rb +168 -0
  364. data/lib/platform/extensions/object_extension.rb +51 -0
  365. data/lib/platform/helper.rb +33 -0
  366. data/lib/platform/logger.rb +62 -0
  367. data/lib/platform/railtie.rb +52 -0
  368. data/lib/platform/random_password_generator.rb +76 -0
  369. data/lib/platform/simple_string_permissions.rb +40 -0
  370. data/lib/platform/version.rb +3 -0
  371. data/lib/tasks/platform.rake +119 -0
  372. data/platform.gemspec +45 -0
  373. data/script/rails +6 -0
  374. data/spec/config/config_spec.rb +10 -0
  375. data/spec/dummy_app.rb +52 -0
  376. data/spec/models/application_spec.rb +53 -0
  377. data/spec/models/developer_spec.rb +23 -0
  378. data/spec/spec_helper.rb +29 -0
  379. data/test/dummy/Rakefile +7 -0
  380. data/test/dummy/app/assets/javascripts/application.js +7 -0
  381. data/test/dummy/app/assets/stylesheets/admin.css +200 -0
  382. data/test/dummy/app/assets/stylesheets/application.css +47 -0
  383. data/test/dummy/app/assets/stylesheets/components.css.scss +211 -0
  384. data/test/dummy/app/assets/stylesheets/layout.css.scss +143 -0
  385. data/test/dummy/app/controllers/admin/admins_controller.rb +7 -0
  386. data/test/dummy/app/controllers/admin/base_controller.rb +12 -0
  387. data/test/dummy/app/controllers/admin/bookmarks_controller.rb +7 -0
  388. data/test/dummy/app/controllers/admin/users_controller.rb +19 -0
  389. data/test/dummy/app/controllers/api/base_controller.rb +5 -0
  390. data/test/dummy/app/controllers/api/bookmarks_controller.rb +35 -0
  391. data/test/dummy/app/controllers/api/users_controller.rb +19 -0
  392. data/test/dummy/app/controllers/application_controller.rb +31 -0
  393. data/test/dummy/app/controllers/home_controller.rb +7 -0
  394. data/test/dummy/app/controllers/login_controller.rb +65 -0
  395. data/test/dummy/app/helpers/application_helper.rb +9 -0
  396. data/test/dummy/app/helpers/home_helper.rb +2 -0
  397. data/test/dummy/app/mailers/.gitkeep +0 -0
  398. data/test/dummy/app/models/.gitkeep +0 -0
  399. data/test/dummy/app/models/admin.rb +4 -0
  400. data/test/dummy/app/models/admin_filter.rb +7 -0
  401. data/test/dummy/app/models/bookmark.rb +7 -0
  402. data/test/dummy/app/models/user.rb +34 -0
  403. data/test/dummy/app/views/admin/admins/index.html.erb +7 -0
  404. data/test/dummy/app/views/admin/bookmarks/index.html.erb +5 -0
  405. data/test/dummy/app/views/admin/users/index.html.erb +10 -0
  406. data/test/dummy/app/views/demo/index.rhtml +108 -0
  407. data/test/dummy/app/views/demo/tokens.rhtml +35 -0
  408. data/test/dummy/app/views/home/index.html.erb +43 -0
  409. data/test/dummy/app/views/layouts/_footer.html.erb +16 -0
  410. data/test/dummy/app/views/layouts/_header.html.erb +22 -0
  411. data/test/dummy/app/views/layouts/admin.html.erb +97 -0
  412. data/test/dummy/app/views/layouts/application.html.erb +25 -0
  413. data/test/dummy/app/views/layouts/minimal.html.erb +37 -0
  414. data/test/dummy/app/views/layouts/popup.html.erb +43 -0
  415. data/test/dummy/app/views/login/index.html.erb +34 -0
  416. data/test/dummy/app/views/login/register.html.erb +51 -0
  417. data/test/dummy/config.ru +4 -0
  418. data/test/dummy/config/application.rb +51 -0
  419. data/test/dummy/config/boot.rb +10 -0
  420. data/test/dummy/config/database.yml +25 -0
  421. data/test/dummy/config/environment.rb +5 -0
  422. data/test/dummy/config/environments/development.rb +30 -0
  423. data/test/dummy/config/environments/production.rb +60 -0
  424. data/test/dummy/config/environments/test.rb +42 -0
  425. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  426. data/test/dummy/config/initializers/inflections.rb +10 -0
  427. data/test/dummy/config/initializers/mime_types.rb +5 -0
  428. data/test/dummy/config/initializers/secret_token.rb +7 -0
  429. data/test/dummy/config/initializers/session_store.rb +8 -0
  430. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  431. data/test/dummy/config/locales/en.yml +5 -0
  432. data/test/dummy/config/platform/api/0/bookmark.yml +18 -0
  433. data/test/dummy/config/platform/api/0/user.yml +17 -0
  434. data/test/dummy/config/platform/api/1/bookmark.yml +58 -0
  435. data/test/dummy/config/platform/api/1/user.yml +36 -0
  436. data/test/dummy/config/platform/config.yml +135 -0
  437. data/test/dummy/config/platform/data/default_applications.yml +39 -0
  438. data/test/dummy/config/platform/data/default_categories.yml +56 -0
  439. data/test/dummy/config/platform/data/default_permissions.yml +0 -0
  440. data/test/dummy/config/platform/site/features.yml +66 -0
  441. data/test/dummy/config/platform/site/sample_apps.yml +100 -0
  442. data/test/dummy/config/routes.rb +30 -0
  443. data/test/dummy/config/tr8n/config.yml +247 -0
  444. data/test/dummy/config/tr8n/data/ip_locations.csv +93460 -0
  445. data/test/dummy/config/tr8n/rules/default_date_rules.yml +20 -0
  446. data/test/dummy/config/tr8n/rules/default_gender_list_rules.yml +82 -0
  447. data/test/dummy/config/tr8n/rules/default_gender_rules.yml +20 -0
  448. data/test/dummy/config/tr8n/rules/default_language_cases.yml +272 -0
  449. data/test/dummy/config/tr8n/rules/default_list_rules.yml +19 -0
  450. data/test/dummy/config/tr8n/rules/default_numeric_rules.yml +42 -0
  451. data/test/dummy/config/tr8n/rules/default_value_rules.yml +18 -0
  452. data/test/dummy/config/tr8n/site/default_glossary.yml +18 -0
  453. data/test/dummy/config/tr8n/site/default_languages.yml +1591 -0
  454. data/test/dummy/config/tr8n/site/features.yml +111 -0
  455. data/test/dummy/config/tr8n/site/shortcuts.yml +55 -0
  456. data/test/dummy/config/tr8n/site/sitemap.json +42 -0
  457. data/test/dummy/config/tr8n/tokens/data.yml +19 -0
  458. data/test/dummy/config/tr8n/tokens/decorations.yml +19 -0
  459. data/test/dummy/config/will_filter/config.yml +99 -0
  460. data/test/dummy/db/migrate/20101207014543_create_users.rb +23 -0
  461. data/test/dummy/db/migrate/20110113223509_create_admins.rb +15 -0
  462. data/test/dummy/db/migrate/20110930041143_create_will_filter_filters.rb +15 -0
  463. data/test/dummy/db/migrate/20110930041150_create_tr8n_tables.rb +350 -0
  464. data/test/dummy/db/migrate/20111004075531_create_platform_tables.rb +262 -0
  465. data/test/dummy/db/migrate/20111012055603_create_bookmarks.rb +10 -0
  466. data/test/dummy/db/schema.rb +683 -0
  467. data/test/dummy/lib/assets/.gitkeep +0 -0
  468. data/test/dummy/lib/platform/api/bookmark_proxy_0.rb +12 -0
  469. data/test/dummy/lib/platform/api/bookmark_proxy_1.rb +12 -0
  470. data/test/dummy/lib/platform/api/user_proxy_0.rb +12 -0
  471. data/test/dummy/lib/platform/api/user_proxy_1.rb +12 -0
  472. data/test/dummy/log/.gitkeep +0 -0
  473. data/test/dummy/public/404.html +26 -0
  474. data/test/dummy/public/422.html +26 -0
  475. data/test/dummy/public/500.html +26 -0
  476. data/test/dummy/public/favicon.ico +0 -0
  477. data/test/dummy/script/rails +6 -0
  478. data/test/dummy/test/fixtures/documents.yml +11 -0
  479. data/test/dummy/test/unit/document_test.rb +7 -0
  480. metadata +886 -0
@@ -0,0 +1,111 @@
1
+ #############################################################################
2
+ # Tr8n Features Configuration
3
+ #
4
+ # Default settings for all environments
5
+ #
6
+ # You can overload any feature for any environment by changing the
7
+ # environment settings at the bottom of the file
8
+ #############################################################################
9
+
10
+ defaults: &defaults
11
+ enabled_features: [dashboard, sitemap, phrases, translations, awards, forum, glossary, help]
12
+
13
+ dashboard:
14
+ title: Dashboard
15
+ link: /tr8n/dashboard
16
+ controller: dashboard
17
+ actions: [index]
18
+ default_language: true
19
+ manager_only: false
20
+
21
+ phrases:
22
+ title: Phrases
23
+ link: /tr8n/phrases
24
+ controller: phrases
25
+ actions: [index, view]
26
+ default_language: false
27
+ manager_only: false
28
+
29
+ sitemap:
30
+ title: Site Map
31
+ link: /tr8n/phrases/map
32
+ controller: phrases
33
+ actions: [map, index, view]
34
+ default_language: false
35
+ manager_only: false
36
+
37
+ translations:
38
+ title: Translations
39
+ link: /tr8n/translations
40
+ controller: translations
41
+ actions: [index, view]
42
+ default_language: false
43
+ manager_only: false
44
+
45
+ awards:
46
+ title: Awards
47
+ link: /tr8n/awards
48
+ controller: awards
49
+ actions: [index]
50
+ default_language: true
51
+ manager_only: false
52
+
53
+ forum:
54
+ title: Discussions
55
+ link: /tr8n/forum
56
+ controller: forum
57
+ actions: [index, topic, message]
58
+ default_language: true
59
+ manager_only: false
60
+
61
+ glossary:
62
+ title: Glossary
63
+ link: /tr8n/glossary
64
+ controller: glossary
65
+ actions: [index]
66
+ default_language: true
67
+ manager_only: false
68
+
69
+ rules:
70
+ title: Manage Language
71
+ link: /tr8n/language
72
+ controller: language
73
+ actions: [index]
74
+ default_language: true
75
+ manager_only: true
76
+
77
+ help:
78
+ title: Help
79
+ link: /tr8n/help
80
+ controller: help
81
+ actions: []
82
+ default_language: true
83
+ manager_only: false
84
+
85
+ test:
86
+ title: Test
87
+ link: http://www.google.com
88
+ controller: test
89
+ actions: [index]
90
+ default_language: true
91
+ manager_only: false
92
+
93
+
94
+ #############################################################################
95
+ # Environment Settings
96
+ # You can overload any feature defined in the defaults for any environment
97
+ #############################################################################
98
+ development:
99
+ <<: *defaults
100
+
101
+ test:
102
+ <<: *defaults
103
+
104
+ qa:
105
+ <<: *defaults
106
+
107
+ stage:
108
+ <<: *defaults
109
+
110
+ production:
111
+ <<: *defaults
@@ -0,0 +1,55 @@
1
+ Ctrl+Shift+S:
2
+ description: Displays Tr8n shortcuts
3
+ script: "Tr8n.Utils.displayShortcuts();"
4
+
5
+ Ctrl+Shift+I:
6
+ description: Turns on/off inline translations
7
+ script: "tr8nLanguageSelector.toggleInlineTranslations();"
8
+
9
+ Ctrl+Shift+L:
10
+ description: Shows/hides language selector
11
+ script: "tr8nLanguageSelector.toggle();"
12
+
13
+ Ctrl+Shift+A:
14
+ description: Displays all available languages
15
+ script: "window.location = '/tr8n/language/table';"
16
+
17
+ Ctrl+Shift+K:
18
+ description: Adds software keyboard for each entry field
19
+ script: "Tr8n.Utils.toggleKeyboards();"
20
+
21
+ Ctrl+Shift+C:
22
+ description: Displays Tr8n credits
23
+ script: "window.location = '/tr8n/home/credits';"
24
+
25
+ Alt+Shift+D:
26
+ description: Opens dashboard
27
+ script: "window.location = '/tr8n/dashboard';"
28
+
29
+ Alt+Shift+M:
30
+ description: Opens sitemap
31
+ script: "window.location = '/tr8n/phrases/map';"
32
+
33
+ Alt+Shift+P:
34
+ description: Opens phrases
35
+ script: "window.location = '/tr8n/phrases';"
36
+
37
+ Alt+Shift+T:
38
+ description: Opens translations
39
+ script: "window.location = '/tr8n/translations';"
40
+
41
+ Alt+Shift+A:
42
+ description: Opens awards
43
+ script: "window.location = '/tr8n/awards';"
44
+
45
+ Alt+Shift+B:
46
+ description: Opens message board
47
+ script: "window.location = '/tr8n/forum';"
48
+
49
+ Alt+Shift+G:
50
+ description: Opens glossary
51
+ script: "window.location = '/tr8n/glossary';"
52
+
53
+ Alt+Shift+H:
54
+ description: Opens help
55
+ script: "window.location = '/tr8n/help';"
@@ -0,0 +1,42 @@
1
+ [
2
+ {
3
+ "label": "Tr8n Engine Sections",
4
+ "description": "Sitemap section title",
5
+ "enabled": true,
6
+ "splitters": [[0, 3], [4, 5], [6, -1]],
7
+ "link": "/tr8n/home",
8
+ "source": "root",
9
+ "sections": [
10
+ {"label": "Home", "description": "Tr8n section title", "link": "/tr8n/home", "sources": ["tr8n/home/index"]},
11
+ {"label": "Dashboard", "description": "Tr8n section title", "link": "/tr8n/dashboard", "sources": ["tr8n/dashboard/index"]},
12
+ {"label": "Translations", "description": "Tr8n section title", "link": "/tr8n/translations", "sources": ["tr8n/translations/index"]},
13
+ {"label": "Site Map", "description": "Tr8n section title", "link": "/tr8n/phrases/map", "sources": ["tr8n/phrases/map"]},
14
+ {"label": "Phrases", "description": "Tr8n section title", "link": "/tr8n/phrases", "sources": ["tr8n/phrases/index"], "sections": [
15
+ {"label": "Phrase View", "description": "Tr8n section title", "object":{"class":"Tr8n::TranslationKey", "param":"translation_key_id", "method":"label"}, "sources": ["tr8n/phrases/view"]}
16
+ ]},
17
+ {"label": "Discussions", "description": "Tr8n section title", "link": "/tr8n/forum", "sources": ["tr8n/forum/index"], "sections": [
18
+ {"label": "Topic View", "description": "Tr8n section title", "object":{"class":"Tr8n::LanguageForumTopic", "param":"topic_id", "method":"topic"}, "sources": ["tr8n/forum/topic"]}
19
+ ]},
20
+ {"label": "Awards", "description": "Tr8n section title", "link": "/tr8n/awards", "sources": ["tr8n/awards/index"]},
21
+ {"label": "Glossary", "description": "Tr8n section title", "link": "/tr8n/glossary", "sources": ["tr8n/glossary/index"]},
22
+ {"label": "Help", "desc": "Tr8n section title", "link": "/tr8n/help", "sources": ["tr8n/help/index"]},
23
+ {"label": "Language Management", "desc": "Tr8n section title", "sources": ["tr8n/language/index"]}
24
+ ]
25
+ },
26
+ {
27
+ "label": "Other Translatable Resources",
28
+ "description": "Sitemap section title",
29
+ "enabled": true,
30
+ "splitters": [[0, 0], [1, 2], [3, -1]],
31
+ "sections": [
32
+ {"label": "Language Translations Features", "sources": [], "sections": [
33
+ {"label": "Selector Window", "description": "", "sources": ["tr8n/language/select"]},
34
+ {"label": "Translator Window", "description": "", "sources": ["tr8n/language/translate"]}
35
+ ]},
36
+ {"label": "Flash Notices", "sources": ["FlashNotice"], "sections": []},
37
+ {"label": "Flash Errors", "sources": ["FlashError"], "sections": []},
38
+ {"label": "Login Page", "sources": ["tr8n/login/index"], "sections": []},
39
+ {"label": "Logout Page", "sources": ["tr8n/login/out"], "sections": []}
40
+ ]
41
+ }
42
+ ]
@@ -0,0 +1,19 @@
1
+ #############################################################################
2
+ #
3
+ # Tr8n Default Data Tokens
4
+ #
5
+ #############################################################################
6
+
7
+ ndash: "&ndash;" # –
8
+ mdash: "&mdash;" # —
9
+ iexcl: "&iexcl;" # ¡
10
+ iquest: "&iquest;" # ¿
11
+ quot: "&quot;" # "
12
+ ldquo: "&ldquo;" # “
13
+ rdquo: "&rdquo;" # ”
14
+ lsquo: "&lsquo;" # ‘
15
+ rsquo: "&rsquo;" # ’
16
+ laquo: "&laquo;" # «
17
+ raquo: "&raquo;" # »
18
+ nbsp: "&nbsp;" # space
19
+ br: "<br/>" # line break
@@ -0,0 +1,19 @@
1
+ #############################################################################
2
+ #
3
+ # Tr8n Default Decoration Tokens
4
+ #
5
+ #############################################################################
6
+
7
+ strong: "<strong>{$0}</strong>"
8
+ bold: "<strong>{$0}</strong>"
9
+ b: "<strong>{$0}</strong>"
10
+ em: "<em>{$0}</em>"
11
+ italic: "<i>{$0}</i>"
12
+ i: "<i>{$0}</i>"
13
+ link: "<a href='{$href}'>{$0}</a>"
14
+ link1: "<a href='{$href}'>{$0}</a>"
15
+ link2: "<a href='{$href}'>{$0}</a>"
16
+ link3: "<a href='{$href}'>{$0}</a>"
17
+ br: "<br>{$0}"
18
+ div: "<div id='{$id}' class='{$class}' style='{$style}'>{$0}</div>"
19
+ span: "<span id='{$id}' class='{$class}' style='{$style}'>{$0}</span>"
@@ -0,0 +1,99 @@
1
+ #############################################################################
2
+ # will_filter configuration
3
+ #
4
+ # Default settings for all environments
5
+ #
6
+ # You can overload any feature for any environment by changing the
7
+ # environment settings at the bottom of the file.
8
+ #
9
+ # Alternatively, you can overload any of the methods of WillFilter::Config
10
+ #############################################################################
11
+
12
+ defaults: &defaults
13
+ effects_options:
14
+ enabled: false
15
+ script_path: "/will_filter/javascripts/will_filter_prototype_effects.js"
16
+
17
+ save_options:
18
+ enabled: true
19
+ user_filters_enabled: false # if set to true, the filters will be private
20
+ user_class_name: User
21
+ current_user_method: current_user
22
+
23
+ export_options:
24
+ enabled: true
25
+ default_formats: [html, csv, xml, json]
26
+
27
+ containers: # container implementation mapping
28
+ nil: WillFilter::Containers::Nil
29
+ numeric: WillFilter::Containers::Numeric
30
+ numeric_range: WillFilter::Containers::NumericRange
31
+ numeric_delimited: WillFilter::Containers::NumericDelimited
32
+ date_time_range: WillFilter::Containers::DateTimeRange
33
+ single_date: WillFilter::Containers::SingleDate
34
+ date: WillFilter::Containers::Date
35
+ date_time: WillFilter::Containers::DateTime
36
+ date_range: WillFilter::Containers::DateRange
37
+ text: WillFilter::Containers::Text
38
+ text_delimited: WillFilter::Containers::TextDelimited
39
+ boolean: WillFilter::Containers::Boolean
40
+ list: WillFilter::Containers::List
41
+ filter_list: WillFilter::Containers::FilterList
42
+
43
+ data_types: # mapping between data types and containers
44
+ bigint: [nil, numeric, numeric_range, numeric_delimited]
45
+ numeric: [nil, numeric, numeric_range, numeric_delimited]
46
+ float: [nil, numeric, numeric_range, numeric_delimited]
47
+ smallint: [nil, numeric, numeric_range, numeric_delimited]
48
+ integer: [nil, numeric, numeric_range, numeric_delimited]
49
+ int: [nil, numeric, numeric_range, numeric_delimited]
50
+ double: [nil, numeric, numeric_range, numeric_delimited]
51
+ timestamp: [nil, date_time, date_time_range, single_date]
52
+ datetime: [nil, date_time, date_time_range, single_date]
53
+ date: [nil, date, date_range]
54
+ character: [nil, text, text_delimited]
55
+ varchar: [nil, text, text_delimited]
56
+ text: [nil, text, text_delimited]
57
+ blob: [nil, text, text_delimited]
58
+ text[]: [nil, text, text_delimited]
59
+ bytea: [nil, text, text_delimited]
60
+ boolean: [nil, boolean]
61
+ tinyint: [nil, boolean]
62
+
63
+ operators: # operators precedence
64
+ is: 100
65
+ is_not: 200
66
+ is_on: 300
67
+ is_in: 400
68
+ is_provided: 500
69
+ is_not_provided: 600
70
+ is_after: 700
71
+ is_before: 800
72
+ is_in_the_range: 900
73
+ contains: 1000
74
+ does_not_contain: 1100
75
+ starts_with: 1200
76
+ ends_with: 1300
77
+ is_greater_than: 1400
78
+ is_less_than: 1500
79
+ is_filtered_by: 1600
80
+
81
+
82
+ #############################################################################
83
+ # Environment Settings
84
+ # You can overload any feature defined in the defaults for any environment
85
+ #############################################################################
86
+ development:
87
+ <<: *defaults
88
+
89
+ test:
90
+ <<: *defaults
91
+
92
+ qa:
93
+ <<: *defaults
94
+
95
+ stage:
96
+ <<: *defaults
97
+
98
+ production:
99
+ <<: *defaults
@@ -0,0 +1,23 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :email
5
+ t.string :password
6
+ t.string :first_name
7
+ t.string :last_name
8
+ t.string :gender
9
+ t.string :mugshot
10
+ t.string :locale
11
+ t.string :link
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :users, [:email]
17
+ add_index :users, [:email, :password]
18
+ end
19
+
20
+ def self.down
21
+ drop_table :users
22
+ end
23
+ end
@@ -0,0 +1,15 @@
1
+ class CreateAdmins < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :admins do |t|
4
+ t.integer :user_id
5
+ t.integer :level
6
+ t.timestamps
7
+ end
8
+
9
+ add_index :admins, [:user_id]
10
+ end
11
+
12
+ def self.down
13
+ drop_table :admins
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ class CreateWillFilterFilters < ActiveRecord::Migration
2
+ def change
3
+ create_table :will_filter_filters do |t|
4
+ t.string :type
5
+ t.string :name
6
+ t.text :data
7
+ t.integer :user_id
8
+ t.string :model_class_name
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :will_filter_filters, [:user_id]
14
+ end
15
+ end
@@ -0,0 +1,350 @@
1
+ #--
2
+ # Copyright (c) 2010-2011 Michael Berkovich
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ class CreateTr8nTables < ActiveRecord::Migration
25
+ def self.up
26
+ create_table :tr8n_languages do |t|
27
+ t.string :locale, :null => false
28
+ t.string :english_name, :null => false
29
+ t.string :native_name
30
+ t.boolean :enabled
31
+ t.boolean :right_to_left
32
+ t.integer :completeness
33
+ t.integer :fallback_language_id
34
+ t.text :curse_words
35
+ t.integer :featured_index, :default => 0
36
+ t.string :google_key
37
+ t.string :facebook_key
38
+ t.timestamps
39
+ end
40
+ add_index :tr8n_languages, [:locale]
41
+
42
+ create_table :tr8n_language_rules do |t|
43
+ t.integer :language_id, :null => false
44
+ t.integer :translator_id
45
+ t.string :type
46
+ t.text :definition
47
+ t.timestamps
48
+ end
49
+ add_index :tr8n_language_rules, [:language_id]
50
+ add_index :tr8n_language_rules, [:language_id, :translator_id]
51
+
52
+ create_table :tr8n_language_cases do |t|
53
+ t.integer :language_id, :null => false
54
+ t.integer :translator_id
55
+ t.string :keyword
56
+ t.string :latin_name
57
+ t.string :native_name
58
+ t.text :description
59
+ t.string :application
60
+ t.timestamps
61
+ end
62
+ add_index :tr8n_language_cases, [:language_id]
63
+ add_index :tr8n_language_cases, [:language_id, :translator_id]
64
+ add_index :tr8n_language_cases, [:language_id, :keyword]
65
+
66
+ create_table :tr8n_language_case_value_maps do |t|
67
+ t.string :keyword, :null => false
68
+ t.integer :language_id, :null => false
69
+ t.integer :translator_id
70
+ t.text :map
71
+ t.boolean :reported
72
+ t.timestamps
73
+ end
74
+ add_index :tr8n_language_case_value_maps, [:keyword, :language_id]
75
+ add_index :tr8n_language_case_value_maps, [:translator_id]
76
+
77
+ create_table :tr8n_language_users do |t|
78
+ t.integer :language_id, :null => false
79
+ t.integer :user_id, :null => false
80
+ t.integer :translator_id
81
+ t.boolean :manager, :default => false
82
+ t.timestamps
83
+ end
84
+ add_index :tr8n_language_users, [:user_id]
85
+ add_index :tr8n_language_users, [:language_id, :user_id]
86
+ add_index :tr8n_language_users, [:language_id, :translator_id]
87
+ add_index :tr8n_language_users, [:created_at]
88
+ add_index :tr8n_language_users, [:updated_at]
89
+
90
+ create_table :tr8n_language_metrics do |t|
91
+ t.string :type
92
+ t.integer :language_id, :null => false
93
+ t.date :metric_date
94
+ t.integer :user_count, :default => 0
95
+ t.integer :translator_count, :default => 0
96
+ t.integer :translation_count, :default => 0
97
+ t.integer :key_count, :default => 0
98
+ t.integer :locked_key_count, :default => 0
99
+ t.integer :translated_key_count, :default => 0
100
+
101
+ t.timestamps
102
+ end
103
+ add_index :tr8n_language_metrics, [:language_id]
104
+ add_index :tr8n_language_metrics, [:created_at]
105
+
106
+ create_table :tr8n_translators do |t|
107
+ t.integer :user_id, :null => false
108
+ t.boolean :inline_mode, :default => false
109
+ t.boolean :blocked, :default => false
110
+ t.boolean :reported, :default => false
111
+ t.integer :fallback_language_id
112
+ t.integer :rank, :default => 0
113
+ t.string :name
114
+ t.string :gender
115
+ t.string :email
116
+ t.string :password
117
+ t.string :mugshot
118
+ t.string :link
119
+ t.string :locale
120
+ t.integer :level, :default => 0
121
+ t.integer :manager
122
+ t.string :last_ip
123
+ t.string :country_code
124
+ t.timestamps
125
+ end
126
+ add_index :tr8n_translators, [:user_id]
127
+ add_index :tr8n_translators, [:created_at]
128
+ add_index :tr8n_translators, [:email]
129
+ add_index :tr8n_translators, [:email, :password]
130
+
131
+ create_table :tr8n_translator_logs do |t|
132
+ t.integer :translator_id
133
+ t.integer :user_id, :limit => 8
134
+ t.string :action
135
+ t.integer :action_level
136
+ t.string :reason
137
+ t.string :reference
138
+ t.timestamps
139
+ end
140
+ add_index :tr8n_translator_logs, [:translator_id]
141
+ add_index :tr8n_translator_logs, [:user_id]
142
+ add_index :tr8n_translator_logs, [:created_at]
143
+
144
+ create_table :tr8n_translator_metrics do |t|
145
+ t.integer :translator_id, :null => false
146
+ t.integer :language_id
147
+ t.integer :total_translations, :default => 0
148
+ t.integer :total_votes, :default => 0
149
+ t.integer :positive_votes, :default => 0
150
+ t.integer :negative_votes, :default => 0
151
+ t.integer :accepted_translations, :default => 0
152
+ t.integer :rejected_translations, :default => 0
153
+ t.timestamps
154
+ end
155
+ add_index :tr8n_translator_metrics, [:translator_id]
156
+ add_index :tr8n_translator_metrics, [:translator_id, :language_id]
157
+ add_index :tr8n_translator_metrics, [:created_at]
158
+
159
+ create_table :tr8n_translation_keys do |t|
160
+ t.string :type
161
+ t.string :key, :null => false
162
+ t.text :label, :null => false
163
+ t.text :description
164
+ t.timestamp :verified_at
165
+ t.integer :translation_count
166
+ t.boolean :admin
167
+ t.string :locale
168
+ t.integer :level, :default => 0
169
+ t.timestamps
170
+ end
171
+ add_index :tr8n_translation_keys, [:key], :unique => true
172
+
173
+ create_table :tr8n_translation_sources do |t|
174
+ t.string :source
175
+ t.integer :translation_domain_id
176
+ t.timestamps
177
+ end
178
+ add_index :tr8n_translation_sources, [:source], :name => "tr8n_sources_source"
179
+
180
+ create_table :tr8n_translation_key_sources do |t|
181
+ t.integer :translation_key_id, :null => false
182
+ t.integer :translation_source_id, :null => false
183
+ t.text :details
184
+ t.timestamps
185
+ end
186
+ add_index :tr8n_translation_key_sources, [:translation_key_id], :name => "tr8n_trans_keys_key_id"
187
+ add_index :tr8n_translation_key_sources, [:translation_source_id], :name => "tr8n_trans_keys_source_id"
188
+
189
+ create_table :tr8n_translation_key_locks do |t|
190
+ t.integer :translation_key_id, :null => false
191
+ t.integer :language_id, :null => false
192
+ t.integer :translator_id
193
+ t.boolean :locked, :default => false
194
+ t.timestamps
195
+ end
196
+ add_index :tr8n_translation_key_locks, [:translation_key_id, :language_id], :name => "tr8n_locks_key_id_lang_id"
197
+
198
+ create_table :tr8n_translations do |t|
199
+ t.integer :translation_key_id, :null => false
200
+ t.integer :language_id, :null => false
201
+ t.integer :translator_id, :null => false
202
+ t.text :label, :null => false
203
+ t.integer :rank, :default => 0
204
+ t.integer :approved_by_id, :limit => 8
205
+ t.text :rules
206
+ t.timestamps
207
+ end
208
+ add_index :tr8n_translations, [:translator_id], :name => "r8n_trans_translator_id"
209
+ add_index :tr8n_translations, [:translation_key_id, :translator_id, :language_id], :name => "tr8n_trans_key_id_translator_id_lang_id"
210
+ add_index :tr8n_translations, [:created_at], :name => "tr8n_trans_created_at"
211
+
212
+ create_table :tr8n_translation_votes do |t|
213
+ t.integer :translation_id, :null => false
214
+ t.integer :translator_id, :null => false
215
+ t.integer :vote, :null => false
216
+ t.timestamps
217
+ end
218
+ add_index :tr8n_translation_votes, [:translator_id], :name => "tr8n_trans_votes_translator_id"
219
+ add_index :tr8n_translation_votes, [:translation_id, :translator_id], :name => "tr8n_trans_votes_trans_id_translator_id"
220
+
221
+ create_table :tr8n_glossary do |t|
222
+ t.string :keyword
223
+ t.text :description
224
+ t.timestamps
225
+ end
226
+ add_index :tr8n_glossary, [:keyword]
227
+
228
+ create_table :tr8n_language_forum_topics do |t|
229
+ t.integer :translator_id, :null => false
230
+ t.integer :language_id
231
+ t.text :topic, :null => false
232
+ t.timestamps
233
+ end
234
+ add_index :tr8n_language_forum_topics, [:language_id], :name => "tr8n_forum_topics_lang_id"
235
+ add_index :tr8n_language_forum_topics, [:translator_id], :name => "tr8n_forum_topics_translator_id"
236
+
237
+ create_table :tr8n_language_forum_messages do |t|
238
+ t.integer :language_id, :null => false
239
+ t.integer :language_forum_topic_id, :null => false
240
+ t.integer :translator_id, :null => false
241
+ t.text :message, :null => false
242
+ t.timestamps
243
+ end
244
+ add_index :tr8n_language_forum_messages, [:language_id], :name => "tr8n_forum_msgs_lang_id"
245
+ add_index :tr8n_language_forum_messages, [:translator_id], :name => "tr8n_forums_msgs_translator_id"
246
+ add_index :tr8n_language_forum_messages, [:language_id, :language_forum_topic_id], :name => "tr8n_forum_msgs_lang_id_topic_id"
247
+
248
+ create_table :tr8n_language_forum_abuse_reports do |t|
249
+ t.integer :language_id, :null => false
250
+ t.integer :translator_id, :null => false
251
+ t.integer :language_forum_message_id, :null => false
252
+ t.string :reason
253
+ t.timestamps
254
+ end
255
+ add_index :tr8n_language_forum_abuse_reports, [:language_id], :name => "tr8n_forum_reports_lang_id"
256
+ add_index :tr8n_language_forum_abuse_reports, [:language_id, :translator_id], :name => "tr8n_forum_reports_lang_id_translator_id"
257
+ add_index :tr8n_language_forum_abuse_reports, [:language_forum_message_id], :name => "tr8n_forum_reports_message_id"
258
+
259
+ create_table :tr8n_translation_key_comments do |t|
260
+ t.integer :language_id, :null => false
261
+ t.integer :translation_key_id, :null => false
262
+ t.integer :translator_id, :null => false
263
+ t.text :message, :null => false
264
+ t.timestamps
265
+ end
266
+ add_index :tr8n_translation_key_comments, [:language_id], :name => "tr8n_tkey_msgs_lang_id"
267
+ add_index :tr8n_translation_key_comments, [:translator_id], :name => "tr8n_tkey_msgs_translator_id"
268
+ add_index :tr8n_translation_key_comments, [:language_id, :translation_key_id], :name => "tr8n_tkey_msgs_lang_id_tkey_id"
269
+
270
+ create_table :tr8n_language_case_rules do |t|
271
+ t.integer :language_case_id, :null => false
272
+ t.integer :language_id
273
+ t.integer :translator_id
274
+ t.text :definition, :null => false
275
+ t.integer :position
276
+ t.timestamps
277
+ end
278
+ add_index :tr8n_language_case_rules, [:language_case_id], :name => "tr8n_lcr_case_id"
279
+ add_index :tr8n_language_case_rules, [:language_id], :name => "tr8n_lcr_lang_id"
280
+ add_index :tr8n_language_case_rules, [:translator_id], :name => "tr8n_lcr_translator_id"
281
+
282
+ create_table :tr8n_translation_domains do |t|
283
+ t.string :name
284
+ t.string :description
285
+ t.integer :source_count, :default => 0
286
+ t.timestamps
287
+ end
288
+ add_index :tr8n_translation_domains, [:name], :unique => true
289
+
290
+ create_table :tr8n_translator_following do |t|
291
+ t.integer :translator_id
292
+ t.integer :object_id
293
+ t.string :object_type
294
+ t.timestamps
295
+ end
296
+ add_index :tr8n_translator_following, [:translator_id]
297
+
298
+ create_table :tr8n_translator_reports do |t|
299
+ t.integer :translator_id
300
+ t.string :state
301
+ t.integer :object_id
302
+ t.string :object_type
303
+ t.string :reason
304
+ t.text :comment
305
+ t.timestamps
306
+ end
307
+ add_index :tr8n_translator_reports, [:translator_id]
308
+
309
+ create_table :tr8n_ip_locations do |t|
310
+ t.integer :low, :limit => 8
311
+ t.integer :high, :limit => 8
312
+ t.string :registry, :limit => 20
313
+ t.date :assigned
314
+ t.string :ctry, :limit => 2
315
+ t.string :cntry, :limit => 3
316
+ t.string :country, :limit => 80
317
+ t.timestamps
318
+ end
319
+ add_index :tr8n_ip_locations, [:low]
320
+ add_index :tr8n_ip_locations, [:high]
321
+ end
322
+
323
+ def self.down
324
+ drop_table :tr8n_languages
325
+ drop_table :tr8n_language_rules
326
+ drop_table :tr8n_language_users
327
+ drop_table :tr8n_language_cases
328
+ drop_table :tr8n_language_case_value_maps
329
+ drop_table :tr8n_language_metrics
330
+ drop_table :tr8n_translators
331
+ drop_table :tr8n_translator_logs
332
+ drop_table :tr8n_translator_metrics
333
+ drop_table :tr8n_translation_keys
334
+ drop_table :tr8n_translation_sources
335
+ drop_table :tr8n_translation_key_sources
336
+ drop_table :tr8n_translation_key_locks
337
+ drop_table :tr8n_translations
338
+ drop_table :tr8n_translation_votes
339
+ drop_table :tr8n_glossary
340
+ drop_table :tr8n_language_forum_messages
341
+ drop_table :tr8n_language_forum_topics
342
+ drop_table :tr8n_language_forum_abuse_reports
343
+ drop_table :tr8n_translation_key_comments
344
+ drop_table :tr8n_language_case_rules
345
+ drop_table :tr8n_translation_domains
346
+ drop_table :tr8n_translator_following
347
+ drop_table :tr8n_translator_reports
348
+ drop_table :tr8n_ip_locations
349
+ end
350
+ end