@@ -, +, @@ in framework --- admin/auth_subfields_structure.pl | 179 ++++++------------- admin/marc_subfields_structure.pl | 183 ++++++-------------- .../en/modules/admin/auth_subfields_structure.tt | 85 +++++---- .../en/modules/admin/marc_subfields_structure.tt | 60 +++++-- 4 files changed, 195 insertions(+), 312 deletions(-) --- a/admin/auth_subfields_structure.pl +++ a/admin/auth_subfields_structure.pl @@ -17,8 +17,7 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; use C4::Output; use C4::Auth; use CGI qw ( -utf8 ); @@ -52,7 +51,7 @@ my $input = new CGI; my $tagfield = $input->param('tagfield'); my $tagsubfield = $input->param('tagsubfield'); my $authtypecode = $input->param('authtypecode'); -my $offset = $input->param('offset'); +my $offset = $input->param('offset') || 0; my $op = $input->param('op') || ''; my $script_name = "/cgi-bin/koha/admin/auth_subfields_structure.pl"; @@ -84,8 +83,6 @@ my $dbh = C4::Context->dbh; ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ($op eq 'add_form') { - my $data; - my $more_subfields = $input->param("more_subfields")+1; # builds kohafield tables my @kohafields; push @kohafields, ""; @@ -130,133 +127,58 @@ if ($op eq 'add_form') { $sth->execute($tagfield,$authtypecode); my @loop_data = (); my $i=0; - while ($data =$sth->fetchrow_hashref) { - - my %row_data; # get a fresh hash for the row data - $row_data{defaultvalue} = $data->{defaultvalue}; - $row_data{tab} = { - id => "tab$i", - default => $data->{'tab'}, - }; - $row_data{ohidden} = { - id => "ohidden$i", - default => $data->{'hidden'} - }; - $row_data{tagsubfieldinput} = "{'tagsubfield'}."\" id=\"tagsubfield\" />"; - $row_data{tagsubfield} = $data->{'tagsubfield'}; - $row_data{liblibrarian} = $data->{'liblibrarian'}; - $row_data{libopac} = $data->{'libopac'}; - $row_data{seealso} = $data->{'seealso'}; - $row_data{kohafield} = { - id => "kohafield$i", - values => \@kohafields, - default => "$data->{'kohafield'}", - }; - $row_data{authorised_value} = { - id => "authorised_value$i", - values => $authorised_values, - default => $data->{'authorised_value'}, - }; - $row_data{frameworkcode} = { - id => "frameworkcode$i", - values => \@authtypes, - default => $data->{'frameworkcode'}, - }; - $row_data{value_builder} = { - id => "value_builder$i", - values => \@value_builder, - default => $data->{'value_builder'}, - }; - - $row_data{repeatable} = CGI::checkbox(-name=>"repeatable$i", - -checked => $data->{'repeatable'}?'checked':'', - -value => 1, - -label => '', - -id => "repeatable$i"); - $row_data{mandatory} = CGI::checkbox(-name => "mandatory$i", - -checked => $data->{'mandatory'}?'checked':'', - -value => 1, - -label => '', - -id => "mandatory$i"); - $row_data{hidden} = $data->{hidden}; - $row_data{isurl} = CGI::checkbox( -name => "isurl$i", - -id => "isurl$i", - -checked => $data->{'isurl'}?'checked':'', - -value => 1, - -label => ''); - $row_data{row} = $i; - push(@loop_data, \%row_data); - $i++; - } - # add more_subfields empty lines for add if needed - for (my $i=1;$i<=$more_subfields;$i++) { - my %row_data; # get a fresh hash for the row data - $row_data{'new_subfield'} = 1; - $row_data{tab} = { - id => "tab$i", - default => $data->{'tab'}, - }; - $row_data{ohidden} = { - id => "ohidden$i", - default => $data->{'hidden'} - }; + while ( my $data = $sth->fetchrow_hashref ) { + my %row_data; # get a fresh hash for the row data + $row_data{defaultvalue} = $data->{defaultvalue}; + $row_data{tab} = $data->{tab}; + $row_data{ohidden} = $data->{'hidden'}; + $row_data{tagsubfield} = $data->{'tagsubfield'}; + $row_data{liblibrarian} = $data->{'liblibrarian'}; + $row_data{libopac} = $data->{'libopac'}; + $row_data{seealso} = $data->{'seealso'}; + $row_data{kohafields} = \@kohafields; + $row_data{kohafield} = $data->{'kohafield'}; + $row_data{authorised_values} = $authorised_values; + $row_data{authorised_value} = $data->{'authorised_value'}; + $row_data{frameworkcodes} = \@authtypes; + $row_data{frameworkcode} = $data->{'frameworkcode'}; + $row_data{value_builders} = \@value_builder; + $row_data{value_builder} = $data->{'value_builder'}; + $row_data{repeatable} = $data->{repeatable}; + $row_data{mandatory} = $data->{mandatory}; + $row_data{hidden} = $data->{hidden}; + $row_data{isurl} = $data->{isurl}; + $row_data{row} = $i; + push( @loop_data, \%row_data ); + $i++; + } - $row_data{tagsubfieldinput} = "{'tagsubfield'}."\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" />"; - $row_data{tagsubfieldinput} = - ""; - $row_data{tagsubfield} = $data->{'tagsubfield'}; - $row_data{liblibrarian} = ""; - $row_data{libopac} = ""; - $row_data{seealso} = ""; - $row_data{hidden} = "000"; - $row_data{repeatable} = CGI::checkbox( -name=> 'repeatable', - -id => "repeatable$i", - -checked => '', - -value => 1, - -label => ''); - $row_data{mandatory} = CGI::checkbox( -name=> 'mandatory', - -id => "mandatory$i", - -checked => '', - -value => 1, - -label => ''); - $row_data{isurl} = CGI::checkbox(-name => 'isurl', - -id => "isurl$i", - -checked => '', - -value => 1, - -label => ''); - $row_data{kohafield} = { - id => "kohafield$i", - values => \@kohafields, - default => "", - }; - $row_data{authorised_value} = { - id => "authorised_value", - values => $authorised_values, - default => "", - }; - $row_data{frameworkcode} = { - id => "frameworkcode", - values => \@authtypes, - default => $data->{'frameworkcode'}, - }; - $row_data{value_builder} = { - id => "value_builder", - values => \@value_builder, - default => $data->{'value_builder'}, - }; + # Add a new row for the "New" tab + my %row_data; # get a fresh hash for the row data + $row_data{'new_subfield'} = 1; + $row_data{tab} = -1; # ignore + $row_data{ohidden} = 0; # show all + $row_data{tagsubfield} = ""; + $row_data{liblibrarian} = ""; + $row_data{libopac} = ""; + $row_data{seealso} = ""; + $row_data{hidden} = "000"; + $row_data{repeatable} = 0; + $row_data{mandatory} = 0; + $row_data{isurl} = 0; + $row_data{kohafields} = \@kohafields, + $row_data{authorised_values} = $authorised_values; + $row_data{frameworkcodes} = \@authtypes; + $row_data{value_builders} = \@value_builder; + $row_data{row} = $i; + push( @loop_data, \%row_data ); - $row_data{row} = $i; - push(@loop_data, \%row_data); - } $template->param('use_heading_flags_p' => 1); $template->param('heading_edit_subfields_p' => 1); $template->param(action => "Edit subfields", tagfield => $tagfield, tagfieldinput => "", loop => \@loop_data, - more_subfields => $more_subfields, more_tag => $tagfield); # END $OP eq ADD_FORM @@ -276,9 +198,7 @@ if ($op eq 'add_form') { my @kohafield = ''.$input->param('kohafield'); my @tab = $input->param('tab'); my @seealso = $input->param('seealso'); - my @ohidden = $input->param('ohidden'); - #my @ihidden = $input->param('ihidden'); - #my @ehidden = $input->param('ehidden'); + my @ohidden = $input->param('ohidden'); my @authorised_values = $input->param('authorised_value'); my $authtypecode = $input->param('authtypecode'); my @frameworkcodes = $input->param('frameworkcode'); @@ -299,11 +219,10 @@ if ($op eq 'add_form') { my $frameworkcode =$frameworkcodes[$i]; my $value_builder=$value_builder[$i]; my $defaultvalue = $defaultvalue[$i]; - #my $hidden = $ohidden[$i].$ihidden[$i].$ehidden[$i]; #collate from 3 hiddens; my $hidden = $ohidden[$i]; #collate from 3 hiddens; my $isurl = $input->param("isurl$i")?1:0; if ($liblibrarian) { - unless (C4::Context->config('demo') eq 1) { + unless (C4::Context->config('demo') or C4::Context->config('demo') eq 1) { if (auth_subfield_structure_exists($authtypecode, $tagfield, $tagsubfield)) { $sth_update->execute( $authtypecode, @@ -372,7 +291,7 @@ if ($op eq 'add_form') { ################## DELETE_CONFIRMED ################################## # called by delete_confirm, used to effectively confirm deletion of data in DB } elsif ($op eq 'delete_confirmed') { - unless (C4::Context->config('demo') eq 1) { + unless (C4::Context->config('demo') or C4::Context->config('demo') eq 1) { my $sth=$dbh->prepare("delete from auth_subfield_structure where tagfield=? and tagsubfield=? and authtypecode=?"); $sth->execute($tagfield,$tagsubfield,$authtypecode); } --- a/admin/marc_subfields_structure.pl +++ a/admin/marc_subfields_structure.pl @@ -17,8 +17,7 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; use C4::Output; use C4::Auth; use CGI qw ( -utf8 ); @@ -65,7 +64,7 @@ my $tagfield = $input->param('tagfield'); my $tagsubfield = $input->param('tagsubfield'); my $frameworkcode = $input->param('frameworkcode'); my $pkfield = "tagfield"; -my $offset = $input->param('offset'); +my $offset = $input->param('offset') || 0; my $script_name = "/cgi-bin/koha/admin/marc_subfields_structure.pl"; my ( $template, $borrowernumber, $cookie ) = get_template_and_user( @@ -80,7 +79,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( ); my $cache = Koha::Cache->get_instance(); -my $op = $input->param('op'); +my $op = $input->param('op') || ""; $tagfield =~ s/\,//g; if ($op) { @@ -103,9 +102,7 @@ else { ################## ADD_FORM ################################## # called by default. Used to create form to add or modify a record if ( $op eq 'add_form' ) { - my $data; my $dbh = C4::Context->dbh; - my $more_subfields = $input->param("more_subfields") + 1; # builds kohafield tables my @kohafields; @@ -173,135 +170,56 @@ if ( $op eq 'add_form' ) { $sth->execute( $tagfield, $frameworkcode ); my @loop_data = (); my $i = 0; - while ( $data = $sth->fetchrow_hashref ) { + while ( my $data = $sth->fetchrow_hashref ) { my %row_data; # get a fresh hash for the row data - $row_data{defaultvalue} = $data->{defaultvalue}; - $row_data{maxlength} = $data->{maxlength}; - $row_data{tab} = { - id => "tab$i", - default => $data->{'tab'}, - }; - - $row_data{tagsubfield} = - $data->{'tagsubfield'} - . "{'tagsubfield'} - . "\" id=\"tagsubfield\" />"; - $row_data{subfieldcode} = $data->{'tagsubfield'} eq '@'?'_':$data->{'tagsubfield'}; - $row_data{urisubfieldcode} = $row_data{subfieldcode} eq '%' ? 'pct' : $row_data{subfieldcode}; - $row_data{liblibrarian} = $data->{'liblibrarian'}; - $row_data{libopac} = $data->{'libopac'}; - $row_data{seealso} = $data->{'seealso'}; - $row_data{kohafield} = { - id => "kohafield$i", - values => \@kohafields, - default => "$data->{'kohafield'}", - }; - $row_data{authorised_value} = { - id => "authorised_value$i", - values => \@authorised_values, - default => $data->{'authorised_value'}, - }; - $row_data{value_builder} = { - id => "value_builder$i", - values => \@value_builder, - default => $data->{'value_builder'}, - }; - $row_data{authtypes} = { - id => "authtypecode$i", - values => \@authtypes, - default => $data->{'authtypecode'}, - }; - $row_data{repeatable} = CGI::checkbox( - -name => "repeatable$i", - -checked => $data->{'repeatable'} ? 'checked' : '', - -value => 1, - -label => '', - -id => "repeatable$i" - ); - $row_data{mandatory} = CGI::checkbox( - -name => "mandatory$i", - -checked => $data->{'mandatory'} ? 'checked' : '', - -value => 1, - -label => '', - -id => "mandatory$i" - ); - $row_data{hidden} = $data->{hidden}; - $row_data{isurl} = CGI::checkbox( - -name => "isurl$i", - -id => "isurl$i", - -checked => $data->{'isurl'} ? 'checked' : '', - -value => 1, - -label => '' - ); - $row_data{row} = $i; - $row_data{link} = $data->{'link'}; + $row_data{defaultvalue} = $data->{defaultvalue}; + $row_data{maxlength} = $data->{maxlength}; + $row_data{tab} = $data->{tab}; + $row_data{tagsubfield} = $data->{tagsubfield}; + $row_data{subfieldcode} = $data->{'tagsubfield'} eq '@' ? '_' : $data->{'tagsubfield'}; + $row_data{urisubfieldcode} = $row_data{subfieldcode} eq '%' ? 'pct' : $row_data{subfieldcode}; + $row_data{liblibrarian} = $data->{'liblibrarian'}; + $row_data{libopac} = $data->{'libopac'}; + $row_data{seealso} = $data->{'seealso'}; + $row_data{kohafields} = \@kohafields; + $row_data{kohafield} = $data->{kohafield}; + $row_data{authorised_values} = \@authorised_values; + $row_data{authorised_value} = $data->{authorised_value}; + $row_data{value_builders} = \@value_builder; + $row_data{value_builder} = $data->{'value_builder'}; + $row_data{authtypes} = \@authtypes; + $row_data{authtypecode} = $data->{'authtypecode'}; + $row_data{repeatable} = $data->{repeatable}; + $row_data{mandatory} = $data->{mandatory}; + $row_data{hidden} = $data->{hidden}; + $row_data{isurl} = $data->{isurl}; + $row_data{row} = $i; + $row_data{link} = $data->{'link'}; push( @loop_data, \%row_data ); $i++; } - # add more_subfields empty lines for add if needed - my %row_data; # get a fresh hash for the row data - $row_data{'new_subfield'} = 1; - $row_data{'subfieldcode'} = ''; - $row_data{'maxlength'} = 9999; - - $row_data{tab} = { - id => "tab$i", - default => $data->{'tab'}, - }; - $row_data{tagsubfield} = - "{'tagsubfield'} - . "\" size=\"1\" id=\"tagsubfield\" maxlength=\"1\" />"; - $row_data{liblibrarian} = ""; - $row_data{libopac} = ""; - $row_data{seealso} = ""; - $row_data{kohafield} = { - id => "kohafield$i", - values => \@kohafields, - default => "$data->{'kohafield'}", - }; - $row_data{hidden} = ""; - $row_data{repeatable} = CGI::checkbox( - -name => "repeatable$i", - -id => "repeatable$i", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{mandatory} = CGI::checkbox( - -name => "mandatory$i", - -id => "mandatory$i", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{isurl} = CGI::checkbox( - -name => "isurl$i", - -id => "isurl$i", - -checked => '', - -value => 1, - -label => '' - ); - $row_data{value_builder} = { - id => "value_builder$i", - values => \@value_builder, - default => $data->{'value_builder'}, - }; - $row_data{authorised_value} = { - id => "authorised_value$i", - values => \@authorised_values, - default => $data->{'authorised_value'}, - }; - $row_data{authtypes} = { - id => "authtypecode$i", - values => \@authtypes, - default => $data->{'authtypecode'}, - }; - $row_data{link} = $data->{'link'}; - $row_data{row} = $i; - push( @loop_data, \%row_data ); + # Add a new row for the "New" tab + my %row_data; # get a fresh hash for the row data + $row_data{'new_subfield'} = 1; + $row_data{'subfieldcode'} = ''; + $row_data{'maxlength'} = 9999; + $row_data{tab} = -1; #ignore + $row_data{tagsubfield} = ""; + $row_data{liblibrarian} = ""; + $row_data{libopac} = ""; + $row_data{seealso} = ""; + $row_data{hidden} = ""; + $row_data{repeatable} = 0; + $row_data{mandatory} = 0; + $row_data{isurl} = 0; + $row_data{kohafields} = \@kohafields; + $row_data{authorised_values} = \@authorised_values; + $row_data{value_builders} = \@value_builder; + $row_data{authtypes} = \@authtypes; + $row_data{link} = ""; + $row_data{row} = $i; + push( @loop_data, \%row_data ); $template->param( 'use_heading_flags_p' => 1 ); $template->param( 'heading_edit_subfields_p' => 1 ); @@ -309,7 +227,6 @@ if ( $op eq 'add_form' ) { action => "Edit subfields", tagfield => $tagfield, loop => \@loop_data, - more_subfields => $more_subfields, more_tag => $tagfield ); @@ -368,7 +285,7 @@ elsif ( $op eq 'add_validate' ) { my $maxlength = $maxlength[$i] ? $maxlength[$i] : 9999; if (defined($liblibrarian) && $liblibrarian ne "") { - unless ( C4::Context->config('demo') eq 1 ) { + unless ( C4::Context->config('demo') or C4::Context->config('demo') eq 1 ) { if (marc_subfield_structure_exists($tagfield, $tagsubfield, $frameworkcode)) { $sth_update->execute( $tagfield, @@ -457,7 +374,7 @@ elsif ( $op eq 'delete_confirm' ) { } elsif ( $op eq 'delete_confirmed' ) { my $dbh = C4::Context->dbh; - unless ( C4::Context->config('demo') eq 1 ) { + unless ( C4::Context->config('demo') or C4::Context->config('demo') eq 1 ) { my $sth = $dbh->prepare( "delete from marc_subfield_structure where tagfield=? and tagsubfield=? and frameworkcode=?" --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/auth_subfields_structure.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/auth_subfields_structure.tt @@ -75,28 +75,45 @@ function displayMoreConstraint(numlayer){
    - [% IF ( loo.new_subfield ) %] -
  1. [% loo.tagsubfieldinput.raw %] 
  2. + [% IF ( loo.new_subfield ) %] +
  3. + + +
  4. + [% ELSE %] +
  5. + +
  6. + [% END %] +
  7. + + [% IF loo.repeatable %] + [% ELSE %] + + [% END %] +
  8. - -
  9. + + [% IF loo.mandatory %] + + [% ELSE %] + [% END %] -
  10. [% loo.repeatable.raw %] 
  11. -
  12. [% loo.mandatory.raw %] 
  13. +
  14. - + [%- IF ( loo.tab == -1 ) -%] [%- ELSE -%] [%- END -%] [%- FOREACH t IN [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] -%] - [%- IF ( loo.tab.default == t && t.length>0 ) -%] + [%- IF ( loo.tab == t && t.length>0 ) -%] - [%- ELSIF ( loo.tab.default == t ) -%] + [%- ELSIF ( loo.tab == t ) -%] [%- ELSE -%] @@ -110,11 +127,11 @@ function displayMoreConstraint(numlayer){ Display
    1. - + [%- IF ( loo.ohidden == 0 ) -%] - [%- ELSIF ( loo.ohidden.default == -5 ) -%] + [%- ELSIF ( loo.ohidden == -5 ) -%] [%- ELSE -%] @@ -130,7 +147,15 @@ function displayMoreConstraint(numlayer){
      Advanced constraints:
        -
      1. [% loo.isurl.raw %] (if checked, it means that the subfield is a URL and can be clicked)
      2. +
      3. + + [% IF loo.isurl %] + + [% ELSE %] + + [% END %] + (if checked, it means that the subfield is a URL and can be clicked) +
      4. @@ -143,11 +168,11 @@ function displayMoreConstraint(numlayer){
        1. - + [%- FOREACH value IN loo.kohafields %] + [% IF ( value == loo.kohafield && value.length>0 ) -%] - [%- ELSIF ( value == loo.kohafield.default ) -%] + [%- ELSIF ( value == loo.kohafield ) -%] [%- ELSIF ( value.length==0 ) -%] @@ -159,11 +184,11 @@ function displayMoreConstraint(numlayer){
        2. - + [%- FOREACH value IN loo.authorised_values %] + [% IF ( value == loo.authorised_value && value.length>0 ) -%] - [%- ELSIF ( value == loo.authorised_value.default ) -%] + [%- ELSIF ( value == loo.authorised_value ) -%] [%- ELSIF ( value.length==0 ) -%] @@ -175,11 +200,11 @@ function displayMoreConstraint(numlayer){
        3. - + [%- FOREACH value IN loo.frameworkcodes %] + [% IF ( value == loo.frameworkcode && value.length>0 ) -%] - [%- ELSIF ( value == loo.frameworkcode.default ) -%] + [%- ELSIF ( value == loo.frameworkcode ) -%] [%- ELSIF ( value.length==0 ) -%] @@ -191,11 +216,11 @@ function displayMoreConstraint(numlayer){
        4. - + [%- FOREACH value IN loo.value_builders %] + [% IF ( value == loo.value_builder && value.length>0 ) -%] - [%- ELSIF ( value == loo.value_builder.default ) -%] + [%- ELSIF ( value == loo.value_builder ) -%] [%- ELSIF ( value.length==0 ) -%] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc_subfields_structure.tt @@ -227,23 +227,37 @@ function populateHiddenCheckboxes(tab) { [% END %]
        5. -
        6. [% loo.repeatable.raw %]
        7. -
        8. [% loo.mandatory.raw %]
        9. +
        10. + + [% IF loo.repeatable %] + + [% ELSE %] + + [% END %] +
        11. +
        12. + + [% IF loo.mandatory %] + + [% ELSE %] + + [% END %] +
        13. - + [%- IF ( loo.tab == -1 ) -%] [%- ELSE -%] [%- END -%] [%- FOREACH t IN [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] -%] - [%- IF ( loo.tab.default == t ) -%] + [%- IF ( loo.tab == t ) -%] [%- ELSE -%] [%- END -%] [%- END -%] - [%- IF ( loo.tab.default == 10 ) -%] + [%- IF ( loo.tab == 10 ) -%] [%- ELSE -%] @@ -275,13 +289,21 @@ function populateHiddenCheckboxes(tab) {
        14. -
        15. [% loo.isurl.raw %] (if checked, it means that the subfield is a URL and can be clicked)
        16. +
        17. + + [% IF loo.isurl %] + + [% ELSE %] + + [% END %] + (if checked, it means that the subfield is a URL and can be clicked) +
        18. (e.g., Title or Local-Number) NOTE: If you change this value you must ask your administrator to run misc/batchRebuildBiblioTables.pl.
        19. - + [% FOREACH value IN loo.kohafields %] + [% IF ( value == loo.kohafield ) %] [% ELSE %] @@ -298,9 +320,9 @@ function populateHiddenCheckboxes(tab) {
          1. - + [% FOREACH value IN loo.authorised_values %] + [% IF ( value == loo.authorised_value ) %] [% ELSE %] @@ -310,9 +332,9 @@ function populateHiddenCheckboxes(tab) {
          2. - + [% FOREACH value IN loo.authtypes %] + [% IF ( value == loo.authtypecode ) %] [% ELSE %] @@ -322,9 +344,9 @@ function populateHiddenCheckboxes(tab) {
          3. - + [% FOREACH value IN loo.value_builders %] + [% IF ( value == loo.value_builder ) %] [% ELSE %] --