tr8n 3.1.1 → 3.1.2

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 (265) hide show
  1. data/.gitignore +6 -3
  2. data/.rspec +2 -0
  3. data/Gemfile +3 -6
  4. data/Gemfile.lock +21 -6
  5. data/README.rdoc +61 -33
  6. data/Rakefile +1 -11
  7. data/app/assets/images/tr8n/photo_system.gif +0 -0
  8. data/app/assets/stylesheets/tr8n/application.css +42 -1
  9. data/{test/dummy/app/assets/stylesheets/components.css.scss → app/assets/stylesheets/tr8n/component.css.scss} +0 -0
  10. data/{test/dummy/app/assets/stylesheets → app/assets/stylesheets/tr8n}/layout.css.scss +0 -0
  11. data/app/assets/stylesheets/tr8n/tr8n.css.scss +16 -8
  12. data/app/controllers/tr8n/admin/base_controller.rb +1 -1
  13. data/app/controllers/tr8n/admin/clientsdk_controller.rb +1 -1
  14. data/app/controllers/tr8n/admin/domain_controller.rb +1 -1
  15. data/app/controllers/tr8n/admin/forum_controller.rb +1 -1
  16. data/app/controllers/tr8n/admin/glossary_controller.rb +1 -1
  17. data/app/controllers/tr8n/admin/language_controller.rb +1 -1
  18. data/app/controllers/tr8n/admin/translation_controller.rb +1 -1
  19. data/app/controllers/tr8n/admin/translation_key_controller.rb +5 -1
  20. data/app/controllers/tr8n/admin/translator_controller.rb +1 -1
  21. data/app/{helpers/tr8n/application_helper.rb → controllers/tr8n/api/v1/sync_controller.rb} +6 -3
  22. data/app/controllers/tr8n/awards_controller.rb +12 -12
  23. data/app/controllers/tr8n/base_controller.rb +140 -137
  24. data/app/controllers/tr8n/dashboard_controller.rb +2 -1
  25. data/app/controllers/tr8n/forum_controller.rb +1 -1
  26. data/app/controllers/tr8n/glossary_controller.rb +1 -1
  27. data/app/controllers/tr8n/help_controller.rb +1 -1
  28. data/app/controllers/tr8n/language_cases_controller.rb +43 -45
  29. data/app/controllers/tr8n/language_controller.rb +1 -1
  30. data/app/controllers/tr8n/phrases_controller.rb +1 -1
  31. data/app/controllers/tr8n/translations_controller.rb +1 -1
  32. data/app/controllers/tr8n/translator_controller.rb +1 -1
  33. data/app/helpers/tr8n/base_helper.rb +0 -4
  34. data/app/models/tr8n/base_filter.rb +1 -1
  35. data/app/models/tr8n/daily_language_metric.rb +1 -1
  36. data/app/models/tr8n/date_rule.rb +1 -1
  37. data/app/models/tr8n/gender_list_rule.rb +1 -1
  38. data/app/models/tr8n/gender_rule.rb +1 -1
  39. data/app/models/tr8n/glossary.rb +1 -1
  40. data/app/models/tr8n/glossary_filter.rb +1 -1
  41. data/app/models/tr8n/integration/ru/russian_gender_list_rule.rb +1 -1
  42. data/app/models/tr8n/integration/ru/russian_numeric_rule.rb +1 -1
  43. data/app/models/tr8n/ip_location.rb +1 -1
  44. data/app/models/tr8n/ip_location_filter.rb +1 -1
  45. data/app/models/tr8n/language.rb +17 -8
  46. data/app/models/tr8n/language_case.rb +1 -1
  47. data/app/models/tr8n/language_case_filter.rb +1 -1
  48. data/app/models/tr8n/language_case_rule.rb +1 -1
  49. data/app/models/tr8n/language_case_rule_filter.rb +1 -1
  50. data/app/models/tr8n/language_case_value_map.rb +1 -1
  51. data/app/models/tr8n/language_case_value_map_filter.rb +1 -1
  52. data/app/models/tr8n/language_filter.rb +1 -1
  53. data/app/models/tr8n/language_forum_abuse_report.rb +1 -1
  54. data/app/models/tr8n/language_forum_abuse_report_filter.rb +1 -1
  55. data/app/models/tr8n/language_forum_message.rb +2 -2
  56. data/app/models/tr8n/language_forum_message_filter.rb +1 -1
  57. data/app/models/tr8n/language_forum_topic.rb +3 -3
  58. data/app/models/tr8n/language_forum_topic_filter.rb +1 -1
  59. data/app/models/tr8n/language_metric.rb +2 -2
  60. data/app/models/tr8n/language_metric_filter.rb +1 -1
  61. data/app/models/tr8n/language_rule.rb +37 -2
  62. data/app/models/tr8n/language_rule_filter.rb +1 -1
  63. data/app/models/tr8n/language_user.rb +3 -3
  64. data/app/models/tr8n/language_user_filter.rb +1 -1
  65. data/app/models/tr8n/list_rule.rb +1 -1
  66. data/app/models/tr8n/monthly_language_metric.rb +2 -2
  67. data/app/models/tr8n/numeric_rule.rb +1 -1
  68. data/app/models/tr8n/sync_log.rb +76 -0
  69. data/app/{controllers/tr8n/application_controller.rb → models/tr8n/sync_log_filter.rb} +4 -3
  70. data/app/models/tr8n/total_language_metric.rb +5 -4
  71. data/app/models/tr8n/translation.rb +61 -13
  72. data/app/models/tr8n/translation_domain.rb +1 -1
  73. data/app/models/tr8n/translation_domain_filter.rb +1 -1
  74. data/app/models/tr8n/translation_filter.rb +1 -1
  75. data/app/models/tr8n/translation_key.rb +33 -5
  76. data/app/models/tr8n/translation_key_comment.rb +1 -1
  77. data/app/models/tr8n/translation_key_comment_filter.rb +1 -1
  78. data/app/models/tr8n/translation_key_filter.rb +1 -1
  79. data/app/models/tr8n/translation_key_lock.rb +2 -2
  80. data/app/models/tr8n/translation_key_lock_filter.rb +1 -1
  81. data/app/models/tr8n/translation_key_source.rb +2 -2
  82. data/app/models/tr8n/translation_key_source_filter.rb +1 -1
  83. data/app/models/tr8n/translation_source.rb +2 -2
  84. data/app/models/tr8n/translation_source_filter.rb +1 -1
  85. data/app/models/tr8n/translation_vote.rb +3 -4
  86. data/app/models/tr8n/translation_vote_filter.rb +1 -1
  87. data/app/models/tr8n/translator.rb +19 -5
  88. data/app/models/tr8n/translator_filter.rb +1 -1
  89. data/app/models/tr8n/translator_following.rb +2 -2
  90. data/app/models/tr8n/translator_following_filter.rb +1 -1
  91. data/app/models/tr8n/translator_log.rb +1 -1
  92. data/app/models/tr8n/translator_log_filter.rb +1 -1
  93. data/app/models/tr8n/translator_metric.rb +15 -21
  94. data/app/models/tr8n/translator_metric_filter.rb +1 -1
  95. data/app/models/tr8n/translator_report.rb +2 -2
  96. data/app/models/tr8n/translator_report_filter.rb +1 -1
  97. data/app/models/tr8n/value_rule.rb +1 -1
  98. data/app/views/tr8n/admin/common/_paginator.html.erb +29 -17
  99. data/app/views/tr8n/admin/translation_key/_tabs.html.erb +3 -1
  100. data/app/views/tr8n/admin/translation_key/sync_logs.html.erb +5 -0
  101. data/app/views/tr8n/awards/index.html.erb +0 -2
  102. data/app/views/tr8n/common/_paginator.html.erb +24 -6
  103. data/app/views/tr8n/common/_tabs.html.erb +9 -5
  104. data/app/views/tr8n/forum/_messages.html.erb +1 -1
  105. data/app/views/tr8n/forum/index.html.erb +1 -1
  106. data/app/views/tr8n/glossary/index.html.erb +2 -2
  107. data/app/views/tr8n/{home → help}/credits.html.erb +0 -0
  108. data/app/views/tr8n/{home → help}/license.html.erb +0 -0
  109. data/app/views/tr8n/language_cases/index.html.erb +2 -2
  110. data/app/views/tr8n/phrases/_comments_module.html.erb +1 -1
  111. data/app/views/tr8n/phrases/index.html.erb +2 -6
  112. data/app/views/tr8n/translations/_list.html.erb +2 -6
  113. data/config/routes.rb +2 -2
  114. data/config/tr8n/config.yml +48 -13
  115. data/config/tr8n/rules/default_language_cases.yml +272 -0
  116. data/config/tr8n/tokens/data.yml +3 -1
  117. data/db/migrate/20111003194443_create_tr8n_sync_tables.rb +22 -0
  118. data/db/migrate/20111011013640_add_remote_id_to_tr8n_translators.rb +5 -0
  119. data/doc/classes.graffle +7049 -5152
  120. data/doc/classes.pdf +0 -0
  121. data/lib/generators/tr8n/templates/{create_tr8n_tables.rb → db/create_tr8n_tables.rb} +0 -0
  122. data/lib/generators/tr8n/templates/layouts/tr8n.html.erb +49 -0
  123. data/lib/generators/tr8n/templates/layouts/tr8n_admin.html.erb +61 -0
  124. data/lib/generators/tr8n/tr8n_generator.rb +11 -4
  125. data/lib/tasks/{tr8n_tasks.rake → tr8n.rake} +4 -0
  126. data/{app/controllers/tr8n/home_controller.rb → lib/tr8n/cache_adapters/memcached.rb} +12 -15
  127. data/lib/tr8n/config.rb +96 -53
  128. data/lib/tr8n/extensions/action_controller_extension.rb +1 -1
  129. data/lib/tr8n/extensions/action_view_extension.rb +4 -28
  130. data/lib/tr8n/tokens/data_token.rb +1 -1
  131. data/lib/tr8n/tokens/method_token.rb +1 -1
  132. data/lib/tr8n/tokens/transform_token.rb +1 -1
  133. data/lib/tr8n/version.rb +1 -1
  134. data/{test/dummy → local/tr8n_server}/Rakefile +1 -1
  135. data/{test/dummy → local/tr8n_server}/app/assets/javascripts/application.js +0 -0
  136. data/{test/dummy → local/tr8n_server}/app/assets/stylesheets/admin.css +0 -0
  137. data/{test/dummy → local/tr8n_server}/app/assets/stylesheets/application.css +0 -0
  138. data/local/tr8n_server/app/assets/stylesheets/components.css.scss +211 -0
  139. data/local/tr8n_server/app/assets/stylesheets/layout.css.scss +143 -0
  140. data/{test/dummy → local/tr8n_server}/app/controllers/admin/admins_controller.rb +0 -0
  141. data/{test/dummy → local/tr8n_server}/app/controllers/admin/base_controller.rb +0 -0
  142. data/{test/dummy → local/tr8n_server}/app/controllers/admin/users_controller.rb +0 -0
  143. data/{test/dummy → local/tr8n_server}/app/controllers/application_controller.rb +5 -0
  144. data/{test/dummy → local/tr8n_server}/app/controllers/demo_controller.rb +0 -0
  145. data/local/tr8n_server/app/controllers/home_controller.rb +4 -0
  146. data/{test/dummy → local/tr8n_server}/app/controllers/login_controller.rb +1 -1
  147. data/{test/dummy → local/tr8n_server}/app/helpers/application_helper.rb +0 -0
  148. data/{test/dummy → local/tr8n_server}/app/helpers/home_helper.rb +0 -0
  149. data/{test/dummy → local/tr8n_server}/app/mailers/.gitkeep +0 -0
  150. data/{test/dummy → local/tr8n_server}/app/models/.gitkeep +0 -0
  151. data/{test/dummy → local/tr8n_server}/app/models/admin.rb +0 -0
  152. data/{test/dummy → local/tr8n_server}/app/models/admin_filter.rb +0 -0
  153. data/{test/dummy → local/tr8n_server}/app/models/user.rb +0 -0
  154. data/{test/dummy → local/tr8n_server}/app/views/admin/admins/index.html.erb +0 -0
  155. data/{test/dummy → local/tr8n_server}/app/views/admin/users/index.html.erb +0 -0
  156. data/{test/dummy → local/tr8n_server}/app/views/demo/index.rhtml +0 -0
  157. data/{test/dummy → local/tr8n_server}/app/views/demo/tokens.rhtml +0 -0
  158. data/{app/views/tr8n → local/tr8n_server/app/views}/home/index.html.erb +1 -2
  159. data/local/tr8n_server/app/views/kaminari/_first_page.html.erb +11 -0
  160. data/local/tr8n_server/app/views/kaminari/_gap.html.erb +8 -0
  161. data/local/tr8n_server/app/views/kaminari/_last_page.html.erb +11 -0
  162. data/local/tr8n_server/app/views/kaminari/_next_page.html.erb +11 -0
  163. data/local/tr8n_server/app/views/kaminari/_page.html.erb +12 -0
  164. data/local/tr8n_server/app/views/kaminari/_paginator.html.erb +23 -0
  165. data/local/tr8n_server/app/views/kaminari/_prev_page.html.erb +11 -0
  166. data/{test/dummy → local/tr8n_server}/app/views/layouts/_flashes.html.erb +0 -0
  167. data/{test/dummy → local/tr8n_server}/app/views/layouts/_footer.html.erb +3 -3
  168. data/{test/dummy → local/tr8n_server}/app/views/layouts/_header.html.erb +1 -1
  169. data/{test/dummy → local/tr8n_server}/app/views/layouts/admin.html.erb +0 -0
  170. data/{test/dummy → local/tr8n_server}/app/views/layouts/application.html.erb +0 -0
  171. data/local/tr8n_server/app/views/layouts/tr8n.html.erb +51 -0
  172. data/local/tr8n_server/app/views/layouts/tr8n_admin.html.erb +61 -0
  173. data/{test/dummy → local/tr8n_server}/app/views/login/index.html.erb +0 -0
  174. data/{test/dummy → local/tr8n_server}/app/views/login/register.html.erb +8 -13
  175. data/{test/dummy → local/tr8n_server}/config.ru +1 -1
  176. data/{test/dummy → local/tr8n_server}/config/application.rb +2 -1
  177. data/{test/dummy → local/tr8n_server}/config/boot.rb +0 -0
  178. data/{test/dummy → local/tr8n_server}/config/database.yml +0 -0
  179. data/{test/dummy → local/tr8n_server}/config/environment.rb +1 -1
  180. data/{test/dummy → local/tr8n_server}/config/environments/development.rb +3 -1
  181. data/{test/dummy → local/tr8n_server}/config/environments/production.rb +1 -1
  182. data/{test/dummy → local/tr8n_server}/config/environments/test.rb +1 -1
  183. data/{test/dummy → local/tr8n_server}/config/initializers/backtrace_silencers.rb +0 -0
  184. data/{test/dummy → local/tr8n_server}/config/initializers/inflections.rb +0 -0
  185. data/{test/dummy → local/tr8n_server}/config/initializers/mime_types.rb +0 -0
  186. data/{test/dummy → local/tr8n_server}/config/initializers/secret_token.rb +1 -1
  187. data/{test/dummy → local/tr8n_server}/config/initializers/session_store.rb +2 -2
  188. data/{test/dummy → local/tr8n_server}/config/initializers/wrap_parameters.rb +0 -0
  189. data/{test/dummy → local/tr8n_server}/config/locales/en.yml +0 -0
  190. data/{test/dummy → local/tr8n_server}/config/routes.rb +2 -2
  191. data/{test/dummy → local/tr8n_server}/config/tr8n/config.yml +40 -11
  192. data/{test/dummy → local/tr8n_server}/config/tr8n/data/ip_locations.csv +0 -0
  193. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_date_rules.yml +0 -0
  194. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_gender_list_rules.yml +0 -0
  195. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_gender_rules.yml +0 -0
  196. data/local/tr8n_server/config/tr8n/rules/default_language_cases.yml +272 -0
  197. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_list_rules.yml +0 -0
  198. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_numeric_rules.yml +0 -0
  199. data/{test/dummy → local/tr8n_server}/config/tr8n/rules/default_value_rules.yml +0 -0
  200. data/{test/dummy → local/tr8n_server}/config/tr8n/site/default_glossary.yml +0 -0
  201. data/{test/dummy → local/tr8n_server}/config/tr8n/site/default_languages.yml +0 -0
  202. data/{test/dummy → local/tr8n_server}/config/tr8n/site/features.yml +0 -0
  203. data/{test/dummy → local/tr8n_server}/config/tr8n/site/shortcuts.yml +0 -0
  204. data/{test/dummy → local/tr8n_server}/config/tr8n/site/sitemap.json +0 -0
  205. data/{test/dummy → local/tr8n_server}/config/tr8n/tokens/data.yml +2 -0
  206. data/{test/dummy → local/tr8n_server}/config/tr8n/tokens/decorations.yml +0 -0
  207. data/{test/dummy → local/tr8n_server}/config/will_filter/config.yml +0 -0
  208. data/{test/dummy → local/tr8n_server}/db/migrate/20101207014543_create_users.rb +0 -0
  209. data/{test/dummy → local/tr8n_server}/db/migrate/20110113223509_create_admins.rb +0 -0
  210. data/{test/dummy → local/tr8n_server}/db/migrate/20110930041143_create_will_filter_filters.rb +0 -0
  211. data/{test/dummy → local/tr8n_server}/db/migrate/20110930041150_create_tr8n_tables.rb +0 -0
  212. data/local/tr8n_server/db/migrate/20111003194443_create_tr8n_sync_tables.rb +22 -0
  213. data/local/tr8n_server/db/migrate/20111011013640_add_remote_id_to_tr8n_translators.rb +5 -0
  214. data/{test/dummy → local/tr8n_server}/db/schema.rb +15 -1
  215. data/{test/dummy → local/tr8n_server}/lib/assets/.gitkeep +0 -0
  216. data/{test/dummy → local/tr8n_server}/public/404.html +0 -0
  217. data/{test/dummy → local/tr8n_server}/public/422.html +0 -0
  218. data/{test/dummy → local/tr8n_server}/public/500.html +0 -0
  219. data/{test/dummy → local/tr8n_server}/public/favicon.ico +0 -0
  220. data/{test/dummy → local/tr8n_server}/script/rails +0 -0
  221. data/script/rails +1 -1
  222. data/spec/config/config_spec.rb +10 -0
  223. data/spec/fake_app.rb +50 -0
  224. data/spec/lib/data_token_spec.rb +26 -0
  225. data/spec/lib/transform_token_spec.rb +22 -0
  226. data/spec/models/translation_key_spec.rb +63 -0
  227. data/spec/spec_helper.rb +29 -0
  228. data/tr8n.gemspec +3 -1
  229. metadata +264 -245
  230. data/app/assets/images/tr8n/tr8n_logo.png +0 -0
  231. data/app/assets/images/tr8n/tr8n_logo2.gif +0 -0
  232. data/app/controllers/tr8n/login_controller.rb +0 -86
  233. data/app/views/layouts/_footer.html.erb +0 -15
  234. data/app/views/layouts/_header.html.erb +0 -12
  235. data/app/views/layouts/_html_head.html.erb +0 -5
  236. data/app/views/layouts/tr8n.html.erb +0 -21
  237. data/app/views/layouts/tr8n/application.html.erb +0 -14
  238. data/app/views/layouts/tr8n_admin.html.erb +0 -33
  239. data/app/views/tr8n/home/languages.html.erb +0 -7
  240. data/app/views/tr8n/login/index.html.erb +0 -33
  241. data/app/views/tr8n/login/register.html.erb +0 -57
  242. data/config/tr8n/rules/default_cases.yml +0 -141
  243. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/actions.css.scssc +0 -0
  244. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/buttons.css.scssc +0 -0
  245. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/calendar.css.scssc +0 -0
  246. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/exporter.css.scssc +0 -0
  247. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/filter.css.scssc +0 -0
  248. data/test/dummy/.sass-cache/32be4db30d38349a3a6e662df9bb5599dc8033b9/results.css.scssc +0 -0
  249. data/test/dummy/.sass-cache/3d45bab40fcae805deb2750a9342f5b355a9f2bf/components.css.scssc +0 -0
  250. data/test/dummy/.sass-cache/3d45bab40fcae805deb2750a9342f5b355a9f2bf/layout.css.scssc +0 -0
  251. data/test/dummy/.sass-cache/50f723c1dd802042d0091035528d53e6d5bc5b50/tr8n.css.scssc +0 -0
  252. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/actions.css.scssc +0 -0
  253. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/buttons.css.scssc +0 -0
  254. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/calendar.css.scssc +0 -0
  255. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/exporter.css.scssc +0 -0
  256. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/filter.css.scssc +0 -0
  257. data/test/dummy/.sass-cache/bce64928c8e2edcba72a647a44f05af1ff119c5d/results.css.scssc +0 -0
  258. data/test/dummy/app/assets/stylesheets/keyboard.css +0 -147
  259. data/test/dummy/config/tr8n/rules/default_cases.yml +0 -141
  260. data/test/dummy/log/.gitkeep +0 -0
  261. data/test/dummy/test/functional/home_controller_test.rb +0 -9
  262. data/test/dummy/test/unit/helpers/home_helper_test.rb +0 -4
  263. data/test/integration/navigation_test.rb +0 -10
  264. data/test/test_helper.rb +0 -10
  265. data/test/tr8n_test.rb +0 -7
Binary file
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <title><%=trl("Tr8n Engine Plugin", "Application title")%></title>
5
+ <%= stylesheet_link_tag("tr8n/layout") %>
6
+ <%= stylesheet_link_tag("tr8n/components") %>
7
+ <%= tr8n_scripts_tag %>
8
+ </head>
9
+ <body>
10
+ <div class="document">
11
+ <div class="page_head">
12
+ <div class="page_fixed">
13
+ <div class="mrgn_h">
14
+ <h1 class="logo"><%=tr("Tr8n Translation Engine", "Application title")%></h1>
15
+ </div>
16
+ </div>
17
+ </div>
18
+
19
+ <div class="page_fixed">
20
+ <%= tr8n_flashes_tag %>
21
+ </div>
22
+
23
+ <div class="page_fixed">
24
+ <div class="page_body">
25
+ <div class="content_module">
26
+ <div class="content_inner">
27
+ <%= yield %>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <div class="page_ft module quiet">
32
+ <ul class="flt_r right_horiz_list">
33
+ <li><%=link_to(tr("Home"), "/", :class => "quiet")%></li>
34
+ <li><%=link_to(tr("Languages"), "/tr8n/language/table", :class => "quiet")%></li>
35
+ <li><%=link_to(tr("Translator Tools"), "/tr8n/dashboard", :class => "quiet")%></li>
36
+ <li><%=link_to(tr("Administration Tools"), "/tr8n/admin/language", :class => "quiet")%></li>
37
+ <li><%=link_to(tr("Credits"), "/tr8n/help/credits", :class => "quiet")%></li>
38
+ <li><%=link_to(tr("License"), "/tr8n/help/license", :class => "quiet")%></li>
39
+ </ul>
40
+ &copy; Copyright 2010 - 2011 tr8n.net
41
+ </div>
42
+
43
+ <div style="padding:15px;">
44
+ <%= tr8n_language_strip_tag %>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </body>
49
+ </html>
@@ -0,0 +1,61 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <title><%=trl("Tr8n Engine Admin Tools", "Application title")%></title>
5
+ <%= stylesheet_link_tag("tr8n/layout") %>
6
+ <%= stylesheet_link_tag("tr8n/components") %>
7
+ <%= tr8n_scripts_tag %>
8
+ <style>
9
+ .page_fixed {
10
+ width:1200px;
11
+ }
12
+ .page_body {
13
+ width:1200px;
14
+ }
15
+
16
+ .wf_form {
17
+ width: 99.8%;
18
+ }
19
+ </style>
20
+ </head>
21
+ <body>
22
+ <div class="document">
23
+ <div class="page_head">
24
+ <div class="page_fixed">
25
+ <div class="mrgn_h">
26
+ <%= tr8n_translator_login_tag(:class => "flt_r horiz_list top_nav") %>
27
+ <h1 class="logo"><%=link_to(tr("Tr8n Translation Engine", "Application title"), {:controller => "/tr8n/home"}, :style=>"text-decorations:none;")%></h1>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="page_fixed">
33
+ <%= tr8n_flashes_tag %>
34
+ </div>
35
+ <div class="page_fixed">
36
+ <div class="page_body">
37
+ <div class="content_module">
38
+ <div class="content_inner">
39
+ <%= yield %>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <div class="page_ft module quiet">
44
+ <ul class="flt_r right_horiz_list">
45
+ <li><%=link_to(tr("Home"), "/tr8n/home", :class => "quiet")%></li>
46
+ <li><%=link_to(tr("Languages"), "/tr8n/language/table", :class => "quiet")%></li>
47
+ <li><%=link_to(tr("Translator Tools"), "/tr8n/dashboard", :class => "quiet")%></li>
48
+ <li><%=link_to(tr("Administration Tools"), "/tr8n/admin/language", :class => "quiet")%></li>
49
+ <li><%=link_to(tr("Credits"), "/tr8n/help/credits", :class => "quiet")%></li>
50
+ <li><%=link_to(tr("License"), "/tr8n/help/license", :class => "quiet")%></li>
51
+ </ul>
52
+ &copy; Copyright 2010 - 2011 tr8n.net
53
+ </div>
54
+
55
+ <div style="padding:15px;">
56
+ <%= tr8n_language_strip_tag %>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </body>
61
+ </html>
@@ -41,9 +41,16 @@ class Tr8nGenerator < Rails::Generators::Base
41
41
  end
42
42
 
43
43
  def create_migration_file
44
- migration_template 'create_tr8n_tables.rb', 'db/migrate/create_tr8n_tables.rb'
45
- source = File.expand_path('../../../../config/tr8n', __FILE__)
46
- target = "#{Rails.root}/config"
47
- system "rsync -ruv #{source} #{target}"
44
+ migration_template 'db/create_tr8n_tables.rb', 'db/migrate/create_tr8n_tables.rb'
45
+ end
46
+
47
+ def copy_configuration
48
+ config_source = File.expand_path('../../../../config/tr8n', __FILE__)
49
+ system "rsync -ruv #{config_source} #{Rails.root}/config"
50
+ end
51
+
52
+ def copy_layouts
53
+ layouts_source = File.expand_path("#{self.class.source_root}/layouts", __FILE__)
54
+ system "rsync -ruv #{layouts_source} #{Rails.root}/app/views"
48
55
  end
49
56
  end
@@ -85,4 +85,8 @@ namespace :tr8n do
85
85
  Tr8n::IpLocation.import_from_file('config/tr8n/data/ip_locations.csv', :verbose => true)
86
86
  end
87
87
 
88
+ desc "Downloads translations from tr8n.net"
89
+ task :sync => :environment do
90
+ Tr8n::SyncLog.sync
91
+ end
88
92
  end
@@ -21,19 +21,16 @@
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
  #++
23
23
 
24
- class Tr8n::HomeController < ApplicationController
25
-
26
- layout Tr8n::Config.site_info[:tr8n_layout]
27
-
28
- def index
29
-
30
- end
31
-
32
- def license
33
-
34
- end
35
-
36
- def credits
37
-
24
+ module Tr8n
25
+ module CacheAdapters
26
+ class Memcached
27
+ def fetch(key, options = {})
28
+ yield
29
+ end
30
+
31
+ def delete(key)
32
+ yield
33
+ end
34
+ end
38
35
  end
39
- end
36
+ end
@@ -65,6 +65,16 @@ module Tr8n
65
65
  return Tr8n::Language.new(:locale => default_locale) if disabled?
66
66
  @default_language ||= Tr8n::Language.for(default_locale) || Tr8n::Language.new(:locale => default_locale)
67
67
  end
68
+
69
+ # only one allowed per system
70
+ def self.system_translator
71
+ @system_translator ||= Tr8n::Translator.where(:level => system_level).first || Tr8n::Translator.create(:user_id => 0, :level => system_level)
72
+ end
73
+
74
+ # only one allowed per application
75
+ def self.application_translator_for(user)
76
+ Tr8n::Translator.where(:user_id => user.id, :level => application_level).first || Tr8n::Translator.create(:user_id => user.id, :level => application_level)
77
+ end
68
78
 
69
79
  def self.reset!
70
80
  # thread based variables
@@ -288,6 +298,10 @@ module Tr8n
288
298
  config[:api]
289
299
  end
290
300
 
301
+ def self.synchronization
302
+ config[:synchronization]
303
+ end
304
+
291
305
  #########################################################
292
306
  # Caching
293
307
  def self.enable_caching?
@@ -420,80 +434,71 @@ module Tr8n
420
434
  end
421
435
 
422
436
  def self.user_id(user)
423
- begin
424
- user.send(site_user_info[:methods][:id])
425
- rescue Exception => ex
426
- Tr8n::Logger.error("Failed to fetch user id: #{ex.to_s}")
427
- return 0
428
- end
437
+ return 0 unless user
438
+ user.send(site_user_info[:methods][:id])
439
+ rescue Exception => ex
440
+ Tr8n::Logger.error("Failed to fetch user id: #{ex.to_s}")
441
+ 0
429
442
  end
430
443
 
431
444
  def self.user_name(user)
432
- begin
433
- user.send(site_user_info[:methods][:name])
434
- rescue Exception => ex
435
- Tr8n::Logger.error("Failed to fetch #{user_class_name} name: #{ex.to_s}")
436
- return "Unknown user"
437
- end
445
+ return "Unknown user" unless user
446
+ user.send(site_user_info[:methods][:name])
447
+ rescue Exception => ex
448
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} name: #{ex.to_s}")
449
+ "Invalid user"
438
450
  end
439
451
 
440
452
  def self.user_gender(user)
441
- begin
442
- user.send(site_user_info[:methods][:gender])
443
- rescue Exception => ex
444
- Tr8n::Logger.error("Failed to fetch #{user_class_name} name: #{ex.to_s}")
445
- return "unknown"
446
- end
453
+ return "unknown" unless user
454
+ user.send(site_user_info[:methods][:gender])
455
+ rescue Exception => ex
456
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} name: #{ex.to_s}")
457
+ "unknown"
447
458
  end
448
459
 
449
460
  def self.user_mugshot(user)
450
- begin
451
- user.send(site_user_info[:methods][:mugshot])
452
- rescue Exception => ex
453
- Tr8n::Logger.error("Failed to fetch #{user_class_name} image: #{ex.to_s}")
454
- return silhouette_image
455
- end
461
+ return silhouette_image unless user
462
+ user.send(site_user_info[:methods][:mugshot])
463
+ rescue Exception => ex
464
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} image: #{ex.to_s}")
465
+ silhouette_image
456
466
  end
457
467
 
458
468
  def self.user_link(user)
459
- begin
460
- user.send(site_user_info[:methods][:link])
461
- rescue Exception => ex
462
- Tr8n::Logger.error("Failed to fetch #{user_class_name} link: #{ex.to_s}")
463
- return "/tr8n"
464
- end
469
+ return "/tr8n" unless user
470
+ user.send(site_user_info[:methods][:link])
471
+ rescue Exception => ex
472
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} link: #{ex.to_s}")
473
+ "/tr8n"
465
474
  end
466
475
 
467
476
  def self.user_locale(user)
468
- begin
469
- user.send(site_user_info[:methods][:locale])
470
- rescue Exception => ex
471
- Tr8n::Logger.error("Failed to fetch #{user_class_name} locale: #{ex.to_s}")
472
- return default_locale
473
- end
477
+ return default_locale unless user
478
+ user.send(site_user_info[:methods][:locale])
479
+ rescue Exception => ex
480
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} locale: #{ex.to_s}")
481
+ default_locale
474
482
  end
475
483
 
476
- def self.admin_user?(user = current_user)
477
- begin
478
- user.send(site_user_info[:methods][:admin])
479
- rescue Exception => ex
480
- Tr8n::Logger.error("Failed to fetch #{user_class_name} admin flag: #{ex.to_s}")
481
- return false
482
- end
484
+ def self.admin_user?(user = Tr8n::Config.current_user)
485
+ return false unless user
486
+ user.send(site_user_info[:methods][:admin])
487
+ rescue Exception => ex
488
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} admin flag: #{ex.to_s}")
489
+ false
483
490
  end
484
491
 
485
492
  def self.current_user_is_admin?
486
493
  admin_user?
487
494
  end
488
495
 
489
- def self.guest_user?(user = current_user)
496
+ def self.guest_user?(user = Tr8n::Config.current_user)
490
497
  return true unless user
491
- begin
492
- user.send(site_user_info[:methods][:guest])
493
- rescue Exception => ex
494
- Tr8n::Logger.error("Failed to fetch #{user_class_name} guest flag: #{ex.to_s}")
495
- return true
496
- end
498
+ user.send(site_user_info[:methods][:guest])
499
+ rescue Exception => ex
500
+ Tr8n::Logger.error("Failed to fetch #{user_class_name} guest flag: #{ex.to_s}")
501
+ true
497
502
  end
498
503
 
499
504
  def self.current_user_is_guest?
@@ -503,6 +508,10 @@ module Tr8n
503
508
  def self.silhouette_image
504
509
  "/assets/tr8n/photo_silhouette.gif"
505
510
  end
511
+
512
+ def self.system_image
513
+ "/assets/tr8n/photo_system.gif"
514
+ end
506
515
 
507
516
  #########################################################
508
517
  # rules engine
@@ -623,8 +632,8 @@ module Tr8n
623
632
  load_default_rules("value", locale)
624
633
  end
625
634
 
626
- def self.default_cases_for(locale = default_locale)
627
- @default_cases ||= load_yml("/config/tr8n/rules/default_cases.yml", nil)
635
+ def self.default_language_cases_for(locale = default_locale)
636
+ @default_cases ||= load_yml("/config/tr8n/rules/default_language_cases.yml", nil)
628
637
  return [] unless @default_cases[locale.to_s]
629
638
  @default_cases[locale.to_s].values
630
639
  end
@@ -702,6 +711,14 @@ module Tr8n
702
711
  10000
703
712
  end
704
713
 
714
+ def self.application_level
715
+ 100000
716
+ end
717
+
718
+ def self.system_level
719
+ 1000000
720
+ end
721
+
705
722
  def self.default_translation_key_level
706
723
  config[:default_translation_key_level] || 0
707
724
  end
@@ -716,6 +733,32 @@ module Tr8n
716
733
  def self.enable_client_sdk?
717
734
  config[:enable_client_sdk]
718
735
  end
719
-
736
+
737
+ #########################################################
738
+ # Sync Process
739
+ #########################################################
740
+ def self.synchronization_batch_size
741
+ synchronization[:batch_size]
742
+ end
743
+
744
+ def self.synchronization_server
745
+ synchronization[:server]
746
+ end
747
+
748
+ def self.synchronization_key
749
+ synchronization[:key]
750
+ end
751
+
752
+ def self.synchronization_secret
753
+ synchronization[:secret]
754
+ end
755
+
756
+ def self.synchronization_create_rules?
757
+ synchronization[:create_rules]
758
+ end
759
+
760
+ def self.synchronization_all_languages?
761
+ synchronization[:all_languages]
762
+ end
720
763
  end
721
764
  end
@@ -74,7 +74,7 @@ module Tr8n
74
74
  session[:locale] = params[:locale] if params[:locale]
75
75
  tr8n_current_locale = session[:locale]
76
76
  end
77
-
77
+
78
78
  tr8n_current_user = nil
79
79
  if Tr8n::Config.site_user_info_enabled?
80
80
  begin
@@ -324,34 +324,6 @@ module Tr8n
324
324
  end
325
325
  end
326
326
 
327
- def tr8n_will_paginate(collection = nil, options = {})
328
- will_paginate(collection, options.merge(:previous_label => tr("&laquo; Previous", "Previous entries in a list", {}, options),
329
- :next_label => tr("Next &raquo;", "Next entries in a list", {}, options))).html_safe
330
- end
331
-
332
- def tr8n_page_entries_info(collection, options = {})
333
- entry_name = options[:entry_name] || (collection.empty? ? 'entry' : collection.first.class.name.underscore.sub('_', ' '))
334
-
335
- if collection.total_pages < 2
336
- case collection.size
337
- when 0
338
- tr("None found", "Paginator no entries message", {}, options)
339
- when 1
340
- tr("Displaying [bold: 1] #{entry_name}", "Paginator one page message", {}, options)
341
- else
342
- tr("Displaying [bold: all {count}] #{entry_name.pluralize}", "Paginator all entries message", {:count => collection.size}, options)
343
- end
344
- else
345
- tr("Displaying #{entry_name.pluralize} [bold: {start_num} - {end_num}] of [bold: {total_count}] in total",
346
- "Paginator custom message", {
347
- :start_num => collection.offset + 1,
348
- :end_num => collection.offset + collection.length,
349
- :total_count => collection.total_entries
350
- }, options
351
- )
352
- end
353
- end
354
-
355
327
  def tr8n_select_month(date, options = {}, html_options = {})
356
328
  month_names = options[:use_short_month] ? Tr8n::Config.default_abbr_month_names : Tr8n::Config.default_month_names
357
329
  select_month(date, options.merge(
@@ -372,6 +344,10 @@ module Tr8n
372
344
  link_to_function("<span>#{label}</span>".html_safe, function, :class => "tr8n_grey_button tr8n_pcb")
373
345
  end
374
346
 
347
+ def tr8n_paginator_tag(collection, options)
348
+ render :partial => "/tr8n/common/paginator", :locals => {:collection => collection, :options => options}
349
+ end
350
+
375
351
  private
376
352
 
377
353
  def generate_sitemap(sections, options = {})