feat(kronolith): organizer UI for disallow new time proposals#61
Merged
Conversation
Expose the existing DISALLOW-COUNTER / EAS DisallowNewTimeProposal backend in the event editor so organizers can toggle attendee time proposals. Wire readForm, full JSON export (dntp), attendee-tab checkbox, and unit tests for form, JSON, and iCal round-trip.
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a new organizer-facing control in the Kronolith dynamic event editor to disallow attendee time proposals (EAS 16.1 / iCal DISALLOW-COUNTER), wiring it through form handling and full JSON export, and extending unit coverage for the new behavior.
Changes:
- Expose
disallowsNewTimeProposal()/setDisallowNewTimeProposal()onKronolith_Event, wirereadForm()and fulltoJson()output (dntp). - Add an Attendees-tab checkbox plus JS logic to show/hide it only for organizer events with attendees.
- Extend ActiveSync unit tests to cover form parsing, JSON export, and iCalendar round-trip.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
lib/Event.php |
Adds public API + wires the flag into readForm() and full JSON export. |
templates/dynamic/edit.inc |
Adds the organizer checkbox in the dynamic editor’s Attendees tab. |
js/kronolith.js |
Resets, populates, and conditionally displays the checkbox based on organizer/attendee state. |
test/Kronolith/Unit/EventActiveSyncTest.php |
Adds tests validating form behavior, JSON export, and iCal round-trip preservation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
ralflang
added a commit
that referenced
this pull request
Jun 30, 2026
Release version 5.0.0 test: add @coversNothing to coverage-neutral test style: explicit nullable type and corrected block indentation chore: update CI feat(kronolith): simplify iTIP invitation mail and templates Merge pull request #62 from horde/fix/icon-sidebar-ac fix(kronolith): group sidebar share icon with action controls Merge pull request #61 from horde/feat/disallow-new-time-proposal-ui Potential fix for pull request finding feat(kronolith): organizer UI for disallow new time proposals fix(block): close _eventsForDay method in portal Month block Merge pull request #59 from horde/feat/polish_EAS16.1 fix(kronolith): harden EAS 16.1 proposal-clear export Merge pull request #60 from horde/fix/portal-month-block Potential fix for pull request finding fix(kronolith): show events in This Month portal block feat(kronolith): EAS 16.1 counter-proposals and proposal clear on sync fix(kronolith): scope ESC navigation and restore RedBox fade Delete doc/pr directory fix(kronolith): allow reopening event dialog after close fix(kronolith): guard count() on null cancellations in sendITipNotifications fix(kronolith): preserve timezone in attendee proposal storage Potential fix for pull request finding Potential fix for pull request finding Potential fix for pull request finding feat(kronolith): store and sync EAS 16.1 attendee proposals and disallow flags Refactor oldProperties assignment using null coalescing Merge pull request #56 from horde/fix/add_event_EAS16.0_allday Merge branch 'FRAMEWORK_6_0' into fix/add_event_EAS16.0_allday fix(maps): use sensible default zoom when opening event map Merge pull request #55 from horde/fix/icons_II Fix CSS selectors for iconEdit/iconDelete to target anchor-wrapped images fix(icon): deduplicate code feat(kronolith): implement EAS 16.0 calendar sync and all-day import fix fix(kronolith): apply EAS 16 date-only import for new all-day events fix(kronolith): use transparent 48px event icons with background-aware colors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
readForm, full JSON export (dntp), and JS visibility toggling for organizer events with attendeesMotivation
Backend support for
DisallowNewTimeProposal/DISALLOW-COUNTERalready existed for ActiveSync calendar sync and meeting responses, but organizers had no UI to set the flag. Phase 3C manual testing required a Kronolith editor control.Changes
lib/Event.php: publicdisallowsNewTimeProposal()/setDisallowNewTimeProposal(),readForm+toJsonwiringtemplates/dynamic/edit.inc,js/kronolith.js: checkbox and show/hide logictest/Kronolith/Unit/EventActiveSyncTest.php: form, JSON, iCal testsTest plan
vendor/bin/phpunit -c phpunit.xml.dist test/Kronolith/Unit/EventActiveSyncTest.php(13 tests)POOMCAL:DisallowNewTimeProposal=1, iOS no longer offers propose-alternativeMade with Cursor