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,3 +1,51 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ html {
6
+ font: 10px $font-family-main;
7
+ margin: 0;
8
+ padding: 0;
9
+ -webkit-text-size-adjust: none;
10
+ -moz-text-size-adjust: none;
11
+ -ms-text-size-adjust: none;
12
+ }
13
+
14
+ h1, h2, h3, h4, h6, h6 {
15
+ font-family: $font-family-heading;
16
+ font-weight: 500;
17
+ margin: 0;
18
+ }
19
+
20
+ h1 {
21
+ font-size: 3rem;
22
+ line-height: 4.2rem;
23
+ }
24
+
25
+ a:link {
26
+ color: $link-color;
27
+ text-decoration: none;
28
+ transition: color .125s;
29
+ }
30
+
31
+ a:visited {
32
+ color: $link-color-visited;
33
+ }
34
+
35
+ a:active,
36
+ a:hover {
37
+ color: $link-color-hover;
38
+ text-decoration: underline;
39
+ }
40
+
41
+ figure {
42
+ margin: 0;
43
+ }
44
+
45
+ img {
46
+ max-width: 100%;
47
+ }
48
+
1
49
  article {
2
50
  position: relative;
3
51
  }
@@ -70,7 +118,7 @@ ul.actions {
70
118
  padding: 0;
71
119
 
72
120
  > li {
73
- align-items: center;
121
+ align-items: flex-start;
74
122
  background: $row-background-odd;
75
123
  display: flex;
76
124
  flex-wrap: wrap;
@@ -82,14 +130,6 @@ ul.actions {
82
130
  background: $row-background-even;
83
131
  }
84
132
 
85
- &[data-number]::before {
86
- content: attr(data-number) ":";
87
- display: inline-block;
88
- margin: 0 .8rem 0 0;
89
- text-align: right;
90
- width: 2.4rem;
91
- }
92
-
93
133
  .image {
94
134
  flex: none;
95
135
  margin: 0 .8rem 0 0;
@@ -142,43 +182,34 @@ ul.actions {
142
182
  }
143
183
  }
144
184
 
145
- .dashboard {
146
- display: flex;
147
- flex-wrap: wrap;
148
-
149
- nav {
150
- margin: .4rem;
151
- width: 31rem;
152
- }
153
-
154
- .heading {
155
- display: block;
156
- font: 500 1.8rem/1.5 $font-family-heading;
157
- text-align: center;
185
+ ul.list-of-entities {
186
+ ul.actions {
187
+ > li.priority-changer {
188
+ display: none;
189
+ }
158
190
  }
191
+ }
159
192
 
160
- ul {
161
- box-shadow: $block-shadow;
162
- margin: .4rem;
163
- padding: 0;
193
+ ol.list-of-entities {
194
+ > li[data-number]::before {
195
+ content: attr(data-number) ":";
196
+ display: inline-block;
197
+ margin: 0 .8rem 0 0;
198
+ text-align: right;
199
+ width: 2.4rem;
164
200
  }
201
+ }
165
202
 
166
- li {
167
- background: $row-background-odd;
168
- list-style: none;
169
- margin: 0;
170
- padding: .8rem;
171
- position: relative;
203
+ .breadcrumbs {
204
+ a {
205
+ background: image_url('biovision/base/icons/breadcrumb.svg') no-repeat bottom .1rem right / .6rem 1.2rem;
206
+ padding-right: 1rem;
207
+ transition: background .25s;
172
208
 
173
- &:nth-last-of-type(even) {
174
- background: $row-background-even;
209
+ &:hover {
210
+ background-image: image_url('biovision/base/icons/breadcrumb-hover.svg');
175
211
  }
176
212
  }
177
-
178
- .description {
179
- color: $text-color-secondary;
180
- font-size: $font-size-decreased;
181
- }
182
213
  }
183
214
 
184
215
  form {
@@ -196,19 +227,48 @@ form {
196
227
  }
197
228
  }
198
229
 
230
+ .check-result-error {
231
+ color: #ff0000;
232
+
233
+ &::before {
234
+ content: '\261D';
235
+ margin-right: .4rem;
236
+ }
237
+ }
238
+
199
239
  dl {
200
240
  margin: 0;
201
241
  padding: 0;
202
242
  }
203
243
 
204
- dd,
205
244
  dt {
206
- margin: 0;
207
- padding: 0;
245
+ font: 500 $font-size-increased $font-family-main;
246
+
247
+ &:not(:first-of-type) {
248
+ border-top: $border-secondary;
249
+ margin: .8rem 0 0 0;
250
+ padding: .4rem 0 0 0;
251
+ }
252
+ }
253
+
254
+ dd {
255
+ padding: .2rem 0;
256
+
257
+ ul {
258
+ margin: 0 auto;
259
+ padding: 0;
260
+
261
+ li {
262
+ list-style: none;
263
+ margin: 0;
264
+ padding: 0;
265
+ position: relative;
266
+ }
267
+ }
208
268
  }
209
269
 
210
- dt:not(:first-of-type) {
211
- margin-top: .8rem;
270
+ input {
271
+ font-size: $font-size-normal;
212
272
  }
213
273
 
214
274
  ul.flags {
@@ -0,0 +1,95 @@
1
+ $font-size-normal: 1.4rem !default;
2
+ $font-family-main: "Roboto", sans-serif !default;
3
+
4
+ $button-action-bg-a: #2e3c8e !default;
5
+ $button-action-bg-b: #3d94f6 !default;
6
+ $button-action-border-a: #515de3 !default;
7
+ $button-action-border-b: $button-action-border-a !default;
8
+ $button-action-text-a: #fff !default;
9
+ $button-action-text-b: $button-action-text-a !default;
10
+
11
+ $button-nav-bg-a: $button-action-text-a !default;
12
+ $button-nav-bg-b: #1e62d0 !default;
13
+ $button-nav-border-a: $button-action-border-a !default;
14
+ $button-nav-border-b: $button-nav-border-a !default;
15
+ $button-nav-text-a: $button-action-bg-b !default;
16
+ $button-nav-text-b: $button-nav-bg-a !default;
17
+
18
+ $button-save-bg-a: #68a54b !default;
19
+ $button-save-bg-b: #5ba337 !default;
20
+ $button-save-border-a: #3b6e22 !default;
21
+ $button-save-border-b: $button-save-border-a !default;
22
+ $button-save-text-a: $button-action-text-a !default;
23
+ $button-save-text-b: $button-save-text-a !default;
24
+
25
+ $button-destroy-bg-a: #a54b68 !default;
26
+ $button-destroy-bg-b: #a3375b !default;
27
+ $button-destroy-border-a: #6e223b !default;
28
+ $button-destroy-border-b: $button-destroy-border-a !default;
29
+ $button-destroy-text-a: $button-action-text-a !default;
30
+ $button-destroy-text-b: $button-destroy-text-a !default;
31
+
32
+ [class|=button],
33
+ [class|=button]:link,
34
+ [class|=button]:visited {
35
+ border: .1rem solid transparent;
36
+ box-sizing: border-box;
37
+ cursor: pointer;
38
+ display: inline-block;
39
+ font: #{$font-size-normal}/1.5 $font-family-main;
40
+ padding: 0 1.2rem;
41
+ text-decoration: none;
42
+ transition: .125s;
43
+
44
+ &:disabled {
45
+ cursor: default;
46
+ filter: grayscale(75%);
47
+ }
48
+ }
49
+
50
+ @mixin button($bg-a, $text-a, $bg-b, $text-b) {
51
+ background: $bg-a;
52
+ color: $text-a;
53
+
54
+ &:active,
55
+ &:focus,
56
+ &:hover {
57
+ background: $bg-b;
58
+ color: $text-b;
59
+ }
60
+ }
61
+
62
+ @mixin border-button($border-a, $border-b) {
63
+ border-color: $border-a;
64
+
65
+ &:active,
66
+ &:focus,
67
+ &:hover {
68
+ border-color: $border-b;
69
+ }
70
+ }
71
+
72
+ .button-action,
73
+ .button-action:link,
74
+ .button-action:visited {
75
+ @include button($button-action-bg-a, $button-action-text-a, $button-action-bg-b, $button-action-text-b);
76
+ }
77
+
78
+ .button-nav,
79
+ .button-nav:link,
80
+ .button-nav:visited {
81
+ @include button($button-nav-bg-a, $button-nav-text-a, $button-nav-bg-b, $button-nav-text-b);
82
+ @include border-button($button-nav-border-a, $button-nav-border-b);
83
+ }
84
+
85
+ .button-save,
86
+ .button-save:link,
87
+ .button-save:visited {
88
+ @include button($button-save-bg-a, $button-save-text-a, $button-save-bg-b, $button-save-text-b);
89
+ }
90
+
91
+ .button-destroy,
92
+ .button-destroy:link,
93
+ .button-destroy:visited {
94
+ @include button($button-destroy-bg-a, $button-destroy-text-a, $button-destroy-bg-b, $button-destroy-text-b);
95
+ }
@@ -0,0 +1,26 @@
1
+ @import "buttons-common";
2
+
3
+ [class|=button],
4
+ [class|=button]:link,
5
+ [class|=button]:visited {
6
+ border-radius: .4rem;
7
+ border: .1rem solid;
8
+ }
9
+
10
+ .button-action,
11
+ .button-action:link,
12
+ .button-action:visited {
13
+ @include border-button($button-action-border-a, $button-action-border-b);
14
+ }
15
+
16
+ .button-save,
17
+ .button-save:link,
18
+ .button-save:visited {
19
+ @include border-button($button-save-border-a, $button-save-border-b);
20
+ }
21
+
22
+ .button-destroy,
23
+ .button-destroy:link,
24
+ .button-destroy:visited {
25
+ @include border-button($button-destroy-border-a, $button-destroy-border-b);
26
+ }
@@ -1,5 +1,5 @@
1
- $font-family-heading: "Cormorant Garamond", serif !default;
2
1
  $font-family-main: "Roboto", sans-serif !default;
2
+ $font-family-heading: $font-family-main !default;
3
3
 
4
4
  $font-size-large: 2rem !default;
5
5
  $font-size-increased: 1.6rem !default;
@@ -24,7 +24,7 @@ $border-color-secondary: rgb(230, 230, 230) !default;
24
24
  $border-primary: .1rem solid $border-color-primary !default;
25
25
  $border-secondary: .1rem solid $border-color-secondary !default;
26
26
 
27
- $background-body: #f4f4f4 linear-gradient(to top, #f4f4f4 0%, #dfdedc 100%) no-repeat center / cover !default;
27
+ $background-body: #f4f4f4 linear-gradient(to top, #f4f4f4, #dfdedc) no-repeat center / cover !default;
28
28
  $background-header: #fff !default;
29
29
  $background-main: #fff !default;
30
30
  $background-footer: #fff !default;
@@ -29,7 +29,7 @@ $link-color-visited: rgb(20, 77, 250) !default;
29
29
  $link-color-hover: rgb(255, 77, 20) !default;
30
30
 
31
31
  @import "biovision/base/toggleable";
32
- @import "biovision/base/buttons";
32
+ @import "biovision/base/buttons/buttons-common";
33
33
  @import "biovision/base/biovision";
34
34
  @import "biovision/base/admin";
35
35
  @import "biovision/base/tootik";
@@ -1,5 +1,5 @@
1
1
  @import "biovision/base/toggleable";
2
- @import "biovision/base/buttons";
2
+ @import "biovision/base/buttons/buttons-common";
3
3
  @import "biovision/base/biovision";
4
4
  @import "biovision/base/tootik";
5
5
  @import "biovision/base/message-box";
@@ -0,0 +1,115 @@
1
+ @import "biovision/base/default";
2
+
3
+ h1, h2, h3, h4, h5, h6 {
4
+ color: $text-color-heading;
5
+ }
6
+
7
+ body {
8
+ background: $background-body;
9
+ color: $text-color-primary;
10
+ font-size: $font-size-normal;
11
+ margin: 0;
12
+ min-height: 100vh;
13
+ min-width: $content-width-min;
14
+ padding: 0;
15
+
16
+ > footer,
17
+ > header {
18
+ padding: .4rem 0;
19
+
20
+ > div {
21
+ display: flex;
22
+ flex-wrap: wrap;
23
+ margin: 0 auto;
24
+ max-width: $content-width;
25
+ padding: .4rem;
26
+ }
27
+
28
+ .authentication {
29
+ margin: 0 0 0 auto;
30
+
31
+ > div {
32
+ display: flex;
33
+ align-items: center;
34
+ }
35
+
36
+ .links {
37
+ a:link,
38
+ a:visited {
39
+ margin: 0 .4rem;
40
+ }
41
+ }
42
+
43
+ .plate {
44
+ a {
45
+ margin-left: .8rem;
46
+ }
47
+ }
48
+ }
49
+ }
50
+
51
+ > header {
52
+ background: $background-header;
53
+ border-bottom: $border-primary;
54
+
55
+ > div {
56
+ align-items: center;
57
+ }
58
+
59
+ .logo {
60
+ margin-right: auto;
61
+ }
62
+ }
63
+
64
+ > footer {
65
+ background: $background-footer;
66
+ border-top: $border-primary;
67
+ margin: auto 0 0 0;
68
+
69
+ > div {
70
+ align-items: flex-start;
71
+ color: $text-color-secondary;
72
+ display: flex;
73
+ flex-wrap: wrap;
74
+ font-size: $font-size-decreased;
75
+ }
76
+
77
+ nav {
78
+ margin: 0 0 0 auto;
79
+ }
80
+
81
+ ul {
82
+ margin: 0;
83
+ padding: 0;
84
+ }
85
+
86
+ li {
87
+ list-style: none;
88
+ margin: 0;
89
+ padding: 0;
90
+ }
91
+ }
92
+ }
93
+
94
+ @supports (display: flex) {
95
+ body {
96
+ display: flex;
97
+ flex-direction: column;
98
+ }
99
+ }
100
+
101
+ #main {
102
+ background: $background-main;
103
+ flex: 1;
104
+ margin: 0 auto;
105
+ max-width: $content-width;
106
+ padding: .8rem;
107
+ width: 100%;
108
+ }
109
+
110
+ form {
111
+ input:not([type=checkbox]):not([type=radio]):not([type=date]):not([type=number]):not([size]),
112
+ textarea {
113
+ width: 100%;
114
+ }
115
+ }