[Koha-patches] [PATCH] Branch auto-selection in additem

Joe Atzberger joe.atzberger at liblime.com
Wed Jul 8 23:52:18 CEST 2009


Adding a new item should pre-select the library you are logged in at, where possible.
Use GetBranchesLoop.  This solves indy branches filtering, and sort order problems.
Set default off of ->{selected}, to establish pre-selected branch.
Fix flags check in onlymine sub, so superlibrarian + other flags still gets everything.
Removed defined(@array) check, since perl -wc warns it is deprecated.
Note new FIXME for botched date processing.
---
 C4/Branch.pm                                       |    2 +-
 cataloguing/additem.pl                             |   27 +++++++------------
 .../prog/en/modules/cataloguing/additem.tmpl       |    2 +-
 3 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/C4/Branch.pm b/C4/Branch.pm
index a2558d9..7dfd737 100644
--- a/C4/Branch.pm
+++ b/C4/Branch.pm
@@ -141,7 +141,7 @@ sub onlymine {
     return 
     C4::Context->preference('IndependantBranches') &&
     C4::Context->userenv                           &&
-    C4::Context->userenv->{flags}!=1               &&
+    C4::Context->userenv->{flags} %2 != 1          &&
     C4::Context->userenv->{branch}                 ;
 }
 
diff --git a/cataloguing/additem.pl b/cataloguing/additem.pl
index a7595e7..9509e43 100755
--- a/cataloguing/additem.pl
+++ b/cataloguing/additem.pl
@@ -197,8 +197,7 @@ my ($branchtagfield, $branchtagsubfield) = &GetMarcFromKohaField("items.homebran
 
 foreach my $field (@fields) {
     next if ($field->tag()<10);
-    my @subf = $field->subfields;
-    (defined @subf) or @subf = ();
+    my @subf = $field->subfields || ();
     my %this_row;
 # loop through each subfield
     for my $i (0..$#subf) {
@@ -254,11 +253,8 @@ my @loop_data =();
 my $i=0;
 my $authorised_values_sth = $dbh->prepare("SELECT authorised_value,lib FROM authorised_values WHERE category=? ORDER BY lib");
 
-my $onlymine = C4::Context->preference('IndependantBranches') && 
-               C4::Context->userenv                           && 
-               C4::Context->userenv->{flags} % 2 == 0         && 
-               C4::Context->userenv->{branch};
-my $branches = GetBranches($onlymine);  # build once ahead of time, instead of multiple times later.
+my $branches = GetBranchesLoop();  # build once ahead of time, instead of multiple times later.
+my $pref_itemcallnumber = C4::Context->preference('itemcallnumber');
 
 foreach my $tag (sort keys %{$tagslib}) {
 # loop through each subfield
@@ -286,14 +282,13 @@ foreach my $tag (sort keys %{$tagslib}) {
     unless ($value) {
         $value = $tagslib->{$tag}->{$subfield}->{defaultvalue};
         # get today date & replace YYYY, MM, DD if provided in the default value
-        my ( $year, $month, $day ) = split ',', $today_iso;
+        my ( $year, $month, $day ) = split ',', $today_iso;     # FIXME: iso dates don't have commas!
         $value =~ s/YYYY/$year/g;
         $value =~ s/MM/$month/g;
         $value =~ s/DD/$day/g;
     }
     $subfield_data{visibility} = "display:none;" if (($tagslib->{$tag}->{$subfield}->{hidden} > 4) || ($tagslib->{$tag}->{$subfield}->{hidden} < -4));
     # testing branch value if IndependantBranches.
-    my $pref_itemcallnumber = C4::Context->preference('itemcallnumber');
     if (!$value && $tagslib->{$tag}->{$subfield}->{kohafield} eq 'items.itemcallnumber' && $pref_itemcallnumber) {
         my $CNtag       = substr($pref_itemcallnumber, 0, 3);
         my $CNsubfield  = substr($pref_itemcallnumber, 3, 1);
@@ -314,27 +309,25 @@ foreach my $tag (sort keys %{$tagslib}) {
       # builds list, depending on authorised value...
   
       if ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "branches" ) {
-          foreach my $thisbranch ( sort keys %$branches ) {
-              push @authorised_values, $thisbranch;
-              $authorised_lib{$thisbranch} = $branches->{$thisbranch}->{'branchname'};
+          foreach my $thisbranch (@$branches) {
+              push @authorised_values, $thisbranch->{value};
+              $authorised_lib{$thisbranch->{value}} = $thisbranch->{branchname};
+              $value = $thisbranch->{value} if $thisbranch->{selected};
           }
       }
       elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) {
           push @authorised_values, "" unless ( $tagslib->{$tag}->{$subfield}->{mandatory} );
           my $sth = $dbh->prepare("select itemtype,description from itemtypes order by description");
           $sth->execute;
-          my $itemtype;     # FIXME: double declaration of $itemtype
           while ( my ( $itemtype, $description ) = $sth->fetchrow_array ) {
               push @authorised_values, $itemtype;
               $authorised_lib{$itemtype} = $description;
           }
 
           unless ( $value ) {
-              my $default_itemtype;
               my $itype_sth = $dbh->prepare("SELECT itemtype FROM biblioitems WHERE biblionumber = ?");
               $itype_sth->execute( $biblionumber );
-              ( $default_itemtype ) = $itype_sth->fetchrow_array;
-              $value = $default_itemtype;
+              ( $value ) = $itype_sth->fetchrow_array;
           }
   
           #---- class_sources
@@ -364,7 +357,7 @@ foreach my $tag (sort keys %{$tagslib}) {
               $authorised_lib{$value} = $lib;
           }
       }
-      $subfield_data{marc_value} =CGI::scrolling_list( # FIXME: factor out scrolling_list
+      $subfield_data{marc_value} =CGI::scrolling_list(      # FIXME: factor out scrolling_list
           -name     => "field_value",
           -values   => \@authorised_values,
           -default  => $value,
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
index 841279b..ca745e4 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/cataloguing/additem.tmpl
@@ -222,7 +222,7 @@ function set_to_today(id, force) {
                 <!-- /TMPL_IF -->
    
             </div></li>
-        <!-- /tmpl_loop -->
+        <!-- /TMPL_LOOP -->
     </ol>
     </fieldset>
     <input type="hidden" name="indicator" value=" " />
-- 
1.5.6.5




More information about the Koha-patches mailing list