From 2b9ef94685ea014a014fdc994f8def827040e6f2 Mon Sep 17 00:00:00 2001 From: Bernardo Gonzalez Kriegel Date: Tue, 19 May 2015 13:06:34 -0300 Subject: [PATCH] Bug 12176: Remove HTML from additem.pl This patch removes HTML code from additem.pl. To test: 1. Check no regressions on Add/Edit/Save items 2. Update translation files for a language, check new strings "Tag editor" & "No popup" on staff PO file 3. Check it passes xt/tt_valid.t Patch partially rebased, part rewritten. Signed-off-by: Marcel de Rooy Signed-off-by: Jonathan Druart Signed-off-by: Tomas Cohen Arazi (cherry picked from commit 47d2de9c024bfb93d56184f298f334b20685cd86) Signed-off-by: Chris Cormack --- cataloguing/additem.pl | 117 ++++++++++++------ .../prog/en/modules/cataloguing/additem.tt | 32 ++++- 2 files changed, 110 insertions(+), 39 deletions(-) diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl index 24c06917ef..48bcd596a6 100755 --- a/cataloguing/additem.pl +++ b/cataloguing/additem.pl @@ -231,39 +231,43 @@ sub generate_subfield_form { } if ( $subfieldlib->{hidden} > 4 or $subfieldlib->{hidden} <= -4 ) { - $subfield_data{marc_value} = qq( $authorised_lib{$value}); + $subfield_data{marc_value} = { + type => 'hidden', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + avalue => $authorised_lib{$value}, + }; } else { - my @scrparam = ( - -name => "field_value", - -values => \@authorised_values, - -default => $value, - -labels => \%authorised_lib, - -override => 1, - -size => 1, - -multiple => 0, - -id => "tag_".$tag."_subfield_".$subfieldtag."_".$index_subfield, - -class => "input_marceditor", - ); - + $subfield_data{marc_value} = { + type => 'select', + id => "tag_".$tag."_subfield_".$subfieldtag."_".$index_subfield, + values => \@authorised_values, + labels => \%authorised_lib, + default => $value, + }; # If we're on restricted editing, and our field is not in the list of subfields to allow, # then it is read-only - push @scrparam, (-readonly => "readonly"), (-disabled => "disabled") - if ( - not $allowAllSubfields - and $restrictededition - and !grep { $tag . '$' . $subfieldtag eq $_ } @subfieldsToAllow - ); - $subfield_data{marc_value} =CGI::scrolling_list(@scrparam); + if ( + not $allowAllSubfields + and $restrictededition + and !grep { $tag . '$' . $subfieldtag eq $_ } @subfieldsToAllow + ) { + $subfield_data{marc_value}->{readonly} ='readonly="readonly"', + $subfield_data{marc_value}->{disabled} ='disabled="disabled"', + } } - } # it's a thesaurus / authority field elsif ( $subfieldlib->{authtypecode} ) { - $subfield_data{marc_value} = " - {authtypecode}."&index=$subfield_data{id}','$subfield_data{id}'); return false;\" title=\"Tag Editor\">... - "; + $subfield_data{marc_value} = { + type => 'text_auth', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + authtypecode => $subfieldlib->{authtypecode}, + }; } # it's a plugin field elsif ( $subfieldlib->{value_builder} ) { # plugin @@ -279,29 +283,66 @@ sub generate_subfield_form { #TODO Report 12176 will make this even better ! my $class= 'buttonDot'. ( $plugin->noclick? ' disabled': '' ); my $title= $plugin->noclick? 'No popup': 'Tag editor'; - $subfield_data{marc_value} = qq[...\n].$plugin->javascript; + $subfield_data{marc_value} = { + type => 'text_plugin', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + class => $class, + title => $title, + javascript => $plugin->javascript, + }; } else { warn $plugin->errstr; - $subfield_data{marc_value} = ""; # supply default input form + $subfield_data{marc_value} = { + type => 'text', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + }; # supply default input form } } elsif ( $tag eq '' ) { # it's an hidden field - $subfield_data{marc_value} = qq(); + $subfield_data{marc_value} = { + type => 'hidden', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + }; } elsif ( $subfieldlib->{'hidden'} ) { # FIXME: shouldn't input type be "hidden" ? - $subfield_data{marc_value} = qq(); + $subfield_data{marc_value} = { + type => 'text', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + }; } - elsif ( length($value) > 100 - or (C4::Context->preference("marcflavour") eq "UNIMARC" and - 300 <= $tag && $tag < 400 && $subfieldtag eq 'a' ) - or (C4::Context->preference("marcflavour") eq "MARC21" and - 500 <= $tag && $tag < 600 ) - ) { + elsif ( + length($value) > 100 + or ( + C4::Context->preference("marcflavour") eq "UNIMARC" + and 300 <= $tag && $tag < 400 && $subfieldtag eq 'a' + ) + or ( + C4::Context->preference("marcflavour") eq "MARC21" + and 500 <= $tag && $tag < 600 + ) + ) { # oversize field (textarea) - $subfield_data{marc_value} = "\n"; + $subfield_data{marc_value} = { + type => 'textarea', + id => $subfield_data{id}, + value => $value, + }; } else { - # it's a standard field - $subfield_data{marc_value} = ""; + # it's a standard field + $subfield_data{marc_value} = { + type => 'text', + id => $subfield_data{id}, + maxlength => $subfield_data{max_length}, + value => $value, + }; } return \%subfield_data; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt index 9cdc1cfb5b..78e97c54c1 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tt @@ -225,7 +225,37 @@ $(document).ready(function() { [% ELSE %] [% END %] - [% ite.marc_value %] + + [% SET mv = ite.marc_value %] + [% IF ( mv.type == 'hidden' ) %] + [% mv.avalue %].hidden + [% ELSIF ( mv.type == 'select' ) %] + + [% ELSIF ( mv.type == 'text_auth' ) %] + + [% SET dopop = "Dopop('/cgi-bin/koha/authorities/auth_finder.pl?authtypecode=\"${mv.authtypecode}\"&index=${mv.id}','${mv.id}')" %] + ... + [% ELSIF ( mv.type == 'text_plugin' ) %] + + [% IF ( mv.title == 'Tag editor' ) %] + ...[%- mv.javascript -%] + [% ELSIF ( mv.title == 'No popup' ) %] + ...[%- mv.javascript -%] + [% END %] + [% ELSIF ( mv.type == 'text' ) %] + + [% ELSIF ( mv.type == 'textarea' ) %] + + [% END %] + -- 2.39.5