Estender editor de ativos extending-asset-editor
O Editor de ativos é a página que é aberta quando um ativo encontrado por meio do Compartilhamento de ativos é clicado, permitindo que o usuário edite esses aspectos do ativo como metadados, miniatura, título e tags.
A configuração do editor usando os componentes de edição predefinidos é abordada em Criação e configuração de uma página de editor de ativos.
Além de usar componentes de editor pré-existentes, os desenvolvedores do Adobe Experience Manager também podem criar seus próprios componentes.
Criação de um modelo do editor de ativos creating-an-asset-editor-template
As seguintes páginas de exemplo estão incluídas no geometrixx:
- Página de exemplo do Geometrixx:
/content/geometrixx/en/press/asseteditor.html
- Exemplo de modelo:
/apps/geometrixx/templates/asseteditor
- Exemplo de componente de página:
/apps/geometrixx/components/asseteditor
Configuração da Clientlib configuring-clientlib
Experience Manager Assets os componentes usam uma extensão da biblioteca de edição de clientlib do WCM. Normalmente, as clientlibs são carregadas em init.jsp
.
Comparado ao carregamento padrão da clientlib (no core init.jsp
), um Assets O template deve ter o seguinte:
-
O modelo deve incluir o
cq.dam.edit
clientlib (em vez decq.wcm.edit
). -
A clientlib também deve ser incluído no modo WCM desativado (por exemplo, carregado na publicação) para poder renderizar os predicados, as ações e as lentes.
Na maioria dos casos, copiar a amostra existente init.jsp
(/apps/geometrixx/components/asseteditor/init.jsp
) devem atender a essas necessidades.
Configuração de ações JS configuring-js-actions
Alguns dos Assets Os componentes exigem funções JS definidas em component.js
. Copie esse arquivo para o diretório do seu componente e vincule-o.
<script type="text/javascript" src="<%= component.getPath() %>/component.js"></script>
O exemplo carrega essa fonte do JavaScript no head.jsp
(/apps/geometrixx/components/asseteditor/head.jsp
).
Folhas de estilos adicionais additional-style-sheets
Alguns dos Assets os componentes usam o Experience Manager biblioteca de widgets. Para ser renderizada corretamente no contexto de conteúdo, uma folha de estilos adicional deve ser carregada. O componente de ação de tag requer mais um.
<link href="/etc/designs/geometrixx/ui.widgets.css" rel="stylesheet" type="text/css">
Folha de estilos do Geometrixx geometrixx-style-sheet
Os componentes de página de exemplo exigem que todos os seletores comecem com .asseteditor
de static.css
(/etc/designs/geometrixx/static.css
). Prática recomendada: Copiar tudo .asseteditor
seletores à sua folha de estilos e ajuste as regras conforme desejado.
FormChooser: Ajustes para recursos eventualmente carregados formchooser-adjustments-for-eventually-loaded-resources
O Editor de ativos usa o Seletor de formulário, que permite editar recursos - neste caso, ativos - na mesma página de formulário, basta adicionar um seletor de formulário e o caminho do formulário para o URL do ativo.
Por exemplo:
- Página de formulário simples: http://localhost:4502/content/geometrixx/en/press/asseteditor.html
- Ativo carregado na página de formulário: http://localhost:4502/content/dam/geometrixx/icons/diamond.png.form.html/content/geometrixx/en/press/asseteditor.html
A amostra manipula em head.jsp
(/apps/geometrixx/components/asseteditor/head.jsp
) faça o seguinte:
- Eles detectam se um ativo é carregado ou se o formulário simples deve ser exibido.
- Se um ativo for carregado, ele desativará o modo WCM, pois os parsys só poderão ser editados em uma página de formulário simples.
- Se um ativo for carregado, eles usarão seu título em vez do na página do formulário.
List<Resource> resources = FormsHelper.getFormEditResources(slingRequest);
if (resources != null) {
if (resources.size() == 1) {
// single resource
FormsHelper.setFormLoadResource(slingRequest, resources.get(0));
} else if (resources.size() > 1) {
// multiple resources
// not supported by CQ 5.3
}
}
Resource loadResource = (Resource) request.getAttribute("cq.form.loadresource");
String title;
if (loadResource != null) {
// an asset is loaded: disable WCM
WCMMode.DISABLED.toRequest(request);
String path = loadResource.getPath();
Asset asset = loadResource.adaptTo(Asset.class);
try {
// it might happen that the adobe xmp lib creates an array
Object titleObj = asset.getMetadata("dc:title");
if (titleObj instanceof Object[]) {
Object[] titleArray = (Object[]) titleObj;
title = (titleArray.length > 0) ? titleArray[0].toString() : "";
} else {
title = titleObj.toString();
}
}
catch (NullPointerException e) {
title = path.substring(path.lastIndexOf("/") + 1);
}
}
else {
title = currentPage.getTitle() == null ? currentPage.getName() : currentPage.getTitle();
}
Na parte HTML, use o conjunto de título anterior (ativo ou título de página):
<title><%= title %></title>
Criação de um componente de campo de formulário simples creating-a-simple-form-field-component
Este exemplo descreve como criar um componente que mostra e exibe os metadados de um ativo carregado.
-
Crie uma pasta de componentes no diretório de projetos, por exemplo,
/apps/geometrixx/components/samplemeta
. -
Adicionar
content.xml
com o seguinte trecho:code language-xml <?xml version="1.0" encoding="UTF-8"?> <jcr:root xmlns:sling="https://sling.apache.org/jcr/sling/1.0" xmlns:cq="https://www.day.com/jcr/cq/1.0" xmlns:jcr="https://www.jcp.org/jcr/1.0" jcr:primaryType="cq:Component" jcr:title="Image Dimension" sling:resourceSuperType="foundation/components/parbase" allowedParents="[*/parsys]" componentGroup="Asset Editor"/>
-
Adicionar
samplemeta.jsp
com o seguinte trecho:code language-javascript <%-- Sample metadata field component --%><%@ page import="com.day.cq.dam.api.Asset, java.security.AccessControlException" %><% %><%@include file="/libs/foundation/global.jsp"%><% String value = ""; String name = "dam:sampleMetadata"; boolean readOnly = false; // If the form page is requested for an asset loadResource will be the asset. Resource loadResource = (Resource) request.getAttribute("cq.form.loadresource"); if (loadResource != null) { // Determine if the loaded asset is read only. Session session = slingRequest.getResourceResolver().adaptTo(Session.class); try { session.checkPermission(loadResource.getPath(), "set_property"); readOnly = false; } catch (AccessControlException ace) { // checkPermission throws exception if asset is read only readOnly = true; } catch (RepositoryException re) {} // Get the value of the metadata. Asset asset = loadResource.adaptTo(Asset.class); try { value = asset.getMetadata(name).toString(); } catch (NullPointerException npe) { // no metadata dc:description available } } %> <div class="form_row"> <div class="form_leftcol"> <div class="form_leftcollabel">Sample Metadata</div> </div> <div class="form_rightcol"> <% if (readOnly) { %><c:out value="<%= value %>"/><% } else { %><input class="text" type="text" name="./jcr:content/metadata/<%= name %>" value="<c:out value="<%= value %>" />"><% }%> </div> </div>
-
Para disponibilizar o componente, é necessário editá-lo. Para tornar um componente editável, no CRXDE Lite, adicione um nó
cq:editConfig
de tipo primáriocq:EditConfig
. Para que possa remover parágrafos, adicione uma propriedade de vários valorescq:actions
com um único valorDELETE
. -
Navegue até o navegador e, na página de exemplo (por exemplo,
asseteditor.html
) alterne para o modo de design e ative o novo componente para o sistema de parágrafo. -
No modo Editar, o novo componente (por exemplo, Metadados de amostra) agora está disponível no sidekick (encontrado no grupo Editor de ativos). Insira o componente. Para poder armazenar os metadados, eles devem ser adicionados ao formulário de metadados.
Modificação das opções de metadados modifying-metadata-options
Você pode modificar os namespaces disponíveis no formulário de metadados.
Os metadados atualmente disponíveis são definidos em /libs/dam/options/metadata
:
- O primeiro nível dentro desse diretório contém os namespaces.
- Os itens dentro de cada namespace representam metadados, como resultados em um item de parte local.
- O conteúdo dos metadados contém as informações do tipo e as opções de vários valores.
As opções podem ser substituídas em /apps/dam/options/metadata
:
-
Copie o diretório de
/libs
para/apps
. -
Remover, modificar ou adicionar itens.