feat: initial scaffold with component, system plugin, and webservices plugin
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Authored-by: Moko Consulting
|
||||
-->
|
||||
<access component="com_mokosuitefield">
|
||||
<section name="component">
|
||||
<action name="core.admin" title="JACTION_ADMIN" />
|
||||
<action name="core.options" title="JACTION_OPTIONS" />
|
||||
<action name="core.manage" title="JACTION_MANAGE" />
|
||||
<action name="core.create" title="JACTION_CREATE" />
|
||||
<action name="core.delete" title="JACTION_DELETE" />
|
||||
<action name="core.edit" title="JACTION_EDIT" />
|
||||
<action name="core.edit.state" title="JACTION_EDITSTATE" />
|
||||
</section>
|
||||
</access>
|
||||
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Authored-by: Moko Consulting
|
||||
-->
|
||||
<extension type="component" method="upgrade">
|
||||
<name>com_mokosuitefield</name>
|
||||
<version>0.1.0</version>
|
||||
<creationDate>2026-06-27</creationDate>
|
||||
<author>Moko Consulting</author>
|
||||
<authorEmail>hello@mokoconsulting.tech</authorEmail>
|
||||
<authorUrl>https://mokoconsulting.tech</authorUrl>
|
||||
<copyright>Copyright (C) 2026 Moko Consulting</copyright>
|
||||
<license>GPL-3.0-or-later</license>
|
||||
<description>COM_MOKOSUITEFIELD_DESCRIPTION</description>
|
||||
|
||||
<namespace path="src">Moko\Component\MokoSuiteField</namespace>
|
||||
|
||||
<administration>
|
||||
<menu>COM_MOKOSUITEFIELD</menu>
|
||||
<submenu>
|
||||
<menu link="option=com_mokosuitefield&view=fielddashboard" view="fielddashboard" img="icon-home">COM_MOKOSUITEFIELD_MENU_DASHBOARD</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldworkorders" view="fieldworkorders" img="icon-file-2">COM_MOKOSUITEFIELD_MENU_WORKORDERS</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldtechnicians" view="fieldtechnicians" img="icon-users">COM_MOKOSUITEFIELD_MENU_TECHNICIANS</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldequipment" view="fieldequipment" img="icon-cogs">COM_MOKOSUITEFIELD_MENU_EQUIPMENT</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldparts" view="fieldparts" img="icon-cube">COM_MOKOSUITEFIELD_MENU_PARTS</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldchecklists" view="fieldchecklists" img="icon-checklist">COM_MOKOSUITEFIELD_MENU_CHECKLISTS</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fieldagreements" view="fieldagreements" img="icon-contract">COM_MOKOSUITEFIELD_MENU_AGREEMENTS</menu>
|
||||
<menu link="option=com_mokosuitefield&view=fielddispatches" view="fielddispatches" img="icon-location">COM_MOKOSUITEFIELD_MENU_DISPATCHES</menu>
|
||||
</submenu>
|
||||
<files folder=".">
|
||||
<folder>src</folder>
|
||||
<folder>tmpl</folder>
|
||||
<folder>services</folder>
|
||||
<folder>language</folder>
|
||||
<filename>access.xml</filename>
|
||||
<filename>config.xml</filename>
|
||||
</files>
|
||||
</administration>
|
||||
|
||||
<languages folder="language">
|
||||
<language tag="en-GB">en-GB/com_mokosuitefield.ini</language>
|
||||
<language tag="en-GB">en-GB/com_mokosuitefield.sys.ini</language>
|
||||
</languages>
|
||||
</extension>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
Authored-by: Moko Consulting
|
||||
-->
|
||||
<config>
|
||||
<fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC">
|
||||
<field
|
||||
name="rules"
|
||||
type="rules"
|
||||
label="JCONFIG_PERMISSIONS_LABEL"
|
||||
validate="rules"
|
||||
filter="rules"
|
||||
component="com_mokosuitefield"
|
||||
section="component"
|
||||
/>
|
||||
</fieldset>
|
||||
</config>
|
||||
@@ -0,0 +1,14 @@
|
||||
; Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
; Authored-by: Moko Consulting
|
||||
|
||||
COM_MOKOSUITEFIELD="MokoSuite Field"
|
||||
COM_MOKOSUITEFIELD_DESCRIPTION="Field service management for contractors."
|
||||
COM_MOKOSUITEFIELD_MENU_DASHBOARD="Dashboard"
|
||||
COM_MOKOSUITEFIELD_MENU_WORKORDERS="Work Orders"
|
||||
COM_MOKOSUITEFIELD_MENU_TECHNICIANS="Technicians"
|
||||
COM_MOKOSUITEFIELD_MENU_EQUIPMENT="Equipment"
|
||||
COM_MOKOSUITEFIELD_MENU_PARTS="Parts"
|
||||
COM_MOKOSUITEFIELD_MENU_CHECKLISTS="Checklists"
|
||||
COM_MOKOSUITEFIELD_MENU_AGREEMENTS="PM Agreements"
|
||||
COM_MOKOSUITEFIELD_MENU_DISPATCHES="Dispatches"
|
||||
@@ -0,0 +1,14 @@
|
||||
; Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
; SPDX-License-Identifier: GPL-3.0-or-later
|
||||
; Authored-by: Moko Consulting
|
||||
|
||||
COM_MOKOSUITEFIELD="MokoSuite Field"
|
||||
COM_MOKOSUITEFIELD_DESCRIPTION="Field service management for contractors."
|
||||
COM_MOKOSUITEFIELD_MENU_DASHBOARD="Dashboard"
|
||||
COM_MOKOSUITEFIELD_MENU_WORKORDERS="Work Orders"
|
||||
COM_MOKOSUITEFIELD_MENU_TECHNICIANS="Technicians"
|
||||
COM_MOKOSUITEFIELD_MENU_EQUIPMENT="Equipment"
|
||||
COM_MOKOSUITEFIELD_MENU_PARTS="Parts"
|
||||
COM_MOKOSUITEFIELD_MENU_CHECKLISTS="Checklists"
|
||||
COM_MOKOSUITEFIELD_MENU_AGREEMENTS="PM Agreements"
|
||||
COM_MOKOSUITEFIELD_MENU_DISPATCHES="Dispatches"
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
use Joomla\CMS\Dispatcher\ComponentDispatcherFactoryInterface;
|
||||
use Joomla\CMS\Extension\ComponentInterface;
|
||||
use Joomla\CMS\Extension\MVCComponent;
|
||||
use Joomla\CMS\Extension\Service\Provider\ComponentDispatcherFactory;
|
||||
use Joomla\CMS\Extension\Service\Provider\MVCFactory;
|
||||
use Joomla\CMS\Extension\Service\Provider\RouterFactory;
|
||||
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
|
||||
use Joomla\CMS\Component\Router\RouterFactoryInterface;
|
||||
use Joomla\DI\Container;
|
||||
use Joomla\DI\ServiceProviderInterface;
|
||||
|
||||
return new class () implements ServiceProviderInterface {
|
||||
public function register(Container $container): void
|
||||
{
|
||||
$container->registerServiceProvider(new ComponentDispatcherFactory('\\Moko\\Component\\MokoSuiteField'));
|
||||
$container->registerServiceProvider(new MVCFactory('\\Moko\\Component\\MokoSuiteField'));
|
||||
$container->registerServiceProvider(new RouterFactory('\\Moko\\Component\\MokoSuiteField'));
|
||||
|
||||
$container->set(
|
||||
ComponentInterface::class,
|
||||
function (Container $container) {
|
||||
$component = new MVCComponent();
|
||||
$component->setMVCFactory($container->get(MVCFactoryInterface::class));
|
||||
$component->setDispatcherFactory($container->get(ComponentDispatcherFactoryInterface::class));
|
||||
$component->setRouterFactory($container->get(RouterFactoryInterface::class));
|
||||
|
||||
return $component;
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\Controller;
|
||||
|
||||
use Joomla\CMS\MVC\Controller\BaseController;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class DisplayController extends BaseController
|
||||
{
|
||||
protected $default_view = 'fielddashboard';
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldAgreements;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — PM Agreements', 'contract');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldChecklists;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Checklists', 'checklist');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldDashboard;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Dashboard', 'home');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldDispatches;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Dispatches', 'location');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldEquipment;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Equipment', 'cogs');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldParts;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Parts', 'cube');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldTechnicians;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Technicians', 'users');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
namespace Moko\Component\MokoSuiteField\Administrator\View\FieldWorkorders;
|
||||
|
||||
use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;
|
||||
use Joomla\CMS\Toolbar\ToolbarHelper;
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
|
||||
class HtmlView extends BaseHtmlView
|
||||
{
|
||||
public function display($tpl = null): void
|
||||
{
|
||||
ToolbarHelper::title('MokoSuite Field — Work Orders', 'file-2');
|
||||
|
||||
parent::display($tpl);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-agreements">
|
||||
<h2>MokoSuite Field — PM Agreements</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-checklists">
|
||||
<h2>MokoSuite Field — Checklists</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-dashboard">
|
||||
<h2>MokoSuite Field — Dashboard</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-dispatches">
|
||||
<h2>MokoSuite Field — Dispatches</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-equipment">
|
||||
<h2>MokoSuite Field — Equipment</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-parts">
|
||||
<h2>MokoSuite Field — Parts</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-technicians">
|
||||
<h2>MokoSuite Field — Technicians</h2>
|
||||
</div>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @copyright Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
* @license GPL-3.0-or-later
|
||||
* @author Moko Consulting
|
||||
*/
|
||||
|
||||
\defined('_JEXEC') or die;
|
||||
?>
|
||||
<div class="mokosuitefield-workorders">
|
||||
<h2>MokoSuite Field — Work Orders</h2>
|
||||
</div>
|
||||
Reference in New Issue
Block a user