This PR adds a new "Section" element type to Nextcloud Forms that acts as a visual separator to group fields logically, without affecting data storage, validation, or submission logic.
- New "Section" element type in the form editor
- Only parameter: section name (title) visible to users
- Sections appear as non-input elements
- Draggable for reordering
- Title displayed in bold/visually distinct style
- No description field for sections
- Bottom separator line for visual distinction
- Sections display as headings/subheadings at their position
- No influence on validation, mandatory fields, or submission flow
- Sections do not affect CSV export or response viewing
- Not stored in user responses
lib/Constants.php: AddedANSWER_TYPE_SECTION = 'section'constantlib/ResponseDefinitions.php: UpdatedFormsQuestionTypeto include"section"
- Section Validation: Sections cannot be required, have options, or file uploads
- Answer Storage: Sections are filtered out from answer storage
- Export Filtering: Sections are excluded from submissions export
- Form Cloning: Sections maintain
isRequired = falsewhen cloning forms
- Export Data: Sections are filtered out from CSV/Excel export data
- Validation: Sections are ignored during submission validation
src/components/Questions/QuestionSection.vue: New component for section renderingsrc/components/Questions/Question.vue: Updated to support section display and editingsrc/models/AnswerTypes.js: Added section type with appropriate icon and labelssrc/models/Constants.ts: AddedANSWER_TYPE_SECTIONconstant
src/views/Create.vue: Updated to pass question type to componentssrc/views/Submit.vue: Updated to filter sections from validation and storagesrc/components/Results/ResultsSummary.vue: Updated to handle sections in results displaysrc/components/Results/Submission.vue: Updated to filter sections from submission data
testUpdateQuestion_sectionCannotBeRequired(): Verifies sections cannot be made requiredtestNewOption_sectionCannotHaveOptions(): Verifies sections cannot have optionstestUploadFiles_sectionCannotHaveFileUploads(): Verifies sections cannot have file uploadstestGetSubmissions_sectionsAreFilteredOut(): Verifies sections are filtered from exporttestNewSubmission_sectionsAreNotStored(): Verifies sections are not stored in answers
testGetSubmissionsData_sectionsAreFilteredOut(): Verifies sections are filtered from export datatestValidateSubmission_sectionsAreIgnored(): Verifies sections are ignored in validationtestValidateSubmission_sectionsCannotBeRequired(): Verifies sections cannot be required in validation
lib/Constants.php- Added section constantlib/ResponseDefinitions.php- Updated type definitionslib/Controller/ApiController.php- Added section validation and filteringlib/Service/SubmissionService.php- Added export filtering
src/components/Questions/QuestionSection.vue- New section componentsrc/components/Questions/Question.vue- Updated for section supportsrc/models/AnswerTypes.js- Added section typesrc/models/Constants.ts- Added section constantsrc/views/Create.vue- Updated component propssrc/views/Submit.vue- Updated validation and storage logicsrc/components/Results/ResultsSummary.vue- Updated results displaysrc/components/Results/Submission.vue- Updated submission handling
tests/Unit/Controller/ApiControllerTest.php- Added section teststests/Unit/Service/SubmissionServiceTest.php- Added section tests
- No section functionality available
- Section element available in form editor
- Sections display as visual separators with titles
- Sections can be reordered like other form elements
- Sections do not appear in form submissions or exports
None. This is a purely additive feature that does not affect existing functionality.
- All hardcoded string literals have been replaced with constants (
Constants::ANSWER_TYPE_SECTIONon backend,ANSWER_TYPE_SECTIONon frontend) - Sections are completely filtered out from data storage and export to ensure they don't affect existing functionality
- Comprehensive test coverage has been added for all section-related functionality
- The implementation follows Nextcloud Forms coding standards and patterns
This PR implements the section functionality as requested in the technical specification.