X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=admin%2Fbranches.pl;h=9e6b14a0a40746a25a2f7208b56b63c187274657;hb=9c5e40e4923179bf0b2b630d3e09797dc4c1fdb0;hp=ed7625c971da7230d26a3a9df6270b6f0055cff4;hpb=c90dd8b5124225964ceb3b9c2498e7f611c5d7a0;p=koha.git diff --git a/admin/branches.pl b/admin/branches.pl index ed7625c971..9e6b14a0a4 100755 --- a/admin/branches.pl +++ b/admin/branches.pl @@ -13,15 +13,15 @@ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR # A PARTICULAR PURPOSE. See the GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. =head1 branches.pl FIXME: individual fields in branch address need to be exported to templates, in order to fix bug 180; need to notify translators -FIXME: looped html (e.g., list of checkboxes) need to be properly + FIXME: looped html (e.g., list of checkboxes) need to be properly TMPL_LOOP'ized; doing this properly will fix bug 130; need to notify translators FIXME: need to implement the branch categories stuff @@ -34,7 +34,7 @@ FIXME: looped html (e.g., list of checkboxes) need to be properly Finlay working on this file from 26-03-2002 Reorganising this branches admin page..... - + =cut use strict; @@ -63,7 +63,7 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user( query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { parameters => 1}, + flagsrequired => { parameters => 'parameters_remaining_permissions'}, debug => 1, } ); @@ -76,14 +76,14 @@ $template->param( ($op || 'else') => 1 ); if ( $op eq 'add' ) { # If the user has pressed the "add new branch" button. - $template->param( 'heading-branches-add-branch-p' => 1 ); + $template->param( 'heading_branches_add_branch_p' => 1 ); editbranchform($branchcode,$template); } elsif ( $op eq 'edit' ) { # if the user has pressed the "edit branch settings" button. - $template->param( 'heading-branches-add-branch-p' => 0, + $template->param( 'heading_branches_add_branch_p' => 0, 'add' => 1, ); editbranchform($branchcode,$template); } @@ -96,17 +96,28 @@ elsif ( $op eq 'add_validate' ) { default("MESSAGE1",$template); } else { - my $error = ModBranch($params); # FIXME: causes warnings to log on duplicate branchcode - # if error saving, stay on edit and rise error - if ($error) { - # copy input parameters back to form - # FIXME - doing this doesn't preserve any branch group selections, but good enough for now - $template->param(%$params); # FIXME: Allows user to set ANY TMPL_VAR to ANY value!! - $template->param(branch_name => $params->{branchname}); - $template->param( 'heading-branches-add-branch-p' => 1, 'add' => 1, "ERROR$error" => 1 ); - } else { - $template->param( else => 1); - default("MESSAGE2",$template); + my $mod_branch = 1; + if ($params->{add}) { + my ($existing) = + C4::Context->dbh->selectrow_array("SELECT count(*) FROM branches WHERE branchcode = ?", {}, $branchcode); + if ($existing > 0) { + $mod_branch = 0; + _branch_to_template($params, $template); # preserve most (FIXME) of user's input + $template->param( 'heading_branches_add_branch_p' => 1, 'add' => 1, 'ERROR1' => 1 ); + } + } + if ($mod_branch) { + my $error = ModBranch($params); # FIXME: causes warnings to log on duplicate branchcode + # if error saving, stay on edit and rise error + if ($error) { + # copy input parameters back to form + # FIXME - doing this doesn't preserve any branch group selections, but good enough for now + editbranchform($branchcode,$template); + $template->param( 'heading_branches_add_branch_p' => 1, 'add' => 1, "ERROR$error" => 1 ); + } else { + $template->param( else => 1); + default("MESSAGE2",$template); + } } } } @@ -115,10 +126,21 @@ elsif ( $op eq 'delete' ) { # check to see if the branchcode is being used in the database somewhere.... my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare("select count(*) from items where holdingbranch=? or homebranch=?"); - $sth->execute( $branchcode, $branchcode ); - my ($total) = $sth->fetchrow_array; - if ($total) { + my $sthitems = $dbh->prepare("select count(*) from items where holdingbranch=? or homebranch=?"); + my $sthborrowers = $dbh->prepare("select count(*) from borrowers where branchcode=?"); + $sthitems->execute( $branchcode, $branchcode ); + $sthborrowers->execute( $branchcode ); + my ($totalitems) = $sthitems->fetchrow_array; + my ($totalborrowers) = $sthborrowers->fetchrow_array; + if ($totalitems && !$totalborrowers) { + $template->param( else => 1 ); + default("MESSAGE10", $template); + } + elsif (!$totalitems && $totalborrowers){ + $template->param( else => 1 ); + default("MESSAGE11", $template); + } + elsif ($totalitems && $totalborrowers){ $template->param( else => 1 ); default("MESSAGE7", $template); } @@ -138,7 +160,7 @@ elsif ( $op eq 'delete_confirmed' ) { elsif ( $op eq 'editcategory' ) { # If the user has pressed the "add new category" or "modify" buttons. - $template->param( 'heading-branches-edit-category-p' => 1 ); + $template->param( 'heading_branches_edit_category_p' => 1 ); editcatform($categorycode,$template); } elsif ( $op eq 'addcategory_validate' ) { @@ -146,9 +168,21 @@ elsif ( $op eq 'addcategory_validate' ) { $template->param( else => 1 ); # confirm settings change... my $params = $input->Vars; + $params->{'show_in_pulldown'} = ( $params->{'show_in_pulldown'} eq 'on' ) ? 1 : 0; + unless ( $params->{'categorycode'} && $params->{'categoryname'} ) { default("MESSAGE4",$template); } + elsif ($input->param('add')){ + # doing an add must check the code is unique + if (CheckCategoryUnique($input->param('categorycode'))){ + ModBranchCategoryInfo($params); + default("MESSAGE5",$template); + } + else { + default("MESSAGE9",$template); + } + } else { ModBranchCategoryInfo($params); default("MESSAGE5",$template); @@ -157,12 +191,10 @@ elsif ( $op eq 'addcategory_validate' ) { elsif ( $op eq 'delete_category' ) { # if the user has pressed the "delete branch" button. - my $message = "MESSAGE8" if CheckBranchCategorycode($categorycode); - if ($message) { + if ( CheckBranchCategorycode($categorycode) ) { $template->param( else => 1 ); - default($message,$template); - } - else { + default( 'MESSAGE8', $template ); + } else { $template->param( delete_category => 1 ); $template->param( categorycode => $categorycode ); } @@ -189,7 +221,7 @@ sub default { my $innertemplate = shift or return; $innertemplate->param($message => 1) if $message; $innertemplate->param( - 'heading-branches-p' => 1, + 'heading_branches_p' => 1, ); branchinfotable("",$innertemplate); } @@ -202,24 +234,31 @@ sub editbranchform { my $data; my $oldprinter = ""; + + # make the checkboxes..... + my $catinfo = GetBranchCategories(); + if ($branchcode) { $data = GetBranchInfo($branchcode); $data = $data->[0]; + if ( exists $data->{categories} ) { + # Set the selected flag for the categories of this branch + $catinfo = [ + map { + my $catcode = $_->{categorycode}; + if ( grep {/$catcode/} @{$data->{categories}} ){ + $_->{selected} = 1; + } + $_; + } @{$catinfo} + ]; + } # get the old printer of the branch $oldprinter = $data->{'branchprinter'} || ''; - $innertemplate->param( - branchcode => $data->{'branchcode'}, - branch_name => $data->{'branchname'}, - branchaddress1 => $data->{'branchaddress1'}, - branchaddress2 => $data->{'branchaddress2'}, - branchaddress3 => $data->{'branchaddress3'}, - branchphone => $data->{'branchphone'}, - branchfax => $data->{'branchfax'}, - branchemail => $data->{'branchemail'}, - branchip => $data->{'branchip'} - ); + _branch_to_template($data, $innertemplate); } + $innertemplate->param( categoryloop => $catinfo ); foreach my $thisprinter ( keys %$printers ) { push @printerloop, { @@ -230,29 +269,6 @@ sub editbranchform { } $innertemplate->param( printerloop => \@printerloop ); - # make the checkboxes..... - # - # We export a "categoryloop" array to the template, each element of which - # contains separate 'categoryname', 'categorycode', 'codedescription', and - # 'checked' fields. The $checked field is either '' or 'checked="checked"' - - my $catinfo = GetBranchCategory(); - my @categoryloop = (); - foreach my $cat (@$catinfo) { - my $checked = ""; - my $tmp = quotemeta( $cat->{'categorycode'} ); - if ( grep { /^$tmp$/ } @{ $data->{'categories'} } ) { - $checked = "checked=\"checked\""; - } - push @categoryloop, { - categoryname => $cat->{'categoryname'}, - categorycode => $cat->{'categorycode'}, - categorytype => $cat->{'categorytype'}, - codedescription => $cat->{'codedescription'}, - checked => $checked, - }; - } - $innertemplate->param( categoryloop => \@categoryloop ); for my $obsolete ( 'categoryname', 'categorycode', 'codedescription' ) { $innertemplate->param( @@ -269,11 +285,11 @@ sub editcatform { my $data; if ($categorycode) { my $data = GetBranchCategory($categorycode); - $data = $data->[0]; $innertemplate->param( categorycode => $data->{'categorycode'}, categoryname => $data->{'categoryname'}, codedescription => $data->{'codedescription'}, + show_in_pulldown => $data->{'show_in_pulldown'}, ); } for my $ctype (GetCategoryTypes()) { @@ -301,9 +317,14 @@ sub branchinfotable { # - branchaddress1 \ # - branchaddress2 | # - branchaddress3 | comprising the old "address" field + # - branchzip | + # - branchcity | + # - branchcountry | # - branchphone | # - branchfax | # - branchemail / + # - branchurl / + # - opac_info (can contain HTML) # - address-empty-p (1 if no address information, 0 otherwise) # - categories (containing a static error message) # - category_list (loop containing "categoryname") @@ -316,9 +337,11 @@ sub branchinfotable { my $address_empty_p = 1; for my $field ( 'branchaddress1', 'branchaddress2', - 'branchaddress3', 'branchphone', - 'branchfax', 'branchemail', - 'branchip', 'branchprinter' + 'branchaddress3', 'branchzip', + 'branchcity', 'branchstate', 'branchcountry', + 'branchphone', 'branchfax', + 'branchemail', 'branchurl', 'opac_info', + 'branchip', 'branchprinter', 'branchnotes' ) { $row{$field} = $branch->{$field}; @@ -330,7 +353,7 @@ sub branchinfotable { my $no_categories_p = 1; my @categories; foreach my $cat ( @{ $branch->{'categories'} } ) { - my ($catinfo) = @{ GetBranchCategory($cat) }; + my $catinfo = GetBranchCategory($cat); push @categories, { 'categoryname' => $catinfo->{'categoryname'} }; $no_categories_p = 0; } @@ -345,8 +368,8 @@ sub branchinfotable { } my @branchcategories = (); for my $ctype ( GetCategoryTypes() ) { - my $catinfo = GetBranchCategories(undef,$ctype); - my @categories; + my $catinfo = GetBranchCategories($ctype); + my @categories; foreach my $cat (@$catinfo) { push @categories, { categoryname => $cat->{'categoryname'}, @@ -355,7 +378,7 @@ sub branchinfotable { categorytype => $cat->{'categorytype'}, }; } - push @branchcategories, { categorytype => $ctype , $ctype => 1 , catloop => \@categories}; + push @branchcategories, { categorytype => $ctype , $ctype => 1 , catloop => ( @categories ? \@categories : undef) }; } $innertemplate->param( branches => \@loop_data, @@ -364,6 +387,28 @@ sub branchinfotable { } +sub _branch_to_template { + my ($data, $template) = @_; + $template->param( + branchcode => $data->{'branchcode'}, + branch_name => $data->{'branchname'}, + branchaddress1 => $data->{'branchaddress1'}, + branchaddress2 => $data->{'branchaddress2'}, + branchaddress3 => $data->{'branchaddress3'}, + branchzip => $data->{'branchzip'}, + branchcity => $data->{'branchcity'}, + branchstate => $data->{'branchstate'}, + branchcountry => $data->{'branchcountry'}, + branchphone => $data->{'branchphone'}, + branchfax => $data->{'branchfax'}, + branchemail => $data->{'branchemail'}, + branchurl => $data->{'branchurl'}, + opac_info => $data->{'opac_info'}, + branchip => $data->{'branchip'}, + branchnotes => $data->{'branchnotes'}, + ); +} + output_html_with_http_headers $input, $cookie, $template->output; # Local Variables: