added: Two new approval activities, byLineage and byCommitterGroup

added: Show a message to users when they log in
fixed: Gallery search form doesn't work right in IE6
fixed: Minor bug in new gallery approval handling
This commit is contained in:
Doug Bell 2008-06-02 21:16:06 +00:00
parent a0ec44567a
commit 614b37e31d
12 changed files with 515 additions and 32 deletions

View file

@ -31,6 +31,10 @@ use WebGUI::Operation::Profile;
use WebGUI::Workflow::Instance;
use WebGUI::Inbox;
# Profile field name for the number of times the showMessageOnLogin has been
# seen.
my $LOGIN_MESSAGE_SEEN = 'showMessageOnLoginSeen';
=head1 NAME
Package WebGUI::Auth
@ -296,16 +300,20 @@ sub createAccountSave {
}
# If we have a redirectAfterLogin, redirect the user
if ($self->session->form->get('returnUrl')) {
# If we have something to do after login, do it
if ( $self->session->setting->get( 'showMessageOnLogin' ) ) {
return $self->showMessageOnLogin;
}
elsif ($self->session->form->get('returnUrl')) {
$self->session->http->setRedirect( $self->session->form->get('returnUrl') );
$self->session->scratch->delete("redirectAfterLogin");
}
elsif ($self->session->scratch->get("redirectAfterLogin")) {
my $url = $self->session->scratch->delete("redirectAfterLogin");
$self->session->http->setRedirect($url);
return undef;
} else {
return undef;
}
else {
$self->session->http->setStatus(201,"Account Registration Successful");
}
@ -694,16 +702,7 @@ sub login {
$self->session->http->setRedirect($currentUrl);
}
# Set the proper redirect
if ($self->session->form->get('returnUrl')) {
$self->session->http->setRedirect( $self->session->form->get('returnUrl') );
$self->session->scratch->delete("redirectAfterLogin");
}
elsif ($self->session->scratch->get("redirectAfterLogin")) {
$self->session->http->setRedirect($self->session->scratch->get("redirectAfterLogin"));
$self->session->scratch->delete("redirectAfterLogin");
}
# Run on login
my $command = $self->session->config->get("runOnLogin");
if ($command ne "") {
WebGUI::Macro::process($self->session,\$command);
@ -711,6 +710,23 @@ sub login {
$self->session->errorHandler->warn($error) if $error;
}
# Set the proper redirect
if ( $self->session->setting->get( 'showMessageOnLogin' )
&& $self->user->profileField( $LOGIN_MESSAGE_SEEN )
< $self->session->setting->get( 'showMessageOnLoginTimes' )
) {
return $self->showMessageOnLogin;
}
elsif ( $self->session->form->get('returnUrl') ) {
$self->session->http->setRedirect( $self->session->form->get('returnUrl') );
$self->session->scratch->delete("redirectAfterLogin");
}
elsif ( $self->session->scratch->get("redirectAfterLogin") ) {
$self->session->http->setRedirect($self->session->scratch->get("redirectAfterLogin"));
$self->session->scratch->delete("redirectAfterLogin");
}
return undef;
}
@ -774,7 +790,7 @@ sub new {
$self->{profile} = ();
$self->{warning} = "";
my $call = shift;
my @callable = ('init', @{$call});
my @callable = ('init', 'showMessageOnLogin', @{$call});
$self->{callable} = \@callable;
bless $self, $class;
return $self;
@ -850,6 +866,45 @@ sub saveParams {
}
}
#----------------------------------------------------------------------------
=head2 showMessageOnLogin ( )
Show the requested message after the user logs in. Add another tally to the
number of times the message has been displayed. Show a link to the next
stage for the user.
=cut
sub showMessageOnLogin {
my $self = shift;
my $i18n = WebGUI::International->new( $self->session, 'Auth' );
# Increment the number of time seen.
$self->user->profileField( $LOGIN_MESSAGE_SEEN,
$self->user->profileField( $LOGIN_MESSAGE_SEEN ) + 1
);
# Show the message, processing for macros
my $output = $self->session->setting->get( 'showMessageOnLoginBody' );
WebGUI::Macro::process( $self->session, \$output );
# Add the link to continue
my $redirectUrl = $self->session->form->get( 'returnUrl' )
|| $self->session->scratch->get( 'redirectAfterLogin' )
|| $self->session->url->getSiteURL
;
$output .= '<p><a href="' . $redirectUrl . '">' . $i18n->get( 'showMessageOnLogin return' )
. '</a></p>'
;
# No matter what, we won't be redirecting after this
$self->session->scratch->delete( 'redirectAfterLogin' );
return $output;
}
#-------------------------------------------------------------------
=head2 user ( [user] )