[java-identity-provider] branch master updated: IDP-1127 - Improve logout user feedback and ease CSS design
Scott Cantor
cantor.2 at osu.edu
Wed Dec 5 15:02:04 EST 2018
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch master
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=16f44632ba4c1198caa2932d9e6eb1df9d4a9ee2
The following commit(s) were added to refs/heads/master by this push:
new 16f4463 IDP-1127 - Improve logout user feedback and ease CSS design
16f4463 is described below
commit 16f44632ba4c1198caa2932d9e6eb1df9d4a9ee2
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Dec 5 15:02:00 2018 -0500
IDP-1127 - Improve logout user feedback and ease CSS design
https://issues.shibboleth.net/jira/browse/IDP-1127
---
.../resources/system/views/logout/propagate.vm | 85 ++++++++++++++++++++--
idp-war/src/main/webapp/css/logout.css | 17 +++--
2 files changed, 89 insertions(+), 13 deletions(-)
diff --git a/idp-conf/src/main/resources/system/views/logout/propagate.vm b/idp-conf/src/main/resources/system/views/logout/propagate.vm
index 8a71905..f2522ac 100644
--- a/idp-conf/src/main/resources/system/views/logout/propagate.vm
+++ b/idp-conf/src/main/resources/system/views/logout/propagate.vm
@@ -25,16 +25,26 @@
##
#if ($logoutContext and !$logoutContext.getSessionMap().isEmpty())
<ol>
- #foreach ($sp in $logoutContext.getSessionMap().keySet())
+ #foreach ($entry in $logoutContext.getKeyedSessionMap().entrySet())
+ #set ($sp = $entry.getValue().getId())
#set ($rpCtx = $multiRPContext.getRelyingPartyContextById($sp))
#if ($rpCtx)
#set ($rpUIContext = $rpCtx.getSubcontext("net.shibboleth.idp.ui.context.RelyingPartyUIContext"))
#end
#if ($rpUIContext and $rpUIContext.getServiceName())
- <li id="result_$codecUtil.hex($sp.getBytes())" title="Logout pending">$htmlEncoder.encodeForHTML($rpUIContext.getServiceName())</li>
+ #set ($serviceName = $rpUIContext.getServiceName())
+ #else
+ #set ($serviceName = $sp)
+ #end
+ #if ($flowSelector.apply($entry.getValue()))
+ #set ($logoutClass = "logout pending")
+ #set ($logoutTitle = "Logout pending...")
#else
- <li id="result_$codecUtil.hex($sp.getBytes())" title="Logout pending">$htmlEncoder.encodeForHTML($sp)</li>
+ #set ($logoutClass = "logout na")
+ #set ($logoutTitle = "Logout not supported")
#end
+ <li id="result_$codecUtil.hex($sp.getBytes())" class="$logoutClass"
+ title="$logoutTitle">$htmlEncoder.encodeForHTML($serviceName)</li>
#end
</ol>
<script src="$request.getContextPath()/js/jquery-3.3.1.min.js"></script>
@@ -57,7 +67,10 @@
spTracker.status = check_status;
sessionTracker['result_$codecUtil.hex($sp.getBytes())'] = spTracker;
#end
-
+
+ var hasCompleted = new Object();
+ setupHasCompleted();
+
function onLoad(src, target, trackerId, sessionKey) {
try {
var content = src.contents().text();
@@ -69,13 +82,13 @@
} catch (e) {
sessionTracker[trackerId]['_' + sessionKey] = false;
}
- target.removeClass("success failure");
+ target.removeClass("pending success failure");
if (sessionTracker[trackerId].status()) {
target.addClass("success");
- target.prop("title", "Successful logout");
+ target.prop("title", "Logout successful");
} else {
target.addClass("failure");
- target.prop("title", "Failed logout")
+ target.prop("title", "Logout failed")
}
if (typeof(Storage) !== "undefined" ) {
var url = sessionStorage.getItem(sessionKey);
@@ -84,6 +97,64 @@
setTimeout(function() { src.prop("src", url) }, 1500);
}
}
+
+ markAsCompleted(target, trackerId, sessionKey);
+ if (allHaveCompleted()) {
+ processAllHaveCompleted();
+ }
+ }
+
+ function setupHasCompleted() {
+ #foreach ($entry in $logoutContext.getKeyedSessionMap().entrySet())
+ #if ($flowSelector.apply($entry.getValue()))
+ #set ($trackerId = "result_$codecUtil.hex($entry.getValue().getId().getBytes())")
+ #set ($sessionKey = "$entry.getKey()")
+ hasCompleted['${trackerId}_${sessionKey}'] = false;
+ #end
+ #end
+ }
+
+ function markAsCompleted(target, trackerId, sessionKey) {
+ hasCompleted[trackerId + '_' + sessionKey] = true;
+ }
+
+ function allHaveCompleted() {
+ for (key in hasCompleted) {
+ if (!hasCompleted[key]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ function allHaveSucceeded() {
+ for (key in sessionTracker) {
+ if (!sessionTracker[key].status()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ function allHaveFailed() {
+ for (key in sessionTracker) {
+ if (sessionTracker[key].status()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ function processAllHaveCompleted() {
+ $('.logout-status').removeClass("pending")
+ $('.logout-status').addClass("completed")
+ if (allHaveSucceeded()) {
+ $('.logout-status').addClass("all-success")
+ } else if (allHaveFailed()) {
+ $('.logout-status').addClass("all-failure")
+ } else {
+ $('.logout-status').addClass("any-failure")
+ }
}
// -->
</script>
diff --git a/idp-war/src/main/webapp/css/logout.css b/idp-war/src/main/webapp/css/logout.css
index 26f1893..dcd10d2 100644
--- a/idp-war/src/main/webapp/css/logout.css
+++ b/idp-war/src/main/webapp/css/logout.css
@@ -1,12 +1,17 @@
/* Success/Failure indicators for logout propagation. */
-
-.success {
- background: url(../images/success-32x32.png) no-repeat left center;
+li.logout {
line-height: 36px;
padding-left: 36px;
}
-.failure {
+li.logout.success {
+ background: url(../images/success-32x32.png) no-repeat left center;
+}
+li.logout.failure {
+ background: url(../images/failure-32x32.png) no-repeat left center;
+}
+li.logout.pending{
+
+}
+li.logout.na {
background: url(../images/failure-32x32.png) no-repeat left center;
- line-height: 36px;
- padding-left: 36px;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list