Completion requirements:
- View
Developer Documentation - AI Prompt Generator
Architecture Overview
Core Components
- Block Class (
block_aipromptgen):- Main entry point for the plugin
- Handles block display and initialization
- Manages capability checks and content generation
- Integrates with Moodle competencies and outcomes
- Form System (
classes/form/prompt_form.php):- Implements Moodle's form API
- Handles all input fields and validation
- Manages form elements and their attributes
- Processes form submissions
- JavaScript Modules (
amd/src/):actions.js: Handles form actions and submissionsage.js: Age/grade range picker functionalitypickers.js: Modal pickers for various form fieldsui.js: UI interactions and enhancements
Integration Points
- Competencies Integration:
// Example of competencies integration if (class_exists('\\core_competency\\api') && \core_competency\api::is_enabled()) { $coursecompetencies = \core_competency\api::list_course_competencies($courseid); // Process competencies... } - Outcomes Integration:
// Example of outcomes integration if (!empty($CFG->enableoutcomes)) { require_once($CFG->libdir . '/gradelib.php'); require_once($CFG->libdir . '/grade/grade_outcome.php'); // Process outcomes... }
Development Guidelines
Adding New Features
- Form Fields:
- Add field definition in
prompt_form.php - Create corresponding language strings
- Update JavaScript handlers if needed
- Add validation rules if required
- Add field definition in
- Modal Pickers:
- Create new picker template
- Add JavaScript handler in
pickers.js - Register picker initialization in
ui.js
JavaScript Development
- Module Structure:
define(['jquery'], function($) { // Module implementation return { // Public methods }; }); - Building JavaScript:
# From Moodle root directory php admin/cli/minify.php --js
Adding New Languages
- Create new language file in
lang/[langcode]/block_aipromptgen.php - Include all required strings
- Follow Moodle's language pack guidelines
API Documentation
Core Methods
- Block Initialization:
public function init() public function applicable_formats() public function get_content() - Form Methods:
protected function definition() public function validation($data, $files) - JavaScript APIs:
// Picker API initializePicker(selector, options) updatePickerValue(value) // Actions API handleSubmission(formData) processResponse(response)
Testing Guidelines
- PHPUnit Tests:
- Create test classes in
tests/ - Follow Moodle's testing conventions
- Test all major functionality
- Create test classes in
- JavaScript Tests:
- Use Mocha for unit testing
- Test all UI interactions
- Verify form handling
- Manual Testing Checklist:
- Form submission
- Modal pickers
- Competencies integration
- Outcomes integration
- Language handling
- Error scenarios
Security Considerations
- Input Validation:
- All form inputs are type-checked
- Use appropriate
PARAMtypes - Validate before processing
- Capability Checks:
- Verify user permissions
- Check context access
- Follow principle of least privilege
- Data Processing:
- Clean all output
- Use prepared statements
- Follow Moodle security guidelines
Extending the Plugin
Adding New Features
- Create new PHP classes in
classes/ - Add required language strings
- Update block class if needed
- Add settings if required
Custom Integrations
- Adding AI Providers:
// Provider interface interface ai_provider { public function generate_response($prompt); public function validate_settings(); } - Custom Form Fields:
// Example custom form element $mform->addElement('customtype', 'name', get_string('label', 'block_aipromptgen'), [ 'custom' => 'attributes', ]);
Troubleshooting Guide
Common Issues
- JavaScript Loading:
- Check AMD module dependencies
- Verify file paths
- Check browser console
- Form Submission:
- Validate form data
- Check AJAX responses
- Verify session handling
- Integration Issues:
- Check competencies setup
- Verify outcomes configuration
- Validate permissions
Debugging
- Enable Debug Mode:
$CFG->debug = DEBUG_DEVELOPER; $CFG->debugdisplay = 1; - JavaScript Debugging:
// Add debug logging console.log('Debug:', data);
Performance Optimization
- JavaScript:
- Minimize DOM operations
- Use event delegation
- Cache jQuery selectors
- PHP:
- Optimize database queries
- Use caching where appropriate
- Minimize API calls
Version Control
Git Workflow
- Branch Naming:
feature/[name]fix/[name]release/[version]
- Commit Messages:
- Clear and descriptive
- Reference issue numbers
- Follow conventional commits
- Release Process:
- Update
version.php - Update changelog
- Tag release
- Update
Support and Resources
- Documentation:
- Moodle Docs
- Plugin Documentation
- API References
- Community:
- Moodle Forums
- Developer Community
- Issue Tracker
- Tools:
- Development Tools
- Testing Framework
- Build Scripts
Last modified: Monday, 13 October 2025, 4:08 AM