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

(-)a/C4/Auth.pm (-10 / +39 lines)
Lines 26-31 use CGI::Session; Link Here
26
26
27
require Exporter;
27
require Exporter;
28
use C4::Context;
28
use C4::Context;
29
use C4::Koha;
29
use C4::Templates;    # to get the template
30
use C4::Templates;    # to get the template
30
use C4::Branch; # GetBranches
31
use C4::Branch; # GetBranches
31
use C4::VirtualShelves;
32
use C4::VirtualShelves;
Lines 45-51 BEGIN { Link Here
45
    $debug       = $ENV{DEBUG};
46
    $debug       = $ENV{DEBUG};
46
    @ISA         = qw(Exporter);
47
    @ISA         = qw(Exporter);
47
    @EXPORT      = qw(&checkauth &get_template_and_user &haspermission &get_user_subpermissions);
48
    @EXPORT      = qw(&checkauth &get_template_and_user &haspermission &get_user_subpermissions);
48
    @EXPORT_OK   = qw(&check_api_auth &get_session &check_cookie_auth &checkpw &get_all_subpermissions &get_user_subpermissions);
49
    @EXPORT_OK   = qw(&check_api_auth &get_session &check_cookie_auth &checkpw
50
                      &get_all_subpermissions &get_user_subpermissions &get_user_printer);
49
    %EXPORT_TAGS = ( EditPermissions => [qw(get_all_subpermissions get_user_subpermissions)] );
51
    %EXPORT_TAGS = ( EditPermissions => [qw(get_all_subpermissions get_user_subpermissions)] );
50
    $ldap        = C4::Context->config('useldapserver') || 0;
52
    $ldap        = C4::Context->config('useldapserver') || 0;
51
    $cas         = C4::Context->preference('casAuthentication');
53
    $cas         = C4::Context->preference('casAuthentication');
Lines 309-314 sub get_template_and_user { Link Here
309
        $template->param(dateformat_iso => 1);
311
        $template->param(dateformat_iso => 1);
310
    }
312
    }
311
313
314
    my $userenv = C4::Context->userenv;
315
    my $userenv_branch = $userenv ? $userenv->{"branch"} : undef;
316
312
    # these template parameters are set the same regardless of $in->{'type'}
317
    # these template parameters are set the same regardless of $in->{'type'}
313
    $template->param(
318
    $template->param(
314
            "BiblioDefaultView".C4::Context->preference("BiblioDefaultView")         => 1,
319
            "BiblioDefaultView".C4::Context->preference("BiblioDefaultView")         => 1,
Lines 316-324 sub get_template_and_user { Link Here
316
            GoogleJackets                => C4::Context->preference("GoogleJackets"),
321
            GoogleJackets                => C4::Context->preference("GoogleJackets"),
317
	    OpenLibraryCovers            => C4::Context->preference("OpenLibraryCovers"),
322
	    OpenLibraryCovers            => C4::Context->preference("OpenLibraryCovers"),
318
            KohaAdminEmailAddress        => "" . C4::Context->preference("KohaAdminEmailAddress"),
323
            KohaAdminEmailAddress        => "" . C4::Context->preference("KohaAdminEmailAddress"),
319
            LoginBranchcode              => (C4::Context->userenv?C4::Context->userenv->{"branch"}:"insecure"),
324
            LoginBranchcode              => ($userenv?$userenv_branch:"insecure"),
320
            LoginFirstname               => (C4::Context->userenv?C4::Context->userenv->{"firstname"}:"Bel"),
325
            LoginFirstname               => ($userenv?$userenv->{"firstname"}:"Bel"),
321
            LoginSurname                 => C4::Context->userenv?C4::Context->userenv->{"surname"}:"Inconnu",
326
            LoginSurname                 => $userenv?$userenv->{"surname"}:"Inconnu",
322
            TagsEnabled                  => C4::Context->preference("TagsEnabled"),
327
            TagsEnabled                  => C4::Context->preference("TagsEnabled"),
323
            hide_marc                    => C4::Context->preference("hide_marc"),
328
            hide_marc                    => C4::Context->preference("hide_marc"),
324
            item_level_itypes            => C4::Context->preference('item-level_itypes'),
329
            item_level_itypes            => C4::Context->preference('item-level_itypes'),
Lines 345-351 sub get_template_and_user { Link Here
345
            IntranetNav                 => C4::Context->preference("IntranetNav"),
350
            IntranetNav                 => C4::Context->preference("IntranetNav"),
346
            IntranetmainUserblock       => C4::Context->preference("IntranetmainUserblock"),
351
            IntranetmainUserblock       => C4::Context->preference("IntranetmainUserblock"),
347
            LibraryName                 => C4::Context->preference("LibraryName"),
352
            LibraryName                 => C4::Context->preference("LibraryName"),
348
            LoginBranchname             => (C4::Context->userenv?C4::Context->userenv->{"branchname"}:"insecure"),
353
            LoginBranchname             => ($userenv?$userenv->{"branchname"}:"insecure"),
349
            advancedMARCEditor          => C4::Context->preference("advancedMARCEditor"),
354
            advancedMARCEditor          => C4::Context->preference("advancedMARCEditor"),
350
            canreservefromotherbranches => C4::Context->preference('canreservefromotherbranches'),
355
            canreservefromotherbranches => C4::Context->preference('canreservefromotherbranches'),
351
            intranetcolorstylesheet     => C4::Context->preference("intranetcolorstylesheet"),
356
            intranetcolorstylesheet     => C4::Context->preference("intranetcolorstylesheet"),
Lines 364-369 sub get_template_and_user { Link Here
364
            OPACLocalCoverImages        => C4::Context->preference('OPACLocalCoverImages'),
369
            OPACLocalCoverImages        => C4::Context->preference('OPACLocalCoverImages'),
365
            AllowMultipleCovers         => C4::Context->preference('AllowMultipleCovers'),
370
            AllowMultipleCovers         => C4::Context->preference('AllowMultipleCovers'),
366
        );
371
        );
372
        if ( C4::Context->preference('UsePrintQueues') ) {
373
            my $printer = get_user_printer();
374
            my $printer_rec = $printer ? GetPrinterDetails($printer) : {};
375
            $template->param(
376
                UsePrintQueues          => 1,
377
                PrinterName             => $printer_rec->{printername},
378
            );
379
        }
367
    }
380
    }
368
    else {
381
    else {
369
        warn "template type should be OPAC, here it is=[" . $in->{'type'} . "]" unless ( $in->{'type'} eq 'opac' );
382
        warn "template type should be OPAC, here it is=[" . $in->{'type'} . "]" unless ( $in->{'type'} eq 'opac' );
Lines 382-389 sub get_template_and_user { Link Here
382
        my $opac_name = '';
395
        my $opac_name = '';
383
        if (($opac_search_limit =~ /branch:(\w+)/ && $opac_limit_override) || $in->{'query'}->param('limit') =~ /branch:(\w+)/){
396
        if (($opac_search_limit =~ /branch:(\w+)/ && $opac_limit_override) || $in->{'query'}->param('limit') =~ /branch:(\w+)/){
384
            $opac_name = $1;   # opac_search_limit is a branch, so we use it.
397
            $opac_name = $1;   # opac_search_limit is a branch, so we use it.
385
        } elsif (C4::Context->preference("SearchMyLibraryFirst") && C4::Context->userenv && C4::Context->userenv->{'branch'}) {
398
        } elsif (C4::Context->preference("SearchMyLibraryFirst") && $userenv_branch) {
386
            $opac_name = C4::Context->userenv->{'branch'};
399
            $opac_name = $userenv_branch
387
        }
400
        }
388
	my $checkstyle = C4::Context->preference("opaccolorstylesheet");
401
	my $checkstyle = C4::Context->preference("opaccolorstylesheet");
389
	if ($checkstyle =~ /http/)
402
	if ($checkstyle =~ /http/)
Lines 402-408 sub get_template_and_user { Link Here
402
            CalendarFirstDayOfWeek      => (C4::Context->preference("CalendarFirstDayOfWeek") eq "Sunday")?0:1,
415
            CalendarFirstDayOfWeek      => (C4::Context->preference("CalendarFirstDayOfWeek") eq "Sunday")?0:1,
403
            LibraryName               => "" . C4::Context->preference("LibraryName"),
416
            LibraryName               => "" . C4::Context->preference("LibraryName"),
404
            LibraryNameTitle          => "" . $LibraryNameTitle,
417
            LibraryNameTitle          => "" . $LibraryNameTitle,
405
            LoginBranchname           => C4::Context->userenv?C4::Context->userenv->{"branchname"}:"",
418
            LoginBranchname           => $userenv?$userenv->{"branchname"}:"",
406
            OPACAmazonEnabled         => C4::Context->preference("OPACAmazonEnabled"),
419
            OPACAmazonEnabled         => C4::Context->preference("OPACAmazonEnabled"),
407
            OPACAmazonSimilarItems    => C4::Context->preference("OPACAmazonSimilarItems"),
420
            OPACAmazonSimilarItems    => C4::Context->preference("OPACAmazonSimilarItems"),
408
            OPACAmazonCoverImages     => C4::Context->preference("OPACAmazonCoverImages"),
421
            OPACAmazonCoverImages     => C4::Context->preference("OPACAmazonCoverImages"),
Lines 435-441 sub get_template_and_user { Link Here
435
            RequestOnOpac             => C4::Context->preference("RequestOnOpac"),
448
            RequestOnOpac             => C4::Context->preference("RequestOnOpac"),
436
            'Version'                 => C4::Context->preference('Version'),
449
            'Version'                 => C4::Context->preference('Version'),
437
            hidelostitems             => C4::Context->preference("hidelostitems"),
450
            hidelostitems             => C4::Context->preference("hidelostitems"),
438
            mylibraryfirst            => (C4::Context->preference("SearchMyLibraryFirst") && C4::Context->userenv) ? C4::Context->userenv->{'branch'} : '',
451
            mylibraryfirst            => (C4::Context->preference("SearchMyLibraryFirst") && $userenv) ? $userenv_branch : '',
439
            opaclayoutstylesheet      => "" . C4::Context->preference("opaclayoutstylesheet"),
452
            opaclayoutstylesheet      => "" . C4::Context->preference("opaclayoutstylesheet"),
440
            opacstylesheet            => "" . C4::Context->preference("opacstylesheet"),
453
            opacstylesheet            => "" . C4::Context->preference("opacstylesheet"),
441
            opacbookbag               => "" . C4::Context->preference("opacbookbag"),
454
            opacbookbag               => "" . C4::Context->preference("opacbookbag"),
Lines 1664-1671 sub getborrowernumber { Link Here
1664
    return 0;
1677
    return 0;
1665
}
1678
}
1666
1679
1680
=head2 get_user_printer
1681
1682
  $printer = get_user_printer();
1683
1684
  Returns printer queue that is to be used for the logged in user
1685
1686
=cut
1687
1688
sub get_user_printer {
1689
    my $userenv = C4::Context->userenv or return;
1690
    if (my $printer = $userenv->{branchprinter}) {
1691
        return $printer;
1692
    }
1693
    my $branchname = $userenv->{branch} or return;
1694
    my $branch = GetBranchDetail($branchname) or return;
1695
    return $branch->{branchprinter};
1696
}
1667
1697
1668
END { }    # module clean-up code here (global destructor)
1669
1;
1698
1;
1670
__END__
1699
__END__
1671
1700
(-)a/C4/Context.pm (-1 / +1 lines)
Lines 998-1004 sub userenv { Link Here
998
=head2 set_userenv
998
=head2 set_userenv
999
999
1000
  C4::Context->set_userenv($usernum, $userid, $usercnum, $userfirstname, 
1000
  C4::Context->set_userenv($usernum, $userid, $usercnum, $userfirstname, 
1001
                  $usersurname, $userbranch, $userflags, $emailaddress);
1001
                  $usersurname, $userbranch, $userflags, $emailaddress, $branchprinter);
1002
1002
1003
Establish a hash of user environment variables.
1003
Establish a hash of user environment variables.
1004
1004
(-)a/C4/Koha.pm (-1 / +14 lines)
Lines 34-40 BEGIN { Link Here
34
	@EXPORT = qw(
34
	@EXPORT = qw(
35
		&slashifyDate
35
		&slashifyDate
36
		&subfield_is_koha_internal_p
36
		&subfield_is_koha_internal_p
37
		&GetPrinters &GetPrinter
37
		&GetPrinters &GetPrinter &GetPrinterDetails
38
		&GetItemTypes &getitemtypeinfo
38
		&GetItemTypes &getitemtypeinfo
39
		&GetCcodes
39
		&GetCcodes
40
		&GetSupportName &GetSupportList
40
		&GetSupportName &GetSupportList
Lines 633-638 sub GetPrinter ($$) { Link Here
633
    return $printer;
633
    return $printer;
634
}
634
}
635
635
636
=head2 GetPrinterDetails
637
638
  $printer_rec = GetPrinterDetails( $printqueue );
639
640
=cut
641
642
sub GetPrinterDetails {
643
    my ( $printer ) = @_;
644
    my $dbh = C4::Context->dbh;
645
    my $printername = $dbh->selectrow_hashref('SELECT * FROM printers WHERE printqueue = ?', undef, $printer);
646
    return $printername;
647
}
648
636
=head2 getnbpages
649
=head2 getnbpages
637
650
638
Returns the number of pages to display in a pagination bar, given the number
651
Returns the number of pages to display in a pagination bar, given the number
(-)a/C4/Members.pm (-1 lines)
Lines 997-1003 sub GetPendingIssues { Link Here
997
    # must avoid biblioitems.* to prevent large marc and marcxml fields from killing performance
997
    # must avoid biblioitems.* to prevent large marc and marcxml fields from killing performance
998
    # FIXME: namespace collision: each table has "timestamp" fields.  Which one is "timestamp" ?
998
    # FIXME: namespace collision: each table has "timestamp" fields.  Which one is "timestamp" ?
999
    # FIXME: circ/ciculation.pl tries to sort by timestamp!
999
    # FIXME: circ/ciculation.pl tries to sort by timestamp!
1000
    # FIXME: C4::Print::printslip tries to sort by timestamp!
1001
    # FIXME: namespace collision: other collisions possible.
1000
    # FIXME: namespace collision: other collisions possible.
1002
    # FIXME: most of this data isn't really being used by callers.
1001
    # FIXME: most of this data isn't really being used by callers.
1003
    my $query =
1002
    my $query =
(-)a/admin/branches.pl (-11 / +18 lines)
Lines 226-237 sub default { Link Here
226
226
227
sub editbranchform {
227
sub editbranchform {
228
    my ($branchcode,$innertemplate) = @_;
228
    my ($branchcode,$innertemplate) = @_;
229
    # initiate the scrolling-list to select the printers
229
230
    my $printers = GetPrinters();
231
    my @printerloop;
232
    my $data;
230
    my $data;
233
    my $oldprinter = "";
231
    my $oldprinter = "";
234
235
    if ($branchcode) {
232
    if ($branchcode) {
236
        $data = GetBranchInfo($branchcode);
233
        $data = GetBranchInfo($branchcode);
237
        $data = $data->[0];
234
        $data = $data->[0];
Lines 241-255 sub editbranchform { Link Here
241
        _branch_to_template($data, $innertemplate);
238
        _branch_to_template($data, $innertemplate);
242
    }
239
    }
243
240
244
    foreach my $thisprinter ( keys %$printers ) {
241
    if ( C4::Context->preference('UsePrintQueues') ) {
245
        push @printerloop, {
242
        # initiate the scrolling-list to select the printers
246
            value         => $thisprinter,
243
        my $printers = GetPrinters();
247
            selected      => ( $oldprinter eq $printers->{$thisprinter} ),
244
        my @printerloop;
248
            branchprinter => $printers->{$thisprinter}->{'printqueue'},
245
        foreach my $thisprinter ( keys %$printers ) {
249
        };
246
            push @printerloop, {
247
                value         => $thisprinter,
248
                selected      => ( $oldprinter eq $printers->{$thisprinter} ),
249
                branchprinter => $printers->{$thisprinter}->{'printername'},
250
            };
251
        }
252
253
        $innertemplate->param( printerloop => \@printerloop );
250
    }
254
    }
251
255
252
    $innertemplate->param( printerloop => \@printerloop );
253
    # make the checkboxes.....
256
    # make the checkboxes.....
254
    #
257
    #
255
    # We export a "categoryloop" array to the template, each element of which
258
    # We export a "categoryloop" array to the template, each element of which
Lines 308-313 sub branchinfotable { Link Here
308
311
309
    my ($branchcode,$innertemplate) = @_;
312
    my ($branchcode,$innertemplate) = @_;
310
    my $branchinfo = $branchcode ? GetBranchInfo($branchcode) : GetBranchInfo();
313
    my $branchinfo = $branchcode ? GetBranchInfo($branchcode) : GetBranchInfo();
314
    my $printers = GetPrinters();
311
    my @loop_data = ();
315
    my @loop_data = ();
312
    foreach my $branch (@$branchinfo) {
316
    foreach my $branch (@$branchinfo) {
313
        #
317
        #
Lines 367-372 sub branchinfotable { Link Here
367
        $row{'branch_name'} = $branch->{'branchname'};
371
        $row{'branch_name'} = $branch->{'branchname'};
368
        $row{'branch_code'} = $branch->{'branchcode'};
372
        $row{'branch_code'} = $branch->{'branchcode'};
369
        $row{'value'}       = $branch->{'branchcode'};
373
        $row{'value'}       = $branch->{'branchcode'};
374
        if (my $printer = $branch->{'branchprinter'}) {
375
            $row{'branchprintername'} = $printers->{$printer}->{'printername'};
376
        }
370
377
371
        push @loop_data, \%row;
378
        push @loop_data, \%row;
372
    }
379
    }
(-)a/admin/printers.pl (-6 / +7 lines)
Lines 89-100 if ($op eq 'add_form') { Link Here
89
	#---- if primkey exists, it's a modify action, so read values to modify...
89
	#---- if primkey exists, it's a modify action, so read values to modify...
90
	my $data;
90
	my $data;
91
	if ($searchfield) {
91
	if ($searchfield) {
92
		my $sth=$dbh->prepare("SELECT printername,printqueue,printtype from printers where printername=?");
92
		my $sth=$dbh->prepare("SELECT printername,printqueue,printtype from printers where printqueue=?");
93
		$sth->execute($searchfield);
93
		$sth->execute($searchfield);
94
		$data=$sth->fetchrow_hashref;
94
		$data=$sth->fetchrow_hashref;
95
	}
95
	}
96
96
97
	$template->param(printqueue => $data->{'printqueue'},
97
	$template->param(printqueue => $data->{'printqueue'},
98
			 printername => $data->{'printername'},
98
			 printtype => $data->{'printtype'});
99
			 printtype => $data->{'printtype'});
99
													# END $OP eq ADD_FORM
100
													# END $OP eq ADD_FORM
100
################## ADD_VALIDATE ##################################
101
################## ADD_VALIDATE ##################################
Lines 105-119 if ($op eq 'add_form') { Link Here
105
		my $sth=$dbh->prepare("INSERT INTO printers (printername,printqueue,printtype) VALUES (?,?,?)");
106
		my $sth=$dbh->prepare("INSERT INTO printers (printername,printqueue,printtype) VALUES (?,?,?)");
106
		$sth->execute($input->param('printername'),$input->param('printqueue'),$input->param('printtype'));
107
		$sth->execute($input->param('printername'),$input->param('printqueue'),$input->param('printtype'));
107
	} else {
108
	} else {
108
		my $sth=$dbh->prepare("UPDATE printers SET printqueue=?,printtype=? WHERE printername=?");
109
		my $sth=$dbh->prepare("UPDATE printers SET printername=?,printqueue=?,printtype=? WHERE printqueue=?");
109
		$sth->execute($input->param('printqueue'),$input->param('printtype'),$input->param('printername'));
110
		$sth->execute($input->param('printername'),$input->param('printqueue'),$input->param('printtype'),$searchfield);
110
	}
111
	}
111
													# END $OP eq ADD_VALIDATE
112
													# END $OP eq ADD_VALIDATE
112
################## DELETE_CONFIRM ##################################
113
################## DELETE_CONFIRM ##################################
113
# called by default form, used to confirm deletion of data in DB
114
# called by default form, used to confirm deletion of data in DB
114
} elsif ($op eq 'delete_confirm') {
115
} elsif ($op eq 'delete_confirm') {
115
	$template->param(delete_confirm => 1);
116
	$template->param(delete_confirm => 1);
116
	my $sth=$dbh->prepare("select printername,printqueue,printtype from printers where printername=?");
117
	my $sth=$dbh->prepare("select printername,printqueue,printtype from printers where printqueue=?");
117
	$sth->execute($searchfield);
118
	$sth->execute($searchfield);
118
	my $data=$sth->fetchrow_hashref;
119
	my $data=$sth->fetchrow_hashref;
119
	$template->param(printqueue => $data->{'printqueue'},
120
	$template->param(printqueue => $data->{'printqueue'},
Lines 123-129 if ($op eq 'add_form') { Link Here
123
# called by delete_confirm, used to effectively confirm deletion of data in DB
124
# called by delete_confirm, used to effectively confirm deletion of data in DB
124
} elsif ($op eq 'delete_confirmed') {
125
} elsif ($op eq 'delete_confirmed') {
125
	$template->param(delete_confirmed => 1);
126
	$template->param(delete_confirmed => 1);
126
	my $sth=$dbh->prepare("delete from printers where printername=?");
127
	my $sth=$dbh->prepare("delete from printers where printqueue=?");
127
	$sth->execute($searchfield);
128
	$sth->execute($searchfield);
128
													# END $OP eq DELETE_CONFIRMED
129
													# END $OP eq DELETE_CONFIRMED
129
################## DEFAULT ###########################################
130
################## DEFAULT ###########################################
Lines 131-137 if ($op eq 'add_form') { Link Here
131
	$template->param(else => 1);
132
	$template->param(else => 1);
132
	my ($count,$results)=StringSearch($searchfield,'web');
133
	my ($count,$results)=StringSearch($searchfield,'web');
133
	my $max = ($offset+$pagesize < $count) ? $offset+$pagesize : $count;
134
	my $max = ($offset+$pagesize < $count) ? $offset+$pagesize : $count;
134
	my @loop = (@$results)[$offset..$max];
135
	my @loop = (@$results)[$offset..$max-1];
135
	
136
	
136
	$template->param(loop => \@loop);
137
	$template->param(loop => \@loop);
137
	
138
	
(-)a/circ/circulation.pl (-10 lines)
Lines 66-77 if ($branch){ Link Here
66
    $session->param('branchname', GetBranchName($branch));
66
    $session->param('branchname', GetBranchName($branch));
67
}
67
}
68
68
69
my $printer = $query->param('printer');
70
if ($printer){
71
    # update our session so the userenv is updated
72
    $session->param('branchprinter', $printer);
73
}
74
75
if (!C4::Context->userenv && !$branch){
69
if (!C4::Context->userenv && !$branch){
76
    if ($session->param('branch') eq 'NO_LIBRARY_SET'){
70
    if ($session->param('branch') eq 'NO_LIBRARY_SET'){
77
        # no branch set we can't issue
71
        # no branch set we can't issue
Lines 101-108 $findborrower =~ s|,| |g; Link Here
101
my $borrowernumber = $query->param('borrowernumber');
95
my $borrowernumber = $query->param('borrowernumber');
102
96
103
$branch  = C4::Context->userenv->{'branch'};  
97
$branch  = C4::Context->userenv->{'branch'};  
104
$printer = C4::Context->userenv->{'branchprinter'};
105
106
98
107
# If AutoLocation is not activated, we show the Circulation Parameters to chage settings of librarian
99
# If AutoLocation is not activated, we show the Circulation Parameters to chage settings of librarian
108
if (C4::Context->preference("AutoLocation") != 1) {
100
if (C4::Context->preference("AutoLocation") != 1) {
Lines 661-668 $template->param( Link Here
661
    borrowernumber    => $borrowernumber,
653
    borrowernumber    => $borrowernumber,
662
    branch            => $branch,
654
    branch            => $branch,
663
    branchname        => GetBranchName($borrower->{'branchcode'}),
655
    branchname        => GetBranchName($borrower->{'branchcode'}),
664
    printer           => $printer,
665
    printername       => $printer,
666
    firstname         => $borrower->{'firstname'},
656
    firstname         => $borrower->{'firstname'},
667
    surname           => $borrower->{'surname'},
657
    surname           => $borrower->{'surname'},
668
    showname          => $borrower->{'showname'},
658
    showname          => $borrower->{'showname'},
(-)a/circ/returns.pl (-8 lines)
Lines 36-42 use C4::Context; Link Here
36
use C4::Auth qw/:DEFAULT get_session/;
36
use C4::Auth qw/:DEFAULT get_session/;
37
use C4::Output;
37
use C4::Output;
38
use C4::Circulation;
38
use C4::Circulation;
39
use C4::Print;
40
use C4::Reserves;
39
use C4::Reserves;
41
use C4::Biblio;
40
use C4::Biblio;
42
use C4::Items;
41
use C4::Items;
Lines 73-87 my ( $template, $librarian, $cookie ) = get_template_and_user( Link Here
73
#####################
72
#####################
74
#Global vars
73
#Global vars
75
my $branches = GetBranches();
74
my $branches = GetBranches();
76
my $printers = GetPrinters();
77
75
78
my $printer = C4::Context->userenv ? C4::Context->userenv->{'branchprinter'} : "";
79
my $overduecharges = (C4::Context->preference('finesMode') && C4::Context->preference('finesMode') ne 'off');
76
my $overduecharges = (C4::Context->preference('finesMode') && C4::Context->preference('finesMode') ne 'off');
80
77
81
my $userenv_branch = C4::Context->userenv->{'branch'} || '';
78
my $userenv_branch = C4::Context->userenv->{'branch'} || '';
82
#
83
# Some code to handle the error if there is no branch or printer setting.....
84
#
85
79
86
# Set up the item stack ....
80
# Set up the item stack ....
87
my %returneditems;
81
my %returneditems;
Lines 605-613 foreach ( sort { $a <=> $b } keys %returneditems ) { Link Here
605
$template->param(
599
$template->param(
606
    riloop         => \@riloop,
600
    riloop         => \@riloop,
607
    genbrname      => $branches->{$userenv_branch}->{'branchname'},
601
    genbrname      => $branches->{$userenv_branch}->{'branchname'},
608
    genprname      => $printers->{$printer}->{'printername'},
609
    branchname     => $branches->{$userenv_branch}->{'branchname'},
602
    branchname     => $branches->{$userenv_branch}->{'branchname'},
610
    printer        => $printer,
611
    errmsgloop     => \@errmsgloop,
603
    errmsgloop     => \@errmsgloop,
612
    exemptfine     => $exemptfine,
604
    exemptfine     => $exemptfine,
613
    dropboxmode    => $dropboxmode,
605
    dropboxmode    => $dropboxmode,
(-)a/circ/selectbranchprinter.pl (-7 / +8 lines)
Lines 23-30 use CGI; Link Here
23
23
24
use C4::Context;
24
use C4::Context;
25
use C4::Output;
25
use C4::Output;
26
use C4::Auth qw/:DEFAULT get_session/;
26
use C4::Auth qw/:DEFAULT get_session get_user_printer/;
27
use C4::Print;  # GetPrinters
28
use C4::Koha;
27
use C4::Koha;
29
use C4::Branch; # GetBranches GetBranchesLoop
28
use C4::Branch; # GetBranches GetBranchesLoop
30
29
Lines 56-64 my $userenv_printer = C4::Context->userenv->{'branchprinter'} || ''; Link Here
56
my @updated;
55
my @updated;
57
56
58
# $session lddines here are doing the updating
57
# $session lddines here are doing the updating
59
if ($branch and $branches->{$branch}) {
58
my $branch_rec = $branch ? $branches->{$branch} : undef;
59
if ($branch_rec) {
60
    if (! $userenv_branch or $userenv_branch ne $branch ) {
60
    if (! $userenv_branch or $userenv_branch ne $branch ) {
61
        my $branchname = GetBranchName($branch);
61
        my $branchname = $branch_rec->{branchname};
62
        $template->param(LoginBranchname => $branchname);   # update template for new branch
62
        $template->param(LoginBranchname => $branchname);   # update template for new branch
63
        $template->param(LoginBranchcode => $branch);       # update template for new branch
63
        $template->param(LoginBranchcode => $branch);       # update template for new branch
64
        $session->param('branchname', $branchname);         # update sesssion in DB
64
        $session->param('branchname', $branchname);         # update sesssion in DB
Lines 67-72 if ($branch and $branches->{$branch}) { Link Here
67
            updated_branch => 1,
67
            updated_branch => 1,
68
                old_branch => $userenv_branch,
68
                old_branch => $userenv_branch,
69
        };
69
        };
70
        $printer ||= $branch_rec->{branchprinter};
71
        undef $userenv_printer;
70
    } # else branch the same, no update
72
    } # else branch the same, no update
71
} else {
73
} else {
72
    $branch = $userenv_branch;  # fallback value
74
    $branch = $userenv_branch;  # fallback value
Lines 87-93 if ($printer) { Link Here
87
        };
89
        };
88
    } # else printer is the same, no update
90
    } # else printer is the same, no update
89
} else {
91
} else {
90
    $printer = $userenv_printer;  # fallback value
92
    $printer = get_user_printer();  # fallback value
91
}
93
}
92
94
93
$template->param(updated => \@updated) if (scalar @updated);
95
$template->param(updated => \@updated) if (scalar @updated);
Lines 96-109 unless ($branches->{$branch}) { Link Here
96
    $branch = (keys %$branches)[0];  # if branch didn't really exist, then replace it w/ one that does
98
    $branch = (keys %$branches)[0];  # if branch didn't really exist, then replace it w/ one that does
97
}
99
}
98
100
99
my @printkeys = sort keys %$printers;
101
my @printkeys = keys %$printers;
100
if (scalar(@printkeys) == 1 or not $printers->{$printer}) {
102
if (scalar(@printkeys) == 1 or not $printers->{$printer}) {
101
    $printer = $printkeys[0];   # if printer didn't really exist, or there is only 1 anyway, then replace it w/ one that does
103
    $printer = $printkeys[0];   # if printer didn't really exist, or there is only 1 anyway, then replace it w/ one that does
102
}
104
}
103
105
104
my @printerloop;
106
my @printerloop;
105
foreach ( @printkeys ) {
107
foreach ( @printkeys ) {
106
    next unless ($_); # skip printer if blank.
107
    push @printerloop, {
108
    push @printerloop, {
108
        selected => ( $_ eq $printer ),
109
        selected => ( $_ eq $printer ),
109
        name     => $printers->{$_}->{'printername'},
110
        name     => $printers->{$_}->{'printername'},
(-)a/installer/data/mysql/kohastructure.sql (-8 / +10 lines)
Lines 362-371 CREATE TABLE `branches` ( -- information about your libraries or branches are st Link Here
362
  `branchurl` mediumtext, -- the URL for your library or branch's website
362
  `branchurl` mediumtext, -- the URL for your library or branch's website
363
  `issuing` tinyint(4) default NULL, -- unused in Koha
363
  `issuing` tinyint(4) default NULL, -- unused in Koha
364
  `branchip` varchar(15) default NULL, -- the IP address for your library or branch
364
  `branchip` varchar(15) default NULL, -- the IP address for your library or branch
365
  `branchprinter` varchar(100) default NULL, -- unused in Koha
365
  `branchprinter` varchar(20) default NULL,
366
  `branchnotes` mediumtext, -- notes related to your library or branch
366
  `branchnotes` mediumtext, -- notes related to your library or branch
367
  opac_info text, -- HTML that displays in OPAC
367
  opac_info text, -- HTML that displays in OPAC
368
  UNIQUE KEY `branchcode` (`branchcode`)
368
  UNIQUE KEY `branchcode` (`branchcode`),
369
  FOREIGN KEY (branchprinter) REFERENCES printers (printqueue) ON UPDATE CASCADE
369
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
370
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
370
371
371
--
372
--
Lines 1563-1574 CREATE TABLE `pending_offline_operations` ( Link Here
1563
-- Table structure for table `printers`
1564
-- Table structure for table `printers`
1564
--
1565
--
1565
1566
1566
DROP TABLE IF EXISTS `printers`;
1567
DROP TABLE IF EXISTS printers;
1567
CREATE TABLE `printers` (
1568
CREATE TABLE printers (
1568
  `printername` varchar(40) NOT NULL default '',
1569
  printername varchar(40) NOT NULL default '',
1569
  `printqueue` varchar(20) default NULL,
1570
  printqueue varchar(20) NOT NULL,
1570
  `printtype` varchar(20) default NULL,
1571
  printtype varchar(20) default NULL,
1571
  PRIMARY KEY  (`printername`)
1572
  PRIMARY KEY  (printqueue),
1573
  UNIQUE (printername)
1572
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1574
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1573
1575
1574
--
1576
--
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 362-364 INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES(' Link Here
362
INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('AutoResumeSuspendedHolds',  '1', NULL ,  'Allow suspended holds to be automatically resumed by a set date.',  'YesNo');
362
INSERT INTO systempreferences (variable,value,options,explanation,type) VALUES ('AutoResumeSuspendedHolds',  '1', NULL ,  'Allow suspended holds to be automatically resumed by a set date.',  'YesNo');
363
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacStarRatings','all',NULL,'disable|all|details','Choice');
363
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('OpacStarRatings','all',NULL,'disable|all|details','Choice');
364
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacBrowseResults','1','Disable/enable browsing and paging search results from the OPAC detail page.',NULL,'YesNo');
364
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES('OpacBrowseResults','1','Disable/enable browsing and paging search results from the OPAC detail page.',NULL,'YesNo');
365
INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('UsePrintQueues','0',NULL,NULL,'YesNo');
(-)a/installer/data/mysql/updatedatabase.pl (+13 lines)
Lines 5212-5217 if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) { Link Here
5212
    SetVersion($DBversion);
5212
    SetVersion($DBversion);
5213
}
5213
}
5214
5214
5215
5216
5217
5218
$DBversion = "3.08.00.XXX";
5219
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
5220
    $dbh->do("ALTER TABLE printers DROP PRIMARY KEY, MODIFY printqueue varchar(20) NOT NULL PRIMARY KEY, ADD UNIQUE (printername)");
5221
    $dbh->do("ALTER TABLE branches MODIFY branchprinter varchar(20) NULL, ADD FOREIGN KEY (branchprinter) REFERENCES printers (printqueue) ON UPDATE CASCADE");
5222
    $dbh->do("INSERT INTO systempreferences (variable,value,explanation,options,type) VALUES ('UsePrintQueues','0',NULL,NULL,'YesNo')");
5223
5224
    print "Upgrade to $DBversion done (Add borrowers.default_printqueue and 'UsePrintQueues' syspref)\n";
5225
    SetVersion($DBversion);
5226
}
5227
5215
=head1 FUNCTIONS
5228
=head1 FUNCTIONS
5216
5229
5217
=head2 TableExists($table)
5230
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/header.inc (+3 lines)
Lines 57-62 Link Here
57
                [% LoginBranchname %]
57
                [% LoginBranchname %]
58
            [% END %]
58
            [% END %]
59
            </strong>
59
            </strong>
60
            [% IF UsePrintQueues %]
61
            - [% PrinterName %]
62
            [% END %]
60
            [% IF ( IndependantBranches ) %]
63
            [% IF ( IndependantBranches ) %]
61
                [% IF ( CAN_user_management || CAN_user_editcatalogue_edit_catalogue ) %]
64
                [% IF ( CAN_user_management || CAN_user_editcatalogue_edit_catalogue ) %]
62
                    ( <a class="toplinks" href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set library</a> )
65
                    ( <a class="toplinks" href="/cgi-bin/koha/circ/selectbranchprinter.pl">Set library</a> )
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt (-2 / +2 lines)
Lines 95-102 Link Here
95
<dl>
95
<dl>
96
	[% IF ( NoZebra ) %]<dt><a href="/cgi-bin/koha/admin/stopwords.pl">Stop words</a></dt>
96
	[% IF ( NoZebra ) %]<dt><a href="/cgi-bin/koha/admin/stopwords.pl">Stop words</a></dt>
97
	<dd>Words ignored during search.</dd>[% END %]
97
	<dd>Words ignored during search.</dd>[% END %]
98
	<!-- <dt><a href="/cgi-bin/koha/admin/printers.pl">Network Printers</a></dt>
98
	[% IF UsePrintQueues %]<dt><a href="/cgi-bin/koha/admin/printers.pl">Network Printers</a></dt>
99
	<dd>Printers (UNIX paths).</dd> -->
99
	<dd>Printers (UNIX paths).</dd>[% END %]
100
    <dt><a href="/cgi-bin/koha/admin/z3950servers.pl">Z39.50 client targets</a></dt>
100
    <dt><a href="/cgi-bin/koha/admin/z3950servers.pl">Z39.50 client targets</a></dt>
101
	<dd>Define which servers to query for MARC data in the integrated Z39.50 client.</dd>
101
	<dd>Define which servers to query for MARC data in the integrated Z39.50 client.</dd>
102
</dl>
102
</dl>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/branches.tt (-8 / +12 lines)
Lines 143-152 tinyMCE.init({ Link Here
143
        <li><label for="branchurl">URL</label><input type="text" name="branchurl" id="branchurl" value="[% branchurl |html %]" /></li>
143
        <li><label for="branchurl">URL</label><input type="text" name="branchurl" id="branchurl" value="[% branchurl |html %]" /></li>
144
        <li><label for="opac_info">OPAC info</label><textarea name="opac_info" id="opac_info">[% opac_info |html %]</textarea></li>
144
        <li><label for="opac_info">OPAC info</label><textarea name="opac_info" id="opac_info">[% opac_info |html %]</textarea></li>
145
        <li><label for="branchip">IP</label><input type="text" name="branchip" id="branchip" value="[% branchip |html %]" /> <span class="hint">Can be entered as a single IP, or a subnet such as 192.168.1.*</span></li>
145
        <li><label for="branchip">IP</label><input type="text" name="branchip" id="branchip" value="[% branchip |html %]" /> <span class="hint">Can be entered as a single IP, or a subnet such as 192.168.1.*</span></li>
146
		<!--
146
[% IF UsePrintQueues %]
147
        <li><label for="branchprinter">Library Printer</label>
147
        <li><label for="branchprinter">Library printer</label>
148
            <select id="branchprinter" name="branchprinter">
148
            <select id="branchprinter" name="branchprinter">
149
                <option value="">None</option>
149
                <option value="">(None)</option>
150
            [% FOREACH printerloo IN printerloop %]
150
            [% FOREACH printerloo IN printerloop %]
151
                [% IF ( printerloo.selected ) %]
151
                [% IF ( printerloo.selected ) %]
152
				<option value="[% printerloo.value %]" selected="selected">[% printerloo.branchprinter %]</option>
152
				<option value="[% printerloo.value %]" selected="selected">[% printerloo.branchprinter %]</option>
Lines 155-161 tinyMCE.init({ Link Here
155
				[% END %]
155
				[% END %]
156
                [% END %]
156
                [% END %]
157
            </select></li>
157
            </select></li>
158
			-->
158
[% END %]
159
        <li><label for="branchnotes">Notes</label><input type="text" name="branchnotes" id="branchnotes" value="[% branchnotes |html %]" /></li>
159
        <li><label for="branchnotes">Notes</label><input type="text" name="branchnotes" id="branchnotes" value="[% branchnotes |html %]" /></li>
160
        </ol>
160
        </ol>
161
        </fieldset>
161
        </fieldset>
Lines 198-204 tinyMCE.init({ Link Here
198
            <th>Address</th>
198
            <th>Address</th>
199
            <th>Properties</th>
199
            <th>Properties</th>
200
            <th>IP</th>
200
            <th>IP</th>
201
            <!-- <th>Printer</th> -->
201
[% IF UsePrintQueues %]
202
            <th>Printer</th>
203
[% END %]
202
            <th colspan="2">&nbsp;</th>
204
            <th colspan="2">&nbsp;</th>
203
        </tr></thead><tbody>
205
        </tr></thead><tbody>
204
        [% FOREACH branche IN branches %]
206
        [% FOREACH branche IN branches %]
Lines 250-258 tinyMCE.init({ Link Here
250
                <td>
252
                <td>
251
                    [% branche.branchip %]
253
                    [% branche.branchip %]
252
                </td>
254
                </td>
253
                <!-- <td>
255
[% IF UsePrintQueues %]
254
                    [% branche.branchprinter %]
256
                <td>
255
                </td> -->
257
                    [% branche.branchprintername %]
258
                </td>
259
[% END %]
256
                <td>
260
                <td>
257
                    <a href="[% branche.action %]?op=edit&amp;branchcode=[% branche.value |url %]">Edit</a>
261
                    <a href="[% branche.action %]?op=edit&amp;branchcode=[% branche.value |url %]">Edit</a>
258
                </td>
262
                </td>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+6 lines)
Lines 103-108 Circulation: Link Here
103
            - pref: NoticeCSS
103
            - pref: NoticeCSS
104
              class: url
104
              class: url
105
            - on Notices. (This should be a complete URL, starting with <code>http://</code>)
105
            - on Notices. (This should be a complete URL, starting with <code>http://</code>)
106
        -
107
            - pref: UsePrintQueues
108
              choices:
109
                  yes: "Use"
110
                  no: "Don't use"
111
            - server print queues.
106
    Checkout Policy:
112
    Checkout Policy:
107
        -
113
        -
108
            - pref: AllowNotForLoanOverride
114
            - pref: AllowNotForLoanOverride
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/printers.tt (-9 / +4 lines)
Lines 89-110 Link Here
89
        <form action="[% script_name %]" name="Aform" method="post">
89
        <form action="[% script_name %]" name="Aform" method="post">
90
        <input type="hidden" name="op" value="add_validate" />
90
        <input type="hidden" name="op" value="add_validate" />
91
	[% IF ( searchfield ) %]
91
	[% IF ( searchfield ) %]
92
		<input type="hidden" name="searchfield" value="[% searchfield %]" />
92
		<input type="hidden" name="add" value="0" />
93
		<input type="hidden" name="add" value="0" />
93
	[% ELSE %]
94
	[% ELSE %]
94
		<input type="hidden" name="add" value="1" />
95
		<input type="hidden" name="add" value="1" />
95
	[% END %]
96
	[% END %]
96
	<fieldset class="rows">
97
	<fieldset class="rows">
97
<ol>	[% IF ( searchfield ) %]
98
<ol>
98
		<li>
99
            <span class="label">Printer name: </span>
100
				<input type="hidden" name="printername" id="" value="[% searchfield %]" />[% searchfield %]
101
		</li>
102
	[% ELSE %]
103
		<li>
99
		<li>
104
            <label for="printername">Printer name: </label>
100
            <label for="printername">Printer name: </label>
105
				<input type="text" name="printername" id="printername" size="50" maxlength="50" />
101
				<input type="text" name="printername" id="printername" size="50" maxlength="50" value="[% printername %]" />
106
		</li>
102
		</li>
107
	[% END %]
108
        	<li>
103
        	<li>
109
			<label for="printqueue">Queue: </label>
104
			<label for="printqueue">Queue: </label>
110
			<input type="text" name="printqueue" id="printqueue" size="50" maxlength="50" value="[% printqueue %]" /> 
105
			<input type="text" name="printqueue" id="printqueue" size="50" maxlength="50" value="[% printqueue %]" /> 
Lines 190-196 Link Here
190
			<td>[% loo.printername %]</td>
185
			<td>[% loo.printername %]</td>
191
			<td>[% loo.printqueue %]</td>
186
			<td>[% loo.printqueue %]</td>
192
			<td>[% loo.printtype %]</td>
187
			<td>[% loo.printtype %]</td>
193
			<td><a href="[% loo.script_name %]?op=add_form&amp;searchfield=[% loo.printername %]">Edit</a> <a href="[% loo.script_name %]?op=delete_confirm&amp;searchfield=[% loo.printername %]">Delete</a></td>
188
			<td><a href="[% loo.script_name %]?op=add_form&amp;searchfield=[% loo.printqueue %]">Edit</a> <a href="[% loo.script_name %]?op=delete_confirm&amp;searchfield=[% loo.printqueue %]">Delete</a></td>
194
		</tr>
189
		</tr>
195
		[% END %]
190
		[% END %]
196
	</table>[% ELSE %]<div class="notice">No printers defined.</div>[% END %]
191
	</table>[% ELSE %]<div class="notice">No printers defined.</div>[% END %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (-2 lines)
Lines 435-441 No patron matched <span class="ex">[% message %]</span> Link Here
435
    <legend>Patron selection</legend>
435
    <legend>Patron selection</legend>
436
436
437
    <input type="hidden" name="branch" value="[% branch %]" />
437
    <input type="hidden" name="branch" value="[% branch %]" />
438
    <input type="hidden" name="printer" value="[% printer %]" />
439
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
438
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
440
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
439
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
441
440
Lines 522-528 No patron matched <span class="ex">[% message %]</span> Link Here
522
</div>[% END %]
521
</div>[% END %]
523
          <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrowernumber %]" />
522
          <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrowernumber %]" />
524
          <input type="hidden" name="branch" value="[% branch %]" />
523
          <input type="hidden" name="branch" value="[% branch %]" />
525
          <input type="hidden" name="printer" value="[% printer %]" />
526
          <input type="hidden" name="print" value="maybe" />
524
          <input type="hidden" name="print" value="maybe" />
527
          <input type="hidden" name="debt_confirmed" value="[% debt_confirmed %]" />
525
          <input type="hidden" name="debt_confirmed" value="[% debt_confirmed %]" />
528
                [% IF ( CHARGES ) %]
526
                [% IF ( CHARGES ) %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/selectbranchprinter.tt (-4 / +2 lines)
Lines 28-34 Updated:<ul> Link Here
28
    [% IF ( update.updated_branch ) %]
28
    [% IF ( update.updated_branch ) %]
29
        <li>Library: [% update.old_branch or "?" %] &rArr; [% update.LoginBranchcode or "?" %]</li>
29
        <li>Library: [% update.old_branch or "?" %] &rArr; [% update.LoginBranchcode or "?" %]</li>
30
    [% ELSIF ( update.updated_printer ) %]
30
    [% ELSIF ( update.updated_printer ) %]
31
      <!-- FIXME:  <li>Printer: [% update.old_printer or "?" %] &rArr; [% update.new_printer or "?" %]</li> -->
31
        <li>Printer: [% update.old_printer or "?" %] &rArr; [% update.new_printer or "?" %]</li>
32
    [% ELSE %]
32
    [% ELSE %]
33
        <li>ERROR - unknown</li>
33
        <li>ERROR - unknown</li>
34
    [% END %]
34
    [% END %]
Lines 63-69 Updated:<ul> Link Here
63
        [% END %]
63
        [% END %]
64
        </select></li>
64
        </select></li>
65
    [% END %]
65
    [% END %]
66
<!--
67
    [% IF ( printerloop ) %]
66
    [% IF ( printerloop ) %]
68
        <li><label for="printer">Choose a network printer:</label>
67
        <li><label for="printer">Choose a network printer:</label>
69
        <select name="printer" id="printer">
68
        <select name="printer" id="printer">
Lines 75-81 Updated:<ul> Link Here
75
                [% END %]
74
                [% END %]
76
            [% END %]
75
            [% END %]
77
        </select></li>
76
        </select></li>
78
    [% END %] -->
77
    [% END %]
79
    </ol>
78
    </ol>
80
</fieldset>
79
</fieldset>
81
<fieldset class="action"><input type="submit" value="Submit" /></fieldset>
80
<fieldset class="action"><input type="submit" value="Submit" /></fieldset>
82
- 

Return to bug 8034