@@ -, +, @@
---
koha-tmpl/intranet-tmpl/prog/js/cataloging.js | 150 ++++++++++++--------------
1 file changed, 71 insertions(+), 79 deletions(-)
--- a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js
+++ a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js
@@ -77,21 +77,49 @@ function ExpandField(index) {
}
}
+var current_select2;
var Select2Utils = {
- removeSelect2: function(element) {
+ removeSelect2: function(selects) {
if ($.fn.select2) {
- var selects = element.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- $(selects[i]).select2('destroy');
- }
+ $(selects).each(function(){
+ $(this).select2('destroy');
+ });
}
},
- initSelect2: function(element) {
+ initSelect2: function(selects) {
if ($.fn.select2) {
- var selects = element.getElementsByTagName('select');
- for (var i=0; i < selects.length; i++) {
- $(selects[i]).select2();
+ if ( ! CAN_user_parameters_manage_auth_values ) {
+ $(selects).select2();
+ } else {
+ $(selects).select2({
+ tags: true,
+ createTag: function (tag) {
+ return {
+ id: tag.term,
+ text: tag.term,
+ newTag: true
+ };
+ },
+ templateResult: function(state) {
+ if (state.newTag) {
+ return state.text + " " + "(select to create)";
+ }
+ return state.text;
+ }
+ }).on("select2:select", function(e) {
+ if(e.params.data.newTag){
+ current_select2 = this;
+ var category = $(this).data("category");
+ $("#avCreate #new_av_category").html(category);
+ $("#avCreate input[name='category']").val(category);
+ $("#avCreate input[name='value']").val(e.params.data.text);
+ $("#avCreate input[name='description']").val(e.params.data.text);
+
+ $(this).val($(this).find("option:first").val()).trigger('change');
+ $('#avCreate').modal({show:true});
+ }
+ });
}
}
}
@@ -104,7 +132,7 @@ var Select2Utils = {
*/
function CloneField(index, hideMarc, advancedMARCEditor) {
var original = document.getElementById(index); //original
- Select2Utils.removeSelect2(original);
+ Select2Utils.removeSelect2($(original).find('select'));
var clone = original.cloneNode(true);
var new_key = CreateKey();
@@ -262,8 +290,8 @@ function CloneField(index, hideMarc, advancedMARCEditor) {
$("ul.sortable_subfield", clone).sortable();
- Select2Utils.initSelect2(original);
- Select2Utils.initSelect2(clone);
+ Select2Utils.initSelect2($(original).find('select'));
+ Select2Utils.initSelect2($(clone).find('select'));
}
@@ -274,7 +302,7 @@ function CloneField(index, hideMarc, advancedMARCEditor) {
*/
function CloneSubfield(index, advancedMARCEditor){
var original = document.getElementById(index); //original
- Select2Utils.removeSelect2(original);
+ Select2Utils.removeSelect2($(original).find('select'));
var clone = original.cloneNode(true);
var new_key = CreateKey();
// set the attribute for the new 'li' subfields
@@ -357,8 +385,8 @@ function CloneSubfield(index, advancedMARCEditor){
original.parentNode.insertBefore(clone,original.nextSibling);
//Restablish select2 for the cloned elements.
- Select2Utils.initSelect2(original);
- Select2Utils.initSelect2(clone);
+ Select2Utils.initSelect2($(original).find('select'));
+ Select2Utils.initSelect2($(clone).find('select'));
// delete data of cloned subfield
clone.querySelectorAll('input.input_marceditor').value = "";
@@ -442,7 +470,7 @@ function CreateKey(){
* @param original subfield div to clone
*/
function CloneItemSubfield(original){
- Select2Utils.removeSelect2(original);
+ Select2Utils.removeSelect2($(original).find('select'));
var clone = original.cloneNode(true);
var new_key = CreateKey();
@@ -482,8 +510,8 @@ function CloneItemSubfield(original){
// insert this line on the page
original.parentNode.insertBefore(clone,original.nextSibling);
- Select2Utils.initSelect2(original);
- Select2Utils.initSelect2(clone);
+ Select2Utils.initSelect2($(original).find('select'));
+ Select2Utils.initSelect2($(clone).find('select'));
}
/**
@@ -522,66 +550,30 @@ $(document).ready(function() {
});
if ( window.editor === undefined ) { // TODO This does not work with the advanced editor
- $('.subfield_line select[data-category=""]').select2(); // branches, itemtypes and cn_source
-
- if ( ! CAN_user_parameters_manage_auth_values ) {
- $('.subfield_line select[data-category!=""]').select2();
- } else {
- var current_select2;
- $('.subfield_line select[data-category!=""]').select2({
- tags: true,
- createTag: function (tag) {
- return {
- id: tag.term,
- text: tag.term,
- newTag: true
- };
- },
- templateResult: function(state) {
- if (state.newTag) {
- return state.text + " " + "(select to create)";
- }
- return state.text;
- }
- }).on("select2:select", function(e) {
- if(e.params.data.newTag){
-
- var category = $(this).data("category");
- $("#avCreate #new_av_category").html(category);
- $("#avCreate input[name='category']").val(category);
- $("#avCreate input[name='value']").val(e.params.data.text);
- $("#avCreate input[name='description']").val(e.params.data.text);
- $('#avCreate').modal({show:true});
-
- $(current_select2).val($(current_select2).find("option:first").val()).trigger('change');
-
- current_select2 = this;
-
- }
- });
-
- $("#add_new_av").on("submit", function(){
- var data = {
- category: $(this).find('input[name="category"]').val(),
- value: $(this).find('input[name="value"]').val(),
- description: $(this).find('input[name="description"]').val(),
- opac_description: $(this).find('input[name="opac_description"]').val(),
- };
- $.ajax({
- type: "POST",
- url: "/api/v1/authorised_values",
- data:JSON.stringify(data),
- success: function(response) {
- $('#avCreate').modal('hide');
-
- $(current_select2).append('');
- },
- error: function(err) {
- $("#avCreate .error").html(_("Something went wrong, maybe the value already exists?"))
- }
- });
- return false;
- });
- }
+ Select2Utils.initSelect2($('.subfield_line select[data-category=""]')); // branches, itemtypes and cn_source
+ Select2Utils.initSelect2($('.subfield_line select[data-category!=""]'));
}
+
+ $("#add_new_av").on("submit", function(){
+ var data = {
+ category: $(this).find('input[name="category"]').val(),
+ value: $(this).find('input[name="value"]').val(),
+ description: $(this).find('input[name="description"]').val(),
+ opac_description: $(this).find('input[name="opac_description"]').val(),
+ };
+ $.ajax({
+ type: "POST",
+ url: "/api/v1/authorised_values",
+ data:JSON.stringify(data),
+ success: function(response) {
+ $('#avCreate').modal('hide');
+
+ $(current_select2).append('');
+ },
+ error: function(err) {
+ $("#avCreate .error").html(_("Something went wrong, maybe the value already exists?"))
+ }
+ });
+ return false;
+ });
});
--