Skip to content
Snippets Groups Projects
Commit 2843d101 authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms Committed by Jan-Hendrik Willms
Browse files

fixes #4077

Closes #4077

Merge request studip/studip!2920
parent 83c694e2
No related branches found
No related tags found
No related merge requests found
......@@ -261,7 +261,12 @@ class Course_ContentmodulesController extends AuthenticatedController
}
}
PageLayout::setTitle(sprintf(_('Informationen über %s'), $this->metadata['displayname']));
$this->metadata['icon'] = $this->getIconFromMetadata($this->metadata, $this->plugin);
PageLayout::setTitle(sprintf(
_('Informationen über %s'),
$this->metadata['displayname'] ?? $this->plugin->getPluginName()
));
}
private function getModules(Range $context)
......@@ -291,6 +296,7 @@ class Course_ContentmodulesController extends AuthenticatedController
$visibility = $tool ? $tool->getVisibilityPermission() : 'nobody';
$metadata = $plugin->getMetadata();
$icon = $this->getIconFromMetadata($metadata, $plugin);
$list[$plugin_id] = [
'id' => $plugin_id,
'moduleclass' => get_class($plugin),
......@@ -299,7 +305,7 @@ class Course_ContentmodulesController extends AuthenticatedController
'displayname' => $displayname,
'visibility' => $visibility,
'active' => (bool) $tool,
'icon' => $this->getIconFromMetadata($metadata, $plugin),
'icon' => $icon ? $icon->asImagePath() : null,
'summary' => $metadata['summary'] ?? null,
'mandatory' => $this->sem_class->isModuleMandatory(get_class($plugin)),
'highlighted' => (bool) $plugin->isHighlighted(),
......@@ -315,7 +321,7 @@ class Course_ContentmodulesController extends AuthenticatedController
* @param array $metadata
* @param CorePlugin|StudIPPlugin $plugin
*/
private function getIconFromMetadata(array $metadata, $plugin): ?string
private function getIconFromMetadata(array $metadata, $plugin): ?Icon
{
$icon = $metadata['icon_clickable'] ?? $metadata['icon'] ?? null;
......@@ -332,7 +338,7 @@ class Course_ContentmodulesController extends AuthenticatedController
$icon = Icon::create($plugin->getPluginURL() . '/' . $icon);
}
return $icon->copyWithRole(Icon::ROLE_CLICKABLE)->asImagePath();
return $icon->copyWithRole(Icon::ROLE_CLICKABLE);
}
private function getCoreIcon(string $path): ?Icon
......
......@@ -5,27 +5,17 @@
<div class="main_part">
<div class="header">
<div class="image">
<?
if ($metadata['icon']) {
$icon = $metadata['icon'] instanceof Icon
? $metadata['icon']->asImagePath()
: Icon::create($plugin->getPluginURL().'/'.$metadata['icon'])->asImagePath();
} else {
$icon = null;
}
if ($icon && !is_a($icon, 'Icon')) {
$icon = Icon::create($icon);
}
?>
<? if ($icon) : ?>
<?= $icon->asImg(100) ?>
<? endif ?>
<? if ($metadata['icon']): ?>
<?= $metadata['icon']->copyWithRole(Icon::ROLE_INFO)->asImg(100) ?>
<? endif; ?>
</div>
<div class="text">
<h1><?= htmlReady($metadata['displayname'] ?? $plugin->getPluginName()) ?></h1>
<? if (!empty($metadata['summary'])): ?>
<strong>
<?= htmlReady($metadata['summary']) ?>
</strong>
<? endif; ?>
</div>
</div>
<div class="content-modules-controls-vue-app" is="ContentModulesControl" module_id="<?= htmlReady($plugin->getPluginId()) ?>"></div>
......
......@@ -440,12 +440,14 @@ class PluginAdministration
// get plugin meta data
$pluginclass = $manifest['pluginclassname'];
$origin = $manifest['origin'];
$min_version = $manifest['studipMinVersion'];
$max_version = $manifest['studipMaxVersion'];
$min_version = $manifest['studipMinVersion'] ?? null;
$max_version = $manifest['studipMaxVersion'] ?? null;
// check for compatible version
if ((isset($min_version) && StudipVersion::olderThan($min_version)) ||
(isset($max_version) && StudipVersion::newerThan($max_version))) {
if (
(isset($min_version) && StudipVersion::olderThan($min_version))
|| (isset($max_version) && StudipVersion::newerThan($max_version))
) {
throw new PluginInstallationException(_('Das Plugin ist mit dieser Stud.IP-Version nicht kompatibel.'));
}
......@@ -456,7 +458,7 @@ class PluginAdministration
$pluginregistered = $plugin_manager->getPluginInfo($pluginclass);
if ($pluginregistered) {
new PluginInstallationException(_('Das Plugin ist bereits registriert.'));
throw new PluginInstallationException(_('Das Plugin ist bereits registriert.'));
}
// create database schema if needed
......
......@@ -76,7 +76,7 @@ class OERHostOERSI extends OERHost
$material['difficulty_end'] = 12;
$material['uri'] = $material_data['_source']['id'];
$material['source_url'] = $material_data['_source']['id'];
$material['content_type'] = $material_data['_source']['encoding'][0]['encodingFormat'] ?: '';
$material['content_type'] = $material_data['_source']['encoding'][0]['encodingFormat'] ?? '';
$material['license_identifier'] = $this->getLicenseID($material_data['_source']['license']['id']) ?: '';
if (!$material['category']) {
$material['category'] = $material->autoDetectCategory();
......@@ -86,19 +86,24 @@ class OERHostOERSI extends OERHost
'front_image_url' => $material_data['_source']['image'] ?? null,
'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '',
'id' => $material_data['_id'],
'organization' => $material_data['_source']['sourceOrganization'][0]['name'] ?: $material_data['_source']['publisher'][0]['name']
'organization' => $material_data['_source']['sourceOrganization'][0]['name'] ?? $material_data['_source']['publisher'][0]['name'] ?? '',
];
$material->store();
//set users:
$userdata = [];
foreach ((array) $material_data['_source']['creator'] as $creator) {
if (
isset($material_data['_source']['creator'])
&& is_array($material_data['_source']['creator'])
) {
foreach ($material_data['_source']['creator'] as $creator) {
$userdata[] = [
'user_id' => md5($creator['name']),
'name' => $creator['name'],
'host_url' => $this['url']
];
}
}
$material->setUsers($userdata);
//set topics:
......
......@@ -95,7 +95,7 @@ abstract class StudIPPlugin
if (!empty($metadata['description_' . $language])) {
return $metadata['description_' . $language];
}
$description = $metadata['descriptionlong'] ?? $metadata['description'];
$description = $metadata['descriptionlong'] ?? $metadata['description'] ?? '';
if ($this->plugin_info['description_mode'] === 'override_description') {
return $this->plugin_info['description'];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment