biovision-base 0.36.190526.0 → 0.37.190607.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
  SHA256:
3
- metadata.gz: 25a60b6a83c799dd28363fb20c326010de89318358e923459eee1a952e5c4581
4
- data.tar.gz: 21c006b675139987f71e209ee9b5e49026152a15d0f4a3f5ba9332d6aab4febb
3
+ metadata.gz: 53f6745ccdb17530c51d58bc412f980bb9ec1e47e54a858a5aa207b117c9f6c1
4
+ data.tar.gz: 4fb31a1e0780d1984c30225c05f74c24934d706350009a007bb24f8ded0f43e6
5
5
  SHA512:
6
- metadata.gz: 480dc37953cba27517f9a99927ea704433a2af1241fe229c28d20a693b45cb8feea15ee39915a8639edebd1782c9a81ff80e01b4656c26da328d565483406425
7
- data.tar.gz: b8a978a75a8be80078f11a3a6a57001eddf8a719ca97255b401420e09b79cb2848f7badcba3f512b35f027a094be0dffdcdddc551c2f820735d8d6ea0d123eb2
6
+ metadata.gz: 7b812126a16490736dda1d3af3b38fec3de5bbcaf674c603f571bee8db5274131c77ea6c6420593e1dc9d19a335d0197eb91daa210735935a45d06b075eaf929
7
+ data.tar.gz: 8d2efd4a4972f0e2a17a0f8fac8b4f403b5d495ef0c94c700914bd1bf5706bad0b901092c1ff591c8e04373f48c741288c731203812320c0bfb82420f787b8d8
@@ -168,19 +168,21 @@ Biovision.components.carousel = {
168
168
  */
169
169
  newOffset: function (slider) {
170
170
  const firstSlide = slider.container.querySelector(".carousel-item:first-of-type");
171
- const rightMargin = window.getComputedStyle(firstSlide).marginRight;
172
- const slideWidth = firstSlide.offsetWidth + parseInt(rightMargin);
173
- let newMargin = -(slideWidth * slider.current);
174
- const slidesLength = slideWidth * slider.items.length;
175
- const maxOffset = slidesLength - slider.container.offsetWidth;
176
- const delta = newMargin + maxOffset;
171
+ if (firstSlide) {
172
+ const rightMargin = window.getComputedStyle(firstSlide).marginRight;
173
+ const slideWidth = firstSlide.offsetWidth + parseInt(rightMargin);
174
+ let newMargin = -(slideWidth * slider.current);
175
+ const slidesLength = slideWidth * slider.items.length;
176
+ const maxOffset = slidesLength - slider.container.offsetWidth;
177
+ const delta = newMargin + maxOffset;
177
178
 
178
- if (delta < 0) {
179
- newMargin -= delta;
180
- slider["current"] = slider["maxItem"];
181
- }
179
+ if (delta < 0) {
180
+ newMargin -= delta;
181
+ slider["current"] = slider["maxItem"];
182
+ }
182
183
 
183
- firstSlide.style.marginLeft = String(newMargin) + "px";
184
+ firstSlide.style.marginLeft = String(newMargin) + "px";
185
+ }
184
186
  },
185
187
  /**
186
188
  * Determine maximum item number so that right margin remains minimal
@@ -189,10 +191,12 @@ Biovision.components.carousel = {
189
191
  */
190
192
  setMaxItem: function (slider) {
191
193
  const firstSlide = slider.container.querySelector(".carousel-item:first-of-type");
192
- const rightMargin = window.getComputedStyle(firstSlide).marginRight;
193
- const slideWidth = firstSlide.offsetWidth + parseInt(rightMargin);
194
- const maxCount = slider.container.offsetWidth / slideWidth;
195
- slider["maxItem"] = slider.items.length - Math.floor(maxCount);
194
+ if (firstSlide) {
195
+ const rightMargin = window.getComputedStyle(firstSlide).marginRight;
196
+ const slideWidth = firstSlide.offsetWidth + parseInt(rightMargin);
197
+ const maxCount = slider.container.offsetWidth / slideWidth;
198
+ slider["maxItem"] = slider.items.length - Math.floor(maxCount);
199
+ }
196
200
  },
197
201
  /**
198
202
  * Handler for start of swipe
@@ -42,9 +42,9 @@ class BiovisionComponent < ApplicationRecord
42
42
  end
43
43
 
44
44
  # @param [String] slug
45
- # @param [String] value
45
+ # @param value
46
46
  def []=(slug, value)
47
- parameters[slug.to_s] = value.to_s
47
+ parameters[slug.to_s] = value
48
48
  save!
49
49
  end
50
50
  end
@@ -7,7 +7,8 @@ module Biovision
7
7
  # @param [Hash] parameters
8
8
  # @param [Code] code
9
9
  def handle(parameters, code)
10
- @user = User.new(parameters)
10
+ @user = User.new(parameters)
11
+ set_email_as_login if email_as_login?
11
12
  @manager = CodeManager::Invitation.new(code)
12
13
 
13
14
  use_invites? ? use_code : persist_user
@@ -31,8 +32,12 @@ module Biovision
31
32
  @component.settings['confirm_email']
32
33
  end
33
34
 
35
+ def email_as_login?
36
+ @component.settings['email_as_login']
37
+ end
38
+
34
39
  def require_email?
35
- @component.settings['require_email']
40
+ @component.settings['require_email'] || email_as_login?
36
41
  end
37
42
 
38
43
  protected
@@ -41,7 +46,10 @@ module Biovision
41
46
  # @return [Hash]
42
47
  def normalize_settings(data)
43
48
  result = {}
44
- flags = %w[open invite_only use_invites confirm_email require_email]
49
+ flags = %w[
50
+ open invite_only use_invites confirm_email email_as_login
51
+ require_email
52
+ ]
45
53
  flags.each { |f| result[f] = data[f].to_i == 1 }
46
54
  numbers = %w[invite_count]
47
55
  numbers.each { |f| result[f] = data[f].to_i }
@@ -88,11 +96,17 @@ module Biovision
88
96
 
89
97
  parameters = {
90
98
  code_type: CodeManager::Invitation.code_type,
91
- user: @user,
92
- quantity: quantity,
99
+ user: @user,
100
+ quantity: quantity,
93
101
  }
94
102
  Code.create(parameters)
95
103
  end
104
+
105
+ def set_email_as_login
106
+ @user.foreign_slug = true
107
+ @user.screen_name = @user.email
108
+ @user.slug = @user.email
109
+ end
96
110
  end
97
111
  end
98
112
  end
@@ -4,6 +4,6 @@
4
4
  <%= render 'admin/index/dashboard/editorial' %>
5
5
  <%= render 'admin/index/dashboard/biovision_links' if LinkBlock.table_exists? && LinkBlock.any? %>
6
6
  <%= render 'admin/index/dashboard/biovision_feedback' %>
7
- <% %w[partners post vote poll comment].each do |part| %>
7
+ <% %w[partners post vote poll comment testimonials].each do |part| %>
8
8
  <%= render "admin/index/dashboard/biovision_#{part}" if Gem.loaded_specs.key?("biovision-#{part}") %>
9
9
  <% end %>
@@ -1,4 +1,4 @@
1
1
  <%= render 'index/index/custom_dashboard' %>
2
- <% %w[post partners].each do |component| %>
2
+ <% %w[post testimonials partners].each do |component| %>
3
3
  <%= render "index/dashboard/biovision_#{component}" if Gem.loaded_specs.key?("biovision-#{component}") %>
4
4
  <% end %>
@@ -1,9 +1,10 @@
1
1
  <%=
2
2
  form_with(
3
- url: my_profile_path,
4
- method: :patch,
3
+ url: my_profile_path,
4
+ method: :patch,
5
5
  multipart: true,
6
- id: 'user-form'
6
+ id: 'user-form',
7
+ class: 'profile-form'
7
8
  ) do
8
9
  %>
9
10
  <%= render partial: 'shared/list_of_errors', locals: { entity: entity } %>
@@ -27,7 +28,7 @@
27
28
  file_field_tag(
28
29
  'user[image]',
29
30
  accept: 'image/jpeg,image/png',
30
- data: { image: 'user-image' }
31
+ data: { image: 'user-image' }
31
32
  )
32
33
  %>
33
34
  </figcaption>
@@ -85,9 +86,9 @@
85
86
  email_field_tag(
86
87
  'user[email]',
87
88
  entity.email,
88
- size: nil,
89
+ size: nil,
89
90
  maxlength: User::EMAIL_LIMIT,
90
- required: true
91
+ required: true
91
92
  )
92
93
  %>
93
94
  </dd>
@@ -100,7 +101,7 @@
100
101
  telephone_field_tag(
101
102
  'user[phone]',
102
103
  entity.phone,
103
- size: nil,
104
+ size: nil,
104
105
  maxlength: User::PHONE_LIMIT
105
106
  )
106
107
  %>
@@ -1,33 +1,57 @@
1
- <% model_name = entity.class.to_s.underscore %>
1
+ <%
2
+ component_handler ||= Biovision::Components::BaseComponent.handler('registration')
3
+ model_name = entity.class.to_s.underscore
4
+ %>
2
5
  <%=
3
6
  form_with(
4
7
  model: entity,
5
8
  scope: model_name,
6
- url: my_profile_path,
9
+ url: my_profile_path,
7
10
  class: 'new-my-profile',
8
- id: "#{model_name}-form",
9
- data: { check_url: check_my_profile_path }
11
+ id: "#{model_name}-form",
12
+ data: { check_url: check_my_profile_path }
10
13
  ) do |f|
11
14
  %>
12
15
  <%= render partial: 'shared/list_of_errors', locals: { entity: entity } %>
13
16
  <dl>
17
+ <% unless component_handler.email_as_login? %>
18
+ <dt>
19
+ <%= f.label :screen_name, t('activerecord.attributes.user.screen_name') %>
20
+ </dt>
21
+ <dd>
22
+ <%=
23
+ f.text_field(
24
+ :screen_name,
25
+ id: "#{model_name}_screen_name",
26
+ required: true,
27
+ maxlength: User::SCREEN_NAME_LIMIT,
28
+ pattern: User::SCREEN_NAME_PATTERN_HTML,
29
+ title: t('.guidelines.screen_name'),
30
+ data: { check: :screen_name }
31
+ )
32
+ %>
33
+ <div class="check-result-error" data-field="screen_name"></div>
34
+ <div class="guideline"><%= t('.guidelines.screen_name') %></div>
35
+ </dd>
36
+ <% end %>
14
37
  <dt>
15
- <%= f.label :screen_name, t('activerecord.attributes.user.screen_name') %>
38
+ <%= f.label :email, t('activerecord.attributes.user.email') %>
16
39
  </dt>
17
40
  <dd>
18
41
  <%=
19
- f.text_field(
20
- :screen_name,
21
- id: "#{model_name}_screen_name",
22
- required: true,
23
- maxlength: User::SCREEN_NAME_LIMIT,
24
- pattern: User::SCREEN_NAME_PATTERN_HTML,
25
- title: t('.guidelines.screen_name'),
26
- data: { check: :screen_name }
42
+ f.email_field(
43
+ :email,
44
+ id: "#{model_name}_email",
45
+ size: nil,
46
+ maxlength: User::EMAIL_LIMIT,
47
+ required: component_handler.require_email?,
48
+ data: { check: :email }
27
49
  )
28
50
  %>
29
- <div class="check-result-error hidden" data-field="screen_name"></div>
30
- <div class="guideline"><%= t('.guidelines.screen_name') %></div>
51
+ <div class="check-result-error" data-field="email"></div>
52
+ <% unless component_handler.email_as_login? %>
53
+ <div class="guideline"><%= t('.guidelines.email') %></div>
54
+ <% end %>
31
55
  </dd>
32
56
 
33
57
  <dt>
@@ -37,14 +61,14 @@
37
61
  <%=
38
62
  f.password_field(
39
63
  :password,
40
- id: "#{model_name}_password",
41
- required: true,
42
- size: nil,
64
+ id: "#{model_name}_password",
65
+ required: true,
66
+ size: nil,
43
67
  maxlength: 70,
44
- data: { check: :password }
68
+ data: { check: :password }
45
69
  )
46
70
  %>
47
- <div class="check-result-error hidden" data-field="password"></div>
71
+ <div class="check-result-error" data-field="password"></div>
48
72
  <div class="guideline"><%= t('.guidelines.password') %></div>
49
73
  </dd>
50
74
 
@@ -55,36 +79,18 @@
55
79
  <%=
56
80
  f.password_field(
57
81
  :password_confirmation,
58
- id: "#{model_name}_password_confirmation",
59
- required: true,
60
- size: nil,
82
+ id: "#{model_name}_password_confirmation",
83
+ required: true,
84
+ size: nil,
61
85
  maxlength: 70,
62
- data: { check: :password_confirmation }
86
+ data: { check: :password_confirmation }
63
87
  )
64
88
  %>
65
- <div class="check-result-error hidden" data-field="password_confirmation"></div>
89
+ <div class="check-result-error" data-field="password_confirmation"></div>
66
90
  <div class="guideline"><%= t('.guidelines.password_confirmation') %></div>
67
91
  </dd>
68
92
 
69
- <dt>
70
- <%= f.label :email, t('activerecord.attributes.user.email') %>
71
- </dt>
72
- <dd>
73
- <%=
74
- f.email_field(
75
- :email,
76
- id: "#{model_name}_email",
77
- size: nil,
78
- maxlength: User::EMAIL_LIMIT,
79
- required: local_assigns[:component_handler] && component_handler.require_email?,
80
- data: { check: :email }
81
- )
82
- %>
83
- <div class="check-result-error hidden" data-field="email"></div>
84
- <div class="guideline"><%= t('.guidelines.email') %></div>
85
- </dd>
86
-
87
- <% if local_assigns[:component_handler] && component_handler.use_invites? %>
93
+ <% if component_handler.use_invites? %>
88
94
  <dt>
89
95
  <%= label_tag :code, t('.invitation_code') %>
90
96
  </dt>
@@ -101,7 +107,7 @@
101
107
  }
102
108
  )
103
109
  %>
104
- <div class="check-result-error hidden" data-field="code"></div>
110
+ <div class="check-result-error" data-field="code"></div>
105
111
  </dd>
106
112
  <% end %>
107
113
  </dl>
@@ -40,10 +40,11 @@ ru:
40
40
  registration:
41
41
  name: "Регистрация"
42
42
  settings:
43
- open: "Открыта"
44
- invite_only: "Только по приглашениям"
45
43
  confirm_email: "Отправлять письмо для подтверждения почты сразу"
46
- use_invites: "Использовать приглашения"
47
- require_email: "Электронная почта обязательна при регистрации"
44
+ email_as_login: "Использовать электронную почту в качестве логина"
48
45
  invite_count: "Количество кодов приглашения после регистрации"
46
+ invite_only: "Только по приглашениям"
47
+ open: "Открыта"
48
+ require_email: "Электронная почта обязательна при регистрации"
49
+ use_invites: "Использовать приглашения"
49
50
  invalid_code: "указан неверно"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Biovision
4
4
  module Base
5
- VERSION = '0.36.190526.0'
5
+ VERSION = '0.37.190607.0'
6
6
  end
7
7
  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.36.190526.0
4
+ version: 0.37.190607.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: 2019-05-25 00:00:00.000000000 Z
11
+ date: 2019-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails