diff --git a/modules/discopower/config-templates/module_discopower.php b/modules/discopower/config-templates/module_discopower.php index 50ca7aaba6aff81e18c3ce4ed8661a3de48a603e..073e70b13a885a49478c64124c8333f2785d3284 100644 --- a/modules/discopower/config-templates/module_discopower.php +++ b/modules/discopower/config-templates/module_discopower.php @@ -20,6 +20,13 @@ $config = array ( * * 'tabs' => array('norway', 'finland'), */ + + /** + * If you want to change the scoring algorithm to a more google suggest like one + * (filters by start of words) uncomment this ... + * + * 'score' => 'suggest', + */ ); diff --git a/modules/discopower/lib/PowerIdPDisco.php b/modules/discopower/lib/PowerIdPDisco.php index dfe9b3f80164d3726a577d1e070a518827ff717f..7ab43ff839f931bc1b8276c657261532123a4dac 100644 --- a/modules/discopower/lib/PowerIdPDisco.php +++ b/modules/discopower/lib/PowerIdPDisco.php @@ -188,6 +188,7 @@ class sspmod_discopower_PowerIdPDisco extends SimpleSAML_XHTML_IdPDisco { $t->data['rememberenabled'] = $this->config->getBoolean('idpdisco.enableremember', FALSE); $t->data['rememberchecked'] = $this->config->getBoolean('idpdisco.rememberchecked', FALSE); $t->data['defaulttab'] = $this->discoconfig->getValue('defaulttab', 0); + $t->data['score'] = $this->discoconfig->getValue('score', 'quicksilver'); $t->show(); } } diff --git a/modules/discopower/templates/disco-tpl.php b/modules/discopower/templates/disco-tpl.php index 9791f79e0b2725ccc57d4ccaf1cd8fd1b19c837b..f3ead884e5a734233a65368f77445da0a81bd4f0 100644 --- a/modules/discopower/templates/disco-tpl.php +++ b/modules/discopower/templates/disco-tpl.php @@ -21,7 +21,7 @@ $this->data['jquery'] = array('version' => '1.6', 'core' => TRUE, 'ui' => TRUE, $this->data['head'] = '<link rel="stylesheet" media="screen" type="text/css" href="' . SimpleSAML_Module::getModuleUrl('discopower/style.css') . '" />'; $this->data['head'] .= '<script type="text/javascript" src="' . SimpleSAML_Module::getModuleUrl('discopower/js/jquery.livesearch.js') . '"></script>'; -$this->data['head'] .= '<script type="text/javascript" src="' . SimpleSAML_Module::getModuleUrl('discopower/js/quicksilver.js') . '"></script>'; +$this->data['head'] .= '<script type="text/javascript" src="' . SimpleSAML_Module::getModuleUrl('discopower/js/' . $this->data['score'] . '.js') . '"></script>'; $this->data['head'] .= '<script type="text/javascript"> @@ -108,12 +108,6 @@ function getTranslatedName($t, $metadata) { } else { return $metadata['name']; } - } elseif (array_key_exists('OrganizationDisplayName', $metadata)) { - if (is_array($metadata['OrganizationDisplayName'])) { - return $t->getTranslation($metadata['OrganizationDisplayName']); - } else { - return $metadata['OrganizationDisplayName']; - } } return $metadata['entityid']; } diff --git a/modules/discopower/www/js/suggest.js b/modules/discopower/www/js/suggest.js new file mode 100644 index 0000000000000000000000000000000000000000..770260ac32486f61dc42c2ed96f8f27a015e0d75 --- /dev/null +++ b/modules/discopower/www/js/suggest.js @@ -0,0 +1,23 @@ +var suggest_cache = new Array; + +String.prototype.score = function(abbreviation,offset) { + if (suggest_cache['abv'] != abbreviation) { + suggest_cache['abv'] = abbreviation; + var words = abbreviation.split(/\s/); + suggest_cache['len'] = words.length; + suggest_cache.re = new Array; + + //words.each(); + for ( var i=0; i<suggest_cache['len']; ++i ){ + suggest_cache['re'][i] = new Array(); + // /\b<x>/ doesn't work when <x> i a non-ascii - oddly enough \s does ... + suggest_cache['re'][i]['initialword'] = new RegExp("^"+words[i], "i"); + suggest_cache['re'][i]['word'] = new RegExp("\\s"+words[i], "i"); + } + } + + for ( var i=0; i<suggest_cache['len']; ++i ){ + if (!(this.match(suggest_cache['re'][i]['initialword']) || this.match(suggest_cache['re'][i]['word']))) return 0; + } + return 1; +} \ No newline at end of file