From 19ef46e883334876d09f4c0fa2c34c218f7dec87 Mon Sep 17 00:00:00 2001 From: Mads Freek Petersen <freek@wayf.dk> Date: Wed, 3 Mar 2010 14:27:52 +0000 Subject: [PATCH] git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2195 44740490-163a-0410-bde0-09ae8108e29a --- .../config-templates/module_discopower.php | 7 ++++++ modules/discopower/lib/PowerIdPDisco.php | 1 + modules/discopower/templates/disco-tpl.php | 8 +------ modules/discopower/www/js/suggest.js | 23 +++++++++++++++++++ 4 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 modules/discopower/www/js/suggest.js diff --git a/modules/discopower/config-templates/module_discopower.php b/modules/discopower/config-templates/module_discopower.php index 50ca7aaba..073e70b13 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 dfe9b3f80..7ab43ff83 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 9791f79e0..f3ead884e 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 000000000..770260ac3 --- /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 -- GitLab