Giter Club home page Giter Club logo

etoolbox-rollout-manager's Introduction

EToolbox Rollout Manager

GitHub contributors GitHub Repo stars GitHub Repo forks GitHub issues License

EToolbox Rollout Manager is a tool for Adobe Experience Manger (AEM) allowing to roll out changes to multiple levels of live relationships simultaneously.

Description

EToolbox Rollout Manager is a comprehensive AEM tool meant for AEM website content managers and QA departments. The Rollout Manager can help users roll out changes and updates across multiple levels of AEM live copies. In other words, users can synchronize content in all necessary live copies simultaneously instead of doing so manually for every individual page. Not only does Exadel Rollout Manager reduce the manual effort needed to apply all changes, but it also presents all updates through a user-friendly interface.

overview

System Requirements

AEM 6.5 AEM 6.4 Java SE Maven
6.5.5.0+ 6.4.8.1+ 8, 11 3.3.9+

Installation

The tool can be installed using the package or via building the project.

Package

  1. Get the latest package version from https://github.com/exadel-inc/etoolbox-rollout-manager/releases
  2. Install the package etoolbox-rollout-manager.all-XX.zip using the Package Manager
  3. Ensure that the bundle EToolbox Rollout Manager - Core (etoolbox-rollout-manager.core) is in Active state.
  4. Ensure the nodes /content/etoolbox-rollout-manager/servlet and /apps/wcm/core/content/sites/jcr:content/actions/selection/rollout are present.

How to build

Run the following command in the project root directory to build all the modules and deploy the all package to a local instance of AEM:

mvn clean install -PautoInstallSinglePackage

Getting Started

  1. Go to Sites and select a page to be rolled out.

    get-started-1

  2. Click the Rollout button in the action bar.

  3. Select target paths and check the Include subpages if necessary, click Rollout in the dialog.

    get-started-2

Features

Toolbar button

The Rollout button is added to the Sites action bar:

toolbar

The button is active if the conditions listed below are satisfied.

Button active conditions

  • Single selection.
  • Selected page has live relationships.
  • Parent page of the selected page must exist under at least one live relationship (i.e target) path.

Loader before the dialog shows

Foundation UI's wait() function is used to show a wait mask before the dialog is loaded. The delay may be caused by collecting target paths and vary depending on the live copies structure complexity.

wait-mask

Target paths

The list of live relationships is collected recursively for the selected page and transformed to target paths. First, the live relationships for the current page are fetched, then for each live relationship the process of fetching is repeated, until relationships for all levels are collected.

targets

Exclusions

  • If a live copy was created with the property Exclude sub pages enabled, or the live copy the has the property Live Copy Inheritance disabled in page properties, rollout/synchronization for child pages won't be available.

    exclude-subpages

    inheritance-disabled

    Let's suppose there are a blueprint page /content/we-retail/language-masters/en and its child /content/we-retail/language-masters/en/experience. The blueprint /content/we-retail/language-masters/en has a live copy /content/we-retail/ca/en, and the child's live relationship is /content/we-retail/ca/en/experience. Presuming that the live copy /content/we-retail/ca/en has the property Live Copy Inheritance disabled, /content/we-retail/ca/en/experience won't be present in the Target paths for /content/we-retail/language-masters/en/experience.

    inheritance-disabled-example

  • If a page is in a live copy exclusions, synchronization of the page won't be available under this live copy path. In the example above if the page /content/we-retail/ca/en/experience is deleted, the path experience will be added to the exclusions set of /content/we-retail/ca/en. Thus, /content/we-retail/ca/en/experience won't be present in the Target paths for /content/we-retail/language-masters/en/experience.

Nested checkbox tree

The checkbox tree is built based on nested Coral.Accordion widgets in conjunction with Coral.Checkbox. The tree is scrollable.

Checkboxes states

  • 3 states for a checkbox if contains children: check itself + check children > check itself + uncheck children > uncheck itself
  • 2 states for a checkbox if no children: check > uncheck
  • in addition, checking the current checkbox also checks all parent checkboxes, since it shouldn't be possible to rollout child path w/o rolling out parent target paths

Select/Unselect all

The button allows to select or unselect all target paths. The button label is changed accordingly (Select all > Unselect all).

select-all

unselect-all

Not Rolled Out label

The Not Rolled Out label is shown if a selected page doesn't exist under a target path and will be created during a rollout process.

new-label

Selection validation

The Rollout button is disabled if no target paths are selected.

validation

Rollout

Include subpages

The option implies rolling out of all child pages along with the selected page to target paths (similarly to the Rollout page and all sub pages OOTB feature).

include-subpages

Rollout in progress

The message informing that the rollout process in progress is displayed after clicking the Rollout button.

rollout-in-progress

Success/Fail message

The message informing about the rollout process result is displayed after completion.

completed

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is available under the Apache License, Version 2.0.

etoolbox-rollout-manager's People

Contributors

adantsou avatar ala-n avatar dshovchko avatar github-actions[bot] avatar skoryuladzislau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

etoolbox-rollout-manager's Issues

[ERM-8] Offer to rollout the parent page/folder

As a Rollout Manager user,

I may sometimes want to rollout an exact page that is situated under another page. If the "parent" page is not rolled out, my operation over the "child" page would fail. Or else, the target tree for my child page would not evdent appear on the screen for selection. This can be embarassing for me if I'm not highly experiences in AEM MSM.

I would like Rollout Manager:

  • to detect if my page is under a non-rolled-out parent
  • to offer me (in a pop-up message) to rollout the parent page as well.

[ERM-7] Live log/status display of the rollout process

As a Rollout Manager user,
I would like to see the updates as to what page is being rolled out to what exact locale at this moment of time -- especially if the process takes tenths of seconds or minutes.
This can look somewhat similar to the live log screen area in the "classic" PackageManager or BackPack. Or else, it can be a "Windows Explorer progress bar-style"

[ERM-6] UI improvement: Reposition the "Select all" CTA

The main rollout dialog contains the "Select all" link. This link:

  • is displayed in bold and thus attracts attention as a "primary" element, but it is technically a minor service button
  • is aligned with the "tree" component and thus graps a lot of space in the right part of the dialog while the tree nodes get sometimes split across lines.
    We need to absolute-position the "Select all" link and, most probably, place it above the left side of the "tree" -- where the selection checkboxes are displayed

[ERM-5] A diagnostic tool on rollout problems (+ possibly, activation problems)

In real-world practice, a rollout fails from time to time with reason unknown to the operator. This can be due to:

  • missing or corrupt MSM configuration
  • missing jcr:content node in a target folder or one of the intermediate ones
  • an MSM config loop, and more
    Would like to have
  1. a success or failure message upon the rollout of a particular page
  2. either a diagnostic UI that analyses and reports possible rollout problems or detailed feedback on why the rollout failed in the very rollout UI, or both

[ERM-4] Implement the "Rollout and activate" action

On real-world terms, the rollout usually precedes the activation or re-activation of the rolled-out pages. It would be convenient to be able to perform the rollout and then publish the rolled-out content "in one click", Important: in multi-level MSM setup (such as "blueprint - regions - languages - countries") we often need to publish not every stage but only the "terminal" one (the "countries").

Would like: Implementation to include a feedback on the current stage of the processing

[ERM-9] Align visual identity with the rest of EToolbox projects

Currently, the Exadel EToolbox suite offers a separate sections in the AEM's "Welcome screen" left rail. Also, it aims to display icons of all the featured solutions in unified manner (see: EToolbox Lists, BackPack).

Need to: redesign the RolloutManager icon to fit in the same icon set, and accomodate it in the "Welcome Screen" section.
Additional concerns: The "preparation for AEMaaCS" audit tool reports an issue with the way the "Welcome screen" section is organized. Need to investigate a more compliant way in line with other popular tool suites for AEM.

[ERM-1] Detailed rollout time

As a user of this tool, I would like to see not only whether the page I have chosen has ever been downplayed or not. I would like to see how long ago the page was rolled out, and when hovering over this information, I would like to see the exact rollout time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.