308 lines
12 KiB
PHP
308 lines
12 KiB
PHP
<div id="loader">
|
|
<div class="sk-circle">
|
|
<div class="sk-circle1 sk-child"></div>
|
|
<div class="sk-circle2 sk-child"></div>
|
|
<div class="sk-circle3 sk-child"></div>
|
|
<div class="sk-circle4 sk-child"></div>
|
|
<div class="sk-circle5 sk-child"></div>
|
|
<div class="sk-circle6 sk-child"></div>
|
|
<div class="sk-circle7 sk-child"></div>
|
|
<div class="sk-circle8 sk-child"></div>
|
|
<div class="sk-circle9 sk-child"></div>
|
|
<div class="sk-circle10 sk-child"></div>
|
|
<div class="sk-circle11 sk-child"></div>
|
|
<div class="sk-circle12 sk-child"></div>
|
|
</div>
|
|
</div>
|
|
<?php
|
|
|
|
$faventry = NULL;
|
|
foreach( $this->data['idplist'] AS $tab => $slist) {
|
|
if (!empty($this->data['preferredidp']) && array_key_exists($this->data['preferredidp'], $slist))
|
|
$faventry = $slist[$this->data['preferredidp']];
|
|
}
|
|
|
|
|
|
if(!array_key_exists('header', $this->data)) {
|
|
$this->data['header'] = 'selectidp';
|
|
}
|
|
$this->data['header'] = $this->t($this->data['header']);
|
|
$this->data['jquery'] = array('core' => TRUE, 'ui' => TRUE, 'css' => TRUE);
|
|
|
|
|
|
$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/' . $this->data['score'] . '.js') . '"></script>';
|
|
|
|
if (!empty($faventry)) $this->data['autofocus'] = 'favouritesubmit';
|
|
|
|
$this->includeAtTemplateBase('includes/header.php');
|
|
|
|
echo '<h1 class="text-center disco">' . $this->t('{themeopenaire:discopower:header}') . '</h1>';
|
|
|
|
$languages_html = '';
|
|
$includeLanguageBar = TRUE;
|
|
if (!empty($_POST))
|
|
$includeLanguageBar = FALSE;
|
|
if (isset($this->data['hideLanguageBar']) && $this->data['hideLanguageBar'] === TRUE)
|
|
$includeLanguageBar = FALSE;
|
|
|
|
if ($includeLanguageBar) {
|
|
|
|
$languages = $this->getLanguageList();
|
|
if ( count($languages) > 1 ) {
|
|
$languages_html .= '<div class="ssp-lang-container">
|
|
<div class="dropup">';
|
|
$langnames = array(
|
|
'no' => 'Bokmål', // Norwegian Bokmål
|
|
'nn' => 'Nynorsk', // Norwegian Nynorsk
|
|
'se' => 'Sámegiella', // Northern Sami
|
|
'sam' => 'Åarjelh-saemien giele', // Southern Sami
|
|
'da' => 'Dansk', // Danish
|
|
'en' => 'English',
|
|
'de' => 'Deutsch', // German
|
|
'sv' => 'Svenska', // Swedish
|
|
'fi' => 'Suomeksi', // Finnish
|
|
'es' => 'Español', // Spanish
|
|
'fr' => 'Français', // French
|
|
'it' => 'Italiano', // Italian
|
|
'nl' => 'Nederlands', // Dutch
|
|
'lb' => 'Lëtzebuergesch', // Luxembourgish
|
|
'cs' => 'Čeština', // Czech
|
|
'sl' => 'Slovenščina', // Slovensk
|
|
'lt' => 'Lietuvių kalba', // Lithuanian
|
|
'hr' => 'Hrvatski', // Croatian
|
|
'hu' => 'Magyar', // Hungarian
|
|
'pl' => 'Język polski', // Polish
|
|
'pt' => 'Português', // Portuguese
|
|
'pt-br' => 'Português brasileiro', // Portuguese
|
|
'ru' => 'русский язык', // Russian
|
|
'et' => 'eesti keel', // Estonian
|
|
'tr' => 'Türkçe', // Turkish
|
|
'el' => 'ελληνικά', // Greek
|
|
'ja' => '日本語', // Japanese
|
|
'zh' => '简体中文', // Chinese (simplified)
|
|
'zh-tw' => '繁體中文', // Chinese (traditional)
|
|
'ar' => 'العربية', // Arabic
|
|
'fa' => 'پارسی', // Persian
|
|
'ur' => 'اردو', // Urdu
|
|
'he' => 'עִבְרִית', // Hebrew
|
|
'id' => 'Bahasa Indonesia', // Indonesian
|
|
'sr' => 'Srpski', // Serbian
|
|
'lv' => 'Latviešu', // Latvian
|
|
'ro' => 'Românește', // Romanian
|
|
'eu' => 'Euskara', // Basque
|
|
);
|
|
|
|
$textarray = array();
|
|
foreach ($languages AS $lang => $current) {
|
|
$lang = strtolower($lang);
|
|
if ($current) {
|
|
$lang_current = $langnames[$lang];
|
|
} else {
|
|
$textarray[] = '<li class="ssp-dropdown__two_cols--item"><a class="js-pick-language" href="' . htmlspecialchars(\SimpleSAML\Utils\HTTP::addURLParameters(\SimpleSAML\Utils\HTTP::getSelfURL(), array($this->languageParameterName => $lang))) . '">' .
|
|
$langnames[$lang] . '</a></li>';
|
|
}
|
|
}
|
|
$languages_html .= '<button class="ssp-btn btn ssp-btn__footer dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">'
|
|
. $lang_current
|
|
. '<span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-left ssp-dropdown__two_cols" aria-labelledby="Languages">';
|
|
$languages_html .= join(' ', $textarray);
|
|
$languages_html .= '</ul></div></div>'; // /dropup /ssp-lang-container
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function showEntry($t, $metadata, $favourite = FALSE) {
|
|
|
|
$basequerystring = '?' .
|
|
'entityID=' . urlencode($t->data['entityID']) . '&' .
|
|
'return=' . urlencode($t->data['return']) . '&' .
|
|
'returnIDParam=' . urlencode($t->data['returnIDParam']) . '&idpentityid=';
|
|
|
|
$providersOnlyIcon = array("google", "linkedin", "facebook", "orcid", "igtf_certificate_proxy");
|
|
$providerLocal = "openaire";
|
|
$namelower_dasherize = str_replace(' ', '_', strtolower(getTranslatedName($t, $metadata)));
|
|
|
|
|
|
if(in_array($namelower_dasherize, $providersOnlyIcon)) {
|
|
$html = '<a class="metaentry ssp-btn--round-icon" href="' . $basequerystring . urlencode($metadata['entityid']) . '">';
|
|
$html .= '<img alt="Identity Provider" class="entryicon" src="' . SimpleSAML_Module::getModuleURL('themeopenaire/resources/images/' . $namelower_dasherize . '.jpg') . '" />';
|
|
$html .= '</a>';
|
|
}
|
|
else if($namelower_dasherize == $providerLocal) {
|
|
$html = '<a class="ssp-btn btn ssp-btn__open-edugain ssp-btn__lg text-uppercase" title="OpenAIRE log in" href="' . $basequerystring . urlencode($metadata['entityid']) . '">';
|
|
$html .= '<img alt="Identity Provider" class="entryicon" src="' . SimpleSAML_Module::getModuleURL('themeopenaire/resources/images/' . $namelower_dasherize . '.png') . '" />';
|
|
$html .= 'OpenAIRE account';
|
|
$html .= '</a>';
|
|
}
|
|
else {
|
|
$html = '<a class="metaentry " href="' . $basequerystring . urlencode($metadata['entityid']) . '">';
|
|
$html .= htmlspecialchars(getTranslatedName($t, $metadata)) . '';
|
|
|
|
if(array_key_exists('icon', $metadata) && $metadata['icon'] !== NULL) {
|
|
$iconUrl = \SimpleSAML\Utils\HTTP::resolveURL($metadata['icon']);
|
|
$html .= '<img alt="Identity Provider" class="entryicon" src="' . htmlspecialchars($iconUrl) . '" />';
|
|
}
|
|
|
|
$html .= '</a>';
|
|
}
|
|
|
|
|
|
|
|
return $html;
|
|
}
|
|
|
|
?>
|
|
|
|
|
|
|
|
<?php
|
|
|
|
function getTranslatedName($t, $metadata) {
|
|
if (isset($metadata['UIInfo']['DisplayName'])) {
|
|
$displayName = $metadata['UIInfo']['DisplayName'];
|
|
assert('is_array($displayName)'); // Should always be an array of language code -> translation
|
|
if (!empty($displayName)) {
|
|
return $t->getTranslation($displayName);
|
|
}
|
|
}
|
|
|
|
if (array_key_exists('name', $metadata)) {
|
|
if (is_array($metadata['name'])) {
|
|
return $t->getTranslation($metadata['name']);
|
|
} else {
|
|
return $metadata['name'];
|
|
}
|
|
}
|
|
return $metadata['entityid'];
|
|
}
|
|
|
|
|
|
echo('<div class="ssp-container-small">');
|
|
|
|
$or_html = '<div class="row ssp-content-group">
|
|
<div class="col-sm-12 text-center ssp-or">or</div>
|
|
</div>';
|
|
|
|
$edugain_html = '';
|
|
$local_html ='';
|
|
$idps_with_logo_html = '';
|
|
if (!empty($faventry)) {
|
|
echo('
|
|
<div class="modal fade" id="favourite-modal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="js-close-custom close"><span aria-hidden="true">×</span></button>
|
|
<h2 class="modal-title">Login</h2>
|
|
</div>
|
|
<div class="modal-body ssp-modal-body">
|
|
<div class="row text-center">
|
|
<form id="idpselectform" method="get" action="' . $this->data['urlpattern'] . '" class="ssp-form-favourite">
|
|
<input type="hidden" name="entityID" value="' . htmlspecialchars($this->data['entityID']) . '" />
|
|
<input type="hidden" name="return" value="' . htmlspecialchars($this->data['return']) . '" />
|
|
<input type="hidden" name="returnIDParam" value="' . htmlspecialchars($this->data['returnIDParam']) . '" />
|
|
<input type="hidden" name="idpentityid" value="' . htmlspecialchars($faventry['entityid']) . '" />
|
|
<input type="submit" name="formsubmit" id="favouritesubmit" class="ssp-btn ssp-btn__action btn text-uppercase" value="'
|
|
. $this->t('login_at') . ' ' . htmlspecialchars(getTranslatedName($this, $faventry)) . '" />
|
|
</form>
|
|
</div>
|
|
<div class="row text-center ssp-or">or</div>
|
|
<div class="row text-center"><button class="btn ssp-btn text-uppercase ssp-btn ssp-btn__secondary js-close-custom">Choose an other account</button></div>
|
|
</div> <!-- /modal-body -->
|
|
</div> <!-- /modal-content -->
|
|
</div> <!-- /modal-dialog -->
|
|
</div> <!-- /modal -->
|
|
');
|
|
}
|
|
|
|
|
|
foreach( $this->data['idplist'] AS $tab => $slist) {
|
|
if ($tab !== 'all') {
|
|
if (!empty($slist)) {
|
|
if($tab == 'edugain') {
|
|
$edugainList = '<div class="metalist ssp-content-group__provider-list ssp-content-group__provider-list--edugain js-spread" id="list_' .$tab . '">';
|
|
if (!empty($this->data['preferredidp']) && array_key_exists($this->data['preferredidp'], $slist)) {
|
|
$idpentry = $slist[$this->data['preferredidp']];
|
|
$edugainList .= (showEntry($this, $idpentry, TRUE));
|
|
}
|
|
|
|
foreach ($slist AS $idpentry) {
|
|
if ($idpentry['entityid'] != $this->data['preferredidp']) {
|
|
$edugainList .= (showEntry($this, $idpentry));
|
|
}
|
|
}
|
|
$edugainList .= '</div>'; // /metalist
|
|
$buttonOpenEdugain = '<div class="row ssp-content-group"><div class="col-sm-12 text-center"><h3 class="disco">Log in with</h3><button type="button" class="ssp-btn btn ssp-btn__btn-lg ssp-btn__lg text-uppercase" data-toggle="modal" data-target="#edugain-modal"><img class="round" src="'
|
|
. SimpleSAML_Module::getModuleURL('themeopenaire/resources/images/edugain.png') . '">edugain</button></div></div>';
|
|
$edugain_html .= '
|
|
<div class="modal fade" id="edugain-modal" tabindex="-1" role="dialog">
|
|
<div class="modal-dialog modal-lg">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="js-close-custom close"><span aria-hidden="true">×</span></button>
|
|
<h2 class="modal-title">' . $this->t('{discopower:tabs:' . $tab . '}') . '</h2>
|
|
</div>
|
|
<div class="modal-body ssp-modal-body">
|
|
<div class="row">
|
|
<div class="input-group">
|
|
<span class="input-group-addon"><span class="glyphicon glyphicon-search" aria-hidden="true"></span></span>
|
|
<form id="idpselectform" action="?" method="get"><input class="form-control" aria-describedby="search institutions" placeholder="Search..." type="text" value="" name="query_'
|
|
. $tab
|
|
. '" id="query_' . $tab . '" /></form>'
|
|
. '</div> <!-- /input-group -->'
|
|
. $edugainList
|
|
. '</div> <!-- /row -->
|
|
</div> <!-- /modal-body -->
|
|
<div class="modal-footer ssp-text-left">'
|
|
. $languages_html .
|
|
'</div>
|
|
</div> <!-- /modal-content -->
|
|
</div> <!-- /modal-dialog -->
|
|
</div> <!-- /modal -->';
|
|
$edugain_html .= $buttonOpenEdugain;
|
|
}
|
|
else if($tab == "idps_with_logos") {
|
|
$providers = '';
|
|
if (!empty($this->data['preferredidp']) && array_key_exists($this->data['preferredidp'], $slist)) {
|
|
$idpentry = $slist[$this->data['preferredidp']];
|
|
$providers .= (showEntry($this, $idpentry, TRUE));
|
|
}
|
|
|
|
foreach ($slist AS $idpentry) {
|
|
if ($idpentry['entityid'] != $this->data['preferredidp']) {
|
|
$providers .= (showEntry($this, $idpentry));
|
|
}
|
|
}
|
|
$idps_with_logo_html .= '<div class="row ssp-content-group"><div class="col-sm-12 text-center">'
|
|
. $providers .
|
|
'</div></div>';
|
|
}
|
|
else if($tab == "local") {
|
|
$providers = '';
|
|
// Should be 1 provider in the list
|
|
foreach ($slist AS $idpentry) {
|
|
$providers .= (showEntry($this, $idpentry));
|
|
}
|
|
$local_html .= '<div class="row ssp-content-group"><div class="col-sm-12 text-center">'
|
|
. $providers .
|
|
'</div></div>';
|
|
}
|
|
}
|
|
}
|
|
}
|
|
echo $edugain_html . $idps_with_logo_html . $or_html . $local_html;
|
|
?>
|
|
<p class="ssp-signup text-center">
|
|
Need an account?
|
|
<a href=<?php echo $this->t('{themeopenaire:discopower:sign_up_url}'); ?> >
|
|
Sign up
|
|
</a>
|
|
</p>
|
|
</div> <!-- /ssp-container-small -->
|
|
|
|
<?php $this->includeAtTemplateBase('includes/footer.php');
|