feat: scaffold batch 2

This commit is contained in:
2026-06-27 20:20:36 +00:00
parent e4eeb5d2c4
commit 809dc6d724
4 changed files with 84 additions and 0 deletions
@@ -0,0 +1,2 @@
COM_MOKOSUITELOGISTICS="MokoSuiteLogistics"
COM_MOKOSUITELOGISTICS_DESCRIPTION="Layer 2 — Fleet logistics, shipment tracking, route planning, warehouse management"
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" group="webservices" method="upgrade">
<name>plg_webservices_mokosuitelogistics</name>
<version>0.0.0</version>
<creationDate>2026-06</creationDate>
<author>Moko Consulting</author>
<authorEmail>hello@mokoconsulting.tech</authorEmail>
<authorUrl>https://mokoconsulting.tech</authorUrl>
<copyright>(C) 2026 Moko Consulting</copyright>
<license>GPL-3.0-or-later</license>
<description>MokoSuiteLogistics webservices plugin</description>
<namespace path="src">MokoConsulting\Plugin\WebServices\MokoSuiteLogistics</namespace>
<files>
<folder>src</folder>
<folder>services</folder>
</files>
</extension>
@@ -0,0 +1,31 @@
<?php
/**
* @copyright (C) 2026 Moko Consulting
* @license 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 MokoConsulting\Plugin\WebServices\MokoSuiteLogistics\Extension\MokoSuiteLogistics;
return new class implements ServiceProviderInterface
{
public function register(Container $container): void
{
$container->set(
PluginInterface::class,
function (Container $container) {
$dispatcher = $container->get(DispatcherInterface::class);
$plugin = new MokoSuiteLogistics($dispatcher, (array) PluginHelper::getPlugin('webservices', 'mokosuitelogistics'));
$plugin->setApplication(Factory::getApplication());
return $plugin;
}
);
}
};
@@ -0,0 +1,34 @@
<?php
/**
* @copyright (C) 2026 Moko Consulting
* @license GPL-3.0-or-later
*/
namespace MokoConsulting\Plugin\WebServices\MokoSuiteLogistics\Extension;
defined('_JEXEC') or die;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\ApiRouter;
use Joomla\Event\SubscriberInterface;
use Joomla\Router\Route;
final class MokoSuiteLogistics extends CMSPlugin implements SubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
'onBeforeApiRoute' => 'onBeforeApiRoute',
];
}
public function onBeforeApiRoute(&$router): void
{
$router->createCRUDRoutes('v1/mokosuitelogistics/shipments', 'shipments');
$router->createCRUDRoutes('v1/mokosuitelogistics/routes', 'routes');
$router->createCRUDRoutes('v1/mokosuitelogistics/carriers', 'carriers');
$router->createCRUDRoutes('v1/mokosuitelogistics/warehouses', 'warehouses');
$router->createCRUDRoutes('v1/mokosuitelogistics/packages', 'packages');
$router->createCRUDRoutes('v1/mokosuitelogistics/tracking', 'tracking');
}
}