blacklight-spotlight 0.13.0 → 0.14.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/spotlight/reindex_monitor.js +109 -0
- data/app/assets/stylesheets/spotlight/_blacklight_configuration.scss +9 -8
- data/app/assets/stylesheets/spotlight/_bootstrap_overrides.scss +15 -7
- data/app/assets/stylesheets/spotlight/_header.scss +67 -90
- data/app/assets/stylesheets/spotlight/_variables.scss +4 -0
- data/app/controllers/spotlight/attachments_controller.rb +2 -5
- data/app/controllers/spotlight/browse_controller.rb +15 -3
- data/app/controllers/spotlight/resources_controller.rb +4 -0
- data/app/controllers/spotlight/roles_controller.rb +1 -1
- data/app/controllers/spotlight/sites_controller.rb +50 -0
- data/app/helpers/spotlight/application_helper.rb +2 -1
- data/app/helpers/spotlight/navbar_helper.rb +1 -1
- data/app/jobs/spotlight/reindex_job.rb +17 -8
- data/app/models/concerns/spotlight/user.rb +8 -4
- data/app/models/spotlight/ability.rb +5 -4
- data/app/models/spotlight/exhibit.rb +15 -1
- data/app/models/spotlight/reindex_progress.rb +107 -0
- data/app/models/spotlight/resource.rb +4 -0
- data/app/models/spotlight/role.rb +2 -2
- data/app/models/spotlight/site.rb +16 -0
- data/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
- data/app/views/layouts/spotlight/spotlight.html.erb +1 -1
- data/app/views/shared/_breadcrumbs.html.erb +1 -1
- data/app/views/shared/_exhibit_navbar.html.erb +6 -7
- data/app/views/shared/_masthead.html.erb +32 -0
- data/app/views/shared/_site_sidebar.html.erb +16 -0
- data/app/views/spotlight/about_pages/_sidebar.html.erb +4 -2
- data/app/views/spotlight/browse/_search_title.html.erb +1 -1
- data/app/views/spotlight/browse/index.html.erb +6 -4
- data/app/views/spotlight/browse/show.html.erb +6 -8
- data/app/views/spotlight/catalog/_admin_header.html.erb +15 -12
- data/app/views/spotlight/catalog/_reindex_progress_panel.html.erb +21 -0
- data/app/views/spotlight/exhibits/index.html.erb +4 -2
- data/app/views/spotlight/featured_images/_upload_form.html.erb +17 -0
- data/app/views/spotlight/home_pages/_empty.html.erb +1 -1
- data/app/views/spotlight/metadata_configurations/_metadata_field.html.erb +2 -2
- data/app/views/spotlight/metadata_configurations/edit.html.erb +3 -3
- data/app/views/spotlight/shared/_configuration_sidebar.html.erb +2 -2
- data/app/views/spotlight/shared/_curation_sidebar.html.erb +1 -1
- data/app/views/spotlight/sites/_exhibit.html.erb +18 -0
- data/app/views/spotlight/sites/edit.html.erb +40 -0
- data/app/views/spotlight/sites/edit_exhibits.html.erb +32 -0
- data/config/locales/spotlight.en.yml +30 -2
- data/config/routes.rb +5 -0
- data/db/migrate/20151210073829_create_spotlight_site.rb +9 -0
- data/db/migrate/20151211131415_add_site_to_spotlight_exhibits.rb +23 -0
- data/db/migrate/20151215141516_change_roles_to_support_polymorphic_associations.rb +40 -0
- data/db/migrate/20151215192845_add_index_status_to_resources.rb +6 -0
- data/lib/spotlight/controller.rb +18 -7
- data/lib/spotlight/engine.rb +37 -35
- data/lib/spotlight/version.rb +1 -1
- data/spec/controllers/spotlight/contacts_controller_spec.rb +2 -2
- data/spec/controllers/spotlight/home_pages_controller_spec.rb +2 -4
- data/spec/controllers/spotlight/resources_controller_spec.rb +14 -0
- data/spec/controllers/spotlight/roles_controller_spec.rb +1 -1
- data/spec/controllers/spotlight/sites_controller_spec.rb +48 -0
- data/spec/controllers/spotlight/versions_controller_spec.rb +1 -2
- data/spec/factories/roles.rb +1 -1
- data/spec/factories/users.rb +3 -3
- data/spec/features/add_contacts_spec.rb +2 -2
- data/spec/features/browse_category_spec.rb +65 -0
- data/spec/features/edit_contact_spec.rb +2 -2
- data/spec/features/exhibit_masthead_spec.rb +100 -0
- data/spec/features/javascript/reindex_monitor_spec.rb +22 -0
- data/spec/features/site_masthead_spec.rb +17 -52
- data/spec/helpers/spotlight/application_helper_spec.rb +16 -0
- data/spec/lib/spotlight/controller_spec.rb +34 -8
- data/spec/models/spotlight/ability_spec.rb +3 -4
- data/spec/models/spotlight/exhibit_spec.rb +23 -0
- data/spec/models/spotlight/reindex_progress_spec.rb +104 -0
- data/spec/models/spotlight/site_spec.rb +9 -0
- data/spec/views/shared/_exhibit_navbar.html.erb_spec.rb +3 -9
- data/spec/views/shared/_masthead.html.erb_spec.rb +83 -0
- data/spec/views/spotlight/browse/show.html.erb_spec.rb +2 -2
- data/spec/views/spotlight/catalog/admin.html.erb_spec.rb +1 -0
- data/spec/views/spotlight/roles/index.html.erb_spec.rb +1 -1
- data/spec/views/spotlight/sites/edit_exhibits.html.erb_spec.rb +29 -0
- metadata +33 -14
- data/app/views/shared/_exhibit_masthead.html.erb +0 -20
- data/app/views/shared/_exhibit_masthead_and_navbar.html.erb +0 -9
- data/app/views/shared/_home_sidebar.html.erb +0 -1
- data/app/views/spotlight/attachments/_form.html.erb +0 -29
- data/app/views/spotlight/attachments/edit.html.erb +0 -6
- data/app/views/spotlight/attachments/index.html.erb +0 -31
- data/app/views/spotlight/attachments/new.html.erb +0 -5
- data/app/views/spotlight/attachments/show.html.erb +0 -19
- data/spec/views/shared/_exhibit_masthead.html.erb_spec.rb +0 -70
- data/spec/views/shared/_exhibit_masthead_and_navbar.html.erb_spec.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d5a848d17a782a172979d2f5f1474be224e5aa50
|
4
|
+
data.tar.gz: aaf3bb7c7c594a324f31bacc68a854576bcadfa3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa6893ca19f7e9607d5398f2920af9954b9edee98a4e0cd59e120057ed1aed8c0b901bbe2933efdd9aef2140a6c04708b442472b8a55133055db960be35e9190
|
7
|
+
data.tar.gz: 41d04adaad2035a0ee4693b41ed794fe5b8d4d627f1b638cc6d07967385919424c4789e0ef4e1ff13a14b3a57cb950bd333f02120fe522a5fd1cd102b9e5b468
|
@@ -0,0 +1,109 @@
|
|
1
|
+
Spotlight.onLoad(function() {
|
2
|
+
$('[data-behavior="reindex-monitor"]').reindexMonitor();
|
3
|
+
});
|
4
|
+
|
5
|
+
(function($) {
|
6
|
+
$.fn.reindexMonitor = function() {
|
7
|
+
var monitorElements = this;
|
8
|
+
var defaultRefreshRate = 3000;
|
9
|
+
var panelContainer;
|
10
|
+
|
11
|
+
$(monitorElements).each(function() {
|
12
|
+
panelContainer = $(this);
|
13
|
+
var monitorUrl = panelContainer.data('monitorUrl');
|
14
|
+
var refreshRate = panelContainer.data('refreshRate') || defaultRefreshRate;
|
15
|
+
setInterval(function() {
|
16
|
+
checkMonitorUrl(monitorUrl);
|
17
|
+
}, refreshRate);
|
18
|
+
});
|
19
|
+
|
20
|
+
function checkMonitorUrl(url) {
|
21
|
+
$.ajax(url).success(success).fail(fail);
|
22
|
+
}
|
23
|
+
|
24
|
+
function success(data) {
|
25
|
+
if (data.in_progress) {
|
26
|
+
monitorPanel().show();
|
27
|
+
updateMonitorPanel(data);
|
28
|
+
} else {
|
29
|
+
monitorPanel().hide();
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
function fail() { monitorPanel().hide(); }
|
34
|
+
|
35
|
+
function updateMonitorPanel(data) {
|
36
|
+
panelStartDate().text(data.started);
|
37
|
+
panelCurrentDate().text(data.updated_at);
|
38
|
+
panelCompleted().text(data.completed);
|
39
|
+
updatePanelTotals(data);
|
40
|
+
updatePanelErrorMessage(data);
|
41
|
+
updateProgressBar(data);
|
42
|
+
}
|
43
|
+
|
44
|
+
function updateProgressBar(data) {
|
45
|
+
var percentage = calculatePercentage(data);
|
46
|
+
progressBar()
|
47
|
+
.attr('aria-valuemax', data.total)
|
48
|
+
.attr('aria-valuenow', percentage)
|
49
|
+
.css('width', percentage + '%')
|
50
|
+
.text(percentage + '%');
|
51
|
+
}
|
52
|
+
|
53
|
+
function updatePanelErrorMessage(data) {
|
54
|
+
// We currently do not store this state,
|
55
|
+
// but with this code we can in the future.
|
56
|
+
if ( data.errored ) {
|
57
|
+
panelErrorMessage().show();
|
58
|
+
} else {
|
59
|
+
panelErrorMessage().hide();
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
function updatePanelTotals(data) {
|
64
|
+
panelTotals().each(function() {
|
65
|
+
$(this).text(data.total);
|
66
|
+
});
|
67
|
+
}
|
68
|
+
|
69
|
+
function calculatePercentage(data) {
|
70
|
+
return Math.floor((data.completed / data.total) * 100);
|
71
|
+
}
|
72
|
+
|
73
|
+
function monitorPanel() {
|
74
|
+
return panelContainer.find('.index-status');
|
75
|
+
}
|
76
|
+
|
77
|
+
function panelStartDate() {
|
78
|
+
return monitorPanel()
|
79
|
+
.find('[data-behavior="monitor-start"]')
|
80
|
+
.find('[data-behavior="date"]');
|
81
|
+
}
|
82
|
+
|
83
|
+
function panelCurrentDate() {
|
84
|
+
return monitorPanel()
|
85
|
+
.find('[data-behavior="monitor-current"]')
|
86
|
+
.find('[data-behavior="date"]');
|
87
|
+
}
|
88
|
+
|
89
|
+
function panelTotals() {
|
90
|
+
return monitorPanel().find('[data-behavior="total"]');
|
91
|
+
}
|
92
|
+
|
93
|
+
function panelCompleted() {
|
94
|
+
return monitorPanel()
|
95
|
+
.find('[data-behavior="monitor-current"]')
|
96
|
+
.find('[data-behavior="completed"]');
|
97
|
+
}
|
98
|
+
|
99
|
+
function progressBar() {
|
100
|
+
return monitorPanel().find('.progress-bar');
|
101
|
+
}
|
102
|
+
|
103
|
+
function panelErrorMessage() {
|
104
|
+
return monitorPanel().find('[data-behavior="monitor-error"]');
|
105
|
+
}
|
106
|
+
|
107
|
+
return this;
|
108
|
+
};
|
109
|
+
})(jQuery);
|
@@ -1,10 +1,8 @@
|
|
1
1
|
.dd-item td {
|
2
|
-
text-align:center;
|
3
|
-
|
4
2
|
&:first-child {
|
5
3
|
padding: 0;
|
6
4
|
|
7
|
-
|
5
|
+
.edit-in-place {
|
8
6
|
cursor: text;
|
9
7
|
color: inherit;
|
10
8
|
text-decoration: none;
|
@@ -23,7 +21,6 @@
|
|
23
21
|
|
24
22
|
}
|
25
23
|
|
26
|
-
text-align: left;
|
27
24
|
.dd3-handle:before {
|
28
25
|
top: 3px;
|
29
26
|
}
|
@@ -49,15 +46,19 @@
|
|
49
46
|
}
|
50
47
|
}
|
51
48
|
|
52
|
-
|
53
|
-
margin-
|
49
|
+
.dd-table {
|
50
|
+
margin-top: 2 * $padding-large-vertical;
|
51
|
+
|
54
52
|
th {
|
55
53
|
&:first-child {
|
56
54
|
padding-left: 40px;
|
57
|
-
text-align: left;
|
58
55
|
}
|
59
|
-
text-align:center;
|
60
56
|
}
|
57
|
+
}
|
58
|
+
|
59
|
+
#nested-fields {
|
60
|
+
margin-bottom: 1em;
|
61
|
+
|
61
62
|
.metadata-select {
|
62
63
|
display: inline-block;
|
63
64
|
min-width: 72px;
|
@@ -21,20 +21,28 @@
|
|
21
21
|
}
|
22
22
|
|
23
23
|
.sidenav {
|
24
|
-
|
25
24
|
margin-bottom: 24px;
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
.active {
|
27
|
+
a {
|
28
|
+
color: $black;
|
30
29
|
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
&:hover {
|
31
|
+
background-color: inherit;
|
32
|
+
}
|
34
33
|
}
|
35
34
|
}
|
36
35
|
}
|
37
36
|
|
37
|
+
.nav-heading {
|
38
|
+
margin: 0;
|
39
|
+
padding: $nav-link-padding;
|
40
|
+
}
|
41
|
+
|
42
|
+
.btn-nav {
|
43
|
+
margin: $nav-link-padding;
|
44
|
+
}
|
45
|
+
|
38
46
|
h1,h2,h3,h4,h5,h6 {
|
39
47
|
.label {
|
40
48
|
font-size: $font-size-base;
|
@@ -1,6 +1,3 @@
|
|
1
|
-
$masthead-height: 180px;
|
2
|
-
$masthead-image-blur: 1px;
|
3
|
-
|
4
1
|
@mixin masthead-background-containers() {
|
5
2
|
position: absolute;
|
6
3
|
left: 0;
|
@@ -31,23 +28,39 @@ $masthead-image-blur: 1px;
|
|
31
28
|
}
|
32
29
|
}
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
z-index: 1;
|
31
|
+
.navbar-static-top {
|
32
|
+
margin-bottom: 0;
|
37
33
|
}
|
38
34
|
|
39
|
-
|
40
|
-
|
35
|
+
.masthead {
|
36
|
+
background-color: $masthead-bg;
|
37
|
+
border-bottom: 1px solid $navbar-default-border;
|
38
|
+
margin-bottom: $padding-large-vertical * 2.5;
|
39
|
+
overflow: hidden;
|
40
|
+
padding: 0;
|
41
|
+
position: relative;
|
42
|
+
// allow dropdowns in the top nav to stack above the masthead
|
43
|
+
z-index: $zindex-navbar - 1;
|
41
44
|
|
42
|
-
&.page-masthead {
|
43
|
-
@include transparent-masthead-navigation-menu();
|
44
|
-
background-color: $navbar-transparent-page-bg;
|
45
|
-
border-bottom: 1px solid $navbar-transparent-border;
|
46
|
-
margin-bottom: 0;
|
47
|
-
margin-top: 0;
|
48
45
|
|
49
|
-
|
50
|
-
|
46
|
+
.site-title {
|
47
|
+
padding-bottom: $padding-base-vertical;
|
48
|
+
position: relative;
|
49
|
+
white-space: nowrap;
|
50
|
+
}
|
51
|
+
|
52
|
+
small {
|
53
|
+
@extend .hidden-xs;
|
54
|
+
|
55
|
+
display: block;
|
56
|
+
margin-top: $padding-base-vertical;
|
57
|
+
padding-bottom: $padding-base-vertical;
|
58
|
+
padding-top: $padding-base-vertical;
|
59
|
+
}
|
60
|
+
|
61
|
+
.navbar {
|
62
|
+
&:last-child {
|
63
|
+
margin-bottom: 0;
|
51
64
|
}
|
52
65
|
}
|
53
66
|
|
@@ -56,81 +69,46 @@ $masthead-image-blur: 1px;
|
|
56
69
|
}
|
57
70
|
}
|
58
71
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
border-top: 1px solid $navbar-transparent-border;
|
63
|
-
}
|
64
|
-
|
65
|
-
.navbar + .navbar {
|
66
|
-
margin-top: 0;
|
67
|
-
}
|
68
|
-
|
69
|
-
#header-navbar {
|
70
|
-
margin-bottom: 0;
|
71
|
-
}
|
72
|
-
|
73
|
-
#exhibit-masthead {
|
74
|
-
height: $masthead-height;
|
75
|
-
margin-bottom: -50px;
|
76
|
-
padding: 0;
|
77
|
-
position: static;
|
78
|
-
|
79
|
-
& > .container {
|
80
|
-
position: relative;
|
81
|
-
top: 33%;
|
82
|
-
-webkit-transform: translateY(-50%);
|
83
|
-
transform: translateY(-50%);
|
72
|
+
.resource-masthead {
|
73
|
+
.site-title {
|
74
|
+
@extend .text-center;
|
84
75
|
}
|
85
76
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
> .container {
|
91
|
-
top: 60%;
|
92
|
-
}
|
93
|
-
|
94
|
-
.navbar-brand {
|
95
|
-
font-size: $font-size-large;
|
96
|
-
text-shadow: 1px 1px 0 $black;
|
97
|
-
}
|
98
|
-
|
99
|
-
.search-title {
|
100
|
-
text-align: center;
|
101
|
-
|
102
|
-
small {
|
103
|
-
text-transform: uppercase;
|
104
|
-
}
|
105
|
-
}
|
77
|
+
.navbar {
|
78
|
+
border-bottom: 1px solid $navbar-transparent-border;
|
79
|
+
border-top: 0;
|
80
|
+
margin-bottom: 0;
|
106
81
|
}
|
107
82
|
|
108
|
-
.
|
109
|
-
|
83
|
+
.navbar-nav {
|
84
|
+
float: right;
|
110
85
|
}
|
111
86
|
|
112
|
-
|
113
|
-
display:
|
114
|
-
padding-top: $padding-base-vertical;
|
115
|
-
@extend .hidden-xs;
|
87
|
+
.search-query-form {
|
88
|
+
display: none;
|
116
89
|
}
|
90
|
+
}
|
117
91
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
92
|
+
.site-title-container {
|
93
|
+
max-height: $masthead-height - $navbar-height;
|
94
|
+
|
95
|
+
padding-bottom: $padding-large-vertical;
|
96
|
+
padding-top: $padding-large-vertical;
|
97
|
+
}
|
124
98
|
|
125
|
-
|
126
|
-
|
127
|
-
|
99
|
+
.image-masthead {
|
100
|
+
.navbar {
|
101
|
+
@include transparent-masthead-navigation-menu();
|
102
|
+
background-color: $navbar-transparent-page-bg;
|
128
103
|
}
|
129
104
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
105
|
+
.h1 {
|
106
|
+
color: $white;
|
107
|
+
text-shadow: 1px 1px 0 $black;
|
108
|
+
}
|
109
|
+
|
110
|
+
small {
|
111
|
+
color: $white;
|
134
112
|
}
|
135
113
|
|
136
114
|
// This is to add a background image to the masthead, in a way that
|
@@ -139,16 +117,21 @@ $masthead-image-blur: 1px;
|
|
139
117
|
@include masthead-background-containers();
|
140
118
|
background-repeat: no-repeat;
|
141
119
|
background-size: cover;
|
120
|
+
|
121
|
+
// Add right border to image to hide lighter blurred edge
|
122
|
+
border-right: 1px solid $black;
|
123
|
+
|
142
124
|
// Add small amount of blur to help text stand out
|
143
125
|
//filter: url(masthead/blur.svg#blur); // for older versions of FF
|
144
126
|
-webkit-filter: blur($masthead-image-blur);
|
145
127
|
filter: blur($masthead-image-blur);
|
128
|
+
|
129
|
+
height: $masthead-height;
|
130
|
+
|
146
131
|
// Shift image slightly to hide blurred edge of image
|
147
132
|
margin-left: -$masthead-image-blur;
|
148
133
|
margin-top: -$masthead-image-blur;
|
149
134
|
overflow: hidden;
|
150
|
-
// Add right border to image to hide lighter blurred edge
|
151
|
-
border-right: 1px solid $black;
|
152
135
|
}
|
153
136
|
|
154
137
|
// Include gradient to improve text legibility,
|
@@ -161,15 +144,9 @@ $masthead-image-blur: 1px;
|
|
161
144
|
rgba(0, 0, 0, 0.4),
|
162
145
|
rgba(0, 0, 0, 0.5)
|
163
146
|
);
|
164
|
-
}
|
165
|
-
}
|
166
147
|
|
167
|
-
|
168
|
-
|
169
|
-
// whether it is a regular masthead or a browse category masthead
|
170
|
-
#exhibit-masthead + #exhibit-navbar,
|
171
|
-
#exhibit-navbar + #exhibit-masthead {
|
172
|
-
margin-bottom: $padding-large-vertical * 2.5;
|
148
|
+
height: $masthead-height;
|
149
|
+
}
|
173
150
|
}
|
174
151
|
|
175
152
|
.col-md-4 {
|
@@ -3,6 +3,10 @@ $footer-height: 118px !default;
|
|
3
3
|
$white: #ffffff !default;
|
4
4
|
$black: #000000 !default;
|
5
5
|
|
6
|
+
$masthead-bg: $well-bg !default;
|
7
|
+
$masthead-height: 180px !default;
|
8
|
+
$masthead-image-blur: 1px !default;
|
9
|
+
|
6
10
|
$exhibit-card-height: 350px !default;
|
7
11
|
$exhibit-card-bg: $well-bg !default;
|
8
12
|
$exhibit-card-border: $well-border !default;
|
@@ -9,11 +9,8 @@ module Spotlight
|
|
9
9
|
# POST /attachments
|
10
10
|
def create
|
11
11
|
@attachment.attributes = attachment_params
|
12
|
-
|
13
|
-
|
14
|
-
else
|
15
|
-
render action: 'new'
|
16
|
-
end
|
12
|
+
@attachment.save!
|
13
|
+
render json: @attachment
|
17
14
|
end
|
18
15
|
|
19
16
|
private
|
@@ -11,7 +11,7 @@ module Spotlight
|
|
11
11
|
before_action :attach_breadcrumbs
|
12
12
|
record_search_parameters only: :show
|
13
13
|
|
14
|
-
|
14
|
+
helper_method :should_render_spotlight_search_bar?
|
15
15
|
|
16
16
|
def index
|
17
17
|
@searches = @exhibit.searches.published
|
@@ -47,8 +47,20 @@ module Spotlight
|
|
47
47
|
@_prefixes ||= super + ['catalog']
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
51
|
-
|
50
|
+
def current_masthead
|
51
|
+
if resource_masthead?
|
52
|
+
@search.masthead
|
53
|
+
else
|
54
|
+
super
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def resource_masthead?
|
59
|
+
@search && @search.masthead && @search.masthead.display?
|
60
|
+
end
|
61
|
+
|
62
|
+
def should_render_spotlight_search_bar?
|
63
|
+
!resource_masthead?
|
52
64
|
end
|
53
65
|
end
|
54
66
|
end
|