Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Layout Manager #120

Comments

@srenault-meeds
Copy link
Collaborator

srenault-meeds commented Feb 21, 2024

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:

  • manage sites
  • manage navigation
  • manage nodes
  • manage pages

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
  1. 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)

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

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

image
  1. 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
  1. 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:

  • Bad UX: Loading two different pages at the same time display the same page at both Browser tabs
  • Performances: first Loading of pages are very slow (gtmpl files compilation)
  • Bad Developer Experience & Learning Curve & Maintainability: the WebUI is a custom framework which isn't documented, thus which offers a Bad Developer Experience

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:

  • Load the Content through a REST API call
  • Load the Content directly when accessing the page by with a different engine which uses:
    • Gtmpl: this will ease the migration but will reduce the maintainability and productivity on the product
    • Html & JSP: this will require an extra effort for migration which is quite difficult but it will improve the first page loading after startup and this will improve and ease the maintainability of the product.
      At this stage, no study was made yet, thus we will keep the first choice for now, in order to bring the feature to end users ASAP. After this, a dedicated technical study can start, when the WebUI isn't used anymore in all product(s), which will make the transition and migration easier (instead of an Hybrid system between WebUI and no WebUI).

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
Copy link
Collaborator Author

@margondicco to check please

@boubaker boubaker self-assigned this Feb 23, 2024
@boubaker
Copy link
Member

@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)

@boubaker boubaker removed their assignment Feb 23, 2024
@margondicco
Copy link

Hello Go fonc Good job !

@srenault-meeds
Copy link
Collaborator Author

Thanks!
@boubaker your turn :)

@boubaker
Copy link
Member

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

boubaker added a commit to Meeds-io/meeds that referenced this issue Feb 26, 2024
boubaker added a commit to Meeds-io/meeds that referenced this issue Feb 26, 2024
boubaker added a commit to Meeds-io/gatein-portal that referenced this issue Feb 26, 2024
Prior to this change, when a node page references itself as root node, a StackOverflow Error is observed while copying node.
boubaker added a commit to Meeds-io/gatein-portal that referenced this issue Feb 26, 2024
Prior to this change, when a node page references itself as root node, a
StackOverflow Error is observed while copying node.
boubaker added a commit to Meeds-io/meeds that referenced this issue Feb 26, 2024
boubaker added a commit to Meeds-io/meeds that referenced this issue Feb 26, 2024
rdenarie pushed a commit to Meeds-io/meeds that referenced this issue Apr 26, 2024
To be able to add system navigations, the globl site has to be made accessible anonymously, knowing that each page will define its permission to allow to access its content or not.
rdenarie pushed a commit to exoplatform/commons-exo that referenced this issue Apr 26, 2024
…eeds-io/MIPs#120 (#35)

This change will fix the usage of `require` method to make it **non** contextual by prefixing it using `window.`. In addition , this will enhance the WebUI Ajax queries update to allow updating the editing portlet instead of the displayed portlet when both are present in the same page.
rdenarie pushed a commit to exoplatform/ecms that referenced this issue Apr 26, 2024
… - MEED-5649 - Meeds-io/MIPs#120 (#2346)

This change will override CSS inherited from Vuetify to ensure WebUI form inputs preserve its display style.
rdenarie pushed a commit to exoplatform/digital-workplace that referenced this issue Apr 26, 2024
rdenarie pushed a commit to exoplatform/digital-workplace that referenced this issue Apr 26, 2024
rdenarie pushed a commit to exoplatform/digital-workplace that referenced this issue Apr 26, 2024
…24 - Meeds-io/MIPs#120 (#125)

Prior to this change, each public site had to define its own news page detail in order to access to a news detail. This change moves the news detail page into global site to make the news detail page accessible from any site.
rdenarie pushed a commit to exoplatform/news that referenced this issue Apr 26, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
rdenarie pushed a commit to exoplatform/news that referenced this issue Apr 26, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
rdenarie pushed a commit to exoplatform/data-upgrade that referenced this issue Apr 26, 2024
exo-swf pushed a commit to Meeds-io/social that referenced this issue Apr 26, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
ahamdi added a commit to exoplatform/platform-public-distributions that referenced this issue Apr 27, 2024
…ds-io/MIPs#120 (#283)

* Remove old layout management addon dependency

* remove addon installation from packaging
exo-swf pushed a commit to Meeds-io/social that referenced this issue Apr 27, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
exo-swf pushed a commit to Meeds-io/social that referenced this issue Apr 29, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
azayati pushed a commit to Meeds-io/content that referenced this issue Apr 30, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
azayati pushed a commit to Meeds-io/content that referenced this issue Apr 30, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
azayati pushed a commit to Meeds-io/content that referenced this issue Apr 30, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
azayati pushed a commit to Meeds-io/content that referenced this issue Apr 30, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
exo-swf pushed a commit to Meeds-io/social that referenced this issue Apr 30, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
exo-swf pushed a commit to Meeds-io/social that referenced this issue May 2, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
exo-swf pushed a commit to Meeds-io/social that referenced this issue May 2, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
exo-swf pushed a commit to Meeds-io/social that referenced this issue May 3, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
SaraBoutej pushed a commit to Meeds-io/social that referenced this issue May 3, 2024
…eds-io/MIPs#120 (#3710)

Prior to this change, each widget had to invoke the same instructions to
hide/display hiddenable widgets. This change will ensure to centralize
the behavior to improve evolutivity and maintainability. In addition,
this will change the behavior to apply the `hidden` class on the parent
element of the portlet instead of a child in order to allow disable Grid
gap in new layout management addon.
azayati pushed a commit to Meeds-io/content that referenced this issue May 6, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
azayati pushed a commit to Meeds-io/content that referenced this issue May 6, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
azayati pushed a commit to Meeds-io/content that referenced this issue May 6, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
azayati pushed a commit to Meeds-io/content that referenced this issue May 6, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
exo-swf pushed a commit to Meeds-io/content that referenced this issue May 7, 2024
Prior to this change, a 'displayTopBarLoading' is initiated by application without a corresponding 'hideTopBarLoading' to stop loading effect. This change will delete the display of page global loading effect and rely instead of the internal loading effect added inside the application while loading the news list.
exo-swf pushed a commit to Meeds-io/content that referenced this issue May 7, 2024
…eeds-io/MIPs#120

Before this change, some errors are logged in Layout management UI when adding and removing the News List application multiple times. This change ensures to delete listeners on unmount and to make sure that the settings drawer is displayed even in a sticky container.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment