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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt (-139 / +59 lines)
Lines 284-325 Link Here
284
    }
284
    }
285
285
286
    /**
286
    /**
287
     * check if mandatory subfields are written
287
     * check if mandatory/important subfields are written
288
     * @param mandatory true to check for mandatories, false for importants
288
     */
289
     */
289
    function AreMandatoriesNotOk(){
290
    function AreFieldsNotOk (mandatory = true) {
290
        var mandatories = new Array();
291
        var fields = new Array();
291
        var mandatoriesfields = new Array();
292
        var subfields = new Array();
292
        var tab = new Array();
293
        var tab = new Array();
293
        var label = new Array();
294
        var label = new Array();
294
        var flag=0;
295
        var flag=0;
295
        var tabflag= new Array();
296
        var tabflag= new Array();
296
        [% FOREACH BIG_LOO IN BIG_LOOP %]
297
        var StrAlert = "";
297
            [% FOREACH innerloo IN BIG_LOO.innerloop %]
298
        var notFilledClass = "subfield_not_filled";
298
                [% IF ( innerloo.mandatory ) %]
299
299
                    mandatoriesfields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
300
        if (mandatory) {
301
            [% FOREACH BIG_LOO IN BIG_LOOP %]
302
                [% FOREACH innerloo IN BIG_LOO.innerloop %]
303
                    [% IF ( innerloo.mandatory ) %]
304
                        fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
305
                    [% END %]
306
                    [% FOREACH subfield_loo IN innerloo.subfield_loop %]
307
                        [% IF ( subfield_loo.mandatory ) %]subfields.push("[% subfield_loo.id | html %]");
308
                            tab.push("[% BIG_LOO.number | html %]");
309
                            label.push("[% subfield_loo.marc_lib | $raw %]");
310
                        [% END %]
311
                    [% END %]
300
                [% END %]
312
                [% END %]
301
                [% FOREACH subfield_loo IN innerloo.subfield_loop %]
313
            [% END %]
302
                    [% IF ( subfield_loo.mandatory ) %]mandatories.push("[% subfield_loo.id | html %]");
314
            StrAlert = _("Can't save this record because the following field aren't filled:");
303
                        tab.push("[% BIG_LOO.number | html %]");
315
        } else {
304
                        label.push("[% subfield_loo.marc_lib | $raw %]");
316
            [% FOREACH BIG_LOO IN BIG_LOOP %]
317
                [% FOREACH innerloo IN BIG_LOO.innerloop %]
318
                    [% IF ( innerloo.important ) %]
319
                    fields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
320
                    [% END %]
321
                    [% FOREACH subfield_loo IN innerloo.subfield_loop %]
322
                        [% IF ( subfield_loo.important ) %]subfields.push("[% subfield_loo.id | html %]");
323
                            tab.push("[% BIG_LOO.number | html %]");
324
                            label.push("[% subfield_loo.marc_lib | $raw %]");
325
                        [% END %]
305
                    [% END %]
326
                    [% END %]
306
                [% END %]
327
                [% END %]
307
            [% END %]
328
            [% END %]
308
        [% END %]
329
            StrAlert = _("A few important fields are not filled:");
309
        var StrAlert = _("Can't save this record because the following field aren't filled:");
330
            notFilledClass = "important_subfield_not_filled";
331
        }
332
310
        StrAlert += "\n\n";
333
        StrAlert += "\n\n";
311
        for(var i=0,len=mandatories.length; i<len ; i++){
334
        for(var i=0,len=subfields.length; i<len ; i++){
312
            var tag=mandatories[i].substr(4,3);
335
            var tag=subfields[i].substr(4,3);
313
            var subfield=mandatories[i].substr(17,1);
336
            var subfield=subfields[i].substr(17,1);
314
            var tagnumber=mandatories[i].substr(19,mandatories[i].lastIndexOf("_")-19);
337
            var tagnumber=subfields[i].substr(19,subfields[i].lastIndexOf("_")-19);
315
            if (tabflag[tag+subfield+tagnumber] ==  null) {
338
            if (tabflag[tag+subfield+tagnumber] ==  null) {
316
            tabflag[tag+subfield+tagnumber]=new Array();
339
                tabflag[tag+subfield+tagnumber]=new Array();
317
                tabflag[tag+subfield+tagnumber][0]=0;
340
                tabflag[tag+subfield+tagnumber][0]=0;
318
        }
341
            }
319
            if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(mandatories[i]) != null && ! document.getElementById(mandatories[i]).value || document.getElementById(mandatories[i]) == null)){
342
            if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(subfields[i]) != null && ! document.getElementById(subfields[i]).value || document.getElementById(subfields[i]) == null)){
320
                tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
343
                tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
321
                document.getElementById(mandatories[i]).setAttribute('class','input_marceditor noEnterSubmit subfield_not_filled');
344
                document.getElementById(subfields[i]).setAttribute('class','input_marceditor noEnterSubmit ' + notFilledClass);
322
                $('#' + mandatories[i]).focus();
345
                $('#' + subfields[i]).focus();
323
                tabflag[tag+subfield+tagnumber][1]=label[i];
346
                tabflag[tag+subfield+tagnumber][1]=label[i];
324
                tabflag[tag+subfield+tagnumber][2]=tab[i];
347
                tabflag[tag+subfield+tagnumber][2]=tab[i];
325
            } else {
348
            } else {
Lines 336-345 Link Here
336
            }
359
            }
337
        }
360
        }
338
361
339
        /* Check for mandatories field(not subfields) */
362
        /* Check for mandatories/importants field(not subfields) */
340
        for(var i=0,len=mandatoriesfields.length; i<len; i++){
363
        for(var i=0,len=fields.length; i<len; i++){
341
            isempty  = true;
364
            isempty  = true;
342
            arr      = mandatoriesfields[i];
365
            arr      = fields[i];
343
            divid    = "tag_" + arr[0] + "_" + arr[1];
366
            divid    = "tag_" + arr[0] + "_" + arr[1];
344
            varegexp = new RegExp("^tag_" + arr[0] + "_code_");
367
            varegexp = new RegExp("^tag_" + arr[0] + "_code_");
345
368
Lines 380-386 Link Here
380
403
381
            if(isempty){
404
            if(isempty){
382
                flag = 1;
405
                flag = 1;
383
                    StrAlert += "\t* " + _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]) + "\n";
406
                StrAlert += "\t* ";
407
                if (mandatory) {
408
                    StrAlert += _("Field %s is mandatory, at least one of its subfields must be filled.").format(arr[0]);
409
                } else {
410
                    StrAlert += _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]);
411
                }
412
                StrAlert += "\n";
384
            }
413
            }
385
414
386
        }
415
        }
Lines 397-406 Link Here
397
     *
426
     *
398
     */
427
     */
399
    function Check(){
428
    function Check(){
400
        var StrAlert = AreMandatoriesNotOk();
429
        var StrAlert = AreFieldsNotOk();
401
        if( ! StrAlert ){
430
        if( ! StrAlert ){
402
            var StrWarning = AreImportantsNotOk();
431
            var StrWarning = AreFieldsNotOk(false);
403
            if (StrWarning){
432
            if (StrWarning){
433
                StrWarning += "\n" + _("Are you sure you want to save?");
404
                var r=confirm(StrWarning);
434
                var r=confirm(StrWarning);
405
                if (! r){
435
                if (! r){
406
                    return false;
436
                    return false;
Lines 415-529 Link Here
415
    }
445
    }
416
446
417
    /**
447
    /**
418
     * check if important subfields are written
419
     */
420
    function AreImportantsNotOk(){
421
        var importants = new Array();
422
        var importantsfields = new Array();
423
        var tab = new Array();
424
        var label = new Array();
425
        var flag=0;
426
        var tabflag= new Array();
427
        [% FOREACH BIG_LOO IN BIG_LOOP %]
428
            [% FOREACH innerloo IN BIG_LOO.innerloop %]
429
                [% IF ( innerloo.important ) %]
430
                importantsfields.push(new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]"));
431
                [% END %]
432
                [% FOREACH subfield_loo IN innerloo.subfield_loop %]
433
                    [% IF ( subfield_loo.important ) %]importants.push("[% subfield_loo.id | html %]");
434
                        tab.push("[% BIG_LOO.number | html %]");
435
                        label.push("[% subfield_loo.marc_lib | $raw %]");
436
                    [% END %]
437
                [% END %]
438
            [% END %]
439
        [% END %]
440
        var StrWarning = _("A few important fields are not filled:");
441
        StrWarning += "\n\n";
442
        for(var i=0,len=importants.length; i<len ; i++){
443
            var tag=importants[i].substr(4,3);
444
            var subfield=importants[i].substr(17,1);
445
            var tagnumber=importants[i].substr(19,importants[i].lastIndexOf("_")-19);
446
            if (tabflag[tag+subfield+tagnumber] ==  null) {
447
                tabflag[tag+subfield+tagnumber]=new Array();
448
                tabflag[tag+subfield+tagnumber][0]=0;
449
            }
450
            if( tabflag[tag+subfield+tagnumber][0] != 1 && (document.getElementById(importants[i]) != null && ! document.getElementById(importants[i]).value || document.getElementById(importants[i]) == null)){
451
                tabflag[tag+subfield+tagnumber][0] = 0 + tabflag[tag+subfield+tagnumber] ;
452
                document.getElementById(importants[i]).setAttribute('class','input_marceditor noEnterSubmit important_subfield_not_filled');
453
                $('#' + importants[i]).focus();
454
                tabflag[tag+subfield+tagnumber][1]=label[i];
455
                tabflag[tag+subfield+tagnumber][2]=tab[i];
456
            } else {
457
                tabflag[tag+subfield+tagnumber][0] = 1;
458
            }
459
        }
460
        for (var tagsubfieldid in tabflag){
461
            if (tabflag[tagsubfieldid][0]==0){
462
                var tag=tagsubfieldid.substr(0,3);
463
                var subfield=tagsubfieldid.substr(3,1);
464
                StrWarning += "\t* "+_("tag %s subfield %s %s in tab %s").format(tag, subfield, tabflag[tagsubfieldid][1], tabflag[tagsubfieldid][2]) + "\n";
465
                //StrAlert += "\t* "+label[i]+_(" in tab ")+tab[i]+"\n";
466
                flag=1;
467
            }
468
        }
469
470
        /* Check for importants field(not subfields) */
471
        for(var i=0,len=importantsfields.length; i<len; i++){
472
            isempty  = true;
473
            arr      = importantsfields[i];
474
            divid    = "tag_" + arr[0] + "_" + arr[1];
475
            varegexp = new RegExp("^tag_" + arr[0] + "_code_");
476
477
            if(parseInt(arr[0]) >= 10){
478
                elem = document.getElementById(divid);
479
                eleminputs = elem.getElementsByTagName('input');
480
                for(var j=0,len2=eleminputs.length; j<len2; j++){
481
482
                    if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){
483
                        inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]);
484
485
                        for( var k=0; k<len2; k++){
486
                            if(eleminputs[k].id.match(inputregexp) && eleminputs[k].value){
487
                                isempty = false
488
                            }
489
                        }
490
491
                        elemselect = elem.getElementsByTagName('select');
492
                        for( var k=0; k<elemselect.length; k++){
493
                            if(elemselect[k].id.match(inputregexp) && elemselect[k].value){
494
                                isempty = false
495
                            }
496
                        }
497
                    }
498
                }
499
500
                elemtextareas = elem.getElementsByTagName('textarea');
501
                for(var j=0,len2=elemtextareas.length; j<len2; j++){
502
                    // this bit assumes that the only textareas in this context would be for subfields
503
                    if (elemtextareas[j].value) {
504
                        isempty = false;
505
                    }
506
                }
507
            } else {
508
                isempty = false;
509
            }
510
511
            if(isempty){
512
                flag = 1;
513
                StrWarning += "\t* " + _("Field %s is important, at least one of its subfields must be filled.").format(arr[0]) + "\n";
514
            }
515
        }
516
517
        StrWarning += "\n" + _("Are you sure you want to save?");
518
519
        if(flag){
520
            return StrWarning;
521
        } else {
522
            return flag;
523
        }
524
    }
525
526
    /**
527
     * check if z3950 mandatories are set or not
448
     * check if z3950 mandatories are set or not
528
     */
449
     */
529
    function GetZ3950Terms(){
450
    function GetZ3950Terms(){
530
- 

Return to bug 8643