Lines 1-14
Link Here
|
|
|
1 |
/* keep tidy */ |
1 |
/* global KOHA CodeMirror to_highlight search_jumped humanMsg dataTablesDefaults themelang */ |
2 |
/* global KOHA CodeMirror to_highlight search_jumped humanMsg dataTablesDefaults themelang */ |
2 |
// We can assume 'KOHA' exists, as we depend on KOHA.AJAX |
3 |
// We can assume 'KOHA' exists, as we depend on KOHA.AJAX |
3 |
|
4 |
|
4 |
KOHA.Preferences = { |
5 |
KOHA.Preferences = { |
5 |
Save: function ( form ) { |
6 |
Save: function (form) { |
6 |
if ( ! $(form).valid() ) { |
7 |
if (!$(form).valid()) { |
7 |
humanMsg.displayAlert( __("Error: presence of invalid data prevent saving. Please make the corrections and try again.") ); |
8 |
humanMsg.displayAlert( |
|
|
9 |
__( |
10 |
"Error: presence of invalid data prevent saving. Please make the corrections and try again." |
11 |
) |
12 |
); |
8 |
return; |
13 |
return; |
9 |
} |
14 |
} |
10 |
|
15 |
|
11 |
let sysprefs = $(form).find('.modified').not('.preference-checkbox').toArray().reduce((map, e) => ({ ...map, [$(e).attr('name')]: [$(e).val()].flat()}), {}); |
16 |
let sysprefs = $(form) |
|
|
17 |
.find(".modified") |
18 |
.not(".preference-checkbox") |
19 |
.toArray() |
20 |
.reduce( |
21 |
(map, e) => ({ |
22 |
...map, |
23 |
[$(e).attr("name")]: [$(e).val()].flat(), |
24 |
}), |
25 |
{} |
26 |
); |
12 |
|
27 |
|
13 |
// checkbox prefs |
28 |
// checkbox prefs |
14 |
let modified_boxes = $(form).find(".modified.preference-checkbox"); |
29 |
let modified_boxes = $(form).find(".modified.preference-checkbox"); |
Lines 29-79
KOHA.Preferences = {
Link Here
|
29 |
} |
44 |
} |
30 |
} |
45 |
} |
31 |
|
46 |
|
32 |
if ( !Object.keys(sysprefs).length ) { |
47 |
if (!Object.keys(sysprefs).length) { |
33 |
humanMsg.displayAlert( __("Nothing to save") ); |
48 |
humanMsg.displayAlert(__("Nothing to save")); |
34 |
return; |
49 |
return; |
35 |
} |
50 |
} |
36 |
KOHA.AJAX.MarkRunning($(form).find('.save-all'), __("Saving...") ); |
51 |
KOHA.AJAX.MarkRunning($(form).find(".save-all"), __("Saving...")); |
37 |
const client = APIClient.syspref; |
52 |
const client = APIClient.syspref; |
38 |
client.sysprefs.update_all(sysprefs).then( |
53 |
client.sysprefs |
39 |
success => { |
54 |
.update_all(sysprefs) |
40 |
KOHA.Preferences.Success( form ); |
55 |
.then( |
41 |
}, |
56 |
success => { |
42 |
error => { |
57 |
KOHA.Preferences.Success(form); |
43 |
console.warn("Something wrong happened: %s".format(error)); |
58 |
}, |
44 |
} |
59 |
error => { |
45 |
).then(() => { |
60 |
console.warn("Something wrong happened: %s".format(error)); |
46 |
KOHA.AJAX.MarkDone( $( form ).find( '.save-all' ) ); |
61 |
} |
47 |
}); |
62 |
) |
48 |
|
63 |
.then(() => { |
|
|
64 |
KOHA.AJAX.MarkDone($(form).find(".save-all")); |
65 |
}); |
49 |
}, |
66 |
}, |
50 |
Success: function ( form ) { |
67 |
Success: function (form) { |
51 |
var msg = ""; |
68 |
var msg = ""; |
52 |
$(form).find('.modified').each(function(){ |
69 |
$(form) |
53 |
var modified_pref = $(this).attr("id"); |
70 |
.find(".modified") |
54 |
modified_pref = modified_pref.replace("pref_",""); |
71 |
.each(function () { |
55 |
msg += "<strong>" + __("Saved preference %s").format(modified_pref) + "</strong>\n"; |
72 |
var modified_pref = $(this).attr("id"); |
56 |
}); |
73 |
modified_pref = modified_pref.replace("pref_", ""); |
|
|
74 |
msg += |
75 |
"<strong>" + |
76 |
__("Saved preference %s").format(modified_pref) + |
77 |
"</strong>\n"; |
78 |
}); |
57 |
humanMsg.displayAlert(msg); |
79 |
humanMsg.displayAlert(msg); |
58 |
|
80 |
|
59 |
$( form ) |
81 |
$(form) |
60 |
.find( '.modified-warning' ).remove().end() |
82 |
.find(".modified-warning") |
61 |
.find( '.modified' ).removeClass('modified'); |
83 |
.remove() |
|
|
84 |
.end() |
85 |
.find(".modified") |
86 |
.removeClass("modified"); |
62 |
KOHA.Preferences.Modified = false; |
87 |
KOHA.Preferences.Modified = false; |
63 |
} |
88 |
}, |
64 |
}; |
89 |
}; |
65 |
|
90 |
|
66 |
function mark_modified() { |
91 |
function mark_modified() { |
67 |
$( this.form ).find( '.save-all' ).prop('disabled', false); |
92 |
$(this.form).find(".save-all").prop("disabled", false); |
68 |
$( this ).addClass( 'modified' ); |
93 |
$(this).addClass("modified"); |
69 |
var name_cell = $( this ).parents( '.name-row' ).find( '.name-cell' ); |
94 |
var name_cell = $(this).parents(".name-row").find(".name-cell"); |
70 |
if ( !name_cell.find( '.modified-warning' ).length ) |
95 |
if (!name_cell.find(".modified-warning").length) |
71 |
name_cell.append('<em class="modified-warning">(' + __("modified") + ')</em>'); |
96 |
name_cell.append( |
|
|
97 |
'<em class="modified-warning">(' + __("modified") + ")</em>" |
98 |
); |
72 |
KOHA.Preferences.Modified = true; |
99 |
KOHA.Preferences.Modified = true; |
73 |
} |
100 |
} |
74 |
|
101 |
|
75 |
window.onbeforeunload = function () { |
102 |
window.onbeforeunload = function () { |
76 |
if ( KOHA.Preferences.Modified ) { |
103 |
if (KOHA.Preferences.Modified) { |
77 |
return __("You have made changes to system preferences."); |
104 |
return __("You have made changes to system preferences."); |
78 |
} |
105 |
} |
79 |
}; |
106 |
}; |
Lines 81-92
window.onbeforeunload = function () {
Link Here
|
81 |
// Add event handlers to any elements with .expand-textarea classes |
108 |
// Add event handlers to any elements with .expand-textarea classes |
82 |
// this allows the CodeMirror widget to be displayed |
109 |
// this allows the CodeMirror widget to be displayed |
83 |
function addExpandHandler() { |
110 |
function addExpandHandler() { |
84 |
const textAreas = $('.expand-textarea').map(function() { |
111 |
const textAreas = $(".expand-textarea") |
85 |
return this |
112 |
.map(function () { |
86 |
}).get(); |
113 |
return this; |
87 |
textAreas.forEach((expandTextArea) => { |
114 |
}) |
|
|
115 |
.get(); |
116 |
textAreas.forEach(expandTextArea => { |
88 |
// Don't duplicate click event handlers |
117 |
// Don't duplicate click event handlers |
89 |
const ev = $._data($(expandTextArea).get(0), 'events'); |
118 |
const ev = $._data($(expandTextArea).get(0), "events"); |
90 |
if (ev && ev.click) { |
119 |
if (ev && ev.click) { |
91 |
return; |
120 |
return; |
92 |
} |
121 |
} |
Lines 96-112
function addExpandHandler() {
Link Here
|
96 |
$(this).hide(); |
125 |
$(this).hide(); |
97 |
var target = $(this).data("target"); |
126 |
var target = $(this).data("target"); |
98 |
var syntax = $(this).data("syntax"); |
127 |
var syntax = $(this).data("syntax"); |
99 |
var lint_type = syntax === 'javascript'? { 'esversion': 6 } : true; |
128 |
var lint_type = syntax === "javascript" ? { esversion: 6 } : true; |
100 |
$("#collapse_" + target).show(); |
129 |
$("#collapse_" + target).show(); |
101 |
if (syntax) { |
130 |
if (syntax) { |
102 |
var editor = CodeMirror.fromTextArea(document.getElementById("pref_" + target), { |
131 |
var editor = CodeMirror.fromTextArea( |
103 |
lineNumbers: true, |
132 |
document.getElementById("pref_" + target), |
104 |
mode: syntax, |
133 |
{ |
105 |
lineWrapping: true, |
134 |
lineNumbers: true, |
106 |
viewportMargin: Infinity, |
135 |
mode: syntax, |
107 |
gutters: ["CodeMirror-lint-markers"], |
136 |
lineWrapping: true, |
108 |
lint: lint_type, |
137 |
viewportMargin: Infinity, |
109 |
}); |
138 |
gutters: ["CodeMirror-lint-markers"], |
|
|
139 |
lint: lint_type, |
140 |
} |
141 |
); |
110 |
editor.on("change", function () { |
142 |
editor.on("change", function () { |
111 |
mark_modified.call($("#pref_" + target)[0]); |
143 |
mark_modified.call($("#pref_" + target)[0]); |
112 |
}); |
144 |
}); |
Lines 117-134
function addExpandHandler() {
Link Here
|
117 |
$("#pref_" + target).show(); |
149 |
$("#pref_" + target).show(); |
118 |
} |
150 |
} |
119 |
}); |
151 |
}); |
120 |
}) |
152 |
}); |
121 |
} |
153 |
} |
122 |
|
154 |
|
123 |
// Add event handlers to any elements with .collapse-textarea classes |
155 |
// Add event handlers to any elements with .collapse-textarea classes |
124 |
// this allows the hiding of the CodeMirror widget |
156 |
// this allows the hiding of the CodeMirror widget |
125 |
function addCollapseHandler() { |
157 |
function addCollapseHandler() { |
126 |
const textAreas = $('.collapse-textarea').map(function() { |
158 |
const textAreas = $(".collapse-textarea") |
127 |
return this |
159 |
.map(function () { |
128 |
}).get(); |
160 |
return this; |
129 |
textAreas.forEach((collapseTextArea) => { |
161 |
}) |
|
|
162 |
.get(); |
163 |
textAreas.forEach(collapseTextArea => { |
130 |
// Don't duplicate click event handlers |
164 |
// Don't duplicate click event handlers |
131 |
const ev = $._data($(collapseTextArea).get(0), 'events'); |
165 |
const ev = $._data($(collapseTextArea).get(0), "events"); |
132 |
if (ev && ev.click) { |
166 |
if (ev && ev.click) { |
133 |
return; |
167 |
return; |
134 |
} |
168 |
} |
Lines 139-218
function addCollapseHandler() {
Link Here
|
139 |
var syntax = $(this).data("syntax"); |
173 |
var syntax = $(this).data("syntax"); |
140 |
$("#expand_" + target).show(); |
174 |
$("#expand_" + target).show(); |
141 |
if (syntax) { |
175 |
if (syntax) { |
142 |
var editor = $("#pref_" + target).next(".CodeMirror")[0].CodeMirror; |
176 |
var editor = $("#pref_" + target).next(".CodeMirror")[0] |
|
|
177 |
.CodeMirror; |
143 |
editor.toTextArea(); |
178 |
editor.toTextArea(); |
144 |
} |
179 |
} |
145 |
$("#pref_" + target).hide(); |
180 |
$("#pref_" + target).hide(); |
146 |
}); |
181 |
}); |
147 |
}) |
182 |
}); |
148 |
} |
183 |
} |
149 |
|
184 |
|
150 |
// Add a handler for any consent delete links |
185 |
// Add a handler for any consent delete links |
151 |
function addConsentDeleteHandler() { |
186 |
function addConsentDeleteHandler() { |
152 |
const deleteButtons = $('.consentDelete').map(function() { |
187 |
const deleteButtons = $(".consentDelete") |
153 |
return this |
188 |
.map(function () { |
154 |
}).get(); |
189 |
return this; |
155 |
deleteButtons.forEach((deleteButton) => { |
190 |
}) |
|
|
191 |
.get(); |
192 |
deleteButtons.forEach(deleteButton => { |
156 |
// Don't duplicate click event handlers |
193 |
// Don't duplicate click event handlers |
157 |
const ev = $._data($(deleteButton).get(0), 'events'); |
194 |
const ev = $._data($(deleteButton).get(0), "events"); |
158 |
if (ev && ev.click) { |
195 |
if (ev && ev.click) { |
159 |
return; |
196 |
return; |
160 |
} |
197 |
} |
161 |
$(deleteButton).on('click', function (e) { |
198 |
$(deleteButton).on("click", function (e) { |
162 |
e.preventDefault(); |
199 |
e.preventDefault(); |
163 |
const target = $(this).data('target'); |
200 |
const target = $(this).data("target"); |
164 |
const proceed = confirm(__('Are you sure you want to delete this consent item?')); |
201 |
const proceed = confirm( |
|
|
202 |
__("Are you sure you want to delete this consent item?") |
203 |
); |
165 |
if (proceed) { |
204 |
if (proceed) { |
166 |
$('#' + target).remove(); |
205 |
$("#" + target).remove(); |
167 |
} |
206 |
} |
168 |
}); |
207 |
}); |
169 |
}) |
208 |
}); |
170 |
} |
209 |
} |
171 |
|
210 |
|
172 |
$("table.preferences").dataTable($.extend(true, {}, dataTablesDefaults, { |
211 |
$("table.preferences").dataTable( |
173 |
"dom": 't', |
212 |
$.extend(true, {}, dataTablesDefaults, { |
174 |
"columnDefs": [ |
213 |
dom: "t", |
175 |
{ "targets": [ -1 ], "orderable": false, "searchable": false } |
214 |
columnDefs: [{ targets: [-1], orderable: false, searchable: false }], |
176 |
], |
215 |
paging: false, |
177 |
"paging": false |
216 |
}) |
178 |
})); |
217 |
); |
179 |
|
218 |
|
180 |
$( '.prefs-tab' ) |
219 |
$(".prefs-tab") |
181 |
.find( 'input.preference, textarea.preference' ).on('input', function () { |
220 |
.find("input.preference, textarea.preference") |
182 |
if ( this.defaultValue === undefined || this.value != this.defaultValue ) mark_modified.call( this ); |
221 |
.on("input", function () { |
183 |
} ).end() |
222 |
if (this.defaultValue === undefined || this.value != this.defaultValue) |
184 |
.find( 'select.preference' ).change( mark_modified ); |
223 |
mark_modified.call(this); |
185 |
$('.preference-checkbox').change( function () { |
224 |
}) |
186 |
$('.preference-checkbox').addClass('modified'); |
225 |
.end() |
|
|
226 |
.find("select.preference") |
227 |
.change(mark_modified); |
228 |
$(".preference-checkbox").change(function () { |
229 |
$(".preference-checkbox").addClass("modified"); |
187 |
mark_modified.call(this); |
230 |
mark_modified.call(this); |
188 |
} ); |
231 |
}); |
189 |
|
232 |
|
190 |
$(".set_syspref").click(function() { |
233 |
$(".set_syspref").click(function () { |
191 |
var s = $(this).attr('data-syspref'); |
234 |
var s = $(this).attr("data-syspref"); |
192 |
var v = $(this).attr('data-value'); |
235 |
var v = $(this).attr("data-value"); |
193 |
// populate the input with the value in data-value |
236 |
// populate the input with the value in data-value |
194 |
$("#pref_"+s).val(v); |
237 |
$("#pref_" + s).val(v); |
195 |
// pass the DOM element to trigger "modified" to enable submit button |
238 |
// pass the DOM element to trigger "modified" to enable submit button |
196 |
mark_modified.call($("#pref_"+s)[0]); |
239 |
mark_modified.call($("#pref_" + s)[0]); |
197 |
return false; |
240 |
return false; |
198 |
}); |
241 |
}); |
199 |
|
242 |
|
200 |
$(".sortable").each( (i, e) => { |
243 |
$(".sortable").each((i, e) => { |
201 |
Sortable.create(e, { |
244 |
Sortable.create(e, { |
202 |
animation: 150, |
245 |
animation: 150, |
203 |
onUpdate: function( e ){ |
246 |
onUpdate: function (e) { |
204 |
$(e.target).find('input:first').change(); |
247 |
$(e.target).find("input:first").change(); |
205 |
} |
248 |
}, |
206 |
}); |
249 |
}); |
207 |
}); |
250 |
}); |
208 |
|
251 |
|
209 |
$( '.prefs-tab .action .cancel' ).click( function () { KOHA.Preferences.Modified = false } ); |
252 |
$(".prefs-tab .action .cancel").click(function () { |
210 |
|
253 |
KOHA.Preferences.Modified = false; |
211 |
$( '.prefs-tab .save-all' ).prop('disabled', true).click( function () { |
|
|
212 |
KOHA.Preferences.Save( this.form ); |
213 |
return false; |
214 |
}); |
254 |
}); |
215 |
|
255 |
|
|
|
256 |
$(".prefs-tab .save-all") |
257 |
.prop("disabled", true) |
258 |
.click(function () { |
259 |
KOHA.Preferences.Save(this.form); |
260 |
return false; |
261 |
}); |
262 |
|
216 |
addExpandHandler(); |
263 |
addExpandHandler(); |
217 |
|
264 |
|
218 |
addCollapseHandler(); |
265 |
addCollapseHandler(); |
Lines 220-305
addCollapseHandler();
Link Here
|
220 |
$("h3").attr("class", "expanded").attr("title", __("Collapse this section")); |
267 |
$("h3").attr("class", "expanded").attr("title", __("Collapse this section")); |
221 |
var collapsible = $(".collapsed,.expanded"); |
268 |
var collapsible = $(".collapsed,.expanded"); |
222 |
|
269 |
|
223 |
$(collapsible).on("click",function(){ |
270 |
$(collapsible).on("click", function () { |
224 |
var h3Id = $(this).attr("id"); |
271 |
var h3Id = $(this).attr("id"); |
225 |
var panel = $("#collapse_" + h3Id); |
272 |
var panel = $("#collapse_" + h3Id); |
226 |
if(panel.is(":visible")){ |
273 |
if (panel.is(":visible")) { |
227 |
$(this).addClass("collapsed").removeClass("expanded").attr("title", __("Expand this section") ); |
274 |
$(this) |
|
|
275 |
.addClass("collapsed") |
276 |
.removeClass("expanded") |
277 |
.attr("title", __("Expand this section")); |
228 |
panel.hide(); |
278 |
panel.hide(); |
229 |
} else { |
279 |
} else { |
230 |
$(this).addClass("expanded").removeClass("collapsed").attr("title", __("Collapse this section") ); |
280 |
$(this) |
|
|
281 |
.addClass("expanded") |
282 |
.removeClass("collapsed") |
283 |
.attr("title", __("Collapse this section")); |
231 |
panel.show(); |
284 |
panel.show(); |
232 |
} |
285 |
} |
233 |
}); |
286 |
}); |
234 |
|
287 |
|
235 |
$(".pref_sublink").on("click", function(){ |
288 |
$(".pref_sublink").on("click", function () { |
236 |
/* If the user clicks a sub-menu link in the sidebar, |
289 |
/* If the user clicks a sub-menu link in the sidebar, |
237 |
check to see if it is collapsed. If so, expand it */ |
290 |
check to see if it is collapsed. If so, expand it */ |
238 |
var href = $(this).attr("href"); |
291 |
var href = $(this).attr("href"); |
239 |
href = href.replace("#",""); |
292 |
href = href.replace("#", ""); |
240 |
var panel = $("#collapse_" + href ); |
293 |
var panel = $("#collapse_" + href); |
241 |
if( panel.is(":hidden") ){ |
294 |
if (panel.is(":hidden")) { |
242 |
$("#" + href).addClass("expanded").removeClass("collapsed").attr("title", __("Collapse this section") ); |
295 |
$("#" + href) |
|
|
296 |
.addClass("expanded") |
297 |
.removeClass("collapsed") |
298 |
.attr("title", __("Collapse this section")); |
243 |
panel.show(); |
299 |
panel.show(); |
244 |
} |
300 |
} |
245 |
}); |
301 |
}); |
246 |
|
302 |
|
247 |
if ( to_highlight ) { |
303 |
if (to_highlight) { |
248 |
var words = to_highlight.split( ' ' ); |
304 |
var words = to_highlight.split(" "); |
249 |
$( '.prefs-tab table' ).find( 'td, th' ).not( '.name-cell' ).each( function ( i, td ) { |
305 |
$(".prefs-tab table") |
250 |
$.each( words, function ( i, word ) { $( td ).highlight( word ) } ); |
306 |
.find("td, th") |
251 |
} ).find( 'option, textarea' ).removeHighlight(); |
307 |
.not(".name-cell") |
|
|
308 |
.each(function (i, td) { |
309 |
$.each(words, function (i, word) { |
310 |
$(td).highlight(word); |
311 |
}); |
312 |
}) |
313 |
.find("option, textarea") |
314 |
.removeHighlight(); |
252 |
} |
315 |
} |
253 |
|
316 |
|
254 |
if ( search_jumped ) { |
317 |
if (search_jumped) { |
255 |
document.location.hash = "jumped"; |
318 |
document.location.hash = "jumped"; |
256 |
} |
319 |
} |
257 |
|
320 |
|
258 |
$("#pref_UpdateItemLocationOnCheckin, #pref_UpdateItemLocationOnCheckout").change(function(){ |
321 |
$( |
|
|
322 |
"#pref_UpdateItemLocationOnCheckin, #pref_UpdateItemLocationOnCheckout" |
323 |
).change(function () { |
259 |
var the_text = $(this).val(); |
324 |
var the_text = $(this).val(); |
260 |
var alert_text = ''; |
325 |
var alert_text = ""; |
261 |
if (the_text.indexOf('_ALL_:') != -1) alert_text = __("Note: _ALL_ value will override all other values") + '\n'; |
326 |
if (the_text.indexOf("_ALL_:") != -1) |
262 |
var split_text =the_text.split("\n"); |
327 |
alert_text = |
263 |
var alert_issues = ''; |
328 |
__("Note: _ALL_ value will override all other values") + "\n"; |
|
|
329 |
var split_text = the_text.split("\n"); |
330 |
var alert_issues = ""; |
264 |
var issue_count = 0; |
331 |
var issue_count = 0; |
265 |
var reg_check = /.*:\s.*/; |
332 |
var reg_check = /.*:\s.*/; |
266 |
for (var i=0; i < split_text.length; i++){ |
333 |
for (var i = 0; i < split_text.length; i++) { |
267 |
if ( !split_text[i].match(reg_check) && split_text[i].length ) { |
334 |
if (!split_text[i].match(reg_check) && split_text[i].length) { |
268 |
alert_issues+=split_text[i]+"\n"; |
335 |
alert_issues += split_text[i] + "\n"; |
269 |
issue_count++; |
336 |
issue_count++; |
270 |
} |
337 |
} |
271 |
} |
338 |
} |
272 |
if (issue_count) alert_text += "\n" + __("The following values are not formatted correctly:") + "\n" + alert_issues; |
339 |
if (issue_count) |
273 |
if ( alert_text.length ) alert(alert_text); |
340 |
alert_text += |
|
|
341 |
"\n" + |
342 |
__("The following values are not formatted correctly:") + |
343 |
"\n" + |
344 |
alert_issues; |
345 |
if (alert_text.length) alert(alert_text); |
274 |
}); |
346 |
}); |
275 |
|
347 |
|
276 |
$(".prefs-tab form").each(function () { |
348 |
$(".prefs-tab form").each(function () { |
277 |
$(this).validate({ |
349 |
$(this).validate({ |
278 |
rules: { }, |
350 |
rules: {}, |
279 |
errorPlacement: function(error, element) { |
351 |
errorPlacement: function (error, element) { |
280 |
var placement = $(element).parent(); |
352 |
var placement = $(element).parent(); |
281 |
if (placement) { |
353 |
if (placement) { |
282 |
$(placement).append(error) |
354 |
$(placement).append(error); |
283 |
} else { |
355 |
} else { |
284 |
error.insertAfter(element); |
356 |
error.insertAfter(element); |
285 |
} |
357 |
} |
286 |
} |
358 |
}, |
287 |
}); |
359 |
}); |
288 |
}); |
360 |
}); |
289 |
|
361 |
|
290 |
$(".preference-email").each(function() { |
362 |
$(".preference-email").each(function () { |
291 |
$(this).rules("add", { |
363 |
$(this).rules("add", { |
292 |
email: true |
364 |
email: true, |
293 |
}); |
365 |
}); |
294 |
}); |
366 |
}); |
295 |
|
367 |
|
296 |
|
368 |
$(".modalselect").on("click", function () { |
297 |
$(".modalselect").on("click", function(){ |
|
|
298 |
var datasource = $(this).data("source"); |
369 |
var datasource = $(this).data("source"); |
299 |
var exclusions = $(this).data("exclusions").split('|'); |
370 |
var exclusions = $(this).data("exclusions").split("|"); |
300 |
var inclusions = $(this).data("inclusions").split('|'); |
371 |
var inclusions = $(this).data("inclusions").split("|"); |
301 |
var required = $(this).data("required").split('|'); |
372 |
var required = $(this).data("required").split("|"); |
302 |
var pref_name = this.id.replace(/pref_/, ''); |
373 |
var pref_name = this.id.replace(/pref_/, ""); |
303 |
var pref_value = this.value; |
374 |
var pref_value = this.value; |
304 |
var prefs = pref_value.split("|"); |
375 |
var prefs = pref_value.split("|"); |
305 |
|
376 |
|
Lines 309-353
$(".modalselect").on("click", function(){
Link Here
|
309 |
var readonly = ""; |
380 |
var readonly = ""; |
310 |
var disabled = ""; |
381 |
var disabled = ""; |
311 |
var style = ""; |
382 |
var style = ""; |
312 |
$.each( Object.keys(data).sort(), function( i, key ){ |
383 |
$.each(Object.keys(data).sort(), function (i, key) { |
313 |
if( prefs.indexOf( key ) >= 0 ){ |
384 |
if (prefs.indexOf(key) >= 0) { |
314 |
checked = ' checked="checked" '; |
385 |
checked = ' checked="checked" '; |
315 |
} else { |
386 |
} else { |
316 |
checked = ""; |
387 |
checked = ""; |
317 |
} |
388 |
} |
318 |
if( required.indexOf( key ) >= 0 ){ |
389 |
if (required.indexOf(key) >= 0) { |
319 |
style = "required"; |
390 |
style = "required"; |
320 |
checked = ' checked="checked" '; |
391 |
checked = ' checked="checked" '; |
321 |
} else if( exclusions.indexOf( key ) >= 0 ){ |
392 |
} else if (exclusions.indexOf(key) >= 0) { |
322 |
style = "disabled"; |
393 |
style = "disabled"; |
323 |
disabled = ' disabled="disabled" '; |
394 |
disabled = ' disabled="disabled" '; |
324 |
checked = ""; |
395 |
checked = ""; |
325 |
} else if( inclusions.indexOf( key ) >= 0 ){ |
396 |
} else if (inclusions.indexOf(key) >= 0) { |
326 |
style = "disabled"; |
397 |
style = "disabled"; |
327 |
disabled = ' disabled="disabled" '; |
398 |
disabled = ' disabled="disabled" '; |
328 |
checked = ' checked="checked" '; |
399 |
checked = ' checked="checked" '; |
329 |
} else { |
400 |
} else { |
330 |
style = ""; |
401 |
style = ""; |
331 |
disabled = ""; |
402 |
disabled = ""; |
332 |
} |
403 |
} |
333 |
|
404 |
|
334 |
items.push('<label class="' + style +'"><input class="dbcolumn_selection" type="checkbox" id="' + key + '"' + checked + disabled + ' name="pref" value="' + key + '" /> ' + data[key]+ ' (' + key + ')</label>'); |
405 |
items.push( |
|
|
406 |
'<label class="' + |
407 |
style + |
408 |
'"><input class="dbcolumn_selection" type="checkbox" id="' + |
409 |
key + |
410 |
'"' + |
411 |
checked + |
412 |
disabled + |
413 |
' name="pref" value="' + |
414 |
key + |
415 |
'" /> ' + |
416 |
data[key] + |
417 |
" (" + |
418 |
key + |
419 |
")</label>" |
420 |
); |
335 |
}); |
421 |
}); |
336 |
$("<div/>", { |
422 |
$("<div/>", { |
337 |
"class": "columns-2", |
423 |
class: "columns-2", |
338 |
html: items.join("") |
424 |
html: items.join(""), |
339 |
}).appendTo("#prefModalBody"); |
425 |
}).appendTo("#prefModalBody"); |
340 |
|
426 |
|
341 |
$("#saveModalPrefs").data("target", this.id ); |
427 |
$("#saveModalPrefs").data("target", this.id); |
342 |
$("#saveModalPrefs").data("type", "modalselect" ); |
428 |
$("#saveModalPrefs").data("type", "modalselect"); |
343 |
$("#prefModalLabel").text( pref_name ); |
429 |
$("#prefModalLabel").text(pref_name); |
344 |
$("#prefModal").modal("show"); |
430 |
$("#prefModal").modal("show"); |
345 |
}); |
431 |
}); |
346 |
|
432 |
|
347 |
// Initialise the content of our modal, using the function |
433 |
// Initialise the content of our modal, using the function |
348 |
// specified in the data-initiator attribute |
434 |
// specified in the data-initiator attribute |
349 |
$('.modaljs').on('click', function () { |
435 |
$(".modaljs").on("click", function () { |
350 |
const init = $(this).data('initiator'); |
436 |
const init = $(this).data("initiator"); |
351 |
if (init) { |
437 |
if (init) { |
352 |
window[init](this); |
438 |
window[init](this); |
353 |
$("#prefModal").modal("show"); |
439 |
$("#prefModal").modal("show"); |
Lines 358-366
$('.modaljs').on('click', function () {
Link Here
|
358 |
// with a modalselect modal |
444 |
// with a modalselect modal |
359 |
function prepareModalSelect(formfieldid) { |
445 |
function prepareModalSelect(formfieldid) { |
360 |
var prefs = []; |
446 |
var prefs = []; |
361 |
$("#prefModal input[type='checkbox']").each(function(){ |
447 |
$("#prefModal input[type='checkbox']").each(function () { |
362 |
if( $(this).prop("checked") ){ |
448 |
if ($(this).prop("checked")) { |
363 |
prefs.push( this.value ); |
449 |
prefs.push(this.value); |
364 |
} |
450 |
} |
365 |
}); |
451 |
}); |
366 |
return prefs.join("|"); |
452 |
return prefs.join("|"); |
Lines 368-448
function prepareModalSelect(formfieldid) {
Link Here
|
368 |
|
454 |
|
369 |
// Return a checkbox with an appropriate checked state |
455 |
// Return a checkbox with an appropriate checked state |
370 |
function checkBox(id, className, state) { |
456 |
function checkBox(id, className, state) { |
371 |
return state ? |
457 |
return state |
372 |
'<input id="' + id + '" type="checkbox" class="' + className + '" checked>' : |
458 |
? '<input id="' + |
373 |
'<input id="' + id + '" type="checkbox" class="' + className + '">'; |
459 |
id + |
|
|
460 |
'" type="checkbox" class="' + |
461 |
className + |
462 |
'" checked>' |
463 |
: '<input id="' + id + '" type="checkbox" class="' + className + '">'; |
374 |
} |
464 |
} |
375 |
|
465 |
|
376 |
// Create a cookieConsentedJS item, correctly populated |
466 |
// Create a cookieConsentedJS item, correctly populated |
377 |
function createCookieConsentedJSItem(item, idx) { |
467 |
function createCookieConsentedJSItem(item, idx) { |
378 |
const id = 'CookieConsentedJS_' + idx; |
468 |
const id = "CookieConsentedJS_" + idx; |
379 |
const code = item.code && item.code.length > 0 ? atob(item.code) : ''; |
469 |
const code = item.code && item.code.length > 0 ? atob(item.code) : ""; |
380 |
const itemId = item.id && item.id.length > 0 ? item.id : ''; |
470 |
const itemId = item.id && item.id.length > 0 ? item.id : ""; |
381 |
return '<div id="' + id + '" class="cookieConsentedJSItem" data-id="' + itemId + '">' + |
471 |
return ( |
382 |
' <div class="consentRow">' + |
472 |
'<div id="' + |
383 |
' <div class="consentItem">' + |
473 |
id + |
384 |
' <label class="required" for="name_' + id + '">' + __('Name') + ':</label>' + |
474 |
'" class="cookieConsentedJSItem" data-id="' + |
385 |
' <input id="name_' + id + '" class="metaName" type="text" value="' + item.name + '"><span class="required">' + __('Required') + '</span>' + |
475 |
itemId + |
386 |
' </div >' + |
476 |
'">' + |
387 |
' <div class="consentItem">' + |
477 |
' <div class="consentRow">' + |
388 |
' <label class="required" for="description_' + id + '">' + __('Description') + ':</label>' + |
478 |
' <div class="consentItem">' + |
389 |
' <input id="description_' + id + '" class="metaDescription" type="text" value="' + item.description + '"><span class="required">' + __('Required') + '</span>' + |
479 |
' <label class="required" for="name_' + |
390 |
' </div>' + |
480 |
id + |
391 |
' <div class="consentItem">' + |
481 |
'">' + |
392 |
' <label for="opacConsent_' + id + '">' + __('Requires consent in OPAC') + ':</label>' + |
482 |
__("Name") + |
393 |
checkBox('opacConsent_' + id, 'opacConsent', item.opacConsent) + |
483 |
":</label>" + |
394 |
' </div>' + |
484 |
' <input id="name_' + |
395 |
' <div class="consentItem">' + |
485 |
id + |
396 |
' <label for="staffConsent_' + id + '">' + __('Requires consent in staff interface') + ':</label>' + |
486 |
'" class="metaName" type="text" value="' + |
397 |
checkBox('staffConsent_' + id, 'staffConsent', item.staffConsent) + |
487 |
item.name + |
398 |
' </div >' + |
488 |
'"><span class="required">' + |
399 |
' <div class="consentItem">' + |
489 |
__("Required") + |
400 |
' <label for="matchPattern_' + id + '">' + __('String used to identify cookie name') + ':</label>' + |
490 |
"</span>" + |
401 |
' <input id="matchPattern_' + id + '" class="metaMatchPattern" type="text" value="' + item.matchPattern + '"><span class="required">' + __('Required') + '</span>' + |
491 |
" </div >" + |
402 |
' </div >' + |
492 |
' <div class="consentItem">' + |
403 |
' <div class="consentItem">' + |
493 |
' <label class="required" for="description_' + |
404 |
' <label for="cookieDomain' + id + '">' + __('Cookie domain') + ':</label>' + |
494 |
id + |
405 |
' <input id="cookieDomain' + id + '" class="metaCookieDomain" type="text" value="' + item.cookieDomain + '"><span class="required">' + __('Required') + '</span>' + |
495 |
'">' + |
406 |
' </div >' + |
496 |
__("Description") + |
407 |
' <div class="consentItem">' + |
497 |
":</label>" + |
408 |
' <label for="cookiePath' + id + '">' + __('Cookie path') + ':</label>' + |
498 |
' <input id="description_' + |
409 |
' <input id="cookiePath' + id + '" class="metaCookiePath" type="text" value="' + item.cookiePath + '"><span class="required">' + __('Required') + '</span>' + |
499 |
id + |
410 |
' </div >' + |
500 |
'" class="metaDescription" type="text" value="' + |
411 |
' </div >' + |
501 |
item.description + |
412 |
' <div class="consentRow codeRow">' + |
502 |
'"><span class="required">' + |
413 |
' <textarea style="display:none;" id="pref_' + id + '" class="preference preference-code codemirror" rows="10" cols="40">' + code + '</textarea>' + |
503 |
__("Required") + |
414 |
' <div>' + |
504 |
"</span>" + |
415 |
' <a id="expand_' + id + '" class="expand-textarea" data-target="' + id + '" data-syntax="javascript" href="#">' + __('Expand') + '</a>' + |
505 |
" </div>" + |
416 |
' <a id="collapse_' + id + '" class="collapse-textarea" data-target="' + id + '" data-syntax="javascript" href="#" style="display:none">' + __('Collapse') + '</a>' + |
506 |
' <div class="consentItem">' + |
417 |
' </div >' + |
507 |
' <label for="opacConsent_' + |
418 |
' </div>' + |
508 |
id + |
419 |
' <a class="consentDelete" data-target="' + id + '" href="#">' + __('Delete') + '</a>' + |
509 |
'">' + |
420 |
'</div > '; |
510 |
__("Requires consent in OPAC") + |
|
|
511 |
":</label>" + |
512 |
checkBox("opacConsent_" + id, "opacConsent", item.opacConsent) + |
513 |
" </div>" + |
514 |
' <div class="consentItem">' + |
515 |
' <label for="staffConsent_' + |
516 |
id + |
517 |
'">' + |
518 |
__("Requires consent in staff interface") + |
519 |
":</label>" + |
520 |
checkBox("staffConsent_" + id, "staffConsent", item.staffConsent) + |
521 |
" </div >" + |
522 |
' <div class="consentItem">' + |
523 |
' <label for="matchPattern_' + |
524 |
id + |
525 |
'">' + |
526 |
__("String used to identify cookie name") + |
527 |
":</label>" + |
528 |
' <input id="matchPattern_' + |
529 |
id + |
530 |
'" class="metaMatchPattern" type="text" value="' + |
531 |
item.matchPattern + |
532 |
'"><span class="required">' + |
533 |
__("Required") + |
534 |
"</span>" + |
535 |
" </div >" + |
536 |
' <div class="consentItem">' + |
537 |
' <label for="cookieDomain' + |
538 |
id + |
539 |
'">' + |
540 |
__("Cookie domain") + |
541 |
":</label>" + |
542 |
' <input id="cookieDomain' + |
543 |
id + |
544 |
'" class="metaCookieDomain" type="text" value="' + |
545 |
item.cookieDomain + |
546 |
'"><span class="required">' + |
547 |
__("Required") + |
548 |
"</span>" + |
549 |
" </div >" + |
550 |
' <div class="consentItem">' + |
551 |
' <label for="cookiePath' + |
552 |
id + |
553 |
'">' + |
554 |
__("Cookie path") + |
555 |
":</label>" + |
556 |
' <input id="cookiePath' + |
557 |
id + |
558 |
'" class="metaCookiePath" type="text" value="' + |
559 |
item.cookiePath + |
560 |
'"><span class="required">' + |
561 |
__("Required") + |
562 |
"</span>" + |
563 |
" </div >" + |
564 |
" </div >" + |
565 |
' <div class="consentRow codeRow">' + |
566 |
' <textarea style="display:none;" id="pref_' + |
567 |
id + |
568 |
'" class="preference preference-code codemirror" rows="10" cols="40">' + |
569 |
code + |
570 |
"</textarea>" + |
571 |
" <div>" + |
572 |
' <a id="expand_' + |
573 |
id + |
574 |
'" class="expand-textarea" data-target="' + |
575 |
id + |
576 |
'" data-syntax="javascript" href="#">' + |
577 |
__("Expand") + |
578 |
"</a>" + |
579 |
' <a id="collapse_' + |
580 |
id + |
581 |
'" class="collapse-textarea" data-target="' + |
582 |
id + |
583 |
'" data-syntax="javascript" href="#" style="display:none">' + |
584 |
__("Collapse") + |
585 |
"</a>" + |
586 |
" </div >" + |
587 |
" </div>" + |
588 |
' <a class="consentDelete" data-target="' + |
589 |
id + |
590 |
'" href="#">' + |
591 |
__("Delete") + |
592 |
"</a>" + |
593 |
"</div > " |
594 |
); |
421 |
} |
595 |
} |
422 |
|
596 |
|
423 |
// Return the markup for all cookieConsentedJS items concatenated |
597 |
// Return the markup for all cookieConsentedJS items concatenated |
424 |
function populateConsentMarkup(items) { |
598 |
function populateConsentMarkup(items) { |
425 |
return items.reduce(function (acc, current, idx) { |
599 |
return items.reduce(function (acc, current, idx) { |
426 |
return acc + createCookieConsentedJSItem(current, idx); |
600 |
return acc + createCookieConsentedJSItem(current, idx); |
427 |
}, ''); |
601 |
}, ""); |
428 |
} |
602 |
} |
429 |
|
603 |
|
430 |
// Return the markup for a validation warning |
604 |
// Return the markup for a validation warning |
431 |
function populateValidationWarning() { |
605 |
function populateValidationWarning() { |
432 |
return '<div id="cookieConsentedJSWarning" class="error" style="display:none;">' + __('You must complete all fields') + '</div>'; |
606 |
return ( |
|
|
607 |
'<div id="cookieConsentedJSWarning" class="error" style="display:none;">' + |
608 |
__("You must complete all fields") + |
609 |
"</div>" |
610 |
); |
433 |
} |
611 |
} |
434 |
|
612 |
|
435 |
// Return a new, empty consent item |
613 |
// Return a new, empty consent item |
436 |
function emptyConsentItem() { |
614 |
function emptyConsentItem() { |
437 |
return { |
615 |
return { |
438 |
name: '', |
616 |
name: "", |
439 |
description: '', |
617 |
description: "", |
440 |
matchPattern: '', |
618 |
matchPattern: "", |
441 |
cookieDomain: '', |
619 |
cookieDomain: "", |
442 |
cookiePath: '', |
620 |
cookiePath: "", |
443 |
code: '', |
621 |
code: "", |
444 |
opacConsent: false, |
622 |
opacConsent: false, |
445 |
staffConsent: false |
623 |
staffConsent: false, |
446 |
}; |
624 |
}; |
447 |
} |
625 |
} |
448 |
|
626 |
|
Lines 450-459
function emptyConsentItem() {
Link Here
|
450 |
function addNewHandler() { |
628 |
function addNewHandler() { |
451 |
$("#cookieConsentedJSAddNew").on("click", function (e) { |
629 |
$("#cookieConsentedJSAddNew").on("click", function (e) { |
452 |
e.preventDefault(); |
630 |
e.preventDefault(); |
453 |
const currentLen = $('.cookieConsentedJSItem').length; |
631 |
const currentLen = $(".cookieConsentedJSItem").length; |
454 |
const newItem = emptyConsentItem(); |
632 |
const newItem = emptyConsentItem(); |
455 |
const markup = createCookieConsentedJSItem(newItem, currentLen); |
633 |
const markup = createCookieConsentedJSItem(newItem, currentLen); |
456 |
$('#prefModal .modal-body #cookieConsentedJSItems').append($(markup)); |
634 |
$("#prefModal .modal-body #cookieConsentedJSItems").append($(markup)); |
457 |
addExpandHandler(); |
635 |
addExpandHandler(); |
458 |
addCollapseHandler(); |
636 |
addCollapseHandler(); |
459 |
addConsentDeleteHandler(); |
637 |
addConsentDeleteHandler(); |
Lines 467-504
function addNewHandler() {
Link Here
|
467 |
// (e.g.) |
645 |
// (e.g.) |
468 |
// const f = 'populateCookieConsentedJS'; |
646 |
// const f = 'populateCookieConsentedJS'; |
469 |
// window[f](); |
647 |
// window[f](); |
470 |
window.populateCookieConsentedJS = function(el) { |
648 |
window.populateCookieConsentedJS = function (el) { |
471 |
let items = []; |
649 |
let items = []; |
472 |
let decoded = ''; |
650 |
let decoded = ""; |
473 |
if (el.value && el.value.length > 0) { |
651 |
if (el.value && el.value.length > 0) { |
474 |
try { |
652 |
try { |
475 |
decoded = atob(el.value); |
653 |
decoded = atob(el.value); |
476 |
} catch (err) { |
654 |
} catch (err) { |
477 |
throw (__( |
655 |
throw __( |
478 |
'Unable to Base64 decode value stored in CookieConsentedJS syspref: ' + |
656 |
"Unable to Base64 decode value stored in CookieConsentedJS syspref: " + |
479 |
err.message |
657 |
err.message |
480 |
)); |
658 |
); |
481 |
} |
659 |
} |
482 |
try { |
660 |
try { |
483 |
items = JSON.parse(decoded); |
661 |
items = JSON.parse(decoded); |
484 |
} catch (err) { |
662 |
} catch (err) { |
485 |
throw (__( |
663 |
throw __( |
486 |
'Unable to JSON parse decoded value stored in CookieConsentedJS syspref: ' + |
664 |
"Unable to JSON parse decoded value stored in CookieConsentedJS syspref: " + |
487 |
err.message |
665 |
err.message |
488 |
)); |
666 |
); |
489 |
} |
667 |
} |
490 |
} |
668 |
} |
491 |
const markup = populateConsentMarkup(items); |
669 |
const markup = populateConsentMarkup(items); |
492 |
const validationWarning = populateValidationWarning(); |
670 |
const validationWarning = populateValidationWarning(); |
493 |
const pref_name = el.id.replace(/pref_/, ''); |
671 |
const pref_name = el.id.replace(/pref_/, ""); |
494 |
$('#saveModalPrefs').data('target', el.id); |
672 |
$("#saveModalPrefs").data("target", el.id); |
495 |
$('#prefModalLabel').text( pref_name ); |
673 |
$("#prefModalLabel").text(pref_name); |
496 |
$('#prefModal .modal-body').html($('<div id="cookieConsentedJSItems">' + validationWarning + markup + '</div><div><a href="#" id="cookieConsentedJSAddNew">' + __('Add new code') + '</a></div>')); |
674 |
$("#prefModal .modal-body").html( |
|
|
675 |
$( |
676 |
'<div id="cookieConsentedJSItems">' + |
677 |
validationWarning + |
678 |
markup + |
679 |
'</div><div><a href="#" id="cookieConsentedJSAddNew">' + |
680 |
__("Add new code") + |
681 |
"</a></div>" |
682 |
) |
683 |
); |
497 |
addExpandHandler(); |
684 |
addExpandHandler(); |
498 |
addCollapseHandler(); |
685 |
addCollapseHandler(); |
499 |
addNewHandler(); |
686 |
addNewHandler(); |
500 |
addConsentDeleteHandler(); |
687 |
addConsentDeleteHandler(); |
501 |
} |
688 |
}; |
502 |
|
689 |
|
503 |
// Prepare the data in the UI for sending back as a syspref. |
690 |
// Prepare the data in the UI for sending back as a syspref. |
504 |
// We validate that everything is what we expect. This function is added |
691 |
// We validate that everything is what we expect. This function is added |
Lines 508-528
window.populateCookieConsentedJS = function(el) {
Link Here
|
508 |
// const f = 'prepareCookieConsentedJS'; |
695 |
// const f = 'prepareCookieConsentedJS'; |
509 |
// window[f](); |
696 |
// window[f](); |
510 |
window.prepareCookieConsentedJS = function () { |
697 |
window.prepareCookieConsentedJS = function () { |
511 |
const items = $('.cookieConsentedJSItem'); |
698 |
const items = $(".cookieConsentedJSItem"); |
512 |
const invalid = []; |
699 |
const invalid = []; |
513 |
const valid = []; |
700 |
const valid = []; |
514 |
items.each(function () { |
701 |
items.each(function () { |
515 |
const id = $(this).data('id').length > 0 ? |
702 |
const id = |
516 |
$(this).data('id') : |
703 |
$(this).data("id").length > 0 |
517 |
'_' + Math.random().toString(36).substr(2, 9); |
704 |
? $(this).data("id") |
518 |
const name = $(this).find('.metaName').val(); |
705 |
: "_" + Math.random().toString(36).substr(2, 9); |
519 |
const desc = $(this).find('.metaDescription').val(); |
706 |
const name = $(this).find(".metaName").val(); |
520 |
const matchPattern = $(this).find('.metaMatchPattern').val(); |
707 |
const desc = $(this).find(".metaDescription").val(); |
521 |
const cookieDomain = $(this).find('.metaCookieDomain').val(); |
708 |
const matchPattern = $(this).find(".metaMatchPattern").val(); |
522 |
const cookiePath = $(this).find('.metaCookiePath').val(); |
709 |
const cookieDomain = $(this).find(".metaCookieDomain").val(); |
523 |
const opacConsent = $(this).find('.opacConsent').is(':checked') |
710 |
const cookiePath = $(this).find(".metaCookiePath").val(); |
524 |
const staffConsent = $(this).find('.staffConsent').is(':checked'); |
711 |
const opacConsent = $(this).find(".opacConsent").is(":checked"); |
525 |
const code = $(this).find('.preference-code').val(); |
712 |
const staffConsent = $(this).find(".staffConsent").is(":checked"); |
|
|
713 |
const code = $(this).find(".preference-code").val(); |
526 |
// If the name, description, match pattern code are empty, then they've |
714 |
// If the name, description, match pattern code are empty, then they've |
527 |
// added a new entry, but not filled it in, we can skip it |
715 |
// added a new entry, but not filled it in, we can skip it |
528 |
if ( |
716 |
if ( |
Lines 537-547
window.prepareCookieConsentedJS = function () {
Link Here
|
537 |
} |
725 |
} |
538 |
// They've filled in at least some info |
726 |
// They've filled in at least some info |
539 |
if ( |
727 |
if ( |
540 |
(name.length === 0) || |
728 |
name.length === 0 || |
541 |
(desc.length === 0) || |
729 |
desc.length === 0 || |
542 |
(matchPattern.length === 0) || |
730 |
matchPattern.length === 0 || |
543 |
(cookiePath.length === 0) || |
731 |
cookiePath.length === 0 || |
544 |
(code.length === 0) |
732 |
code.length === 0 |
545 |
) { |
733 |
) { |
546 |
invalid.push(this); |
734 |
invalid.push(this); |
547 |
} else { |
735 |
} else { |
Lines 554-579
window.prepareCookieConsentedJS = function () {
Link Here
|
554 |
cookiePath: cookiePath, |
742 |
cookiePath: cookiePath, |
555 |
opacConsent: opacConsent, |
743 |
opacConsent: opacConsent, |
556 |
staffConsent: staffConsent, |
744 |
staffConsent: staffConsent, |
557 |
code: btoa(code) |
745 |
code: btoa(code), |
558 |
} |
746 |
}; |
559 |
valid.push(obj); |
747 |
valid.push(obj); |
560 |
} |
748 |
} |
561 |
}); |
749 |
}); |
562 |
// We failed validation |
750 |
// We failed validation |
563 |
if (invalid.length > 0) { |
751 |
if (invalid.length > 0) { |
564 |
$('#cookieConsentedJSWarning').show(); |
752 |
$("#cookieConsentedJSWarning").show(); |
565 |
return false; |
753 |
return false; |
566 |
} |
754 |
} |
567 |
$('#cookieConsentedJSWarning').hide(); |
755 |
$("#cookieConsentedJSWarning").hide(); |
568 |
if (valid.length === 0) { |
756 |
if (valid.length === 0) { |
569 |
return ''; |
757 |
return ""; |
570 |
} |
758 |
} |
571 |
const json = JSON.stringify(valid); |
759 |
const json = JSON.stringify(valid); |
572 |
const base64 = btoa(json); |
760 |
const base64 = btoa(json); |
573 |
return base64; |
761 |
return base64; |
574 |
} |
762 |
}; |
575 |
|
763 |
|
576 |
$("#saveModalPrefs").on("click", function(){ |
764 |
$("#saveModalPrefs").on("click", function () { |
577 |
var formfieldid = $("#" + $(this).data("target")); |
765 |
var formfieldid = $("#" + $(this).data("target")); |
578 |
let finalString = ""; |
766 |
let finalString = ""; |
579 |
if ($(this).data("type") == "modalselect") { |
767 |
if ($(this).data("type") == "modalselect") { |
Lines 586-611
$("#saveModalPrefs").on("click", function(){
Link Here
|
586 |
// data has failed validation |
774 |
// data has failed validation |
587 |
if (finalString !== false) { |
775 |
if (finalString !== false) { |
588 |
formfieldid.val(finalString).addClass("modified"); |
776 |
formfieldid.val(finalString).addClass("modified"); |
589 |
mark_modified.call( formfieldid ); |
777 |
mark_modified.call(formfieldid); |
590 |
KOHA.Preferences.Save( formfieldid.closest("form") ); |
778 |
KOHA.Preferences.Save(formfieldid.closest("form")); |
591 |
$("#prefModal").modal("hide"); |
779 |
$("#prefModal").modal("hide"); |
592 |
} |
780 |
} |
593 |
}); |
781 |
}); |
594 |
|
782 |
|
595 |
$("#prefModal").on("hide.bs.modal", function(){ |
783 |
$("#prefModal").on("hide.bs.modal", function () { |
596 |
$("#prefModalLabel,#prefModalBody").html(""); |
784 |
$("#prefModalLabel,#prefModalBody").html(""); |
597 |
$("#saveModalPrefs").data("target", "" ); |
785 |
$("#saveModalPrefs").data("target", ""); |
598 |
}); |
786 |
}); |
599 |
|
787 |
|
600 |
$("#select_all").on("click",function(e){ |
788 |
$("#select_all").on("click", function (e) { |
601 |
e.preventDefault(); |
789 |
e.preventDefault(); |
602 |
$("label:not(.required) .dbcolumn_selection:not(:disabled)").prop("checked", true); |
790 |
$("label:not(.required) .dbcolumn_selection:not(:disabled)").prop( |
|
|
791 |
"checked", |
792 |
true |
793 |
); |
603 |
}); |
794 |
}); |
604 |
$("#clear_all").on("click",function(e){ |
795 |
$("#clear_all").on("click", function (e) { |
605 |
e.preventDefault(); |
796 |
e.preventDefault(); |
606 |
$("label:not(.required) .dbcolumn_selection").prop("checked", false); |
797 |
$("label:not(.required) .dbcolumn_selection").prop("checked", false); |
607 |
}); |
798 |
}); |
608 |
|
799 |
|
609 |
$("body").on("click", "label.required input.dbcolumn_selection", function(e){ |
800 |
$("body").on("click", "label.required input.dbcolumn_selection", function (e) { |
610 |
e.preventDefault(); |
801 |
e.preventDefault(); |
611 |
}); |
802 |
}); |
612 |
- |
|
|