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

(-)a/C4/Biblio.pm (-30 / +51 lines)
Lines 116-121 use Koha::SearchEngine::Indexer; Link Here
116
use Koha::SimpleMARC;
116
use Koha::SimpleMARC;
117
use Koha::Libraries;
117
use Koha::Libraries;
118
use Koha::Util::MARC;
118
use Koha::Util::MARC;
119
use Koha::Util::Misc;
119
120
120
=head1 NAME
121
=head1 NAME
121
122
Lines 377-385 Used when the indexing schedulling will be handled by the caller Link Here
377
378
378
Set as the record source when saving the record.
379
Set as the record source when saving the record.
379
380
381
=item C<original_digest>
382
383
Digest of the original version of the modified record.
384
380
=back
385
=back
381
386
382
Returns 1 on success 0 on failure
387
Returns 1 on success, -1 in case of modification collision, 0 on other failure.
383
388
384
=cut
389
=cut
385
390
Lines 401-420 sub ModBiblio { Link Here
401
        return 0;
406
        return 0;
402
    }
407
    }
403
408
404
    if ( C4::Context->preference("CataloguingLog") ) {
405
        my $biblio = Koha::Biblios->find($biblionumber);
406
        my $record;
407
        my $decoding_error = "";
408
        eval { $record = $biblio->metadata->record };
409
        if ($@) {
410
            my $exception = $@;
411
            $exception->rethrow unless ( $exception->isa('Koha::Exceptions::Metadata::Invalid') );
412
            $decoding_error = "There was an error with this bibliographic record: " . $exception;
413
            $record         = $biblio->metadata->record_strip_nonxml;
414
        }
415
        logaction( "CATALOGUING", "MODIFY", $biblionumber, "biblio $decoding_error BEFORE=>" . $record->as_formatted );
416
    }
417
418
    if ( !$options->{disable_autolink} && C4::Context->preference('AutoLinkBiblios') ) {
409
    if ( !$options->{disable_autolink} && C4::Context->preference('AutoLinkBiblios') ) {
419
        BiblioAutoLink( $record, $frameworkcode );
410
        BiblioAutoLink( $record, $frameworkcode );
420
    }
411
    }
Lines 465-491 sub ModBiblio { Link Here
465
    # update MARC subfield that stores biblioitems.cn_sort
456
    # update MARC subfield that stores biblioitems.cn_sort
466
    _koha_marc_update_biblioitem_cn_sort( $record, $oldbiblio, $frameworkcode );
457
    _koha_marc_update_biblioitem_cn_sort( $record, $oldbiblio, $frameworkcode );
467
458
468
    # update the MARC record (that now contains biblio and items) with the new record data
459
    my $schema = Koha::Database->schema;
469
    ModBiblioMarc( $record, $biblionumber, $mod_biblio_marc_options );
460
    my $result = 0;
461
    $schema->txn_do(
462
        sub {
470
463
471
    # modify the other koha tables
464
            my $biblio = Koha::Biblios->find($biblionumber);
472
    _koha_modify_biblio( $dbh, $oldbiblio, $frameworkcode );
465
            my $orig_rec;
473
    _koha_modify_biblioitem_nonmarc( $dbh, $oldbiblio );
466
            my $decoding_error = "";
467
            eval { $orig_rec = $biblio->metadata->record };
468
            if ($@) {
469
                my $exception = $@;
470
                $exception->rethrow unless ( $exception->isa('Koha::Exceptions::Metadata::Invalid') );
471
                $decoding_error = "There was an error with this bibliographic record: " . $exception;
472
                $orig_rec       = $biblio->metadata->record_strip_nonxml;
473
            }
474
            if ( !$options->{original_digest} || $options->{original_digest} eq digest($orig_rec) ) {
474
475
475
    _after_biblio_action_hooks({ action => 'modify', biblio_id => $biblionumber });
476
                if ( C4::Context->preference("CataloguingLog") ) {
477
                    logaction(
478
                        "CATALOGUING", "MODIFY", $biblionumber,
479
                        "biblio $decoding_error BEFORE=>" . $orig_rec->as_formatted
480
                    );
481
                }
476
482
477
    # update OAI-PMH sets
483
                # update the MARC record (that now contains biblio and items) with the new record data
478
    if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) {
484
                ModBiblioMarc( $record, $biblionumber, $mod_biblio_marc_options );
479
        C4::OAI::Sets::UpdateOAISetsBiblio($biblionumber, $record);
480
    }
481
485
482
    Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue(
486
                # modify the other koha tables
483
        {
487
                _koha_modify_biblio( $dbh, $oldbiblio, $frameworkcode );
484
            biblio_ids => [ $biblionumber ]
488
                _koha_modify_biblioitem_nonmarc( $dbh, $oldbiblio );
489
490
                _after_biblio_action_hooks( { action => 'modify', biblio_id => $biblionumber } );
491
492
                # update OAI-PMH sets
493
                if ( C4::Context->preference("OAI-PMH:AutoUpdateSets") ) {
494
                    C4::OAI::Sets::UpdateOAISetsBiblio( $biblionumber, $record );
495
                }
496
497
                Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue->new->enqueue( { biblio_ids => [$biblionumber] } )
498
                    unless $options->{skip_holds_queue}
499
                    or !C4::Context->preference('RealTimeHoldsQueue');
500
501
                $result = 1;
502
503
            } else {
504
                $result = -1;
505
            }
485
        }
506
        }
486
    ) unless $options->{skip_holds_queue} or !C4::Context->preference('RealTimeHoldsQueue');
507
    );
487
508
488
    return 1;
509
    return $result;
489
}
510
}
490
511
491
=head2 _strip_item_fields
512
=head2 _strip_item_fields
(-)a/cataloguing/addbiblio.pl (-6 / +77 lines)
Lines 57-62 use Koha::Libraries; Link Here
57
use Koha::BiblioFrameworks;
57
use Koha::BiblioFrameworks;
58
use Koha::Patrons;
58
use Koha::Patrons;
59
use Koha::UI::Form::Builder::Biblio;
59
use Koha::UI::Form::Builder::Biblio;
60
use Koha::Util::Misc;
60
61
61
use MARC::File::USMARC;
62
use MARC::File::USMARC;
62
use MARC::File::XML;
63
use MARC::File::XML;
Lines 603-608 my ( Link Here
603
	$biblioitemnumber
604
	$biblioitemnumber
604
);
605
);
605
606
607
my $digest;
606
if ( $biblio && !$breedingid ) {
608
if ( $biblio && !$breedingid ) {
607
    eval { $record = $biblio->metadata->record };
609
    eval { $record = $biblio->metadata->record };
608
    if ($@) {
610
    if ($@) {
Lines 611-616 if ( $biblio && !$breedingid ) { Link Here
611
        $record = $biblio->metadata->record_strip_nonxml;
613
        $record = $biblio->metadata->record_strip_nonxml;
612
        $template->param( INVALID_METADATA => $exception );
614
        $template->param( INVALID_METADATA => $exception );
613
    }
615
    }
616
    $digest = digest($record) if $record;
614
}
617
}
615
if ($breedingid) {
618
if ($breedingid) {
616
    ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ;
619
    ( $record, $encoding ) = MARCfindbreeding( $breedingid ) ;
Lines 701-711 if ( $op eq "cud-addbiblio" ) { Link Here
701
        ( $duplicatebiblionumber, $duplicatetitle ) = FindDuplicate($record);
704
        ( $duplicatebiblionumber, $duplicatetitle ) = FindDuplicate($record);
702
    }
705
    }
703
    my $confirm_not_duplicate = $input->param('confirm_not_duplicate');
706
    my $confirm_not_duplicate = $input->param('confirm_not_duplicate');
707
    my $digest_orig = $input->param('digest');
704
    # it is not a duplicate (determined either by Koha itself or by user checking it's not a duplicate)
708
    # it is not a duplicate (determined either by Koha itself or by user checking it's not a duplicate)
705
    if ( !$duplicatebiblionumber or $confirm_not_duplicate ) {
709
    if ( !$duplicatebiblionumber or $confirm_not_duplicate ) {
706
        my $oldbibitemnum;
710
        my $oldbibitemnum;
707
        if ( $is_a_modif ) {
711
        if ( $is_a_modif ) {
708
            ModBiblio(
712
            my $success = ModBiblio(
709
                $record,
713
                $record,
710
                $biblionumber,
714
                $biblionumber,
711
                $frameworkcode,
715
                $frameworkcode,
Lines 714-722 if ( $op eq "cud-addbiblio" ) { Link Here
714
                        source       => $z3950 ? 'z3950' : 'intranet',
718
                        source       => $z3950 ? 'z3950' : 'intranet',
715
                        categorycode => $logged_in_patron->categorycode,
719
                        categorycode => $logged_in_patron->categorycode,
716
                        userid       => $logged_in_patron->userid,
720
                        userid       => $logged_in_patron->userid,
717
                    }
721
                    },
722
                    original_digest => $digest_orig,
718
                }
723
                }
719
            );
724
            );
725
726
            # in case of unsuccessful record modification let's redirect to merge
727
            unless ( $success > 0 ) {
728
                $success ||= 1;
729
730
                ( $template, undef, undef ) = get_template_and_user(
731
                    {
732
                        template_name => "cataloguing/merge.tt",
733
                        query         => $input,
734
                        type          => "intranet",
735
                        flagsrequired => { editcatalogue => 'edit_catalogue' },
736
                    }
737
                );
738
739
                my $framework_database = GetFrameworkCode($biblionumber);
740
741
                # Getting MARC Structure
742
                my $tagslib = GetMarcStructure( 1, $framework_database );
743
744
                my $marcflavour = lc( C4::Context->preference('marcflavour') );
745
746
                # Creating a loop for display
747
                my @records;
748
749
                for my $i ( 0 .. 1 ) {
750
                    my $biblio;
751
                    my $marcrecord;
752
                    my $frmwkcode;
753
                    my $template_record;
754
                    if ( $i == 0 ) {    #database version
755
                        $biblio                       = Koha::Biblios->find($biblionumber);
756
                        $marcrecord                   = $biblio->record;
757
                        $frmwkcode                    = $framework_database;
758
                        $template_record->{reference} = 1;
759
                        $template->param( ref_record => $template_record );
760
                        $template_record->{recordid} = $biblionumber;
761
                    } else {            #modified version
762
                        $marcrecord                  = $record;
763
                        $frmwkcode                   = $frameworkcode;
764
                        $template_record->{recordid} = -1;  # NOTE for the modified version
765
                    }
766
767
                    my $recordObj = Koha::MetadataRecord->new( { 'record' => $marcrecord, schema => $marcflavour } );
768
                    $template_record->{record}        = $marcrecord;
769
                    $template_record->{frameworkcode} = $frmwkcode;
770
                    $template_record->{display}       = $recordObj->createMergeHash($tagslib);
771
                    push @records, $template_record;
772
                }
773
774
                my ($biblionumbertag) = GetMarcFromKohaField('biblio.biblionumber');
775
776
                # Parameters
777
                $template->param(
778
                    ref_biblionumber  => $biblionumber,
779
                    records           => \@records,
780
                    ref_record        => $records[0],
781
                    framework         => $framework_database,
782
                    biblionumbertag   => $biblionumbertag,
783
                    mid_air_collision => 1,
784
                    digest            => digest( $records[0]->{record} ),
785
                );
786
787
                output_html_with_http_headers $input, $cookie, $template->output;
788
                exit;
789
            }
720
        }
790
        }
721
        else {
791
        else {
722
            ( $biblionumber, $oldbibitemnum ) = AddBiblio( $record, $frameworkcode );
792
            ( $biblionumber, $oldbibitemnum ) = AddBiblio( $record, $frameworkcode );
Lines 845-857 elsif ( $op eq "cud-delete" ) { Link Here
845
    build_tabs( $template, $record, $dbh, $encoding,$input );
915
    build_tabs( $template, $record, $dbh, $encoding,$input );
846
    $template->param(
916
    $template->param(
847
        biblionumber             => $biblionumber,
917
        biblionumber             => $biblionumber,
848
        biblionumbertagfield        => $biblionumbertagfield,
918
        biblionumbertagfield     => $biblionumbertagfield,
849
        biblionumbertagsubfield     => $biblionumbertagsubfield,
919
        biblionumbertagsubfield  => $biblionumbertagsubfield,
850
        biblioitemnumtagfield    => $biblioitemnumtagfield,
920
        biblioitemnumtagfield    => $biblioitemnumtagfield,
851
        biblioitemnumtagsubfield => $biblioitemnumtagsubfield,
921
        biblioitemnumtagsubfield => $biblioitemnumtagsubfield,
852
        biblioitemnumber         => $biblioitemnumber,
922
        biblioitemnumber         => $biblioitemnumber,
853
	hostbiblionumber	=> $hostbiblionumber,
923
        hostbiblionumber         => $hostbiblionumber,
854
	hostitemnumber		=> $hostitemnumber
924
        hostitemnumber           => $hostitemnumber,
925
        digest                   => $digest,
855
    );
926
    );
856
}
927
}
857
928
(-)a/cataloguing/merge.pl (-3 / +78 lines)
Lines 32-45 use C4::Biblio qw( Link Here
32
    ModBiblio
32
    ModBiblio
33
    TransformHtmlToMarc
33
    TransformHtmlToMarc
34
);
34
);
35
use C4::Serials qw( CountSubscriptionFromBiblionumber );
35
use C4::Serials     qw( CountSubscriptionFromBiblionumber );
36
use C4::Reserves qw( MergeHolds );
36
use C4::Reserves    qw( MergeHolds );
37
use C4::Acquisition qw( ModOrder GetOrdersByBiblionumber );
37
use C4::Acquisition qw( ModOrder GetOrdersByBiblionumber );
38
use C4::Search      qw( enabled_staff_search_views );
38
39
39
use Koha::BiblioFrameworks;
40
use Koha::BiblioFrameworks;
40
use Koha::Biblios;
41
use Koha::Biblios;
41
use Koha::Items;
42
use Koha::Items;
42
use Koha::MetadataRecord;
43
use Koha::MetadataRecord;
44
use Koha::Util::Misc;
43
45
44
my $input = CGI->new;
46
my $input = CGI->new;
45
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
47
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Lines 88-95 if ($op eq 'cud-merge') { Link Here
88
    #Take new framework code
90
    #Take new framework code
89
    my $frameworkcode = $input->param('frameworkcode');
91
    my $frameworkcode = $input->param('frameworkcode');
90
92
93
    my $digest = $input->param('digest');
94
91
    # Modifying the reference record
95
    # Modifying the reference record
92
    ModBiblio($record, $ref_biblionumber, $frameworkcode);
96
    my $result = ModBiblio( $record, $ref_biblionumber, $frameworkcode, { original_digest => $digest } );
97
98
    if ( $result == -1 ) {
99
        my $framework_database = GetFrameworkCode($ref_biblionumber);
100
101
        # Getting MARC Structure
102
        my $tagslib = GetMarcStructure( 1, $framework_database );
103
104
        my $marcflavour = lc( C4::Context->preference('marcflavour') );
105
106
        # Creating a loop for display
107
        my @records;
108
109
        for my $i ( 0 .. 1 ) {
110
            my $biblio;
111
            my $marcrecord;
112
            my $frmwkcode;
113
            my $template_record;
114
            if ( $i == 0 ) {    #database version
115
                $biblio                       = Koha::Biblios->find($ref_biblionumber);
116
                $marcrecord                   = $biblio->record;
117
                $frmwkcode                    = $framework_database;
118
                $template_record->{reference} = 1;
119
                $template->param( ref_record => $template_record );
120
                $template_record->{recordid} = $ref_biblionumber;
121
            } else {            #modified version
122
                $marcrecord                  = $record;
123
                $frmwkcode                   = $frameworkcode;
124
                $template_record->{recordid} = -1;               # NOTE for the modified version
125
            }
126
127
            my $recordObj = Koha::MetadataRecord->new( { 'record' => $marcrecord, schema => $marcflavour } );
128
            $template_record->{record}        = $marcrecord;
129
            $template_record->{frameworkcode} = $frmwkcode;
130
            $template_record->{display}       = $recordObj->createMergeHash($tagslib);
131
            push @records, $template_record;
132
        }
133
134
        my ($biblionumbertag) = GetMarcFromKohaField('biblio.biblionumber');
135
136
        # Parameters
137
        $template->param(
138
            ref_biblionumber  => $ref_biblionumber,
139
            records           => \@records,
140
            ref_record        => $records[0],
141
            framework         => $framework_database,
142
            biblionumbertag   => $biblionumbertag,
143
            mid_air_collision => 1,
144
            digest            => digest( $records[0]->{record} ),
145
        );
146
147
        output_html_with_http_headers $input, $cookie,
148
            $template->output;
149
        exit;
150
    }
151
152
    # This is a merge after a mid-air collision, not a real merge
153
    if ( $biblionumbers[0] == -1 ) {
154
        my $defaultview = C4::Context->preference('IntranetBiblioDefaultView');
155
        my $views       = {C4::Search::enabled_staff_search_views};
156
        if ( $defaultview eq 'isbd' && $views->{can_view_ISBD} ) {
157
            print $input->redirect("/cgi-bin/koha/catalogue/ISBDdetail.pl?biblionumber=$ref_biblionumber");
158
        } elsif ( $defaultview eq 'marc' && $views->{can_view_MARC} ) {
159
            print $input->redirect("/cgi-bin/koha/catalogue/MARCdetail.pl?biblionumber=$ref_biblionumber");
160
        } elsif ( $defaultview eq 'labeled_marc' && $views->{can_view_labeledMARC} ) {
161
            print $input->redirect("/cgi-bin/koha/catalogue/labeledMARCdetail.pl?biblionumber=$ref_biblionumber");
162
        } else {
163
            print $input->redirect("/cgi-bin/koha/catalogue/detail.pl?biblionumber=$ref_biblionumber");
164
        }
165
        exit;
166
    }
93
167
94
    my $report_header = {};
168
    my $report_header = {};
95
    foreach my $biblionumber ($ref_biblionumber, @biblionumbers) {
169
    foreach my $biblionumber ($ref_biblionumber, @biblionumbers) {
Lines 174-179 if ($op eq 'cud-merge') { Link Here
174
            if ($ref_biblionumber and $ref_biblionumber == $biblionumber) {
248
            if ($ref_biblionumber and $ref_biblionumber == $biblionumber) {
175
                $record->{reference} = 1;
249
                $record->{reference} = 1;
176
                $template->param(ref_record => $record);
250
                $template->param(ref_record => $record);
251
                $template->param(digest => digest($marcrecord));
177
                unshift @records, $record;
252
                unshift @records, $record;
178
            } else {
253
            } else {
179
                push @records, $record;
254
                push @records, $record;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/merge-record.inc (-1 / +5 lines)
Lines 49-55 Link Here
49
        [% WRAPPER tabs_nav %]
49
        [% WRAPPER tabs_nav %]
50
            [% FOREACH record IN sourcerecords %]
50
            [% FOREACH record IN sourcerecords %]
51
                [% WRAPPER tab_item tabname= "tabrecord${record.recordid}" %]
51
                [% WRAPPER tab_item tabname= "tabrecord${record.recordid}" %]
52
                    [% record.recordid | html %]
52
                    [% IF record.recordid == -1 %]
53
                        modif
54
                    [% ELSE %]
55
                        [% record.recordid | html %]
56
                    [% END %]
53
                    [% IF record.reference %]<span>(ref)</span>[% END %]
57
                    [% IF record.reference %]<span>(ref)</span>[% END %]
54
                [% END %]
58
                [% END %]
55
            [% END %]
59
            [% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/addbiblio.tt (-1 / +14 lines)
Lines 879-885 $(document).ready(function(){ Link Here
879
                    [% END %]
879
                    [% END %]
880
                </h1>
880
                </h1>
881
881
882
                [% UNLESS ( number ) %]
882
                [% UNLESS ( number && !mod_error ) %]
883
                    <!-- show duplicate warning on tab 0 only -->
883
                    <!-- show duplicate warning on tab 0 only -->
884
                    [% IF ( duplicatebiblionumber ) %]
884
                    [% IF ( duplicatebiblionumber ) %]
885
                        <div class="dialog alert">
885
                        <div class="dialog alert">
Lines 905-910 $(document).ready(function(){ Link Here
905
                            </form>
905
                            </form>
906
                        </div> <!-- /.dialog.alert -->
906
                        </div> <!-- /.dialog.alert -->
907
                    [% END # /IF duplicatebiblionumber %]
907
                    [% END # /IF duplicatebiblionumber %]
908
                    [% IF (mod_error == -1 ) %]
909
                        <div class="dialog alert">
910
                            <h3>Record edited elsewhere</h3>
911
                            <p>Someone else beat you to it!</p>
912
                        </div>
913
                    [% ELSIF (mod_error == 1) %]
914
                        <div class="dialog alert">
915
                            <h3>Error</h3>
916
                            <p>Something is not right!</p>
917
                        </div>
918
                    [% END %]
919
908
                [% END # /UNLESS number %]
920
                [% END # /UNLESS number %]
909
921
910
                [% IF ( done ) %]
922
                [% IF ( done ) %]
Lines 920-925 $(document).ready(function(){ Link Here
920
                        <input type="hidden" value="" id="current_tab" name="current_tab" />
932
                        <input type="hidden" value="" id="current_tab" name="current_tab" />
921
                        <input type="hidden" name="original_op" value="[% op | html %]" />
933
                        <input type="hidden" name="original_op" value="[% op | html %]" />
922
                        <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
934
                        <input type="hidden" value="0" id="confirm_not_duplicate" name="confirm_not_duplicate" />
935
                        <input type="hidden" value="[% digest | html %]" id="digest" name="digest" />
923
                [% END %]
936
                [% END %]
924
937
925
                <div id="toolbar" class="btn-toolbar">
938
                <div id="toolbar" class="btn-toolbar">
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/merge.tt (-1 / +14 lines)
Lines 40-45 div#result { margin-top: 1em; } Link Here
40
            [% INCLUDE 'messages.inc' %]
40
            [% INCLUDE 'messages.inc' %]
41
41
42
<h1>Merging records</h1>
42
<h1>Merging records</h1>
43
    [% IF mid_air_collision %]
44
        <div class="dialog alert">
45
            <h3>Record edited elsewhere</h3>
46
            You can try to merge your version (marked as modif) with the current version of the record (marked as ref) or cancel
47
        </div>
48
    [% END %]
49
43
[% IF ( result ) %]
50
[% IF ( result ) %]
44
    [% IF ( errors.size ) %]
51
    [% IF ( errors.size ) %]
45
       [% FOREACH error IN errors %]
52
       [% FOREACH error IN errors %]
Lines 179-184 div#result { margin-top: 1em; } Link Here
179
</div> <!-- .col-sm-6 -->
186
</div> <!-- .col-sm-6 -->
180
187
181
<input type="hidden" name="ref_biblionumber" value="[% ref_biblionumber | html %]" />
188
<input type="hidden" name="ref_biblionumber" value="[% ref_biblionumber | html %]" />
189
<input type="hidden" id="digest" name="digest" value="[% digest | html %]" />
182
[% FOREACH record IN records %]
190
[% FOREACH record IN records %]
183
    <input type="hidden" name="biblionumber" value="[% record.recordid | html %]" />
191
    <input type="hidden" name="biblionumber" value="[% record.recordid | html %]" />
184
[% END %]
192
[% END %]
Lines 187-195 div#result { margin-top: 1em; } Link Here
187
<fieldset class="action">
195
<fieldset class="action">
188
    <input type="hidden" name="op" value="cud-merge" />
196
    <input type="hidden" name="op" value="cud-merge" />
189
    <input type="submit" name="merge" class="btn btn-primary" value="Merge" />
197
    <input type="submit" name="merge" class="btn btn-primary" value="Merge" />
198
    [% IF ! mid_air_collision %]
190
    <label for="report_fields">Fields to display in report:</label>
199
    <label for="report_fields">Fields to display in report:</label>
191
    <input type="text" name="report_fields" id="report_fields" value="[% MergeReportFields | html %]" />
200
    <input type="text" name="report_fields" id="report_fields" value="[% MergeReportFields | html %]" />
192
    <span class="hint">(Example: "001,245ab,600")</span>
201
    <span class="hint">(Example: "001,245ab,600")</span>
202
    [% ELSE %]
203
        <div class="btn-group">
204
            <a href="[% PROCESS biblio_a_href biblionumber => ref_biblionumber %]" class="btn btn-link" id="cancel">Cancel</a>
205
        </div>
206
    [% END %]
193
</fieldset>
207
</fieldset>
194
</form>
208
</form>
195
[% END %]
209
[% END %]
196
- 

Return to bug 31109