diff --git a/CLAUDE.md b/CLAUDE.md index e38f998..4a20818 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -32,26 +32,21 @@ composer install # Install PHP dependencies ## Architecture -This is a Joomla **package** extension (`pkg_mokojoomhero`) containing two sub-extensions: +This is a Joomla **site module** (`mod_mokojoomhero`). -### mod_mokojoomhero (Site Module) - Random hero image slideshow or background video with content overlay - Supports image folders, YouTube, Vimeo, local video, solid colour, gradient - Configurable overlay, text alignment, card animation, parallax, content animations -- Works independently — no plugin dependency required - -### plg_system_mokojoomhero (System Plugin) -- License check — free tier (no key required), pro tier warns if download key missing -- Controlled by `LICENSE_TYPE` constant ('free' or 'pro') in the Extension class -- Auto-enabled on package install via `pkg_script.php` -- Namespace: `Joomla\Plugin\System\MokoJoomHero` +- A/B testing with weighted variations, scheduling with start/end datetime +- Article content source, per-slide unique content via subform ### Key files -- `src/pkg_mokojoomhero.xml` — package manifest -- `src/pkg_script.php` — auto-enables system plugin on install -- `src/packages/mod_mokojoomhero/` — hero module source -- `src/packages/plg_system_mokojoomhero/` — system plugin source -- `updates.xml` — Joomla update server (includes legacy module entries for migration) +- `src/mod_mokojoomhero.xml` — module manifest +- `src/mod_mokojoomhero.php` — module entry point +- `src/tmpl/default.php` — template +- `src/media/` — CSS, JS, and web asset registry +- `src/language/` — en-GB and en-US translations +- `src/script.php` — install script (creates default image folder) ## Rules @@ -66,7 +61,4 @@ This is a Joomla **package** extension (`pkg_mokojoomhero`) containing two sub-e ## Coding Standards - PHP 8.1+ minimum -- Joomla 5/6 DI container pattern: `services/provider.php` → Extension class -- Legacy stub `.php` file required for plugin loader but empty -- `SubscriberInterface` for event subscription (not `on*` method naming) - SPDX license headers on all PHP files diff --git a/Makefile b/Makefile index 5819862..3649143 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ # Extension Configuration EXTENSION_NAME := mokojoomhero -EXTENSION_TYPE := package +EXTENSION_TYPE := module # Options: module, plugin, component, package, template EXTENSION_VERSION := 1.0.0 @@ -156,29 +156,11 @@ clean: ## Clean build artifacts .PHONY: build build: clean ## Build extension package - @echo "$(COLOR_BLUE)Building Joomla package extension...$(COLOR_RESET)" - @mkdir -p $(DIST_DIR) $(BUILD_DIR)/packages - - @# --- Build each sub-extension as a separate ZIP --- - @for EXT_DIR in $(SRC_DIR)/packages/*/; do \ - EXT_NAME=$$(basename "$$EXT_DIR"); \ - [ "$$EXT_NAME" = "index.html" ] && continue; \ - echo " Packaging $$EXT_NAME..."; \ - cd "$$EXT_DIR" && $(ZIP) -r "$(CURDIR)/$(BUILD_DIR)/packages/$${EXT_NAME}.zip" . \ - -x "*.git*" -x "*/index.html" 2>/dev/null; \ - cd "$(CURDIR)"; \ - done - - @# --- Build the outer package ZIP --- - @echo " Assembling pkg_$(EXTENSION_NAME)..." - @cp $(SRC_DIR)/pkg_mokojoomhero.xml $(BUILD_DIR)/pkg_mokojoomhero.xml - @cp $(SRC_DIR)/pkg_script.php $(BUILD_DIR)/pkg_script.php - @cd $(BUILD_DIR) && $(ZIP) -r "$(CURDIR)/$(DIST_DIR)/pkg_$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip" \ - pkg_mokojoomhero.xml pkg_script.php packages/ - - @echo "$(COLOR_GREEN)✓ Package created: $(DIST_DIR)/pkg_$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip$(COLOR_RESET)" - @echo " Contents:" - @unzip -l "$(DIST_DIR)/pkg_$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip" | tail -n +4 | head -20 + @echo "$(COLOR_BLUE)Building Joomla module extension...$(COLOR_RESET)" + @mkdir -p $(DIST_DIR) + @cd $(SRC_DIR) && $(ZIP) -r "$(CURDIR)/$(DIST_DIR)/mod_$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip" . \ + -x "*.git*" -x "*/index.html" 2>/dev/null + @echo "$(COLOR_GREEN)✓ Module created: $(DIST_DIR)/mod_$(EXTENSION_NAME)-$(EXTENSION_VERSION).zip$(COLOR_RESET)" .PHONY: package package: build ## Alias for build diff --git a/src/packages/index.html b/src/language/en-GB/index.html similarity index 100% rename from src/packages/index.html rename to src/language/en-GB/index.html diff --git a/src/packages/mod_mokojoomhero/language/en-GB/mod_mokojoomhero.ini b/src/language/en-GB/mod_mokojoomhero.ini similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-GB/mod_mokojoomhero.ini rename to src/language/en-GB/mod_mokojoomhero.ini diff --git a/src/packages/mod_mokojoomhero/language/en-GB/mod_mokojoomhero.sys.ini b/src/language/en-GB/mod_mokojoomhero.sys.ini similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-GB/mod_mokojoomhero.sys.ini rename to src/language/en-GB/mod_mokojoomhero.sys.ini diff --git a/src/packages/mod_mokojoomhero/index.html b/src/language/en-US/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/index.html rename to src/language/en-US/index.html diff --git a/src/packages/mod_mokojoomhero/language/en-US/mod_mokojoomhero.ini b/src/language/en-US/mod_mokojoomhero.ini similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-US/mod_mokojoomhero.ini rename to src/language/en-US/mod_mokojoomhero.ini diff --git a/src/packages/mod_mokojoomhero/language/en-US/mod_mokojoomhero.sys.ini b/src/language/en-US/mod_mokojoomhero.sys.ini similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-US/mod_mokojoomhero.sys.ini rename to src/language/en-US/mod_mokojoomhero.sys.ini diff --git a/src/packages/mod_mokojoomhero/language/en-GB/index.html b/src/language/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-GB/index.html rename to src/language/index.html diff --git a/src/packages/mod_mokojoomhero/language/en-US/index.html b/src/media/css/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/language/en-US/index.html rename to src/media/css/index.html diff --git a/src/packages/mod_mokojoomhero/media/css/mod_mokojoomhero.css b/src/media/css/mod_mokojoomhero.css similarity index 99% rename from src/packages/mod_mokojoomhero/media/css/mod_mokojoomhero.css rename to src/media/css/mod_mokojoomhero.css index f9eda61..7ce860f 100644 --- a/src/packages/mod_mokojoomhero/media/css/mod_mokojoomhero.css +++ b/src/media/css/mod_mokojoomhero.css @@ -6,8 +6,8 @@ * DEFGROUP: MokoJoomHero.Module.Assets * INGROUP: MokoJoomHero.Module * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero - * PATH: /src/packages/mod_mokojoomhero/media/css/mod_mokojoomhero.css - * VERSION: 01.12.00 + * PATH: /src/media/css/mod_mokojoomhero.css + * VERSION: 01.10.00 * BRIEF: Hero module stylesheet — slideshow, video, colour/gradient, overlay, card, mute toggle, responsive */ diff --git a/src/packages/mod_mokojoomhero/language/index.html b/src/media/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/language/index.html rename to src/media/index.html diff --git a/src/packages/mod_mokojoomhero/media/joomla.asset.json b/src/media/joomla.asset.json similarity index 100% rename from src/packages/mod_mokojoomhero/media/joomla.asset.json rename to src/media/joomla.asset.json diff --git a/src/packages/mod_mokojoomhero/media/css/index.html b/src/media/js/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/media/css/index.html rename to src/media/js/index.html diff --git a/src/packages/mod_mokojoomhero/media/js/mod_mokojoomhero.js b/src/media/js/mod_mokojoomhero.js similarity index 99% rename from src/packages/mod_mokojoomhero/media/js/mod_mokojoomhero.js rename to src/media/js/mod_mokojoomhero.js index 5d1a957..528aee9 100644 --- a/src/packages/mod_mokojoomhero/media/js/mod_mokojoomhero.js +++ b/src/media/js/mod_mokojoomhero.js @@ -7,8 +7,8 @@ * DEFGROUP: MokoJoomHero.Module.Assets * INGROUP: MokoJoomHero.Module * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero - * PATH: /src/packages/mod_mokojoomhero/media/js/mod_mokojoomhero.js - * VERSION: 01.12.00 + * PATH: /src/media/js/mod_mokojoomhero.js + * VERSION: 01.10.00 * BRIEF: Hero module JavaScript — slideshow crossfade, video viewport control, mute toggle */ diff --git a/src/packages/mod_mokojoomhero/mod_mokojoomhero.php b/src/mod_mokojoomhero.php similarity index 100% rename from src/packages/mod_mokojoomhero/mod_mokojoomhero.php rename to src/mod_mokojoomhero.php diff --git a/src/packages/mod_mokojoomhero/mod_mokojoomhero.xml b/src/mod_mokojoomhero.xml similarity index 99% rename from src/packages/mod_mokojoomhero/mod_mokojoomhero.xml rename to src/mod_mokojoomhero.xml index dfcd3ba..34528ab 100644 --- a/src/packages/mod_mokojoomhero/mod_mokojoomhero.xml +++ b/src/mod_mokojoomhero.xml @@ -10,13 +10,13 @@ DEFGROUP: MokoJoomHero.Module INGROUP: MokoJoomHero REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero - PATH: /src/packages/mod_mokojoomhero/mod_mokojoomhero.xml + PATH: /src/mod_mokojoomhero.xml VERSION: 01.00.20 BRIEF: Joomla module manifest — random hero image with content overlay --> Module - MokoJoomHero - 2026-05 + 2026-06-04 Moko Consulting hello@mokoconsulting.tech https://mokoconsulting.tech diff --git a/src/packages/mod_mokojoomhero/media/index.html b/src/packages/mod_mokojoomhero/media/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/mod_mokojoomhero/media/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/mod_mokojoomhero/media/js/index.html b/src/packages/mod_mokojoomhero/media/js/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/mod_mokojoomhero/media/js/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/index.html b/src/packages/plg_system_mokojoomhero/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/language/en-GB/index.html b/src/packages/plg_system_mokojoomhero/language/en-GB/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-GB/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.ini b/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.ini deleted file mode 100644 index d31b03f..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.ini +++ /dev/null @@ -1,2 +0,0 @@ -; Copyright (C) 2026 Moko Consulting -; SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini b/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini deleted file mode 100644 index ceeaa13..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini +++ /dev/null @@ -1,5 +0,0 @@ -; Copyright (C) 2026 Moko Consulting -; SPDX-License-Identifier: GPL-3.0-or-later - -PLG_SYSTEM_MOKOJOOMHERO="System - MokoJoomHero" -PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero — license and update management" diff --git a/src/packages/plg_system_mokojoomhero/language/en-US/index.html b/src/packages/plg_system_mokojoomhero/language/en-US/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-US/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.ini b/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.ini deleted file mode 100644 index d31b03f..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.ini +++ /dev/null @@ -1,2 +0,0 @@ -; Copyright (C) 2026 Moko Consulting -; SPDX-License-Identifier: GPL-3.0-or-later diff --git a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini b/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini deleted file mode 100644 index ceeaa13..0000000 --- a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini +++ /dev/null @@ -1,5 +0,0 @@ -; Copyright (C) 2026 Moko Consulting -; SPDX-License-Identifier: GPL-3.0-or-later - -PLG_SYSTEM_MOKOJOOMHERO="System - MokoJoomHero" -PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero — license and update management" diff --git a/src/packages/plg_system_mokojoomhero/language/index.html b/src/packages/plg_system_mokojoomhero/language/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/language/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/mokojoomhero.php b/src/packages/plg_system_mokojoomhero/mokojoomhero.php deleted file mode 100644 index 70bada5..0000000 --- a/src/packages/plg_system_mokojoomhero/mokojoomhero.php +++ /dev/null @@ -1,12 +0,0 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -defined('_JEXEC') or die; diff --git a/src/packages/plg_system_mokojoomhero/mokojoomhero.xml b/src/packages/plg_system_mokojoomhero/mokojoomhero.xml deleted file mode 100644 index 05026d1..0000000 --- a/src/packages/plg_system_mokojoomhero/mokojoomhero.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - PLG_SYSTEM_MOKOJOOMHERO - 01.12.00 - 2026-06-02 - Moko Consulting - hello@mokoconsulting.tech - https://mokoconsulting.tech - Copyright (C) 2026 Moko Consulting. All rights reserved. - GPL-3.0-or-later - PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION - - Joomla\Plugin\System\MokoJoomHero - - - mokojoomhero.php - services - src - - - - en-GB/plg_system_mokojoomhero.ini - en-GB/plg_system_mokojoomhero.sys.ini - en-US/plg_system_mokojoomhero.ini - en-US/plg_system_mokojoomhero.sys.ini - - diff --git a/src/packages/plg_system_mokojoomhero/services/index.html b/src/packages/plg_system_mokojoomhero/services/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/services/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/services/provider.php b/src/packages/plg_system_mokojoomhero/services/provider.php deleted file mode 100644 index 8c861e2..0000000 --- a/src/packages/plg_system_mokojoomhero/services/provider.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Extension\PluginInterface; -use Joomla\CMS\Factory; -use Joomla\CMS\Plugin\PluginHelper; -use Joomla\DI\Container; -use Joomla\DI\ServiceProviderInterface; -use Joomla\Event\DispatcherInterface; -use Joomla\Plugin\System\MokoJoomHero\Extension\MokoJoomHero; - -return new class implements ServiceProviderInterface { - public function register(Container $container): void - { - $container->set( - PluginInterface::class, - function (Container $container) { - $plugin = new MokoJoomHero( - $container->get(DispatcherInterface::class), - (array) PluginHelper::getPlugin('system', 'mokojoomhero') - ); - - $plugin->setApplication(Factory::getApplication()); - - return $plugin; - } - ); - } -}; diff --git a/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php b/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php deleted file mode 100644 index 8990c1b..0000000 --- a/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php +++ /dev/null @@ -1,100 +0,0 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -namespace Joomla\Plugin\System\MokoJoomHero\Extension; - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\Event\SubscriberInterface; - -class MokoJoomHero extends CMSPlugin implements SubscriberInterface -{ - /** - * License type: 'free' requires no key, 'pro' requires a valid download key. - */ - private const LICENSE_TYPE = 'free'; - - public static function getSubscribedEvents(): array - { - return [ - 'onAfterRoute' => 'onAfterRoute', - ]; - } - - public function onAfterRoute(): void - { - $app = $this->getApplication(); - - if ($app->isClient('administrator')) { - $this->checkLicense(); - } - } - - /** - * Check license status once per session. Free tier requires no key. - * Pro tier warns if no valid download key is configured. - */ - private function checkLicense(): void - { - if (self::LICENSE_TYPE === 'free') { - return; - } - - $session = Factory::getSession(); - - if ($session->get('mokojoomhero.license_checked', false)) { - return; - } - - $user = Factory::getUser(); - - if ($user->guest || !$user->authorise('core.manage')) { - return; - } - - $session->set('mokojoomhero.license_checked', true); - - try { - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select($db->quoteName('extra_query')) - ->from($db->quoteName('#__update_sites')) - ->where($db->quoteName('name') . ' = ' . $db->quote('MokoJoomHero Updates')) - ->setLimit(1); - $db->setQuery($query); - $extraQuery = (string) $db->loadResult(); - - if (!empty($extraQuery)) { - parse_str($extraQuery, $parsed); - - if (!empty($parsed['dlid']) && preg_match('/^MOKO-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/', $parsed['dlid'])) { - return; - } - } - - $this->getApplication()->enqueueMessage( - 'MokoJoomHero — Download Key Required — ' - . 'No download key is configured. Updates may not be available until a valid key is entered. ' - . 'Go to System → Update Sites ' - . 'and enter your download key (MOKO-XXXX-XXXX-XXXX-XXXX) for the MokoJoomHero update site.', - 'warning' - ); - } catch (\RuntimeException $e) { - $this->getApplication()->getLogger()->warning( - 'MokoJoomHero license check failed: ' . $e->getMessage(), - ['exception' => $e] - ); - } - } -} diff --git a/src/packages/plg_system_mokojoomhero/src/Extension/index.html b/src/packages/plg_system_mokojoomhero/src/Extension/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/src/Extension/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/packages/plg_system_mokojoomhero/src/index.html b/src/packages/plg_system_mokojoomhero/src/index.html deleted file mode 100644 index 94906bc..0000000 --- a/src/packages/plg_system_mokojoomhero/src/index.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/pkg_mokojoomhero.xml b/src/pkg_mokojoomhero.xml deleted file mode 100644 index 11d150a..0000000 --- a/src/pkg_mokojoomhero.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - Package - MokoJoomHero - mokojoomhero - 01.12.00 - 2026-06-02 - Moko Consulting - hello@mokoconsulting.tech - https://mokoconsulting.tech - Copyright (C) 2026 Moko Consulting. All rights reserved. - GPL-3.0-or-later - Random hero image slideshow or background video with content overlay. Includes the hero module and system plugin. By Moko Consulting. - - pkg_script.php - - - mod_mokojoomhero.zip - plg_system_mokojoomhero.zip - - - - https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/updates.xml - - diff --git a/src/pkg_script.php b/src/pkg_script.php deleted file mode 100644 index 5976c07..0000000 --- a/src/pkg_script.php +++ /dev/null @@ -1,59 +0,0 @@ - - * @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. - * @license GNU General Public License version 3 or later; see LICENSE - * SPDX-License-Identifier: GPL-3.0-or-later - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Installer\InstallerAdapter; - -class Pkg_MokoJoomHeroInstallerScript -{ - /** - * Called after install/update — only enables the system plugin on fresh install. - * - * @param string $type Action type - * @param InstallerAdapter $parent Installer adapter - * - * @return void - */ - public function postflight(string $type, InstallerAdapter $parent): void - { - if ($type === 'install') { - try { - $db = Factory::getDbo(); - - // Enable the system plugin automatically on fresh install - $query = $db->getQuery(true) - ->update($db->quoteName('#__extensions')) - ->set($db->quoteName('enabled') . ' = 1') - ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) - ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) - ->where($db->quoteName('element') . ' = ' . $db->quote('mokojoomhero')); - - $db->setQuery($query); - $db->execute(); - - if ($db->getAffectedRows() === 0) { - Factory::getApplication()->enqueueMessage( - 'MokoJoomHero: The system plugin could not be auto-enabled. ' - . 'Please enable it manually in Extensions → Plugins.', - 'warning' - ); - } - } catch (\Exception $e) { - Factory::getApplication()->enqueueMessage( - 'MokoJoomHero: Failed to auto-enable system plugin: ' . $e->getMessage() - . ' — Please enable it manually in Extensions → Plugins.', - 'warning' - ); - } - } - } -} diff --git a/src/packages/mod_mokojoomhero/script.php b/src/script.php similarity index 100% rename from src/packages/mod_mokojoomhero/script.php rename to src/script.php diff --git a/src/packages/mod_mokojoomhero/tmpl/default.php b/src/tmpl/default.php similarity index 100% rename from src/packages/mod_mokojoomhero/tmpl/default.php rename to src/tmpl/default.php diff --git a/src/packages/mod_mokojoomhero/tmpl/index.html b/src/tmpl/index.html similarity index 100% rename from src/packages/mod_mokojoomhero/tmpl/index.html rename to src/tmpl/index.html