From 30b5ad5e65a8f4c3a0871d4c6473120ed5f7a128 Mon Sep 17 00:00:00 2001
From: "renater.salaun" <renater.salaun@047e039d-479c-447e-8a29-aa6bf4a09bab>
Date: Mon, 13 Oct 2014 07:40:35 +0000
Subject: [PATCH] Show displayName in any language if no English version is
 provided. Sorting by displayNAme

git-svn-id: https://svn.geant.net/GEANT/edugain_testidp_account_manager/trunk@22 047e039d-479c-447e-8a29-aa6bf4a09bab
---
 lib/IdPAccountManager/SAMLMetadata.pm | 8 ++++++++
 templates/web/account_wizard.tt2.html | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/lib/IdPAccountManager/SAMLMetadata.pm b/lib/IdPAccountManager/SAMLMetadata.pm
index 37a705e..8ca6632 100644
--- a/lib/IdPAccountManager/SAMLMetadata.pm
+++ b/lib/IdPAccountManager/SAMLMetadata.pm
@@ -246,6 +246,14 @@ sub _parse_saml_metadata {
 		foreach my $displayname ($child->getElementsByLocalName('DisplayName')) {	
 			
 			$extracted_data->{'display_name'}{$displayname->getAttribute('xml:lang')} = &IdPAccountManager::Tools::encode_utf8($displayname->textContent());
+                        
+                        ## Set a default displayName in case no English version is provided
+                        ## However there is no way to determine the native displayName
+                        ## We take the first one as default
+                        if (! $extracted_data->{'default_display_name'} || $displayname->getAttribute('xml:lang')) {
+                            $extracted_data->{'default_display_name'} = &IdPAccountManager::Tools::encode_utf8($displayname->textContent());
+                        }
+                        
 		}
 
 		foreach my $description ($child->getElementsByLocalName('Description')) {	
diff --git a/templates/web/account_wizard.tt2.html b/templates/web/account_wizard.tt2.html
index 34f4368..a57cab6 100644
--- a/templates/web/account_wizard.tt2.html
+++ b/templates/web/account_wizard.tt2.html
@@ -107,8 +107,8 @@ in eduGAIN inter-federation. Note that only a Service Provider administrator can
     
     <select  id="sp_entityid" name="sp_entityid" class="required">
         <option value="">Select your Service Provider below</option>
-        [% FOREACH entity IN federation_metadata_as_hashref.sort('entityid') %]
-<option value="[% entity.entityid %]">[% IF entity.display_name && entity.display_name.en %][% entity.display_name.en %] - [% END %][% entity.entityid %]</option>
+        [% FOREACH entity IN federation_metadata_as_hashref.sort('default_display_name') %]
+<option value="[% entity.entityid %]">[% IF entity.default_display_name %][% entity.default_display_name %] [% END %]([% entity.entityid %])</option>
         [% END %]
     </select>
     <br/>
-- 
GitLab