Issue with wcmmode=disabled | Community
Skip to main content
rupalig70586203
Level 2
Oct 4, 2018 12:37 PM UTC
Solved

Issue with wcmmode=disabled

We have a requirement that when page is opened with query parameter wcmmode=(disabled | preview), then links on that page should also open in same mode.

Does anyone know how to achieve this?

Its working as expected for wcmmode=preview, but for wcmmode=disabled all the links on that page are opening in preview mode.

Any pointers would be helpful.

Thanks!

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
raj_mandalapu
raj_mandalapuAccepted solution
Level 7
Oct 4, 2018 2:25 PM UTC

I think the below design should help you

You need to rewrite all href link on the page by appending wcmmode=disabled,

  • Create a Transformation class and extend it from the org.apache.cocoon.xml.sax.AbstractSAXPipe
  • In the startlement iterate all attributes of element
  • Find href link
  • Check if it contains query string with wcmmode=disabled
  • if so then rewrite url
  • finally assign back to href

Check below sample code :

   public void startElement(String uri, String loc, String raw, Attributes attributes) throws SAXException {

        AttributesImpl attrs = new AttributesImpl(attributes);

     

            for (int i = 0; i < attrs.getLength(); i++) {

                String name = attrs.getLocalName(i); 

                if(name.equals("href"))

                {

                    String url = attrs.getValue(i);

                    // write an if condition to check url endwith wcmmode or not

                    / if so then rewrite th url something like below

                    url = "http://keysandstrokes.info?wcmmode=disabled";

                    //finally set value back to the href attribute

                    attrs.setValue(i, url);                        

                }

            }

       

        super.startElement(uri, loc, raw, attrs);

       

    }

Example: you can use it as it is by applying your logic in the start element

http://keysandstrokes.info/apache-sling-rewriter-how-to-rewrite-urls-in-aemcq5/

Approach 2:

You can also do this using Jquery, but you must have knowledge of it. Using Jquery find out all href links and rewrite it, this is simple than approach 1 and it will not put any burden on the server as it is authoring environment so we can consider this. the Jquery should load at end of the page once the entire DOM is loaded.

You need to load Jquery only in author mode don't execute on publish mode.

Approach 3 :

Check is there any OOTB functionality available or not, if not then try above approaches.

13 replies

New Participant
Aug 23, 2019 4:35 AM UTC

Hi
Just wanted to know
is AEM 6.5 is unstable?
I am trying to create the form and integrate with the REST endpoint , via email, pdf, prefill adaptive forms.
Nothing is working out for some reason.
is 6.5 not stable?

Thanks

Translate
raj_mandalapu
Level 7
Oct 4, 2018 4:05 PM UTC

As per Scott there is no ootb functionality

Translate
rupalig70586203
Level 2
Oct 4, 2018 4:00 PM UTC

Thanks rajas66269496​!

I am looking for OOTB feature to do this..

Translate
raj_mandalapu
Level 7
Oct 4, 2018 2:32 PM UTC

Actually, I feel this is also a good requirement without replicating to publish environment you can check it on author instance itself, this is very useful when you want to make authoring productivity high

Translate
VeenaVikraman
New Participant
Oct 4, 2018 2:29 PM UTC

You can try out Rajas approaches if its a real need. Recommend not to do such customization as you have a publish whose job is to render your final content . Its always best to verify content of any working page in preview mode and then publish it and verify the final content in your publish.

Translate
raj_mandalapu
raj_mandalapuAccepted solution
Level 7
Oct 4, 2018 2:25 PM UTC

I think the below design should help you

You need to rewrite all href link on the page by appending wcmmode=disabled,

  • Create a Transformation class and extend it from the org.apache.cocoon.xml.sax.AbstractSAXPipe
  • In the startlement iterate all attributes of element
  • Find href link
  • Check if it contains query string with wcmmode=disabled
  • if so then rewrite url
  • finally assign back to href

Check below sample code :

   public void startElement(String uri, String loc, String raw, Attributes attributes) throws SAXException {

        AttributesImpl attrs = new AttributesImpl(attributes);

     

            for (int i = 0; i < attrs.getLength(); i++) {

                String name = attrs.getLocalName(i); 

                if(name.equals("href"))

                {

                    String url = attrs.getValue(i);

                    // write an if condition to check url endwith wcmmode or not

                    / if so then rewrite th url something like below

                    url = "http://keysandstrokes.info?wcmmode=disabled";

                    //finally set value back to the href attribute

                    attrs.setValue(i, url);                        

                }

            }

       

        super.startElement(uri, loc, raw, attrs);

       

    }

Example: you can use it as it is by applying your logic in the start element

http://keysandstrokes.info/apache-sling-rewriter-how-to-rewrite-urls-in-aemcq5/

Approach 2:

You can also do this using Jquery, but you must have knowledge of it. Using Jquery find out all href links and rewrite it, this is simple than approach 1 and it will not put any burden on the server as it is authoring environment so we can consider this. the Jquery should load at end of the page once the entire DOM is loaded.

You need to load Jquery only in author mode don't execute on publish mode.

Approach 3 :

Check is there any OOTB functionality available or not, if not then try above approaches.

Translate
smacdonald2008
Level 10
Oct 4, 2018 2:21 PM UTC

As other community members point out - this is not OOTB. 

Translate
rupalig70586203
Level 2
Oct 4, 2018 2:07 PM UTC

Yes.. This is business requirement.

Translate
raj_mandalapu
Level 7
Oct 4, 2018 2:02 PM UTC

You can do this with customization but before that please check once is it really required? if so I can put a design for this.

Translate
rupalig70586203
Level 2
Oct 4, 2018 1:55 PM UTC

AEM 6.4

Translate