feat(org-calendar): link back to the appointment in the event description - #206
Merged
Conversation
…tion The deep link was only in the VEVENT URL property, which the Calendar app does not surface, so the "--- Attendance ---" block told people how many were coming but gave them no way to answer without hunting for the app. The link now sits at the end of that block, reusing the "View or change your response" wording of the personal iCal feed. It stays outside the response-summary switch: that switch exists to keep a calendar write per answer out of the activity stream, and the link never changes. Because the block is now always present, DESCRIPTION is too — clearing an appointment's description leaves the block rather than dropping the property. Renamed SUMMARY_SEPARATOR/stripResponseSummary to BLOCK_SEPARATOR/stripAppendedBlock so the names still say what the marker covers; stripping is unchanged, so the calendar-to-app echo stays a no-op. Existing events pick the link up on the next sync of the appointment or via the admin's "Sync upcoming appointments now" button — no forced mass write on upgrade. Closes #205
…ng stub Follow-up cleanup on the #205 change. The link line was spelled out twice — once here, once in the personal iCal feed — and what the two copies shared was a Transifex source string, so a reword in one would have forked it into a second string to translate with nothing checking. IcalService::appointmentLinkLine() now owns it. escapeIcalText() joins unfoldIcalContent() and icalPropertyName() as a static pure transform, for the reason their docblock already gives: the unit test had started restating the escaping rule in a stub, and the copy was lossy — it reproduced newlines but not the ,/;/\ escaping, so the DESCRIPTION assertions described a shape production never emits. Typing generateVEvent()'s $l as IL10N was needed to pass it on, and takes 27 entries out of the psalm baseline. The four description tests differed only in their inputs and are now one data provider. Added the round trip they were all missing: everything the sync appends is what stripAppendedBlock takes off again — the invariant the marker exists for, previously asserted only as two hand-written halves that could drift. The e2e fixture now carries the block the app actually writes, link line included. Also: the summary switch takes the summary out, not the block, and managedProperties() no longer offers the description as its example of a property that can be absent.
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.
The deep link was only in the VEVENT URL property, which the Calendar app
does not surface, so the "--- Attendance ---" block told people how many
were coming but gave them no way to answer without hunting for the app.
The link now sits at the end of that block, reusing the "View or change
your response" wording of the personal iCal feed. It stays outside the
response-summary switch: that switch exists to keep a calendar write per
answer out of the activity stream, and the link never changes.
Because the block is now always present, DESCRIPTION is too — clearing an
appointment's description leaves the block rather than dropping the
property. Renamed SUMMARY_SEPARATOR/stripResponseSummary to
BLOCK_SEPARATOR/stripAppendedBlock so the names still say what the marker
covers; stripping is unchanged, so the calendar-to-app echo stays a no-op.
Existing events pick the link up on the next sync of the appointment or
via the admin's "Sync upcoming appointments now" button — no forced mass
write on upgrade.
Closes #205