summaryrefslogtreecommitdiff
path: root/common.pl
diff options
context:
space:
mode:
Diffstat (limited to 'common.pl')
-rw-r--r--common.pl52
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;