From 845012a2aedfe5a67eff71720ffcbff193d2a63a Mon Sep 17 00:00:00 2001 From: Guillaume Rousse <guillaume.rousse@renater.fr> Date: Wed, 23 May 2018 16:17:42 +0200 Subject: [PATCH] display name rework - extract service name instead of organization name - compute display name in code, rather than template - display entityID first, as mandatory, and name as optional --- lib/AccountManager/Metadata.pm | 43 +++++++++++++++++++------------- templates/web/select_sp.tt2.html | 2 +- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/lib/AccountManager/Metadata.pm b/lib/AccountManager/Metadata.pm index 41fce72..9f57a28 100644 --- a/lib/AccountManager/Metadata.pm +++ b/lib/AccountManager/Metadata.pm @@ -81,6 +81,16 @@ sub parse { push @{ $data->{domain} }, $scope->textContent(); } + my @uiinfo = $child->getElementsByLocalName('UIInfo'); + if (@uiinfo) { + my $uiinfo = $uiinfo[0]; + my @names = $uiinfo->getChildrenByLocalName('DisplayName'); + my %names = + map { $_->getAttribute('xml:lang') => $_->textContent() } + @names; + $data->{name} = $names{en} ? $names{en} : $names[0]; + } + } elsif ($child->localname() eq 'SPSSODescriptor') { # skip immediatly if requested type differs next ENTITY if $args{type} && $args{type} ne 'sp'; @@ -121,6 +131,16 @@ sub parse { }; } + my @uiinfo = $child->getElementsByLocalName('UIInfo'); + if (@uiinfo) { + my $uiinfo = $uiinfo[0]; + my @names = $uiinfo->getChildrenByLocalName('DisplayName'); + my %names = + map { $_->getAttribute('xml:lang') => $_->textContent() } + @names; + $data->{name} = $names{en} ? $names{en} : $names[0]; + } + } elsif ($child->localname() eq 'Extensions') { foreach my $registrationinfo ( @@ -141,6 +161,7 @@ sub parse { $policy->textContent(); } } + } elsif ($child->localname() eq 'ContactPerson') { my $details; $details->{type} = $child->getAttribute('contactType'); @@ -154,13 +175,6 @@ sub parse { } push @{ $data->{contacts} }, $details; } - } elsif ($child->localname() eq 'Organization') { - $data->{name} = _get_default_value( - $child, 'OrganizationName' - ); - $data->{display_name} = _get_default_value( - $child, 'OrganizationDisplayName' - ); } ## Getting X.509 certificates @@ -175,6 +189,10 @@ sub parse { # and no identifiable type was found next ENTITY if $args{type} && !$data->{type}; + $data->{display_name} = $data->{name} ? + sprintf("%s (%s)", $data->{entityid}, $data->{name}) : + sprintf("%s", $data->{entityid}); + push @array, $data; } @@ -198,17 +216,6 @@ sub _boolean2integer { undef; } - -sub _get_default_value { - my ($node, $child_name) = @_; - - my %names; - $names{ $_->getAttribute('xml:lang') } = $_->textContent() - foreach $node->getChildrenByLocalName($child_name); - - return $names{en} ? $names{en} : (values %names)[0]; -} - 1; __END__ diff --git a/templates/web/select_sp.tt2.html b/templates/web/select_sp.tt2.html index b3889d6..c3ecc67 100644 --- a/templates/web/select_sp.tt2.html +++ b/templates/web/select_sp.tt2.html @@ -110,7 +110,7 @@ $(function() { <select id="entityid" name="entityid" class="required"> <option value=""></option> [% FOREACH entity IN metadata.sort('display_name') %] - <option value="[% entity.entityid %]">[% IF entity.display_name %][% entity.display_name %] [%+ END %]([% entity.entityid %])</option> + <option value="[% entity.entityid %]">[% entity.display_name %]</option> [% END %] </select> <p>[% lh.maketext("Only Service Providers included in eduGAIN metadata are included in the list.") %]</p> -- GitLab