<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">FAO: Rod Widdowson et al</div><div class=""><br class=""></div>I'm going to leave this here, since the shibboleth-ds on JIRA appears to have a versioning issue on its setup (its missing the idpselect_languages.js from the build by quick look), but can't login there to submit properly:<div class=""><br class=""></div><div class="">Issue with preferedIdPs not detecting overlap with userSelectedIdPs.</div><div class=""><br class=""></div><div class="">Suggested fix with relatively clunky javascript implementation:</div><div class=""><br class=""></div><div class=""><div class=""><font face="Courier New" class="">    var getPreferredIdPs = function() {</font></div><div class=""><font face="Courier New" class="">        var idps = [];</font></div><div class=""><font face="Courier New" class="">        var i;</font></div><span style="font-family: 'Courier New';" class="">        var j;</span></div><div class=""><font face="Courier New" class="">        var insert;<br class=""></font><div class=""><font face="Courier New" class="">        var idp;</font></div><div class=""><font face="Courier New" class=""><br class=""></font></div><div class=""><font face="Courier New" class="">        //</font></div><div class=""><font face="Courier New" class="">        // populate start of array with preselected IdPs</font></div><div class=""><font face="Courier New" class="">        //</font></div><div class=""><font face="Courier New" class="">        if (null != preferredIdP){</font></div><div class=""><font face="Courier New" class="">            for (i=0; i < preferredIdP.length && i < maxPreferredIdPs-1; i++){</font></div><div class=""><font face="Courier New" class="">                idps[i] = getIdPFor(preferredIdP[i]);</font></div><div class=""><font face="Courier New" class="">            }</font></div><div class=""><font face="Courier New" class="">        }</font></div><div class=""><font face="Courier New" class="">        </font></div><div class=""><font face="Courier New" class="">        //</font></div><div class=""><font face="Courier New" class="">        // And then the cookie based ones</font></div><div class=""><font face="Courier New" class="">        //</font></div><div class=""><font face="Courier New" class="">        userSelectedIdPs = retrieveUserSelectedIdPs();</font></div><div class=""><font face="Courier New" class="">        for (i=0; i < userSelectedIdPs.length && idps.length < maxPreferredIdPs; i++){</font></div><div class=""><font face="Courier New" class="">            idp = getIdPFor(userSelectedIdPs[i]);</font></div><div class=""><font face="Courier New" class="">            insert = true;</font></div><div class=""><font face="Courier New" class="">            for (j = 0; j < idps.length; j++){</font></div><div class=""><font face="Courier New" class="">                if (idps[j] === idp){</font></div><div class=""><font face="Courier New" class="">                    insert = false;</font></div><div class=""><font face="Courier New" class="">                }</font></div><div class=""><font face="Courier New" class="">            }</font></div><div class=""><font face="Courier New" class="">            if (insert){</font></div><div class=""><font face="Courier New" class="">              idps.push(idp);</font></div><div class=""><font face="Courier New" class="">            }</font></div><div class=""><font face="Courier New" class="">        }</font></div><div class=""><font face="Courier New" class="">        return idps;</font></div><div class=""><font face="Courier New" class="">    };</font></div></div><div class=""><br class=""></div><div class="">PS. also modified the second cycler to run from idps.length, removing the need for offset etc.</div><div class=""><br class=""></div><div class="">If anyone knows a better way of comparing objects within an array in javascript that could be of use here.</div><div class=""><br class=""></div><div class="">Regards,</div><div class=""><br class=""><div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Callum Smith</div><div class="">Instruct & Strubi Web Developer</div><div class="">University of Oxford</div><div class="">e. <a href="mailto:callum@strubi.ox.ac.uk" class="">callum@strubi.ox.ac.uk</a></div><div class="">p. +44 (0)1865 2 87782</div></div></div><br class=""></div></body></html>