biovision-base 0.8.171029 → 0.9.171227

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +49 -0
  3. data/app/assets/images/biovision/base/icons/breadcrumb-hover.svg +1 -0
  4. data/app/assets/images/biovision/base/icons/breadcrumb.svg +1 -0
  5. data/app/assets/images/biovision/base/placeholders/file.svg +1 -0
  6. data/app/assets/javascripts/biovision/base/biovision-sliders.js +64 -0
  7. data/app/assets/stylesheets/biovision/base/admin.scss +66 -53
  8. data/app/assets/stylesheets/biovision/base/biovision.scss +107 -55
  9. data/app/assets/stylesheets/biovision/base/layout.scss +64 -54
  10. data/app/assets/stylesheets/biovision/base/tootik.scss +70 -56
  11. data/app/assets/stylesheets/biovision/base/track.scss +2 -10
  12. data/app/controllers/admin/feedback_requests_controller.rb +23 -0
  13. data/app/controllers/admin/media_files_controller.rb +25 -0
  14. data/app/controllers/admin/media_folders_controller.rb +31 -0
  15. data/app/controllers/errors_controller.rb +43 -0
  16. data/app/controllers/feedback_requests_controller.rb +23 -0
  17. data/app/controllers/media_files_controller.rb +104 -0
  18. data/app/controllers/media_folders_controller.rb +85 -0
  19. data/app/helpers/biovision_users_helper.rb +7 -0
  20. data/app/helpers/media_helper.rb +26 -0
  21. data/app/mailers/feedback_mailer.rb +10 -0
  22. data/app/models/editable_page.rb +1 -1
  23. data/app/models/feedback_request.rb +31 -0
  24. data/app/models/media_file.rb +48 -0
  25. data/app/models/media_folder.rb +114 -0
  26. data/app/models/metric.rb +4 -1
  27. data/app/models/privilege_group.rb +1 -1
  28. data/app/uploaders/media_file_uploader.rb +30 -0
  29. data/app/uploaders/media_snapshot_uploader.rb +32 -0
  30. data/app/views/admin/feedback_requests/_nav_item.html.erb +2 -0
  31. data/app/views/admin/feedback_requests/entity/_in_list.html.erb +18 -0
  32. data/app/views/admin/feedback_requests/index.html.erb +16 -0
  33. data/app/views/admin/index/_biovision_base.html.erb +6 -0
  34. data/app/views/admin/index/_custom_dashboard.html.erb +0 -0
  35. data/app/views/admin/index/dashboard/_biovision_feedback.html.erb +9 -0
  36. data/app/views/admin/index/dashboard/_biovision_region.html.erb +8 -0
  37. data/app/views/admin/index/dashboard/_biovision_track.html.erb +8 -0
  38. data/app/views/admin/index/dashboard/_biovision_user.html.erb +13 -0
  39. data/app/views/admin/index/dashboard/_editorial.html.erb +12 -0
  40. data/app/views/admin/index/dashboard/_settings.html.erb +9 -0
  41. data/app/views/admin/index/index.html.erb +2 -22
  42. data/app/views/admin/media_files/_nav_item.html.erb +2 -0
  43. data/app/views/admin/media_files/entity/_in_list.html.erb +26 -0
  44. data/app/views/admin/media_files/index.html.erb +17 -0
  45. data/app/views/admin/media_files/show.html.erb +60 -0
  46. data/app/views/admin/media_folders/_nav_item.html.erb +2 -0
  47. data/app/views/admin/media_folders/entity/_in_list.html.erb +32 -0
  48. data/app/views/admin/media_folders/files.html.erb +28 -0
  49. data/app/views/admin/media_folders/index.html.erb +21 -0
  50. data/app/views/admin/media_folders/show.html.erb +79 -0
  51. data/app/views/application/error.html.erb +9 -0
  52. data/app/views/editable_pages/_editable_page.html.erb +1 -8
  53. data/app/views/editable_pages/entity/_metadata.html.erb +14 -0
  54. data/app/views/editable_pages/form/_ckeditor.html.erb +1 -1
  55. data/app/views/errors/error.html.erb +7 -0
  56. data/app/views/feedback_mailer/new_feedback_request.html.erb +12 -0
  57. data/app/views/feedback_mailer/new_feedback_request.text.erb +5 -0
  58. data/app/views/feedback_requests/_form.html.erb +60 -0
  59. data/app/views/feedback_requests/create.js.erb +10 -0
  60. data/app/views/media_files/_form.html.erb +75 -0
  61. data/app/views/media_files/ckeditor.html.erb +8 -0
  62. data/app/views/media_files/edit.html.erb +19 -0
  63. data/app/views/media_files/edit.js.erb +1 -0
  64. data/app/views/media_files/new.html.erb +15 -0
  65. data/app/views/media_files/new.js.erb +1 -0
  66. data/app/views/media_folders/_form.html.erb +54 -0
  67. data/app/views/media_folders/edit.html.erb +22 -0
  68. data/app/views/media_folders/edit.js.erb +1 -0
  69. data/app/views/media_folders/new.html.erb +19 -0
  70. data/app/views/media_folders/new.js.erb +1 -0
  71. data/app/views/shared/_meta_texts.html.erb +3 -0
  72. data/app/views/shared/_pagination.jbuilder +3 -3
  73. data/app/views/shared/admin/_toggleable.html.erb +7 -0
  74. data/app/views/shared/editable_pages/_body.html.erb +1 -10
  75. data/app/views/shared/forms/_default_ajax_handler.html.erb +13 -0
  76. data/app/views/shared/forms/_list_of_errors.js.erb +19 -0
  77. data/config/locales/common-en.yml +152 -0
  78. data/config/locales/common-ru.yml +41 -0
  79. data/config/locales/feedback-en.yml +30 -0
  80. data/config/locales/feedback-ru.yml +36 -0
  81. data/config/locales/media-ru.yml +92 -0
  82. data/config/routes.rb +34 -0
  83. data/db/migrate/20170301000002_create_metric_values.rb +1 -1
  84. data/db/migrate/20170301000102_create_agents.rb +1 -1
  85. data/db/migrate/20170302000001_create_users.rb +2 -2
  86. data/db/migrate/20170302000002_create_user_profiles.rb +1 -1
  87. data/db/migrate/20170302000003_create_tokens.rb +2 -2
  88. data/db/migrate/20170302000005_create_codes.rb +3 -3
  89. data/db/migrate/20170302000102_create_user_privileges.rb +3 -3
  90. data/db/migrate/20170302000104_create_privilege_group_privileges.rb +2 -2
  91. data/db/migrate/20170425000002_create_foreign_users.rb +3 -3
  92. data/db/migrate/20170629120000_create_login_attempts.rb +2 -2
  93. data/db/migrate/20171202000000_create_media_folders.rb +28 -0
  94. data/db/migrate/20171202000001_create_media_files.rb +27 -0
  95. data/db/migrate/20171211000000_create_feedback_requests.rb +26 -0
  96. data/db/migrate/20171217222222_add_fields_to_feedback_requests.rb +10 -0
  97. data/db/migrate/20171223333333_amend_foreign_keys.rb +72 -0
  98. data/lib/biovision/base/base_methods.rb +1 -1
  99. data/lib/biovision/base/engine.rb +1 -1
  100. data/lib/biovision/base/version.rb +1 -1
  101. metadata +94 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5a69729da19c47e5d87fe9296e687a6deace54a0
4
- data.tar.gz: 81b91f26c62b8896b165d4a46fda4c82eaf017a2
2
+ SHA256:
3
+ metadata.gz: 1bb51fe50abffa84bf05497d98302f8024cb97c8174dd1107c209405cdb36bd8
4
+ data.tar.gz: 18998efeae8acc7888f2a4942117a233c346e66d3591f845938976ee94f3231e
5
5
  SHA512:
6
- metadata.gz: 329c7b70ca3974fd53e319293cf1c6d229d2f22c7af228e4794a0a313bc4d560aec40af18f1ac18986517604b7bfdc16e222597333c9cb329700de9fd23954ed
7
- data.tar.gz: 0667670c98830807dbe1b0243d8e6739e523790555725c70a7e7e5dd003c45ab9000fd38730366b66b0e0a4f31b770fe3ad4e7de465c98160aa8882e8b8ed34c
6
+ metadata.gz: 14e334effd38045f5a5b0f69f08587d8910ad9b5d64a409b802005ebcaa814e98b35153ce36e74c289463d5f6e4bd383d525063ec6e87cc0dd0c3aafcf71c939
7
+ data.tar.gz: a00cbf51d51d0fbb5dc51028daab2909bc93ce74ec2a57ca6b633d7ef336b2d7a518b8afadfdfd5e09a3126f2d95e90e5502e7717e76498befafad15074ee393
data/README.md CHANGED
@@ -19,6 +19,55 @@ Biovision::Base
19
19
 
20
20
  Каждый день в 4 часа ночи будут очищаться старые жетоны.
21
21
 
22
+ Использование листалок
23
+ ----------------------
24
+
25
+ Если контейнеру задать класс `biovision-slider` и добавить в него кнопки
26
+ с классами `prev` и `next`, а также список (`ul`), то при условии, что подгружен
27
+ файл `biovision/base/biovision-sliders.js`, к этому контейнеру применится
28
+ поведение листалки.
29
+
30
+ Параметры, которые можно задать через data-атрибуты:
31
+
32
+ * `delay` — задержка перед пролистыванием. По умолчанию — `125` (мс)
33
+ * `type` — тип. По умолчанию — `opacity` (пока это единственный вариант)
34
+
35
+ ```html
36
+ <div class="biovision-slider" data-delay="250" data-type="opacity">
37
+ <button class="prev"></button>
38
+ <ul>
39
+ <li>Slide 1</li>
40
+ <li>Slide 2</li>
41
+ <li>Slide 3</li>
42
+ </ul>
43
+ <button class="next"></button>
44
+ </div>
45
+ ```
46
+
47
+ ```scss
48
+ .biovision-slider {
49
+ display: flex;
50
+
51
+ button {
52
+ background: lime;
53
+ flex: none;
54
+ width: 2rem;
55
+ }
56
+
57
+ ul {
58
+ display: flex;
59
+ flex: 1;
60
+ overflow: hidden;
61
+ }
62
+
63
+ li {
64
+ flex: none;
65
+ transition: .125s;
66
+ width: 20rem;
67
+ }
68
+ }
69
+ ```
70
+
22
71
  ## Installation
23
72
  Add this line to your application's Gemfile:
24
73
 
@@ -0,0 +1 @@
1
+ <svg height="12px" version="1.1" viewBox="0 0 6 12" width="6px" xmlns="http://www.w3.org/2000/svg"><polyline points="4,1 1,5.5 4,10" fill="none" stroke="#f77" /></svg>
@@ -0,0 +1 @@
1
+ <svg height="12px" version="1.1" viewBox="0 0 6 12" width="6px" xmlns="http://www.w3.org/2000/svg"><polyline points="1,1 4,5.5 1,10" fill="none" stroke="#777" /></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 24 24" height="24px" id="Layer_1" version="1.1" viewBox="0 0 24 24" width="24px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g><path d="M13,12c1.1,0,2-0.9,2-2V5.5C15,5.2,14.8,5,14.5,5S14,5.2,14,5.5V10c0,0.6-0.4,1-1,1s-1-0.4-1-1V3c0-1.1,0.9-2,2-2 s2,0.9,2,2h1c0-1.7-1.3-3-3-3s-3,1.3-3,3v7C11,11.1,11.9,12,13,12z"/><path d="M19.9,1h-2.4C17.8,1.6,18,2.3,18,3h1v19H2V3h8c0-0.7,0.2-1.4,0.6-2H1.1C0.5,1,0,1.5,0,2.1v20.8C0,23.5,0.5,24,1.1,24h18.8 c0.6,0,1.1-0.5,1.1-1.1V2.1C21,1.5,20.5,1,19.9,1z"/><g><rect height="1" width="4" x="5" y="8"/><rect height="1" width="4" x="5" y="10"/><rect height="1" width="4" x="5" y="12"/><rect height="1" width="11" x="5" y="14"/><rect height="1" width="11" x="5" y="16"/><rect height="1" width="11" x="5" y="18"/></g></g></svg>
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ document.addEventListener('DOMContentLoaded', function () {
4
+ const sliders = document.querySelectorAll('.biovision-slider');
5
+ const sliding = {
6
+ opacity: {
7
+ left: function(list, delay) {
8
+ const li = list.querySelector('li:last-of-type');
9
+ const restore_opacity = function () {
10
+ li.style.opacity = '';
11
+ };
12
+
13
+ li.style.opacity = '0';
14
+ list.prepend(li);
15
+ setTimeout(restore_opacity, delay);
16
+ },
17
+ right: function(list, delay) {
18
+ const li = list.querySelector('li:first-of-type');
19
+ const move = function () {
20
+ list.append(li);
21
+ li.style.opacity = '';
22
+ };
23
+
24
+ li.style.opacity = '0';
25
+ setTimeout(move, delay);
26
+ }
27
+ }
28
+ };
29
+
30
+ Array.prototype.slice.call(sliders).forEach(function(slider) {
31
+ const delay = slider.getAttribute('data-delay') || 125;
32
+ const list = slider.querySelector('ul');
33
+ let type = slider.getAttribute('data-type') || 'opacity';
34
+
35
+ if (!sliding.hasOwnProperty(type)) {
36
+ console.log('Invalid sliding type: ' + type);
37
+ type = 'opacity';
38
+ }
39
+
40
+ const slide_right = function () {
41
+ sliding[type].right(list, delay << 1);
42
+ };
43
+
44
+ const slide_left = function () {
45
+ sliding[type].left(list, delay);
46
+ };
47
+
48
+ slider.querySelector('button.prev').addEventListener('click', slide_left);
49
+ slider.querySelector('button.next').addEventListener('click', slide_right);
50
+ });
51
+ });
52
+
53
+ /*
54
+
55
+ <script>
56
+ 'use strict';
57
+
58
+ document.addEventListener('DOMContentLoaded', function () {
59
+ const slider = document.getElementById('crew-slider');
60
+ });
61
+ </script>
62
+
63
+
64
+ */
@@ -1,3 +1,7 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
1
5
  html {
2
6
  background-attachment: fixed;
3
7
  background-blend-mode: screen;
@@ -10,10 +14,6 @@ html {
10
14
  -webkit-text-size-adjust: none;
11
15
  }
12
16
 
13
- * {
14
- box-sizing: border-box;
15
- }
16
-
17
17
  a:link,
18
18
  a:visited {
19
19
  color: $link-color;
@@ -74,25 +74,20 @@ body {
74
74
  flex-wrap: wrap;
75
75
  margin: 0;
76
76
  padding: 0;
77
+ }
77
78
 
78
- li {
79
- display: inline-block;
80
- list-style: none;
81
- margin: 0 .25rem;
82
- text-align: center;
83
-
84
- a:link,
85
- a:visited {
86
- @include button-nav;
87
- }
88
- }
79
+ li {
80
+ display: inline-block;
81
+ list-style: none;
82
+ margin: 0 .25rem;
83
+ text-align: center;
89
84
  }
90
- }
91
- }
92
85
 
93
- > footer {
94
- margin: auto 0 0 0;
95
- padding: .8rem 0;
86
+ a:link,
87
+ a:visited {
88
+ @include button-nav;
89
+ }
90
+ }
96
91
  }
97
92
 
98
93
  > footer {
@@ -133,32 +128,6 @@ article {
133
128
  margin: 0 0 1.6rem 0;
134
129
  padding: 0;
135
130
 
136
- dt {
137
- border-top: $border-secondary;
138
- font: 400 $font-size-increased $font-family-main;
139
- margin: .8rem 0 0 0;
140
- padding: .4rem 0;
141
- }
142
-
143
- dd {
144
- margin: .2rem 0;
145
- padding: 0;
146
-
147
- input,
148
- textarea {
149
- font-size: $font-size-normal;
150
- }
151
-
152
- input:not([type=checkbox]):not([type=radio]):not([size]):not([max]),
153
- textarea {
154
- width: 100%;
155
- }
156
-
157
- input,
158
- textarea {
159
- max-width: 100%;
160
- }
161
- }
162
131
 
163
132
  ul {
164
133
  margin: 0;
@@ -169,16 +138,49 @@ article {
169
138
  margin: 0;
170
139
  padding: 0;
171
140
  position: relative;
141
+ }
172
142
 
173
- label {
174
- font-weight: normal;
175
- }
143
+ label {
144
+ font-weight: normal;
176
145
  }
177
146
  }
178
147
  }
179
148
 
149
+ dt {
150
+ border-top: $border-secondary;
151
+ font: 400 $font-size-increased $font-family-main;
152
+ margin: .8rem 0 0 0;
153
+ padding: .4rem 0;
154
+ }
155
+
156
+ dd {
157
+ margin: .2rem 0;
158
+ padding: 0;
159
+
160
+ input,
161
+ textarea {
162
+ font-size: $font-size-normal;
163
+ min-width: 1ch;
164
+ }
165
+
166
+ input:not([type=checkbox]):not([type=radio]):not([size]):not([max]),
167
+ textarea {
168
+ width: 100%;
169
+ }
170
+
171
+ input,
172
+ textarea {
173
+ max-width: 100%;
174
+ }
175
+ }
176
+
177
+ > nav {
178
+ margin: 1.6rem 0;
179
+ }
180
+
180
181
  > section {
181
182
  border-top: .1rem solid $text-color-secondary;
183
+ margin: 2.4rem auto;
182
184
  padding: .8rem 0 0 0;
183
185
  }
184
186
  }
@@ -187,10 +189,14 @@ nav.admin-breadcrumbs {
187
189
  margin-bottom: .8rem;
188
190
  padding: .4rem;
189
191
 
190
- a::after {
191
- color: $text-color-primary;
192
- content: ' / ';
193
- text-decoration: none;
192
+ a {
193
+ background: image_url('biovision/base/icons/breadcrumb.svg') no-repeat bottom .1rem right / .6rem 1.2rem;
194
+ padding-right: 1rem;
195
+ transition: background .25s;
196
+
197
+ &:hover {
198
+ background-image: image_url('biovision/base/icons/breadcrumb-hover.svg');
199
+ }
194
200
  }
195
201
  }
196
202
 
@@ -212,3 +218,10 @@ nav.admin-breadcrumbs {
212
218
  }
213
219
  }
214
220
  }
221
+
222
+ #media-folder-snapshot {
223
+ img {
224
+ max-height: 8rem;
225
+ max-width: 8rem;
226
+ }
227
+ }
@@ -92,11 +92,9 @@ article.entity-page {
92
92
  }
93
93
 
94
94
  tfoot {
95
- tr {
96
- td {
97
- padding: .8rem 0;
98
- text-align: center;
99
- }
95
+ td {
96
+ padding: .8rem 0;
97
+ text-align: center;
100
98
  }
101
99
  }
102
100
 
@@ -111,12 +109,12 @@ article.entity-page {
111
109
  list-style: none;
112
110
  margin: 0;
113
111
  padding: 0;
114
-
115
- label {
116
- font-weight: normal;
117
- }
118
112
  }
119
113
  }
114
+
115
+ label {
116
+ font-weight: normal;
117
+ }
120
118
  }
121
119
 
122
120
  .tree {
@@ -212,6 +210,7 @@ ul.actions {
212
210
  line-height: 1.6rem;
213
211
  list-style: none;
214
212
  margin: .4rem;
213
+ padding: 0;
215
214
 
216
215
  &.danger {
217
216
  margin-left: 3.2rem;
@@ -223,22 +222,23 @@ ul.actions {
223
222
  flex-basis: 3.6rem;
224
223
  justify-content: space-between;
225
224
  }
225
+ }
226
226
 
227
- > a, button {
228
- box-sizing: border-box;
229
- display: inline-block;
230
- font-size: 1.2rem;
231
- height: 1.6rem;
232
- line-height: 1.6rem;
233
- margin: 0;
234
- padding: 0;
235
- width: 1.6rem;
236
- }
227
+ a,
228
+ button {
229
+ box-sizing: border-box;
230
+ display: inline-block;
231
+ font-size: 1.2rem;
232
+ height: 1.6rem;
233
+ line-height: 1.6rem;
234
+ margin: 0;
235
+ padding: 0;
236
+ width: 1.6rem;
237
+ }
237
238
 
238
- img {
239
- max-height: 1.6rem;
240
- max-width: 1.6rem;
241
- }
239
+ img {
240
+ max-height: 1.6rem;
241
+ max-width: 1.6rem;
242
242
  }
243
243
  }
244
244
 
@@ -322,35 +322,40 @@ ul.actions {
322
322
  .dashboard {
323
323
  display: flex;
324
324
  flex-wrap: wrap;
325
- justify-content: space-between;
326
325
 
327
326
  nav {
328
- box-shadow: $block-shadow;
329
327
  margin: .4rem;
330
- max-width: 32rem;
328
+ width: 31rem;
329
+ }
331
330
 
332
- ul {
333
- margin: 0;
334
- padding: 0;
331
+ .heading {
332
+ display: block;
333
+ font: 500 1.8rem/1.5 $font-family-heading;
334
+ text-align: center;
335
+ }
335
336
 
336
- li {
337
- background: $row-background-odd;
338
- list-style: none;
339
- margin: 0;
340
- padding: .8rem;
341
- position: relative;
337
+ ul {
338
+ box-shadow: $block-shadow;
339
+ margin: .4rem;
340
+ padding: 0;
341
+ }
342
342
 
343
- &:nth-last-of-type(even) {
344
- background: $row-background-even;
345
- }
343
+ li {
344
+ background: $row-background-odd;
345
+ list-style: none;
346
+ margin: 0;
347
+ padding: .8rem;
348
+ position: relative;
346
349
 
347
- .description {
348
- color: $text-color-secondary;
349
- font-size: $font-size-decreased;
350
- }
351
- }
350
+ &:nth-last-of-type(even) {
351
+ background: $row-background-even;
352
352
  }
353
353
  }
354
+
355
+ .description {
356
+ color: $text-color-secondary;
357
+ font-size: $font-size-decreased;
358
+ }
354
359
  }
355
360
 
356
361
  form {
@@ -371,16 +376,16 @@ form {
371
376
  dl {
372
377
  margin: 0;
373
378
  padding: 0;
379
+ }
374
380
 
375
- dd,
376
- dt {
377
- margin: 0;
378
- padding: 0;
379
- }
381
+ dd,
382
+ dt {
383
+ margin: 0;
384
+ padding: 0;
385
+ }
380
386
 
381
- dt:not(:first-of-type) {
382
- margin-top: .8rem;
383
- }
387
+ dt:not(:first-of-type) {
388
+ margin-top: .8rem;
384
389
  }
385
390
 
386
391
  ul.flags {
@@ -393,12 +398,59 @@ form {
393
398
  padding: 0;
394
399
  }
395
400
  }
396
-
397
- button {
398
- @include button-action;
399
- }
400
401
  }
401
402
 
402
403
  .hidden {
403
404
  display: none !important;
404
405
  }
406
+
407
+ .visually-hidden {
408
+ height: .1rem;
409
+ left: -10000rem;
410
+ opacity: .05;
411
+ overflow: hidden;
412
+ position: absolute;
413
+ width: .1rem;
414
+ }
415
+
416
+ .proportional-container {
417
+ padding: 0;
418
+ position: relative;
419
+
420
+ > * {
421
+ bottom: 0;
422
+ left: 0;
423
+ position: absolute;
424
+ right: 0;
425
+ top: 0;
426
+ }
427
+
428
+ &::before {
429
+ content: '\A';
430
+ display: block;
431
+ }
432
+
433
+ &.r-1x1::before {
434
+ padding-top: 100%;
435
+ }
436
+
437
+ &.r-5x4::before {
438
+ padding-top: 80%;
439
+ }
440
+
441
+ &.r-4x3::before {
442
+ padding-top: 75%;
443
+ }
444
+
445
+ &.r-3x2::before {
446
+ padding-top: 66.67%;
447
+ }
448
+
449
+ &.r-16x9::before {
450
+ padding-top: 56.25%;
451
+ }
452
+
453
+ &.r-2x1::before {
454
+ padding-top: 50%;
455
+ }
456
+ }
@@ -69,26 +69,26 @@ body {
69
69
  margin: 0 auto;
70
70
  max-width: $content-width;
71
71
  padding: .4rem;
72
+ }
73
+
74
+ .authentication {
75
+ > div {
76
+ display: flex;
77
+ align-items: center;
78
+ }
72
79
 
73
- .authentication {
74
- > div {
75
- display: flex;
76
- align-items: center;
77
-
78
- &.links {
79
- a:link,
80
- a:visited {
81
- @include button-nav;
82
- margin: 0 .4rem;
83
- }
84
- }
85
-
86
- &.plate {
87
- .logout {
88
- @include button-action;
89
- margin-left: 1rem;
90
- }
91
- }
80
+ .links {
81
+ a:link,
82
+ a:visited {
83
+ @include button-nav;
84
+ margin: 0 .4rem;
85
+ }
86
+ }
87
+
88
+ .plate {
89
+ .logout {
90
+ @include button-action;
91
+ margin-left: 1rem;
92
92
  }
93
93
  }
94
94
  }
@@ -100,10 +100,10 @@ body {
100
100
 
101
101
  > div {
102
102
  align-items: center;
103
+ }
103
104
 
104
- .logo {
105
- margin-right: auto;
106
- }
105
+ .logo {
106
+ margin-right: auto;
107
107
  }
108
108
  }
109
109
 
@@ -115,21 +115,21 @@ body {
115
115
  > div {
116
116
  color: $text-color-secondary;
117
117
  font-size: $font-size-decreased;
118
+ }
118
119
 
119
- nav {
120
- margin: 0 auto;
120
+ nav {
121
+ margin: 0 auto;
122
+ }
121
123
 
122
- ul {
123
- margin: 0;
124
- padding: 0;
124
+ ul {
125
+ margin: 0;
126
+ padding: 0;
127
+ }
125
128
 
126
- li {
127
- list-style: none;
128
- margin: 0;
129
- padding: 0;
130
- }
131
- }
132
- }
129
+ li {
130
+ list-style: none;
131
+ margin: 0;
132
+ padding: 0;
133
133
  }
134
134
  }
135
135
  }
@@ -144,30 +144,28 @@ body {
144
144
  }
145
145
 
146
146
  form {
147
- dl {
148
- dt {
149
- font: 500 $font-size-increased $font-family-main;
150
-
151
- &:not(:first-of-type) {
152
- border-top: $border-secondary;
153
- margin: .8rem 0 0 0;
154
- padding: .4rem 0 0 0;
155
- }
147
+ dt {
148
+ font: 500 $font-size-increased $font-family-main;
149
+
150
+ &:not(:first-of-type) {
151
+ border-top: $border-secondary;
152
+ margin: .8rem 0 0 0;
153
+ padding: .4rem 0 0 0;
156
154
  }
155
+ }
157
156
 
158
- dd {
159
- padding: .2rem 0;
157
+ dd {
158
+ padding: .2rem 0;
160
159
 
161
- ul {
162
- margin: 0 auto;
163
- padding: 0;
160
+ ul {
161
+ margin: 0 auto;
162
+ padding: 0;
164
163
 
165
- li {
166
- list-style: none;
167
- margin: 0;
168
- padding: 0;
169
- position: relative;
170
- }
164
+ li {
165
+ list-style: none;
166
+ margin: 0;
167
+ padding: 0;
168
+ position: relative;
171
169
  }
172
170
  }
173
171
  }
@@ -181,3 +179,15 @@ form {
181
179
  width: 100%;
182
180
  }
183
181
  }
182
+
183
+ .breadcrumbs {
184
+ a {
185
+ background: image_url('biovision/base/icons/breadcrumb.svg') no-repeat bottom .1rem right / .6rem 1.2rem;
186
+ padding-right: 1rem;
187
+ transition: background .25s;
188
+
189
+ &:hover {
190
+ background-image: image_url('biovision/base/icons/breadcrumb-hover.svg');
191
+ }
192
+ }
193
+ }