diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..10f5bf5 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,33 @@ +name: Build Package +on: + push: + tags: + - 'v*' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Build package ZIP + run: | + cd source + # Create individual package ZIPs + for pkg_dir in packages/*/; do + pkg_name=$(basename "$pkg_dir") + cd "$pkg_dir" + zip -r "../../${pkg_name}.zip" . -x "*.git*" + cd ../.. + done + # Create main package ZIP with all sub-packages + manifest + zip -j "pkg_mokosuitefield.zip" pkg_*.xml script.php updates.xml *.zip 2>/dev/null || true + ls -la *.zip + + - name: Create Release + uses: softprops/action-gh-release@v1 + with: + files: source/pkg_mokosuitefield.zip + generate_release_notes: true diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d001f04 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,12 @@ +# Changelog + +## [01.01.00] - 2026-06-12 +### Added +- Initial scaffold: field service management for MokoSuite +- 12 database tables for technicians, work orders, service agreements, equipment, vehicles, estimates +- 7 helpers: Dispatch, WorkOrder, ServiceAgreement, Equipment, Estimate, TruckStock, Vehicle +- Admin views: Dashboard, Work Orders, Technicians, Service Agreements, Equipment, Dispatch, Vehicles +- Site views: Tech Mobile (tablet), Book Service (public form) +- API controller with 6 endpoints +- Task scheduler: service reminders, agreement renewals, equipment warranty, truck stock reorder +- Joomla 6 architecture (PHP 8.3+) diff --git a/source/packages/com_mokosuitefield/media/css/field.css b/source/packages/com_mokosuitefield/media/css/field.css new file mode 100644 index 0000000..a22318a --- /dev/null +++ b/source/packages/com_mokosuitefield/media/css/field.css @@ -0,0 +1,9 @@ +/* MokoSuite Field Service Styles */ +.dispatch-board .tech-card { border-left: 4px solid #198754; } +.dispatch-board .tech-card.dispatched { border-left-color: #0d6efd; } +.dispatch-board .tech-card.on-site { border-left-color: #ffc107; } +.wo-priority-emergency { background-color: rgba(220, 53, 69, 0.1) !important; } +.wo-priority-urgent { background-color: rgba(255, 193, 7, 0.08) !important; } +.tech-mobile .current-job { border: 2px solid #0d6efd; } +@media (max-width: 768px) { .tech-mobile .card { margin-bottom: 0.5rem; } } +@media print { .btn, .toolbar { display: none !important; } } diff --git a/source/packages/com_mokosuitefield/media/js/dispatch.js b/source/packages/com_mokosuitefield/media/js/dispatch.js new file mode 100644 index 0000000..f0d9d81 --- /dev/null +++ b/source/packages/com_mokosuitefield/media/js/dispatch.js @@ -0,0 +1,6 @@ +document.addEventListener('DOMContentLoaded', function() { + // Auto-refresh dispatch board every 30 seconds + if (document.querySelector('.dispatch-board')) { + setInterval(function() { location.reload(); }, 30000); + } +}); diff --git a/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.ini b/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.ini new file mode 100644 index 0000000..c507f86 --- /dev/null +++ b/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.ini @@ -0,0 +1,2 @@ +PLG_SYSTEM_MOKOSUITEFIELD="System - MokoSuite Field" +PLG_SYSTEM_MOKOSUITEFIELD_DESC="MokoSuite Field Service system plugin - database schema and helpers." diff --git a/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.sys.ini b/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.sys.ini new file mode 100644 index 0000000..26bf5c4 --- /dev/null +++ b/source/packages/plg_system_mokosuitefield/language/en-GB/plg_system_mokosuitefield.sys.ini @@ -0,0 +1,2 @@ +PLG_SYSTEM_MOKOSUITEFIELD="System - MokoSuite Field" +PLG_SYSTEM_MOKOSUITEFIELD_DESC="MokoSuite Field Service system plugin."