Display star for favorite applications (#1689)
This commit is contained in:
parent
548032fbe0
commit
ce4135c4b9
|
@ -219,7 +219,7 @@ sub display {
|
|||
PING => $self->conf->{portalPingInterval},
|
||||
REQUIRE_OLDPASSWORD => $self->conf->{portalRequireOldPassword},
|
||||
HIDE_OLDPASSWORD => 0,
|
||||
FAVAPPS => $self->favAppsRule->( $req, $req->userData ),
|
||||
STARS => $self->favAppsRule->( $req, $req->userData ),
|
||||
$self->menu->params($req),
|
||||
(
|
||||
$req->data->{customScript}
|
||||
|
|
|
@ -19,7 +19,10 @@ has menuModules => (
|
|||
builder => sub {
|
||||
my $conf = $_[0]->{conf};
|
||||
my @res;
|
||||
foreach (qw(FavApps Appslist ChangePassword LoginHistory OidcConsents Logout)) {
|
||||
foreach (
|
||||
qw(FavApps Appslist ChangePassword LoginHistory OidcConsents Logout)
|
||||
)
|
||||
{
|
||||
my $cond = $conf->{"portalDisplay$_"} // 1;
|
||||
$_[0]->p->logger->debug("Evaluate condition $cond for module $_");
|
||||
my $tmp =
|
||||
|
@ -60,7 +63,8 @@ sub params {
|
|||
my ( $self, $req ) = @_;
|
||||
$self->{conf}->{imgPath} ||= $self->{staticPrefix};
|
||||
my %res;
|
||||
my @defaultTabs = (qw/favApps appslist password logout loginHistory oidcConsents/);
|
||||
my @defaultTabs =
|
||||
(qw/favApps appslist password logout loginHistory oidcConsents/);
|
||||
my @customTabs = split( /,\s*/, $self->{conf}->{customMenuTabs} || '' );
|
||||
|
||||
# Tab to display
|
||||
|
@ -124,6 +128,7 @@ sub params {
|
|||
sub displayModules {
|
||||
my ( $self, $req ) = @_;
|
||||
my $displayModules = [];
|
||||
my $favAppslistRef = $self->favAppslist($req);
|
||||
|
||||
# Foreach module, eval condition
|
||||
# Store module in result if condition is valid
|
||||
|
@ -132,11 +137,12 @@ sub displayModules {
|
|||
|
||||
if ( $module->[1]->( $req, $req->userData ) ) {
|
||||
my $moduleHash = { $module->[0] => 1 };
|
||||
if ( $module->[0] eq 'Appslist' ) {
|
||||
$moduleHash->{'APPSLIST_LOOP'} = $self->appslist($req);
|
||||
if ( $module->[0] eq 'FavApps' ) {
|
||||
$moduleHash->{'FAVAPPS_LOOP'} = $favAppslistRef;
|
||||
}
|
||||
elsif ( $module->[0] eq 'FavApps' ) {
|
||||
$moduleHash->{'FAVAPPS_LOOP'} = $self->favAppslist($req);
|
||||
elsif ( $module->[0] eq 'Appslist' ) {
|
||||
$moduleHash->{'APPSLIST_LOOP'} =
|
||||
$self->appslist( $req, $favAppslistRef );
|
||||
}
|
||||
elsif ( $module->[0] eq 'LoginHistory' ) {
|
||||
$moduleHash->{'SUCCESS_LOGIN'} =
|
||||
|
@ -155,7 +161,7 @@ sub displayModules {
|
|||
push @$displayModules, $moduleHash;
|
||||
}
|
||||
}
|
||||
|
||||
$displayModules->[0]->{FavApps} = scalar @{$favAppslistRef};
|
||||
return $displayModules;
|
||||
}
|
||||
|
||||
|
@ -182,7 +188,8 @@ sub favAppslist {
|
|||
$self->logger->debug("No favorite Apps found");
|
||||
$_favApps = [];
|
||||
}
|
||||
$self->logger->debug( scalar @$_favApps . " favorite Apps found for $user" );
|
||||
$self->logger->debug(
|
||||
scalar @$_favApps . " favorite Apps found for $user" );
|
||||
|
||||
return $_favApps;
|
||||
}
|
||||
|
@ -191,7 +198,7 @@ sub favAppslist {
|
|||
# Returns categories and applications list as HTML::Template loop
|
||||
# @return categories and applications list
|
||||
sub appslist {
|
||||
my ( $self, $req ) = @_;
|
||||
my ( $self, $req, $favAppslistRef ) = @_;
|
||||
my $appslist = [];
|
||||
|
||||
return $appslist unless defined $self->conf->{applicationList};
|
||||
|
@ -200,7 +207,8 @@ sub appslist {
|
|||
my $catlevel = 0;
|
||||
|
||||
my $applicationList = clone( $self->conf->{applicationList} );
|
||||
my $filteredList = $self->_filter( $req, $applicationList );
|
||||
my $filteredList =
|
||||
$self->_filter( $req, $applicationList, $favAppslistRef );
|
||||
push @$appslist,
|
||||
$self->_buildCategoryHash( $req, "", $filteredList, $catlevel );
|
||||
|
||||
|
@ -270,10 +278,11 @@ sub _buildApplicationHash {
|
|||
my $applications;
|
||||
|
||||
# Get application items
|
||||
my $appname = $apphash->{options}->{name} || $appid;
|
||||
my $appuri = $apphash->{options}->{uri} || "";
|
||||
my $appdesc = $apphash->{options}->{description};
|
||||
my $applogo = $apphash->{options}->{logo};
|
||||
my $appname = $apphash->{options}->{name} || $appid;
|
||||
my $appuri = $apphash->{options}->{uri} || "";
|
||||
my $appdesc = $apphash->{options}->{description};
|
||||
my $applogo = $apphash->{options}->{logo};
|
||||
my $appIsFavApp = $apphash->{options}->{isFavApp} || "0";
|
||||
|
||||
# Detect sub applications
|
||||
my $subapphash;
|
||||
|
@ -299,6 +308,7 @@ sub _buildApplicationHash {
|
|||
appdesc => $appdesc,
|
||||
applogo => $applogo,
|
||||
appid => $appid,
|
||||
appisfav => $appIsFavApp,
|
||||
};
|
||||
$applicationHash->{applications} = $applications if $applications;
|
||||
return $applicationHash;
|
||||
|
@ -311,7 +321,7 @@ sub _buildApplicationHash {
|
|||
# @param $apphash Menu elements
|
||||
# @return filtered hash
|
||||
sub _filter {
|
||||
my ( $self, $req, $apphash ) = @_;
|
||||
my ( $self, $req, $apphash, $favAppslistRef ) = @_;
|
||||
my $filteredHash;
|
||||
my $key;
|
||||
|
||||
|
@ -321,7 +331,7 @@ sub _filter {
|
|||
}
|
||||
|
||||
# Filter hash
|
||||
$self->_filterHash( $req, $filteredHash );
|
||||
$self->_filterHash( $req, $filteredHash, $favAppslistRef );
|
||||
|
||||
# Hide empty categories
|
||||
$self->_isCategoryEmpty($filteredHash);
|
||||
|
@ -334,8 +344,7 @@ sub _filter {
|
|||
# @param $apphash Menu elements
|
||||
# @return filtered hash
|
||||
sub _filterHash {
|
||||
my ( $self, $req, $apphash ) = @_;
|
||||
|
||||
my ( $self, $req, $apphash, $favAppslistRef ) = @_;
|
||||
foreach my $key ( keys %$apphash ) {
|
||||
next if $key =~ /(type|options|catname)/;
|
||||
if ( $apphash->{$key}->{type}
|
||||
|
@ -343,7 +352,7 @@ sub _filterHash {
|
|||
{
|
||||
|
||||
# Filter the category
|
||||
$self->_filterHash( $req, $apphash->{$key} );
|
||||
$self->_filterHash( $req, $apphash->{$key}, $favAppslistRef );
|
||||
}
|
||||
if ( $apphash->{$key}->{type}
|
||||
and $apphash->{$key}->{type} eq "application" )
|
||||
|
@ -354,7 +363,17 @@ sub _filterHash {
|
|||
next if $appkey =~ /(type|options|catname)/;
|
||||
|
||||
# We have sub elements, so we filter them
|
||||
$self->_filterHash( $req, $apphash->{$key} );
|
||||
$self->_filterHash( $req, $apphash->{$key}, $favAppslistRef );
|
||||
}
|
||||
|
||||
# Check if app is marked as favorite
|
||||
my $appuri = $apphash->{$key}->{options}->{uri};
|
||||
foreach (@$favAppslistRef) {
|
||||
if ( $_->{appuri} eq $appuri ) {
|
||||
$apphash->{$key}->{options}->{isFavApp} = "1";
|
||||
$self->logger->debug("App $appuri is marked as favorite");
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
# Check rights
|
||||
|
|
|
@ -60,10 +60,10 @@ sub register {
|
|||
return $self->p->sendError( $req, 'Missing App. URI', 400 );
|
||||
}
|
||||
$self->logger->debug("Favorite application URI received : $uri");
|
||||
my $id = $req->param('id') || '';
|
||||
my $logo = $req->param('logo') || '';
|
||||
my $desc = $req->param('desc') || '';
|
||||
my $name = $req->param('name') || '';
|
||||
my $id = $req->param('id') || '';
|
||||
my $logo = $req->param('logo') || '';
|
||||
my $desc = $req->param('desc') || '';
|
||||
my $name = $req->param('name') || '';
|
||||
|
||||
# Read existing favorite Apps
|
||||
$self->logger->debug("Looking for $user favorite Apps...");
|
||||
|
@ -146,7 +146,8 @@ sub read {
|
|||
apps => $_favApps
|
||||
}
|
||||
);
|
||||
$self->logger->debug( scalar @$_favApps . " favorite Apps found for $user" );
|
||||
$self->logger->debug(
|
||||
scalar @$_favApps . " favorite Apps found for $user" );
|
||||
|
||||
return [
|
||||
200,
|
||||
|
@ -174,7 +175,13 @@ sub _isFavApp {
|
|||
sub _appendFavApp {
|
||||
my ( $self, $_favApps, $uri, $id, $logo, $desc, $name ) = @_;
|
||||
push @$_favApps,
|
||||
{ appuri => $uri, appid => $id, applogo => $logo, appdesc => $desc, appname => $name };
|
||||
{
|
||||
appuri => $uri,
|
||||
appid => $id,
|
||||
applogo => $logo,
|
||||
appdesc => $desc,
|
||||
appname => $name
|
||||
};
|
||||
$self->logger->debug("App. $uri appended");
|
||||
return $_favApps;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ FavApps = (star) ->
|
|||
|
||||
switchStar = (star, status) ->
|
||||
star.attr('src', "#{window.staticPrefix}common/icons/star#{status}.png")
|
||||
#window.location.reload()
|
||||
|
||||
# Switch "star" events
|
||||
$(document).ready ->
|
||||
|
|
|
@ -20,7 +20,12 @@
|
|||
<!-- Tabs list -->
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<TMPL_LOOP NAME="DISPLAY_MODULES">
|
||||
|
||||
<TMPL_IF NAME="FavApps">
|
||||
<li class="nav-item"><a class="nav-link" href="#favApps"><span>
|
||||
<img src="<TMPL_VAR NAME="STATIC_PREFIX">common/icons/star1.png" width="16" height="16" alt="yourFavApps" />
|
||||
<span trspan="yourFavApps">Your favorite applications</span>
|
||||
</span></a></li>
|
||||
</TMPL_IF>
|
||||
<TMPL_IF NAME="Appslist">
|
||||
<li class="nav-item"><a class="nav-link" href="#appslist"><span>
|
||||
<img src="<TMPL_VAR NAME="STATIC_PREFIX">common/icons/application_cascade.png" width="16" height="16" alt="appslist" />
|
||||
|
@ -42,7 +47,7 @@
|
|||
<TMPL_IF NAME="OidcConsents">
|
||||
<li class="nav-item"><a class="nav-link" href="#oidcConsents"><span>
|
||||
<img src="<TMPL_VAR NAME="STATIC_PREFIX">common/icons/oidc.png" width="16" height="16" alt="login history" />
|
||||
<span trspan="oidcConsents">OIDC Consent</span>
|
||||
<span trspan="oidcConsents">OIDC Consents</span>
|
||||
</span></a></li>
|
||||
</TMPL_IF>
|
||||
<TMPL_IF NAME="Logout">
|
||||
|
@ -107,7 +112,7 @@
|
|||
|
||||
<!-- Application -->
|
||||
<div class="col-md-4">
|
||||
<TMPL_IF NAME="FAVAPPS">
|
||||
<TMPL_IF NAME="STARS">
|
||||
<div>
|
||||
<img class="star"
|
||||
aid="<TMPL_VAR NAME="appid">"
|
||||
|
@ -115,7 +120,7 @@
|
|||
name="<TMPL_VAR NAME="appname">"
|
||||
logo="<TMPL_VAR NAME="applogo">"
|
||||
desc="<TMPL_VAR NAME="appdesc">"
|
||||
src="<TMPL_VAR NAME="STATIC_PREFIX">common/icons/star0.png"/>
|
||||
src="<TMPL_VAR NAME="STATIC_PREFIX">common/icons/star<TMPL_VAR NAME="appisfav">.png"/>
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
<div class="application <TMPL_VAR NAME="appid"> card">
|
||||
|
@ -174,18 +179,9 @@
|
|||
</div>
|
||||
</TMPL_IF>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<TMPL_IF NAME="FavApps">
|
||||
<div id="favApps">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="card-body">
|
||||
<!-- Applications -->
|
||||
|
||||
|
@ -239,26 +235,9 @@
|
|||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</TMPL_IF>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<TMPL_IF NAME="ChangePassword">
|
||||
<div id="password">
|
||||
<div class="card border-secondary">
|
||||
|
|
Loading…
Reference in New Issue