diff --git a/classes/admin.php b/classes/admin.php
index 2235c63d..99f43955 100644
--- a/classes/admin.php
+++ b/classes/admin.php
@@ -522,6 +522,23 @@ class Admin
return $dependencies;
}
+ /**
+ * Get list of packages that depend on the passed package slug
+ *
+ * @param string $slug The package slug
+ *
+ * @return array|bool
+ */
+ public function getPackagesThatDependOnPackage($slug)
+ {
+ $gpm = $this->gpm();
+ if (!$gpm) {
+ return false;
+ }
+
+ return $gpm->getPackagesThatDependOnPackage($slug);
+ }
+
/**
* Check the passed packages list can be updated
*
diff --git a/classes/controller.php b/classes/controller.php
index 29956ab4..b36a3b3c 100644
--- a/classes/controller.php
+++ b/classes/controller.php
@@ -367,6 +367,22 @@ class AdminController
require_once __DIR__ . '/gpm.php';
+ //check if there are packages that have this as a dependency. Abort and show which ones
+ $dependent_packages = $this->admin->getPackagesThatDependOnPackage($package);
+ if (count($dependent_packages) > 0) {
+ if (count($dependent_packages) > 1) {
+ $message = "The installed packages " . implode(', ', $dependent_packages) . " depends on this package. Please remove those first.";
+ } else {
+ $message = "The installed package " . implode(', ', $dependent_packages) . " depends on this package. Please remove it first.";
+ }
+
+ $this->admin->json_response = ['status' => 'error', 'message' => $message];
+ return;
+ }
+
+ $this->admin->json_response = ['status' => 'success', 'message' => 'xxx'];
+ return true;
+
try {
$dependencies = $this->admin->dependenciesThatCanBeRemovedWhenRemoving($package);
$result = \Grav\Plugin\Admin\Gpm::uninstall($package, []);
diff --git a/themes/grav/app/utils/packages.js b/themes/grav/app/utils/packages.js
index cc88b540..1ecb60dc 100644
--- a/themes/grav/app/utils/packages.js
+++ b/themes/grav/app/utils/packages.js
@@ -71,6 +71,9 @@ class Packages {
$(document).on('closing', '[data-remodal-id="remove-package"]', () => {
Packages.getBackToList(type);
});
+ } else {
+ $('.remove-package-confirm').addClass('hidden');
+ $('.remove-package-error').removeClass('hidden');
}
});
}
diff --git a/themes/grav/templates/partials/modal-remove-package.html.twig b/themes/grav/templates/partials/modal-remove-package.html.twig
index d0aa8b12..b6ca6260 100644
--- a/themes/grav/templates/partials/modal-remove-package.html.twig
+++ b/themes/grav/templates/partials/modal-remove-package.html.twig
@@ -31,5 +31,11 @@
+
+
Error removing the {{ type }}
+
+
+
+
\ No newline at end of file