Expand my Community achievements bar.

SOLVED

WCMMODE Tag deprecation in AEM 6.2 upgrade

Avatar

Level 1

Hi,

I tried to use WCMMODE tag in AEM 6.2 and it is not working as expected. we are upgrading from CQ 5.6.1 to AEM 6.2. wcmmode tags are working as expected in cq5.6.1. but here in aem 6.2 it is not working.

<%@ taglib prefix="wcmmode" uri="http://www.adobe.com/consulting/acs-aem-commons/wcmmode" %>

<wcmmode:edit>

This will be output in EDIT mode.

</wcmmode:edit>

Some suggested me to use HTL, Is there anything other than this solution? because at this point of time it was a much more effort for dev and test and also. So I am looking for an alternate approach that anyone can suggest.

Thanks.

1 Accepted Solution

Avatar

Correct answer by
Administrator

JAVA:-

    /** @return true if we are in edit mode, otherwise false */

    public final boolean isEditMode() {

        return WCMMode.fromRequest(getRequest()) == WCMMode.EDIT;

    }

JS:-

function CustomWCMMode() {

  this.isPublish = function() {

   return (!ContextHub.Utils.Cookie.exists('wcmmode'));

  }

  this.isEditMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'edit');

  }

  this.isPreviewMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'preview');

  }

  this.isDesignMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'design');

  }

};

var customWcmMode = new CustomWCMMode();

HTL:-

Edit :   ${wcmmode.edit}

This will help you.

~kautuk



Kautuk Sahni

View solution in original post

5 Replies

Avatar

Level 10

In AEM 6.2 - HTL is the best practice - JSP and tag libs are not best practice anymore.

Avatar

Level 1

Thanks for the response smacdonald2008​. But unfortunately at this point of time I can't change the whole code. So I am asking if there is any other way to get this issue resolved, this tags are causing major impact in authoring.

So, I am looking for an alternate approach available if any.

Avatar

Level 10

Hi Mahesh,

Instead of acs commons taglibs, use directly this API in  your JSP and get the runmode

com.day.cq.wcm.api.WCMMode

something like this

<%

boolean isEdit = WCMMode.fromRequest(request) == WCMMode.EDIT;

boolean isDesign = WCMMode.fromRequest(request) == WCMMode.DESIGN;

%><c:set var="isEdit" value="<%= isEdit %>" /><c:set var="isDesign" value="<%= isDesign %>" />

Avatar

Employee

In HTL you can do the following:

<sly data-sly-test="${wcmmode.edit}">

This will be output in EDIT mode.

</sly>

No need for taglibs etc anymore.

Avatar

Correct answer by
Administrator

JAVA:-

    /** @return true if we are in edit mode, otherwise false */

    public final boolean isEditMode() {

        return WCMMode.fromRequest(getRequest()) == WCMMode.EDIT;

    }

JS:-

function CustomWCMMode() {

  this.isPublish = function() {

   return (!ContextHub.Utils.Cookie.exists('wcmmode'));

  }

  this.isEditMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'edit');

  }

  this.isPreviewMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'preview');

  }

  this.isDesignMode = function() {

   return (ContextHub.Utils.Cookie.getItem('wcmmode') === 'design');

  }

};

var customWcmMode = new CustomWCMMode();

HTL:-

Edit :   ${wcmmode.edit}

This will help you.

~kautuk



Kautuk Sahni