From 604c255d7bc65a584a46a47e8bd601ddea17b670 Mon Sep 17 00:00:00 2001 From: Tim van Dijen <tvdijen@gmail.com> Date: Tue, 12 Dec 2017 21:48:24 +0100 Subject: [PATCH] core: Add Twig templates --- .../core/templates/frontpage_federation.twig | 89 +++++++++++++++++++ modules/core/templates/frontpage_welcome.twig | 22 +++++ modules/core/www/frontpage_federation.php | 35 +++++++- modules/core/www/frontpage_welcome.php | 2 +- .../multiauth/lib/Auth/Source/MultiAuth.php | 4 + 5 files changed, 148 insertions(+), 4 deletions(-) create mode 100644 modules/core/templates/frontpage_federation.twig create mode 100644 modules/core/templates/frontpage_welcome.twig diff --git a/modules/core/templates/frontpage_federation.twig b/modules/core/templates/frontpage_federation.twig new file mode 100644 index 000000000..25601e42c --- /dev/null +++ b/modules/core/templates/frontpage_federation.twig @@ -0,0 +1,89 @@ +{% set pagetitle = '{core:frontpage:page_title}'|trans %} +{% extends "base.twig" %} + +{% block content %} + {% if isadmin %} + <p class="float-r youareadmin">{{ '{core:frontpage:loggedin_as_admin}'|trans }}</p> + {% else %} + <p class="float-r youareadmin"> + <a href="{{ loginurl|escape('url') }}">{{ '{core:frontpage:login_as_admin}'|trans }}</a> + </p> + {% endif %} + + {% if metaentries.hosted is iterable and metaentries.hosted is not empty %} + <dl> + {% for key, set in metaentries.hosted %} + {% set metadataset = attribute(set, 'metadata-set') %} + <dt>{{ mtype[metadataset]|trans }}</dt> + <dd> + <p>Entity ID: {{ hm.entityid }} + {% if set.deprecated is defined and set.deprecated %} + <br /><span style="font-weight: bold;">Deprecated</span> + {% endif %} + {% if set.entityid != attribute(set, 'metadata-index') %} + <br />Index: {{ attribute(set, 'metadata-index') }} + {% endif %} + {% if set.name_translated is defined %} + <br /><span style="font-weight: bold;">{{ set.name_translated }}</span> + {% endif %} + {% if set.descr_translated is defined %} + <br /><span style="font-weight: bold;">{{ set.descr_translated }}</span> + {% endif %} + <br />[ <a href="{{ attribute(set, 'metadata-url') }}">{{'{core:frontpage:show_metadata}'|trans }}</a> ] + </p> + </dd> + {% endfor %} + </dl> + {% endif %} + + {% if metaentries.remote is iterable and metaentries.remote is not empty %} + {% for key, set in metaentries.remote %} + <fieldset class="fancyfieldset"> + <legend>{{ mtype[key]|trans }} (Trusted)</legend> + <ul> + {% for entityid, entity in set %} + <li><a href="{{ (metadata_url ~ '?entityid=' ~ entity.entityid ~ '&set=' ~ key)|escape('html') }}"> + {%- if entity.name_translated is defined %} + {{ entity.name_translated }} + {% elseif entity.organizationdisplayname_translated is defined %} + {{ entity.organizationdisplayname_translated }} + {% else %}{{ entity.entityid|escape('html') }} + {% endif -%}</a> + + {%- if entity.expire is defined %} + {% if entity.expire > date().timestamp %} + <span style="color: #500; font-weight: bold"> (expired {{ ((date().timestamp - entity.expire) / 3600) }} hours ago)</span> + {% else %} (expires in {{ ((entity.expire - date().timestamp) / 3600) }} hours){% endif -%}{% endif %} + </li> + {% endfor %} + </ul> + </fieldset> + {% endfor %} + {% endif %} + + <h2>{{ '{core:frontpage:tools}'|trans }}</h2> + <ul> + {% for key, link in links_federation %} + <li><a href="{{ link.href|escape('html') }}">{{ link.text|trans|escape('html') }}</a></li> + {% endfor %} + </ul> + + {% if isadmin %} + <fieldset class="fancyfieldset"> + <legend>Lookup metadata</legend> + <form action="{{ metadata_url }}" method="get"> + <p style="margin: 1em 2em ">Look up metadata for entity: + <select name="set"> + {% if metaentries.remote is defined and metaentries.remote is not empty %} + {% for key, set in metaentries.remote %} + <option value="{{ key|escape('html') }}">{{ mtype[key]|trans }}</option> + {% endfor %} + {% endif %} + </select> + <input type="text" name="entityid" /> + <button class="btn" type="submit">Lookup </button> + </p> + </form> + </fieldset> + {% endif %} +{% endblock %} diff --git a/modules/core/templates/frontpage_welcome.twig b/modules/core/templates/frontpage_welcome.twig new file mode 100644 index 000000000..3ed8da3ea --- /dev/null +++ b/modules/core/templates/frontpage_welcome.twig @@ -0,0 +1,22 @@ +{% set pagetitle = '{core:frontpage:page_title}'|trans %} +{% extends "base.twig" %} + +{% block content %} + {% if isadmin %} + <p class="float-r youareadmin">{{ '{core:frontpage:loggedin_as_admin}'|trans }}</p> + {% else %} + <p class="float-r youareadmin"> + <a href="{{ loginurl|escape('url') }}">{{ '{core:frontpage:login_as_admin}'|trans }}</a> + </p> + {% endif %} + + <p>{{ '{core:frontpage:intro}'|trans|raw }}</p> + <ul> + {% for key, link in links_welcome %} + <li><a href="{{ link.href|escape('html') }}">{{ link.text|trans|escape('html') }}</a></li> + {% endfor %} + </ul> + + <h2>{{ '{core:frontpage:about_header}'|trans }}</h2> + <p>{{ '{core:frontpage:about_text}'|trans|raw }}</p> +{% endblock %} diff --git a/modules/core/www/frontpage_federation.php b/modules/core/www/frontpage_federation.php index 669fc2e2c..3cac2f4ee 100644 --- a/modules/core/www/frontpage_federation.php +++ b/modules/core/www/frontpage_federation.php @@ -117,6 +117,36 @@ foreach ($metaentries['remote'] as $key => $value) { $t = new SimpleSAML_XHTML_Template($config, 'core:frontpage_federation.tpl.php'); +$language = $t->getLanguage(); +$defaultLanguage = $config->getString('language.default', 'en'); + +$translators = array( + 'name' => 'name_translated', + 'descr' => 'descr_translated', + 'OrganizationDisplayName' => 'organizationdisplayname_translated', +); + +foreach ($metaentries['hosted'] as $index => $entity) { + foreach ($translators as $old => $new) { + if (isset($entity[$old][$language])) { + $metaentries['hosted'][$index][$new] = $entity[$old][$language]; + } elseif ($entity[$old][$defaultLanguage]) { + $metaentries['hosted'][$index][$new] = $entity[$old][$defaultLanguage]; + } + } +} +foreach ($metaentries['remote'] as $key => $set) { + foreach ($set as $entityid => $entity) { + foreach ($translators as $old => $new) { + if (isset($entity[$old][$language])) { + $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$language]; + } elseif ($entity[$old][$defaultLanguage]) { + $metaentries['remote'][$key][$entityid][$new] = $entity[$old][$defaultLanguage]; + } + } + } +} + # look up translated string $mtype = array( 'saml20-sp-remote' => $t->noop('{admin:metadata_saml20-sp}'), @@ -143,12 +173,11 @@ $t->data['links_welcome'] = $links_welcome; $t->data['links_config'] = $links_config; $t->data['links_auth'] = $links_auth; $t->data['links_federation'] = $links_federation; +$t->data['header'] = $t->t('{core:frontpage:page_title}'); - - +$t->data['metadata_url'] = SimpleSAML\Module::getModuleURL('core/show_metadata.php'); $t->data['metaentries'] = $metaentries; $t->data['mtype'] = $mtype; - $t->show(); diff --git a/modules/core/www/frontpage_welcome.php b/modules/core/www/frontpage_welcome.php index abeeecea1..aa79756cd 100644 --- a/modules/core/www/frontpage_welcome.php +++ b/modules/core/www/frontpage_welcome.php @@ -57,7 +57,7 @@ $t->data['links_welcome'] = $links_welcome; $t->data['links_config'] = $links_config; $t->data['links_auth'] = $links_auth; $t->data['links_federation'] = $links_federation; - +$t->data['header'] = $t->t('{core:frontpage:page_title}'); diff --git a/modules/multiauth/lib/Auth/Source/MultiAuth.php b/modules/multiauth/lib/Auth/Source/MultiAuth.php index f63bcce9d..56960f154 100644 --- a/modules/multiauth/lib/Auth/Source/MultiAuth.php +++ b/modules/multiauth/lib/Auth/Source/MultiAuth.php @@ -69,6 +69,9 @@ class sspmod_multiauth_Auth_Source_MultiAuth extends SimpleSAML_Auth_Source { $text = array($defaultLanguage => $source); } + if (array_key_exists('help', $info)) { + $help = $info['help']; + } if (array_key_exists('css-class', $info)) { $css_class = $info['css-class']; } else { @@ -84,6 +87,7 @@ class sspmod_multiauth_Auth_Source_MultiAuth extends SimpleSAML_Auth_Source { $this->sources[] = array( 'source' => $source, 'text' => $text, + 'help' => $help, 'css_class' => $css_class, ); } -- GitLab