From a787019a3b674ee6b97879cab47ea04d507f80d4 Mon Sep 17 00:00:00 2001 From: olli Date: Fri, 5 Dec 2025 11:13:41 +0100 Subject: [PATCH] feat: Implement PDF upload functionality in PDFUploadForm.vue - Added a file input for PDF uploads with validation for file type and size. - Implemented file size formatting and user feedback for selected files. - Created upload and cancel methods with placeholder for future API integration. feat: Create PaymentForm.vue for handling payments - Developed a form for entering payment details including date, amount, method, and notes. - Integrated currency formatting and dropdown for payment methods. - Implemented save and cancel actions with API call for saving payment data. docs: Add documentation for dynamic plugin menus and permissions - Provided guidelines for defining menu items and permissions in plugins. - Explained the process for synchronizing permissions and integrating menus in the frontend. - Included examples and best practices for plugin development. feat: Add database migrations for invoices, invoice items, and payments - Created migration scripts to define the database schema for invoices, invoice items, and payments. - Established foreign key relationships between invoices and related entities. feat: Implement command for synchronizing plugin permissions - Developed a console command to synchronize plugin permissions with the database. - Added options for dry-run and force synchronization for unlicensed modules. feat: Create API controller for plugin menu items - Implemented API endpoints to retrieve plugin menu items in both flat and grouped formats. - Ensured access control with role-based permissions for API access. feat: Develop service for managing plugin menu items - Created a service to collect and manage menu items from installed plugins. - Implemented methods for retrieving flat and grouped menu items for frontend use. feat: Add service for synchronizing plugin permissions - Developed a service to handle the synchronization of plugin permissions with the database. - Included logic for creating and updating permission modules based on plugin definitions. --- assets/js/layout/AppMenu.vue | 75 ++- assets/js/router.js | 3 + assets/js/views/InvoiceForm.vue | 205 ++++++++ assets/js/views/InvoiceManagement.vue | 281 ++++++++++ assets/js/views/PDFUploadForm.vue | 102 ++++ assets/js/views/PaymentForm.vue | 121 +++++ composer.json | 5 + composer.lock | 39 +- config/bundles.php | 1 + docs/PLUGIN_MENUS_AND_PERMISSIONS.md | 521 +++++++++++++++++++ migrations/Version20251205095156.php | 41 ++ src/Command/SyncPluginPermissionsCommand.php | 135 +++++ src/Controller/Api/PluginMenuController.php | 56 ++ src/Plugin/ModulePluginInterface.php | 25 + src/Service/MenuItemRegistry.php | 119 +++++ src/Service/PermissionModuleSync.php | 187 +++++++ symfony.lock | 3 + 17 files changed, 1904 insertions(+), 15 deletions(-) create mode 100644 assets/js/views/InvoiceForm.vue create mode 100644 assets/js/views/InvoiceManagement.vue create mode 100644 assets/js/views/PDFUploadForm.vue create mode 100644 assets/js/views/PaymentForm.vue create mode 100644 docs/PLUGIN_MENUS_AND_PERMISSIONS.md create mode 100644 migrations/Version20251205095156.php create mode 100644 src/Command/SyncPluginPermissionsCommand.php create mode 100644 src/Controller/Api/PluginMenuController.php create mode 100644 src/Service/MenuItemRegistry.php create mode 100644 src/Service/PermissionModuleSync.php diff --git a/assets/js/layout/AppMenu.vue b/assets/js/layout/AppMenu.vue index a793775..ad67c5f 100644 --- a/assets/js/layout/AppMenu.vue +++ b/assets/js/layout/AppMenu.vue @@ -1,11 +1,12 @@