Skip to content

Improve Themes & Extensions dashboard and licensing flows#2931

Closed
RabbiIslamRony wants to merge 5 commits into
sovware:developmentfrom
RabbiIslamRony:codex/directorist-themes-extensions-page-skill
Closed

Improve Themes & Extensions dashboard and licensing flows#2931
RabbiIslamRony wants to merge 5 commits into
sovware:developmentfrom
RabbiIslamRony:codex/directorist-themes-extensions-page-skill

Conversation

@RabbiIslamRony

@RabbiIslamRony RabbiIslamRony commented Jul 23, 2026

Copy link
Copy Markdown
Member

Summary

This PR completes the Themes & Extensions admin redesign while preserving the existing account, subscription, install, update, activation, and theme-management contracts used by current Directorist customers.

It introduces a responsive connected Dashboard and Add-ons experience, improves the disconnected marketplace and account-connect flow, adds optional access-key authentication, and documents the cross-repository licensing architecture required to maintain the page safely.

What Changed

Themes & Extensions shell

  • Adds a dedicated Directorist admin shell with Dashboard and Add-ons views.
  • Keeps atbdp-extension as the registered page slug.
  • Routes the Directorist Dashboard submenu to the clean page URL.
  • Routes Themes & Extensions to the Add-ons view while keeping header and inner state synchronized.
  • Keeps Docs, Tutorials, and Support as external resource links instead of application tabs.
  • Adds responsive desktop and mobile behavior without global WordPress admin styling.

Account connection and licensing

  • Keeps account username/email and password as the default connection method.
  • Adds Access key as an optional connection method through the existing atbdp_authenticate_the_customer AJAX action.
  • Prefers the Directorist License Manager account-login endpoint and retains the legacy licensing endpoint as a compatibility fallback.
  • Normalizes account-login and access-key responses into the existing theme/extension entitlement shape.
  • Stores only sanitized account summary and connection-method data locally.
  • Never stores the submitted access key or account password in local WordPress user meta.
  • Uses the licensing owner's display name and optional avatar for connected Dashboard identity.
  • Supports optional plan name, status, expiration, All Access, and lifetime messaging without requiring those fields from older APIs.
  • Reuses the existing Refresh Purchases and disconnect AJAX contracts.
  • Avoids a duplicate remote authentication request when a returning customer reconnects.

Disconnected experience

  • Preserves the approved account-connect plus marketplace behavior.
  • Keeps installed products operational while hiding subscription-management actions until an account is connected.
  • Supports username or email copy, password visibility, access-key visibility, keyboard focus, inline feedback, and responsive layout.
  • Keeps the complete current theme and extension catalog visible while disconnected.
  • Removes the retired Post Your Need catalog item and asset while retaining legacy installed-product detection compatibility.

Add-ons catalog

  • Adds All, Extensions, and Themes tabs with live counts.
  • Adds Installed, Not installed, Updates, and Required filters.
  • Adds scoped search across title, description, type, status, version, and badges with matching text highlights.
  • Displays normalized product badges and optional expiration-aware structured badge data.
  • Shows installed and available versions where the data exists.
  • Uses explicit Install, Activate, Update, Settings, Demo, View Details, Customize, and marketplace actions.
  • Keeps destructive Delete plugin behavior in the overflow menu with confirmation.
  • Requires explicit confirmation before switching the live WordPress theme.
  • Labels non-Directorist active themes as WordPress themes instead of presenting them as Directorist products.
  • Adds local fallback entries and images for Notifications Pro and Divi Integration.

Selection and bulk actions

  • Renders a stable selection column for every row.
  • Disables selection only when no safe bulk operation exists.
  • Selects visible eligible rows through the master checkbox.
  • Calculates bulk actions from the union of selected item capabilities.
  • Shows the number of eligible items for each action.
  • Skips unsupported selected items instead of blocking the entire operation.
  • Preserves the established install, update, activate, deactivate, and uninstall AJAX actions.

Required extensions

  • Restores the theme-required-extension journey through the redesigned catalog.
  • Maps the legacy required-extension anchor to Add-ons, Extensions, and Required.
  • Merges required, subscription, installed, and marketplace metadata into one canonical row.
  • Reuses existing product and action contracts instead of rendering a second legacy table.

Connected Dashboard

  • Adds authoritative licensing-owner welcome and plan copy with safe generic fallbacks.
  • Uses configured Directorist View listings and Add listing URLs.
  • Adds a real setup checklist based on directory types, categories, payment gateways, and published listings.
  • Adds dynamic listing, view, review, expiration, and paid-order summary data.
  • Adds real Recent Activity for listings, reviews, payments, user registrations, and listing expirations.
  • Provides a lazy activity drawer with filters and explicit pagination.
  • Adds directory-aware Quick Actions with builder deep links.
  • Adds directory-aware extension recommendations with deterministic rotation, manual navigation, pause behavior, reduced-motion support, and API/filter override points.
  • Keeps recommendation actions tied to canonical installed, active, entitled, and marketplace product state.

Builder integration

  • Supports stable hash-based navigation to requested Directory Builder sections.
  • Carries the selected directory type into admin Add Listing where applicable.
  • Uses the directory-type overview for multi-directory setup and the layout builder for single-directory setup.

Notifications and account menu

  • Removes the unused header search control.
  • Adds a click-controlled account menu with connected status, account counts, Refresh Purchases, and Disconnect.
  • Adds update notifications that route directly to the Updates filter.
  • Keeps dropdown focus, Escape, outside-click, and close/back behavior accessible.

Compatibility And Safety

  • Preserves the page slug, capability, AJAX action names, nonce action, filters, aliases, settings links, and legacy selectors.
  • Preserves legacy user meta, including _atbdp_has_subscriptions_sassion.
  • Keeps server-rendered PHP as the canonical fallback.
  • Keeps existing full-reload fallback behavior for expensive remote and filesystem operations.
  • Treats local WordPress plugin/theme state as canonical after install, update, activation, deletion, or theme switching.
  • Does not introduce a new framework, persistence layer, migration, feature flag, or rollout system.
  • Does not store runtime account values, entitlement snapshots, product counts, credentials, or customer data in documentation.
  • Does not include unrelated generated assets/build/** output.

Documentation

Adds a repo-local Themes & Extensions skill with:

  • Architecture and page ownership map.
  • Dynamic data contracts.
  • Account and licensing journeys.
  • API and product data flow.
  • Licensing PRD.
  • Cross-repository licensing integration map.
  • Performance and no-reload guidance.
  • Rewrite issue register.
  • Current implementation decisions.
  • Desktop/mobile and state-matrix QA checklist.

The public documentation contains compatibility contracts and defensive requirements only. It does not expose credentials, secret values, private customer data, or a concentrated list of private-service weaknesses.

Verification

  • PHP syntax checks passed for:
    • includes/classes/class-extension.php
    • includes/classes/class-extension-activity.php
    • includes/classes/class-extension-recommendations.php
    • includes/classes/class-metabox.php
    • views/admin-templates/theme-extensions/theme-extension.php
  • JavaScript syntax checks passed for the page runtime and legacy subscription handler.
  • npm run build-legacy completed successfully.
  • The legacy build reported only existing Sass/flex support and bundle-size warnings.
  • git diff --check passed for the committed source set.
  • Repo-local skill validation passed.
  • Connected and disconnected desktop/mobile flows were visually inspected during implementation.
  • Install, update, activate, deactivate, uninstall, disconnect, refresh, and theme-switch actions were not run destructively during browser QA.

CI note

The upstream PHPCS workflow currently fails before installing dependencies or running PHPCS because its pull_request_target checkout refuses fork PR code unless allow-unsafe-pr-checkout is explicitly enabled. This is a repository workflow policy/error for fork PRs, not a PHPCS result from this branch. The source-level PHP syntax, JavaScript syntax, legacy production build, and whitespace checks listed above were run locally.

Deployment Notes

  • Existing core clients remain compatible with the legacy licensing endpoint.
  • Access-key connection requires the corresponding Directorist License Manager and User Dashboard support on Directorist.com.
  • Account summary and avatar fields are optional; older API responses continue to render generic connected-account messaging.
  • Product badges and recommendation metadata remain optional API/filter fields with local compatibility fallbacks.
  • No database migration is required.

Redesign the Themes & Extensions admin surface with the new connected and disconnected page shell while preserving the existing page slug, AJAX action names, product filters, and subscription/user-meta contracts.

Add page-scoped CSS/JS for dashboard/add-ons view switching, account dropdown behavior, searchable/highlighted product rows, compact badges, responsive bulk actions, and safer connected/disconnected product actions.

Add local fallback entries and images for Directorist Notifications Pro and Directorist Divi Integration, plus badge normalization support for scalar and structured API badge data.

Document the architecture, API, licensing, badge, safety, and current implementation decisions in the repo-local Themes & Extensions skill references.

Generated assets/build files are intentionally excluded from this commit.
Redesign the account-connected dashboard and add-ons catalog with responsive product rows, filters, bulk actions, required-extension routing, account controls, access-key authentication, and dynamic licensing-owner plan data.

Add real activity feeds, directory-aware quick actions and recommendations, WordPress theme labeling, update notifications, and compatible builder deep links while preserving existing AJAX actions, nonces, legacy user meta, install/update flows, and disconnected behavior.

Document the cross-repository licensing boundaries, API normalization, local cache, security requirements, QA matrix, and implementation decisions without storing customer credentials or runtime account data.
@RabbiIslamRony

Copy link
Copy Markdown
Member Author

Superseded by #2932 after renaming the branch to improve/themes-extensions-admin-dashboard.

@RabbiIslamRony
RabbiIslamRony deleted the codex/directorist-themes-extensions-page-skill branch July 23, 2026 12:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant