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.
Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +23 -0
  3. data/app/assets/javascripts/biovision/base/biovision-sliders.js +12 -9
  4. data/app/assets/javascripts/biovision/base/biovision.js +187 -2
  5. data/app/assets/stylesheets/biovision/base/admin.scss +84 -40
  6. data/app/assets/stylesheets/biovision/base/biovision.scss +104 -44
  7. data/app/assets/stylesheets/biovision/base/buttons/buttons-common.scss +95 -0
  8. data/app/assets/stylesheets/biovision/base/buttons/buttons-rounded.scss +26 -0
  9. data/app/assets/stylesheets/biovision/base/default.scss +2 -2
  10. data/app/assets/stylesheets/biovision/base/default_admin.scss +1 -1
  11. data/app/assets/stylesheets/biovision/base/default_application.scss +1 -1
  12. data/app/assets/stylesheets/biovision/base/themes/simple-layout.scss +115 -0
  13. data/app/assets/stylesheets/biovision/base/users.scss +15 -0
  14. data/app/controllers/agents_controller.rb +3 -3
  15. data/app/controllers/authentication_controller.rb +4 -4
  16. data/app/controllers/browsers_controller.rb +3 -3
  17. data/app/controllers/codes_controller.rb +2 -2
  18. data/app/controllers/editable_pages_controller.rb +6 -5
  19. data/app/controllers/index_controller.rb +1 -1
  20. data/app/controllers/media_files_controller.rb +3 -3
  21. data/app/controllers/media_folders_controller.rb +3 -3
  22. data/app/controllers/metrics_controller.rb +1 -1
  23. data/app/controllers/my/index_controller.rb +2 -0
  24. data/app/controllers/my/profiles_controller.rb +15 -9
  25. data/app/controllers/privilege_groups_controller.rb +2 -2
  26. data/app/controllers/privileges_controller.rb +3 -3
  27. data/app/controllers/stored_values_controller.rb +2 -2
  28. data/app/controllers/tokens_controller.rb +2 -2
  29. data/app/controllers/users_controller.rb +26 -10
  30. data/app/helpers/biovision_helper.rb +13 -2
  31. data/app/helpers/biovision_users_helper.rb +20 -5
  32. data/app/helpers/codes_helper.rb +1 -1
  33. data/app/helpers/editable_pages_helper.rb +1 -1
  34. data/app/helpers/languages_helper.rb +18 -0
  35. data/app/helpers/media_helper.rb +2 -2
  36. data/app/helpers/privileges_helper.rb +2 -2
  37. data/app/helpers/stored_values_helper.rb +1 -1
  38. data/app/helpers/tracking_helper.rb +2 -2
  39. data/app/models/editable_page.rb +10 -1
  40. data/app/models/user.rb +17 -23
  41. data/app/services/user_manager.rb +15 -18
  42. data/app/services/user_profile_handler.rb +28 -0
  43. data/app/uploaders/avatar_uploader.rb +1 -5
  44. data/app/uploaders/editable_page_image_uploader.rb +1 -1
  45. data/app/views/admin/agents/entity/_in_list.html.erb +3 -3
  46. data/app/views/admin/agents/show.html.erb +10 -2
  47. data/app/views/admin/browsers/entity/_in_list.html.erb +3 -3
  48. data/app/views/admin/browsers/show.html.erb +2 -2
  49. data/app/views/admin/codes/entity/_in_list.html.erb +1 -1
  50. data/app/views/admin/codes/show.html.erb +1 -1
  51. data/app/views/admin/editable_pages/entity/_in_list.html.erb +7 -1
  52. data/app/views/admin/editable_pages/show.html.erb +26 -19
  53. data/app/views/admin/feedback_requests/entity/_in_list.html.erb +1 -1
  54. data/app/views/admin/index/_biovision_base.html.erb +1 -0
  55. data/app/views/admin/media_files/entity/_in_list.html.erb +1 -1
  56. data/app/views/admin/media_files/show.html.erb +2 -2
  57. data/app/views/admin/media_folders/entity/_in_list.html.erb +2 -2
  58. data/app/views/admin/media_folders/files.html.erb +1 -1
  59. data/app/views/admin/media_folders/show.html.erb +6 -4
  60. data/app/views/admin/metrics/_list.html.erb +2 -2
  61. data/app/views/admin/metrics/show.html.erb +2 -2
  62. data/app/views/admin/privilege_groups/entity/_in_list.html.erb +1 -1
  63. data/app/views/admin/privilege_groups/show.html.erb +1 -1
  64. data/app/views/admin/privileges/entity/_in_list.html.erb +4 -4
  65. data/app/views/admin/privileges/show.html.erb +4 -4
  66. data/app/views/admin/privileges/users.html.erb +1 -1
  67. data/app/views/admin/stored_values/entity/_in_list.html.erb +1 -1
  68. data/app/views/admin/stored_values/show.html.erb +1 -1
  69. data/app/views/admin/tokens/entity/_in_list.html.erb +2 -2
  70. data/app/views/admin/tokens/show.html.erb +2 -2
  71. data/app/views/admin/users/codes.html.erb +1 -1
  72. data/app/views/admin/users/entity/_in_list.html.erb +3 -2
  73. data/app/views/admin/users/entity/_privilege.html.erb +1 -1
  74. data/app/views/admin/users/entity/_profile.html.erb +17 -0
  75. data/app/views/admin/users/privileges.html.erb +1 -1
  76. data/app/views/admin/users/search.jbuilder +2 -2
  77. data/app/views/admin/users/show.html.erb +34 -49
  78. data/app/views/admin/users/tokens.html.erb +1 -1
  79. data/app/views/agents/_agent.jbuilder +1 -1
  80. data/app/views/agents/edit.html.erb +1 -1
  81. data/app/views/authentication/_form.html.erb +1 -1
  82. data/app/views/authentication/create.jbuilder +10 -0
  83. data/app/views/browsers/edit.html.erb +1 -1
  84. data/app/views/codes/edit.html.erb +1 -1
  85. data/app/views/editable_pages/_form.html.erb +116 -61
  86. data/app/views/editable_pages/edit.html.erb +1 -1
  87. data/app/views/index/index.html.erb +8 -6
  88. data/app/views/index/index/_custom_dashboard.html.erb +0 -0
  89. data/app/views/index/index/_default_dashboard.html.erb +2 -0
  90. data/app/views/index/index/_editable.html.erb +9 -0
  91. data/app/views/layouts/admin/_header.html.erb +1 -1
  92. data/app/views/layouts/application/_header.html.erb +1 -1
  93. data/app/views/layouts/application/header/authentication/_links.html.erb +3 -3
  94. data/app/views/layouts/application/header/authentication/_plate.html.erb +1 -1
  95. data/app/views/layouts/profile.html.erb +23 -0
  96. data/app/views/layouts/profile/_footer.html.erb +11 -0
  97. data/app/views/layouts/profile/_header.html.erb +9 -0
  98. data/app/views/layouts/profile/header/_navigation.html.erb +0 -0
  99. data/app/views/media_files/edit.html.erb +1 -1
  100. data/app/views/media_folders/_form.html.erb +0 -2
  101. data/app/views/media_folders/edit.html.erb +1 -1
  102. data/app/views/media_folders/new.html.erb +1 -1
  103. data/app/views/metrics/edit.html.erb +2 -2
  104. data/app/views/my/index/index.html.erb +9 -14
  105. data/app/views/my/index/index/_dashboard.html.erb +12 -0
  106. data/app/views/my/index/index/_sidebar.html.erb +11 -0
  107. data/app/views/my/login_attempts/index.html.erb +1 -1
  108. data/app/views/my/profiles/_nav_item.html.erb +1 -1
  109. data/app/views/my/profiles/edit.js.erb +1 -0
  110. data/app/views/my/profiles/edit/_form.html.erb +130 -116
  111. data/app/views/my/profiles/edit/form/_profile_data.html.erb +53 -0
  112. data/app/views/my/profiles/new.js.erb +1 -0
  113. data/app/views/my/profiles/new/_form.html.erb +100 -53
  114. data/app/views/my/tokens/_toggleable.html.erb +1 -1
  115. data/app/views/my/tokens/index.html.erb +1 -1
  116. data/app/views/privilege_groups/edit.html.erb +1 -1
  117. data/app/views/privileges/edit.html.erb +1 -1
  118. data/app/views/profiles/_profile.html.erb +5 -6
  119. data/app/views/shared/_pagination.jbuilder +4 -0
  120. data/app/views/shared/admin/_list_with_priority.html.erb +6 -1
  121. data/app/views/shared/forms/_list_of_errors.js.erb +2 -0
  122. data/app/views/shared/forms/_wysiwyg.html.erb +11 -0
  123. data/app/views/shared/forms/errors.js.erb +5 -0
  124. data/app/views/stored_values/edit.html.erb +1 -1
  125. data/app/views/tokens/edit.html.erb +1 -1
  126. data/app/views/users/_form.html.erb +141 -83
  127. data/app/views/users/check.jbuilder +4 -0
  128. data/app/views/users/edit.html.erb +1 -1
  129. data/app/views/users/form/_profile_data.html.erb +53 -0
  130. data/app/views/users/new.html.erb +1 -1
  131. data/config/locales/common-en.yml +2 -0
  132. data/config/locales/common-ru.yml +2 -0
  133. data/config/locales/editable-pages-en.yml +5 -4
  134. data/config/locales/editable-pages-ru.yml +5 -4
  135. data/config/locales/users-en.yml +388 -0
  136. data/config/locales/users-ru.yml +8 -3
  137. data/config/routes.rb +127 -103
  138. data/db/migrate/20170302000001_create_users.rb +2 -0
  139. data/db/migrate/20170320000000_create_editable_pages.rb +1 -1
  140. data/db/migrate/20180321000000_add_profile_data_to_users.rb +31 -0
  141. data/lib/biovision/base/base_methods.rb +37 -7
  142. data/lib/biovision/base/engine.rb +1 -1
  143. data/lib/biovision/base/privilege_methods.rb +1 -1
  144. data/lib/biovision/base/version.rb +1 -1
  145. metadata +27 -6
  146. data/app/assets/stylesheets/biovision/base/buttons.scss +0 -195
  147. data/app/assets/stylesheets/biovision/base/layout.scss +0 -193
  148. data/app/views/editable_pages/form/_ckeditor.html.erb +0 -11
  149. 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
- prefix = 'activerecord.attributes.user_profile.genders.'
5
- genders + UserProfile.genders.keys.to_a.map { |o| [t("#{prefix}#{o}"), o] }
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.profile_2x.url} 2x"
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
 
@@ -1,7 +1,7 @@
1
1
  module CodesHelper
2
2
  # @param [Code] entity
3
3
  def admin_code_link(entity)
4
- link_to entity.body, admin_code_path(entity.id)
4
+ link_to entity.body, admin_code_path(id: entity.id)
5
5
  end
6
6
 
7
7
  def code_types_for_select
@@ -1,7 +1,7 @@
1
1
  module EditablePagesHelper
2
2
  # @param [EditablePage] entity
3
3
  def admin_editable_page_link(entity)
4
- link_to(entity.name, admin_editable_page_path(entity.id))
4
+ link_to(entity.name, admin_editable_page_path(id: entity.id))
5
5
  end
6
6
 
7
7
  # @param [EditablePage] entity
@@ -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
@@ -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,6 +1,6 @@
1
1
  module StoredValuesHelper
2
2
  # @param [StoredValue] entity
3
3
  def admin_stored_value_link(entity)
4
- link_to entity.slug, admin_stored_value_path(entity.id)
4
+ link_to entity.slug, admin_stored_value_path(id: entity.id)
5
5
  end
6
6
  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
@@ -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: /\A[a-z0-9_]{1,30}\z/i, if: :native_slug?
41
- validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z0-9][-a-z0-9]+)\z/i
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).order('id desc').page(page).per(PER_PAGE)
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
- user_profile&.name.blank? ? profile_name : user_profile.name
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 << user_profile&.patronymic.to_s.strip if include_patronymic
112
- result << user_profile&.surname.to_s.strip
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
- if native_slug?
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
- new_string = "#{slug} #{email}"
136
- unless user_profile.nil?
137
- new_string << " #{user_profile.search_string}"
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] user_parameters
10
- # @param [Hash] profile_parameters
11
- def self.create(user_parameters, profile_parameters)
12
- user = User.new(user_parameters)
13
- if user.save
14
- profile = user.user_profile.new(profile_parameters)
15
- profile.save
16
- else
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] user_parameters
23
- # @param [Hash] profile_parameters
24
- def update(user_parameters, profile_parameters)
19
+ # @param [Hash] parameters
20
+ # @param [Hash] profile
21
+ def update(parameters, profile)
25
22
  raise 'User is not set' if @user.nil?
26
- @user.update(user_parameters)
27
- profile = @user.user_profile || @user.user_profile.create
28
- profile.update(profile_parameters)
23
+ parameters[:profile_data] = UserProfileHandler.clean_parameters(profile)
24
+
25
+ @user.update(parameters)
29
26
 
30
- { user: @user, profile: 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 :profile_2x, from_version: :big do
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,7 +3,7 @@ class EditablePageImageUploader < CarrierWave::Uploader::Base
3
3
  include CarrierWave::BombShelter
4
4
 
5
5
  def max_pixel_dimensions
6
- [2000, 2000]
6
+ [4000, 4000]
7
7
  end
8
8
 
9
9
  storage :file
@@ -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
- <%= render partial: 'shared/admin/toggleable', locals: { entity: @entity, url: toggle_admin_agent_path(@entity.id) } %>
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>