Skip to content

fix(integrations): redesign integrations list table - #3184

Closed
faisalahammad wants to merge 1 commit into
gocodebox:devfrom
faisalahammad:fix/3150-integrations-table-redesign
Closed

fix(integrations): redesign integrations list table#3184
faisalahammad wants to merge 1 commit into
gocodebox:devfrom
faisalahammad:fix/3150-integrations-table-redesign

Conversation

@faisalahammad

@faisalahammad faisalahammad commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Replaces the Integration ID column in the LifterLMS settings Integrations table with a Description column (short blurb + Learn More link) and adds a new Configured column that indicates when an integration's required credentials are present.

Fixes #3150

Changes

includes/abstracts/llms.abstract.integration.php

Added three new public extension points so add-ons can declare their own configuration state and docs link without changing signatures.

public $learn_more_url = '';
public $configured_help = '';
public function is_configured() { return true; }

Why: add-ons need a way to tell the table whether keys have been provided, and where to send users for setup docs. Defaults preserve backward compatibility for any existing integration extending the abstract.

includes/integrations/class.llms.integration.bbpress.php and class.llms.integration.buddypress.php

Split the existing inline Learn More HTML out of $description into $learn_more_url, and added an is_configured() override returning true (no API keys required).

$this->description    = __( 'Restrict forums and topics to memberships and add forums to courses.', 'lifterlms' );
$this->learn_more_url = 'https://lifterlms.com/docs/lifterlms-and-bbpress/';

public function is_configured() { return true; }

Why: the previous $description was a single HTML blob with the docs link baked in. Splitting it lets the table render the blurb and the link independently and keeps the description clean for the per-integration settings page title.

includes/admin/settings/class.llms.settings.integrations.php

Replaced the Integration ID <th>/<td> with a Description cell and added a new Configured column between Installed and Enabled.

Before:

<th><?php esc_html_e( 'Integration ID', 'lifterlms' ); ?></th>
...
<td><?php echo esc_html( $integration->id ); ?></td>

After:

<th><?php esc_html_e( 'Description', 'lifterlms' ); ?></th>
...
<td>
    <?php echo wp_kses_post( $integration->description ); ?>
    <?php if ( ! empty( $integration->learn_more_url ) ) : ?>
        <a href="<?php echo esc_url( $integration->learn_more_url ); ?>" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Learn More', 'lifterlms' ); ?></a>
    <?php endif; ?>
</td>

The Configured column follows the same tip--bottom-right / screen-reader-text / fa fa-check-circle pattern as Installed and Enabled. When is_configured() returns false, the cell shows a dash and uses $configured_help as the tooltip text (or Not configured if no help was set).

Testing

Test 1: bbPress row

  1. Activate bbPress alongside LifterLMS.
  2. Go to LifterLMS -> Settings -> Integrations.

Result: bbPress row shows the short blurb, a Learn More link opening https://lifterlms.com/docs/lifterlms-and-bbpress/ in a new tab, and checks in both Installed and Configured columns.

Test 2: BuddyPress row

  1. Activate BuddyPress.
  2. Reload the Integrations page.

Result: BuddyPress row shows its blurb, Learn More link, and both Installed and Configured checks.

Test 3: Inactive integration

  1. With neither bbPress nor BuddyPress active, reload the page.

Result: rows render with the Integration ID column gone, Description populated, and the Installed/Configured columns showing dashes with tooltips.

Test 4: Coding standards

  • vendor/bin/phpcs and vendor/bin/phpcs --error-severity=1 --warning-severity=6 both clean on the four modified files.
  • php -l clean on all four.

Replace the 'Integration ID' column with a 'Description' column that shows
a short blurb and a 'Learn More' link, and add a new 'Configured' column
to indicate when an integration's required credentials are present.

Adds $learn_more_url, $configured_help, and is_configured() to the
LLMS_Abstract_Integration class so add-ons and core integrations can
declare configuration state. Core bbPress and BuddyPress integrations
split their existing inline learn-more link out into $learn_more_url and
override is_configured() to return true (no API keys required).

Fixes gocodebox#3150
@faisalahammad
faisalahammad requested a review from brianhogg as a code owner June 15, 2026 20:04
@brianhogg brianhogg moved this to Awaiting Review in Development Jun 15, 2026
@brianhogg

Copy link
Copy Markdown
Contributor

@faisalahammad Thanks but for this feature request issue, "Installed" is basically already "Configured" for addons, so we don't need or want a new "is_configured" method that would need to be overridden. I'll close this for now as this issue will potentially need some coordination between the add-ons. We also have an internal task to decide the wording for each add-on.

As a general note we can't hard-code version numbers, it needs to be [version]

@brianhogg brianhogg closed this Jul 20, 2026
@github-project-automation github-project-automation Bot moved this from Awaiting Review to Done in Development Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants