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

(-)a/cataloguing/value_builder/marc21_linking_section.pl (-65 / +115 lines)
Lines 56-62 my $launcher = sub { Link Here
56
    my ($params) = @_;
56
    my ($params) = @_;
57
    my $query    = $params->{cgi};
57
    my $query    = $params->{cgi};
58
    my $dbh      = C4::Context->dbh;
58
    my $dbh      = C4::Context->dbh;
59
    my $op       = $query->param('op');
59
    my $op       = $query->param('op') // '';
60
60
61
    # -- op could be equal to
61
    # -- op could be equal to
62
    # * fillinput
62
    # * fillinput
Lines 87-141 my $launcher = sub { Link Here
87
        my $biblio = Koha::Biblios->find($biblionumber);
87
        my $biblio = Koha::Biblios->find($biblionumber);
88
        $marcrecord = $biblio->metadata->record;
88
        $marcrecord = $biblio->metadata->record;
89
89
90
        my $subfield_value_9 = $biblionumber;
91
        my $subfield_value_0 = $biblionumber;
92
93
        #my $subfield_value_0;
90
        #my $subfield_value_0;
94
        #$subfield_value_0 = $marcrecord->field('001')->data
91
        #$subfield_value_0 = $marcrecord->field('001')->data
95
        #  if $marcrecord->field('001');
92
        #  if $marcrecord->field('001');
96
        my $subfield_value_w;
93
        my $subfield_value_w = '';
97
        if ( $marcrecord->field('001') ) {
94
98
            $subfield_value_w = $marcrecord->field('001')->data;
95
        my $subfield_value_7 = '';
99
        } else {
96
        my $subfield_value_9 = '';
100
            $subfield_value_w = $biblionumber;
97
        my $subfield_value_0 = '';
98
        my $subfield_value_a = '';
99
        my $subfield_value_b = '';
100
        my $subfield_value_c = '';
101
        my $subfield_value_d = '';
102
        my $subfield_value_e = '';
103
104
        my $subfield_value_h = '';
105
106
        my $subfield_value_i = '';
107
        my $subfield_value_k = '';
108
109
        my $subfield_value_p = '';
110
111
        my $subfield_value_t = '';
112
113
        my $subfield_value_u = '';
114
        my $subfield_value_v = '';
115
        my $subfield_value_x = '';
116
        my $subfield_value_y = '';
117
        my $subfield_value_z = '';
118
119
        my $main_entry;
120
        if ( $marcrecord->field('1..') ) {
121
            $main_entry = $marcrecord->field('1..')->clone;
122
            if ( $main_entry->tag eq '111' ) {
123
                $main_entry->delete_subfield( code => qr/[94j]/ );
124
            } else {
125
                $main_entry->delete_subfield( code => qr/[94e]/ );
126
            }
101
        }
127
        }
102
128
        my $s7 = "nn" . substr( $marcrecord->leader, 6, 2 );
103
        my $subfield_value_a;
129
        if ($main_entry) {
104
        my $subfield_value_c;
130
            my $c1 = 'n';
105
        my $subfield_value_d;
131
            if ( $main_entry->tag =~ /^1[01]/ ) {
106
        my $subfield_value_e;
132
                $c1 = $main_entry->indicator('1')
107
133
                    if $main_entry->tag =~ /^1[01]/;
108
        my $subfield_value_h;
134
                $c1 = $main_entry->tag eq '100' ? 1 : 2 unless $c1 =~ /\d/;
109
135
            }
110
        my $subfield_value_i;
136
            my $c0 =
111
137
                ( $main_entry->tag eq '100' ) ? 'p'
112
        my $subfield_value_p;
138
                : (
113
139
                $main_entry->tag eq '110' ? 'c'
114
        my $subfield_value_t;
140
                : ( $main_entry->tag eq '111' ? 'm' : 'u' )
115
        if ( $marcrecord->field('245') ) {
141
                );
116
            $subfield_value_t = $marcrecord->title();
142
            substr( $s7, 0, 2, $c0 . $c1 );
117
        }
143
        }
144
        $subfield_value_7 = $s7;
118
145
119
        my $subfield_value_u;
146
        if ($main_entry) {
120
        my $subfield_value_v;
147
            my $a = $main_entry->as_string;
121
        my $subfield_value_x;
148
            $a =~ s/\.$// unless $a =~ /\b[a-z]{1,2}\.$/i;
122
        my $subfield_value_y;
149
            $subfield_value_a = $a;
123
        my $subfield_value_z;
150
        }
124
151
125
        $subfield_value_x = $marcrecord->field('022')->subfield("a")
152
        my $f245c = $marcrecord->field('245')->clone;
126
            if ( $marcrecord->field('022') );
153
        $f245c->delete_subfield( code => 'c' );
127
        $subfield_value_z = $marcrecord->field('020')->subfield("a")
154
        my $t = $f245c->as_string;
128
            if ( $marcrecord->field('020') );
155
        $t =~ s/(\s*\/\s*|\.)$//;
156
        $t                = ucfirst substr( $t, $f245c->indicator('2') );
157
        $subfield_value_t = $t;
158
        if ( $marcrecord->field('250') ) {
159
            my $b = $marcrecord->field('250')->as_string;
160
            $b =~ s/\.$//;
161
            $subfield_value_b = $b;
162
        }
163
        if ( $marcrecord->field('260') ) {
164
            my $d = $marcrecord->field('260')->as_string('abc');
165
            $d =~ s/\.$//;
166
            $subfield_value_d = $d;
167
        }
168
        for my $f ( $marcrecord->field('8[013][01]') ) {
169
            my $k = $f->as_string('abcdnjltnp');
170
            if ( $f->subfield('x') ) {
171
                $k .= ', ISSN ' . $f->subfield('x');
172
            }
173
            if ( $f->subfield('v') ) {
174
                $k .= ' ; ' . $f->subfield('v');
175
            }
176
            $subfield_value_k .= $subfield_value_k ? ". $k" : $k;
177
        }
178
        for my $f ( $marcrecord->field('022') ) {
179
            $subfield_value_x = $f->subfield('a') if $f->subfield('a');
180
        }
181
        for my $f ( $marcrecord->field('020') ) {
182
            $subfield_value_z = $f->subfield('a') if $f->subfield('a');
183
        }
184
        if ( $marcrecord->field('001') ) {
185
            my $w = $marcrecord->field('001')->data;
186
            if ( $marcrecord->field('003') ) {
187
                $w = '(' . $marcrecord->field('003')->data . ')' . $w;
188
            }
189
            $subfield_value_w = $w;
190
        }
191
        $subfield_value_w ||= $biblionumber;
129
192
130
        # escape the 's
193
        # escape the 's
194
        $subfield_value_7 =~ s/'/\\'/g;
131
        $subfield_value_9 =~ s/'/\\'/g;
195
        $subfield_value_9 =~ s/'/\\'/g;
132
        $subfield_value_0 =~ s/'/\\'/g;
196
        $subfield_value_0 =~ s/'/\\'/g;
133
        $subfield_value_a =~ s/'/\\'/g;
197
        $subfield_value_a =~ s/'/\\'/g;
198
        $subfield_value_b =~ s/'/\\'/g;
134
        $subfield_value_c =~ s/'/\\'/g;
199
        $subfield_value_c =~ s/'/\\'/g;
135
        $subfield_value_d =~ s/'/\\'/g;
200
        $subfield_value_d =~ s/'/\\'/g;
136
        $subfield_value_e =~ s/'/\\'/g;
201
        $subfield_value_e =~ s/'/\\'/g;
137
        $subfield_value_h =~ s/'/\\'/g;
202
        $subfield_value_h =~ s/'/\\'/g;
138
        $subfield_value_i =~ s/'/\\'/g;
203
        $subfield_value_i =~ s/'/\\'/g;
204
        $subfield_value_k =~ s/'/\\'/g;
139
        $subfield_value_p =~ s/'/\\'/g;
205
        $subfield_value_p =~ s/'/\\'/g;
140
        $subfield_value_t =~ s/'/\\'/g;
206
        $subfield_value_t =~ s/'/\\'/g;
141
        $subfield_value_u =~ s/'/\\'/g;
207
        $subfield_value_u =~ s/'/\\'/g;
Lines 148-161 my $launcher = sub { Link Here
148
            fillinput        => 1,
214
            fillinput        => 1,
149
            index            => scalar $query->param('index') . "",
215
            index            => scalar $query->param('index') . "",
150
            biblionumber     => $biblionumber ? $biblionumber : "",
216
            biblionumber     => $biblionumber ? $biblionumber : "",
217
            subfield_value_7 => "$subfield_value_7",
151
            subfield_value_9 => "$subfield_value_9",
218
            subfield_value_9 => "$subfield_value_9",
152
            subfield_value_0 => "$subfield_value_0",
219
            subfield_value_0 => "$subfield_value_0",
153
            subfield_value_a => "$subfield_value_a",
220
            subfield_value_a => "$subfield_value_a",
221
            subfield_value_b => "$subfield_value_b",
154
            subfield_value_c => "$subfield_value_c",
222
            subfield_value_c => "$subfield_value_c",
155
            subfield_value_d => "$subfield_value_d",
223
            subfield_value_d => "$subfield_value_d",
156
            subfield_value_e => "$subfield_value_e",
224
            subfield_value_e => "$subfield_value_e",
157
            subfield_value_h => "$subfield_value_h",
225
            subfield_value_h => "$subfield_value_h",
158
            subfield_value_i => "$subfield_value_i",
226
            subfield_value_i => "$subfield_value_i",
227
            subfield_value_k => "$subfield_value_k",
159
            subfield_value_p => "$subfield_value_p",
228
            subfield_value_p => "$subfield_value_p",
160
            subfield_value_t => "$subfield_value_t",
229
            subfield_value_t => "$subfield_value_t",
161
            subfield_value_u => "$subfield_value_u",
230
            subfield_value_u => "$subfield_value_u",
Lines 169-175 my $launcher = sub { Link Here
169
    } elsif ( $op eq "do_search" ) {
238
    } elsif ( $op eq "do_search" ) {
170
        my $search         = $query->param('search');
239
        my $search         = $query->param('search');
171
        my $itype          = $query->param('itype');
240
        my $itype          = $query->param('itype');
172
        my $startfrom      = $query->param('startfrom');
241
        my $startfrom      = $query->param('startfrom')      || 0;
173
        my $resultsperpage = $query->param('resultsperpage') || 20;
242
        my $resultsperpage = $query->param('resultsperpage') || 20;
174
        my $orderby;
243
        my $orderby;
175
        my $op = 'AND';
244
        my $op = 'AND';
Lines 206-240 my $launcher = sub { Link Here
206
        my @arrayresults;
275
        my @arrayresults;
207
        my @field_data = ($search);
276
        my @field_data = ($search);
208
        for ( my $i = 0 ; $i < $total && $i < $resultsperpage ; $i++ ) {
277
        for ( my $i = 0 ; $i < $total && $i < $resultsperpage ; $i++ ) {
209
            my $record  = C4::Search::new_record_from_zebra( 'biblioserver', $results->[$i] );
278
            my $record     = C4::Search::new_record_from_zebra( 'biblioserver', $results->[$i] );
210
            my $rechash = TransformMarcToKoha( { record => $record } );
279
            my $rechash    = TransformMarcToKoha( { record => $record } );
211
            my $pos;
280
            my $pos        = 0;
212
            my $countitems = $rechash->{itembumber} ? 1 : 0;
281
            my $countitems = $rechash->{itembumber} ? 1 : 0;
213
            while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) {
282
            if ( $rechash->{itembumber} ) {
214
                $countitems += 1;
283
                while ( index( $rechash->{itemnumber}, '|', $pos ) > 0 ) {
215
                $pos = index( $rechash->{itemnumber}, '|', $pos ) + 1;
284
                    $countitems += 1;
285
                    $pos = index( $rechash->{itemnumber}, '|', $pos ) + 1;
286
                }
216
            }
287
            }
217
            $rechash->{totitem} = $countitems;
288
            $rechash->{totitem} = $countitems;
218
            my @holdingbranches = split /\|/, $rechash->{holdingbranch};
289
            my @holdingbranches = split /\|/, $rechash->{holdingbranch}  // '';
219
            my @itemcallnumbers = split /\|/, $rechash->{itemcallnumber};
290
            my @itemcallnumbers = split /\|/, $rechash->{itemcallnumber} // '';
220
            my $CN;
291
            my $CN              = '';
221
            for ( my $i = 0 ; $i < @holdingbranches ; $i++ ) {
292
            for ( my $i = 0 ; $i < @holdingbranches ; $i++ ) {
222
                $CN .= $holdingbranches[$i] . " ( " . $itemcallnumbers[$i] . " ) |";
293
                $CN .= $holdingbranches[$i] . " ( " . ( $itemcallnumbers[$i] ? $itemcallnumbers[$i] : '' ) . " ) |";
223
            }
294
            }
224
            $CN =~ s/ \|$//;
295
            $CN =~ s/ \|$//;
225
            $rechash->{CN} = $CN;
296
            $rechash->{CN} = $CN;
226
            push @arrayresults, $rechash;
297
            push @arrayresults, $rechash;
227
        }
298
        }
228
299
229
        #         for(my $i = 0 ; $i <= $#marclist ; $i++)
230
        #         {
231
        #             push @field_data, { term => "marclist", val=>$marclist[$i] };
232
        #             push @field_data, { term => "and_or", val=>$and_or[$i] };
233
        #             push @field_data, { term => "excluding", val=>$excluding[$i] };
234
        #             push @field_data, { term => "operator", val=>$operator[$i] };
235
        #             push @field_data, { term => "value", val=>$value[$i] };
236
        #         }
237
238
        my @numbers = ();
300
        my @numbers = ();
239
301
240
        if ( $total_hits > $resultsperpage ) {
302
        if ( $total_hits > $resultsperpage ) {
Lines 262-279 my $launcher = sub { Link Here
262
            $to = $from + $resultsperpage;
324
            $to = $from + $resultsperpage;
263
        }
325
        }
264
326
265
        #         my $link="/cgi-bin/koha/cataloguing/value_builder/unimarc4XX.pl?op=do_search&q=$search_desc&resultsperpage=$resultsperpage&startfrom=$startfrom&search=$search";
266
        #           foreach my $sort (@sort_by){
267
        #             $link.="&sort_by=".$sort."&";
268
        #           }
269
        #           $template->param(
270
        #             pagination_bar => pagination_bar(
271
        #                     $link,
272
        #                     getnbpages($hits, $results_per_page),
273
        #                     $page,
274
        #                     'page'
275
        #             ),
276
        #           );
277
        $template->param(
327
        $template->param(
278
            result         => \@arrayresults,
328
            result         => \@arrayresults,
279
            index          => scalar $query->param('index') . "",
329
            index          => scalar $query->param('index') . "",
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/value_builder/marc21_linking_section.tt (-1 / +9 lines)
Lines 184-189 Link Here
184
                        var code = subfields[i];
184
                        var code = subfields[i];
185
                        var subfield = subfields[i + 1];
185
                        var subfield = subfields[i + 1];
186
186
187
                        if (code.value == '7') {
188
                            subfield.value = "[% subfield_value_7 | html %]";
189
                        }
187
                        if (code.value == '9') {
190
                        if (code.value == '9') {
188
                            subfield.value = "[% subfield_value_9 | html %]";
191
                            subfield.value = "[% subfield_value_9 | html %]";
189
                        }
192
                        }
Lines 193-198 Link Here
193
                        if (code.value == 'a') {
196
                        if (code.value == 'a') {
194
                            subfield.value = "[% subfield_value_a | html %]";
197
                            subfield.value = "[% subfield_value_a | html %]";
195
                        }
198
                        }
199
                        if (code.value == 'b') {
200
                            subfield.value = "[% subfield_value_b | html %]";
201
                        }
196
                        if (code.value == 'c') {
202
                        if (code.value == 'c') {
197
                            subfield.value = "[% subfield_value_c | html %]";
203
                            subfield.value = "[% subfield_value_c | html %]";
198
                        }
204
                        }
Lines 208-213 Link Here
208
                        if (code.value == 'i') {
214
                        if (code.value == 'i') {
209
                            subfield.value = "[% subfield_value_i | html %]";
215
                            subfield.value = "[% subfield_value_i | html %]";
210
                        }
216
                        }
217
                        if (code.value == 'k') {
218
                            subfield.value = "[% subfield_value_k | html %]";
219
                        }
211
                        if (code.value == 'p') {
220
                        if (code.value == 'p') {
212
                            subfield.value = "[% subfield_value_p | html %]";
221
                            subfield.value = "[% subfield_value_p | html %]";
213
                        }
222
                        }
214
- 

Return to bug 29733