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 +4 -4
- data/app/assets/javascripts/biovision/base/components/carousel.js +19 -15
- data/app/models/biovision_component.rb +2 -2
- data/app/services/biovision/components/registration_component.rb +19 -5
- data/app/views/admin/index/_biovision_base.html.erb +1 -1
- data/app/views/index/index/_default_dashboard.html.erb +1 -1
- data/app/views/my/profiles/edit/_form.html.erb +8 -7
- data/app/views/my/profiles/new/_form.html.erb +51 -45
- data/config/locales/components-ru.yml +5 -4
- data/lib/biovision/base/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53f6745ccdb17530c51d58bc412f980bb9ec1e47e54a858a5aa207b117c9f6c1
|
4
|
+
data.tar.gz: 4fb31a1e0780d1984c30225c05f74c24934d706350009a007bb24f8ded0f43e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
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
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
179
|
+
if (delta < 0) {
|
180
|
+
newMargin -= delta;
|
181
|
+
slider["current"] = slider["maxItem"];
|
182
|
+
}
|
182
183
|
|
183
|
-
|
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
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
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
|
@@ -7,7 +7,8 @@ module Biovision
|
|
7
7
|
# @param [Hash] parameters
|
8
8
|
# @param [Code] code
|
9
9
|
def handle(parameters, code)
|
10
|
-
@user
|
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
|
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:
|
92
|
-
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,9 +1,10 @@
|
|
1
1
|
<%=
|
2
2
|
form_with(
|
3
|
-
url:
|
4
|
-
method:
|
3
|
+
url: my_profile_path,
|
4
|
+
method: :patch,
|
5
5
|
multipart: true,
|
6
|
-
id:
|
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:
|
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:
|
89
|
+
size: nil,
|
89
90
|
maxlength: User::EMAIL_LIMIT,
|
90
|
-
required:
|
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:
|
104
|
+
size: nil,
|
104
105
|
maxlength: User::PHONE_LIMIT
|
105
106
|
)
|
106
107
|
%>
|
@@ -1,33 +1,57 @@
|
|
1
|
-
<%
|
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:
|
9
|
+
url: my_profile_path,
|
7
10
|
class: 'new-my-profile',
|
8
|
-
id:
|
9
|
-
data:
|
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 :
|
38
|
+
<%= f.label :email, t('activerecord.attributes.user.email') %>
|
16
39
|
</dt>
|
17
40
|
<dd>
|
18
41
|
<%=
|
19
|
-
f.
|
20
|
-
:
|
21
|
-
id:
|
22
|
-
|
23
|
-
maxlength: User::
|
24
|
-
|
25
|
-
|
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
|
30
|
-
|
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:
|
41
|
-
required:
|
42
|
-
size:
|
64
|
+
id: "#{model_name}_password",
|
65
|
+
required: true,
|
66
|
+
size: nil,
|
43
67
|
maxlength: 70,
|
44
|
-
data:
|
68
|
+
data: { check: :password }
|
45
69
|
)
|
46
70
|
%>
|
47
|
-
<div class="check-result-error
|
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:
|
59
|
-
required:
|
60
|
-
size:
|
82
|
+
id: "#{model_name}_password_confirmation",
|
83
|
+
required: true,
|
84
|
+
size: nil,
|
61
85
|
maxlength: 70,
|
62
|
-
data:
|
86
|
+
data: { check: :password_confirmation }
|
63
87
|
)
|
64
88
|
%>
|
65
|
-
<div class="check-result-error
|
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
|
-
|
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
|
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
|
-
|
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: "указан неверно"
|
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.
|
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-
|
11
|
+
date: 2019-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|