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

(-)a/koha-tmpl/intranet-tmpl/prog/js/cataloging.js (-73 / +28 lines)
Lines 1-3 Link Here
1
/* exported openAuth ExpandField CloneField CloneSubfield UnCloneField CloneItemSubfield CheckMandatorySubfields */
2
1
/*
3
/*
2
 * Unified file for catalogue edition
4
 * Unified file for catalogue edition
3
 */
5
 */
Lines 52-58 function openAuth(tagsubfieldid,authtype,source) { Link Here
52
        }
54
        }
53
    }
55
    }
54
    mainstring = mainstring.join(' ');
56
    mainstring = mainstring.join(' ');
55
    newin=window.open("../authorities/auth_finder.pl?source="+source+"&authtypecode="+authtype+"&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
57
    window.open("../authorities/auth_finder.pl?source="+source+"&authtypecode="+authtype+"&index="+tagsubfieldid+"&value_mainstr="+encodeURI(mainmainstring)+"&value_main="+encodeURI(mainstring), "_blank",'width=700,height=550,toolbar=false,scrollbars=yes');
56
}
58
}
57
59
58
function ExpandField(index) {
60
function ExpandField(index) {
Lines 120-126 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
120
    }
122
    }
121
123
122
    // settings all subfields
124
    // settings all subfields
123
    for(var i=0,divslen = divs.length ; i<divslen ; i++){      // foreach div/li
125
    var divslen = divs.length;
126
    for( i=0; i < divslen ; i++ ){      // foreach div/li
124
        if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
127
        if(divs[i].getAttribute("id").match(/^subfield/)){  // if it s a subfield
125
128
126
            // set the attribute for the new 'li' subfields
129
            // set the attribute for the new 'li' subfields
Lines 128-133 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
128
131
129
            var inputs   = divs[i].getElementsByTagName('input');
132
            var inputs   = divs[i].getElementsByTagName('input');
130
            var id_input = "";
133
            var id_input = "";
134
            var olddiv;
135
            var oldcontrol;
131
136
132
            for( j = 0 ; j < inputs.length ; j++ ) {
137
            for( j = 0 ; j < inputs.length ; j++ ) {
133
                if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
138
                if(inputs[j].getAttribute("id") && inputs[j].getAttribute("id").match(/^tag_/) ){
Lines 143-149 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
143
148
144
            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
149
            inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
145
            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
150
            inputs[0].setAttribute('name',inputs[0].getAttribute('name')+new_key);
146
            var id_input;
151
147
            try {
152
            try {
148
                id_input = inputs[1].getAttribute('id')+new_key;
153
                id_input = inputs[1].getAttribute('id')+new_key;
149
                inputs[1].setAttribute('id',id_input);
154
                inputs[1].setAttribute('id',id_input);
Lines 162-169 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
162
                }
167
                }
163
            }
168
            }
164
            if( $(inputs[1]).hasClass('framework_plugin') ) {
169
            if( $(inputs[1]).hasClass('framework_plugin') ) {
165
                var olddiv= original.getElementsByTagName('li')[i];
170
                olddiv= original.getElementsByTagName('li')[i];
166
                var oldcontrol= olddiv.getElementsByTagName('input')[1];
171
                oldcontrol= olddiv.getElementsByTagName('input')[1];
167
                AddEventHandlers( oldcontrol,inputs[1],id_input );
172
                AddEventHandlers( oldcontrol,inputs[1],id_input );
168
            }
173
            }
169
174
Lines 203-223 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
203
                        // 2 possibilities :
208
                        // 2 possibilities :
204
                        try{
209
                        try{
205
                            if( $(buttonDot).hasClass('framework_plugin') ) {
210
                            if( $(buttonDot).hasClass('framework_plugin') ) {
206
                                var olddiv= original.getElementsByTagName('li')[i];
211
                                olddiv= original.getElementsByTagName('li')[i];
207
                                var oldcontrol= olddiv.getElementsByTagName('a')[0];
212
                                oldcontrol= olddiv.getElementsByTagName('a')[0];
208
                                AddEventHandlers(oldcontrol,buttonDot,id_input);
213
                                AddEventHandlers(oldcontrol,buttonDot,id_input);
209
                            } else {
210
                                if(buttonDotOnClick.match('Dopop')) {  // -2- It's a auth value
211
                                    var re1 = /&index=.*',/;
212
                                    var re2 = /,.*\)/;
213
214
                                    buttonDotOnClick = buttonDotOnClick.replace(re1,"&index="+inputs[1].getAttribute('id')+"',");
215
                                    buttonDotOnClick = buttonDotOnClick.replace(re2,",'"+inputs[1].getAttribute('id')+"')");
216
217
                                    if(buttonDotOnClick){
218
                                        buttonDot.setAttribute('onclick',buttonDotOnClick);
219
                                    }
220
                                }
221
                            }
214
                            }
222
                            try {
215
                            try {
223
                                // do not copy the script section.
216
                                // do not copy the script section.
Lines 226-232 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
226
                            } catch(e) {
219
                            } catch(e) {
227
                                // do nothing if there is no script
220
                                // do nothing if there is no script
228
                            }
221
                            }
229
                        }catch(e){}
222
                        } catch(e){
223
                            //
224
                        }
230
                    }
225
                    }
231
                }
226
                }
232
            }
227
            }
Lines 237-250 function CloneField(index, hideMarc, advancedMARCEditor) { Link Here
237
                // setting a new id for the indicator div
232
                // setting a new id for the indicator div
238
                divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
233
                divs[i].setAttribute('id',divs[i].getAttribute('id')+new_key);
239
234
240
                var inputs = divs[i].getElementsByTagName('input');
235
                inputs = divs[i].getElementsByTagName('input');
241
                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
236
                inputs[0].setAttribute('id',inputs[0].getAttribute('id')+new_key);
242
                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
237
                inputs[1].setAttribute('id',inputs[1].getAttribute('id')+new_key);
243
238
244
                var CloneButtonPlus;
239
                var CloneButtonPlus;
245
                try {
240
                try {
246
                    var anchors = divs[i].getElementsByTagName('a');
241
                    anchors = divs[i].getElementsByTagName('a');
247
                    for (var j = 0; j < anchors.length; j++) {
242
                    for ( j = 0; j < anchors.length; j++) {
248
                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
243
                        if (anchors[j].getAttribute('class') == 'buttonPlus') {
249
                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "','" + hideMarc + "','" + advancedMARCEditor + "'); return false;");
244
                            anchors[j].setAttribute('onclick',"CloneField('" + new_id + "','" + hideMarc + "','" + advancedMARCEditor + "'); return false;");
250
                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
245
                        } else if (anchors[j].getAttribute('class') == 'buttonMinus') {
Lines 287-292 function CloneSubfield(index, advancedMARCEditor){ Link Here
287
    var selects    = clone.getElementsByTagName('select');
282
    var selects    = clone.getElementsByTagName('select');
288
    var textareas  = clone.getElementsByTagName('textarea');
283
    var textareas  = clone.getElementsByTagName('textarea');
289
    var linkid;
284
    var linkid;
285
    var oldcontrol;
290
286
291
    // input
287
    // input
292
    var id_input = "";
288
    var id_input = "";
Lines 302-313 function CloneSubfield(index, advancedMARCEditor){ Link Here
302
298
303
    // Plugin input
299
    // Plugin input
304
    if( $(inputs[1]).hasClass('framework_plugin') ) {
300
    if( $(inputs[1]).hasClass('framework_plugin') ) {
305
        var oldcontrol= original.getElementsByTagName('input')[1];
301
        oldcontrol= original.getElementsByTagName('input')[1];
306
        AddEventHandlers( oldcontrol, inputs[1], linkid );
302
        AddEventHandlers( oldcontrol, inputs[1], linkid );
307
    }
303
    }
308
304
309
    // select
305
    // select
310
    for(var i=0,len=selects.length; i<len ; i++ ){
306
    for(i=0,len=selects.length; i<len ; i++ ){
311
        id_input = selects[i].getAttribute('id')+new_key;
307
        id_input = selects[i].getAttribute('id')+new_key;
312
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
308
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
313
        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
309
        selects[i].setAttribute('name',selects[i].getAttribute('name')+new_key);
Lines 315-321 function CloneSubfield(index, advancedMARCEditor){ Link Here
315
    }
311
    }
316
312
317
    // textarea
313
    // textarea
318
    for(var i=0,len=textareas.length; i<len ; i++ ){
314
    for( i=0,len=textareas.length; i<len ; i++ ){
319
        id_input = textareas[i].getAttribute('id')+new_key;
315
        id_input = textareas[i].getAttribute('id')+new_key;
320
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
316
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
321
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
317
        textareas[i].setAttribute('name',textareas[i].getAttribute('name')+new_key);
Lines 328-334 function CloneSubfield(index, advancedMARCEditor){ Link Here
328
    // Handle click event on buttonDot for plugin
324
    // Handle click event on buttonDot for plugin
329
    var links  = clone.getElementsByTagName('a');
325
    var links  = clone.getElementsByTagName('a');
330
    if( $(links[0]).hasClass('framework_plugin') ) {
326
    if( $(links[0]).hasClass('framework_plugin') ) {
331
        var oldcontrol= original.getElementsByTagName('a')[0];
327
        oldcontrol= original.getElementsByTagName('a')[0];
332
        AddEventHandlers( oldcontrol, links[0], linkid );
328
        AddEventHandlers( oldcontrol, links[0], linkid );
333
    }
329
    }
334
330
Lines 345-351 function CloneSubfield(index, advancedMARCEditor){ Link Here
345
    try {
341
    try {
346
        var anchors = clone.getElementsByTagName('a');
342
        var anchors = clone.getElementsByTagName('a');
347
        if(anchors.length){
343
        if(anchors.length){
348
            for(var i = 0 ,lenanchors = anchors.length ; i < lenanchors ; i++){
344
            for( i = 0 ,len = anchors.length ; i < len ; i++){
349
                if(anchors[i].getAttribute('class') == 'buttonPlus'){
345
                if(anchors[i].getAttribute('class') == 'buttonPlus'){
350
                    anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "','" + advancedMARCEditor + "'); return false;");
346
                    anchors[i].setAttribute('onclick',"CloneSubfield('" + new_id + "','" + advancedMARCEditor + "'); return false;");
351
                } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
347
                } else if (anchors[i].getAttribute('class') == 'buttonMinus') {
Lines 385-391 function AddEventHandlers (oldcontrol, newcontrol, newinputid ) { Link Here
385
    }
381
    }
386
}
382
}
387
383
388
 /**
384
/**
389
 * This function removes or clears unwanted subfields
385
 * This function removes or clears unwanted subfields
390
 */
386
 */
391
function UnCloneField(index) {
387
function UnCloneField(index) {
Lines 439-484 function CreateKey(){ Link Here
439
    return parseInt(Math.random() * 100000);
435
    return parseInt(Math.random() * 100000);
440
}
436
}
441
437
442
/**
443
 * This function allows to move a subfield up by clickink on the 'up' button .
444
 */
445
function upSubfield(index) {
446
    try{
447
        var line = document.getElementById(index); // get the line where the user has clicked.
448
    } catch(e) {
449
        return; // this line doesn't exist...
450
    }
451
    var tag = line.parentNode; // get the dad of this line. (should be "<div id='tag_...'>")
452
453
    // getting all visible subfields for this tag
454
    var subfields = tag.querySelectorAll("div.subfield_line:not( [style*='display:none;'] )");
455
    var subfieldsLength = subfields.length;
456
457
    if(subfieldsLength<=1) return; // nothing to do if there is just one subfield.
458
459
    // among all subfields
460
    for(var i=0;i<subfieldsLength;i++){
461
        if(subfields[i].getAttribute('id') == index){ //looking for the subfield which is clicked :
462
            if(i==0){ // if the clicked subfield is on the top
463
                tag.appendChild(subfields[0]);
464
                return;
465
            } else {
466
                var lineAbove = subfields[i-1];
467
                tag.insertBefore(line,lineAbove);
468
                return;
469
            }
470
        }
471
    }
472
}
473
474
// FIXME :: is it used ?
475
function unHideSubfield(index,labelindex) {
476
    subfield = document.getElementById(index);
477
    subfield.style.display = 'block';
478
    label = document.getElementById(labelindex);
479
    label.style.display='none';
480
}
481
482
/* Functions developed for additem.tt */
438
/* Functions developed for additem.tt */
483
439
484
/**
440
/**
Lines 505-517 function CloneItemSubfield(original){ Link Here
505
    }
461
    }
506
462
507
    // select
463
    // select
508
    for(var i=0,len=selects.length; i<len ; i++ ){
464
    for( i=0,len=selects.length; i<len ; i++ ){
509
        id_input = selects[i].getAttribute('id')+new_key;
465
        id_input = selects[i].getAttribute('id')+new_key;
510
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
466
        selects[i].setAttribute('id',selects[i].getAttribute('id')+new_key);
511
    }
467
    }
512
468
513
    // textarea
469
    // textarea
514
    for(var i=0,len=textareas.length; i<len ; i++ ){
470
    for( i=0,len=textareas.length; i<len ; i++ ){
515
        id_input = textareas[i].getAttribute('id')+new_key;
471
        id_input = textareas[i].getAttribute('id')+new_key;
516
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
472
        textareas[i].setAttribute('id',textareas[i].getAttribute('id')+new_key);
517
    }
473
    }
Lines 537-543 function CloneItemSubfield(original){ Link Here
537
 */
493
 */
538
function CheckMandatorySubfields(p){
494
function CheckMandatorySubfields(p){
539
    var total = 0;
495
    var total = 0;
540
    $(p).find(".subfield_line input[name='mandatory'][value='1']").each(function(i){
496
    $(p).find(".subfield_line input[name='mandatory'][value='1']").each(function(){
541
        var editor = $(this).siblings("[name='field_value']");
497
        var editor = $(this).siblings("[name='field_value']");
542
        if (!editor.val()) {
498
        if (!editor.val()) {
543
            editor.addClass("missing");
499
            editor.addClass("missing");
544
- 

Return to bug 15850