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
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -38,7 +38,7 @@ class Tr8n::TranslationSource < ActiveRecord::Base
38
38
  def self.find_or_create(source, url)
39
39
  translation_domain = Tr8n::TranslationDomain.find_or_create(url)
40
40
  Tr8n::Cache.fetch("translation_source_#{translation_domain.id}_#{source}") do
41
- translation_source = find(:first, :conditions => ["source = ? and translation_domain_id = ?", source, translation_domain.id])
41
+ translation_source = where("source = ? and translation_domain_id = ?", source, translation_domain.id).first
42
42
  translation_source ||= create(:source => source, :translation_domain => translation_domain)
43
43
  translation_source.update_attributes(:translation_domain => translation_domain) unless translation_source.translation_domain
44
44
  translation_source
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -28,9 +28,8 @@ class Tr8n::TranslationVote < ActiveRecord::Base
28
28
  belongs_to :translator, :class_name => "Tr8n::Translator"
29
29
 
30
30
  def self.find_or_create(translation, translator)
31
- vote = find(:first, :conditions => ["translation_id = ? and translator_id = ?", translation.id, translator.id])
32
- vote = create(:translation => translation, :translator => translator, :vote => 0) unless vote
33
- vote
31
+ vote = where("translation_id = ? and translator_id = ?", translation.id, translator.id).first
32
+ vote ||= create(:translation => translation, :translator => translator, :vote => 0)
34
33
  end
35
34
 
36
35
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -53,7 +53,7 @@ class Tr8n::Translator < ActiveRecord::Base
53
53
  end
54
54
 
55
55
  def self.find_or_create(user)
56
- trn = find(:first, :conditions => ["user_id = ?", user.id])
56
+ trn = where(:user_id => user.id).first
57
57
  trn = create(:user => user) unless trn
58
58
  trn
59
59
  end
@@ -62,7 +62,7 @@ class Tr8n::Translator < ActiveRecord::Base
62
62
  return unless user
63
63
 
64
64
  translator = Tr8n::Translator.find_or_create(user)
65
- Tr8n::LanguageUser.find(:all, :conditions => ["user_id = ?", user.id]).each do |lu|
65
+ Tr8n::LanguageUser.where(:user_id => user.id).each do |lu|
66
66
  lu.update_attributes(:translator => translator)
67
67
  end
68
68
  translator
@@ -195,11 +195,21 @@ class Tr8n::Translator < ActiveRecord::Base
195
195
  false
196
196
  end
197
197
 
198
+ def system?
199
+ level == Tr8n::Config.system_level
200
+ end
201
+
202
+ def application?
203
+ level == Tr8n::Config.application_level
204
+ end
205
+
198
206
  def last_logs
199
- Tr8n::TranslatorLog.find(:all, :conditions => ["translator_id = ?", self.id], :order => "created_at desc", :limit => 20)
207
+ Tr8n::TranslatorLog.where("translator_id = ?", self.id).order("created_at desc").limit(20)
200
208
  end
201
209
 
202
210
  def name
211
+ return "Tr8n Network" if system?
212
+
203
213
  unless Tr8n::Config.site_user_info_enabled?
204
214
  translator_name = super
205
215
  return translator_name unless translator_name.blank?
@@ -214,6 +224,8 @@ class Tr8n::Translator < ActiveRecord::Base
214
224
  end
215
225
 
216
226
  def gender
227
+ return "unknown" if system?
228
+
217
229
  unless Tr8n::Config.site_user_info_enabled?
218
230
  translator_gender = super
219
231
  return translator_gender unless translator_gender.blank?
@@ -224,6 +236,8 @@ class Tr8n::Translator < ActiveRecord::Base
224
236
  end
225
237
 
226
238
  def mugshot
239
+ return Tr8n::Config.system_image if system?
240
+
227
241
  return super unless Tr8n::Config.site_user_info_enabled?
228
242
  return Tr8n::Config.silhouette_image unless user
229
243
  img_url = Tr8n::Config.user_mugshot(user)
@@ -268,7 +282,7 @@ class Tr8n::Translator < ActiveRecord::Base
268
282
  end
269
283
 
270
284
  def unfollow(object)
271
- tf = Tr8n::TranslatorFollowing.find(:first, :conditions => ["object_type = ? and object_id = ?", object.class.name, object.id])
285
+ tf = Tr8n::TranslatorFollowing.where("object_type = ? and object_id = ?", object.class.name, object.id).first
272
286
  tf.destroy if tf
273
287
  end
274
288
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ class Tr8n::TranslatorFollowing < ActiveRecord::Base
32
32
  end
33
33
 
34
34
  def self.following_for(translator, object)
35
- find(:first, :conditions => ["translator_id = ? and object_type = ? and object_id = ?", translator.id, object.class.name, object.id])
35
+ where("translator_id = ? and object_type = ? and object_id = ?", translator.id, object.class.name, object.id).first
36
36
  end
37
37
 
38
38
  end
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -27,30 +27,25 @@ class Tr8n::TranslatorMetric < ActiveRecord::Base
27
27
  belongs_to :translator, :class_name => "Tr8n::Translator"
28
28
  belongs_to :language, :class_name => "Tr8n::Language"
29
29
 
30
- def self.find_or_create(translator, language)
31
- if language
32
- tm = find(:first, :conditions => ["translator_id = ? and language_id = ?", translator.id, language.id])
33
- else
34
- tm = find(:first, :conditions => ["translator_id = ? and language_id is null", translator.id])
35
- end
30
+ def self.find_or_create(translator, language = nil)
31
+ tm = where("translator_id = ?", translator.id)
32
+ tm = where("language_id = ?", language.id) if language
33
+ return tm.first if tm.first
36
34
 
37
- return tm if tm
38
35
  create(:translator => translator, :language => language, :total_translations => 0, :total_votes => 0, :positive_votes => 0, :negative_votes => 0)
39
36
  end
40
37
 
41
38
  # updated when an action is done by the translator
42
39
  def update_metrics!
43
40
  if language
44
- self.total_translations = Tr8n::Translation.count(:conditions=>["translator_id = ? and language_id = ?", translator.id, language.id])
45
- self.total_votes = Tr8n::TranslationVote.count(:conditions=>["tr8n_translation_votes.translator_id = ? and tr8n_translations.language_id = ?", translator.id, language.id],
46
- :joins => "INNER JOIN tr8n_translations ON tr8n_translations.id = tr8n_translation_votes.translation_id")
47
- self.positive_votes = Tr8n::TranslationVote.count(:conditions=>["tr8n_translation_votes.translator_id = ? and tr8n_translation_votes.vote > 0 and tr8n_translations.language_id = ?", translator.id, language.id],
48
- :joins => "INNER JOIN tr8n_translations ON tr8n_translations.id = tr8n_translation_votes.translation_id")
41
+ self.total_translations = Tr8n::Translation.where("translator_id = ? and language_id = ?", translator.id, language.id).count
42
+ self.total_votes = Tr8n::TranslationVote.where("tr8n_translation_votes.translator_id = ? and tr8n_translations.language_id = ?", translator.id, language.id).joins(:translation).count
43
+ self.positive_votes = Tr8n::TranslationVote.where("tr8n_translation_votes.translator_id = ? and tr8n_translation_votes.vote > 0 and tr8n_translations.language_id = ?", translator.id, language.id).joins(:translation).count
49
44
  self.negative_votes = self.total_votes - self.positive_votes
50
45
  else
51
- self.total_translations = Tr8n::Translation.count(:conditions=>["translator_id = ?", translator.id])
52
- self.total_votes = Tr8n::TranslationVote.count(:conditions=>["translator_id = ?", translator.id])
53
- self.positive_votes = Tr8n::TranslationVote.count(:conditions=>["translator_id = ? and vote > 0", translator.id])
46
+ self.total_translations = Tr8n::Translation.where("translator_id = ?", translator.id).count
47
+ self.total_votes = Tr8n::TranslationVote.where("translator_id = ?", translator.id).count
48
+ self.positive_votes = Tr8n::TranslationVote.where("translator_id = ? and vote > 0", translator.id).count
54
49
  self.negative_votes = self.total_votes - self.positive_votes
55
50
  end
56
51
 
@@ -60,11 +55,11 @@ class Tr8n::TranslatorMetric < ActiveRecord::Base
60
55
  # updated when an action is done to the translator's translations
61
56
  def update_rank!
62
57
  if language
63
- self.accepted_translations = Tr8n::Translation.count(:conditions => ["translator_id = ? and language_id = ? and rank >= ?", translator.id, language.id, Tr8n::Config.translation_threshold])
64
- self.rejected_translations = Tr8n::Translation.count(:conditions => ["translator_id = ? and language_id = ? and rank < ?", translator.id, language.id, 0])
58
+ self.accepted_translations = Tr8n::Translation.where("translator_id = ? and language_id = ? and rank >= ?", translator.id, language.id, Tr8n::Config.translation_threshold).count
59
+ self.rejected_translations = Tr8n::Translation.where("translator_id = ? and language_id = ? and rank < ?", translator.id, language.id, 0).count
65
60
  else
66
- self.accepted_translations = Tr8n::Translation.count(:conditions => ["translator_id = ? and rank >= ?", translator.id, Tr8n::Config.translation_threshold])
67
- self.rejected_translations = Tr8n::Translation.count(:conditions => ["translator_id = ? and rank < ?", translator.id, 0])
61
+ self.accepted_translations = Tr8n::Translation.where("translator_id = ? and rank >= ?", translator.id, Tr8n::Config.translation_threshold).count
62
+ self.rejected_translations = Tr8n::Translation.where("translator_id = ? and rank < ?", translator.id, 0).count
68
63
  end
69
64
 
70
65
  save
@@ -72,7 +67,6 @@ class Tr8n::TranslatorMetric < ActiveRecord::Base
72
67
 
73
68
  def rank
74
69
  return 0 unless total_translations and accepted_translations
75
-
76
70
  total_translations == 0 ? 0 : (accepted_translations * 100.0/total_translations)
77
71
  end
78
72
 
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -32,7 +32,7 @@ class Tr8n::TranslatorReport < ActiveRecord::Base
32
32
  end
33
33
 
34
34
  def self.report_for(translator, object)
35
- find(:first, :conditions => ["translator_id = ? and object_type = ? and object_id = ?", translator.id, object.class.name, object.id])
35
+ self.where("translator_id = ? and object_type = ? and object_id = ?", translator.id, object.class.name, object.id).first
36
36
  end
37
37
 
38
38
  def self.title_for(object)
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,5 +1,5 @@
1
1
  #--
2
- # Copyright (c) 2010-2011 Michael Berkovich
2
+ # Copyright (c) 2010-2011 Michael Berkovich, tr8n.net
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining
5
5
  # a copy of this software and associated documentation files (the
@@ -1,20 +1,32 @@
1
- <div>
2
- <table style="font-size:12px;width:100%; margin-top:10px; margin-bottom:10px;">
1
+ <div style="padding-bottom:10px;padding-top:5px;">
2
+ <table style="width:100%;">
3
3
  <tr>
4
- <td style="text-align:left; vertical-align:top;font-size:11px; font-family:arial;"><%= tr8n_will_paginate(objects) %></td>
5
- <%
6
- entry_name = ""
7
- if objects.any?
8
- obj_name = objects.first.class.name.underscore
9
- if obj_name.index("/")
10
- entry_name = obj_name.split("/").last
11
- else
12
- entry_name = obj_name
13
- end
14
- entry_name.gsub!("_", " ")
15
- end
16
- %>
17
- <td style="text-align:right; vertical-align:top;font-size:11px; font-family:arial;"><%= tr8n_page_entries_info(objects, :entry_name => entry_name.downcase) %></td>
4
+ <td style="text-align:left; vertical-align:top;font-size:11px; font-family:arial;">
5
+ <%
6
+ entry_name = options[:subject] || (collection.empty? ? 'entry' : collection.first.class.name.underscore.gsub('_', ' '))
7
+ output = ""
8
+ if collection.num_pages < 2
9
+ case collection.size
10
+ when 0
11
+ output = tr("None found", "Paginator message", {}, options)
12
+ when 1
13
+ output = tr("Displaying [bold: 1] #{entry_name}", "Paginator message", {}, options)
14
+ else
15
+ output = tr("Displaying [bold: all {count}] #{entry_name.pluralize}", "Paginator message", {:count => collection.size}, options)
16
+ end
17
+ else
18
+ output = tr("Displaying #{entry_name.pluralize} [bold: {start_num} - {end_num}] of [bold: {total_count}] in total",
19
+ "Paginator message", {
20
+ :start_num => collection.offset_num + 1,
21
+ :end_num => collection.offset_num + collection.length,
22
+ :total_count => collection.total_num
23
+ }, options
24
+ )
25
+ end
26
+ %>
27
+ <%= output %>
28
+ </td>
29
+ <td style="text-align:right; vertical-align:top; font-size:11px; font-family:arial;"><%= paginate(collection) %></td>
18
30
  </tr>
19
31
  </table>
20
- </div>
32
+ </div>
@@ -3,7 +3,9 @@
3
3
  current_tab ||= ""
4
4
  [["Translation Keys", {:action => :index}],
5
5
  ["Comments", {:action => :comments}],
6
- ["Locks", {:action => :locks}]].each do |link|
6
+ ["Locks", {:action => :locks}],
7
+ ["Sync Logs", {:action => :sync_logs}]
8
+ ].each do |link|
7
9
  if controller.action_name == link.last[:action].to_s
8
10
  current_tab = link.first if current_tab.blank?
9
11
  links << link.first
@@ -0,0 +1,5 @@
1
+ <%= render :partial => "/tr8n/admin/common/header" %>
2
+ <%= render :partial => "tabs" %>
3
+ <%= tr8n_will_filter(@logs) %>
4
+
5
+ <%= will_filter_table_tag(@logs) %>
@@ -4,13 +4,11 @@
4
4
 
5
5
  <div class="section_title">
6
6
  <div style="float:right; font-size:12px; padding-top:5px;">
7
- <% unless tr8n_current_language.default? %>
8
7
  <% if params[:mode] == "all" %>
9
8
  <%=link_to(tra("Awards for {language} Language", 'Awards section header', :language => tr8n_current_language.native_name), :mode => :current) %>
10
9
  <% else %>
11
10
  <%=link_to(tra("Awards for All Languages", 'Awards section header'), :mode => :all) %>
12
11
  <% end %>
13
- <% end %>
14
12
  </div>
15
13
 
16
14
  <% if params[:mode] == "all" %>
@@ -2,13 +2,31 @@
2
2
  <table style="width:100%;">
3
3
  <tr>
4
4
  <td style="text-align:left; vertical-align:top;font-size:11px; font-family:arial;">
5
- <% if objects.total_count > 0 %>
6
- Showing <%= objects.offset_value + 1 %> - <%= objects.offset_value + objects.length %> of <%= objects.total_count %>
7
- <% else %>
8
- No results found
9
- <% end %>
5
+ <%
6
+ entry_name = options[:subject] || (collection.empty? ? 'entry' : collection.first.class.name.underscore.gsub('_', ' '))
7
+ output = ""
8
+ if collection.num_pages < 2
9
+ case collection.size
10
+ when 0
11
+ output = tr("None found", "Paginator message", {}, options)
12
+ when 1
13
+ output = tr("Displaying [bold: 1] #{entry_name}", "Paginator message", {}, options)
14
+ else
15
+ output = tr("Displaying [bold: all {count}] #{entry_name.pluralize}", "Paginator message", {:count => collection.size}, options)
16
+ end
17
+ else
18
+ output = tr("Displaying #{entry_name.pluralize} [bold: {start_num} - {end_num}] of [bold: {total_count}] in total",
19
+ "Paginator message", {
20
+ :start_num => collection.offset_value + 1,
21
+ :end_num => collection.offset_value + collection.length,
22
+ :total_count => collection.total_count
23
+ }, options
24
+ )
25
+ end
26
+ %>
27
+ <%= output %>
10
28
  </td>
11
- <td style="text-align:right; vertical-align:top; font-size:11px; font-family:arial;"><%= paginate(objects) %></td>
29
+ <td style="text-align:right; vertical-align:top; font-size:11px; font-family:arial;"><%= paginate(collection) %></td>
12
30
  </tr>
13
31
  </table>
14
32
  </div>
@@ -1,11 +1,15 @@
1
1
  <div class="translations_navigation">
2
2
  <div style="font-size:22px; font-weight: bold;padding-bottom:15px;">
3
3
  <%=tra("Translation Tools", "Tabs header") %>
4
- <% unless tr8n_current_language.default? %>
5
- - <%=tra("{language} Language", nil, :language => tr8n_current_language.native_name)%>
6
- <% if tr8n_current_user_is_manager? %>
7
- <%=link_to(tra("manage", "Link to management section"), "/tr8n/language", :style => "font-size:12px;")%>
8
- <% end %>
4
+ - <%=tra("{language} Language", nil, :language => tr8n_current_language.native_name)%>
5
+ <% if tr8n_current_language.default? %>
6
+ <% if tr8n_current_user_is_admin? %>
7
+ <%=link_to(tra("manage", "Link to management section"), "/tr8n/language", :style => "font-size:12px;")%>
8
+ <% end %>
9
+ <% else %>
10
+ <% if tr8n_current_user_is_manager? %>
11
+ <%=link_to(tra("manage", "Link to management section"), "/tr8n/language", :style => "font-size:12px;")%>
12
+ <% end %>
9
13
  <% end %>
10
14
  </div>
11
15
 
@@ -1,5 +1,5 @@
1
1
  <div class="section">
2
- <%= tr8n_paginator_tag(@messages, 'message') %>
2
+ <%= tr8n_paginator_tag(@messages, :subject => 'message') %>
3
3
 
4
4
  <table style="width:100%; ">
5
5
  <% @messages.each do |message| %>
@@ -68,7 +68,7 @@
68
68
  <% end %>
69
69
  </table>
70
70
 
71
- <%= tr8n_paginator_tag(@topics, 'forum topic') %>
71
+ <%= tr8n_paginator_tag(@topics, :subject => 'forum topic') %>
72
72
  </div>
73
73
  <% end %>
74
74
 
@@ -15,7 +15,7 @@
15
15
  </div>
16
16
 
17
17
  <div class="section">
18
- <%= render :partial => "/tr8n/common/paginator", :locals => {:objects => @terms, :subject => 'term'} %>
18
+ <%= tr8n_paginator_tag(@terms, :subject => 'term') %>
19
19
 
20
20
  <table style="width:100%">
21
21
  <tr style="border-bottom:1px solid #ccc;">
@@ -34,7 +34,7 @@
34
34
  <% end %>
35
35
  </table>
36
36
 
37
- <%= render :partial => "/tr8n/common/paginator", :locals => {:objects => @terms, :subject => 'term'} %>
37
+ <%= tr8n_paginator_tag(@terms, :subject => 'term') %>
38
38
  </div>
39
39
 
40
40
  <%= render :partial => "/tr8n/common/footer" %>