AEM 6520 - AEM Assets add Custom Metadata Columns in Assets Console List View

Goal


Add Custom metadata columns in List view of Assets Consolehttp://localhost:4502/assets.html/

This post adds columns using server side rendering, for adding columns using client side logic check this post

For Custom metadata columns in Search Console check this post

Demo | Package Install | Github


Configure Columns



Columns in List View



Solution


1) Add the custom metadata columns configuration in /apps/dam/gui/content/commons/availablecolumns (Sling Resource Merger combines the otb columns in /libs/dam/gui/content/commons/availablecolumns with ones configured in /apps)

<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
    jcr:primaryType="nt:unstructured">
    <eaemTitle
        jcr:primaryType="nt:unstructured"
        jcr:title="EAEM Title"
        columnGroup="Experience AEM"
        configurable="{Boolean}true"
        default="{Boolean}true"/>
    <eaemDesc
        jcr:primaryType="nt:unstructured"
        jcr:title="EAEM Description"
        columnGroup="Experience AEM"
        configurable="{Boolean}true"
        default="{Boolean}true"/>
    <eaemKeywords
        jcr:primaryType="nt:unstructured"
        jcr:title="EAEM Keywords"
        columnGroup="Experience AEM"
        configurable="{Boolean}true"
        default="{Boolean}true"/>
</jcr:root>


2) Add the following code for rendering metadata values in /apps/dam/gui/coral/components/admin/contentrenderer/row/common/reorder.jsp; include the otb reorder.jsp using cq:include

<%@include file="/libs/granite/ui/global.jsp"%>
<%@ page import="org.apache.sling.api.resource.ValueMap" %>
<%@ page import="org.apache.sling.api.resource.Resource" %>
<%@taglib prefix="cq" uri="http://www.day.com/taglibs/cq/1.0"%>

<%
    final String ASSET_RES_TYPE = "dam/gui/coral/components/admin/contentrenderer/row/asset";

    Resource assetResource = resource;
    String eaemTitle = "", eaemDesc = "", eaemKeywords = "";

    if(assetResource.getResourceType().equals(ASSET_RES_TYPE)){
        ValueMap vm = assetResource.getChild("jcr:content/metadata").getValueMap();

        eaemTitle = (String)vm.get("eaemTitle", "");
        eaemDesc = (String)vm.get("eaemDesc", "");
        eaemKeywords = (String)vm.get("eaemKeywords", "");
    }

%>

<td is="coral-table-cell" value="<%= eaemTitle %>">
    <%= eaemTitle %>
</td>

<td is="coral-table-cell" value="<%= eaemDesc %>">
    <%= eaemDesc %>
</td>

<td is="coral-table-cell" value="<%= eaemKeywords %>">
    <%= eaemKeywords %>
</td>

<cq:include script = "/libs/dam/gui/coral/components/admin/contentrenderer/row/common/reorder.jsp"/>

3 comments:

  1. Hi Sreekanth,

    I'm also developing similar feature in my project where I want to add sorting feature in card view by Title.
    Do you have any recommendations/reference link to implement this feature?

    Thanks,
    Anil

    ReplyDelete
    Replies
    1. i believe you can handle this sort server side https://experience-aem.blogspot.com/2018/11/aem-6420-add-sort-by-name-type-in-assets-list-view-default-sort-name.html

      Delete
  2. Hi Sreekanth,

    Thanks for article it's a great help!

    I am also developing a similar column. In the AEM environemnt I am working, there is already an reorder.jsp present in the same location. It comes from "AEM Guides(UUID)" package. It shows UUID column.
    I am trying to see if there is a way to see if both could co-exist. What;s happening currently is my "reorder.jsp" replaces the existing one, and data for my column is shown the UUID column from the AEM Guides package.

    Any suggestions would be super helpful.

    ReplyDelete