Hi Everyone,
page Link: http://localhost:4502/editor.html/content/proj/in/en.html
http://localhost:4502/content/proj/in/en.html
I need to find which is edit mode page(editor.html) and without editor.html one, technically both are editor page only but still I have find it. I have tried with couple of things mentioned below but didn't worked.
window.Granite.author - this will come in both pages
window.Coral & window.Granite.DialogUtils - this will come only in editor.html page but it's not working because project client lib js loading before aem server script loading
Many identifications are there in editor.html it will work if we are checking in browser console, but via ui code it wont' work because before granite server script loading our client lib script will load quickly.
It will be better if you guys helped me on this, I have refered many things but nothing helped me. Thanks in advance.
CC: @arunpatidar @aanchal_sikka @BrianKasingli
Views
Replies
Total Likes
If sightly would suffice the requirement,
<div data-sly-test="${wcmmode.edit}" class="abcd xyz myclass"> ..context here.. </div>
<div data-sly-test="${wcmmode.preview || wcmmode.disabled}" class="abcd_prod xyz2_prod myclass2_prod"> ....context here... </div>
For JS, please check if this thread helps https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/find-authoring-modes-using...
Also, I would suggest to use http://localhost:4502/content/proj/in/en.html?wcmmode=disabled
The AEM's switcher for edit and preview mode appends the wcmmode query param. Else, it would still recognize it as "In Edit Mode"
wcmmode=disabled I can find easily, but I have to identify the page of editor.html and non editor.html only so using htl it will not work. Using window Objects also not helping much. It's there any other possibilities?
below point I agree ideally we should go with this way but still we are trying to identify within those pages- Also, I would suggest to use http://localhost:4502/content/proj/in/en.html?wcmmode=disabled
Views
Replies
Total Likes
Hi @Jerome_Lesly_v ,
Could you plz add more info like- condition check required in some js (frontend ) or java code.
Thanks,
Views
Replies
Total Likes
js or java anywhere is fine, but comparsion should be between below page
Views
Replies
Total Likes
Since you are using JS ideally, following should have worked
$(document).ready(function() {
if (window.location.href.indexOf("editor") > -1) {
alert("your url contains the name editor");
}
});
Views
Replies
Total Likes
Hi @Jerome_Lesly_v
AEM doesn't provide ootb method. AEM treats edit mode by default if we don't put wcmmode=disabled explicitly in query Param
Below logic fits for yours use case.
@SlingObject
SlingHttpServletRequest slingRequest;
public boolean getRefererEditor(){
String referer=slingRequest.getHeader("Referer");
return referer != null && !referer.isBlank() && referer.contains("editor.html");
}
Sightly
<p>Is Referer Editor ${model.refererEditor}</p>
Views
Replies
Total Likes
It won't work right, because what if I directly lands to http://localhost:4502/editor.html/content/proj/in/en.html this page, it will not have any referrer. Correct me If I am wrong
Views
Replies
Total Likes
It will have, I replied after testing only.
Actually in editor.html case our component load from iframe so it will have referrer.
Thanks,
Views
Replies
Total Likes
Views
Replies
Total Likes
You may add one more condition,
if (mode== edit && referer==editor.html) ==> then its (logical edit mode)
else other mode
Note:- Additional check is required because when we do View as Published-
mode will be disabled but referrer will be still editor.html
Views
Replies
Total Likes
Hi @Jerome_Lesly_v ,
Even If you directly lands up on http://localhost:4502/editor.html/content/proj/in/en.html still it will have referrer because our component get called(loads) in iFrame whose referrer will be editor.html
Views
Replies
Total Likes
Hi @Jerome_Lesly_v
You can try to look for a 'aem-AuthorLayer-Edit' class, it is availble only in EDIT mode.
I have already tried with root html element's class name it's not working because client side script is loading before server side script render
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies