Bug 29397: Add function documentation
[koha.git] / koha-tmpl / intranet-tmpl / prog / js / select2.js
1 /* global __ */
2 $.fn.select2.defaults.set("allowClear", true);
3 $.fn.select2.defaults.set("placeholder", "");
4 $.fn.select2.defaults.set("width", "element" );
5
6 // Internationalization
7 $.fn.select2.defaults.set("language", {
8     errorLoading:function(){ return __("The results could not be loaded"); },
9     inputTooLong:function(args){
10         var n = args.input.length - args.maximum;
11         return __("Please delete %s character(s)").format(n);
12     },
13     inputTooShort:function(args){
14         var n = args.minimum - args.input.length;
15         return __("Please enter %s or more characters").format(n);
16     },
17     formatResult: function(item) {
18         return $('<div>', {title: item.element[0].title}).text(item.text);
19     },
20     loadingMore:function(){ return __("Loading more results…"); },
21     maximumSelected:function(args){
22         return __("You can only select %s item(s)").format(args.maximum);
23     },
24     noResults:function(){return __("No results found"); },
25     searching:function(){return __("Searching…"); },
26     removeAllItems:function(){return __("Remove all items"); },
27     removeItem:function(){return __("Remove item"); }
28 });
29
30 $(document).ready(function(){
31     $(".select2").select2();
32     $(".select2").on("select2:clear", function () {
33         $(this).on("select2:opening.cancelOpen", function (evt) {
34             evt.preventDefault();
35
36             $(this).off("select2:opening.cancelOpen");
37         });
38     });
39 });
40
41 function kohaSelect2Transport(params, success, failure) {
42     var read_headers = function (data, textStatus, jqXHR) {
43         var more = false;
44         var link = jqXHR.getResponseHeader('Link') || '';
45         if (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1) {
46             more = true;
47         }
48
49         return {
50             results: data,
51             pagination: {
52                 more: more
53             }
54         };
55     };
56     var $request = $.ajax(params);
57     $request.then(read_headers).then(success);
58     $request.fail(failure);
59 }
60
61 (function($) {
62
63     /**
64     * Create a new Select2 instance that uses the Koha RESTful API response headers to
65     * read pagination information
66     * @param  {Object}  config  Please see the Select2 documentation for further details
67     * @return {Object}          The Select2 instance
68     */
69
70     $.fn.kohaSelect = function(config) {
71         if (config.hasOwnProperty('ajax')) {
72             config.ajax.transport = function(params, success, failure) {
73                 var read_headers = function(data, textStatus, jqXHR) {
74                     var more = false;
75                     var link = jqXHR.getResponseHeader('Link') || '';
76                     if (link.search(/<([^>]+)>;\s*rel\s*=\s*['"]?next['"]?\s*(,|$)/i) > -1) {
77                         more = true;
78                     }
79
80                     return {
81                         results: data,
82                         pagination: {
83                             more: more
84                         }
85                     };
86                 };
87                 var $request = $.ajax(params);
88                 $request.then(read_headers).then(success);
89                 $request.fail(failure);
90
91             };
92         }
93
94         $(this).select2(config);
95     };
96 })(jQuery);