diff --git a/3.0/modules/displaytags/helpers/displaytags_event.php b/3.0/modules/displaytags/helpers/displaytags_event.php
new file mode 100644
index 00000000..7b92685e
--- /dev/null
+++ b/3.0/modules/displaytags/helpers/displaytags_event.php
@@ -0,0 +1,37 @@
+module == "tag") {
+ $data->messages["warn"][] = t("The DisplayTags module requires the Tags module.");
+ }
+ }
+
+ static function module_change($changes) {
+ if (!module::is_active("tag") || in_array("tag", $changes->deactivate)) {
+ site_status::warning(
+ t("The DisplayTags module requires the Tags module. Activate the Tags module now",
+ array("url" => html::mark_clean(url::site("admin/modules")))),
+ "displaytags_needs_tag");
+ } else {
+ site_status::clear("displaytags_needs_tag");
+ }
+ }
+}
diff --git a/3.0/modules/displaytags/helpers/displaytags_installer.php b/3.0/modules/displaytags/helpers/displaytags_installer.php
new file mode 100644
index 00000000..808def8a
--- /dev/null
+++ b/3.0/modules/displaytags/helpers/displaytags_installer.php
@@ -0,0 +1,36 @@
+module == "tag") {
+ $data->messages["warn"][] = t("The DisplayTags module requires the Tags module.");
+ }
+ }
+
+ static function module_change($changes) {
+ if (!module::is_active("tag") || in_array("tag", $changes->deactivate)) {
+ site_status::warning(
+ t("The DisplayTags module requires the Tags module. Activate the Tags module now",
+ array("url" => html::mark_clean(url::site("admin/modules")))),
+ "displaytags_needs_tag");
+ } else {
+ site_status::clear("displaytags_needs_tag");
+ }
+ }
+}
diff --git a/3.1/modules/displaytags/helpers/displaytags_installer.php b/3.1/modules/displaytags/helpers/displaytags_installer.php
new file mode 100644
index 00000000..808def8a
--- /dev/null
+++ b/3.1/modules/displaytags/helpers/displaytags_installer.php
@@ -0,0 +1,36 @@
+