Skip to content

Development

  • Node.js 18+
  • PHP 8.3+
  • Composer
Terminal window
npm install
npm run build

For development with watch mode:

Terminal window
npm run dev
Terminal window
composer install
composer test
Terminal window
npm test

Run tests once (CI mode):

Terminal window
npm test -- --run
Terminal window
npm run i18n

This command runs the full translation workflow:

  1. Extracts strings to .pot file
  2. Updates .po files
  3. Compiles .mo files
  4. Generates JSON for JavaScript
  5. Creates PHP translation files
Terminal window
composer lint
Terminal window
npm run lint:js
Terminal window
npm run lint:css
vmfa-editorial-workflow/
├── build/ # Compiled assets
├── docs/ # Documentation
├── languages/ # Translation files
├── src/
│ ├── css/ # Source stylesheets
│ ├── js/ # Source JavaScript/React
│ │ ├── review/ # Review page scripts
│ │ └── settings/ # Settings panel components
│ └── php/ # PHP classes
│ ├── Admin/ # Admin pages
│ ├── REST/ # REST API endpoints
│ └── Services/ # Business logic
├── tests/
│ └── php/ # PHPUnit tests
└── vendor/ # Composer dependencies
  • PHP: WordPress Coding Standards (WPCS)
  • JavaScript: WordPress ESLint configuration
  • CSS: WordPress Stylelint configuration
HookDescriptionParameters
vmfa_inbox_assignedFired after upload is routed to inbox$attachment_id, $folder_id, $user_id
vmfa_marked_needs_reviewFired after item marked for review$attachment_id, $folder_id
vmfa_approvedFired after item is approved$attachment_id, $folder_id

The plugin integrates with VMF core hooks:

FilterDescription
vmfo_can_delete_folderUsed to protect system folders
MethodEndpointDescription
GET/vmfa-editorial/v1/settingsGet all settings
POST/vmfa-editorial/v1/settingsUpdate all settings
GET/vmfa-editorial/v1/permissionsGet folder permissions
POST/vmfa-editorial/v1/permissionsUpdate folder permissions
GET/vmfa-editorial/v1/inboxGet inbox mapping
POST/vmfa-editorial/v1/inboxUpdate inbox mapping
GET/vmfa-editorial/v1/workflowGet workflow settings
POST/vmfa-editorial/v1/workflowUpdate workflow settings

All endpoints require manage_options capability.