diff options
Diffstat (limited to 'common.pl')
-rw-r--r-- | common.pl | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/common.pl b/common.pl new file mode 100644 index 00000000..b4b524b5 --- /dev/null +++ b/common.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl +# +###################################################################### +# LedgerSMB Accounting and ERP + +# http://www.ledgersmb.org/ +# +# Copyright (C) 2006 +# This work contains copyrighted information from a number of sources all used +# with permission. +# +# This file contains source code included with or based on SQL-Ledger which +# is Copyright Dieter Simader and DWS Systems Inc. 2000-2005 and licensed +# under the GNU General Public License version 2 or, at your option, any later +# version. For a full list including contact information of contributors, +# maintainers, and copyright holders, see the CONTRIBUTORS file. +# +##################################################################### +# +# Common script handling routines for menu.pl, admin.pl, login.pl +# +##################################################################### + +use LedgerSMB::Sysconfig; + +sub redirect { + use List::Util qw(first); + my ($script, $argv) = split(/\?/, $form->{callback}); + + my @common_attrs = qw(dbh login favicon stylesheet titlebar password); + + $form->error($locale->text("Invalid Redirect")) + unless first {$_ eq $script} @{LedgerSMB::Sysconfig::scripts}; + + $oldform = $form; + require "bin/$script"; + $form = new Form($argv); + + for (@common_attrs){ + $form->{$_} = $oldform->{$_}; + } + if (!$myconfig){ # needed for login + %myconfig = %{LedgerSMB::User->fetch_config($form->{login})}; + } + if (!$form->{dbh}){ + $form->db_init(\%myconfig); + } + + &{$form->{action}}; +} + +1; |