biovision-base 0.19.180703.1 → 0.20.180731.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/biovision/base/biovision.js +47 -3
  3. data/app/assets/stylesheets/biovision/base/biovision.scss +1 -1
  4. data/app/assets/stylesheets/biovision/base/default.scss +16 -0
  5. data/app/controllers/codes_controller.rb +5 -4
  6. data/app/controllers/index_controller.rb +14 -1
  7. data/app/controllers/media_files_controller.rb +1 -1
  8. data/app/controllers/my/profiles_controller.rb +9 -2
  9. data/app/helpers/languages_helper.rb +1 -1
  10. data/app/models/language.rb +1 -0
  11. data/app/models/user.rb +1 -0
  12. data/app/services/canonizer.rb +1 -0
  13. data/app/views/admin/users/entity/_in_list.html.erb +16 -10
  14. data/app/views/admin/users/show.html.erb +11 -3
  15. data/app/views/authentication/_form.html.erb +1 -1
  16. data/app/views/codes/_form.html.erb +42 -9
  17. data/app/views/editable_blocks/_form.html.erb +28 -24
  18. data/app/views/feedback_mailer/new_feedback_request.html.erb +17 -6
  19. data/app/views/feedback_mailer/new_feedback_request.text.erb +19 -3
  20. data/app/views/feedback_requests/_form.html.erb +1 -1
  21. data/app/views/layouts/application/_footer.html.erb +1 -0
  22. data/app/views/link_block_items/_form.html.erb +6 -5
  23. data/app/views/link_blocks/_form.html.erb +18 -16
  24. data/app/views/shared/forms/errors.js.erb +2 -2
  25. data/config/locales/common-en.yml +4 -1
  26. data/config/locales/common-ru.yml +3 -0
  27. data/config/locales/common-sv.yml +168 -0
  28. data/config/locales/editable-pages-en.yml +48 -2
  29. data/config/locales/editable-pages-ru.yml +2 -6
  30. data/config/locales/editable-pages-sv.yml +123 -0
  31. data/config/locales/feedback-en.yml +3 -2
  32. data/config/locales/feedback-sv.yml +37 -0
  33. data/config/locales/links-en.yml +95 -0
  34. data/config/locales/links-sv.yml +95 -0
  35. data/config/locales/media-sv.yml +92 -0
  36. data/config/locales/track-en.yml +102 -0
  37. data/config/locales/track-sv.yml +102 -0
  38. data/config/locales/users-en.yml +10 -6
  39. data/config/locales/users-ru.yml +5 -1
  40. data/config/locales/users-sv.yml +395 -0
  41. data/config/routes.rb +47 -47
  42. data/db/migrate/20170228000000_create_languages.rb +1 -0
  43. data/db/migrate/20170302000001_create_users.rb +1 -0
  44. data/db/migrate/20170320000000_create_editable_pages.rb +1 -1
  45. data/db/migrate/20180722222222_add_active_to_languages.rb +11 -0
  46. data/db/migrate/20180725111111_add_referral_link_to_users.rb +22 -0
  47. data/lib/biovision/base/base_methods.rb +10 -1
  48. data/lib/biovision/base/version.rb +1 -1
  49. metadata +13 -4
  50. data/app/views/shared/forms/_default_ajax_handler.html.erb +0 -15
  51. data/app/views/shared/forms/_list_of_errors.js.erb +0 -21
@@ -1,30 +1,30 @@
1
1
  Rails.application.routes.draw do
2
- resources :agents, :browsers, only: [:update, :destroy]
2
+ resources :agents, :browsers, only: %i[update destroy]
3
3
 
4
- resources :editable_blocks, only: [:update, :destroy]
5
- resources :editable_pages, only: [:update, :destroy]
6
- resources :stored_values, only: [:update, :destroy]
4
+ resources :editable_blocks, only: %i[update destroy]
5
+ resources :editable_pages, only: %i[update destroy]
6
+ resources :stored_values, only: %i[update destroy]
7
7
 
8
- resources :users, only: [:update, :destroy]
9
- resources :tokens, :codes, only: [:update, :destroy]
8
+ resources :users, only: %i[update destroy]
9
+ resources :tokens, :codes, only: %i[update destroy]
10
10
 
11
- resources :metrics, only: [:update]
11
+ resources :metrics, only: :update
12
12
 
13
- resources :privileges, only: [:update, :destroy]
14
- resources :privilege_groups, only: [:update, :destroy]
13
+ resources :privileges, only: %i[update destroy]
14
+ resources :privilege_groups, only: %i[update destroy]
15
15
 
16
- resources :media_folders, only: [:update, :destroy]
17
- resources :media_files, only: [:update, :destroy]
16
+ resources :media_folders, only: %i[update destroy]
17
+ resources :media_files, only: %i[update destroy]
18
18
 
19
- resources :feedback_requests, only: [:destroy]
19
+ resources :feedback_requests, only: :destroy
20
20
 
21
- resources :link_blocks, :link_block_items, only: [:update, :destroy] do
21
+ resources :link_blocks, :link_block_items, only: %i[update destroy] do
22
22
  collection do
23
23
  post 'check', defaults: { format: :json }
24
24
  end
25
25
  end
26
26
 
27
- scope '(:locale)', constraints: { locale: /ru|en/ } do
27
+ scope '(:locale)', constraints: { locale: /ru|en|sv/ } do
28
28
  # Handling errors
29
29
  match '/400' => 'errors#bad_request', via: :all
30
30
  match '/401' => 'errors#unauthorized', via: :all
@@ -54,7 +54,7 @@ Rails.application.routes.draw do
54
54
  namespace :admin do
55
55
  get '/' => 'index#index'
56
56
 
57
- resources :agents, :browsers, only: [:index, :show] do
57
+ resources :agents, :browsers, only: %i[index show] do
58
58
  member do
59
59
  post 'toggle', defaults: { format: :json }
60
60
  put 'lock', defaults: { format: :json }
@@ -62,32 +62,32 @@ Rails.application.routes.draw do
62
62
  end
63
63
  end
64
64
 
65
- resources :codes, only: [:index, :show]
66
- resources :tokens, only: [:index, :show] do
65
+ resources :codes, only: %i[index show]
66
+ resources :tokens, only: %i[index show] do
67
67
  member do
68
68
  post 'toggle', defaults: { format: :json }
69
69
  end
70
70
  end
71
71
 
72
- resources :editable_pages, only: [:index, :show] do
72
+ resources :editable_pages, only: %i[index show] do
73
73
  member do
74
74
  post 'priority', defaults: { format: :json }
75
75
  end
76
76
  end
77
- resources :editable_blocks, only: [:index, :show] do
77
+ resources :editable_blocks, only: %i[index show] do
78
78
  member do
79
79
  post 'toggle', defaults: { format: :json }
80
80
  end
81
81
  end
82
- resources :stored_values, only: [:index, :show]
82
+ resources :stored_values, only: %i[index show]
83
83
 
84
- resources :metrics, only: [:index, :show] do
84
+ resources :metrics, only: %i[index show] do
85
85
  member do
86
86
  get 'data', defaults: { format: :json }
87
87
  end
88
88
  end
89
89
 
90
- resources :privileges, only: [:index, :show] do
90
+ resources :privileges, only: %i[index show] do
91
91
  member do
92
92
  put 'lock', defaults: { format: :json }
93
93
  delete 'lock', action: :unlock, defaults: { format: :json }
@@ -97,14 +97,14 @@ Rails.application.routes.draw do
97
97
  get 'regions', defaults: { format: :json }
98
98
  end
99
99
  end
100
- resources :privilege_groups, only: [:index, :show] do
100
+ resources :privilege_groups, only: %i[index show] do
101
101
  member do
102
102
  put 'privileges/:privilege_id' => :add_privilege, as: :privilege, defaults: { format: :json }
103
103
  delete 'privileges/:privilege_id' => :remove_privilege, defaults: { format: :json }
104
104
  end
105
105
  end
106
106
 
107
- resources :users, only: [:index, :show] do
107
+ resources :users, only: %i[index show] do
108
108
  collection do
109
109
  get 'search', defaults: { format: :json }
110
110
  end
@@ -119,32 +119,32 @@ Rails.application.routes.draw do
119
119
  end
120
120
  end
121
121
 
122
- resources :login_attempts, only: [:index]
122
+ resources :login_attempts, only: :index
123
123
 
124
- resources :media_folders, only: [:index, :show] do
124
+ resources :media_folders, only: %i[index show] do
125
125
  member do
126
126
  get 'files'
127
127
  end
128
128
  end
129
- resources :media_files, only: [:index, :show] do
129
+ resources :media_files, only: %i[index show] do
130
130
  member do
131
131
  put 'lock', defaults: { format: :json }
132
132
  delete 'lock', action: :unlock, defaults: { format: :json }
133
133
  end
134
134
  end
135
135
 
136
- resources :feedback_requests, only: [:index] do
136
+ resources :feedback_requests, only: :index do
137
137
  member do
138
138
  post 'toggle', defaults: { format: :json }
139
139
  end
140
140
  end
141
141
 
142
- resources :link_blocks, only: [:index, :show] do
142
+ resources :link_blocks, only: %i[index show] do
143
143
  member do
144
144
  post 'toggle', defaults: { format: :json }
145
145
  end
146
146
  end
147
- resources :link_block_items, only: [:show] do
147
+ resources :link_block_items, only: :show do
148
148
  member do
149
149
  post 'toggle', defaults: { format: :json }
150
150
  post 'priority', defaults: { format: :json }
@@ -155,54 +155,54 @@ Rails.application.routes.draw do
155
155
  namespace :my do
156
156
  get '/' => 'index#index'
157
157
 
158
- resource :profile, except: [:destroy] do
158
+ resource :profile, except: :destroy do
159
159
  post 'check'
160
160
  end
161
- resource :confirmation, :recovery, only: [:show, :create, :update]
162
- resources :tokens, only: [:index] do
161
+ resource :confirmation, :recovery, only: %i[show create update]
162
+ resources :tokens, only: :index do
163
163
  member do
164
164
  post 'toggle', defaults: { format: :json }
165
165
  end
166
166
  end
167
- resources :login_attempts, only: [:index]
167
+ resources :login_attempts, only: :index
168
168
  end
169
169
 
170
- resources :agents, :browsers, except: [:index, :show, :update, :destroy]
170
+ resources :agents, :browsers, except: %i[index show update destroy]
171
171
 
172
- resources :editable_pages, except: [:index, :show, :update, :destroy]
173
- resources :editable_blocks, except: [:index, :show, :update, :destroy] do
172
+ resources :editable_pages, except: %i[index show update destroy]
173
+ resources :editable_blocks, except: %i[index show update destroy] do
174
174
  collection do
175
175
  post 'check', defaults: { format: :json }
176
176
  end
177
177
  end
178
- resources :stored_values, except: [:index, :show, :update, :destroy]
178
+ resources :stored_values, except: %i[index show update destroy]
179
179
 
180
- resources :link_blocks, :link_block_items, except: [:index, :show, :update, :destroy] do
180
+ resources :link_blocks, :link_block_items, except: %i[index show update destroy] do
181
181
  collection do
182
182
  post 'check', defaults: { format: :json }
183
183
  end
184
184
  end
185
185
 
186
- resources :users, except: [:index, :show, :update, :destroy] do
186
+ resources :users, except: %i[index show update destroy] do
187
187
  collection do
188
188
  post 'check', defaults: { format: :json }
189
189
  end
190
190
  end
191
- resources :tokens, :codes, except: [:index, :show, :update, :destroy]
191
+ resources :tokens, :codes, except: %i[index show update destroy]
192
192
 
193
- resources :metrics, only: [:edit]
193
+ resources :metrics, only: :edit
194
194
 
195
- resources :privileges, except: [:index, :show, :update, :destroy]
196
- resources :privilege_groups, except: [:index, :show, :update, :destroy]
195
+ resources :privileges, except: %i[index show update destroy]
196
+ resources :privilege_groups, except: %i[index show update destroy]
197
197
 
198
- resources :media_folders, except: [:index, :show, :update, :destroy]
199
- resources :media_files, except: [:index, :show, :update, :destroy] do
198
+ resources :media_folders, except: %i[index show update destroy]
199
+ resources :media_files, except: %i[index show update destroy] do
200
200
  collection do
201
201
  post :ckeditor
202
202
  end
203
203
  end
204
204
 
205
- resources :feedback_requests, only: [:create]
205
+ resources :feedback_requests, only: :create
206
206
 
207
207
  get ':editable_page_url' => 'fallback#show', constraints: { editable_page_url: /.+/ }
208
208
  end
@@ -5,6 +5,7 @@ class CreateLanguages < ActiveRecord::Migration[5.1]
5
5
  t.timestamps
6
6
  t.integer :users_count, default: 0, null: false
7
7
  t.integer :priority, limit: 2, default: 1, null: false
8
+ t.boolean :active, default: true, null: false
8
9
  t.string :slug, null: false
9
10
  t.string :code, null: false
10
11
  end
@@ -36,6 +36,7 @@ class CreateUsers < ActiveRecord::Migration[5.1]
36
36
  t.string :image
37
37
  t.string :notice
38
38
  t.string :search_string
39
+ t.string :referral_link, index: true
39
40
  t.json :profile_data, default: {}, null: false
40
41
  end
41
42
 
@@ -44,7 +44,7 @@ class CreateEditablePages < ActiveRecord::Migration[5.1]
44
44
  slug: slug,
45
45
  name: names[language.code.to_sym],
46
46
  language: language,
47
- url: url
47
+ url: "/#{language.code}/#{url}"
48
48
  )
49
49
  end
50
50
  end
@@ -0,0 +1,11 @@
1
+ class AddActiveToLanguages < ActiveRecord::Migration[5.2]
2
+ def up
3
+ unless column_exists?(:languages, :active)
4
+ add_column :languages, :active, :boolean
5
+ end
6
+ end
7
+
8
+ def down
9
+ # No rollback needed
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ class AddReferralLinkToUsers < ActiveRecord::Migration[5.2]
2
+ def up
3
+ unless column_exists?(:users, :referral_link)
4
+ add_column :users, :referral_link, :string, index: true
5
+
6
+ seed_links
7
+ end
8
+ end
9
+
10
+ def down
11
+ # No need to rollback
12
+ end
13
+
14
+ private
15
+
16
+ def seed_links
17
+ User.order('id asc').each do |user|
18
+ next unless user.referral_link.blank?
19
+ user.update(referral_link: SecureRandom.alphanumeric(12))
20
+ end
21
+ end
22
+ end
@@ -8,7 +8,7 @@ module Biovision
8
8
 
9
9
  helper_method :current_page, :param_from_request
10
10
  helper_method :current_user, :current_language
11
- helper_method :agent
11
+ helper_method :agent, :visitor_slug
12
12
  end
13
13
 
14
14
  # Get current page number from request
@@ -48,6 +48,15 @@ module Biovision
48
48
  @agent ||= Agent.named(request.user_agent || 'n/a')
49
49
  end
50
50
 
51
+ # @return [String]
52
+ def visitor_slug
53
+ if current_user.nil?
54
+ "#{request.env['HTTP_X_REAL_IP'] || request.remote_ip}:#{agent.id}"
55
+ else
56
+ current_user.id
57
+ end
58
+ end
59
+
51
60
  def set_locale
52
61
  I18n.locale = params[:locale] || I18n.default_locale
53
62
  end
@@ -1,5 +1,5 @@
1
1
  module Biovision
2
2
  module Base
3
- VERSION = '0.19.180703.1'
3
+ VERSION = '0.20.180731.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biovision-base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.19.180703.1
4
+ version: 0.20.180731.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maxim Khan-Magomedov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-03 00:00:00.000000000 Z
11
+ date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -569,10 +569,8 @@ files:
569
569
  - app/views/shared/admin/_toggleable.html.erb
570
570
  - app/views/shared/editable_pages/_body.html.erb
571
571
  - app/views/shared/filter/_flag.html.erb
572
- - app/views/shared/forms/_default_ajax_handler.html.erb
573
572
  - app/views/shared/forms/_entity_flags.html.erb
574
573
  - app/views/shared/forms/_image_remover.html.erb
575
- - app/views/shared/forms/_list_of_errors.js.erb
576
574
  - app/views/shared/forms/_wysiwyg.html.erb
577
575
  - app/views/shared/forms/check.jbuilder
578
576
  - app/views/shared/forms/errors.js.erb
@@ -592,17 +590,26 @@ files:
592
590
  - config/initializers/pluralization.rb
593
591
  - config/locales/common-en.yml
594
592
  - config/locales/common-ru.yml
593
+ - config/locales/common-sv.yml
595
594
  - config/locales/editable-pages-en.yml
596
595
  - config/locales/editable-pages-ru.yml
596
+ - config/locales/editable-pages-sv.yml
597
597
  - config/locales/feedback-en.yml
598
598
  - config/locales/feedback-ru.yml
599
+ - config/locales/feedback-sv.yml
600
+ - config/locales/links-en.yml
599
601
  - config/locales/links-ru.yml
602
+ - config/locales/links-sv.yml
600
603
  - config/locales/media-en.yml
601
604
  - config/locales/media-ru.yml
605
+ - config/locales/media-sv.yml
602
606
  - config/locales/plurals.rb
607
+ - config/locales/track-en.yml
603
608
  - config/locales/track-ru.yml
609
+ - config/locales/track-sv.yml
604
610
  - config/locales/users-en.yml
605
611
  - config/locales/users-ru.yml
612
+ - config/locales/users-sv.yml
606
613
  - config/routes.rb
607
614
  - db/migrate/20170228000000_create_languages.rb
608
615
  - db/migrate/20170301000001_create_metrics.rb
@@ -637,6 +644,8 @@ files:
637
644
  - db/migrate/20180622140001_create_link_block_items.rb
638
645
  - db/migrate/20180627190000_create_editable_blocks.rb
639
646
  - db/migrate/20180703111111_add_fields_to_editable_blocks.rb
647
+ - db/migrate/20180722222222_add_active_to_languages.rb
648
+ - db/migrate/20180725111111_add_referral_link_to_users.rb
640
649
  - lib/biovision/base.rb
641
650
  - lib/biovision/base/base_methods.rb
642
651
  - lib/biovision/base/engine.rb
@@ -1,15 +0,0 @@
1
- <!--
2
- <script>
3
- 'use strict';
4
- document.addEventListener('DOMContentLoaded', function () {
5
- const form = document.getElementById('<%= form_id %>');
6
- const button = form.querySelector('button[type=submit]');
7
- form.addEventListener('ajax:before', function() {
8
- button.disabled = true;
9
- });
10
- form.addEventListener('ajax:complete', function() {
11
- button.disabled = false;
12
- });
13
- });
14
- </script>
15
- -->
@@ -1,21 +0,0 @@
1
- {
2
- const form = document.getElementById('<%= form_id %>');
3
-
4
- let errors = form.querySelector('ol.errors');
5
- let data = '';
6
-
7
- if (!errors) {
8
- errors = document.createElement('ol');
9
- errors.classList.add('errors');
10
- }
11
-
12
- <% entity.errors.full_messages.each do |message| %>
13
- data += '<li><%= j message %></li>';
14
- <% end %>
15
-
16
- errors.innerHTML = data;
17
-
18
- form.prepend(errors);
19
-
20
- errors.scrollIntoView();
21
- }