Commit Graph

19 Commits

Author SHA1 Message Date
gitea-actions[bot] e31552259d chore: update development channel 01.00.06-dev-dev [skip ci] 2026-05-28 18:42:22 +00:00
gitea-actions[bot] 97915d9f30 chore(version): auto-bump 01.00.06-dev-dev [skip ci] 2026-05-28 18:42:20 +00:00
Jonathan Miller 2872ae2b97 feat: low-priority issues #19-#22
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update Server (push) Has been cancelled
#19 Per-article cross-posting: Content plugin injects "Cross-Posting"
    fieldset into article editor via onContentPrepareForm. Dynamic
    checkbox list of all enabled services. Skip toggle. System plugin
    reads article attribs for mokojoomcross_services (array of service
    IDs) and mokojoomcross_skip (boolean). Unchecked = post to all.

#20 Analytics dashboard: Posts-by-service breakdown table with
    success rate column (color-coded). Top cross-posted articles
    list. DashboardModel methods: getServiceBreakdown(),
    getDailyTrend(), getTopArticles().

#21 OAuth flows: OAuthHelper with authorize URL generation (Facebook,
    LinkedIn, Twitter), PKCE for Twitter, code→token exchange, token
    storage in service credentials. OauthController with authorize
    and callback actions. Reads client ID/secret from plugin params.

#22 Wiki documentation: Services guide (all 9 platforms, default vs
    custom mode), REST API reference, Message Templates guide with
    examples per platform, Troubleshooting guide.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:42:07 -05:00
Moko Consulting 3664f547ee feat(workflows): append stability suffix to manifest versions [skip bump]
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
2026-05-28 13:41:34 -05:00
gitea-actions[bot] 6521edaab9 chore: update updates.xml (development: 01.00.05-dev-dev) [skip ci] 2026-05-28 18:36:31 +00:00
gitea-actions[bot] 3f6f286ffe chore(version): auto-bump patch 01.00.05-dev [skip ci] 2026-05-28 18:36:29 +00:00
Jonathan Miller 342f6fa3b8 feat: medium-priority issues #12-#18
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#12 LinkedIn: plugin config form (OAuth client ID/secret, redirect URI)
#13 Mastodon: plugin config (default instance, visibility, hashtags)
#14 Bluesky: plugin config (default PDS URL, auto link cards)
#15 Mailchimp: plugin config (sender name/email, auto-send toggle)

#17 Template management: full CRUD with TemplatesController,
    TemplateController, TemplatesModel, TemplateModel, TemplateTable.
    List view with service type badges and body preview. Edit view
    with placeholder reference panel showing all 8 placeholders.
    Filter form with search, published, service_type filters.
    Added Templates submenu item and dashboard quick link.

#18 Logs: added filter form with level and search filters.

#16 WebServices: implementation already in place from scaffold,
    routes registered for posts and services CRUD.

Admin component now has 5 submenu items: Dashboard, Post Queue,
Services, Templates, Activity Logs.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:36:11 -05:00
gitea-actions[bot] 2f60ede713 chore: update updates.xml (development: 01.00.04-dev-dev) [skip ci] 2026-05-28 18:29:39 +00:00
gitea-actions[bot] 8fba003d64 chore(version): auto-bump patch 01.00.04-dev [skip ci] 2026-05-28 18:29:37 +00:00
Jonathan Miller 76dfa177c4 feat: high-priority issues #6-#10 — migration + service plugins
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#6 PP Pro migration rewritten to read #__autotweet_channels table
   directly, mapping channeltype names to MokoJoomCross service types.
   Credential extraction per platform (Facebook page tokens, Twitter
   OAuth, Telegram bot tokens, Discord/Slack webhooks). Falls back to
   component params extraction when channel table doesn't exist.

#7 Facebook plugin: config form with default_page_access_token and
   default_page_id. resolveToken() reads from plugin params.

#8 Discord plugin: config form with default_webhook_url and
   embed_color. resolveWebhook() reads from plugin params.

#9 Twitter plugin: implementation already complete from scaffold.

#10 Slack plugin: config form with default_webhook_url.
    resolveWebhook() reads from plugin params.

All service plugins with universal bot support now store default
credentials in their own plugin params (Extensions → Plugins)
rather than component params. This keeps sensitive tokens scoped
to the plugin that uses them.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:29:22 -05:00
gitea-actions[bot] 4edc5a4765 chore: update updates.xml (development: 01.00.03-dev-dev) [skip ci] 2026-05-28 18:19:51 +00:00
gitea-actions[bot] a67a2a3c5d chore(version): auto-bump patch 01.00.03-dev [skip ci] 2026-05-28 18:19:49 +00:00
Jonathan Miller 9bbf2a74fb feat: queue processor — scheduled task + page-load fallback (#11)
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
Three-pronged queue processing:

1. Joomla Scheduled Task (preferred): New plg_task_mokojoomcross plugin
   registers "MokoJoomCross - Process Queue" task type. Admin creates
   a scheduled task in System → Scheduled Tasks with desired interval.

2. Page-load fallback: System plugin onAfterRender with configurable
   throttle interval. Runs on backend, frontend, or both. Small batch
   size (5) to avoid slowing page loads.

3. Both can run simultaneously — QueueProcessor uses DB-based lock
   to prevent concurrent execution (120s safety timeout).

Shared QueueProcessor helper handles:
- Queued post dispatch to service plugins
- Failed post retry with configurable max retries + delay
- Scheduled post firing (when scheduled_at <= now)
- Log cleanup based on retention period

Dashboard shows warning banner when page-load processing is active,
recommending switch to Joomla Scheduled Tasks for production.

Config options: queue_processing (scheduler/pageload/both),
pageload_client (admin/site/both), pageload_interval (seconds).

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:19:31 -05:00
gitea-actions[bot] 04e7720268 chore: update updates.xml (development: 01.00.02-dev-dev) [skip ci] 2026-05-28 18:11:32 +00:00
gitea-actions[bot] d4c2ff00c3 chore(version): auto-bump patch 01.00.02-dev [skip ci] 2026-05-28 18:11:31 +00:00
Jonathan Miller 559b9ca30c feat: implement critical issues #1-#5
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
#1 Core engine: System plugin now dispatches to service plugins via
onMokoJoomCrossGetServices event, executes publish() immediately,
handles success/failure, duplicate guard prevents re-posting, listens
to both onContentAfterSave and onContentChangeState events. Template
rendering now resolves {category}, {author}, {date}, {fulltext}.

#3 Services CRUD: Admin list template with service type icons,
default/custom mode badges, publish toggle. Service edit form template.

#4 Post Queue: Admin list template with status badges (color-coded),
article title, service, message preview, platform post ID, error
messages, retry count, timestamps.

#5 Dashboard: Enhanced with recent activity feed from logs table,
migration controller action for PP Pro import, quick links sidebar.

#2 Telegram: Already implemented in scaffold, provider.php fixed.

Also fixes: All 9 service plugin provider.php files had broken
namespace references from bash heredoc escaping.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 13:11:20 -05:00
gitea-actions[bot] 7e4cce51de chore: update updates.xml (development: 01.00.01-dev-dev) [skip ci] 2026-05-28 17:55:19 +00:00
gitea-actions[bot] a2e2a60dea chore(version): auto-bump patch 01.00.01-dev [skip ci] 2026-05-28 17:55:17 +00:00
Jonathan Miller be3eb9b8e7 feat: initial MokoJoomCross package scaffold
Universal: Cascade Main -> Dev / Cascade main -> branches (push) Has been cancelled
Universal: Auto Version Bump / Version Bump (push) Has been cancelled
Update Server / Update updates.xml (push) Has been cancelled
Cross-posting Joomla content to social media, email marketing, and chat
platforms. Plugin-based service architecture with custom mokojoomcross
plugin group.

14 sub-extensions:
- com_mokojoomcross (admin component: dashboard, posts, services, logs)
- plg_system_mokojoomcross (triggers cross-posting on article publish)
- plg_content_mokojoomcross (admin article status badges)
- plg_webservices_mokojoomcross (REST API)
- 9 service plugins: facebook, twitter, linkedin, mastodon, bluesky,
  mailchimp, telegram, discord, slack

Includes Perfect Publisher Pro migration tool, message templates with
placeholders, post queue with retry logic, and default/custom bot modes
for services supporting universal bots.

Authored-by: Moko Consulting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-28 12:54:43 -05:00