$::form = Form->new;
%::called_subs = ();
+ my $session_result = $::auth->restore_session;
+ $::auth->create_or_refresh_session;
+
+ $::form->read_cgi_input;
+
eval { ($routing_type, $script_name, $action) = _route_request($script_name); 1; } or return;
if ($routing_type eq 'old') {
eval {
pre_request_checks();
- my $session_result = $::auth->restore_session;
- $::auth->create_or_refresh_session;
-
$::form->error($::locale->text('System currently down for maintenance!')) if -e ($::lx_office_conf{paths}->{userspath} . "/nologin") && $script ne 'admin';
if ($script eq 'login' or $script eq 'admin') {
bless $self, $type;
+ $main::lxdebug->leave_sub();
+
+ return $self;
+}
+
+sub read_cgi_input {
+ $main::lxdebug->enter_sub();
+
+ my ($self) = @_;
+
$self->_input_to_hash($ENV{QUERY_STRING}) if $ENV{QUERY_STRING};
$self->_input_to_hash($ARGV[0]) if @ARGV && $ARGV[0];
$uploads = $self->_request_to_hash($content);
}
+ if ($self->{RESTORE_FORM_FROM_SESSION_ID}) {
+ my %temp_form;
+ $::auth->restore_form_from_session(delete $self->{RESTORE_FORM_FROM_SESSION_ID}, form => \%temp_form);
+ $self->_input_to_hash(join '&', map { $self->escape($_) . '=' . $self->escape($temp_form{$_}) } keys %temp_form);
+ }
+
my $db_charset = $::lx_office_conf{system}->{dbcharset};
$db_charset ||= Common::DEFAULT_CHARSET;
return $jsscript;
} #end sub write_trigger
+sub _store_redirect_info_in_session {
+ my ($self) = @_;
+
+ return unless $self->{callback} =~ m:^ ( [^\?/]+ \.pl ) \? (.+) :x;
+
+ my ($controller, $params) = ($1, $2);
+ my $form = { map { map { $self->unescape($_) } split /=/, $_, 2 } split m/\&/, $params };
+ $self->{callback} = "${controller}?RESTORE_FORM_FROM_SESSION_ID=" . $::auth->save_form_in_session(form => $form);
+}
+
sub redirect {
$main::lxdebug->enter_sub();
$self->info($msg);
} else {
+ $self->_store_redirect_info_in_session;
print $::form->redirect_header($self->{callback});
}