weeler 1.2.0 → 1.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d74bf1a8c861ad71e165a61811adf25b4b702742
4
- data.tar.gz: 72c0e430791b689a12e7e35b43cd7fef68290206
3
+ metadata.gz: 04354c614713ac3f01bbd9ef74db3d3adfbf6e5e
4
+ data.tar.gz: b7cb66aa043d0f4474d030fc8a3098c2f110eeb4
5
5
  SHA512:
6
- metadata.gz: 26bc83df02c82b16027f4c355ea87ced1eed41d50ead778fb8d7bedf1be2673db0f3a0dbabc7a968e0ff0d2a74d85ed91527ac5b293a538b122d7be7c357f585
7
- data.tar.gz: 813211cdb75e8717382e47a44f4b669de769a1f92f58f26126deda5b8887fc650cb4576f06c2795567bf8794213194d957547502bcecb41360d977b80f72363d
6
+ metadata.gz: 3995b5e005fae4e1d03fa0bcbee009fd7cfa0ace18d0be818250c690b6afec317ed9ee0b31f213a19c112308463aa039e1be74ea53dd420162833e6ff7e7cc8f
7
+ data.tar.gz: aca2e0510b49b00a85d99a8329eec36874b10105ead3cd20b13da590a68f38b0c43056ea6424265a3033c85c575b731b944044a02917e2124380416a02f31c84
@@ -1,3 +1,22 @@
1
+ ## 1.4.0
2
+
3
+ * Added translation usage stats
4
+ * Fixed a transliteration bug
5
+
6
+ ### Contributors
7
+
8
+ * Artis Raugulis
9
+
10
+ ## 1.3.0
11
+
12
+ ### Features & Enhancements
13
+
14
+ * Added option to customize what happens after successful create, update, destroy
15
+
16
+ ### Contributors
17
+
18
+ * Artis Raugulis
19
+
1
20
  ## 1.2.0
2
21
 
3
22
  ### Features & Enhancements
@@ -38,9 +57,9 @@
38
57
 
39
58
  ## 1.0.4
40
59
 
41
- ### Bug Fixes
60
+ ### Bug Fixes
42
61
 
43
- * Fixed seoable bug that called not weeler function.
62
+ * Fixed seoable bug that called not weeler function.
44
63
 
45
64
  ### Contributors
46
65
 
data/README.md CHANGED
@@ -124,6 +124,21 @@ You can do this by overriding private methods in your controller.
124
124
  { action: :index }
125
125
  end
126
126
 
127
+ Or you can override what happens after successful <tt>:create</tt>, <tt>:update</tt>, <tt>:destroy</tt> actions.
128
+ You can do this by overriding private methods in your controller.
129
+
130
+ def after_create_action
131
+ redirect_to( after_create_path, {:notice => "Successfully created item"} )
132
+ end
133
+
134
+ def after_update_action
135
+ redirect_to( after_update_path, {:notice => "Successfully updated item"} )
136
+ end
137
+
138
+ def after_destroy_action
139
+ redirect_to( after_destroy_path, {:notice => "Successfully destroyed item"})
140
+ end
141
+
127
142
  You should implement form file with your own active record attributes.
128
143
  To do that, create <tt>_form.html.haml</tt> in <tt>views/weeler/_YOUR_RESOURCE_/_form.html.haml</tt>
129
144
  where <tt>_YOUR_RESOURCE_</tt> is name of your resource.
@@ -49,6 +49,13 @@ module Weeler
49
49
  redirect_to weeler_translations_path, flash: {success: "Translation succesfully removed."}
50
50
  end
51
51
 
52
+ def usage_stats
53
+ @used_keys = []
54
+ Weeler.i18n_cache.instance_variable_get(:@data).keys.each do |key|
55
+ @used_keys << [key, Weeler.i18n_cache.read(key)] if key.start_with?('usage_stats')
56
+ end
57
+ end
58
+
52
59
  def export
53
60
  respond_to do |format|
54
61
  format.xlsx do
@@ -12,7 +12,7 @@
12
12
 
13
13
  %body{data: {controller: controller_name, action: action_name, name_space: 'weeler', tag: "#{yield :weeler_body_tag}" }}
14
14
  = render "header_navbar"
15
- .container
15
+ .container-fluid
16
16
  = render "flash"
17
17
  .row.row-offcanvas.row-offcanvas-right
18
18
  = render "side_navbar"
@@ -11,7 +11,14 @@
11
11
  = link_to 'Show translations', weeler_translations_path(show_translation_keys: false)
12
12
  - else
13
13
  = link_to 'Show translation keys', weeler_translations_path(show_translation_keys: true)
14
-
14
+ %h1 Stats
15
+ %p.lead.text-muted
16
+ - if Settings.log_key_usage == 'true'
17
+ = 'Translation usage stat gathering is ON'
18
+ - else
19
+ = 'Translation usage stat gathering is OFF'
20
+ %p.lead.text-muted
21
+ = link_to 'Go to Stats', {action: :usage_stats}
15
22
  .row
16
23
  %nav.navbar.navbar-default{role: "navigation"}
17
24
  / Collect the nav links, forms, and other content for toggling
@@ -0,0 +1,28 @@
1
+ .header.container
2
+ .row
3
+ .col-lg-12
4
+ .page-header
5
+ %h1 Translation stats
6
+ %p.lead.text-muted
7
+ - if Settings.log_key_usage == 'true'
8
+ = 'Translation usage stat gathering is ON'
9
+ - else
10
+ = 'Translation usage stat gathering is OFF'
11
+ %p.lead.text-muted
12
+ = link_to 'Back to Translation list', {action: :index}
13
+
14
+ .container
15
+ .row
16
+ .col-lg-12
17
+ %table.table
18
+ %thead
19
+ %tr
20
+ %th Usage
21
+ %th Key
22
+ %th text
23
+ %tbody
24
+ - @used_keys.each do |key, usage|
25
+ %tr
26
+ %td= usage
27
+ %td= key.to_s.gsub('usage_stats/en/', '')
28
+ %td= t(key.to_s.gsub('usage_stats/en/', ''))
@@ -4,6 +4,7 @@ require 'i18n/backend/weeler/dedupe'
4
4
  require 'i18n/backend/weeler/html_checker'
5
5
  require 'i18n/backend/weeler/exporter'
6
6
  require 'i18n/backend/weeler/importer'
7
+ require 'i18n/backend/weeler/usage_logger'
7
8
 
8
9
  module I18n
9
10
  module Backend
@@ -28,6 +29,7 @@ module I18n
28
29
  autoload :Translation, 'i18n/backend/weeler/translation'
29
30
  autoload :Exporter, 'i18n/backend/weeler/exporter'
30
31
  autoload :Importer, 'i18n/backend/weeler/importer'
32
+ autoload :UsageLogger, 'i18n/backend/weeler/usage_logger'
31
33
 
32
34
  module Implementation
33
35
  include Base, Flatten
@@ -57,6 +59,7 @@ module I18n
57
59
  protected
58
60
 
59
61
  def lookup(locale, key, scope = [], options = {})
62
+ return fallback_backend_translation locale, key if key.to_s.start_with?('i18n')
60
63
  key = normalize_flat_keys(locale, key, scope, options[:separator])
61
64
  return lookup_in_cache(locale, key, scope, options)
62
65
  end
@@ -67,6 +70,11 @@ module I18n
67
70
  # reload cache if cache timestamp differs from last translations update
68
71
  reload_cache if ((!ActiveRecord::Base.connection.table_exists?('settings')) || i18n_cache.read('UPDATED_AT') != Settings.i18n_updated_at)
69
72
 
73
+ # log locale/key usage for statistics
74
+ if Settings.log_key_usage == 'true'
75
+ log_key_usage(locale, key)
76
+ end
77
+
70
78
  return nil if i18n_cache.read([:missing, [locale, key]])
71
79
 
72
80
  keys = expand_keys key
@@ -75,7 +83,7 @@ module I18n
75
83
 
76
84
  result = i18n_cache.read([locale, check_key])
77
85
 
78
- return result.value unless result.blank?
86
+ return result.value unless result.blank?
79
87
  end
80
88
 
81
89
  # mark translation as missing
@@ -161,4 +169,3 @@ module I18n
161
169
  end
162
170
  end
163
171
  end
164
-
@@ -120,4 +120,3 @@ module I18n
120
120
  end
121
121
  end
122
122
  end
123
-
@@ -0,0 +1,19 @@
1
+ require 'active_record'
2
+
3
+ module I18n
4
+ module Backend
5
+ class Weeler
6
+
7
+ module UsageLogger
8
+
9
+ def log_key_usage(locale, key)
10
+ existing = i18n_cache.read([:usage_stats, [locale, key]])
11
+ value = existing.present? ? (existing.to_i + 1) : 1
12
+ i18n_cache.write [:usage_stats, [locale, key]], value
13
+ end
14
+
15
+ Weeler.send(:include, UsageLogger)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -83,7 +83,7 @@ module Weeler
83
83
  def create
84
84
  @item = model.new(items_params)
85
85
  if @item.save
86
- redirect_to( after_create_path, {:notice => "Successfully created item"} )
86
+ after_create_action
87
87
  else
88
88
  render :action => 'new'
89
89
  end
@@ -91,7 +91,7 @@ module Weeler
91
91
 
92
92
  def update
93
93
  if @item.update_attributes(items_params)
94
- redirect_to( after_update_path, {:notice => "Successfully updated item"} )
94
+ after_update_action
95
95
  else
96
96
  render :action => 'edit'
97
97
  end
@@ -99,7 +99,7 @@ module Weeler
99
99
 
100
100
  def destroy
101
101
  @item.destroy
102
- redirect_to( after_destroy_path, {:notice => "Successfully destroyed item"})
102
+ after_destroy_action
103
103
  end
104
104
 
105
105
  def remove_image
@@ -142,6 +142,18 @@ module Weeler
142
142
 
143
143
  private
144
144
 
145
+ def after_create_action
146
+ redirect_to( after_create_path, {:notice => "Successfully created item"} )
147
+ end
148
+
149
+ def after_update_action
150
+ redirect_to( after_update_path, {:notice => "Successfully updated item"} )
151
+ end
152
+
153
+ def after_destroy_action
154
+ redirect_to( after_destroy_path, {:notice => "Successfully destroyed item"})
155
+ end
156
+
145
157
  def after_create_path
146
158
  { action: :edit, id: @item.id }
147
159
  end
@@ -54,6 +54,7 @@ module Weeler
54
54
  collection do
55
55
  get :export
56
56
  post :import
57
+ get :usage_stats
57
58
  end
58
59
  end
59
60
  resources :seo_items
@@ -1,7 +1,7 @@
1
1
  module Weeler
2
2
  module VERSION
3
3
  MAJOR = 1
4
- MINOR = 2
4
+ MINOR = 4
5
5
  TINY = 0
6
6
  PRE = nil
7
7
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weeler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artūrs Braučs
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-24 00:00:00.000000000 Z
12
+ date: 2016-02-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -412,6 +412,7 @@ files:
412
412
  - app/views/weeler/translations/edit.html.haml
413
413
  - app/views/weeler/translations/index.html.haml
414
414
  - app/views/weeler/translations/new.html.haml
415
+ - app/views/weeler/translations/usage_stats.html.haml
415
416
  - config/initializers/weeler_mime_types.rb
416
417
  - lib/.DS_Store
417
418
  - lib/generators/weeler/.DS_Store
@@ -433,6 +434,7 @@ files:
433
434
  - lib/i18n/backend/weeler/html_checker.rb
434
435
  - lib/i18n/backend/weeler/importer.rb
435
436
  - lib/i18n/backend/weeler/translation.rb
437
+ - lib/i18n/backend/weeler/usage_logger.rb
436
438
  - lib/i18n/humanize_missing_translations.rb
437
439
  - lib/i18n/weeler.rb
438
440
  - lib/tasks/weeler.rake
@@ -540,7 +542,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
540
542
  version: '0'
541
543
  requirements: []
542
544
  rubyforge_project:
543
- rubygems_version: 2.4.7
545
+ rubygems_version: 2.4.5
544
546
  signing_key:
545
547
  specification_version: 4
546
548
  summary: CMS for weby.lv projects.