';
+ $this->app->close();
+ }
+ }
+
+ /**
+ * Inject robots meta tag for alias domains.
+ *
+ * @param \Joomla\CMS\Document\HtmlDocument $doc Document object
+ *
+ * @return void
+ *
+ * @since 02.01.43
+ */
+ protected function injectAliasRobots($doc)
+ {
+ $alias = $this->getCurrentAlias();
+
+ if ($alias === null)
+ {
+ return;
+ }
+
+ $robots = $alias->robots ?? 'index, follow';
+
+ if ($robots !== 'index, follow')
+ {
+ $doc->setMetaData('robots', $robots);
+ }
+ }
+
// ------------------------------------------------------------------
// Heartbeat (called from onExtensionAfterSave)
// ------------------------------------------------------------------
@@ -2591,16 +2736,30 @@ class MokoWaaS extends CMSPlugin
// Register primary domain
$this->sendHeartbeat($siteUrl, $siteName, $healthToken, $app);
- // Register any alias domains
+ // Register any alias domains (subform format: array of objects with domain key)
$aliases = $params->get('site_aliases', '');
if (!empty($aliases))
{
- foreach (array_filter(array_map('trim', explode(',', $aliases))) as $alias)
+ if (is_string($aliases))
{
- $aliasUrl = 'https://' . ltrim($alias, 'https://');
- $aliasUrl = rtrim($aliasUrl, '/');
- $this->sendHeartbeat($aliasUrl, $siteName . ' (' . $alias . ')', $healthToken, $app);
+ $aliases = json_decode($aliases, false);
+ }
+
+ if (is_array($aliases))
+ {
+ foreach ($aliases as $alias)
+ {
+ $alias = (object) $alias;
+
+ if (!empty($alias->domain))
+ {
+ $domain = trim($alias->domain);
+ $aliasUrl = 'https://' . preg_replace('#^https?://#i', '', $domain);
+ $aliasUrl = rtrim($aliasUrl, '/');
+ $this->sendHeartbeat($aliasUrl, $siteName, $healthToken, $app);
+ }
+ }
}
}
}
diff --git a/src/forms/alias_entry.xml b/src/forms/alias_entry.xml
new file mode 100644
index 0000000..1613b71
--- /dev/null
+++ b/src/forms/alias_entry.xml
@@ -0,0 +1,55 @@
+
+
diff --git a/src/language/en-GB/plg_system_mokowaas.ini b/src/language/en-GB/plg_system_mokowaas.ini
index 348613a..415df26 100644
--- a/src/language/en-GB/plg_system_mokowaas.ini
+++ b/src/language/en-GB/plg_system_mokowaas.ini
@@ -130,5 +130,18 @@ PLG_SYSTEM_MOKOWAAS_UPLOAD_TYPES_DESC="Comma-separated list of allowed file exte
PLG_SYSTEM_MOKOWAAS_UPLOAD_SIZE_LABEL="Max Upload Size (MB)"
PLG_SYSTEM_MOKOWAAS_UPLOAD_SIZE_DESC="Maximum file upload size in megabytes."
-PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Site Aliases"
-PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Comma-separated list of additional domains this site is accessible on (e.g. www.example.com,alias.example.com). Each alias gets its own Grafana datasource for health monitoring."
+; ===== Site Aliases fieldset =====
+PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_LABEL="Site Aliases"
+PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_DESC="Configure additional domains that mirror this site. Each alias can have its own offline status, robots directive, and backend redirect behavior."
+PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Domain Aliases"
+PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own Grafana monitoring datasource."
+PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_LABEL="Domain"
+PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_DESC="The alias domain name (e.g. www.example.com). Do not include https:// prefix."
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_LABEL="Offline"
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_DESC="Show an offline maintenance page when visitors access the site through this alias domain."
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_MSG_LABEL="Offline Message"
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_MSG_DESC="Custom message to display when this alias is set to offline."
+PLG_SYSTEM_MOKOWAAS_ALIAS_ROBOTS_LABEL="Robots"
+PLG_SYSTEM_MOKOWAAS_ALIAS_ROBOTS_DESC="Meta robots directive for this alias domain. Use 'noindex, nofollow' to prevent search engines from indexing the alias."
+PLG_SYSTEM_MOKOWAAS_ALIAS_REDIRECT_BACKEND_LABEL="Redirect Backend"
+PLG_SYSTEM_MOKOWAAS_ALIAS_REDIRECT_BACKEND_DESC="Redirect admin panel requests on this alias to the primary domain. Frontend stays on the alias domain."
diff --git a/src/language/en-US/plg_system_mokowaas.ini b/src/language/en-US/plg_system_mokowaas.ini
index 28eafa4..62cfa64 100644
--- a/src/language/en-US/plg_system_mokowaas.ini
+++ b/src/language/en-US/plg_system_mokowaas.ini
@@ -130,5 +130,18 @@ PLG_SYSTEM_MOKOWAAS_UPLOAD_TYPES_DESC="Comma-separated list of allowed file exte
PLG_SYSTEM_MOKOWAAS_UPLOAD_SIZE_LABEL="Max Upload Size (MB)"
PLG_SYSTEM_MOKOWAAS_UPLOAD_SIZE_DESC="Maximum file upload size in megabytes."
-PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Site Aliases"
-PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Comma-separated list of additional domains this site is accessible on (e.g. www.example.com,alias.example.com). Each alias gets its own Grafana datasource for health monitoring."
+; ===== Site Aliases fieldset =====
+PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_LABEL="Site Aliases"
+PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_DESC="Configure additional domains that mirror this site. Each alias can have its own offline status, robots directive, and backend redirect behavior."
+PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Domain Aliases"
+PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own Grafana monitoring datasource."
+PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_LABEL="Domain"
+PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_DESC="The alias domain name (e.g. www.example.com). Do not include https:// prefix."
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_LABEL="Offline"
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_DESC="Show an offline maintenance page when visitors access the site through this alias domain."
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_MSG_LABEL="Offline Message"
+PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_MSG_DESC="Custom message to display when this alias is set to offline."
+PLG_SYSTEM_MOKOWAAS_ALIAS_ROBOTS_LABEL="Robots"
+PLG_SYSTEM_MOKOWAAS_ALIAS_ROBOTS_DESC="Meta robots directive for this alias domain. Use 'noindex, nofollow' to prevent search engines from indexing the alias."
+PLG_SYSTEM_MOKOWAAS_ALIAS_REDIRECT_BACKEND_LABEL="Redirect Backend"
+PLG_SYSTEM_MOKOWAAS_ALIAS_REDIRECT_BACKEND_DESC="Redirect admin panel requests on this alias to the primary domain. Frontend stays on the alias domain."
diff --git a/src/mokowaas.xml b/src/mokowaas.xml
index 0e00fa9..325629e 100644
--- a/src/mokowaas.xml
+++ b/src/mokowaas.xml
@@ -44,6 +44,7 @@
script.phpExtensionField
+ formspayloadserviceslanguage
@@ -268,6 +269,22 @@
description="PLG_SYSTEM_MOKOWAAS_HIDDEN_MENUS_DESC"
rows="5" filter="raw" />
+
-