New MokoSuiteCrossDeleteInterface (separate from main interface to avoid
breaking all 38 plugins). Plugins that support deletion implement both.
deletePost() implemented for 7 platforms:
- Twitter: DELETE /2/tweets/{id} with OAuth 1.0a
- Mastodon: DELETE /api/v1/statuses/{id}
- Bluesky: com.atproto.repo.deleteRecord
- Facebook: DELETE /{post_id} via Graph API
- LinkedIn: DELETE /v2/ugcPosts/{urn}
- Telegram: POST /deleteMessage
- Discord: DELETE webhook /messages/{id}
Infrastructure:
- CrossPostDispatcher::deleteFromPlatforms() finds posted entries and
calls deletePost() on plugins that implement the delete interface
- Content plugin hooks onContentChangeState for unpublish/trash
- New component config: 'Delete from Platforms on Unpublish'
- Post status 'deleted' added to schema
Closes#131
New article editor fieldset 'Share Content' with fields:
- Social Media Text ({social}) - Facebook, LinkedIn, Threads, Mastodon
- Short Text ({short}) - Twitter/X (280), Bluesky (300)
- Chat Text ({chat}) - Telegram, Discord, Slack, Teams
- Email Subject ({email_subject}) + Email Body ({email_body}) - Mailchimp, SendGrid, Brevo
- Share Image picker (intro/fulltext/custom/none)
All placeholders fall back gracefully to introtext/title if empty.
Default templates updated to use platform-specific placeholders.
Completes the MokoJoomCross → MokoSuiteCross rebrand across all language
string keys, Joomla event names, documentation, and wiki pages.
- 1,151 language key references renamed (COM_, PLG_, PKG_ prefixes)
- Event names renamed (onMokoJoomCross* → onMokoSuiteCross*)
- CLAUDE.md, CHANGELOG.md, wiki docs updated
- Zero mokojoomcross references remaining in codebase
Closes#128, closes#138