biovision-base 0.36.190526.0 → 0.37.190607.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|