Meeds-io / MIPs

The Meeds Improvement Proposal repository
0 stars 0 forks source link

Layout Manager #120

Closed srenault-meeds closed 2 months ago

srenault-meeds commented 4 months ago

Rationale

Using Meeds Software, it is not possible for the admin to edit any site, any navigation and thus any page. Yet, this becomes frustrating as we need to sometimes manage navigation or page layout to test a journey or to hilight a page.

1. Functional Requirements

Top User Stories

First, we will inheritate the Layout Management Addon from the eXo team so Meeds will have starting now this addon in the product. This means that any hub will be able to:

And, thus, with same UX / Functional specifications as it was identified before. Nothing is meant to be updated, excepted the layout manager.

Indeed, the layout manager will be fully revamped for a modern UX:

Precision: only admin will remain able to manage layout

  1. I add a page

  2. I choose the blank template

  3. A tab opens to allow me to manage the layout of the page

  4. By default, a section of 12 columns / 12 rows is provided

    image
  5. I can rearrange cells at my convenience

image image
  1. I can add section above, below and of course moving any section is possible

    selection of section type is needed (fixed or dynamic)

  2. I can edit the section to manage: display (rows, columns if fixed and columns only if dynamic)

  3. I can add an app in a cell, thanks to a revamped app registry

    image
  4. For each app, I can edit it: margins, height + advanced options (sticky, mobile view, dynamic app)

    Permissions for apps are equal to permissions of the page

Additionally, the first version of this Layout Manager will provide options to access and save templates

  1. Add the ability to choose a template when creating a page:*

    • Empty Template (Grid)
    • Empty Template (Columns)
    • Section and News Templates will be delivered by eXo as the News add-on is not available on Meeds Package template list
  2. Add the ability for admin to set a layout as a template

    • When adding / editing a page, I can decide to set is as template
    • Once requested, I have to identify characteristics: name, description, preview
    • Once confirmed, the template will be added in the template dropdown (after default templates, sorted alphabetically) For now, it will not be possible to edit, delete the template, neither add permissions

save as template

Impacts

Gamification

NA

Notifications

NA

Analytics

NA

Unified Search

NA

2. Technical Requirements

Expected Volume & Performance

Since this feature is exclusively used by administrators, the used data by this new layout editor shouldn't affect a lot the stored data size. The page loading shouldn't be affected by this change since it should be affect the page edition only.

Security

Only Site administrators should be able to access to page and site editor.

Upgradability

This data model should be preserved and only minor changes which doesn't require an Upgrade Plugin should be applied.

Existing Features

All other features should remain as is without being affected by the new page editor.

Feature Flags

No Feature flag is needed

Other Non Functional Requirements

In the context of current feature, it would be a opportinity to delete the usage of gtmpl and WebUI in pages. In fact, there are 3 drawbacks currently while using the current technology:

But this still isn't a main concern for this feature for now. It's important to consider that the page loading should be stateless and we have at least to delete the statefull mode of pages loading to enhance the UX (Point 1).

3. Software Architecture

Security

The usage of UserAcl service, Site and page permissions should remain as is. Thus, no need to change the current security model for pages Read & Write.

Access

The site and page content has to be loaded without WebUI in order to apply the new strategy of Stateless Mode, same as done for Site Navigation. This may be done by two ways:

Services & processing

Each page modeling/design should begin a draft page which will store periodically the changes made by the user and locks the page edition to inform other users that the same page edition is in progress. This lock should be kept active at most 10 minutes. When the UI is displayed, the lock time is updated each time the user makes a modification or each 2 minutes to make sure that the lock stay hold by the user. The lock shouldn't be a hard lock, and another user (with same privileges) should be able to force it if needed. Once the page is saved, the draft (TEMPORARY) page should be deleted.

srenault-meeds commented 4 months ago

@margondicco to check please

boubaker commented 4 months ago

@margondicco to check please

ok, I will wait for Go-func to submit for a Go-tech (@rdenarie in case you want to read the first tech spec version)

margondicco commented 4 months ago

Hello Go fonc Good job !

srenault-meeds commented 4 months ago

Thanks! @boubaker your turn :)

boubaker commented 4 months ago

Ready for tech review by DAO Members (eXo : @rdenarie )

rdenarie commented 4 months ago

go tech

srenault-meeds commented 2 months ago

FYI @margondicco I have updated the MIP description:

srenault-meeds commented 2 months ago

Proposal of Scope Extension, to be accepted by @margondicco:

See the description from this:

Additionally, the first version of this Layout Manager will provide options to access and save templates

Design will be added shortly

srenault-meeds commented 2 months ago

@margondicco GIF added to feature how to:

boubaker commented 2 months ago

Meeds PRs:

eXo PRs:

boubaker commented 2 months ago

MIP ready for review with ACCs up & running (eXo & Meeeds commits are referenced here)

rdenarie commented 2 months ago

Hello. Ok for me on tech side.