Bug 34791: Add links to HTML Customizations to CookieConsent preferences
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / modules / authorities / blinddetail-biblio-search.tt
1 [% USE To %]
2 [% PROCESS 'i18n.inc' %]
3 [% SET footerjs = 1 %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>[% FILTER collapse %]
6     [% t("Authority details") | html %] &rsaquo;
7     [% t("Koha") | html %]
8 [% END %]</title>
9 [% INCLUDE 'doc-head-close.inc' %]
10 </head>
11
12 <body id="auth_blinddetail-biblio-search" class="auth">
13
14     <div class="main container-fluid">
15         <div class="row">
16             <div class="col-md-8 col-md-offset-2">
17
18         <div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
19
20             </div>
21         </div>
22
23 [% MACRO jsinclude BLOCK %]
24     <script>
25         $(document).ready(function(){
26             [% IF rancor %]
27                 function RancorReplaceField( new_text, ind_1, ind_2 ){
28                     var cur_field = opener.opener.jQuery(".CodeMirror")[0].CodeMirror.marceditor.getCurrentField();
29                     // The new_text is entity-encoded and we want decoded text
30                     new_text = new DOMParser().parseFromString(new_text, 'text/html').body.innerText;
31                     cur_field.setText(new_text);
32                     [% IF update_ind1 %]cur_field.setIndicator1(ind_1);[% END %]
33                     [% IF update_ind2 %]cur_field.setIndicator2(ind_2);[% END %]
34                     return true;
35                 }
36                 [% IF ( clear ) %]
37                     var new_line = "";
38                 [% ELSE %]
39                 var new_line = "
40                     [%- FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP -%]‡
41                         [%- To.json( SUBFIELD_LOO.marc_subfield ) | html -%]
42                         [%- FOREACH marc_value IN SUBFIELD_LOO.marc_values -%]
43                             [%- To.json( marc_value ) | html -%]
44                         [%- END -%]
45                     [%- END -%]‡9[% authid | html %]";
46                 [% END %]
47                 RancorReplaceField( new_line, "[% indicator1 | html %]", "[% indicator2 | html %]" );
48             [% ELSE %]
49                 var index_start = "[% index | html %]";
50                 var whichfield;
51                 try {
52                     whichfield = opener.opener.document.getElementById(index_start);
53                     autolinker_dialog = opener.opener.document.getElementById("autolinker_dialog");
54                 } catch(e) {
55                     whichfield = opener.document.getElementById(index_start);
56                     autolinker_dialog = opener.document.getElementById("autolinker_dialog");
57                 }
58                 var field_start = whichfield.parentNode.parentNode.parentNode.parentNode;
59
60                 // Sets the good number of form fields for the specified subfield
61                 // Returns false if the cloning failed
62                 function SetSubfieldNumber(subfield_name, nb) {
63                     // Nothing to do if we only have one value
64                     if(nb <= 1) {
65                         return true;
66                     }
67
68                     // Find the subfield we want to clone
69                     var re = new RegExp('^subfield' + subfield_name,'g');
70                     var subfields = $(field_start).children('ul').children('li').filter( function() {
71                         return this.id.match(re);
72                     });
73
74                     // Try to add as many clones as needed
75                     try {
76                         for(var i=0; i<nb-subfields.length; i++) {
77                             window.opener.opener.CloneSubfield(subfields[0].getAttribute('id'),'[% advancedMARCEditor | html %]');
78                         }
79                     }
80                     catch(err) {
81                         return false;
82                     }
83                     return true;
84                 }
85
86                 // Fills the subfield with the values entered in argument
87                 function SetSubfieldValues() {
88                     // Get the arguments
89                     var subfield_name = arguments[0];
90                     var values = new Array();
91                     for(var i=1; i<arguments.length; i++) {
92                         values.push(arguments[i]);
93                     }
94
95                     // Create the correct number of form fields for all values
96                     // If the field cloning failed, only the first value will be added to the form.
97                     SetSubfieldNumber(subfield_name, values.length);
98
99                     // Find the subfields where we will add the new values
100                     var re = new RegExp('^subfield' + subfield_name,'g');
101                     var subfields = $(field_start).children('ul').children('li').filter( function() {
102                         return this.id.match(re);
103                     });
104
105                     // Add the new values to those subfields, empty the additional fields
106                     var i=0;
107                     subfields.each(function() {
108                         var new_value;
109                         if (i in values) {
110                             new_value = values[i];
111                         }
112                         else {
113                             new_value = "";
114                         }
115                         $(this).find('.input_marceditor').val(new_value);
116                         i++;
117                     });
118                 }
119
120                 function ReOrderSubField(){
121                     var isFirst=1;
122                     var subfield_start = $(field_start).children('ul')[0];
123                     var first = subfield_start.firstElementChild;
124
125                     [% FOREACH SUBFIELD IN SUBFIELD_LOOP %]
126                         // grab all subfields
127                         var subfield_name = "[% To.json(tag_number) | $raw %][% To.json(SUBFIELD.marc_subfield) | $raw %]"
128                         var re = new RegExp('^subfield' + subfield_name,'g');
129                         var subfields = $(subfield_start).children('li').filter( function() {return this.id.match(re); });
130                         for (var i=0; i<subfields.length; i++){
131                             var subfield = subfields[i];
132                             if (isFirst ==1){
133                                 first = subfield_start.insertBefore(subfield, first);
134                                 isFirst=0;
135                             }
136                             else{
137                                 first = subfield_start.insertBefore(subfield, first.nextSibling);
138                             }
139                         }
140                     [% END %]
141                 }
142
143                 [% UNLESS ( clear ) %]
144                     ReOrderSubField()
145                     [% FOREACH SUBFIELD_LOO IN SUBFIELD_LOOP %]
146                         SetSubfieldValues(
147                             "[% To.json(tag_number) | $raw %][% To.json(SUBFIELD_LOO.marc_subfield) | $raw %]"
148                         [% FOREACH marc_value IN SUBFIELD_LOO.marc_values %]
149                             ,"[% To.json( marc_value ) | $raw %]"
150                         [% END %]
151                         );
152                     [% END %]
153                     var indicators = field_start.getElementsByClassName('indicator flat');
154                     [% IF update_ind1 %]
155                         indicators[0].value="[% indicator1 | html %]";
156                     [% END %]
157                     [% IF update_ind2 %]
158                         indicators[1].value="[% indicator2 | html %]";
159                     [% END %]
160                 [% END %]
161
162                 // browse all its subfields (clear and $9)
163                 var subfields = field_start.getElementsByTagName('input');
164                 var re = /^tag_\d*_code_/;
165                 for(var i=0, len = subfields.length ; i< len ; i++) { // browse all subfields
166                     if(subfields[i].hasAttribute('name') == 0 ) {continue; }  // div elements specific to Select2
167                     if(subfields[i].getAttribute('name').match(re)){ // it s a subfield
168                         var code     = subfields[i];   // code is the first input
169                         var subfield = subfields[i+1]; // subfield the second
170
171                     [% IF ( clear ) %]
172                         if (subfield){subfield.value="" ;}
173                     [% ELSE %]
174                         if(code.value=='9'){
175                             subfield.value = "[% To.json(authid) | $raw %]";
176                             subfield.className = subfield.className.replace("no_matching_authority_field", "matching_authority_field");
177                             break;
178                         }
179                     [% END %]
180                     }
181                 }
182
183                 //Delete create authority button and status
184                 var linkinfos = field_start.getElementsByTagName('i');
185                 for (index = linkinfos.length - 1; index >= 0; index--) {
186                     linkinfos[index].parentNode.removeChild(linkinfos[index]);
187                 }
188                 //Change message autolinker_dialog
189                 var subfield_dialog = $(autolinker_dialog).children('ul').children('li');
190                 for (index = subfield_dialog.length - 1; index >= 0; index--){
191                     var tag_field = field_start.id.split("_")[1];
192                     if (subfield_dialog[index].innerHTML.indexOf(tag_field) !== -1 ){
193                         subfield_dialog[index].innerHTML = subfield_dialog[index].innerHTML.replace(_("No matching authority found."), _("No matching authority found. A new authority was created or imported"));
194                         break;
195                     }
196                 }
197             [% END %]
198             if(opener.opener){
199                 opener.close();
200             }
201             window.close();
202             return false;
203         });
204     </script>
205 [% END %]
206
207 [% INCLUDE 'intranet-bottom.inc' popup_window = 1 %]