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

(-)a/C4/Biblio.pm (-1 / +1 lines)
Lines 2135-2141 sub TransformHtmlToXml { Link Here
2135
2135
2136
    my $xml = MARC::File::XML::header('UTF-8');
2136
    my $xml = MARC::File::XML::header('UTF-8');
2137
    $xml .= "<record>\n";
2137
    $xml .= "<record>\n";
2138
    $auth_type = C4::Context->preference('marcflavour') unless $auth_type;
2138
    $auth_type = C4::Context->preference('marcflavour') unless $auth_type; # FIXME auth_type must be removed
2139
    MARC::File::XML->default_record_format($auth_type);
2139
    MARC::File::XML->default_record_format($auth_type);
2140
2140
2141
    # in UNIMARC, field 100 contains the encoding
2141
    # in UNIMARC, field 100 contains the encoding
(-)a/cataloguing/additem.pl (-21 / +38 lines)
Lines 131-136 sub generate_subfield_form { Link Here
131
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
131
        $subfield_data{repeatable} = $subfieldlib->{repeatable};
132
        $subfield_data{maxlength}  = $subfieldlib->{maxlength};
132
        $subfield_data{maxlength}  = $subfieldlib->{maxlength};
133
        $subfield_data{display_order} = $subfieldlib->{display_order};
133
        $subfield_data{display_order} = $subfieldlib->{display_order};
134
        $subfield_data{kohafield}  = $subfieldlib->{kohafield} || 'items.more_subfields_xml';
134
        
135
        
135
        if ( ! defined( $value ) || $value eq '')  {
136
        if ( ! defined( $value ) || $value eq '')  {
136
            $value = $subfieldlib->{defaultvalue};
137
            $value = $subfieldlib->{defaultvalue};
Lines 742-774 if ($op eq "additem") { Link Here
742
#-------------------------------------------------------------------------------
743
#-------------------------------------------------------------------------------
743
} elsif ($op eq "saveitem") {
744
} elsif ($op eq "saveitem") {
744
#-------------------------------------------------------------------------------
745
#-------------------------------------------------------------------------------
745
    # rebuild
746
746
    my @tags      = $input->multi_param('tag');
747
    my $itemnumber = $input->param('itemnumber');
747
    my @subfields = $input->multi_param('subfield');
748
    my $item = Koha::Items->find($itemnumber);
748
    my @values    = $input->multi_param('field_value');
749
    # FIXME Handle non existent item
749
    # build indicator hash.
750
    my $olditemlost = $item->itemlost;
750
    my @ind_tag   = $input->multi_param('ind_tag');
751
    my @columns = Koha::Items->columns;
751
    my @indicator = $input->multi_param('indicator');
752
    for my $c ( @columns ) {
752
    # my $itemnumber = $input->param('itemnumber');
753
        if ( $c eq 'more_subfields_xml' ) {
753
    my $xml = TransformHtmlToXml(\@tags,\@subfields,\@values,\@indicator,\@ind_tag,'ITEM');
754
            my @more_subfields_xml = $input->multi_param("items.more_subfields_xml");
754
    my $itemtosave=MARC::Record::new_from_xml($xml, 'UTF-8');
755
            my @unlinked_item_subfields;
755
    # MARC::Record builded => now, record in DB
756
            for my $subfield ( @more_subfields_xml ) {
756
    # warn "R: ".$record->as_formatted;
757
                my $v = $input->param('items.more_subfields_xml_' . $subfield);
758
                push @unlinked_item_subfields, $subfield, $v;
759
            }
760
            if ( @unlinked_item_subfields ) {
761
                my $marc = MARC::Record->new();
762
                # use of tag 999 is arbitrary, and doesn't need to match the item tag
763
                # used in the framework
764
                $marc->append_fields(MARC::Field->new('999', ' ', ' ', @unlinked_item_subfields));
765
                $marc->encoding("UTF-8");
766
                $item->more_subfields_xml($marc->as_xml("USMARC"));
767
                next;
768
            }
769
            $item->more_subfields_xml(undef);
770
        } else {
771
            my $v = $input->param("items.".$c);
772
            next unless defined $v;
773
            $item->$c($v);
774
        }
775
    }
776
757
    # check that the barcode don't exist already
777
    # check that the barcode don't exist already
758
    my $addedolditem = TransformMarcToKoha($itemtosave);
778
    if ( Koha::Items->search({ barcode => $item->barcode, itemnumber => { '!=' => $item->itemnumber } })->count ) {
759
    my $exist_itemnumber = get_item_from_barcode($addedolditem->{'barcode'});
779
        # FIXME We shouldn't need that, ->store would explode as there is a unique constraint on items.barcode
760
    if ($exist_itemnumber && $exist_itemnumber != $itemnumber) {
761
        push @errors,"barcode_not_unique";
780
        push @errors,"barcode_not_unique";
762
    } else {
781
    } else {
763
        my $item = Koha::Items->find($itemnumber );
782
        my $newitemlost = $item->itemlost;
764
        my $newitem = ModItemFromMarc($itemtosave, $biblionumber, $itemnumber);
765
        $itemnumber = q{};
766
        my $olditemlost = $item->itemlost;
767
        my $newitemlost = $newitem->{itemlost};
768
        if ( $newitemlost && $newitemlost ge '1' && !$olditemlost ) {
783
        if ( $newitemlost && $newitemlost ge '1' && !$olditemlost ) {
769
            LostItem( $item->itemnumber, 'additem' )
784
            LostItem( $item->itemnumber, 'additem' );
770
        }
785
        }
786
        $item->store;
771
    }
787
    }
788
772
    $nextop="additem";
789
    $nextop="additem";
773
} elsif ($op eq "delinkitem"){
790
} elsif ($op eq "delinkitem"){
774
791
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt (-13 / +22 lines)
Lines 148-153 Link Here
148
	<fieldset class="rows">
148
	<fieldset class="rows">
149
	<ol>
149
	<ol>
150
        [% FOREACH ite IN item %]
150
        [% FOREACH ite IN item %]
151
152
                [% IF ite.kohafield == 'items.more_subfields_xml' %]
153
                    [% SET kohafield = 'items.more_subfields_xml_' _ ite.subfield %]
154
                [% ELSE %]
155
                    [% SET kohafield = ite.kohafield %]
156
                [% END %]
157
151
               <li><div class="subfield_line" style="[% ite.visibility | html %]" id="subfield[% ite.tag | html %][% ite.subfield | html %][% ite.random | html %]">
158
               <li><div class="subfield_line" style="[% ite.visibility | html %]" id="subfield[% ite.tag | html %][% ite.subfield | html %][% ite.random | html %]">
152
                [% IF ( ite.mandatory ) %]
159
                [% IF ( ite.mandatory ) %]
153
               <label class="required">[% ite.subfield | html %] - [% ite.marc_lib | $raw %]</label>
160
               <label class="required">[% ite.subfield | html %] - [% ite.marc_lib | $raw %]</label>
Lines 157-168 Link Here
157
164
158
                [% SET mv = ite.marc_value %]
165
                [% SET mv = ite.marc_value %]
159
                [% IF ( mv.type == 'hidden' ) %]
166
                [% IF ( mv.type == 'hidden' ) %]
160
                    <input type="hidden" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]">
167
                    <input type="hidden" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]">
161
                [% ELSIF ( mv.type == 'select' ) %]
168
                [% ELSIF ( mv.type == 'select' ) %]
162
                    [% IF ( mv.readonly || ite.IS_RETURN_CLAIM ) %]
169
                    [% IF ( mv.readonly || ite.IS_RETURN_CLAIM ) %]
163
                        <select name="field_value" id="[%- mv.id | html -%]" size="1" class="input_marceditor" readonly="readonly" disabled="disabled">
170
                        <select name="[% kohafield %]" id="[%- mv.id | html -%]" size="1" class="input_marceditor" readonly="readonly" disabled="disabled">
164
                    [% ELSE %]
171
                    [% ELSE %]
165
                        <select name="field_value" id="[%- mv.id | html -%]" size="1" class="input_marceditor" data-category="[% mv.category | html %]">
172
                        <select name="[% kohafield %]" id="[%- mv.id | html -%]" size="1" class="input_marceditor" data-category="[% mv.category | html %]">
166
                    [% END %]
173
                    [% END %]
167
                    [% FOREACH aval IN mv.values %]
174
                    [% FOREACH aval IN mv.values %]
168
                        [% IF aval == mv.default %]
175
                        [% IF aval == mv.default %]
Lines 178-194 Link Here
178
                    </select>
185
                    </select>
179
                [% ELSIF ( mv.type == 'text_auth' ) %]
186
                [% ELSIF ( mv.type == 'text_auth' ) %]
180
                    [% IF mv.readonly %]
187
                    [% IF mv.readonly %]
181
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
188
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
182
                    [% ELSE %]
189
                    [% ELSE %]
183
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
190
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
184
                        [% SET dopop = "Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=\"${mv.authtypecode}\"&index=${mv.id}','${mv.id}')" %]
191
                        [% SET dopop = "Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=\"${mv.authtypecode}\"&index=${mv.id}','${mv.id}')" %]
185
                        <a href="#" class="buttonDot"  onclick="[%- dopop | html -%]; return false;" title="Tag editor">...</a>
192
                        <a href="#" class="buttonDot"  onclick="[%- dopop | html -%]; return false;" title="Tag editor">...</a>
186
                    [% END %]
193
                    [% END %]
187
                [% ELSIF ( mv.type == 'text_plugin' ) %]
194
                [% ELSIF ( mv.type == 'text_plugin' ) %]
188
                    [% IF mv.readonly %]
195
                    [% IF mv.readonly %]
189
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
196
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
190
                    [% ELSE %]
197
                    [% ELSE %]
191
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
198
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
192
                        [% IF ( mv.nopopup ) %]
199
                        [% IF ( mv.nopopup ) %]
193
                            <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="No popup">...</a>
200
                            <a href="#" id="buttonDot_[%- mv.id | html -%]" class="[%- mv.class | html -%]" title="No popup">...</a>
194
                        [% ELSE  %]
201
                        [% ELSE  %]
Lines 198-215 Link Here
198
                    [% END %]
205
                    [% END %]
199
                [% ELSIF ( mv.type == 'text' ) %]
206
                [% ELSIF ( mv.type == 'text' ) %]
200
                    [% IF mv.readonly %]
207
                    [% IF mv.readonly %]
201
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
208
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" readonly="readonly" />
202
                    [% ELSE %]
209
                    [% ELSE %]
203
                        <input type="text" id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
210
                        <input type="text" id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" size="50" maxlength="[%- mv.maxlength | html -%]" value="[%- mv.value | html -%]" />
204
                    [% END %]
211
                    [% END %]
205
                [% ELSIF ( mv.type == 'textarea' ) %]
212
                [% ELSIF ( mv.type == 'textarea' ) %]
206
                    [% IF mv.readonly %]
213
                    [% IF mv.readonly %]
207
                        <textarea id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" rows="5" cols="64" readonly="readonly" >[% mv.value | html %]</textarea>
214
                        <textarea id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" rows="5" cols="64" readonly="readonly" >[% mv.value | html %]</textarea>
208
                    [% ELSE %]
215
                    [% ELSE %]
209
                        <textarea id="[%- mv.id | html -%]" name="field_value" class="input_marceditor" rows="5" cols="64" >[% mv.value | html %]</textarea>
216
                        <textarea id="[%- mv.id | html -%]" name="[% kohafield %]" class="input_marceditor" rows="5" cols="64" >[% mv.value | html %]</textarea>
210
                    [% END %]
217
                    [% END %]
211
                [% END %]
218
                [% END %]
212
219
220
                [% IF ite.kohafield == 'items.more_subfields_xml' %]
221
                    <input type="hidden" name="items.more_subfields_xml" value="[% ite.subfield %]" />
222
                [% END %]
213
                <input type="hidden" name="tag"       value="[% ite.tag | html %]" />
223
                <input type="hidden" name="tag"       value="[% ite.tag | html %]" />
214
                <input type="hidden" name="subfield"  value="[% ite.subfield | html %]" />
224
                <input type="hidden" name="subfield"  value="[% ite.subfield | html %]" />
215
                <input type="hidden" name="mandatory" value="[% ite.mandatory | html %]" />
225
                <input type="hidden" name="mandatory" value="[% ite.mandatory | html %]" />
Lines 253-259 Link Here
253
    [% ELSE %]
263
    [% ELSE %]
254
    <input type="hidden" name="tag" value="[% itemtagfield | html %]" />
264
    <input type="hidden" name="tag" value="[% itemtagfield | html %]" />
255
    <input type="hidden" name="subfield" value="[% itemtagsubfield | html %]" />
265
    <input type="hidden" name="subfield" value="[% itemtagsubfield | html %]" />
256
    <input type="hidden" name="field_value" value="[% itemnumber | html %]" />
266
    <input type="hidden" name="itemnumber" value="[% itemnumber | html %]" />
257
    <input type="submit" value="Save changes" onclick="return Check(this.form)">
267
    <input type="submit" value="Save changes" onclick="return Check(this.form)">
258
    <input type="button" id="addnewitem" value="Add a new item">
268
    <input type="button" id="addnewitem" value="Add a new item">
259
    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]">Cancel</a>
269
    <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% biblionumber | uri %]">Cancel</a>
260
- 

Return to bug 27526