diff options
-rw-r--r-- | src/main/webapp/wayf-ndn.jsp | 269 |
1 files changed, 11 insertions, 258 deletions
diff --git a/src/main/webapp/wayf-ndn.jsp b/src/main/webapp/wayf-ndn.jsp index db186d1..b2c4a63 100644 --- a/src/main/webapp/wayf-ndn.jsp +++ b/src/main/webapp/wayf-ndn.jsp @@ -10,136 +10,13 @@ <%request.setCharacterEncoding("UTF-8");%> <%response.setCharacterEncoding("UTF-8");%> - -<logic:present name="showComments" scope="Request"> - -<!-- TO CONFIGURE THIS FOR A SPECIFIC SITE - ===================================== - - Before you deploy this jsp you need to look for CONFIG below. - These mark places where you should make changes. - - If you want to make more profound changes but only to the jsp, - you should read the sections marked PROGRAMMING NOTE below.--> - -<!-- PROGRAMMING NOTE - - "requestURL" contains the URL that was specified to get the - WAYF going. The jsp uses it mostly for submitting result back to - the WAYF and error reporting --> - -</logic:present> - - <jsp:useBean id="requestURL" scope="request" class="java.lang.String"/> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - - shire, target, provider and time are all part of the Shibboleth - 1.3 discovery protocol and need to be specified as parameters to the WAYF - - entityID, return, returnIDParam are all part of the - SAML Discovery protocol. - - ---> -</logic:present> - +<jsp:useBean id="requestURL" scope="request" class="java.lang.String"/> <logic:notPresent name="entityID" scope="request"> <logic:notPresent name="shire" scope="request"> - <jsp:forward page = "wayferror.jsp"/> </logic:notPresent> </logic:notPresent> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - In addition to the above. The WAYF may also supply the following to - the jsp. - - "cookieList" If this exists it represents the contents of the - _saml_idp cookie (possibly filtered to remove IdPs which - cannot serve the SP). It is a Collection of IdPSite objects, - which themselves have the following properties: - - "name" The uri for the IdP, which needs to be returned to the - WAYF in the "origin" parameter. - - "displayName" User friendly name (taken from its alias) - - "addressFor" The (ungarnished) URL for the IdP. This could be - used to create a direct hyperlink to the IdP - - "sites" If this exists it contains all the possible IdPs for for - the SP (possibly filtered). It is a Collection of IdPSite - Objects which are described above. This is only present if - provideList was defined true in the configuration. - - "siteLists" If this exists it contains all the possible metadata - files which can service for the SP (possibly filtered). It - is a collection of IdPSiteSetEntry Objects which have two - properties: - - "name" This is the displayName from the Metadata element in - the WAYF configuration file - - "sites" This represents the IdPs. Again it is a collection - of IdPSite Objects - - It is only present if provideListOfList was defined true in - the configuration. - - "singleSiteList" if this is present, then there is only one - IdPSiteSetEntry Object in "siteLists". - - "searchresultempty" If this is present then it means that a - search was performed, but no suitable IdPs were returned. - - "searchresults" If this is present it represents the list of IdPs - which matched a previous search. It is a Collection of - IdPSite Objects. --> - -<!-- PROGRAMMING NOTE - - The jsp communicates back to the WAYF via the parameters listed - above, and: - - "action" what the WAYF has to do. Possible contents are: - - "lookup" - refresh the screen. - "search" - perform a search on the contents parameter "string" - "selection" - redirect to the IdP with the uri "origin" - - "cache" preserve any selection in the _saml_idp cookie. A - value of "session" makes the cookie last for the browser - session, "perm" gives it the lifetime specified in the - configuration file. - - The tabindex is hard wired. Fortunately the standard allows us to - have duplicate numbers and says the order is the order things - get emitted. We use these numbers - - 10 - Recently used sites hyperlinks - 20 - <clear button for above> - 25 - AutoSuggestion - 30 Federation selection - 40 IdP within Selection - 50 Select button - 60 How long to remember selector - 70 Search entry - 80 Search Button - 90 List of search results - 100 Select search result - 110 How long to remember search results - 120 Hyperlink to admin user. - ---> - -</logic:present> - <head> <link rel="stylesheet" type="text/css" href="NORDUnet.css"/> <link type="text/css" href="jquery-ui-1.9pre/themes/base/jquery-ui.css" rel="stylesheet" /> @@ -149,138 +26,10 @@ <script type="text/javascript"> $(function() { $("input:submit, input:reset, input:button, a",".button").button(); - $("#sitelist").menu(); + $("#sitelist").tabs(); }); </script> <script type="text/javascript"> - $.widget( "ui.iosMenu", { - options: { - backText: 'Back', - slideDuration: 200, - slideEasing: 'linear' - }, - - _insertBackButtons: function() { - this.element.find( 'li ul, li ol' ).prepend( - $( '<li>' + - ' <span class="ui-icon ui-icon-carat-1-w"></span>' + - ' <a href="#menu-back" class="ios-menu-back-link">' + - this.options.backText + - ' </a>' + - '</li>' - ) ); - return this; - }, - - _create: function( options ) { - var iosMenu = this; - - iosMenu - ._insertBackButtons() - .element - .addClass( 'ios-style' ) - .menu({ - // When a submenu shows up, place it just to the right - // of the current menu. Later, we'll slide it into view. - position: { - my: 'left top', - at: 'right top', - of: iosMenu.element - } - }); - - var menu = iosMenu.element.data( 'menu' ); - - // Override menu#select to account for nesting and back buttons: - menu.select = function( event ) { - if ( menu.active && menu.active.find( '> .ios-menu-back-link' ).length ) { - // if you selected "back", go back: - menu.focus( event, menu.active ); - if ( menu.left( event ) ) { - event.stopImmediatePropagation(); - } - event.preventDefault(); - } else if ( menu.active && menu.active.find( '> ul' ).length ) { - // if you selected something with children, show the children: - menu.focus( event, menu.active ); - if ( menu.right( event ) ) { - event.stopImmediatePropagation(); - } - event.preventDefault(); - } else { - menu._trigger( 'select', event, { item: menu.active } ); - } - }; - - // Override menu#left to enable sliding behavior: - menu.left = function( event ) { - var newItem = this.active && this.active.parents( 'li:not(.ui-menubar-item) ').first(), - self = this, - parent; - if ( newItem && newItem.length ) { - newItem.find( '> a' ).addClass( 'ui-state-focus' ).removeClass( 'ui-state-active' ); - parent = this.active.parent(); - parent - .attr( 'aria-hidden', 'true' ) - .attr( 'aria-expanded', 'false' ) - .animate({ - left: self.element.css( 'width' ) - }, iosMenu.options.slideDuration, iosMenu.options.slideEasing, function() { - parent.hide(); - self.focus( event, newItem ); - }) - return true; - } else if ( event && event.which === $.ui.keyCode.ESCAPE ) { - // #left gets called both for left-arrow and escape. If it's the - // latter and we're at the top, fire a "close" event: - self._trigger( 'close', event ); - } - }; - - // Override menu#_open to enable sliding behavior: - var menuOpenWithoutSliding = menu._open; - menu._open = function ( submenu ) { - menuOpenWithoutSliding.call( this, submenu ); - submenu.animate({ - left: 0 - }, iosMenu.options.slideDuration, iosMenu.options.slideEasing); - }; - - // Override menu#_startOpening so that hovering doesn't - // initiate the sliding: - menu._startOpening = function() { - clearTimeout( this.timer ); - } - }, - - destroy: function() { - var menu = this.element && this.element.data( 'menu' ); - menu && menu.destroy(); - } - }); - - $(function() { - var list = $( '#sites' ); - var firstLI = list.find( 'li' ).first(); - list - .iosMenu() - .focus() - .menu( 'focus', {}, firstLI ) - .bind( 'menuselect', function( event, ui ) { - $('#origin').attr('value',$(ui.item).attr('rel')); - $('#selector').submit(); - }); - }); - </script> - <style> - .ios-style, .ios-style ul, .ios-style ol { background: #fff; height: 200px; padding: 2px; width: 420px; } - .ios-style { overflow-x: hidden; overflow-y: auto; } - //.ios-style::-webkit-scrollbar { width: 5px; height: 5px; } - //.ios-style::-webkit-scrollbar-thumb { background: rgba(128, 128, 128, 0.6); border-radius: 4px; } - .ios-style ul, .ios-style ol { overflow-y: visible; border: none; } - .ios-style.ui-menu-icons .ui-menu-item a { position: inherit; } - .ios-style .ui-menu-item a { cursor: pointer; outline: none; } - </style> </head> <body id="homepage"> @@ -360,10 +109,14 @@ <li style="vertical-align: top;"> <h2>Full list of identity providers</h2> <logic:present name="siteLists" scope="request"> - <ul id="sites"> + <div id="sites"> + <ul> + <logic:iterate id="siteset" name="siteLists"> + <li><a href="#<jsp:getProperty name="siteset" property="name"/>"><jsp:getProperty name="siteset" property="name"/></a></li> + </logic:iterate> + </ul> <logic:iterate id="siteset" name="siteLists"> - <li> - <a href="#<jsp:getProperty name="siteset" property="name"/>"><jsp:getProperty name="siteset" property="name"/></a> + <div id="#<jsp:getProperty name="siteset" property="name"/>"> <ul> <logic:iterate id="site" name="siteset" property="sites"> <logic:present name="entityID" scope="request"> @@ -386,9 +139,9 @@ </logic:notPresent> </logic:iterate> </ul> - </li> + </div> </logic:iterate> - </ul> + </div> </logic:present> </li> </ul> |