Modernize the UI for managing extensions.

Review Request #11044 — Created June 17, 2020 and submitted

chipx86
Djblets
release-2.0.x
11045
djblets

This is a complete design refresh for the extension UI. It makes use of
the config forms CSS components to provide a list of extensions that's
more in line with the look and feel of the integrations list, amongst
other bits of UI we're assembling, and presents information on the
extensions in a much clearer way than the old UI.

The new extension list presents each item as a row with three columns.
The first column contains all the extension metadata (summary, version,
author, description, load errors). The second column contains the status
(Enabled, Disabled, Error). The third column contains a vertical list of
actions that can be performed (Enable/Disable/Reload, Configure,
Database).

Above the list of extensions is a list of actions. This will always show
a "Reload Extensions" (replacement for "Scan for installed extensions").
If settings.DJBLETS_EXTENSIONS_BROWSE_URL is set, this will also
include a "More Extensions" button that navigates to that page. In the
process, the old template block for adding this sort of action has been
removed.

This new layout reduces the visual noise of the old layout, and makes it
easier to see and manage the states of all extensions.

The old template assumed it would be shown in the administration UI,
with standard Django administratino UI conventions. We still have a
template for that, but the meat of the new UI is in a reusable "parts"
template that can be embedded into any page.

Tested extensions in all possible states.

Tested the More Extensions and Reload Extensions buttons.

JavaScript and Python unit tests passed.

Summary
Modernize the UI for managing extensions.
Loading file attachments...

Description From Last Updated

The spec isn't clear, but I don't think it's supposed to allow returning multiple values through either resolve or reject. ...

daviddavid

Same here re: multiple values and errorRsp.

daviddavid
david
  1. 
      
  2. The spec isn't clear, but I don't think it's supposed to allow returning multiple values through either resolve or reject. If we want to have multiple values, I think they need to be wrapped in an array and can be destructured on the other end.

    I also can't find where errorRsp comes from. Was that supposed to be errorPayload (which RB.apiCall creates)?

    1. errorRsp is set in InstalledExtension.sync(). So it's just locally-defined. We can't depend on RB.apiCall(), since this is in Djblets.

      Fixing up the reject bit.

  3. Same here re: multiple values and errorRsp.

  4. 
      
chipx86
david
  1. Ship It!
  2. 
      
chipx86
Review request changed

Status: Closed (submitted)

Change Summary:

Pushed to master (8596daa)
Loading...