Skip to content

Commit

Permalink
Installer in AddOn liste anbinden (#3949)
Browse files Browse the repository at this point in the history
Co-authored-by: Markus Staab <47448731+clxmstaab@users.noreply.github.com>
Co-authored-by: Gregor Harlan <330436+gharlan@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
4 people committed Nov 28, 2020
1 parent a246b2f commit 7ac8f5e
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 2 deletions.
2 changes: 2 additions & 0 deletions redaxo/src/core/lang/de_de.lang
Expand Up @@ -345,6 +345,8 @@ package_is_plugin = Das Package muss als PlugIn "<b>{1}</b>" des AddOns "<b>{0}<
package_is_addon = Das Package muss als AddOn "<b>{0}</b>" installiert werden!
package_install_cant_copy_files = Fehler beim Kopieren des /assets Ordners!
package_install_cant_delete_files = Fehler beim Löschen des /assets Ordners!
package_search_in_installer = "{0}" im Installer suchen
package_jump_to = Zu "{0}" springen
package_requirement_wrong_format = Die Abhängigkeiten in der package.yml sind nicht korrekt als Array notiert!
package_requirement_error_redaxo_version = Die REDAXO-Version (<b>{0}</b>) entspricht nicht der geforderten Versionsbedingung <b>{1}</b>!
package_requirement_error_php_version = Die PHP-Version (<b>{0}</b>) entspricht nicht der geforderten Versionsbedingung <b>{1}</b>!
Expand Down
32 changes: 31 additions & 1 deletion redaxo/src/core/lib/packages/manager.php
Expand Up @@ -478,9 +478,39 @@ public function checkPackageRequirement($packageId)
if ('' != $requirements['packages'][$packageId]) {
$required_version = ' '.$requirements['packages'][$packageId];
}
$this->message = $this->i18n('requirement_error_' . $package->getType(), $packageId.$required_version);

if (!rex_package::exists($packageId)) {
[$addonId] = rex_package::splitId($packageId);
$jumpToInstaller = '';
if (rex_addon::get('install')->isAvailable() && !rex_addon::exists($addonId)) {
// package need to be downloaded via installer
$installUrl = rex_url::backendPage('install/packages/add', ['addonkey' => $addonId]);

$jumpToInstaller = ' <a href="'. $installUrl .'"><i class="rex-icon fa-arrow-circle-right" title="'. $this->i18n('search_in_installer', $addonId) .'"></i></a>';
}

$this->message = $this->i18n('requirement_error_' . $package->getType(), $packageId.$required_version).$jumpToInstaller;
return false;
}

// this package requires a plugin from another addon.
// first make sure the addon itself is available.
$jumpPackageId = $packageId;
if ($package instanceof rex_plugin_interface && !$package->getAddon()->isAvailable()) {
$jumpPackageId = $package->getAddon()->getPackageId();
}

if ('packages' == rex_be_controller::getCurrentPage()) {
$jumpPackageUrl = '#package-'. $jumpPackageId;
} else {
// error while update/install within install-addon. x-link to packages core page
$jumpPackageUrl = rex_url::backendPage('packages'). '#package-'. $jumpPackageId;
}

$this->message = $this->i18n('requirement_error_' . $package->getType(), $packageId.$required_version) . ' <a href="'. $jumpPackageUrl .'"><i class="rex-icon fa-arrow-circle-right" title="'. $this->i18n('jump_to', $jumpPackageId) .'"></i></a>';
return false;
}

if (!self::matchVersionConstraints($package->getVersion(), $requirements['packages'][$packageId])) {
$this->message = $this->i18n(
'requirement_error_' . $package->getType() . '_version',
Expand Down
2 changes: 1 addition & 1 deletion redaxo/src/core/pages/packages.list.php
Expand Up @@ -78,7 +78,7 @@
} else {
$class .= ' rex-package-not-installed';
}
$name = '<span class="rex-' . $type . '-name">' . rex_escape($package->getName()) . '</span>';
$name = '<span class="rex-' . $type . '-name" id="package-' . rex_escape($packageId) . '">' . rex_escape($package->getName()) . '</span>';

$class .= $package->isSystemPackage() ? ' rex-system-' . $type : '';

Expand Down

0 comments on commit 7ac8f5e

Please sign in to comment.