Theo_Pendle
Community profile Theo_Pendle MVP
Lead AEM Developer
Luxembourg
27 BADGES
MVP

MVP

Learn more
Joined the community 16-07-2018 12:59:37 PM
Offline
Top badges earned by Theo_Pendle
Customize the badges you want to showcase on your profile
Re: SlingServlet to handle GET requests from multiple extensions
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, You say it works fine for .pdf extensions, but could you be more specific about how it is failing for the others? Are you getting a 404 - Resource not found? Are you getting a 200 but an error during the execution of doGet()? Etc.Could you also give us an XML sample of the node structure under /content/rc/abs/en/membership/interviews/AESSVID0250 please? I think I have an idea but need more info

Views

2.9K

Like

1

Replies

5
Re: 6.4.x: How to display image path in component dialog?
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
If you are not getting the log in your console then your JS file is not being loaded. Did you maybe miss step 5 in the article you referenced?

Views

1.9K

Likes

0

Replies

0
Tutorial - AEM: Conditionally show or hide fields in TouchUI dialogs with Coral 3
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hello all,I've seen many people coming with questions about showing and hiding fields in component edit dialogs, based on user input. Well I've written a tutorial to explain hoow to do it using Coral 3!Here it is: https://levelup.gitconnected.com/aem-conditionally-show-or-hide-fields-in-touchui-dialogs-with-coral-3-ie-aem-6-3-bfd48c… I hope this can help people Theo Pendle

Views

1.0K

Likes

0

Replies

1
Re: Hide global-bar in editor.html
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Oops! It's a copy-paste error on my part!The line to delete is:

Views

6.6K

Like

1

Replies

1
Re: Hide global-bar in editor.html
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, can I just ask why you would want to do this?In any case, here is the answer:Removing all editor headersJaideepBrar​'s answer could work but if overlay these files you will be affecting all editors (for AEM Sites pages, but also in the template editor for example). If this is your aim, then the simplest way is to overlay /libs/cq/gui/components/authoring/editorpanel/editorpanel.jsp and remove the following line (line 37 on AEM 6.5.1, but it may be different for you on an older version):Remov...

Views

6.6K

Likes

2

Replies

3
Re: AEM Mocks - mock context's resources null after first test
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi Tom,The reason for this is that you are persisting the state of your context from method to method. This is causing conflicts in the context's ResourceResolver adapter cache and resulting in it not being able to adapt to Page.class more than once.The solution is to simply remove the following line from your test:@TestInstance(TestInstance.Lifecycle.PER_CLASS)Hope it helps

Views

1.3K

Likes

0

Replies

0
Re: Add a new button to assetdetails Screen
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi Vinod, Im happy it was useful! To manipulate the order of overlaid nodes (or any node actually) you can add the following property to your custom action node:sling:orderBefore - String - annotateHere's the result when you refresh the page after making this change:For more cool tips and tricks on overlaying and overriding nodes in AEM, have a look at this page: Using the Sling Resource Merger in AEM

Views

1.3K

Like

1

Replies

0
Tutorial - AEM: Adding a button to a TouchUI toolbar
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi guys, I just posted a tutorial on AEM that guides you through implementing a custom feature and placing it in the AEM top toolbar.You can see the article here: https://medium.com/@theopendle/aem-adding-a-button-to-a-touchui-toolbar-ae1d1dc1c530 Please enjoy and I'm open to any kind of feedback on content, style, etc.Theo

Views

5.6K

Likes

4

Replies

4
Re: Add a new button to assetdetails Screen
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, Sorry for the slow reply, but your question inspired me to make a tutorial Here it is: https://medium.com/@theopendle/aem-adding-a-button-to-a-touchui-toolbar-ae1d1dc1c530. If you have any questions, don't hesitate!

Views

1.3K

Likes

3

Replies

0
Re: Nested Multi field.
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Well you didn't just copy-paste the XML from the tutorial, you tried to implement it yourself right? Otherwise your fields would be named the same as in the tutorial.

Views

2.7K

Likes

0

Replies

0
Re: Permanent Links for DAM Assets
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, As far as I know there is no OOTB tool for this. However you seem like your on the right path in your thinking for a custom implementation. Here is my advice: Create an event listener that listens for new assets being added. When it is triggered, it creates a UUID for the asset. EG: if you create an asset at /content/dam/your-project/your-asset, the listener would add a permalinkUUID property with value e0e730c8-b124-4c4e-a18b-b56619facfd6 for example.Then it creates a node at /content/dam/p...

Views

1.2K

Likes

0

Replies

0
Re: Nested Multi field.
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, could you please post the XML version of your node structure for this dialog please?

Views

2.7K

Likes

0

Replies

3
Re: How to get image metadata in singtly?
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi, Is there any reason why your component must contain a basic element? Could it not instead contain an AEM Image component for example: AEM Core Image ?Have a look at this tutorial, I think it might be exactly what you need: 5 - Custom Component.​ It shows you how to created a component which is composed of custom HTML and an existing Image component. The advantage of this technique is that you don't have to re-write all the logic to access DAM metadata, since it all already exists:

Views

1.8K

Like

1

Replies

0
Re: getting AEM to recognize styles
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Okay so I think I see the issue. Your LESSSimplified LESS.cmp-contentfragment--hlarticle { .cmp-contentfragment { ... }}LESS selector in English"This style applies to elements with a cmp-contentfragment class which are inside an element with a cmp-contentfragment--hlarticle class"Example target of the LESS selector ...What the LESS should beSimplified LESS.cmp-contentfragment { &.cmp-contentfragment--hlarticle { ... }}LESS selector in English"This style applies to elements with both a cmp-conten...

Views

974

Likes

0

Replies

0
Re: Error in Typology rules when set on Recipient
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Campaign Classic
Hi,Before I start, I'll admit that I've never used a Control typology rule in production before, but here is what I think is happening:My understanding is that the script in the Control typology rule is run for each delivery it applies to. It is expected that the script will return true or false for each of those deliveries. This means that the Control rule is used to check the validity of the delivery, not details relating to the recipient. See the example here: Control rules.I believe your scr...

Views

1.5K

Likes

0

Replies

0
Re: getting AEM to recognize styles
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Ah I see, well if you are using the We.Retail-style structure then my previous answer is not applicable. You can undo the import you made in your main.less file.Here is a part of your screenshot:The css.txt file (1) should contain a line referencing the hlarticle.less file (2). This is done with the following line:less/hlarticle.lessIf that doesn't work, could you please post your hlarticle.less file?

Views

862

Like

1

Replies

0
Re: getting AEM to recognize styles
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi "Even though I inspect the page for teh class it still doesn't reference it in the stylesheet" - It sounds like the policy is working, so may your styles are not properly set up? Here is how it should work:You should have a CSS/LESS file for your specific component style (eg: default.less)That file should be imported into the component styles file (eg: contentfragment.less)The component styles file should be imported into the main styles file (main.less)Here's what that looks like (example ba...

Views

830

Likes

0

Replies

0
Re: Deactivate and delete expired assets
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi,An expired asset is deactivated when is passes it's expiry date: "[...] ensures that the published asset is unpublished when it expires" (Digital Rights Management in Assets).To delete the assets, you will have to create a workflow that finds all expired assets using a query, and deletes those nodes. Here is a query to find all assets expired at a given date (JCR SQL-2 does not have a DATE() function to get the current date, you will have to supply this date in Java):SELECT asset.* FROM [dam:...

Views

1.8K

Likes

0

Replies

0
Re: Dynamic Dialog - able to see secondary choice after first level is changed
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
DemoHere is a working example of your Edit Dialog using Coral 3 (open image in a new tab if it's too small to see). CodeHere is the XML for the demo above. Please be careful! I copied the XML you provided as a base and converted it to Coral 3 (plus some other modifications). The XML below creates an Edit Dialog that behaves the way I understood your requirement, but it will not work as-is with your component (I wasn't pedantic about name fields for example, and I renamed some nodes for my own co...

Views

635

Likes

2

Replies

0
Re: Dynamic Dialog - able to see secondary choice after first level is changed
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
I think I can help you but it depends on one thing: what version of AEM are you on?

Views

586

Likes

0

Replies

0
Re: cq:styleDefaultClasses classes are applied to components only on author
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Okay, well I'm happy to hear it's fixed Just one more question: is "l-container" a class you always want to be applied to your component? Because I think the styles associated with it might belong in the default.less file if that's the case.

Views

1.6K

Like

1

Replies

0
Re: Can we change default error message of fileupload sizelimit?
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
I think what Vishu means is that you overlay the JS file. To do so, take the file at/libs/dam/gui/coral/components/commons/fileupload/clientlibs/fileupload/js/fileupload.jsCopy it to /apps/dam/gui/coral/components/commons/fileupload/clientlibs/fileupload/js/fileupload.jsThen make your modifications.When AEM fetches fileupload.js, it will first look under /apps and if it does not find anything, then under /libs The concept is explained here: Overlays

Views

939

Likes

0

Replies

0
Re: cq:styleDefaultClasses classes are applied to components only on author
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
I've just tested this, also on 6.5 and I can't reproduce your issue :S Just to get this right, you have a default class, slay "redTextClass" for example, which you entered as a default class. You also created a style which adds that same class (called "Red" for example). On publisher the your component does not have the redTextClass class unless you select the Red style, correct?Could you also show us the policy node for the component in question? Here is the policy for my title component for ex...

Views

1.6K

Like

1

Replies

0
Re: JSON response - escaping double quotes
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Campaign Classic
Okay then I think there's something wrong with your API.I think what is going on is that your API:Accepts JSON correctly.Stores the object correctly.Returns the JSON wrong.I have the feeling your API might accept application/json but returns application/text or something like that, can you check?Basically what should happen when you create a resource is that your API should return the same thing you sent to it, plus the ID of the created resource. For example:Create a resourcePOST /address{"stre...

Views

33.7K

Like

1

Replies

0
Re: JSON response - escaping double quotes
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Campaign Classic
Hi Milan,Could you just confirm that I have this right? Your process is basically this:1. You send an object to the API (including the street field)2. The API saves this object in some database3. You fetch the object in ACM using your getJSONResponseFromAPI() function.It would look like this correct? If I've got this wrong, could you amend the diagram? You can find the code here and the editor here.Also, could you post your getJSONResponseFromAPI() function?

Views

33.3K

Like

1

Replies

0
Re: JSON response - escaping double quotes
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Campaign Classic
Hi Milan, Unfortunately, trying to correct the JSON string before parsing is going to be incredibly complicated. I'm saying this because the field in question (street) seems to be free-text, so it will be basically impossible to identify what is JSON syntax and what is field content.Imagine I entered the following value for the street field:Fake Street", "fakeProperty": "fakeThis would result in the following JSON (expected JSON syntax in blue, value in underlined red)"street: "Fake Street", "fa...

Views

33.3K

Likes

2

Replies

0
Re: Disable Create button
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Campaign Classic
Hi, this is a suggestion, I'm ansering from home and I don't have an instance I can test this on from here:Right-click on the buttons you want to disable and select "View source". Find the that contains the button and add used the enabledIf attribute to enable the container only if users have a certain named right.On this page you'll find an example of enabledIf and expr used to protect a schema, and here is an example on how to conditionally hide a container. I think the syntaxes are similar, ...

Views

1.1K

Like

1

Replies

0
Re: Adding users and groups + aem + docker
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Pertaining to what nirmaljosehere mentioned, you can package access rights easily using the ACS Commons ACL Packager​ If you don't already have it in place, consider implementing LDAP integration to ensure consistent user rights across multiple AEM instances.

Views

2.4K

Likes

0

Replies

0
Re: Existing web site integration
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
HI Giuseppe,I'm a little confused about what you want to do, could you be more specific?Of course it is possible to use the AEM Assets to manage your digital assets and make them publicly available for another external website to link to. It is also possible to expose content in this way using Content Fragments for example, but you will have to move your existing content into AEM if you want to use Templates.

Views

430

Likes

0

Replies

0
Re: Event handler for replication complete in AEM
Avatar
Validate 1
MVP
Theo_Pendle
MVP

Likes

238 likes

Total Posts

251 posts

Correct reply

105 solutions
Top badges earned
Validate 1
Ignite 5
Ignite 3
Ignite 10
Ignite 1
View profile
Theo_Pendle
- Adobe Experience Manager
Hi,You could use a Resource Listener on your publisher to listen for changes in the JCR and send the emails accordingly. If you created your AEM project with a Maven archetype, it should have generated a SimpleResourceListener.java file for you. Check it out to see how it works. Basically, any time a resource is modified, a line is logged. Of course you could narrow down the listener (only to /content/your-project for example) and change it to send a mail instead.Here is an example of a listener...

Views

900

Likes

0

Replies

0