lit 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +5 -13
  2. data/README.md +93 -12
  3. data/Rakefile +1 -0
  4. data/app/assets/javascripts/lit/application.js +1 -2
  5. data/app/assets/javascripts/lit/{bootstrap.js.coffee → backend/bootstrap.js.coffee} +0 -0
  6. data/app/assets/javascripts/lit/{dashboard.js → backend/dashboard.js} +0 -0
  7. data/app/assets/javascripts/lit/{jquery-te-1.4.0.min.js → backend/jquery-te-1.4.0.min.js} +0 -0
  8. data/app/assets/javascripts/lit/{localizations.js.coffee → backend/localizations.js.coffee} +2 -0
  9. data/app/assets/javascripts/lit/backend/sources.js.coffee +24 -0
  10. data/app/assets/javascripts/lit/lit_frontend.js +103 -0
  11. data/app/assets/javascripts/lit/mousetrap.js +1044 -0
  12. data/app/assets/stylesheets/lit/application.css +7 -1
  13. data/app/assets/stylesheets/lit/{jquery-te-1.4.0.css.scss → backend/jquery-te-1.4.0.css.scss} +0 -0
  14. data/app/assets/stylesheets/lit/lit_frontend.css +86 -0
  15. data/app/controllers/lit/api/v1/base_controller.rb +1 -1
  16. data/app/controllers/lit/application_controller.rb +7 -3
  17. data/app/controllers/lit/concerns/request_info_store.rb +16 -0
  18. data/app/controllers/lit/concerns/request_keys_store.rb +16 -0
  19. data/app/controllers/lit/incomming_localizations_controller.rb +2 -2
  20. data/app/controllers/lit/locales_controller.rb +1 -1
  21. data/app/controllers/lit/localization_keys_controller.rb +22 -9
  22. data/app/controllers/lit/localizations_controller.rb +19 -6
  23. data/app/controllers/lit/sources_controller.rb +11 -1
  24. data/app/helpers/lit/frontend_helper.rb +71 -0
  25. data/app/helpers/lit/localization_keys_helper.rb +5 -0
  26. data/app/helpers/lit/sources_helper.rb +3 -0
  27. data/app/jobs/lit/synchronize_source_job.rb +11 -0
  28. data/app/models/lit/localization.rb +17 -10
  29. data/app/models/lit/localization_key.rb +6 -2
  30. data/app/models/lit/source.rb +4 -3
  31. data/app/views/layouts/lit/application.html.erb +6 -6
  32. data/app/views/lit/incomming_localizations/index.html.erb +22 -17
  33. data/app/views/lit/localization_keys/_localization_row.html.erb +1 -1
  34. data/app/views/lit/localization_keys/index.html.erb +27 -8
  35. data/app/views/lit/localizations/_form.html.erb +5 -5
  36. data/app/views/lit/localizations/_previous_versions_rows.html.erb +1 -1
  37. data/app/views/lit/localizations/edit.js.erb +2 -2
  38. data/app/views/lit/localizations/previous_versions.js.erb +1 -1
  39. data/app/views/lit/localizations/update.js.erb +2 -2
  40. data/config/routes.rb +12 -12
  41. data/db/migrate/20180101010101_lit_create_lit_locales.rb +16 -0
  42. data/db/migrate/20180101010102_lit_create_lit_localization_keys.rb +18 -0
  43. data/db/migrate/20180101010103_lit_create_lit_localizations.rb +24 -0
  44. data/db/migrate/20180101010104_lit_add_is_completed_and_is_starred_to_localization_keys.rb +17 -0
  45. data/db/migrate/20180101010105_lit_add_is_hidden_to_locales.rb +12 -0
  46. data/db/migrate/20180101010106_lit_create_lit_localization_versions.rb +20 -0
  47. data/db/migrate/20180101010107_lit_create_lit_sources.rb +19 -0
  48. data/db/migrate/20180101010108_lit_create_lit_incomming_localizations.rb +34 -0
  49. data/db/migrate/20180101010109_lit_add_sync_complete_to_lit_sources.rb +12 -0
  50. data/lib/generators/lit/install/templates/initializer.rb +17 -6
  51. data/lib/generators/lit/install_generator.rb +0 -7
  52. data/lib/lit.rb +15 -8
  53. data/lib/lit/adapters/hash_storage.rb +4 -0
  54. data/lib/lit/adapters/redis_storage.rb +9 -3
  55. data/lib/lit/cache.rb +126 -70
  56. data/lib/lit/engine.rb +20 -1
  57. data/lib/lit/i18n_backend.rb +66 -26
  58. data/lib/lit/version.rb +1 -1
  59. data/lib/tasks/lit_tasks.rake +21 -3
  60. metadata +67 -43
  61. data/app/assets/stylesheets/lit/dashboard.css +0 -4
  62. data/config/database.yml +0 -8
  63. data/db/migrate/20121103144612_create_lit_locales.rb +0 -9
  64. data/db/migrate/20121103174049_create_lit_localization_keys.rb +0 -10
  65. data/db/migrate/20121103182106_create_lit_localizations.rb +0 -15
  66. data/db/migrate/20121225112100_add_is_completed_and_is_starred_to_localization_keys.rb +0 -6
  67. data/db/migrate/20130511111904_add_is_hidden_to_locales.rb +0 -5
  68. data/db/migrate/20130921071304_create_lit_localization_versions.rb +0 -11
  69. data/db/migrate/20130923162141_create_lit_sources.rb +0 -12
  70. data/db/migrate/20130924151910_create_lit_incomming_localizations.rb +0 -21
@@ -6,7 +6,10 @@ module Lit
6
6
  ## SCOPES
7
7
  scope :changed, proc { where(is_changed: true) }
8
8
  # @HACK: dirty, find a way to round date to full second
9
- scope :after, proc { |dt| where('updated_at >= ?', dt + 1.second) }
9
+ scope :after, proc { |dt|
10
+ where('updated_at >= ?', dt + 1.second)
11
+ .where('is_changed = true')
12
+ }
10
13
 
11
14
  ## ASSOCIATIONS
12
15
  belongs_to :locale
@@ -25,7 +28,7 @@ module Lit
25
28
 
26
29
  ## BEFORE & AFTER
27
30
  with_options if: :translated_value_changed? do |o|
28
- o.before_update :update_is_changed_attribute
31
+ o.before_update :update_should_mark_localization_key_completed
29
32
  o.before_update :create_version
30
33
  end
31
34
  after_update :mark_localization_key_completed
@@ -39,7 +42,7 @@ module Lit
39
42
  end
40
43
 
41
44
  def get_value
42
- (is_changed? && (!translated_value.nil?)) ? translated_value : default_value
45
+ is_changed? && !translated_value.nil? ? translated_value : default_value
43
46
  end
44
47
 
45
48
  def value
@@ -60,21 +63,25 @@ module Lit
60
63
 
61
64
  def update_default_value(value)
62
65
  return true if persisted? && default_value == value
63
- self.default_value = value
64
- self.save!
66
+ if persisted?
67
+ update_column(:default_value, value)
68
+ else
69
+ self.default_value = value
70
+ save!
71
+ end
65
72
  end
66
73
 
67
74
  private
68
75
 
69
- def update_is_changed_attribute
70
- return if attributes['is_changed'] == true
71
-
72
- self[:is_changed] = true
76
+ def update_should_mark_localization_key_completed
77
+ return if translated_value == translated_value_was
73
78
  @should_mark_localization_key_completed = true
74
79
  end
75
80
 
76
81
  def mark_localization_key_completed
77
- localization_key.mark_completed! if @should_mark_localization_key_completed
82
+ return if !instance_variable_defined?(:@should_mark_localization_key_completed) || \
83
+ @should_mark_localization_key_completed
84
+ localization_key.mark_completed!
78
85
  end
79
86
 
80
87
  def create_version
@@ -7,7 +7,11 @@ module Lit
7
7
  scope :not_completed, proc { where(is_completed: false) }
8
8
  scope :starred, proc { where(is_starred: true) }
9
9
  scope :ordered, proc { order('localization_key asc') }
10
- scope :after, proc { |dt| where('updated_at >= ?', dt) }
10
+ scope :after, proc { |dt|
11
+ joins(:localizations)
12
+ .where('lit_localization_keys.updated_at >= ?', dt)
13
+ .where('lit_localizations.is_changed = true')
14
+ }
11
15
 
12
16
  ## ASSOCIATIONS
13
17
  has_many :localizations, dependent: :destroy
@@ -62,7 +66,7 @@ module Lit
62
66
  end
63
67
 
64
68
  def self.search(options = {})
65
- options = options.reverse_merge(default_search_options)
69
+ options = options.to_h.reverse_merge(default_search_options).with_indifferent_access
66
70
  s = self
67
71
  if options[:order] && order_options.include?(options[:order])
68
72
  column, order = options[:order].split(' ')
@@ -48,12 +48,13 @@ module Lit
48
48
  unless il.is_duplicate?(r['value'])
49
49
  il.save!
50
50
  IncommingLocalization.where(id: il.id).
51
- update_all ['translated_value=?', r['value']]
51
+ update_all(translated_value: r['value'])
52
52
  end
53
53
  end
54
54
  last_change = get_last_change
55
55
  last_change = DateTime.parse(last_change) unless last_change.nil?
56
56
  touch_last_updated_at(last_change)
57
+ update_column(:sync_complete, true)
57
58
  save
58
59
  end
59
60
  end
@@ -89,8 +90,8 @@ module Lit
89
90
  http = Net::HTTP.new(uri.host, uri.port)
90
91
  http.use_ssl = (uri.port == 443)
91
92
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
92
- res = http.start do |http|
93
- http.request(req)
93
+ res = http.start do |http_started|
94
+ http_started.request(req)
94
95
  end
95
96
  if res.is_a?(Net::HTTPSuccess)
96
97
  result = JSON.parse(res.body)
@@ -5,12 +5,12 @@
5
5
  <meta charset="utf-8" />
6
6
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
8
- <%= stylesheet_link_tag "//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css", :media => "all" %>
9
- <%= stylesheet_link_tag "//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css", :media => "all" %>
10
- <%= stylesheet_link_tag "//netdna.bootstrapcdn.com/bootswatch/3.0.3/yeti/bootstrap.min.css", :media => "all" %>
11
- <%= stylesheet_link_tag "lit/application", :media => "all" %>
12
- <%= javascript_include_tag "lit/application" %>
13
- <%= javascript_include_tag "//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js" %>
8
+ <%= stylesheet_link_tag '//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css', media: 'all' %>
9
+ <%= stylesheet_link_tag '//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.min.css', media: 'all' %>
10
+ <%= stylesheet_link_tag '//netdna.bootstrapcdn.com/bootswatch/3.0.3/yeti/bootstrap.min.css', media: 'all' %>
11
+ <%= stylesheet_link_tag 'lit/application', media: 'all' %>
12
+ <%= javascript_include_tag 'lit/application' %>
13
+ <%= javascript_include_tag '//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js' %>
14
14
  <%= csrf_meta_tags %>
15
15
  </head>
16
16
  <body class="<%= params[:controller] %>">
@@ -1,15 +1,20 @@
1
1
  <h1>Incomming localizations</h1>
2
- <div class="row">
3
- <span class="pull-right">
4
- <%= link_to accept_all_source_incomming_localizations_path(@source), :class=>"btn btn-success btn-sm", :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")} do %>
5
- <%= t('lit.common.accept_all', :default=>"Accept all") %>
6
- <% end %>
7
- <%= link_to reject_all_source_incomming_localizations_path(@source), :class=>"btn btn-danger btn-sm", :method=>:post, :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")} do %>
8
- <%= t('lit.common.reject_all', :default=>"Reject all") %>
9
- <% end %>
10
- </span>
2
+ <input type="hidden" id="source_id" value="<%= @source.id %>">
3
+ <div class="container">
4
+ <div class="row inline-headers">
5
+ <h4 class="<%= source_loading_class(@source) %>">Synchronization in progress, please wait. The page will refresh automatically when done.</h2>
6
+ <span class="pull-right">
7
+ <%= link_to accept_all_source_incomming_localizations_path(@source), :class=>"btn btn-success btn-sm", :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")} do %>
8
+ <%= t('lit.common.accept_all', :default=>"Accept all") %>
9
+ <% end %>
10
+ <%= link_to reject_all_source_incomming_localizations_path(@source), :class=>"btn btn-danger btn-sm", :method=>:post, :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")} do %>
11
+ <%= t('lit.common.reject_all', :default=>"Reject all") %>
12
+ <% end %>
13
+ </span>
14
+ </div>
11
15
  </div>
12
16
 
17
+
13
18
  <table class="table table-bordered table-striped incomming-localizations-table">
14
19
  <tr>
15
20
  <th>Current value</th>
@@ -26,20 +31,20 @@
26
31
  <tr data-id="<%= il.id %>">
27
32
  <td>
28
33
  <% if il.localization %>
29
- <%= render :partial=>"/lit/localization_keys/localization_row", :locals=>{:localization=>il.localization.get_value} %>
34
+ <%= render partial: '/lit/localization_keys/localization_row', locals: {localization: il.localization.get_value} %>
30
35
  <% end %>
31
36
  </td>
32
37
  <Td>
33
- <%= render :partial=>"/lit/localization_keys/localization_row", :locals=>{:localization=>il.get_value} %>
38
+ <%= render partial: '/lit/localization_keys/localization_row', locals: {localization: il.get_value} %>
34
39
  </td>
35
40
  <td>
36
- <%= link_to accept_source_incomming_localization_path(@source, il), :class=>"btn btn-success btn-sm", :remote=>true do %>
37
- <%= draw_icon "check", :class=>"icon-white" %>
38
- <%= t('lit.common.accept', :default=>"Accept") %>
41
+ <%= link_to accept_source_incomming_localization_path(@source, il, format: :js), class: 'btn btn-success btn-sm', remote: true do %>
42
+ <%= draw_icon 'check', class: 'icon-white' %>
43
+ <%= t('lit.common.accept', default: 'Accept') %>
39
44
  <% end %>
40
- <%= link_to source_incomming_localization_path(@source, il), :class=>"btn btn-danger btn-sm", :remote=>true, :method=>:delete, :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")} do %>
41
- <%= draw_icon "times", :class=>"icon-white" %>
42
- <%= t('lit.common.reject', :default=>"Reject") %>
45
+ <%= link_to source_incomming_localization_path(@source, il, format: :js), class: 'btn btn-danger btn-sm', remote: true, method: delete, data: {confirm: I18n.t('lit.common.you_sure', default: 'Are you sure?')} do %>
46
+ <%= draw_icon 'times', class: "icon-white" %>
47
+ <%= I18n.t('lit.common.reject', :default=>"Reject") %>
43
48
  <% end %>
44
49
  </td>
45
50
  </tr>
@@ -6,7 +6,7 @@
6
6
  </ul>
7
7
  <% else %>
8
8
  <% if localization.nil? %>
9
- <em title="<%= t('.value_not_yet_translated', default: 'Value not yet translated') %>">null</em>
9
+ <em title="<%= I18n.t('.value_not_yet_translated', default: 'Value not yet translated') %>">null</em>
10
10
  <% else %>
11
11
  <%= localization %>
12
12
  <% end %>
@@ -1,4 +1,4 @@
1
- <h3><%= t('.header', :default=>"Localization keys") %></h3>
1
+ <h3><%= I18n.t('.header', default: 'Localization keys') %></h3>
2
2
  <% available_locales = I18n.backend.available_locales %>
3
3
 
4
4
  <table class="table">
@@ -8,10 +8,15 @@
8
8
  <strong><%= lk.localization_key %></strong>
9
9
  <span class="badge"><%= Lit.init.cache.get_global_hits_counter(lk.localization_key) %></span>
10
10
  <div class="localization_keys_options">
11
- <%= link_to lit.star_localization_key_path(lk), :remote=>true, :class=>"star_icon" do %>
11
+ <% if Lit.store_request_info %>
12
+ <%= link_to '#', class: 'request_info_link title', title: 'Show / hide request' do %>
13
+ <%= draw_icon 'link' %>
14
+ <% end %>
15
+ <% end %>
16
+ <%= link_to lit.star_localization_key_path(lk), remote: true, class: 'star_icon title', title: 'Star / unstar translation key' do %>
12
17
  <%= draw_icon lk.is_starred? ? 'star' : 'star-o' %>
13
18
  <% end %>
14
- <%= link_to lit.localization_key_path(lk), :method=>:delete, :data=>{:confirm=>t('lit.common.you_sure', :default=>"Are you sure?")}, :remote=>true do %>
19
+ <%= link_to lit.localization_key_path(lk), method: :delete, data: {confirm: t('lit.common.you_sure', default: "Are you sure?")}, remote: true, title: 'Delete translation key', class: 'title' do %>
15
20
  <%= draw_icon 'trash-o' %>
16
21
  <% end %>
17
22
  </div>
@@ -20,15 +25,15 @@
20
25
  <%- available_locales.each do |locale| %>
21
26
  <%- localization = localization_for(locale, lk) %>
22
27
  <tr>
23
- <td class="localization_row" data-id="<%= localization.id%>" data-edit="<%= edit_localization_key_localization_path(lk, localization) %>" data-editing=0 data-content="">
24
- <%= render :partial=>"localization_row", :locals=>{:localization=>Lit.init.cache["#{locale}.#{lk.localization_key}"]} %>
28
+ <td class="localization_row" data-id="<%= localization.id%>" data-edit="<%= edit_localization_key_localization_path(lk, localization, format: :js) %>" data-editing=0 data-content="">
29
+ <%= render partial: 'localization_row', locals: {localization: Lit.init.cache["#{locale}.#{lk.localization_key}"]} %>
25
30
  </td>
26
31
  <td class="locale_row">
27
32
  <%= image_tag "lit/famfamfam_flags/#{locale[0,2]}.png" %>
28
33
  <%= locale %>
29
34
  <% if localization %>
30
- <%= link_to lit.previous_versions_localization_key_localization_path(lk, localization), :class=>"show_prev_versions #{'hidden' unless has_versions?(localization)}", :remote=>true do %>
31
- <%= draw_icon 'random', :title=>t('lit.common.previous_versions', :default=>"Previous versions") %>
35
+ <%= link_to lit.previous_versions_localization_key_localization_path(lk, localization, format: :js), class: "show_prev_versions #{'hidden' unless has_versions?(localization)}", remote: true do %>
36
+ <%= draw_icon 'random', title: I18n.t('lit.common.previous_versions', default: 'Previous versions') %>
32
37
  <% end %>
33
38
  <% end %>
34
39
  </td>
@@ -37,6 +42,19 @@
37
42
  <td colspan="2" class="localization_versions"></td>
38
43
  </tr>
39
44
  <% end %>
45
+ <% if Lit.store_request_info %>
46
+ <tr class="hidden request_info_row">
47
+ <td colspan="2">
48
+ <strong>Translation key recently displayed on following pages:</strong>
49
+ <ul>
50
+ <% Lit.init.cache.get_request_info(lk.localization_key).split(' ').reverse.each do |l| %>
51
+ <li><%= link_to l, l %></li>
52
+ <% end %>
53
+ </ul>
54
+ <em>Note: you might not have access to those pages!</em>
55
+ </td>
56
+ </tr>
57
+ <% end %>
40
58
  </table>
41
59
  </div>
42
60
  </td>
@@ -47,6 +65,8 @@
47
65
  <% if defined?(Kaminari) %>
48
66
  <%= paginate @localization_keys, :theme=>"lit" %>
49
67
  <% end %>
68
+
69
+
50
70
  <% content_for(:sidebar) do %>
51
71
  <div class="well">
52
72
  <%= form_tag '', :class=>"form-search", :method=>:get do |f| %>
@@ -105,4 +125,3 @@
105
125
  </ul>
106
126
  </div>
107
127
  <% end %>
108
-
@@ -1,13 +1,13 @@
1
- <%= form_for [@localization_key, @localization], :html=>{:remote=>true} do |f| %>
1
+ <%= form_for @localization, url: lit.localization_key_localization_path(@localization_key, @localization, format: :js), html: {remote: true} do |f| %>
2
2
  <%- f.label :translated_value %>
3
3
  <% if @localization.translated_value.is_a?(Array) %>
4
4
  <ul style="list-style: none;">
5
5
  <% @localization.translated_value.each do |l| %>
6
- <li><%= text_field_tag 'localization[translated_value][]', l, :class=>"form-control input-xlarge" %></li>
6
+ <li><%= text_field_tag 'localization[translated_value][]', l, class: 'form-control input-xlarge' %></li>
7
7
  <% end %>
8
8
  </ul>
9
9
  <% else %>
10
- <%= f.text_area :translated_value, :size=>"40x2", :class=>"form-control input-xxlarge" %>
10
+ <%= f.text_area :translated_value, size: '40x2', class: 'form-control input-xxlarge' %>
11
11
  <% if allow_wysiwyg_editor?(@localization_key.localization_key) %>
12
12
  <br />
13
13
  <label>
@@ -17,7 +17,7 @@
17
17
  <% end %>
18
18
  <% end %>
19
19
 
20
- <button class="btn btn-primary btn-sm" type="submit"><%= t('lit.common.update', :default=>"Update") %></button>
21
- <button class="btn btn-default btn-sm cancel" type="reset"><%= t('lit.common.cancel', :default=>'Cancel') %></button>
20
+ <button class="btn btn-primary btn-sm" type="submit"><%= I18n.t('lit.common.update', default: "Update") %></button>
21
+ <button class="btn btn-default btn-sm cancel" type="reset"><%= I18n.t('lit.common.cancel', default: 'Cancel') %></button>
22
22
  <% end %>
23
23
 
@@ -7,7 +7,7 @@
7
7
  <% @versions.each do |v| %>
8
8
  <tr>
9
9
  <td>
10
- <%= render :partial=>"/lit/localization_keys/localization_row", :locals=>{:localization=>v.translated_value} %>
10
+ <%= render :partial=>"/lit/localization_keys/localization_row", formats: ['html'], :locals=>{:localization=>v.translated_value} %>
11
11
  </td>
12
12
  <td><%= I18n.l v.created_at, format: :long %></td>
13
13
  </tr>
@@ -1,7 +1,7 @@
1
1
  var $row = $('td.localization_row[data-id="<%= @localization.id %>"]');
2
2
  $row.data('editing', 1);
3
- $row.html("<%= ejs render(:partial=>'form') %>");
3
+ $row.html("<%= ejs render(partial: 'form', formats: ['html']) %>");
4
4
  $row.find('textarea').focus();
5
5
  <% if @localization.full_key.ends_with?('_html') -%>
6
6
  $row.find('.wysiwyg_switch').click();
7
- <% end %>
7
+ <% end %>
@@ -1,3 +1,3 @@
1
1
  var row = $('.localization_versions_row[data-id="<%= @localization.id %>"]');
2
2
  row.removeClass('hidden');
3
- row.children('td').html("<%= j render(:partial=>'previous_versions_rows', :locals=>{:localization=>@localization, :versions=>@versions}) %>");
3
+ row.children('td').html("<%= j render(:partial=>'previous_versions_rows', formats: ['html'], :locals=>{:localization=>@localization, :versions=>@versions}) %>");
@@ -1,4 +1,4 @@
1
1
  var $row = $('td.localization_row[data-id="<%= @localization.id %>"]');
2
2
  $row.data('editing', 0);
3
- $row.html("<%= ejs render(:partial=>"/lit/localization_keys/localization_row", :locals=>{:localization=>@localization.translated_value }) %>");
4
- $row.siblings().find('.show_prev_versions').removeClass('hidden');
3
+ $row.html("<%= ejs render(:partial=>"/lit/localization_keys/localization_row", formats: ['html'], :locals=>{:localization=>@localization.translated_value }) %>");
4
+ $row.siblings().find('.show_prev_versions').removeClass('hidden');
@@ -1,29 +1,28 @@
1
1
  Lit::Engine.routes.draw do
2
-
3
-
4
2
  if Lit.api_enabled
5
3
  namespace :api do
6
4
  namespace :v1 do
7
5
  get '/last_change' => 'localizations#last_change'
8
- resources :locales, :only=>[:index]
9
- resources :localization_keys, :only=>[:index]
10
- resources :localizations, :only=>[:index] do
11
- get 'last_change', :on=>:collection
6
+ resources :locales, only: [:index]
7
+ resources :localization_keys, only: [:index]
8
+ resources :localizations, only: [:index] do
9
+ get 'last_change', on: :collection
12
10
  end
13
11
  end
14
12
  end
15
13
  end
16
- resources :locales, :only=>[:index, :destroy] do
17
- put :hide, :on=>:member
14
+ resources :locales, only: [:index, :destroy] do
15
+ put :hide, on: :member
18
16
  end
19
- resources :localization_keys, :only=>[:index, :destroy] do
17
+ resources :localization_keys, only: [:index, :destroy] do
20
18
  member do
21
19
  get :star
22
20
  end
23
21
  collection do
24
22
  get :starred
23
+ get :find_localization
25
24
  end
26
- resources :localizations, :only=>[:edit, :update] do
25
+ resources :localizations, only: [:edit, :update, :show] do
27
26
  member do
28
27
  get :previous_versions
29
28
  end
@@ -32,9 +31,10 @@ Lit::Engine.routes.draw do
32
31
  resources :sources do
33
32
  member do
34
33
  get :synchronize
34
+ get :sync_complete
35
35
  put :touch
36
36
  end
37
- resources :incomming_localizations, :only=>[:index, :destroy] do
37
+ resources :incomming_localizations, only: [:index, :destroy] do
38
38
  member do
39
39
  get :accept
40
40
  end
@@ -45,5 +45,5 @@ Lit::Engine.routes.draw do
45
45
  end
46
46
  end
47
47
 
48
- root :to=>"dashboard#index"
48
+ root to: 'dashboard#index'
49
49
  end
@@ -0,0 +1,16 @@
1
+ class LitCreateLitLocales < Rails::VERSION::MAJOR >= 5 ?
2
+ ActiveRecord::Migration[4.2] :
3
+ ActiveRecord::Migration
4
+ def up
5
+ return if table_exists?(:lit_locales)
6
+ create_table :lit_locales do |t|
7
+ t.string :locale
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ def down
14
+ drop_table :lit_locales
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ class LitCreateLitLocalizationKeys < Rails::VERSION::MAJOR >= 5 ?
2
+ ActiveRecord::Migration[4.2] :
3
+ ActiveRecord::Migration
4
+ def up
5
+ return if table_exists?(:lit_localization_keys)
6
+ create_table :lit_localization_keys do |t|
7
+ t.string :localization_key
8
+
9
+ t.timestamps
10
+ end
11
+ add_index :lit_localization_keys, :localization_key, unique: true
12
+ end
13
+
14
+ def down
15
+ remove_index :lit_localization_keys, :localization_key
16
+ drop_table :lit_localization_keys
17
+ end
18
+ end
@@ -0,0 +1,24 @@
1
+ class LitCreateLitLocalizations < Rails::VERSION::MAJOR >= 5 ?
2
+ ActiveRecord::Migration[4.2] :
3
+ ActiveRecord::Migration
4
+ def up
5
+ return if table_exists?(:lit_localizations)
6
+ create_table :lit_localizations do |t|
7
+ t.integer :locale_id
8
+ t.integer :localization_key_id
9
+ t.text :default_value
10
+ t.text :translated_value
11
+ t.boolean :is_changed, default: false
12
+
13
+ t.timestamps
14
+ end
15
+
16
+ add_index :lit_localizations, :locale_id
17
+ add_index :lit_localizations, :localization_key_id
18
+ end
19
+
20
+ def down
21
+ remove_index :lit_localizations, :locale_id
22
+ remove_index :lit_localizations, :localization_key_id
23
+ end
24
+ end