biovision-base 0.11.180127 → 0.14.180326
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +23 -0
- data/app/assets/javascripts/biovision/base/biovision-sliders.js +12 -9
- data/app/assets/javascripts/biovision/base/biovision.js +187 -2
- data/app/assets/stylesheets/biovision/base/admin.scss +84 -40
- data/app/assets/stylesheets/biovision/base/biovision.scss +104 -44
- data/app/assets/stylesheets/biovision/base/buttons/buttons-common.scss +95 -0
- data/app/assets/stylesheets/biovision/base/buttons/buttons-rounded.scss +26 -0
- data/app/assets/stylesheets/biovision/base/default.scss +2 -2
- data/app/assets/stylesheets/biovision/base/default_admin.scss +1 -1
- data/app/assets/stylesheets/biovision/base/default_application.scss +1 -1
- data/app/assets/stylesheets/biovision/base/themes/simple-layout.scss +115 -0
- data/app/assets/stylesheets/biovision/base/users.scss +15 -0
- data/app/controllers/agents_controller.rb +3 -3
- data/app/controllers/authentication_controller.rb +4 -4
- data/app/controllers/browsers_controller.rb +3 -3
- data/app/controllers/codes_controller.rb +2 -2
- data/app/controllers/editable_pages_controller.rb +6 -5
- data/app/controllers/index_controller.rb +1 -1
- data/app/controllers/media_files_controller.rb +3 -3
- data/app/controllers/media_folders_controller.rb +3 -3
- data/app/controllers/metrics_controller.rb +1 -1
- data/app/controllers/my/index_controller.rb +2 -0
- data/app/controllers/my/profiles_controller.rb +15 -9
- data/app/controllers/privilege_groups_controller.rb +2 -2
- data/app/controllers/privileges_controller.rb +3 -3
- data/app/controllers/stored_values_controller.rb +2 -2
- data/app/controllers/tokens_controller.rb +2 -2
- data/app/controllers/users_controller.rb +26 -10
- data/app/helpers/biovision_helper.rb +13 -2
- data/app/helpers/biovision_users_helper.rb +20 -5
- data/app/helpers/codes_helper.rb +1 -1
- data/app/helpers/editable_pages_helper.rb +1 -1
- data/app/helpers/languages_helper.rb +18 -0
- data/app/helpers/media_helper.rb +2 -2
- data/app/helpers/privileges_helper.rb +2 -2
- data/app/helpers/stored_values_helper.rb +1 -1
- data/app/helpers/tracking_helper.rb +2 -2
- data/app/models/editable_page.rb +10 -1
- data/app/models/user.rb +17 -23
- data/app/services/user_manager.rb +15 -18
- data/app/services/user_profile_handler.rb +28 -0
- data/app/uploaders/avatar_uploader.rb +1 -5
- data/app/uploaders/editable_page_image_uploader.rb +1 -1
- data/app/views/admin/agents/entity/_in_list.html.erb +3 -3
- data/app/views/admin/agents/show.html.erb +10 -2
- data/app/views/admin/browsers/entity/_in_list.html.erb +3 -3
- data/app/views/admin/browsers/show.html.erb +2 -2
- data/app/views/admin/codes/entity/_in_list.html.erb +1 -1
- data/app/views/admin/codes/show.html.erb +1 -1
- data/app/views/admin/editable_pages/entity/_in_list.html.erb +7 -1
- data/app/views/admin/editable_pages/show.html.erb +26 -19
- data/app/views/admin/feedback_requests/entity/_in_list.html.erb +1 -1
- data/app/views/admin/index/_biovision_base.html.erb +1 -0
- data/app/views/admin/media_files/entity/_in_list.html.erb +1 -1
- data/app/views/admin/media_files/show.html.erb +2 -2
- data/app/views/admin/media_folders/entity/_in_list.html.erb +2 -2
- data/app/views/admin/media_folders/files.html.erb +1 -1
- data/app/views/admin/media_folders/show.html.erb +6 -4
- data/app/views/admin/metrics/_list.html.erb +2 -2
- data/app/views/admin/metrics/show.html.erb +2 -2
- data/app/views/admin/privilege_groups/entity/_in_list.html.erb +1 -1
- data/app/views/admin/privilege_groups/show.html.erb +1 -1
- data/app/views/admin/privileges/entity/_in_list.html.erb +4 -4
- data/app/views/admin/privileges/show.html.erb +4 -4
- data/app/views/admin/privileges/users.html.erb +1 -1
- data/app/views/admin/stored_values/entity/_in_list.html.erb +1 -1
- data/app/views/admin/stored_values/show.html.erb +1 -1
- data/app/views/admin/tokens/entity/_in_list.html.erb +2 -2
- data/app/views/admin/tokens/show.html.erb +2 -2
- data/app/views/admin/users/codes.html.erb +1 -1
- data/app/views/admin/users/entity/_in_list.html.erb +3 -2
- data/app/views/admin/users/entity/_privilege.html.erb +1 -1
- data/app/views/admin/users/entity/_profile.html.erb +17 -0
- data/app/views/admin/users/privileges.html.erb +1 -1
- data/app/views/admin/users/search.jbuilder +2 -2
- data/app/views/admin/users/show.html.erb +34 -49
- data/app/views/admin/users/tokens.html.erb +1 -1
- data/app/views/agents/_agent.jbuilder +1 -1
- data/app/views/agents/edit.html.erb +1 -1
- data/app/views/authentication/_form.html.erb +1 -1
- data/app/views/authentication/create.jbuilder +10 -0
- data/app/views/browsers/edit.html.erb +1 -1
- data/app/views/codes/edit.html.erb +1 -1
- data/app/views/editable_pages/_form.html.erb +116 -61
- data/app/views/editable_pages/edit.html.erb +1 -1
- data/app/views/index/index.html.erb +8 -6
- data/app/views/index/index/_custom_dashboard.html.erb +0 -0
- data/app/views/index/index/_default_dashboard.html.erb +2 -0
- data/app/views/index/index/_editable.html.erb +9 -0
- data/app/views/layouts/admin/_header.html.erb +1 -1
- data/app/views/layouts/application/_header.html.erb +1 -1
- data/app/views/layouts/application/header/authentication/_links.html.erb +3 -3
- data/app/views/layouts/application/header/authentication/_plate.html.erb +1 -1
- data/app/views/layouts/profile.html.erb +23 -0
- data/app/views/layouts/profile/_footer.html.erb +11 -0
- data/app/views/layouts/profile/_header.html.erb +9 -0
- data/app/views/layouts/profile/header/_navigation.html.erb +0 -0
- data/app/views/media_files/edit.html.erb +1 -1
- data/app/views/media_folders/_form.html.erb +0 -2
- data/app/views/media_folders/edit.html.erb +1 -1
- data/app/views/media_folders/new.html.erb +1 -1
- data/app/views/metrics/edit.html.erb +2 -2
- data/app/views/my/index/index.html.erb +9 -14
- data/app/views/my/index/index/_dashboard.html.erb +12 -0
- data/app/views/my/index/index/_sidebar.html.erb +11 -0
- data/app/views/my/login_attempts/index.html.erb +1 -1
- data/app/views/my/profiles/_nav_item.html.erb +1 -1
- data/app/views/my/profiles/edit.js.erb +1 -0
- data/app/views/my/profiles/edit/_form.html.erb +130 -116
- data/app/views/my/profiles/edit/form/_profile_data.html.erb +53 -0
- data/app/views/my/profiles/new.js.erb +1 -0
- data/app/views/my/profiles/new/_form.html.erb +100 -53
- data/app/views/my/tokens/_toggleable.html.erb +1 -1
- data/app/views/my/tokens/index.html.erb +1 -1
- data/app/views/privilege_groups/edit.html.erb +1 -1
- data/app/views/privileges/edit.html.erb +1 -1
- data/app/views/profiles/_profile.html.erb +5 -6
- data/app/views/shared/_pagination.jbuilder +4 -0
- data/app/views/shared/admin/_list_with_priority.html.erb +6 -1
- data/app/views/shared/forms/_list_of_errors.js.erb +2 -0
- data/app/views/shared/forms/_wysiwyg.html.erb +11 -0
- data/app/views/shared/forms/errors.js.erb +5 -0
- data/app/views/stored_values/edit.html.erb +1 -1
- data/app/views/tokens/edit.html.erb +1 -1
- data/app/views/users/_form.html.erb +141 -83
- data/app/views/users/check.jbuilder +4 -0
- data/app/views/users/edit.html.erb +1 -1
- data/app/views/users/form/_profile_data.html.erb +53 -0
- data/app/views/users/new.html.erb +1 -1
- data/config/locales/common-en.yml +2 -0
- data/config/locales/common-ru.yml +2 -0
- data/config/locales/editable-pages-en.yml +5 -4
- data/config/locales/editable-pages-ru.yml +5 -4
- data/config/locales/users-en.yml +388 -0
- data/config/locales/users-ru.yml +8 -3
- data/config/routes.rb +127 -103
- data/db/migrate/20170302000001_create_users.rb +2 -0
- data/db/migrate/20170320000000_create_editable_pages.rb +1 -1
- data/db/migrate/20180321000000_add_profile_data_to_users.rb +31 -0
- data/lib/biovision/base/base_methods.rb +37 -7
- data/lib/biovision/base/engine.rb +1 -1
- data/lib/biovision/base/privilege_methods.rb +1 -1
- data/lib/biovision/base/version.rb +1 -1
- metadata +27 -6
- data/app/assets/stylesheets/biovision/base/buttons.scss +0 -195
- data/app/assets/stylesheets/biovision/base/layout.scss +0 -193
- data/app/views/editable_pages/form/_ckeditor.html.erb +0 -11
- data/db/migrate/20170302000002_create_user_profiles.rb +0 -21
@@ -1,8 +1,17 @@
|
|
1
1
|
module BiovisionUsersHelper
|
2
2
|
def genders_for_select
|
3
3
|
genders = [[t(:not_selected), '']]
|
4
|
-
|
5
|
-
|
4
|
+
genders + UserProfileHandler::GENDERS.keys.map { |k| [gender_name(k), k] }
|
5
|
+
end
|
6
|
+
|
7
|
+
# @param [Integer] gender_id
|
8
|
+
def gender_name(gender_id)
|
9
|
+
prefix = 'activerecord.attributes.user_profile.genders.'
|
10
|
+
if UserProfileHandler::GENDERS.key?(gender_id)
|
11
|
+
t("#{prefix}.#{UserProfileHandler::GENDERS[gender_id]}")
|
12
|
+
else
|
13
|
+
t(:not_selected)
|
14
|
+
end
|
6
15
|
end
|
7
16
|
|
8
17
|
# @param [User] entity
|
@@ -18,7 +27,7 @@ module BiovisionUsersHelper
|
|
18
27
|
return I18n.t(:anonymous) if entity.nil?
|
19
28
|
|
20
29
|
text = entity.profile_name
|
21
|
-
link_to(text, admin_user_path(entity.id), class: 'profile')
|
30
|
+
link_to(text, admin_user_path(id: entity.id), class: 'profile')
|
22
31
|
end
|
23
32
|
|
24
33
|
# @param [User] entity
|
@@ -30,7 +39,7 @@ module BiovisionUsersHelper
|
|
30
39
|
|
31
40
|
# @param [Token] entity
|
32
41
|
def admin_token_link(entity)
|
33
|
-
link_to entity.name, admin_token_path(entity.id)
|
42
|
+
link_to entity.name, admin_token_path(id: entity.id)
|
34
43
|
end
|
35
44
|
|
36
45
|
# @param [User] entity
|
@@ -42,6 +51,12 @@ module BiovisionUsersHelper
|
|
42
51
|
end
|
43
52
|
end
|
44
53
|
|
54
|
+
# @param [User] entity
|
55
|
+
def user_image_tiny(entity)
|
56
|
+
versions = "#{entity.image.tiny_2x.url} 2x"
|
57
|
+
image_tag(entity.image.tiny.url, alt: entity.profile_name, srcset: versions)
|
58
|
+
end
|
59
|
+
|
45
60
|
# @param [User] entity
|
46
61
|
def user_image_preview(entity)
|
47
62
|
versions = "#{entity.image.preview_2x.url} 2x"
|
@@ -50,7 +65,7 @@ module BiovisionUsersHelper
|
|
50
65
|
|
51
66
|
# @param [User] entity
|
52
67
|
def user_image_profile(entity)
|
53
|
-
versions = "#{entity.image.
|
68
|
+
versions = "#{entity.image.big.url} 2x"
|
54
69
|
image_tag(entity.image.profile.url, alt: entity.profile_name, srcset: versions)
|
55
70
|
end
|
56
71
|
|
data/app/helpers/codes_helper.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module LanguagesHelper
|
2
|
+
# @param [Language] entity
|
3
|
+
def language_name(entity)
|
4
|
+
return t(:not_set) if entity.nil?
|
5
|
+
|
6
|
+
t("languages.#{entity.slug}", default: entity.slug)
|
7
|
+
end
|
8
|
+
|
9
|
+
# @param [Boolean] include_blank
|
10
|
+
def languages_for_select(include_blank = true)
|
11
|
+
options = []
|
12
|
+
options << [t(:not_set), ''] if include_blank
|
13
|
+
Language.ordered_by_priority.each do |language|
|
14
|
+
options << ["#{language.code}: #{language_name(language)}", language.id]
|
15
|
+
end
|
16
|
+
options
|
17
|
+
end
|
18
|
+
end
|
data/app/helpers/media_helper.rb
CHANGED
@@ -2,12 +2,12 @@ module MediaHelper
|
|
2
2
|
# @param [MediaFolder] entity
|
3
3
|
# @param [String] text
|
4
4
|
def admin_media_folder_link(entity, text = entity.name)
|
5
|
-
link_to(text, admin_media_folder_path(entity.id))
|
5
|
+
link_to(text, admin_media_folder_path(id: entity.id))
|
6
6
|
end
|
7
7
|
|
8
8
|
# @param [MediaFile] entity
|
9
9
|
def admin_media_file_link(entity)
|
10
|
-
link_to(entity.name, admin_media_file_path(entity.id))
|
10
|
+
link_to(entity.name, admin_media_file_path(id: entity.id))
|
11
11
|
end
|
12
12
|
|
13
13
|
# @param [MediaFolder|MediaFile] entity
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module PrivilegesHelper
|
2
2
|
# @param [Privilege] entity
|
3
3
|
def admin_privilege_link(entity)
|
4
|
-
link_to(entity.name, admin_privilege_path(entity.id))
|
4
|
+
link_to(entity.name, admin_privilege_path(id: entity.id))
|
5
5
|
end
|
6
6
|
|
7
7
|
# @param [PrivilegeGroup] entity
|
8
8
|
def admin_privilege_group_link(entity)
|
9
|
-
link_to(entity.name, admin_privilege_group_path(entity.id))
|
9
|
+
link_to(entity.name, admin_privilege_group_path(id: entity.id))
|
10
10
|
end
|
11
11
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module TrackingHelper
|
2
2
|
# @param [Agent] entity
|
3
3
|
def admin_agent_link(entity)
|
4
|
-
link_to(entity.name, admin_agent_path(entity.id))
|
4
|
+
link_to(entity.name, admin_agent_path(id: entity.id))
|
5
5
|
end
|
6
6
|
|
7
7
|
# @param [Browser] entity
|
8
8
|
def admin_browser_link(entity)
|
9
|
-
link_to(entity.name, admin_browser_path(entity.id))
|
9
|
+
link_to(entity.name, admin_browser_path(id: entity.id))
|
10
10
|
end
|
11
11
|
|
12
12
|
def browsers_for_select
|
data/app/models/editable_page.rb
CHANGED
@@ -34,13 +34,22 @@ class EditablePage < ApplicationRecord
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def self.entity_parameters
|
37
|
-
%i(image name title keywords description body)
|
37
|
+
%i(image name title keywords description body language_id)
|
38
38
|
end
|
39
39
|
|
40
40
|
def self.creation_parameters
|
41
41
|
entity_parameters + %i(slug)
|
42
42
|
end
|
43
43
|
|
44
|
+
# @param [String] slug
|
45
|
+
# @param [String] language_code
|
46
|
+
def self.find_localized(slug, language_code = nil)
|
47
|
+
language = Language.find_by(code: language_code)
|
48
|
+
criteria = { slug: slug }
|
49
|
+
instance = find_by(criteria.merge(language: language))
|
50
|
+
instance || find_by(criteria)
|
51
|
+
end
|
52
|
+
|
44
53
|
# @param [Integer] delta
|
45
54
|
def change_priority(delta)
|
46
55
|
new_priority = priority + delta
|
data/app/models/user.rb
CHANGED
@@ -13,6 +13,11 @@ class User < ApplicationRecord
|
|
13
13
|
NOTICE_LIMIT = 255
|
14
14
|
PHONE_LIMIT = 50
|
15
15
|
|
16
|
+
EMAIL_PATTERN = /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z0-9][-a-z0-9]+)\z/i
|
17
|
+
SCREEN_NAME_LIMIT = 30
|
18
|
+
SCREEN_NAME_PATTERN = /\A[a-z0-9_]{1,30}\z/i
|
19
|
+
SCREEN_NAME_PATTERN_HTML = '^[a-zA-Z0-9_]{1,30}$'
|
20
|
+
|
16
21
|
toggleable %i(allow_login bot email_confirmed phone_confirmed allow_mail)
|
17
22
|
|
18
23
|
has_secure_password
|
@@ -22,7 +27,6 @@ class User < ApplicationRecord
|
|
22
27
|
belongs_to :language, optional: true, counter_cache: true
|
23
28
|
belongs_to :agent, optional: true
|
24
29
|
belongs_to :inviter, class_name: User.to_s, optional: true
|
25
|
-
has_one :user_profile, dependent: :destroy
|
26
30
|
has_many :invitees, class_name: User.to_s, foreign_key: :inviter_id, dependent: :nullify
|
27
31
|
has_many :tokens, dependent: :delete_all
|
28
32
|
has_many :codes, dependent: :delete_all
|
@@ -34,11 +38,10 @@ class User < ApplicationRecord
|
|
34
38
|
|
35
39
|
before_save :normalize_slug
|
36
40
|
before_save :prepare_search_string
|
37
|
-
after_create { UserProfile.create(user: self) }
|
38
41
|
|
39
42
|
validates_presence_of :screen_name, :email
|
40
|
-
validates_format_of :screen_name, with:
|
41
|
-
validates_format_of :email, with:
|
43
|
+
validates_format_of :screen_name, with: SCREEN_NAME_PATTERN, if: :native_slug?
|
44
|
+
validates_format_of :email, with: EMAIL_PATTERN
|
42
45
|
validates :screen_name, uniqueness: { case_sensitive: false }
|
43
46
|
validates :email, uniqueness: { case_sensitive: false }
|
44
47
|
validates_length_of :slug, maximum: SLUG_LIMIT
|
@@ -54,15 +57,16 @@ class User < ApplicationRecord
|
|
54
57
|
scope :screen_name_like, ->(val) { where('screen_name ilike ?', "%#{val}%") unless val.blank? }
|
55
58
|
scope :search, ->(q) { where('search_string like ?', "%#{q.downcase}%") unless q.blank? }
|
56
59
|
scope :filtered, ->(f) { email_like(f[:email]).screen_name_like(f[:screen_name]) }
|
60
|
+
scope :list_for_administration, -> { order('id desc') }
|
57
61
|
|
58
62
|
# @param [Integer] page
|
59
63
|
# @param [String] search_query
|
60
64
|
def self.page_for_administration(page, search_query = '')
|
61
|
-
search(search_query).
|
65
|
+
list_for_administration.search(search_query).page(page).per(PER_PAGE)
|
62
66
|
end
|
63
67
|
|
64
68
|
def self.profile_parameters
|
65
|
-
%i(image allow_mail)
|
69
|
+
%i(image allow_mail birthday)
|
66
70
|
end
|
67
71
|
|
68
72
|
def self.sensitive_parameters
|
@@ -87,10 +91,6 @@ class User < ApplicationRecord
|
|
87
91
|
(min..max)
|
88
92
|
end
|
89
93
|
|
90
|
-
def profile
|
91
|
-
user_profile
|
92
|
-
end
|
93
|
-
|
94
94
|
# Name to be shown as profile
|
95
95
|
#
|
96
96
|
# This can be redefined for cases when something other than screen name should
|
@@ -102,14 +102,14 @@ class User < ApplicationRecord
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def name_for_letter
|
105
|
-
|
105
|
+
profile_data['name'].blank? ? profile_name : profile_data['name']
|
106
106
|
end
|
107
107
|
|
108
108
|
# @param [Boolean] include_patronymic
|
109
109
|
def full_name(include_patronymic = false)
|
110
110
|
result = [name_for_letter]
|
111
|
-
result <<
|
112
|
-
result <<
|
111
|
+
result << profile_data['patronymic'].to_s.strip if include_patronymic
|
112
|
+
result << profile_data['surname'].to_s.strip
|
113
113
|
result.compact.join(' ')
|
114
114
|
end
|
115
115
|
|
@@ -124,18 +124,12 @@ class User < ApplicationRecord
|
|
124
124
|
private
|
125
125
|
|
126
126
|
def normalize_slug
|
127
|
-
|
128
|
-
self.slug = screen_name.downcase
|
129
|
-
else
|
130
|
-
self.slug = slug.downcase
|
131
|
-
end
|
127
|
+
self.slug = (native_slug? ? screen_name : slug).downcase
|
132
128
|
end
|
133
129
|
|
134
130
|
def prepare_search_string
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
end
|
139
|
-
self.search_string = new_string.downcase
|
131
|
+
string = "#{slug} #{email} #{UserProfileHandler.search_string(self)}"
|
132
|
+
|
133
|
+
self.search_string = string.downcase
|
140
134
|
end
|
141
135
|
end
|
@@ -6,27 +6,24 @@ class UserManager
|
|
6
6
|
@user = user
|
7
7
|
end
|
8
8
|
|
9
|
-
# @param [Hash]
|
10
|
-
# @param [Hash]
|
11
|
-
def self.create(
|
12
|
-
user = User.new(
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
profile = nil
|
18
|
-
end
|
19
|
-
{ user: user, profile: profile }
|
9
|
+
# @param [Hash] parameters
|
10
|
+
# @param [Hash] profile
|
11
|
+
def self.create(parameters, profile)
|
12
|
+
user = User.new(parameters)
|
13
|
+
|
14
|
+
user.profile_data = UserProfileHandler.clean_parameters(profile)
|
15
|
+
|
16
|
+
{ user: user, profile: user.profile_data }
|
20
17
|
end
|
21
18
|
|
22
|
-
# @param [Hash]
|
23
|
-
# @param [Hash]
|
24
|
-
def update(
|
19
|
+
# @param [Hash] parameters
|
20
|
+
# @param [Hash] profile
|
21
|
+
def update(parameters, profile)
|
25
22
|
raise 'User is not set' if @user.nil?
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
parameters[:profile_data] = UserProfileHandler.clean_parameters(profile)
|
24
|
+
|
25
|
+
@user.update(parameters)
|
29
26
|
|
30
|
-
{ user: @user, profile:
|
27
|
+
{ user: @user, profile: @user.profile_data }
|
31
28
|
end
|
32
29
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class UserProfileHandler
|
2
|
+
GENDERS = { 0 => 'female', 1 => 'male' }
|
3
|
+
|
4
|
+
def self.allowed_parameters
|
5
|
+
%w(gender name patronymic surname)
|
6
|
+
end
|
7
|
+
|
8
|
+
# @param [Hash] input
|
9
|
+
def self.clean_parameters(input)
|
10
|
+
if input.key?('gender')
|
11
|
+
gender_key = input['gender'].to_i
|
12
|
+
gender = GENDERS.key?(gender_key) ? gender_key : nil
|
13
|
+
else
|
14
|
+
gender = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
output = { gender: gender }
|
18
|
+
(allowed_parameters - ['gender']).each do |parameter|
|
19
|
+
output[parameter] = input.key?(parameter) ? input[parameter].to_s : nil
|
20
|
+
end
|
21
|
+
output
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param [User] user
|
25
|
+
def self.search_string(user)
|
26
|
+
"#{user.profile_data['surname']} #{user.profile_data['name']}"
|
27
|
+
end
|
28
|
+
end
|
@@ -32,11 +32,7 @@ class AvatarUploader < CarrierWave::Uploader::Base
|
|
32
32
|
resize_to_fit(640, 640)
|
33
33
|
end
|
34
34
|
|
35
|
-
version :
|
36
|
-
resize_to_fit(640, 640)
|
37
|
-
end
|
38
|
-
|
39
|
-
version :profile, from_version: :profile_2x do
|
35
|
+
version :profile, from_version: :big do
|
40
36
|
resize_to_fit(320, 320)
|
41
37
|
end
|
42
38
|
|
@@ -3,11 +3,11 @@
|
|
3
3
|
<% unless entity.browser.nil? %>
|
4
4
|
<div class="info"><%= admin_browser_link(entity.browser) %></div>
|
5
5
|
<% end %>
|
6
|
-
<%= render partial: 'shared/admin/toggleable', locals: { entity: entity, url: toggle_admin_agent_path(entity.id) } %>
|
6
|
+
<%= render partial: 'shared/admin/toggleable', locals: { entity: entity, url: toggle_admin_agent_path(id: entity.id) } %>
|
7
7
|
<ul class="actions">
|
8
8
|
<li class="lockable <%= entity.locked? ? 'hidden' : '' %>">
|
9
|
-
<%= edit_icon edit_agent_path(entity) %>
|
9
|
+
<%= edit_icon edit_agent_path(id: entity.id) %>
|
10
10
|
</li>
|
11
|
-
<%= render partial: 'shared/actions/locks', locals: { path: lock_admin_agent_path(entity), entity: entity } %>
|
11
|
+
<%= render partial: 'shared/actions/locks', locals: { path: lock_admin_agent_path(id: entity.id), entity: entity } %>
|
12
12
|
</ul>
|
13
13
|
</div>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<ul class="actions">
|
11
11
|
<li><%= return_icon(admin_agents_path) %></li>
|
12
12
|
<% unless @entity.locked? %>
|
13
|
-
<li><%= edit_icon edit_agent_path(@entity.id) %></li>
|
13
|
+
<li><%= edit_icon edit_agent_path(id: @entity.id) %></li>
|
14
14
|
<li class="danger"><%= destroy_icon @entity %></li>
|
15
15
|
<% end %>
|
16
16
|
</ul>
|
@@ -24,5 +24,13 @@
|
|
24
24
|
</dl>
|
25
25
|
<% end %>
|
26
26
|
|
27
|
-
<%=
|
27
|
+
<%=
|
28
|
+
render(
|
29
|
+
partial: 'shared/admin/toggleable',
|
30
|
+
locals: {
|
31
|
+
entity: @entity,
|
32
|
+
url: toggle_admin_agent_path(id: @entity.id)
|
33
|
+
}
|
34
|
+
)
|
35
|
+
%>
|
28
36
|
</article>
|
@@ -3,12 +3,12 @@
|
|
3
3
|
<div class="info">
|
4
4
|
<%= t(:agent_count, count: entity.agents_count) %>
|
5
5
|
</div>
|
6
|
-
<%= render partial: 'shared/admin/toggleable', locals: { entity: entity, url: toggle_admin_browser_path(entity.id) } %>
|
6
|
+
<%= render partial: 'shared/admin/toggleable', locals: { entity: entity, url: toggle_admin_browser_path(id: entity.id) } %>
|
7
7
|
|
8
8
|
<ul class="actions">
|
9
9
|
<li class="lockable <%= entity.locked? ? 'hidden' : '' %>">
|
10
|
-
<%= edit_icon edit_browser_path(entity.id) %>
|
10
|
+
<%= edit_icon edit_browser_path(id: entity.id) %>
|
11
11
|
</li>
|
12
|
-
<%= render partial: 'shared/actions/locks', locals: { entity: entity, path: lock_admin_browser_path(entity) } %>
|
12
|
+
<%= render partial: 'shared/actions/locks', locals: { entity: entity, path: lock_admin_browser_path(id: entity.id) } %>
|
13
13
|
</ul>
|
14
14
|
</div>
|
@@ -10,12 +10,12 @@
|
|
10
10
|
<li><%= create_icon new_browser_path %></li>
|
11
11
|
<li><%= return_icon admin_browsers_path %></li>
|
12
12
|
<% unless @entity.locked? %>
|
13
|
-
<li><%= edit_icon edit_browser_path(@entity) %></li>
|
13
|
+
<li><%= edit_icon edit_browser_path(id: @entity.id) %></li>
|
14
14
|
<li class="danger"><%= destroy_icon @entity %></li>
|
15
15
|
<% end %>
|
16
16
|
</ul>
|
17
17
|
|
18
|
-
<%= render partial: 'shared/admin/toggleable', locals: { entity: @entity, url: toggle_admin_browser_path(@entity.id) } %>
|
18
|
+
<%= render partial: 'shared/admin/toggleable', locals: { entity: @entity, url: toggle_admin_browser_path(id: @entity.id) } %>
|
19
19
|
|
20
20
|
<section id="browser-agents">
|
21
21
|
<h2><%= t('admin.agents.index.heading') %></h2>
|