Bug 25728: Create AV when cataloguing a bibliographic record
[koha-equinox.git] / koha-tmpl / intranet-tmpl / prog / en / modules / cataloguing / addbiblio.tt
index ba0a120..8de0932 100644 (file)
 [% Asset.css("css/addbiblio.css") | $raw %]
 
 [% INCLUDE 'select2.inc' %]
+<script>
+  $(document).ready(function() {
+      [% IF CAN_user_parameters_manage_auth_values %]
+          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;
+
+              }
+          }).on("select2:clear", function () {
+              $(this).on("select2:opening.cancelOpen", function (evt) {
+                  evt.preventDefault();
+
+                  $(this).off("select2:opening.cancelOpen");
+              });
+          });
+
+          $("#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('<option selected value="'+data['value']+'">'+data['description']+'</option>');
+                  },
+                  error: function(err) {
+                      $("#avCreate .error").html(_("Something went wrong, maybe the value already exists?"))
+                  }
+              });
+              return false;
+          });
+      [% END %]
+  });
+</script>
 
 </head>
 <body id="cat_addbiblio" class="cat">
                                                 [% ELSIF ( mv.type == 'textarea' ) %]
                                                     <textarea cols="70" rows="4" id="[%- mv.id | html -%]" name="[%- mv.name | html -%]" class="input_marceditor" tabindex="1">[%- mv.value | html -%]</textarea>
                                                 [% ELSIF ( mv.type == 'select' ) %]
-                                                    <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
+                                                    [% IF mv.category AND CAN_user_parameters_manage_auth_values %]
+                                                        <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor" id="[%- mv.id | html -%]" data-category="[% mv.category | html %]">
+                                                    [% ELSE %]
+                                                        <select name="[%- mv.name | html -%]" tabindex="1" size="1" class="input_marceditor select2" id="[%- mv.id | html -%]">
+                                                    [% END %]
                                                     [% FOREACH aval IN mv.values %]
                                                         [% IF aval == mv.default %]
                                                         <option value="[%- aval | html -%]" selected="selected">[%- mv.labels.$aval | html -%]</option>
                 <input type="hidden" name="duedatespec" value="[% duedatespec | html %]" />
                 [%# End of fields for fast cataloging %]
             </form> <!-- /name=f -->
+
+            <div id="avCreate" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="avCreateLabel" aria-hidden="true">
+                <div class="modal-dialog">
+                    <div class="modal-content">
+                        <div class="modal-header">
+                            <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
+                            <h3 id="avCreateLabel">Create a new authorised value</h3>
+                        </div>
+                        <form id="add_new_av" method="post">
+                            <div class="modal-body">
+                                <div class="error"></div>
+                                <fieldset class="rows">
+                                    <ol>
+                                        <li>
+                                            <span class="label">Category:</span>
+                                            <input type="hidden" name="category" value="" />
+                                            <span id="new_av_category"></span>
+                                        </li>
+                                        <li>
+                                            <span class="label" for="value">Authorised value:</span>
+                                            <input type="text" id="value" name="value" />
+                                        </li>
+                                        <li>
+                                            <span class="label" for="description">Description:</span>
+                                            <input type="text" id="description" name="description" />
+                                        </li>
+                                        <li>
+                                            <span class="label" for="opac_description">Description (OPAC):</span>
+                                            <input type="text" id="opac_description" name="opac_description" />
+                                        </li>
+                                    </ol>
+                                </fieldset>
+                            </div>
+                            <div class="modal-footer">
+                                <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
+                                <input type="hidden" name="select2" value="" />
+                                <input type="submit" class="btn btn-primary" value="Save">
+                            </div>
+                        </form>
+                    </div> <!-- /.modal-content -->
+                </div> <!-- /.modal-dialog -->
+            </div> <!-- /#avCreate -->
+
         </div> <!-- /.col-md-10.col-md-offset-1 -->
     </div> <!-- /.row -->