Skip to content
Snippets Groups Projects
Commit d24ea7d7 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 f7067897
No related branches found
No related tags found
No related merge requests found
...@@ -261,7 +261,12 @@ class Course_ContentmodulesController extends AuthenticatedController ...@@ -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) private function getModules(Range $context)
...@@ -291,6 +296,7 @@ class Course_ContentmodulesController extends AuthenticatedController ...@@ -291,6 +296,7 @@ class Course_ContentmodulesController extends AuthenticatedController
$visibility = $tool ? $tool->getVisibilityPermission() : 'nobody'; $visibility = $tool ? $tool->getVisibilityPermission() : 'nobody';
$metadata = $plugin->getMetadata(); $metadata = $plugin->getMetadata();
$icon = $this->getIconFromMetadata($metadata, $plugin);
$list[$plugin_id] = [ $list[$plugin_id] = [
'id' => $plugin_id, 'id' => $plugin_id,
'moduleclass' => get_class($plugin), 'moduleclass' => get_class($plugin),
...@@ -299,7 +305,7 @@ class Course_ContentmodulesController extends AuthenticatedController ...@@ -299,7 +305,7 @@ class Course_ContentmodulesController extends AuthenticatedController
'displayname' => $displayname, 'displayname' => $displayname,
'visibility' => $visibility, 'visibility' => $visibility,
'active' => (bool) $tool, 'active' => (bool) $tool,
'icon' => $this->getIconFromMetadata($metadata, $plugin), 'icon' => $icon ? $icon->asImagePath() : null,
'summary' => $metadata['summary'] ?? null, 'summary' => $metadata['summary'] ?? null,
'mandatory' => $this->sem_class->isModuleMandatory(get_class($plugin)), 'mandatory' => $this->sem_class->isModuleMandatory(get_class($plugin)),
'highlighted' => (bool) $plugin->isHighlighted(), 'highlighted' => (bool) $plugin->isHighlighted(),
...@@ -315,7 +321,7 @@ class Course_ContentmodulesController extends AuthenticatedController ...@@ -315,7 +321,7 @@ class Course_ContentmodulesController extends AuthenticatedController
* @param array $metadata * @param array $metadata
* @param CorePlugin|StudIPPlugin $plugin * @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; $icon = $metadata['icon_clickable'] ?? $metadata['icon'] ?? null;
...@@ -332,7 +338,7 @@ class Course_ContentmodulesController extends AuthenticatedController ...@@ -332,7 +338,7 @@ class Course_ContentmodulesController extends AuthenticatedController
$icon = Icon::create($plugin->getPluginURL() . '/' . $icon); $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 private function getCoreIcon(string $path): ?Icon
......
...@@ -5,27 +5,17 @@ ...@@ -5,27 +5,17 @@
<div class="main_part"> <div class="main_part">
<div class="header"> <div class="header">
<div class="image"> <div class="image">
<? <? if ($metadata['icon']): ?>
if ($metadata['icon']) { <?= $metadata['icon']->copyWithRole(Icon::ROLE_INFO)->asImg(100) ?>
$icon = $metadata['icon'] instanceof Icon <? endif; ?>
? $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 ?>
</div> </div>
<div class="text"> <div class="text">
<h1><?= htmlReady($metadata['displayname'] ?? $plugin->getPluginName()) ?></h1> <h1><?= htmlReady($metadata['displayname'] ?? $plugin->getPluginName()) ?></h1>
<? if (!empty($metadata['summary'])): ?>
<strong> <strong>
<?= htmlReady($metadata['summary']) ?> <?= htmlReady($metadata['summary']) ?>
</strong> </strong>
<? endif; ?>
</div> </div>
</div> </div>
<div class="content-modules-controls-vue-app" is="ContentModulesControl" module_id="<?= htmlReady($plugin->getPluginId()) ?>"></div> <div class="content-modules-controls-vue-app" is="ContentModulesControl" module_id="<?= htmlReady($plugin->getPluginId()) ?>"></div>
......
...@@ -440,12 +440,14 @@ class PluginAdministration ...@@ -440,12 +440,14 @@ class PluginAdministration
// get plugin meta data // get plugin meta data
$pluginclass = $manifest['pluginclassname']; $pluginclass = $manifest['pluginclassname'];
$origin = $manifest['origin']; $origin = $manifest['origin'];
$min_version = $manifest['studipMinVersion']; $min_version = $manifest['studipMinVersion'] ?? null;
$max_version = $manifest['studipMaxVersion']; $max_version = $manifest['studipMaxVersion'] ?? null;
// check for compatible version // check for compatible version
if ((isset($min_version) && StudipVersion::olderThan($min_version)) || if (
(isset($max_version) && StudipVersion::newerThan($max_version))) { (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.')); throw new PluginInstallationException(_('Das Plugin ist mit dieser Stud.IP-Version nicht kompatibel.'));
} }
...@@ -456,7 +458,7 @@ class PluginAdministration ...@@ -456,7 +458,7 @@ class PluginAdministration
$pluginregistered = $plugin_manager->getPluginInfo($pluginclass); $pluginregistered = $plugin_manager->getPluginInfo($pluginclass);
if ($pluginregistered) { if ($pluginregistered) {
new PluginInstallationException(_('Das Plugin ist bereits registriert.')); throw new PluginInstallationException(_('Das Plugin ist bereits registriert.'));
} }
// create database schema if needed // create database schema if needed
......
...@@ -59,7 +59,7 @@ class OERHostOERSI extends OERHost ...@@ -59,7 +59,7 @@ class OERHostOERSI extends OERHost
$material['difficulty_end'] = 12; $material['difficulty_end'] = 12;
$material['uri'] = $material_data['_source']['id']; $material['uri'] = $material_data['_source']['id'];
$material['source_url'] = $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']) ?: ''; $material['license_identifier'] = $this->getLicenseID($material_data['_source']['license']['id']) ?: '';
if (!$material['category']) { if (!$material['category']) {
$material['category'] = $material->autoDetectCategory(); $material['category'] = $material->autoDetectCategory();
...@@ -69,19 +69,24 @@ class OERHostOERSI extends OERHost ...@@ -69,19 +69,24 @@ class OERHostOERSI extends OERHost
'front_image_url' => $material_data['_source']['image'] ?? null, 'front_image_url' => $material_data['_source']['image'] ?? null,
'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '', 'download' => $material_data['_source']['encoding'][0]['contentUrl'] ?: '',
'id' => $material_data['_id'], '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(); $material->store();
//set users: //set users:
$userdata = []; $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[] = [ $userdata[] = [
'user_id' => md5($creator['name']), 'user_id' => md5($creator['name']),
'name' => $creator['name'], 'name' => $creator['name'],
'host_url' => $this['url'] 'host_url' => $this['url']
]; ];
} }
}
$material->setUsers($userdata); $material->setUsers($userdata);
//set topics: //set topics:
......
...@@ -95,7 +95,7 @@ abstract class StudIPPlugin ...@@ -95,7 +95,7 @@ abstract class StudIPPlugin
if (!empty($metadata['description_' . $language])) { if (!empty($metadata['description_' . $language])) {
return $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') { if ($this->plugin_info['description_mode'] === 'override_description') {
return $this->plugin_info['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