View | Details | Raw Unified | Return to bug 7455
Collapse All | Expand All

(-)a/cataloguing/additem.pl (-3 / +3 lines)
Lines 247-253 sub generate_subfield_form { Link Here
247
		    my $change = index($javascript, 'function Change') > -1 ?
247
		    my $change = index($javascript, 'function Change') > -1 ?
248
		        "return Change$function_name($subfield_data{random}, '$subfield_data{id}');" :
248
		        "return Change$function_name($subfield_data{random}, '$subfield_data{id}');" :
249
		        'return 1;';
249
		        'return 1;';
250
                    $subfield_data{marc_value} = qq[<input $attributes
250
                    $subfield_data{marc_value} = qq[<input type="text" $attributes
251
                        onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
251
                        onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
252
			onchange=" $change"
252
			onchange=" $change"
253
                         onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
253
                         onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
Lines 255-261 sub generate_subfield_form { Link Here
255
                        $javascript];
255
                        $javascript];
256
                } else {
256
                } else {
257
                    warn "Plugin Failed: $plugin";
257
                    warn "Plugin Failed: $plugin";
258
                    $subfield_data{marc_value} = "<input $attributes />"; # supply default input form
258
                    $subfield_data{marc_value} = "<input type=\"text\" $attributes />"; # supply default input form
259
                }
259
                }
260
        }
260
        }
261
        elsif ( $tag eq '' ) {       # it's an hidden field
261
        elsif ( $tag eq '' ) {       # it's an hidden field
Lines 274-280 sub generate_subfield_form { Link Here
274
            $subfield_data{marc_value} = "<textarea $attributes_no_value>$value</textarea>\n";
274
            $subfield_data{marc_value} = "<textarea $attributes_no_value>$value</textarea>\n";
275
        } else {
275
        } else {
276
           # it's a standard field
276
           # it's a standard field
277
           $subfield_data{marc_value} = "<input $attributes />";
277
           $subfield_data{marc_value} = "<input type=\"text\" $attributes />";
278
        }
278
        }
279
        
279
        
280
        return \%subfield_data;
280
        return \%subfield_data;
(-)a/koha-tmpl/intranet-tmpl/prog/en/css/addbiblio.css (-2 / +8 lines)
Lines 50-57 div.tag { Link Here
50
}
50
}
51
51
52
div.subfield_line {
52
div.subfield_line {
53
	padding-bottom : .3em;
53
    padding-bottom: .3em;
54
    clear: both;
54
    float: left;
55
    clear: left;
56
    width: 100%;
55
}
57
}
56
58
57
div.subfield_line label {
59
div.subfield_line label {
Lines 63-68 div.subfield_line label { Link Here
63
    clear:left;
65
    clear:left;
64
}
66
}
65
67
68
.subfieldcode img {
69
    cursor: pointer;
70
}
71
66
.tag_title {
72
.tag_title {
67
	font-size : 90%;
73
	font-size : 90%;
68
	padding : .2em 0;
74
	padding : .2em 0;
(-)a/koha-tmpl/intranet-tmpl/prog/en/js/cataloging.js (+463 lines)
Line 0 Link Here
1
/*
2
 * Unified file for catalogue edition
3
 */
4
5
/* Functions developed for addbiblio.tt and authorities.tt */
6
7
// returns the fieldcode based upon tag div id
8
function getFieldCode(tagDivId){
9
    // format : tag_<tagnumber>_...
10
    return tagDivId.substr(3+1,3);
11
}
12
13
//returns the field and subfieldcode based upon subfield div id
14
function getFieldAndSubfieldCode(subfieldDivId){
15
 // format : subfield<tagnumber><subfieldnumber>...
16
    return subfieldDivId.substr(8,3+1);
17
}
18
19
//returns the subfieldcode based upon subfieldid writing
20
function getSubfieldCode(tagsubfieldid){
21
    // 3 : tag +3 : tagnumber +4 : number of _ +8 subfield -1 begins at 0
22
    return tagsubfieldid.substr(3+3+4+8-1,1);
23
}
24
25
// Take the base of tagsubfield information (removing the subfieldcodes and subfieldindexes)
26
// returns the filter
27
function getTagInputnameFilter(tagsubfieldid){
28
    var tagsubfield=tagsubfieldid.substr(0,tagsubfieldid.lastIndexOf("_"));
29
    var tagcode=tagsubfield.substr(tagsubfield.lastIndexOf("_"));
30
    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
31
    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
32
    tagsubfield=tagsubfield+"_."+tagcode;
33
    return tagsubfield;
34
}
35
36
function openAuth(tagsubfieldid,authtype) {
37
    // let's take the base of tagsubfield information (removing the indexes and the codes
38
    var element=document.getElementById(tagsubfieldid);
39
    var tagsubfield=getTagInputnameFilter(tagsubfieldid);
40
    var elementsubfcode=getSubfieldCode(element.name);
41
    var mainmainstring=element.value;
42
    var mainstring="";
43
    var inputs = element.parentNode.parentNode.getElementsByTagName("input");
44
45
    for (var myindex =0; myindex<inputs.length;myindex++){
46
        if (inputs[myindex].name && inputs[myindex].name.match(tagsubfield)){
47
            var subfieldcode=getSubfieldCode(inputs[myindex].name);
48
            if (isNaN(parseInt(subfieldcode)) && inputs[myindex].value != "" && subfieldcode!=elementsubfcode){
49
                mainstring=inputs[myindex].value+" "+mainstring;
50
            }
51
        }
52
    }
53
    newin=window.open("../authorities/auth_finder.pl?authtypecode="+  authtype+ "&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
54
}
55
56
function ExpandField(index) {
57
    var original = document.getElementById(index); //original <div>
58
    var divs = original.getElementsByTagName('div');
59
    for(var i=0,divslen = divs.length ; i<divslen ; i++){   // foreach div
60
        if(divs[i].getAttribute('id').match(/^subfield/)){  // if it s a subfield
61
            if (!divs[i].style.display) {
62
                // first time => show all subfields
63
                divs[i].style.display = 'block';
64
            } else if (divs[i].style.display == 'none') {
65
                // show
66
                divs[i].style.display = 'block';
67
            } else {
68
                // hide
69
                divs[i].style.display = 'none';
70
            }
71
        }
72
    }
73
}
74
/**
75
 * To clone a field
76
 * @param hideMarc '0' for false, '1' for true
77
 * @param advancedMARCEditor '0' for false, '1' for true
78
 */
79
function CloneField(index, hideMarc, advancedMARCEditor) {
80
    var original = document.getElementById(index); //original <div>
81
    var clone = original.cloneNode(true);
82
    var new_key = CreateKey();
83
    var new_id  = original.getAttribute('id')+new_key;
84
85
    clone.setAttribute('id',new_id); // setting a new id for the parent div
86
87
    var divs = clone.getElementsByTagName('div');
88
89
    if(hideMarc == '0') {
90
        // No indicator if hide_marc
91
        // setting a new name for the new indicator
92
        for(var i=0; i < 2; i++) {
93
            var indicator = clone.getElementsByTagName('input')[i];
94
            indicator.setAttribute('name',indicator.getAttribute('name')+new_key);
95
        }
96
    }
97
98
    // settings all subfields
99
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
100
        if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
101
102
            // set the attribute for the new 'div' subfields
103
            divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
104
105
            var inputs   = divs[i].getElementsByTagName('input');
106
            var id_input = "";
107
108
            for( j = 0 ; j < inputs.length ; j++ ) {
109
                if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
110
                    inputs[j].value = "";
111
                }
112
            }
113
114
            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
115
            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
116
            var id_input;
117
            try {
118
                id_input = inputs[1].getAttribute('id')+new_key;
119
                inputs[1].setAttribute('id',id_input);
120
                inputs[1].setAttribute('name',inputs[1].getAttribute('name')+new_key);
121
            } catch(e) {
122
                try{ // it s a select if it is not an input
123
                    var selects = divs[i].getElementsByTagName('select');
124
                    id_input = selects[0].getAttribute('id')+new_key;
125
                    selects[0].setAttribute('id',id_input);
126
                    selects[0].setAttribute('name',selects[0].getAttribute('name')+new_key);
127
                }catch(e2){ // it is a textarea if it s not a select or an input
128
                    var textaeras = divs[i].getElementsByTagName('textarea');
129
                    id_input = textaeras[0].getAttribute('id')+new_key;
130
                    textaeras[0].setAttribute('id',id_input);
131
                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
132
                }
133
            }
134
135
            if (advancedMARCEditor == '0') {
136
                // when cloning a subfield, re set its label too.
137
                var labels = divs[i].getElementsByTagName('label');
138
                labels[0].setAttribute('for',id_input);
139
            }
140
141
            if(hideMarc == '0') {
142
                // updating javascript parameters on button up
143
                var imgs = divs[i].getElementsByTagName('img');
144
                imgs[0].setAttribute('onclick',"upSubfield(\'"+divs[i].getAttribute('id')+"\');");
145
            }
146
147
            // setting its '+' and '-' buttons
148
            try {
149
                var anchors = divs[i].getElementsByTagName('a');
150
                for (var j = 0; j < anchors.length; j++) {
151
                    if(anchors[j].getAttribute('class') == 'buttonPlus'){
152
                        anchors[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "','" + advancedMARCEditor + "'); return false;");
153
                    } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
154
                        anchors[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "'); return false;");
155
                    }
156
                }
157
            }
158
            catch(e){
159
                // do nothig if ButtonPlus & CloneButtonPlus don t exist.
160
            }
161
162
            // button ...
163
            var spans=0;
164
            try {
165
                spans = divs[i].getElementsByTagName('a');
166
            } catch(e) {
167
                // no spans
168
            }
169
            if(spans){
170
                var buttonDot;
171
                if(!CloneButtonPlus){ // it s impossible to have  + ... (buttonDot AND buttonPlus)
172
                    buttonDot = spans[0];
173
                    if(buttonDot){
174
                        // 2 possibilities :
175
                        try{
176
                            var buttonDotOnClick = buttonDot.getAttribute('onclick');
177
                            if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
178
                                var re = /\('.*'\)/i;
179
                                buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
180
                                if(buttonDotOnClick){
181
                                    buttonDot.setAttribute('onclick',buttonDotOnClick);
182
                                }
183
                            } else {
184
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
185
                                    var re1 = /&index=.*',/;
186
                                    var re2 = /,.*\)/;
187
188
                                    buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
189
                                    buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
190
191
                                    if(buttonDotOnClick){
192
                                            buttonDot.setAttribute('onclick',buttonDotOnClick);
193
                                    }
194
                                }
195
                            }
196
                            try {
197
                                // do not copy the script section.
198
                                var script = spans[0].getElementsByTagName('script')[0];
199
                                spans[0].removeChild(script);
200
                            } catch(e) {
201
                                // do nothing if there is no script
202
                            }
203
                        }catch(e){}
204
                    }
205
                }
206
            }
207
            if(hideMarc == '0') {
208
                var buttonUp = divs[i].getElementsByTagName('img')[0];
209
                buttonUp.setAttribute('onclick',"upSubfield('" + divs[i].getAttribute('id') + "')");
210
            }
211
212
        } else { // it's a indicator div
213
            if(divs[i].getAttribute('id').match(/^div_indicator/)){
214
                var inputs = divs[i].getElementsByTagName('input');
215
                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
216
                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
217
218
                var CloneButtonPlus;
219
                try {
220
                    var anchors = divs[i].getElementsByTagName('a');
221
                    for (var j = 0; j < anchors.length; j++) {
222
                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
223
                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "','" + hideMarc + "','" + advancedMARCEditor + "'); return false;");
224
                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
225
                            anchors[j].setAttribute('onclick',"UnCloneField('" + new_id + "'); return false;");
226
                        } else if (anchors[j].getAttribute('class') == 'expandfield') {
227
                            anchors[j].setAttribute('onclick',"ExpandField('" + new_id + "'); return false;");
228
                        }
229
                    }
230
                }
231
                catch(e){
232
                    // do nothig CloneButtonPlus doesn't exist.
233
                }
234
235
            }
236
        }
237
    }
238
239
    // insert this line on the page
240
    original.parentNode.insertBefore(clone,original.nextSibling);
241
}
242
243
/**
244
 * To clone a subfield
245
 * @param index
246
 * @param advancedMARCEditor '0' for false, '1' for true
247
 */
248
function CloneSubfield(index, advancedMARCEditor){
249
    var original = document.getElementById(index); //original <div>
250
    var clone = original.cloneNode(true);
251
    var new_key = CreateKey();
252
253
    // set the attribute for the new 'div' subfields
254
    var inputs     = clone.getElementsByTagName('input');
255
    var selects    = clone.getElementsByTagName('select');
256
    var textareas  = clone.getElementsByTagName('textarea');
257
    var linkid;
258
259
    // input
260
    var id_input = "";
261
    for(var i=0,len=inputs.length; i<len ; i++ ){
262
        id_input = inputs[i].getAttribute('id')+new_key;
263
        inputs[i].setAttribute('id',id_input);
264
        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
265
        linkid = id_input;
266
    }
267
268
    // select
269
    for(var i=0,len=selects.length; i<len ; i++ ){
270
        id_input = selects[i].getAttribute('id')+new_key;
271
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
272
        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
273
    }
274
275
    // textarea
276
    for(var i=0,len=textareas.length; i<len ; i++ ){
277
        id_input = textareas[i].getAttribute('id')+new_key;
278
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
279
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
280
    }
281
282
    // Changing the "..." link's onclick attribute for plugin callback
283
    var links  = clone.getElementsByTagName('a');
284
    var link = links[0];
285
    var buttonDotOnClick = link.getAttribute('onclick');
286
    if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
287
    var re = /\('.*'\)/i;
288
        buttonDotOnClick = buttonDotOnClick.replace(re,"('"+linkid+"')");
289
        if(buttonDotOnClick){
290
        link.setAttribute('onclick',buttonDotOnClick);
291
        }
292
    }
293
294
    if(advancedMARCEditor == '0') {
295
        // when cloning a subfield, reset its label too.
296
        var label = clone.getElementsByTagName('label')[0];
297
        label.setAttribute('for',id_input);
298
    }
299
300
    // setting a new id for the parent div
301
    var new_id  = original.getAttribute('id')+new_key;
302
    clone.setAttribute('id',new_id);
303
304
    try {
305
        var buttonUp = clone.getElementsByTagName('img')[0];
306
        buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
307
        var anchors = clone.getElementsByTagName('a');
308
        if(anchors.length){
309
            for(var i = 0 ,lenanchors = anchors.length ; i < lenanchors ; i++){
310
                if(anchors[i].getAttribute('class') == 'buttonPlus'){
311
                    anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "','" + advancedMARCEditor + "'); return false;");
312
                } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
313
                    anchors[i].setAttribute('onclick',"UnCloneField('" + new_id + "'); return false;");
314
                }
315
            }
316
        }
317
    }
318
    catch(e){
319
        // do nothig if ButtonPlus & CloneButtonPlus don't exist.
320
    }
321
    // insert this line on the page
322
    original.parentNode.insertBefore(clone,original.nextSibling);
323
}
324
325
 /**
326
 * This function removes or clears unwanted subfields
327
 */
328
function UnCloneField(index) {
329
    var original = document.getElementById(index);
330
    var canUnclone = false;
331
    if ($(original).hasClass("tag")) {
332
        // unclone a field, check if there will remain one field
333
        var fieldCode = getFieldCode(index);
334
        // tag divs with id begining with original field code
335
        var cloneFields = $('.tag[id^="tag_'+fieldCode+'"]');
336
        if (cloneFields.length > 1) {
337
            canUnclone = true;
338
        }
339
    } else {
340
        // unclone a subfield, check if there will remain one subfield
341
        var subfieldCode = getFieldAndSubfieldCode(index);
342
        // subfield divs with id begining with original field and subfield field code
343
        var cloneSubfields = $('.subfield_line[id^="subfield'+subfieldCode+'"]');
344
        if (cloneSubfields.length > 1) {
345
            canUnclone = true;
346
        }
347
    }
348
    if (canUnclone) {
349
        // remove clone
350
        original.parentNode.removeChild(original);
351
    } else {
352
        // clear inputs, but don't delete
353
        $(":input.input_marceditor", original).each(function(){
354
            // thanks to http://www.learningjquery.com/2007/08/clearing-form-data for
355
            // hint about clearing selects correctly
356
            var type = this.type;
357
            var tag = this.tagName.toLowerCase();
358
            if (type == 'text' || type == 'password' || tag == 'textarea') {
359
                this.value = "";
360
            } else if (type == 'checkbox' || type == 'radio') {
361
                this.checked = false;
362
            } else if (tag == 'select') {
363
                this.selectedIndex = -1;
364
            }
365
        });
366
        $(":input.indicator", original).val("");
367
    }
368
}
369
370
/**
371
 * This function create a random number
372
 */
373
function CreateKey(){
374
    return parseInt(Math.random() * 100000);
375
}
376
377
/**
378
 * This function allows to move a subfield up by clickink on the 'up' button .
379
 */
380
function upSubfield(index) {
381
    try{
382
        var line = document.getElementById(index); // get the line where the user has clicked.
383
    } catch(e) {
384
        return; // this line doesn't exist...
385
    }
386
    var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
387
388
    // getting all subfields for this tag
389
    var subfields = tag.getElementsByTagName('div');
390
    var subfieldsLength = subfields.length;
391
392
    if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
393
394
    // among all subfields
395
    for(var i=0;i<subfieldsLength;i++){
396
        if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
397
            if(i==1){ // if the clicked subfield is on the top
398
                tag.appendChild(subfields[1]);
399
                return;
400
            } else {
401
                var lineAbove = subfields[i-1];
402
                tag.insertBefore(line,lineAbove);
403
                return;
404
            }
405
        }
406
    }
407
}
408
409
// FIXME :: is it used ?
410
function unHideSubfield(index,labelindex) {
411
    subfield = document.getElementById(index);
412
    subfield.style.display = 'block';
413
    label = document.getElementById(labelindex);
414
    label.style.display='none';
415
}
416
417
/* Functions developed for additem.tt */
418
419
/**
420
 * To clone a subfield.<br>
421
 * @param original subfield div to clone
422
 */
423
function CloneItemSubfield(original){
424
    var clone = original.cloneNode(true);
425
    var new_key = CreateKey();
426
427
    // set the attribute for the new 'div' subfields
428
    var inputs     = clone.getElementsByTagName('input');
429
    var selects    = clone.getElementsByTagName('select');
430
    var textareas  = clone.getElementsByTagName('textarea');
431
432
    // input (except hidden type)
433
    var id_input = "";
434
    for(var i=0,len=inputs.length; i<len ; i++ ){
435
        if (inputs[i].getAttribute('type') != 'hidden') {
436
            id_input = inputs[i].getAttribute('id')+new_key;
437
            inputs[i].setAttribute('id',id_input);
438
        }
439
    }
440
441
    // select
442
    for(var i=0,len=selects.length; i<len ; i++ ){
443
        id_input = selects[i].getAttribute('id')+new_key;
444
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
445
    }
446
447
    // textarea
448
    for(var i=0,len=textareas.length; i<len ; i++ ){
449
        id_input = textareas[i].getAttribute('id')+new_key;
450
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
451
    }
452
453
    // when cloning a subfield, reset its label too.
454
    var label = clone.getElementsByTagName('label')[0];
455
    label.setAttribute('for',id_input);
456
457
    // setting a new if for the parent div
458
    var new_id = original.getAttribute('id')+new_key;
459
    clone.setAttribute('id',new_id);
460
461
    // insert this line on the page
462
    original.parentNode.insertBefore(clone,original.nextSibling);
463
}
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/authorities.tt (-474 / +144 lines)
Lines 2-37 Link Here
2
<title>Koha &rsaquo; Authorities &rsaquo; [% IF ( authid ) %]Modify authority #[% authid %] ([% authtypetext %])[% ELSE %]Adding authority ([% authtypetext %])[% END %]</title>
2
<title>Koha &rsaquo; Authorities &rsaquo; [% IF ( authid ) %]Modify authority #[% authid %] ([% authtypetext %])[% ELSE %]Adding authority ([% authtypetext %])[% END %]</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
4
<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
5
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
5
6
6
<script type="text/javascript">
7
<script type="text/javascript">
7
//<![CDATA[
8
//<![CDATA[
8
9
9
     var fields_in_use = {};
10
	 $(document).ready(function() {
10
	 $(document).ready(function() {
11
        $('#authoritytabs').tabs();
11
        $('#authoritytabs').tabs();
12
        $('.tag').each(function() {
12
13
            var field_id = this.getAttribute('id').substring(0, 7);
14
            if (field_id in fields_in_use) {
15
                fields_in_use[field_id]++;
16
            } else {
17
                fields_in_use[field_id] = 1;
18
            }
19
        });
20
        $('.subfield_line').each(function() {
21
            var field_id = this.getAttribute('id').substring(0, 12);
22
            if (field_id in fields_in_use) {
23
                fields_in_use[field_id]++;
24
            } else {
25
                fields_in_use[field_id] = 1;
26
            }
27
        });
28
		$("#f").submit(function(){
13
		$("#f").submit(function(){
29
			return $(this).Check();
14
			return $(this).Check();
30
		});
15
		});
31
	 });
16
	 });
32
17
33
/**
18
/**
34
 * check if mandatory subfields are writed
19
 * check if mandatory subfields are written
35
 */
20
 */
36
function AreMandatoriesNotOk(){
21
function AreMandatoriesNotOk(){
37
    var mandatories = new Array();
22
    var mandatories = new Array();
Lines 75-81 function AreMandatoriesNotOk(){ Link Here
75
	    	for(var j=0,len2=eleminputs.length; j<len2; j++){
60
	    	for(var j=0,len2=eleminputs.length; j<len2; j++){
76
	
61
	
77
	    		if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
62
	    		if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
78
					/* tag_801_subfield_c_841304_545657 */
79
					inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
63
					inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
80
					
64
					
81
					for( var k=0; k<len2; k++){
65
					for( var k=0; k<len2; k++){
Lines 163-497 function AddField(field,cntrepeatfield) { Link Here
163
    document.f.submit();
147
    document.f.submit();
164
}
148
}
165
149
166
167
function ExpandField(index) {
168
    var original = document.getElementById(index); //original <div>
169
    var divs = original.getElementsByTagName('div');
170
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
171
        if(divs[i].getAttribute("name") == 'line'){  // if it s a subfield
172
            if (divs[i].style.display == 'block') {
173
                divs[i].style.display = 'none';
174
            } else {
175
                divs[i].style.display = 'block';
176
            }
177
        }
178
    }
179
}
180
181
/**
182
 * To clone a field or a subfield by clickink on '+' button
183
 */ 
184
function CloneField(index) {
185
    var original = document.getElementById(index); //original <div>
186
    fields_in_use[index.substr(0, 7)]++;
187
    var clone = original.cloneNode(true);
188
    var new_key = CreateKey();
189
    var new_id  = original.getAttribute('id')+new_key;
190
    
191
    clone.setAttribute('id',new_id); // setting a new id for the parent div
192
    
193
    var divs = clone.getElementsByTagName('div');
194
    
195
    [% UNLESS ( hide_marc ) %] // No indicator if hide_marc
196
        // setting a new name for the new indicator
197
        for(var i=0; i < 2; i++) {
198
            var indicator = clone.getElementsByTagName('input')[i];
199
            indicator.setAttribute('name',indicator.getAttribute('name')+new_key);
200
        }
201
    [% END %]
202
        
203
    // settings all subfields
204
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
205
        if(divs[i].getAttribute("name") == 'line'){  // if it s a subfield
206
            
207
            // set the attribute for the new 'div' subfields
208
            divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
209
            
210
            var inputs   = divs[i].getElementsByTagName('input');
211
            var id_input = "";
212
            
213
            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
214
            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
215
            var id_input;
216
            try {
217
              id_input = inputs[1].getAttribute('id')+new_key;
218
                inputs[1].setAttribute('id',id_input);
219
                inputs[1].setAttribute('name',inputs[1].getAttribute('name')+new_key);
220
            } catch(e) {
221
              try{ // it s a select if it is not an input
222
                    var selects = divs[i].getElementsByTagName('select');
223
                    id_input = selects[0].getAttribute('id')+new_key;
224
                    selects[0].setAttribute('id',id_input);
225
                    selects[0].setAttribute('name',selects[0].getAttribute('name')+new_key);
226
                }catch(e2){ // it is a textarea if it s not a select or an input
227
                  var textaeras = divs[i].getElementsByTagName('textarea');
228
                  id_input = textaeras[0].getAttribute('id')+new_key;
229
                  textaeras[0].setAttribute('id',id_input);
230
                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
231
                }
232
            }
233
            
234
            [% UNLESS ( advancedMARCEditor ) %]
235
            // when cloning a subfield, re set its label too.
236
            var labels = divs[i].getElementsByTagName('label');
237
            labels[0].setAttribute('for',id_input);
238
            [% END %]
239
            
240
            [% UNLESS ( hide_marc ) %]
241
                // updating javascript parameters on button up
242
                var imgs = divs[i].getElementsByTagName('img');
243
                imgs[0].setAttribute('onclick',"upSubfield(\'"+divs[i].getAttribute('id')+"\');");
244
            [% END %]
245
            
246
            // setting its '+' and '-' buttons
247
            try {
248
                var spans = divs[i].getElementsByTagName('span');
249
                for (var j = 0; j < spans.length; j++) {
250
                    if(spans[j].getAttribute('class') == 'buttonPlus'){
251
                        spans[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "')");
252
                    } else if (spans[j].getAttribute('class') == 'buttonMinus') {
253
                        spans[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "')");
254
                    }
255
                }
256
            }
257
            catch(e){
258
                // do nothig if ButtonPlus & CloneButtonPlus don t exist.
259
            }
260
            
261
            // button ...
262
            var spans=0;
263
            try {
264
                spans = divs[i].getElementsByTagName('span');
265
            } catch(e) {
266
                // no spans
267
            }
268
            if(spans){
269
                var buttonDot;
270
                if(!CloneButtonPlus){ // it s impossible to have  + ... (buttonDot AND buttonPlus)
271
                    buttonDot = spans[0];
272
                    if(buttonDot){
273
                        // 2 possibilities :
274
                        try{
275
                            var buttonDotOnClick = buttonDot.getAttribute('onclick');
276
                            if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
277
                                var re = /\('.*'\)/i;
278
                                buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
279
                                if(buttonDotOnClick){
280
                                    buttonDot.setAttribute('onclick',buttonDotOnClick);
281
                                }
282
                            } else {
283
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
284
                                    
285
                                    var re1 = /&index=.*',/;
286
                                    var re2 = /,.*\)/;
287
288
                                    buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
289
                                    buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
290
                                    
291
                                    if(buttonDotOnClick){
292
                                            buttonDot.setAttribute('onclick',buttonDotOnClick);
293
                                    }
294
                                }
295
                            }
296
                            try {
297
                              // do not copy the script section.
298
                              var script = spans[0].getElementsByTagName('script')[0];
299
                              spans[0].removeChild(script);
300
                            } catch(e) {
301
                              // do nothing if there is no script
302
                            }
303
                      }catch(e){}
304
                  }
305
                }
306
            }
307
            [% UNLESS ( hide_marc ) %]
308
                var buttonUp = divs[i].getElementsByTagName('img')[0];
309
                buttonUp.setAttribute('onclick',"upSubfield('" + divs[i].getAttribute('id') + "')");
310
            [% END %]
311
            
312
        } else { // it's a indicator div
313
            if(divs[i].getAttribute('name') == 'div_indicator'){
314
                var inputs = divs[i].getElementsByTagName('input');
315
                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
316
                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
317
                
318
                var CloneButtonPlus;
319
                try {
320
                    var anchors = divs[i].getElementsByTagName('span');
321
                    for (var j = 0; j < anchors.length; j++) {
322
                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
323
                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "')");
324
                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
325
                            anchors[j].setAttribute('onclick',"UnCloneField('" + new_id + "')");
326
                        }
327
                    }
328
                }
329
                catch(e){
330
                    // do nothig CloneButtonPlus doesn't exist.
331
                }
332
                
333
                // setting its 'Expand' property
334
                var ExpandFieldA=0;
335
                try {
336
                    ExpandFieldA = divs[i].getElementsByTagName('a')[0];
337
                    ExpandFieldA.setAttribute('onclick',"ExpandField('" + divs[i].parentNode.getAttribute('id') + "')");
338
                }
339
                catch(e){
340
                    // do nothig if ButtonPlus & CloneButtonPlus don t exist.
341
                }
342
                
343
            }
344
        }
345
    }
346
    
347
    // insert this line on the page
348
    original.parentNode.insertBefore(clone,original.nextSibling);
349
}
350
351
function CloneSubfield(index){
352
    var original = document.getElementById(index); //original <div>
353
    fields_in_use[index.substr(0, 12)]++;
354
    var clone = original.cloneNode(true);
355
    var new_key = CreateKey();
356
    var new_id  = original.getAttribute('id')+new_key;
357
    
358
    // set the attribute for the new 'div' subfields
359
    var inputs     = clone.getElementsByTagName('input');
360
    var selects    = clone.getElementsByTagName('select');
361
    var textareas  = clone.getElementsByTagName('textarea');
362
        
363
    // input
364
    var id_input = "";
365
    for(var i=0,len=inputs.length; i<len ; i++ ){
366
        id_input = inputs[i].getAttribute('id')+new_key;
367
        inputs[i].setAttribute('id',id_input);
368
        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
369
    }
370
    
371
    // select 
372
    for(var i=0,len=selects.length; i<len ; i++ ){
373
        id_input = selects[i].getAttribute('id')+new_key;
374
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
375
        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
376
    }
377
    
378
    // textarea
379
    for(var i=0,len=textareas.length; i<len ; i++ ){
380
        id_input = textareas[i].getAttribute('id')+new_key;
381
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
382
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
383
    }
384
    
385
    [% UNLESS ( advancedMARCEditor ) %]
386
    // when cloning a subfield, reset its label too.
387
    var label = clone.getElementsByTagName('label')[0];
388
    label.setAttribute('for',id_input);
389
    [% END %]
390
    
391
    // setting a new if for the parent div
392
    clone.setAttribute('id',new_id);
393
    
394
    try {
395
      var buttonUp = clone.getElementsByTagName('img')[0];
396
      buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
397
      var spans = clone.getElementsByTagName('span');
398
      if(spans.length){
399
          for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
400
            if(spans[i].getAttribute('class') == 'buttonPlus'){
401
                    spans[i].setAttribute('onclick',"CloneSubfield('" + new_id + "')");
402
                } else if (spans[i].getAttribute('class') == 'buttonMinus') {
403
                    spans[i].setAttribute('onclick',"UnCloneField('" + new_id + "')");
404
                }
405
            }
406
        }
407
    }
408
    catch(e){
409
        // do nothig if ButtonPlus & CloneButtonPlus don't exist.
410
    }
411
    // insert this line on the page
412
    original.parentNode.insertBefore(clone,original.nextSibling);
413
}
414
415
 /**
416
 * This function removes or clears unwanted subfields
417
 */
418
function UnCloneField(index) {
419
    var original = document.getElementById(index);
420
    var field_id;
421
    if (index.match("tag")) {
422
        field_id = index.substr(0, 7);
423
    } else {
424
        field_id = index.substr(0, 12);
425
    }
426
    if (1 == fields_in_use[field_id]) {
427
        // clear inputs, but don't delete
428
        $(":input.input_marceditor", original).each(function(){
429
            // thanks to http://www.learningjquery.com/2007/08/clearing-form-data for
430
            // hint about clearing selects correctly
431
            var type = this.type;
432
            var tag = this.tagName.toLowerCase();
433
            if (type == 'text' || type == 'password' || tag == 'textarea') {
434
                this.value = "";
435
            } else if (type == 'checkbox' || type == 'radio') {
436
                this.checked = false;
437
            } else if (tag == 'select') {
438
                this.selectedIndex = -1;
439
            }
440
        });
441
        $(":input.indicator", original).val("");
442
    } else {
443
        original.parentNode.removeChild(original);
444
        fields_in_use[field_id]--;
445
    }
446
}
447
448
449
/**
450
 * This function create a random number
451
 */
452
function CreateKey(){
453
    return parseInt(Math.random() * 100000);
454
}
455
456
/**
457
 * This function allows to move a subfield up by clickink on the 'up' button .
458
 */
459
function upSubfield(index) {
460
    try{
461
        var line = document.getElementById(index); // get the line where the user has clicked.
462
    } catch(e) {
463
        return; // this line doesn't exist...
464
    }
465
    var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
466
    
467
    // getting all subfields for this tag
468
    var subfields = tag.getElementsByTagName('div');
469
    var subfieldsLength = subfields.length;
470
    
471
    if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
472
    
473
    // among all subfields 
474
    for(var i=0;i<subfieldsLength;i++){ 
475
        if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
476
            if(i==1){ // if the clicked subfield is on the top
477
                tag.appendChild(subfields[1]);
478
                return;
479
            } else {
480
                var lineAbove = subfields[i-1];
481
                tag.insertBefore(line,lineAbove);
482
                return;
483
            }
484
        }
485
    }
486
}
487
488
function unHideSubfield(index,labelindex) { // FIXME :: is it used ?
489
    subfield = document.getElementById(index);
490
    subfield.style.display = 'block';
491
    label = document.getElementById(labelindex);
492
    label.style.display='none'; 
493
}
494
495
function addauthority() {
150
function addauthority() {
496
    X = document.forms[0].authtype.value;
151
    X = document.forms[0].authtype.value;
497
    window.location="/cgi-bin/koha/authorities/authorities.pl?authtypecode="+X;
152
    window.location="/cgi-bin/koha/authorities/authorities.pl?authtypecode="+X;
Lines 591-740 function searchauthority() { Link Here
591
	<ul class="toolbar"><li id="addauthc"><input id="addauth" type="submit" value="Save" accesskey="w" /></li></ul></div>
246
	<ul class="toolbar"><li id="addauthc"><input id="addauth" type="submit" value="Save" accesskey="w" /></li></ul></div>
592
247
593
<div id="authoritytabs" class="toptabs numbered">
248
<div id="authoritytabs" class="toptabs numbered">
594
       <ul> [% FOREACH BIG_LOO IN BIG_LOOP %]
249
    <ul>
595
            <li>[% IF ( BIG_LOO.number ) %]
250
        [% FOREACH BIG_LOO IN BIG_LOOP %]
596
                <a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
251
        <li><a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a></li>
597
            [% ELSE %]
252
        [% END %]
598
                <a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
253
    </ul>
599
            [% END %]</li>
600
        [% END %]</ul>
601
254
602
[% FOREACH BIG_LOO IN BIG_LOOP %]
255
[% FOREACH BIG_LOO IN BIG_LOOP %]
603
    <!-- hide every tab except the 1st -->
256
    <div id="tab[% BIG_LOO.number %]XX">
604
            [% IF ( BIG_LOO.number ) %]
257
605
                <div id="tab[% BIG_LOO.number %]XX">
258
    [% FOREACH innerloo IN BIG_LOO.innerloop %]
259
    [% IF ( innerloo.tag ) %]
260
    <div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
261
        <div class="tag_title" id="div_indicator_tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
262
        [% UNLESS hide_marc %]
263
            [% IF advancedMARCEditor %]
264
                <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;">[% innerloo.tag %]</a>
606
            [% ELSE %]
265
            [% ELSE %]
607
                <div id="tab[% BIG_LOO.number %]XX">
266
                <span title="[% innerloo.tag_lib %]">[% innerloo.tag %]</span>
608
            [% END %]
267
            [% END %]
609
        
268
                [% IF ( innerloo.fixedfield ) %]
610
        [% FOREACH innerloo IN BIG_LOO.innerloop %]
269
                    <input type="text"
611
            [% IF ( innerloo.tag ) %]
270
                        tabindex="1"
612
                <div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
271
                        class="indicator flat"
613
                <div class="tag_title" name="div_indicator">
272
                        style="display:none;"
614
                [% UNLESS ( innerloo.hide_marc ) %]
273
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
615
		    [% IF ( innerloo.advancedMARCEditor ) %]
274
                        size="1"
616
                    <a class="tagnum" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]')">[% innerloo.tag %]</a>
275
                        maxlength="1"
617
		    [% ELSE %]
276
                        value="[% innerloo.indicator1 %]" />
618
                    <span title="[% innerloo.tag_lib %]">[% innerloo.tag %]</span>
277
                    <input type="text"
619
		    [% END %]
278
                        tabindex="1"
620
                    [% IF ( innerloo.fixedfield ) %]
279
                        class="indicator flat"
621
                    <input class="indicator flat"
280
                        style="display:none;"
622
                                type="text"
281
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
623
                                style="display:none;"
282
                        size="1"
624
                                name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
283
                        maxlength="1"
625
                                size="1"
284
                        value="[% innerloo.indicator2 %]" />
626
                                maxlength="1"
627
                                value="[% innerloo.indicator1 %]" />
628
                    <input class="indicator flat"
629
                                type="text"
630
                                style="display:none;"
631
                                name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
632
                                size="1"
633
                                maxlength="1"
634
                                value="[% innerloo.indicator2 %]" />
635
                    [% ELSE %]
636
                    <input class="indicator flat"
637
                                type="text"
638
                                name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
639
                                size="1"
640
                                maxlength="1"
641
                                value="[% innerloo.indicator1 %]" />
642
                    <input class="indicator flat"
643
                                type="text"
644
                                name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
645
                                size="1"
646
                                maxlength="1"
647
                                value="[% innerloo.indicator2 %]" />
648
                    [% END %] -
649
                [% ELSE %]
285
                [% ELSE %]
650
                    [% IF ( innerloo.fixedfield ) %]
286
                    <input type="text"
651
                        <input type="hidden"
287
                        tabindex="1"
652
                            name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %]"
288
                        class="indicator flat"
653
                            value="[% innerloo.indicator1 %][% innerloo.random %]" />
289
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
654
                        <input type="hidden"
290
                        size="1"
655
                            name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %]"
291
                        maxlength="1"
656
                            value="[% innerloo.indicator2 %][% innerloo.random %]" />
292
                        value="[% innerloo.indicator1 %]" />
657
                    [% ELSE %]
293
                    <input type="text"
658
                        <input type="hidden"
294
                        tabindex="1"
659
                            name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %]"
295
                        class="indicator flat"
660
                            value="[% innerloo.indicator1 %][% innerloo.random %]" />
296
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
661
                        <input type="hidden"
297
                        size="1"
662
                            name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %]"
298
                        maxlength="1"
663
                            value="[% innerloo.indicator2 %][% innerloo.random %]" />
299
                        value="[% innerloo.indicator2 %]" />
664
                    [% END %]
300
                [% END %] -
665
                [% END %]
301
        [% ELSE %]
666
    
302
                [% IF ( innerloo.fixedfield ) %]
667
                [% UNLESS ( innerloo.advancedMARCEditor ) %]
303
                    <input type="hidden"
668
                    <a onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]')">[% innerloo.tag_lib %]</a>
304
                        tabindex="1"
305
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
306
                        value="[% innerloo.indicator1 %]" />
307
                    <input type="hidden"
308
                        tabindex="1"
309
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
310
                        value="[% innerloo.indicator2 %]" />
311
                [% ELSE %]
312
                    <input type="hidden"
313
                        tabindex="1"
314
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
315
                        value="[% innerloo.indicator1 %]" />
316
                    <input type="hidden"
317
                        tabindex="1"
318
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
319
                        value="[% innerloo.indicator2 %]" />
669
                [% END %]
320
                [% END %]
321
        [% END %]
322
323
            [% UNLESS advancedMARCEditor %]
324
                <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib %]</a>
325
            [% END %]
326
                <span class="field_controls">
670
                [% IF ( innerloo.repeatable ) %]
327
                [% IF ( innerloo.repeatable ) %]
671
                    <span class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]')">+</span>
328
                    <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]','[% hide_marc %]','[% advancedMARCEditor %]'); return false;" title="Repeat this Tag">
329
                        <img src="/intranet-tmpl/prog/img/repeat-tag.png" alt="Repeat this Tag" />
330
                    </a>
672
                [% END %]
331
                [% END %]
673
                [% UNLESS ( innerloo.mandatory ) %]
332
                    <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Delete this Tag">
674
                    <span class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]')">&#8722;</span>
333
                        <img src="/intranet-tmpl/prog/img/delete-tag.png" alt="Delete this Tag" />
334
                    </a>
335
                </span>
336
337
        </div>
338
339
        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
340
            <!--  One line on the marc editor -->
341
            <div class="subfield_line" style="[% subfield_loo.visibility %]" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]">
342
343
                [% UNLESS advancedMARCEditor %]
344
                    [% IF ( subfield_loo.fixedfield ) %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" style="display:none;" class="labelsubfield">
345
                    [% ELSE %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" class="labelsubfield">
346
                    [% END %]
675
                [% END %]
347
                [% END %]
676
                
348
                
677
            </div>
349
                [% UNLESS hide_marc %]
678
    
350
                <span class="subfieldcode">
679
            [% FOREACH subfield_loo IN innerloo.subfield_loop %]
680
                <!--  One line on the marc editor -->
681
                <div name="line" class="subfield_line" style="[% subfield_loo.visibility %];" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %]">
682
                
683
                    [% UNLESS ( subfield_loo.advancedMARCEditor ) %]
684
                        [% IF ( subfield_loo.fixedfield ) %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" style="display:none;" class="labelsubfield" >
685
                        [% ELSE %] <label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" class="labelsubfield" >[% END %]
686
                    [% END %] 
687
                    
688
                    [% UNLESS ( subfield_loo.hide_marc ) %]
689
                    [% IF ( subfield_loo.fixedfield ) %]
351
                    [% IF ( subfield_loo.fixedfield ) %]
690
                        <img class="buttonUp" style="display:none;" src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %]')" alt="Move Up" title="Move Up" />
352
                        <img class="buttonUp" style="display:none;" src="/intranet-tmpl/prog/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
691
                    [% ELSE %]
353
                    [% ELSE %]
692
                        <img class="buttonUp"  src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %]')" alt="Move Up" title="Move Up" />
354
                        <img class="buttonUp" src="/intranet-tmpl/prog/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
693
                        [% END %]
694
                            <input title="[% subfield_loo.marc_lib_plain %]"
695
                                style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" type="text"
696
                                name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
697
                                value="[% subfield_loo.subfield %]"
698
                                size="1"
699
                                maxlength="1"
700
                                class="flat"
701
                                tabindex="0" />
702
                    [% ELSE %]
703
                        <input type="hidden"
704
                            name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
705
                            value="[% subfield_loo.subfield %]"/>
706
                    [% END %]
355
                    [% END %]
356
                        <input type="text"
357
                            title="[% subfield_loo.marc_lib_plain %]"
358
                            style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
359
                            name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
360
                            value="[% subfield_loo.subfield %]"
361
                            size="1"
362
                            maxlength="1"
363
                            class="flat"
364
                            tabindex="0" />
365
                </span>
366
                [% ELSE %]
367
                    <input type="hidden"
368
                        name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
369
                        value="[% subfield_loo.subfield %]" />
370
                [% END %]
371
372
                [% UNLESS advancedMARCEditor %]
373
                    [% IF ( subfield_loo.mandatory ) %]<span class="subfield subfield_mandatory">[% ELSE %]<span class="subfield">[% END %]
374
                        [% subfield_loo.marc_lib_plain %]
375
                        [% IF ( subfield_loo.mandatory ) %]<span class="mandatory_marker" title="This field is mandatory">*</span>[% END %]
376
                    </span>
377
                    </label>
378
                [% END %]
707
                
379
                
708
                    [% UNLESS ( subfield_loo.advancedMARCEditor ) %]
380
                [% subfield_loo.marc_value %]
709
                        [% IF ( subfield_loo.mandatory ) %]<span class="subfield_mandatory">[% END %]
381
710
                            [% subfield_loo.marc_lib %]
382
                <span class="subfield_controls">
711
                        [% IF ( subfield_loo.mandatory ) %]</span>[% END %]
383
                [% IF ( subfield_loo.repeatable ) %]
712
                        </label>
384
                    <a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]','[% advancedMARCEditor %]'); return false;">
713
                    [% END %]
385
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
714
                    
386
                    </a>
715
                    [% subfield_loo.marc_value %]
387
                    <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;">
716
                    
388
                        <img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
717
                    [% IF ( subfield_loo.repeatable ) %]
389
                    </a>
718
                        <a href="#" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %]'); return false;"><img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /></a>
390
                [% END %]
719
                    [% END %]
391
                </span>
720
                    [% UNLESS ( subfield_loo.mandatory ) %]
721
                        <a href="#" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;"><img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /></a>
722
                    [% END %]
723
                    
724
                </div>
725
                <!-- End of the line -->
726
                
392
                
727
            [% END %]
728
            </div>
393
            </div>
729
            [% END %]<!-- tag -->
394
            <!-- End of the line -->
730
        [% END %]
395
        [% END %]
731
        </div>
732
[% END %]
733
396
734
[% UNLESS ( singletab ) %]
397
    </div>
735
    </div>	
398
    [% END %]<!-- if innerloo.tag -->
736
[% END %]
399
    [% END %]<!-- BIG_LOO.innerloop -->
737
</div>
400
    </div>
401
[% END %]<!-- BIG_LOOP -->
402
403
</div><!-- tabs -->
738
404
739
<div name="hidden" id="hidden" class="tab">
405
<div name="hidden" id="hidden" class="tab">
740
[% FOREACH hidden_loo IN hidden_loop %]
406
[% FOREACH hidden_loo IN hidden_loop %]
Lines 756-765 function searchauthority() { Link Here
756
    <input type="hidden" name="subfield" value="[% oldauthtypetagsubfield %]" />
422
    <input type="hidden" name="subfield" value="[% oldauthtypetagsubfield %]" />
757
    <input type="hidden" name="field_value" value="[% authtypecode %]" />
423
    <input type="hidden" name="field_value" value="[% authtypecode %]" />
758
[% END %]
424
[% END %]
425
759
<fieldset class="action">
426
<fieldset class="action">
760
        <input type="button" id="addauth2" value="Save" onclick="Check(this.form)" accesskey="w" />
427
        <input type="button" id="addauth2" value="Save" onclick="Check(this.form)" accesskey="w" />
761
</fieldset>
428
</fieldset>
429
762
</form>
430
</form>
431
432
</div>
763
</div>
433
</div>
764
</div>
434
</div>
765
435
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/authorities/blinddetail-biblio-search.tt (-1 / +1 lines)
Lines 31-37 Link Here
31
            // Try to add as many clones as needed
31
            // Try to add as many clones as needed
32
            try {
32
            try {
33
                for(var i=0; i<nb-subfields.length; i++) {
33
                for(var i=0; i<nb-subfields.length; i++) {
34
                    window.opener.opener.CloneSubfield(subfields[0].getAttribute('id'));
34
                    window.opener.opener.CloneSubfield(subfields[0].getAttribute('id'),'[% advancedMARCEditor %]');
35
                }
35
                }
36
            }
36
            }
37
            catch(err) {
37
            catch(err) {
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt (-466 / +131 lines)
Lines 3-32 Link Here
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
4
<script type="text/javascript" src="[% themelang %]/lib/yui/plugins/bubbling-min.js"></script>
5
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
5
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.fixFloat.js"></script>
6
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
6
<script type="text/javascript">
7
<script type="text/javascript">
7
//<![CDATA[
8
//<![CDATA[
8
9
9
     var fields_in_use = {};
10
	 $(document).ready(function() {
10
	 $(document).ready(function() {
11
        $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
11
        $('#addbibliotabs').tabs().bind('show.ui-tabs', function(e, ui) {
12
			$("#"+ui.panel.id+" input:eq(0)").focus();
12
			$("#"+ui.panel.id+" input:eq(0)").focus();
13
		});
13
		});
14
        $('.tag').each(function() {
14
15
            var field_id = this.getAttribute('id').substring(0, 7);
16
            if (field_id in fields_in_use) {
17
                fields_in_use[field_id]++;
18
            } else {
19
                fields_in_use[field_id] = 1;
20
            }
21
        });
22
        $('.subfield_line').each(function() {
23
            var field_id = this.getAttribute('id').substring(0, 12);
24
            if (field_id in fields_in_use) {
25
                fields_in_use[field_id]++;
26
            } else {
27
                fields_in_use[field_id] = 1;
28
            }
29
        });
30
		/* check cookie to hide/show marcdocs*/
15
		/* check cookie to hide/show marcdocs*/
31
		if($.cookie("marcdocs_[% borrowernumber %]") == 'false'){
16
		if($.cookie("marcdocs_[% borrowernumber %]") == 'false'){
32
			hideMARCdocLinks();
17
			hideMARCdocLinks();
Lines 48-68 function confirmnotdup(redirect){ Link Here
48
	Check();
33
	Check();
49
}
34
}
50
35
51
/**
52
 * 
53
 * 
54
 */
55
function Check(){
56
    var StrAlert = AreMandatoriesNotOk();
57
    if( ! StrAlert ){
58
        document.f.submit();
59
        return true;
60
    } else {
61
        alert(StrAlert);
62
        return false;
63
    }
64
}
65
66
function Dopop(link,i) {
36
function Dopop(link,i) {
67
    defaultvalue = document.getElementById(i).value;
37
    defaultvalue = document.getElementById(i).value;
68
    window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
38
    window.open(link+"&result="+defaultvalue,"valuebuilder",'width=700,height=550,toolbar=false,scrollbars=yes');
Lines 235-240 function AreMandatoriesNotOk(){ Link Here
235
	}
205
	}
236
}
206
}
237
207
208
/**
209
 *
210
 *
211
 */
212
function Check(){
213
    var StrAlert = AreMandatoriesNotOk();
214
    if( ! StrAlert ){
215
        document.f.submit();
216
        return true;
217
    } else {
218
        alert(StrAlert);
219
        return false;
220
    }
221
}
222
238
/** 
223
/** 
239
 * check if z3950 mandatories are set or not
224
 * check if z3950 mandatories are set or not
240
 */
225
 */
Lines 260-640 function Changefwk(FwkList) { Link Here
260
    f.submit();
245
    f.submit();
261
}
246
}
262
247
263
// returns the subfieldcode based upon subfieldid writing
264
function getSubfieldcode(tagsubfieldid){
265
    // 3 : tag +3 : tagnumber +4 : number of _ +8 subfield -1 begins at 0  
266
    return tagsubfieldid.substr(3+3+4+8-1,1);
267
}
268
269
// Take the base of tagsubfield information (removing the subfieldcodes and subfieldindexes)
270
// returns the filter
271
function getTagInputnameFilter(tagsubfieldid){
272
    var tagsubfield=tagsubfieldid.substr(0,tagsubfieldid.lastIndexOf("_"));  
273
    var tagcode=tagsubfield.substr(tagsubfield.lastIndexOf("_"));
274
    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
275
    tagsubfield=tagsubfield.substr(0,tagsubfield.lastIndexOf("_"));
276
    tagsubfield=tagsubfield+"_."+tagcode;
277
    return tagsubfield;  
278
}
279
280
function openAuth(tagsubfieldid,authtype) {
281
    // let's take the base of tagsubfield information (removing the indexes and the codes
282
    var element=document.getElementById(tagsubfieldid);
283
    var tagsubfield=getTagInputnameFilter(tagsubfieldid);
284
    var elementsubfcode=getSubfieldcode(element.name);
285
    var mainmainstring=element.value;
286
    var mainstring="";  
287
    var inputs = element.parentNode.parentNode.getElementsByTagName("input");
288
289
    for (var myindex =0; myindex<inputs.length;myindex++){
290
        if (inputs[myindex].name && inputs[myindex].name.match(tagsubfield)){
291
            var subfieldcode=getSubfieldcode(inputs[myindex].name);
292
            if (isNaN(parseInt(subfieldcode)) && inputs[myindex].value != "" && subfieldcode!=elementsubfcode){
293
                mainstring=inputs[myindex].value+" "+mainstring;
294
            }      
295
        }
296
    }           
297
	newin=window.open("../authorities/auth_finder.pl?authtypecode="+  authtype+ "&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
298
}
299
300
301
function ExpandField(index) {
302
    var original = document.getElementById(index); //original <div>
303
    var divs = original.getElementsByTagName('div');
304
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
305
        if(divs[i].getAttribute('id').match(/^subfield/)){  // if it s a subfield
306
            if (divs[i].style.display == 'block') {
307
                divs[i].style.display = 'none';
308
            } else {
309
                divs[i].style.display = 'block';
310
            }
311
        }
312
    }
313
}
314
315
/**
316
 * To clone a field or a subfield by clicking on '+' button
317
 */ 
318
function CloneField(index) {
319
    var original = document.getElementById(index); //original <div>
320
    fields_in_use[index.substr(0, 7)]++;
321
    var clone = original.cloneNode(true);
322
    var new_key = CreateKey();
323
    var new_id  = original.getAttribute('id')+new_key;
324
    
325
    clone.setAttribute('id',new_id); // setting a new id for the parent div
326
    
327
    var divs = clone.getElementsByTagName('div');
328
    
329
    [% UNLESS ( hide_marc ) %] // No indicator if hide_marc
330
        // setting a new name for the new indicator
331
        for(var i=0; i < 2; i++) {
332
            var indicator = clone.getElementsByTagName('input')[i];
333
            indicator.setAttribute('name',indicator.getAttribute('name')+new_key);
334
        }
335
    [% END %]
336
        
337
    // settings all subfields
338
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div
339
        if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
340
            
341
            // set the attribute for the new 'div' subfields
342
            divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
343
            
344
            var inputs   = divs[i].getElementsByTagName('input');
345
            var id_input = "";
346
            
347
            for( j = 0 ; j < inputs.length ; j++ ) {
348
            	if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
349
            		inputs[j].value = "";
350
            	}
351
            }
352
            
353
            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
354
            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
355
            var id_input;
356
            try {
357
            	id_input = inputs[1].getAttribute('id')+new_key;
358
                inputs[1].setAttribute('id',id_input);
359
                inputs[1].setAttribute('name',inputs[1].getAttribute('name')+new_key);
360
            } catch(e) {
361
            	try{ // it s a select if it is not an input
362
                    var selects = divs[i].getElementsByTagName('select');
363
                    id_input = selects[0].getAttribute('id')+new_key;
364
                    selects[0].setAttribute('id',id_input);
365
                    selects[0].setAttribute('name',selects[0].getAttribute('name')+new_key);
366
                }catch(e2){ // it is a textarea if it s not a select or an input
367
                	var textaeras = divs[i].getElementsByTagName('textarea');
368
                	id_input = textaeras[0].getAttribute('id')+new_key;
369
                	textaeras[0].setAttribute('id',id_input);
370
                    textaeras[0].setAttribute('name',textaeras[0].getAttribute('name')+new_key);
371
                }
372
            }
373
            
374
            [% UNLESS ( advancedMARCEditor ) %]
375
            // when cloning a subfield, re set its label too.
376
            var labels = divs[i].getElementsByTagName('label');
377
            labels[0].setAttribute('for',id_input);
378
            [% END %]
379
            
380
            [% UNLESS ( hide_marc ) %]
381
                // updating javascript parameters on button up
382
                var imgs = divs[i].getElementsByTagName('img');
383
                imgs[0].setAttribute('onclick',"upSubfield(\'"+divs[i].getAttribute('id')+"\');");
384
            [% END %]
385
            
386
            // setting its '+' and '-' buttons
387
            try {
388
                var anchors = divs[i].getElementsByTagName('a');
389
                for (var j = 0; j < anchors.length; j++) {
390
                    if(anchors[j].getAttribute('class') == 'buttonPlus'){
391
                        anchors[j].setAttribute('onclick',"CloneSubfield('" + divs[i].getAttribute('id') + "')");
392
                    } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
393
                        anchors[j].setAttribute('onclick',"UnCloneField('" + divs[i].getAttribute('id') + "')");
394
                    }
395
                }
396
            }
397
            catch(e){
398
                // do nothig if ButtonPlus & CloneButtonPlus don t exist.
399
            }
400
            
401
            // button ...
402
            var spans=0;
403
            try {
404
                spans = divs[i].getElementsByTagName('a');
405
            } catch(e) {
406
                // no spans
407
            }
408
            if(spans){
409
                var buttonDot;
410
                if(!CloneButtonPlus){ // it s impossible to have  + ... (buttonDot AND buttonPlus)
411
                    buttonDot = spans[0];
412
                    if(buttonDot){
413
                        // 2 possibilities :
414
                        try{
415
                            var buttonDotOnClick = buttonDot.getAttribute('onclick');
416
                            if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
417
                                var re = /\('.*'\)/i;
418
                                buttonDotOnClick = buttonDotOnClick.replace(re,"('"+inputs[1].getAttribute('id')+"')");
419
                                if(buttonDotOnClick){
420
                                    buttonDot.setAttribute('onclick',buttonDotOnClick);
421
                                }
422
                            } else {
423
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
424
                                    var re1 = /&index=.*',/;
425
                                    var re2 = /,.*\)/;
426
427
                                    buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
428
                                    buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
429
                                    
430
                                    if(buttonDotOnClick){
431
                                            buttonDot.setAttribute('onclick',buttonDotOnClick);
432
                                    }
433
                                }
434
                            }
435
                            try {
436
                            	// do not copy the script section.
437
                            	var script = spans[0].getElementsByTagName('script')[0];
438
                            	spans[0].removeChild(script);
439
                            } catch(e) {
440
                            	// do nothing if there is no script
441
                            }
442
                    	}catch(e){}
443
                	}
444
                }
445
            }
446
            [% UNLESS ( hide_marc ) %]
447
                var buttonUp = divs[i].getElementsByTagName('img')[0];
448
                buttonUp.setAttribute('onclick',"upSubfield('" + divs[i].getAttribute('id') + "')");
449
            [% END %]
450
            
451
        } else { // it's a indicator div
452
            if(divs[i].getAttribute('id').match(/^div_indicator/)){
453
                var inputs = divs[i].getElementsByTagName('input');
454
                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
455
                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
456
                
457
                var CloneButtonPlus;
458
                try {
459
                    var anchors = divs[i].getElementsByTagName('a');
460
                    for (var j = 0; j < anchors.length; j++) {
461
                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
462
                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "')");
463
                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
464
                            anchors[j].setAttribute('onclick',"UnCloneField('" + new_id + "')");
465
                        } else if (anchors[j].getAttribute('class') == 'expandfield') {
466
                            anchors[j].setAttribute('onclick',"ExpandField('" + new_id + "')");
467
                        }
468
                    }
469
                }
470
                catch(e){
471
                    // do nothig CloneButtonPlus doesn't exist.
472
                }
473
474
            }
475
        }
476
    }
477
    
478
    // insert this line on the page
479
    original.parentNode.insertBefore(clone,original.nextSibling);
480
}
481
482
function CloneSubfield(index){
483
    var original = document.getElementById(index); //original <div>
484
    fields_in_use[index.substr(0, 12)]++;
485
    var clone = original.cloneNode(true);
486
    var new_key = CreateKey();
487
    var new_id  = original.getAttribute('id')+new_key;
488
    // set the attribute for the new 'div' subfields
489
    var inputs     = clone.getElementsByTagName('input');
490
    var selects    = clone.getElementsByTagName('select');
491
    var textareas  = clone.getElementsByTagName('textarea');
492
    var linkid;
493
494
    // input
495
    var id_input = "";
496
    for(var i=0,len=inputs.length; i<len ; i++ ){
497
        id_input = inputs[i].getAttribute('id')+new_key;
498
        inputs[i].setAttribute('id',id_input);
499
        inputs[i].setAttribute('name',inputs[i].getAttribute('name')+new_key);
500
	linkid = id_input;
501
    }
502
    
503
    // select 
504
    for(var i=0,len=selects.length; i<len ; i++ ){
505
        id_input = selects[i].getAttribute('id')+new_key;
506
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
507
        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
508
    }
509
    
510
    // textarea
511
    for(var i=0,len=textareas.length; i<len ; i++ ){
512
        id_input = textareas[i].getAttribute('id')+new_key;
513
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
514
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
515
    }
516
517
    // Changing the "..." link's onclick attribute for plugin callback
518
    var links  = clone.getElementsByTagName('a');
519
    var link = links[0];
520
    var buttonDotOnClick = link.getAttribute('onclick');
521
    if(buttonDotOnClick.match('Clictag')){   // -1- It s a plugin
522
	var re = /\('.*'\)/i;
523
        buttonDotOnClick = buttonDotOnClick.replace(re,"('"+linkid+"')");
524
        if(buttonDotOnClick){
525
	    link.setAttribute('onclick',buttonDotOnClick);
526
        }
527
    }
528
529
530
    [% UNLESS ( advancedMARCEditor ) %]
531
    // when cloning a subfield, reset its label too.
532
    var label = clone.getElementsByTagName('label')[0];
533
    label.setAttribute('for',id_input);
534
    [% END %]
535
    
536
    // setting a new id for the parent div
537
    clone.setAttribute('id',new_id);
538
    
539
    try {
540
        var buttonUp = clone.getElementsByTagName('img')[0];
541
        buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
542
        var anchors = clone.getElementsByTagName('a');
543
        if(anchors.length){
544
            for(var i = 0 ,lenanchors = anchors.length ; i < lenanchors ; i++){
545
                if(anchors[i].getAttribute('class') == 'buttonPlus'){
546
                    anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "')");
547
                } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
548
                    anchors[i].setAttribute('onclick',"UnCloneField('" + new_id + "')");
549
                }
550
            }
551
        }
552
    }
553
    catch(e){
554
        // do nothig if ButtonPlus & CloneButtonPlus don't exist.
555
    }
556
    // insert this line on the page
557
    original.parentNode.insertBefore(clone,original.nextSibling);
558
}
559
560
 /**
561
 * This function removes or clears unwanted subfields
562
 */
563
function UnCloneField(index) {
564
    var original = document.getElementById(index);
565
    var field_id;
566
    if (index.match("tag")) {
567
        field_id = index.substr(0, 7);
568
    } else {
569
        field_id = index.substr(0, 12);
570
    }
571
    if (1 == fields_in_use[field_id]) {
572
        // clear inputs, but don't delete
573
        $(":input.input_marceditor", original).each(function(){
574
            // thanks to http://www.learningjquery.com/2007/08/clearing-form-data for
575
            // hint about clearing selects correctly
576
            var type = this.type;
577
            var tag = this.tagName.toLowerCase();
578
            if (type == 'text' || type == 'password' || tag == 'textarea') {
579
                this.value = "";
580
            } else if (type == 'checkbox' || type == 'radio') {
581
                this.checked = false;
582
            } else if (tag == 'select') {
583
                this.selectedIndex = -1;
584
            }
585
        });
586
        $(":input.indicator", original).val("");
587
    } else {
588
        original.parentNode.removeChild(original);
589
        fields_in_use[field_id]--;
590
    }
591
}
592
593
/**
594
 * This function create a random number
595
 */
596
function CreateKey(){
597
    return parseInt(Math.random() * 100000);
598
}
599
600
/**
601
 * This function allows to move a subfield up by clickink on the 'up' button .
602
 */
603
function upSubfield(index) {
604
    try{
605
        var line = document.getElementById(index); // get the line where the user has clicked.
606
    } catch(e) {
607
        return; // this line doesn't exist...
608
    }
609
    var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
610
    
611
    // getting all subfields for this tag
612
    var subfields = tag.getElementsByTagName('div');
613
    var subfieldsLength = subfields.length;
614
    
615
    if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
616
    
617
    // among all subfields 
618
    for(var i=0;i<subfieldsLength;i++){ 
619
        if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
620
            if(i==1){ // if the clicked subfield is on the top
621
                tag.appendChild(subfields[1]);
622
                return;
623
            } else {
624
                var lineAbove = subfields[i-1];
625
                tag.insertBefore(line,lineAbove);
626
                return;
627
            }
628
        }
629
    }
630
}
631
632
function unHideSubfield(index,labelindex) { // FIXME :: is it used ?
633
    subfield = document.getElementById(index);
634
    subfield.style.display = 'block';
635
    label = document.getElementById(labelindex);
636
    label.style.display='none';	
637
}
638
//]]>
248
//]]>
639
</script>
249
</script>
640
<link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
250
<link type="text/css" rel="stylesheet" href="[% themelang %]/css/addbiblio.css" />
Lines 657-662 function unHideSubfield(index,labelindex) { // FIXME :: is it used ? Link Here
657
//]]>
267
//]]>
658
</script>
268
</script>
659
[% INCLUDE 'header.inc' %]
269
[% INCLUDE 'header.inc' %]
270
660
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo; [% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record number [% biblionumber %])[% ELSE %]Add MARC record[% END %]</div>
271
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/cataloguing/addbooks.pl">Cataloging</a>  &rsaquo; [% IF ( biblionumber ) %]Editing <em>[% title |html %]</em> (Record number [% biblionumber %])[% ELSE %]Add MARC record[% END %]</div>
661
272
662
<div id="doc" class="yui-t7">
273
<div id="doc" class="yui-t7">
Lines 802-884 function unHideSubfield(index,labelindex) { // FIXME :: is it used ? Link Here
802
        <input type="hidden" name="breedingid" value="[% breedingid %]" />
413
        <input type="hidden" name="breedingid" value="[% breedingid %]" />
803
414
804
<div id="addbibliotabs" class="toptabs numbered">
415
<div id="addbibliotabs" class="toptabs numbered">
805
	<ul>[% FOREACH BIG_LOO IN BIG_LOOP %]
416
    <ul>
806
          <li>  [% IF ( BIG_LOO.number ) %]
417
        [% FOREACH BIG_LOO IN BIG_LOOP %]
807
                <a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
418
        <li><a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a></li>
808
            [% ELSE %]
419
        [% END %]
809
                <a href="#tab[% BIG_LOO.number %]XX">[% BIG_LOO.number %]</a>
420
    </ul>
810
            [% END %]</li>
811
        [% END %]</ul>
812
421
813
[% FOREACH BIG_LOO IN BIG_LOOP %]
422
[% FOREACH BIG_LOO IN BIG_LOOP %]
814
<!-- hide every tab except the 1st -->
815
[% IF ( BIG_LOO.number ) %]
816
    <div id="tab[% BIG_LOO.number %]XX">
817
[% ELSE %]
818
    <div id="tab[% BIG_LOO.number %]XX">
423
    <div id="tab[% BIG_LOO.number %]XX">
819
[% END %]
820
821
    
424
    
822
    [% FOREACH innerloo IN BIG_LOO.innerloop %]
425
    [% FOREACH innerloo IN BIG_LOO.innerloop %]
823
        [% IF ( innerloo.tag ) %]
426
    [% IF ( innerloo.tag ) %]
824
	<div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
427
    <div class="tag" id="tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
825
        <div class="tag_title" id="div_indicator_tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
428
        <div class="tag_title" id="div_indicator_tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]">
826
            [% UNLESS hide_marc %]
429
        [% UNLESS hide_marc %]
827
            	[% IF advancedMARCEditor %]
430
            [% IF advancedMARCEditor %]
828
		<a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;">[% innerloo.tag %]</a>
431
                <a href="#" tabindex="1" class="tagnum" title="[% innerloo.tag_lib %] - Click to Expand this Tag" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;">[% innerloo.tag %]</a>
829
		[% ELSE %]
432
            [% ELSE %]
830
                 <span class="tagnum" title="[% innerloo.tag_lib %]">[% innerloo.tag %]
433
                <span class="tagnum" title="[% innerloo.tag_lib %]">[% innerloo.tag %]
831
                 [% IF marcflavour != 'NORMARC' %]<a class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag %]', [% BIG_LOO.number %]); return false;">&nbsp;?</a>[% END %]
434
                [% IF marcflavour != 'NORMARC' %]<a class="marcdocs" onclick="PopupMARCFieldDoc('[% innerloo.tag %]', [% BIG_LOO.number %]); return false;">&nbsp;?</a>[% END %]
832
                 </span>
435
                </span>
833
		[% END %]
436
            [% END %]
834
                [% IF ( innerloo.fixedfield ) %]
437
                [% IF ( innerloo.fixedfield ) %]
835
	                <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator1 %]" />
438
                    <input type="text"
836
	                <input tabindex="1" class="indicator flat" type="text" style="display:none;" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator2 %]" />
439
                        tabindex="1"
440
                        class="indicator flat"
441
                        style="display:none;"
442
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
443
                        size="1"
444
                        maxlength="1"
445
                        value="[% innerloo.indicator1 %]" />
446
                    <input type="text"
447
                        tabindex="1"
448
                        class="indicator flat"
449
                        style="display:none;"
450
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
451
                        size="1"
452
                        maxlength="1"
453
                        value="[% innerloo.indicator2 %]" />
837
                [% ELSE %]
454
                [% ELSE %]
838
        	        <input tabindex="1" class="indicator flat" type="text" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator1 %]" />
455
                    <input type="text"
839
        	        <input tabindex="1" class="indicator flat" type="text" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" size="1" maxlength="1" value="[% innerloo.indicator2 %]" />
456
                        tabindex="1"
457
                        class="indicator flat"
458
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
459
                        size="1"
460
                        maxlength="1"
461
                        value="[% innerloo.indicator1 %]" />
462
                    <input type="text"
463
                        tabindex="1"
464
                        class="indicator flat"
465
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
466
                        size="1"
467
                        maxlength="1"
468
                        value="[% innerloo.indicator2 %]" />
840
                [% END %] -
469
                [% END %] -
841
            [% ELSE %]
470
        [% ELSE %]
842
                [% IF ( innerloo.fixedfield ) %]
471
                [% IF ( innerloo.fixedfield ) %]
843
                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator1 %]" />
472
                    <input type="hidden"
844
                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator2 %]" />
473
                        tabindex="1"
474
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
475
                        value="[% innerloo.indicator1 %]" />
476
                    <input type="hidden"
477
                        tabindex="1"
478
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
479
                        value="[% innerloo.indicator2 %]" />
845
                [% ELSE %]
480
                [% ELSE %]
846
                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator1 %]" />
481
                    <input type="hidden"
847
                    <input tabindex="1" type="hidden" name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]" value="[% innerloo.indicator2 %]" />
482
                        tabindex="1"
483
                        name="tag_[% innerloo.tag %]_indicator1_[% innerloo.index %][% innerloo.random %]"
484
                        value="[% innerloo.indicator1 %]" />
485
                    <input type="hidden"
486
                        tabindex="1"
487
                        name="tag_[% innerloo.tag %]_indicator2_[% innerloo.index %][% innerloo.random %]"
488
                        value="[% innerloo.indicator2 %]" />
848
                [% END %]
489
                [% END %]
849
            [% END %]
490
        [% END %]
850
491
851
            [% UNLESS advancedMARCEditor %]
492
            [% UNLESS advancedMARCEditor %]
852
	            <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib %]</a>
493
                <a href="#" tabindex="1" class="expandfield" onclick="ExpandField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Click to Expand this Tag">[% innerloo.tag_lib %]</a>
853
            [% END %]
854
            [% IF ( innerloo.repeatable ) %]
855
                <span class="subfield_controls"><a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Repeat this Tag"><img src="/intranet-tmpl/prog/img/repeat-tag.png" alt="Repeat this Tag" /></a>
856
            [% END %]
494
            [% END %]
857
                <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Delete this Tag"><img src="/intranet-tmpl/prog/img/delete-tag.png" alt="Delete this Tag" /></a></span>
495
                <span class="field_controls">
496
                [% IF ( innerloo.repeatable ) %]
497
                    <a href="#" tabindex="1" class="buttonPlus" onclick="CloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]','[% hide_marc %]','[% advancedMARCEditor %]'); return false;" title="Repeat this Tag">
498
                        <img src="/intranet-tmpl/prog/img/repeat-tag.png" alt="Repeat this Tag" />
499
                    </a>
500
                [% END %]
501
                    <a href="#" tabindex="1" class="buttonMinus" onclick="UnCloneField('tag_[% innerloo.tag %]_[% innerloo.index %][% innerloo.random %]'); return false;" title="Delete this Tag">
502
                        <img src="/intranet-tmpl/prog/img/delete-tag.png" alt="Delete this Tag" />
503
                    </a>
504
                </span>
858
505
859
            
860
        </div>
506
        </div>
861
	
507
862
        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
508
        [% FOREACH subfield_loo IN innerloo.subfield_loop %]
863
            <!--  One line on the marc editor -->
509
            <!--  One line on the marc editor -->
864
            <div class="subfield_line" style="[% subfield_loo.visibility %]; float: left; clear: left; width: 100%;" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]">
510
            <div class="subfield_line" style="[% subfield_loo.visibility %]" id="subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]">
865
            
511
            
866
                [% UNLESS advancedMARCEditor %]
512
                [% UNLESS advancedMARCEditor %]
867
                    [% IF ( subfield_loo.fixedfield ) %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" style="display:none;" class="labelsubfield">
513
                    [% IF ( subfield_loo.fixedfield ) %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" style="display:none;" class="labelsubfield">
868
                    [% ELSE %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" class="labelsubfield">[% END %]
514
                    [% ELSE %]<label for="tag_[% subfield_loo.tag %]_subfield_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" class="labelsubfield">
869
                [% END %] 
515
                    [% END %]
516
                [% END %]
870
                
517
                
871
                [% UNLESS hide_marc %]
518
                [% UNLESS hide_marc %]
872
                <span class="subfieldcode">[% IF ( subfield_loo.fixedfield ) %] 
519
                <span class="subfieldcode">
873
                        <img class="buttonUp" style="display:none;" src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
520
                    [% IF ( subfield_loo.fixedfield ) %]
521
                        <img class="buttonUp" style="display:none;" src="/intranet-tmpl/prog/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
874
                    [% ELSE %]
522
                    [% ELSE %]
875
                        <img class="buttonUp" src="[% themelang %]/../img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
523
                        <img class="buttonUp" src="/intranet-tmpl/prog/img/up.png" onclick="upSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]')" alt="Move Up" title="Move Up" />
876
                    [% END %]
524
                    [% END %]
877
                        <input title="[% subfield_loo.marc_lib_plain %]" style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;" type="text" tabindex="0" name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" value="[% subfield_loo.subfield %]" size="1" maxlength="1" class="flat" />
525
                        <input type="text"
878
 </span>
526
                            title="[% subfield_loo.marc_lib_plain %]"
527
                            style=" [% IF ( subfield_loo.fixedfield ) %]display:none; [% END %]border:0;"
528
                            name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
529
                            value="[% subfield_loo.subfield %]"
530
                            size="1"
531
                            maxlength="1"
532
                            class="flat"
533
                            tabindex="0" />
534
                </span>
879
                [% ELSE %]
535
                [% ELSE %]
880
                    <input type="hidden" name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]" value="[% subfield_loo.subfield %]" />
536
                    <input type="hidden"
881
 </span>
537
                        name="tag_[% subfield_loo.tag %]_code_[% subfield_loo.subfield %]_[% subfield_loo.index %]_[% subfield_loo.index_subfield %]"
538
                        value="[% subfield_loo.subfield %]" />
882
                [% END %]
539
                [% END %]
883
            
540
            
884
                [% UNLESS advancedMARCEditor %]
541
                [% UNLESS advancedMARCEditor %]
Lines 891-912 function unHideSubfield(index,labelindex) { // FIXME :: is it used ? Link Here
891
                
548
                
892
                [% subfield_loo.marc_value %]
549
                [% subfield_loo.marc_value %]
893
                
550
                
551
                <span class="subfield_controls">
894
                [% IF ( subfield_loo.repeatable ) %]
552
                [% IF ( subfield_loo.repeatable ) %]
895
                    <span class="subfield_controls"><a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;"><img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" /></a>
553
                    <a href="#" class="buttonPlus" tabindex="1" onclick="CloneSubfield('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]','[% advancedMARCEditor %]'); return false;">
896
                                        <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;"><img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" /></a></span>
554
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
555
                    </a>
556
                    <a href="#" class="buttonMinus" tabindex="1" onclick="UnCloneField('subfield[% subfield_loo.tag %][% subfield_loo.subfield %][% subfield_loo.random %]'); return false;">
557
                        <img src="/intranet-tmpl/prog/img/delete-subfield.png" alt="Delete" title="Delete this subfield" />
558
                    </a>
897
                [% END %]
559
                [% END %]
898
560
                </span>
899
                
561
                
900
            </div>
562
            </div>
901
            <!-- End of the line -->
563
            <!-- End of the line -->
902
            
903
        [% END %]
564
        [% END %]
904
        </div>
565
905
        [% END %]<!-- tag -->
906
    [% END %]
907
    </div>
566
    </div>
908
[% END %]
567
    [% END %]<!-- if innerloo.tag -->
909
</div>
568
    [% END %]<!-- BIG_LOO.innerloop -->
569
    </div>
570
[% END %]<!-- BIG_LOOP -->
571
572
</div><!-- tabs -->
573
910
<!-- Fields for fast add cataloguing -->
574
<!-- Fields for fast add cataloguing -->
911
<input type="hidden" name="barcode" value="[% barcode %]" />
575
<input type="hidden" name="barcode" value="[% barcode %]" />
912
<input type="hidden" name="branch" value="[% branch %]" />
576
<input type="hidden" name="branch" value="[% branch %]" />
Lines 914-919 function unHideSubfield(index,labelindex) { // FIXME :: is it used ? Link Here
914
<input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
578
<input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
915
<input type="hidden" name="duedatespec" value="[% duedatespec %]" />
579
<input type="hidden" name="duedatespec" value="[% duedatespec %]" />
916
<!-- /End of fast add fields -->
580
<!-- /End of fast add fields -->
581
917
</form>
582
</form>
918
583
919
</div>
584
</div>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt (-73 / +4 lines)
Lines 1-6 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Cataloging &rsaquo; [% title |html %] [% IF ( author ) %] by [% author %][% END %] (Record #[% biblionumber %]) &rsaquo; Items</title>
2
<title>Koha &rsaquo; Cataloging &rsaquo; [% title |html %] [% IF ( author ) %] by [% author %][% END %] (Record #[% biblionumber %]) &rsaquo; Items</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
4
<script type="text/javascript">
5
<script type="text/javascript">
5
//<![CDATA[
6
//<![CDATA[
6
$(document).ready(function(){
7
$(document).ready(function(){
Lines 84-161 function confirm_deletion(biblionumber,itemnumber) { Link Here
84
    }
85
    }
85
}
86
}
86
87
87
function CloneSubfield(index){
88
    var original = document.getElementById(index); //original <div>
89
    var clone = original.cloneNode(true);
90
    var new_key = CreateKey();
91
    var old_id =  original.getAttribute('id');
92
    old_id=old_id.substr(12);
93
    var new_id  = old_id+new_key;
94
95
    // set the attribute for the new 'div' subfields
96
    var inputs     = clone.getElementsByTagName('input');
97
    var selects    = clone.getElementsByTagName('select');
98
    var textareas  = clone.getElementsByTagName('textarea');
99
100
    // input
101
    var id_input = "";
102
    for(var i=0,len=inputs.length; i<len ; i++ ){
103
        id_input = inputs[i].getAttribute('id')+new_key;
104
        inputs[i].setAttribute('id',id_input);
105
        inputs[i].setAttribute('name',inputs[i].getAttribute('name'));
106
    }
107
108
    // select
109
    for(var i=0,len=selects.length; i<len ; i++ ){
110
        id_input = selects[i].getAttribute('id')+new_key;
111
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
112
        selects[i].setAttribute('name',selects[i].getAttribute('name'));
113
    }
114
115
    // textarea
116
    for(var i=0,len=textareas.length; i<len ; i++ ){
117
        id_input = textareas[i].getAttribute('id')+new_key;
118
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
119
        textareas[i].setAttribute('name',textareas[i].getAttribute('name'));
120
    }
121
122
    [% UNLESS ( advancedMARCEditor ) %]
123
    // when cloning a subfield, reset its label too.
124
    var label = clone.getElementsByTagName('label')[0];
125
    label.setAttribute('for',id_input);
126
    [% END %]
127
128
    // setting a new if for the parent div
129
    clone.setAttribute('id',new_id);
130
131
    var CloneButtonPlus;
132
    try {
133
      var spans = clone.getElementsByTagName('span');
134
      if(spans.length){
135
          for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
136
            if(spans[i].getAttribute('class') == 'buttonPlus'){
137
                    CloneButtonPlus = spans[i];
138
                    CloneButtonPlus.setAttribute('onclick',"CloneSubfield('" + new_id + "')");
139
                    var buttonUp = clone.getElementsByTagName('img')[0];
140
                    buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
141
                }
142
            }
143
        }
144
    }
145
    catch(e){
146
        // do nothing if ButtonPlus & CloneButtonPlus don't exist.
147
    }
148
    // insert this line on the page
149
    original.parentNode.insertBefore(clone,original.nextSibling);
150
}
151
152
/**
153
 * This function creates a random number
154
 */
155
function CreateKey(){
156
    return parseInt(Math.random() * 100000);
157
}
158
159
$(document).ready(function() {
88
$(document).ready(function() {
160
    $("#cataloguing_additem_itemlist  tr").hover(
89
    $("#cataloguing_additem_itemlist  tr").hover(
161
        function () {$(this).attr("class","highlight");},
90
        function () {$(this).attr("class","highlight");},
Lines 247-253 $(document).ready(function() { Link Here
247
                <input type="hidden" name="subfield"  value="[% ite.subfield %]" />
176
                <input type="hidden" name="subfield"  value="[% ite.subfield %]" />
248
                <input type="hidden" name="mandatory" value="[% ite.mandatory %]" />
177
                <input type="hidden" name="mandatory" value="[% ite.mandatory %]" />
249
                [% IF ( ite.repeatable ) %]
178
                [% IF ( ite.repeatable ) %]
250
                    <span class="buttonPlus" onclick="CloneSubfield('subfield[% ite.tag %][% ite.subfield %][% ite.random %]')">+</span>
179
                    <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode); return false;">
180
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
181
                    </a>
251
                [% END %]
182
                [% END %]
252
                [% IF ( ite.mandatory ) %] <span class="required">Required</span>[% END %]
183
                [% IF ( ite.mandatory ) %] <span class="required">Required</span>[% END %]
253
            </div></li>
184
            </div></li>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/serials/serials-edit.tt (-70 / +12 lines)
Lines 1-6 Link Here
1
[% INCLUDE 'doc-head-open.inc' %]
1
[% INCLUDE 'doc-head-open.inc' %]
2
<title>Koha &rsaquo; Serials &rsaquo; Serial edition [% bibliotitle %]</title>
2
<title>Koha &rsaquo; Serials &rsaquo; Serial edition [% bibliotitle %]</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
4
<script language="JavaScript" type="text/javascript">
5
<script language="JavaScript" type="text/javascript">
5
//<![CDATA[
6
//<![CDATA[
6
function generateReceive() {
7
function generateReceive() {
Lines 74-143 function changeDate2(adate) { Link Here
74
   var elem = document.getElementById("supexpecteddate");
75
   var elem = document.getElementById("supexpecteddate");
75
    elem.value = adate;
76
    elem.value = adate;
76
}
77
}
77
function CloneSubfield(index){
78
78
    var original = document.getElementById(index); //original <div>
79
    var clone = original.cloneNode(true);
80
    var new_key = CreateKey();
81
    var old_id =  original.getAttribute('id');
82
    old_id=old_id.substr(12);
83
    var new_id  = old_id+new_key;
84
    
85
    // set the attribute for the new 'div' subfields
86
    var inputs     = clone.getElementsByTagName('input');
87
    var selects    = clone.getElementsByTagName('select');
88
    var textareas  = clone.getElementsByTagName('textarea');
89
        
90
    // input
91
    var id_input = "";
92
    for(var i=0,len=inputs.length; i<len ; i++ ){
93
        id_input = inputs[i].getAttribute('id')+new_key;
94
        inputs[i].setAttribute('id',id_input);
95
        inputs[i].setAttribute('name',inputs[i].getAttribute('name'));
96
    }
97
    
98
    // select 
99
    for(var i=0,len=selects.length; i<len ; i++ ){
100
        id_input = selects[i].getAttribute('id')+new_key;
101
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
102
        selects[i].setAttribute('name',selects[i].getAttribute('name'));
103
    }
104
    
105
    // textarea
106
    for(var i=0,len=textareas.length; i<len ; i++ ){
107
        id_input = textareas[i].getAttribute('id')+new_key;
108
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
109
        textareas[i].setAttribute('name',textareas[i].getAttribute('name'));
110
    }
111
    
112
    [% UNLESS ( advancedMARCEditor ) %]
113
    // when cloning a subfield, reset its label too.
114
    var label = clone.getElementsByTagName('label')[0];
115
    label.setAttribute('for',id_input);
116
    [% END %]
117
    
118
    // setting a new if for the parent div
119
    clone.setAttribute('id',new_id);
120
    
121
    var CloneButtonPlus;
122
    try {
123
      var spans = clone.getElementsByTagName('span');
124
      if(spans.length){
125
          for(var i = 0 ,lenspans = spans.length ; i < lenspans ; i++){
126
            if(spans[i].getAttribute('class') == 'buttonPlus'){
127
                    CloneButtonPlus = spans[i];
128
                    CloneButtonPlus.setAttribute('onclick',"CloneSubfield('" + new_id + "')");
129
                    var buttonUp = clone.getElementsByTagName('img')[0];
130
                    buttonUp.setAttribute('onclick',"upSubfield('" + new_id + "')");
131
                }
132
            }
133
        }
134
    }
135
    catch(e){
136
        // do nothig if ButtonPlus & CloneButtonPlus don't exist.
137
    }
138
    // insert this line on the page
139
    original.parentNode.insertBefore(clone,original.nextSibling);
140
}
141
$(document).ready(function() {
79
$(document).ready(function() {
142
	$("form#serials_edit").submit(function() {
80
	$("form#serials_edit").submit(function() {
143
	    var total_errors = 0;
81
	    var total_errors = 0;
Lines 293-299 $(document).ready(function() { Link Here
293
        [% FOREACH item IN serialslis.items %]
231
        [% FOREACH item IN serialslis.items %]
294
        <div id="item[% item.serialid %][% item.countitems %]" class="items">
232
        <div id="item[% item.serialid %][% item.countitems %]" class="items">
295
        <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li>
233
        <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li>
296
               <div class="subfield_line" style="[% iteminformatio.hidden %];" id="subfield[% item.serialid %][% item.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
234
               <div class="subfield_line" style="[% iteminformatio.hidden %]" id="subfield[% item.serialid %][% item.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
297
                              
235
                              
298
                <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
236
                <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
299
                [% iteminformatio.marc_value %]
237
                [% iteminformatio.marc_value %]
Lines 302-309 $(document).ready(function() { Link Here
302
                <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
240
                <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
303
                <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
241
                <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
304
                <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
242
                <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
305
                [% IF ( iteminformatio.ITEM_SUBFIELDS_ARE_NOT_REPEATABLE ) %]
243
                [% IF ( iteminformatio.repeatable ) %]
306
                    <span class="buttonPlus" onclick="CloneSubfield('subfield[% item.serialid %][% item.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]')">+</span>
244
                    <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode); return false;">
245
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
246
                    </a>
307
                [% END %]
247
                [% END %]
308
        
248
        
309
            </div></li>
249
            </div></li>
Lines 396-402 $(document).ready(function() { Link Here
396
          <div class="cataloguing_additem_itemlist">
336
          <div class="cataloguing_additem_itemlist">
397
        <div id="item[% newserialloo.serialid %][% newserialloo.countitems %]" class="items">
337
        <div id="item[% newserialloo.serialid %][% newserialloo.countitems %]" class="items">
398
        <ol>[% FOREACH iteminformatio IN newserialloo.iteminformation %]<li>
338
        <ol>[% FOREACH iteminformatio IN newserialloo.iteminformation %]<li>
399
               <div class="subfield_line" style="[% iteminformatio.hidden %];" id="subfield[% newserialloo.serialid %][% newserialloo.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
339
               <div class="subfield_line" style="[% iteminformatio.hidden %]" id="subfield[% newserialloo.serialid %][% newserialloo.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]">
400
   
340
   
401
                <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
341
                <label>[% iteminformatio.subfield %] - [% IF ( iteminformatio.mandatory ) %]<b>[% END %][% iteminformatio.marc_lib %][% IF ( iteminformatio.mandatory ) %] *</b>[% END %]</label>
402
                [% iteminformatio.marc_value %]
342
                [% iteminformatio.marc_value %]
Lines 405-412 $(document).ready(function() { Link Here
405
                <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
345
                <input type="hidden" name="tag" value="[% iteminformatio.tag %]" />
406
                <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
346
                <input type="hidden" name="subfield" value="[% iteminformatio.subfield %]" />
407
                <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
347
                <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory %]" />
408
                [% IF ( iteminformatio.ITEM_SUBFIELDS_ARE_NOT_REPEATABLE ) %]
348
                [% IF ( iteminformatio.repeatable ) %]
409
                    <span class="buttonPlus" onclick="CloneSubfield('subfield[% newserialloo.serialid %][% newserialloo.countitems %][% iteminformatio.subfield %][% iteminformatio.random %]')">+</span>
349
                    <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode); return false;">
350
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
351
                    </a>
410
                [% END %]
352
                [% END %]
411
        </div>
353
        </div>
412
       </li>[% END %]</ol>
354
       </li>[% END %]</ol>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/batchMod-edit.tt (-1 / +4 lines)
Lines 2-7 Link Here
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item modification</title>
2
<title>Koha &rsaquo; Tools &rsaquo; Batch item modification</title>
3
[% INCLUDE 'doc-head-close.inc' %]
3
[% INCLUDE 'doc-head-close.inc' %]
4
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
4
<script type="text/javascript" src="[% themelang %]/js/background-job-progressbar.js"></script>
5
<script type="text/javascript" src="[% themelang %]/js/cataloging.js"></script>
5
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
6
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/pages/batchMod.css" />
6
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
7
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script>
7
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
8
<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.checkboxes.min.js"></script>
Lines 163-169 $(document).ready(function(){ Link Here
163
                <input type="hidden" name="subfield"       value="[% ite.subfield %]" />
164
                <input type="hidden" name="subfield"       value="[% ite.subfield %]" />
164
                <input type="hidden" name="mandatory"       value="[% ite.mandatory %]" />
165
                <input type="hidden" name="mandatory"       value="[% ite.mandatory %]" />
165
                [% IF ( ite.repeatable ) %]
166
                [% IF ( ite.repeatable ) %]
166
                    <span class="buttonPlus" onclick="CloneSubfield('subfield[% ite.tag %][% ite.subfield %][% ite.random %]')">+</span>
167
                    <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode); return false;">
168
                        <img src="/intranet-tmpl/prog/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
169
                    </a>
167
                [% END %]
170
                [% END %]
168
                <span class="hint" id="hint[% ite.tag %][% ite.subfield %][% ite.random %]"></span>
171
                <span class="hint" id="hint[% ite.tag %][% ite.subfield %][% ite.random %]"></span>
169
            </div></li>
172
            </div></li>
(-)a/tools/batchMod.pl (-4 / +3 lines)
Lines 394-407 foreach my $tag (sort keys %{$tagslib}) { Link Here
394
			my $temp;
394
			my $temp;
395
            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
395
            my $extended_param = plugin_parameters( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
396
            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
396
            my ( $function_name, $javascript ) = plugin_javascript( $dbh, $temp, $tagslib, $subfield_data{id}, \@loop_data );
397
            $subfield_data{marc_value} = qq[<input $attributes
397
            $subfield_data{marc_value} = qq[<input type="text" $attributes
398
                onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
398
                onfocus="Focus$function_name($subfield_data{random}, '$subfield_data{id}');"
399
                 onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
399
                 onblur=" Blur$function_name($subfield_data{random}, '$subfield_data{id}');" />
400
                <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
400
                <a href="#" class="buttonDot" onclick="Clic$function_name('$subfield_data{id}'); return false;" title="Tag Editor">...</a>
401
                $javascript];
401
                $javascript];
402
        } else {
402
        } else {
403
            warn "Plugin Failed: $plugin";
403
            warn "Plugin Failed: $plugin";
404
            $subfield_data{marc_value} = "<input $attributes />"; # supply default input form
404
            $subfield_data{marc_value} = "<input type=\"text\" $attributes />"; # supply default input form
405
        }
405
        }
406
    }
406
    }
407
    elsif ( $tag eq '' ) {       # it's an hidden field
407
    elsif ( $tag eq '' ) {       # it's an hidden field
Lines 420-426 foreach my $tag (sort keys %{$tagslib}) { Link Here
420
        $subfield_data{marc_value} = "<textarea $attributes_no_value>$value</textarea>\n";
420
        $subfield_data{marc_value} = "<textarea $attributes_no_value>$value</textarea>\n";
421
    } else {
421
    } else {
422
        # it's a standard field
422
        # it's a standard field
423
         $subfield_data{marc_value} = "<input $attributes />";
423
         $subfield_data{marc_value} = "<input type=\"text\" $attributes />";
424
    }
424
    }
425
#   $subfield_data{marc_value}="<input type=\"text\" name=\"field_value\">";
425
#   $subfield_data{marc_value}="<input type=\"text\" name=\"field_value\">";
426
    push (@loop_data, \%subfield_data);
426
    push (@loop_data, \%subfield_data);
427
- 

Return to bug 7455