feat: add admin component (6 views) + webservices plugin (6 API routes)
Universal: Auto Version Bump / Version Bump (push) Successful in 17s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || github.ref_name }}) (push) Successful in 16s

This commit is contained in:
Jonathan Miller
2026-06-23 11:59:54 -05:00
parent 120b262b12
commit 3036cb0113
21 changed files with 163 additions and 0 deletions
@@ -0,0 +1 @@
<?xml version="1.0"?><access component="com_mokosuiteauto"><section name="component"><action name="core.admin"/><action name="core.manage"/><action name="core.create"/><action name="core.edit"/><action name="core.delete"/></section></access>
@@ -0,0 +1 @@
<?xml version="1.0"?><config><fieldset name="component"><field name="note" type="note" label="Configuration coming soon."/></fieldset></config>
@@ -0,0 +1,17 @@
<?php
defined('_JEXEC') or die;
use Joomla\CMS\Extension\ComponentInterface;
use Joomla\CMS\Extension\MVCComponent;
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
return new class implements ServiceProviderInterface {
public function register(Container $container): void {
$container->set(ComponentInterface::class, function (Container $container) {
$c = new MVCComponent($container->get(ComponentDispatcherFactoryInterface::class));
$c->setMVCFactory($container->get(MVCFactoryInterface::class));
return $c;
});
}
};
@@ -0,0 +1,7 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\Controller;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\Controller\BaseController;
class DisplayController extends BaseController {
protected $default_view = 'autodashboard';
}
@@ -0,0 +1,7 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\Model;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
class AutoDashboardModel extends BaseDatabaseModel {
public function getDashboard(): object { return (object)['status' => 'ok']; }
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoDashboard;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoDashboard');
parent::display($tpl);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoDeals;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoDeals');
parent::display($tpl);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoInventory;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoInventory');
parent::display($tpl);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoServiceDept;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoServiceDept');
parent::display($tpl);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoTestDrives;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoTestDrives');
parent::display($tpl);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Moko\Component\MokoSuiteAuto\Administrator\View\AutoTradeIns;
defined('_JEXEC') or die;
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
use Joomla\CMS\Toolbar\ToolbarHelper;
class HtmlView extends BaseHtmlView {
public function display($tpl = null): void {
ToolbarHelper::title('MokoSuite Auto - AutoTradeIns');
parent::display($tpl);
}
}
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoDashboard</h2><p>Coming soon.</p></div>
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoDeals</h2><p>Coming soon.</p></div>
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoInventory</h2><p>Coming soon.</p></div>
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoServiceDept</h2><p>Coming soon.</p></div>
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoTestDrives</h2><p>Coming soon.</p></div>
@@ -0,0 +1 @@
<?php defined('_JEXEC') or die; ?><div><h2>AutoTradeIns</h2><p>Coming soon.</p></div>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" method="upgrade">
<name>MokoSuite Auto</name>
<author>Moko Consulting</author>
<creationDate>2026-06-23</creationDate>
<copyright>Copyright (C) 2026 Moko Consulting.</copyright>
<license>GPL-3.0-or-later</license>
<version>01.00.00</version>
<namespace path="src">Moko\Component\MokoSuiteAuto</namespace>
<administration>
<files folder="admin"><folder>services</folder><folder>src</folder><folder>tmpl</folder></files>
<menu>COM_MOKOSUITEAUTO</menu>
</administration>
</extension>
@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<extension type="plugin" group="webservices" method="upgrade">
<name>Web Services - MokoSuite Auto</name>
<element>mokosuiteauto</element>
<author>Moko Consulting</author>
<version>01.00.00</version>
<license>GPL-3.0-or-later</license>
<namespace path="src">Moko\Plugin\WebServices\MokoSuiteAuto</namespace>
<files><folder>src</folder><folder>services</folder></files>
</extension>
@@ -0,0 +1,15 @@
<?php
defined('_JEXEC') or die;
use Joomla\CMS\Extension\PluginInterface;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Event\DispatcherInterface;
use Moko\Plugin\WebServices\MokoSuiteAuto\Extension\MokoSuiteAuto;
return new class implements ServiceProviderInterface {
public function register(Container $container): void {
$container->set(PluginInterface::class, function (Container $container) {
return new MokoSuiteAuto($container->get(DispatcherInterface::class), (array) PluginHelper::getPlugin('webservices', 'mokosuiteauto'));
});
}
};
@@ -0,0 +1,19 @@
<?php
namespace Moko\Plugin\WebServices\MokoSuiteAuto\Extension;
defined('_JEXEC') or die;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\SubscriberInterface;
class MokoSuiteAuto extends CMSPlugin implements SubscriberInterface {
public static function getSubscribedEvents(): array {
return ['onBeforeApiRoute' => 'onBeforeApiRoute'];
}
public function onBeforeApiRoute(&$event): void {
$router = $event->getArgument('router');
$router->createCRUDRoutes('v1/mokosuiteauto/vehicles', 'vehicles', ['component' => 'com_mokosuiteauto']);
$router->createCRUDRoutes('v1/mokosuiteauto/deals', 'deals', ['component' => 'com_mokosuiteauto']);
$router->createCRUDRoutes('v1/mokosuiteauto/tradeins', 'tradeins', ['component' => 'com_mokosuiteauto']);
$router->createCRUDRoutes('v1/mokosuiteauto/test_drives', 'test_drives', ['component' => 'com_mokosuiteauto']);
$router->createCRUDRoutes('v1/mokosuiteauto/financing', 'financing', ['component' => 'com_mokosuiteauto']);
$router->createCRUDRoutes('v1/mokosuiteauto/service_orders', 'service_orders', ['component' => 'com_mokosuiteauto']);
}
}