#!c:\vanilla-perl\perl\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 custom_db_fields
		);

	if (!$script){ # http redirect to login.pl if called w/no args
		print "Location: login.pl\n";
		print "Content-type: text/html\n\n";
		exit;
	}

	$form->error($locale->text(__FILE__.':'.__LINE__.':'.$script.':'."Invalid Redirect"))
		unless first {$_ eq $script} @{LedgerSMB::Sysconfig::scripts};

	my %temphash;
	for (@common_attrs){
		$temphash{$_} = $form->{$_};
	}

	require "bin/$script";
	undef $form;
	$form = new Form($argv);

	for (@common_attrs){
		$form->{$_} = $temphash{$_};
	}

	if (!$myconfig){ # needed for login
		%myconfig = %{LedgerSMB::User->fetch_config($form->{login})};
	}
	if (!$form->{dbh}){
		$form->db_init(\%myconfig);
	}

	&{$form->{action}};
}

1;