Solstice
view release on metacpan or search on metacpan
lib/Solstice/Controller/Application/Main.pm view on Meta::CPAN
if( my $transition = $state_tracker->getTransition($action)){
$self->_setTransition($transition);
$self->_setIsGlobalTransition(FALSE);
}elsif( $transition = $state_tracker->getPageFlowGlobalTransition($action, $self->_getNamespace())){
$self->_setTransition($transition);
$self->_setIsGlobalTransition(TRUE)
}elsif( $transition = $state_tracker->getGlobalTransition($action, $self->_getNamespace())){
$self->_setTransition($transition);
$self->_setIsGlobalTransition(TRUE);
}else{
my $state = $state_tracker->getState();
die "Could not transition from state $state via action $action\n"
}
}
sub _handleBadBackButton {
my $self = shift;
my $state_tracker = Solstice::Session->new()->getStateTracker();
my $application = $self->_getApplication();
if( $state_tracker->getBackErrorMessage() ){
my $ns = Solstice::NamespaceService->new()->getAppNamespace();
$self->getMessageService()->addInfoMessage(
$self->getLangService($ns)->getMessage($state_tracker->getBackErrorMessage())
);
}else{
$self->getMessageService()->addInfoMessage(
$self->getLangService()->getMessage('generic_back_error')
);
}
$self->_setPreClickController($state_tracker->getController($application));
return TRUE;
}
sub _handlePreferenceButton {
my $self = shift;
my $selected_button = $self->getButtonService()->getSelectedButton();
my $application = $self->_getApplication();
my $state_tracker = Solstice::Session->new()->getStateTracker();
my $key = $selected_button->getPreferenceKey();
my $value = $selected_button->getPreferenceValue();
if (defined $key) {
my $preference_service = $self->getPreferenceService($application->getNamespace());
$preference_service->setPreference($key, $value);
}
my $controller = $state_tracker->getController($application);
$controller->update();
$self->_setPreClickController($controller);
# This ensures that dev toolbar prefs get picked up immediately
if ($self->getConfigService()->getDevelopmentMode()) {
$self->_setDevelopmentOptions();
}
return TRUE;
}
sub _handleLoginButton {
my $self = shift;
my $selected_button = $self->getButtonService()->getSelectedButton();
my $application = $self->_getApplication();
my $state_tracker = Solstice::Session->new()->getStateTracker();
my $controller = $state_tracker->getController($application);
$controller->setRequiresAuth(TRUE);
$self->_setPreClickController($controller);
return TRUE;
}
sub _denyUnstableBrowser {
my $self = shift;
# Do we support this browser?
if( $self->_isBrowserStable() ){
return TRUE;
}else{
$self->_paintView(Solstice::View::DeniedBrowser->new());
return FALSE;
}
}
sub _initializeSession {
my $self = shift;
# Initialize session
my $session = Solstice::Session->new;
# Before we do anything else, make sure we have a proper session
# to work with
unless ($session->hasSession()) {
if($self->_getRequireSession()){
$self->_forceCreateSession();
return FALSE;
}else{
$self->_passiveCreateSession();
}
}
# Okay, we have a useful session - since this is a user-pageview
# controller, we'll need a subsession too
$session->loadSubsession();
return TRUE;
}
sub _isLoginValid {
my $self = shift;
# Is the login name valid?
if (my $user = $self->getUserService()->getOriginalUser()) {
( run in 1.132 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )