From e33ee53afc6dd168d5803097b4d2f3147691b192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Oudot?= Date: Tue, 20 Aug 2013 13:36:06 +0000 Subject: [PATCH] Create a getSkin() method to share skin rules in all portal pages (#605) --- lemonldap-ng-portal/example/mail.pl | 3 ++- .../lib/Lemonldap/NG/Portal/Display.pm | 16 +---------- .../lib/Lemonldap/NG/Portal/Simple.pm | 27 ++++++++++++++++++- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/lemonldap-ng-portal/example/mail.pl b/lemonldap-ng-portal/example/mail.pl index 90b1080eb..d7370b818 100755 --- a/lemonldap-ng-portal/example/mail.pl +++ b/lemonldap-ng-portal/example/mail.pl @@ -7,7 +7,6 @@ use strict; # Load portal module my $portal = Lemonldap::NG::Portal::MailReset->new(); -my $skin = $portal->{portalSkin}; my $skin_dir = $portal->getApacheHtdocsPath() . "/skins"; my $portal_url = $portal->{portal}; my $portalPath = $portal->{portal}; @@ -17,6 +16,8 @@ $portalPath =~ s#[^/]+\.pl$##; # Process $portal->process(); +my $skin = $portal->getSkin(); + # Template creation my $template = HTML::Template->new( filename => "$skin_dir/$skin/mail.tpl", diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Display.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Display.pm index 7d2e054df..164cab491 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Display.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Display.pm @@ -17,7 +17,6 @@ our $VERSION = '1.3.0'; sub display { my $self = shift; - my $skin = $self->{portalSkin}; my $skin_dir = $self->getApacheHtdocsPath() . "/skins"; my ( $skinfile, %templateParams ); my $http_error = $self->param('lmError'); @@ -308,21 +307,8 @@ sub display { } - # Fill sessionInfo to eval rule if empty (unauthenticated user) - $self->{sessionInfo}->{_url} ||= $self->{urldc}; - $self->{sessionInfo}->{ipAddr} ||= $self->ipAddr; - - # Load specific skin from skinRules - if ( $self->{portalSkinRules} ) { - foreach my $skinRule ( sort keys %{ $self->{portalSkinRules} } ) { - if ( $self->safe->reval($skinRule) ) { - $skin = $self->{portalSkinRules}->{$skinRule}; - $self->lmLog( "Skin $skin selected from skin rule", 'debug' ); - } - } - } - ## Common template params + my $skin = $self->getSkin(); my $portalPath = $self->{portal}; $portalPath =~ s#^https?://[^/]+/?#/#; $portalPath =~ s#[^/]+\.pl$##; diff --git a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm index 98bdf7867..a35ff58d3 100644 --- a/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm +++ b/lemonldap-ng-portal/lib/Lemonldap/NG/Portal/Simple.pm @@ -1472,7 +1472,7 @@ sub stamp { ## @method string convertSec(int sec) # Convert seconds to hours, minutes, seconds -# @param $sec number of seconds +# @param $sec number of seconds # @return a formated time sub convertSec { my ( $self, $sec ) = splice @_; @@ -1500,6 +1500,31 @@ sub convertSec { return ( $day, $hrs, $min, $sec ); } +## @method string getSkin() +# Return skin name +# @return skin name +sub getSkin { + my ($self) = splice @_; + + my $skin = $self->{portalSkin}; + + # Fill sessionInfo to eval rule if empty (unauthenticated user) + $self->{sessionInfo}->{_url} ||= $self->{urldc}; + $self->{sessionInfo}->{ipAddr} ||= $self->ipAddr; + + # Load specific skin from skinRules + if ( $self->{portalSkinRules} ) { + foreach my $skinRule ( sort keys %{ $self->{portalSkinRules} } ) { + if ( $self->safe->reval($skinRule) ) { + $skin = $self->{portalSkinRules}->{$skinRule}; + $self->lmLog( "Skin $skin selected from skin rule", 'debug' ); + } + } + } + + return $skin; +} + ############################################################### # MAIN subroutine: call all steps until one returns something # # different than PE_OK #