Fórum

Asset Publisher Inhalt mit anderem Portlet filtern

kunibert günter, modificado 9 Anos atrás.

Asset Publisher Inhalt mit anderem Portlet filtern

New Member Postagens: 18 Data de Entrada: 05/07/14 Postagens Recentes
Hallo,

ich habe auf einer Seite 2 Portlets, einmal den Asset Publisher und ein Portlet, mit dem die angezeigten Dokumente im AP gefiltert werden sollen, mithilfe von checkboxen u.ä.

Leider ist mir nicht klar, wie ich dem Assetpublisher mitteile, dass sich was ändern soll, ich hatte versucht das ganze über GET in der URL zu machen, jedoch bekomme ich nur die URL des Filterportlets.

Kann mich bitte jemand in die richtige Richtung leiten...
thumbnail
Dominik Marks, modificado 9 Anos atrás.

RE: Asset Publisher Inhalt mit anderem Portlet filtern

Regular Member Postagens: 149 Data de Entrada: 29/08/12 Postagens Recentes
Hallo Kunibert,

die Filtermöglichkeiten des Asset Publishers funktioniert so erstmal nur für Tags und Kategorien. Die Kommunikation zwischen anderen Portlets (z.B. Tag Navigation, Category Navigation, Tag Cloud usw.) und dem Asset Publisher funktioniert dabei über Public Render Parameter.

Wenn du nach anderen Kriterien filtern möchtest, ließe sich das sicherlich über weitere Public Render Parameter erreichen. Die Filterung müsstest du dann per Hook im Asset Publisher implementieren.

Gruß,
Dominik
kunibert günter, modificado 9 Anos atrás.

RE: Asset Publisher Inhalt mit anderem Portlet filtern

New Member Postagens: 18 Data de Entrada: 05/07/14 Postagens Recentes
Hallo Dominik,

danke für die Rückmeldung, das mit den Public Parametern habe ich herausgefunden, weißt du zufällig welche JSP im Asset Publisher für die Verarbeitung zuständig ist, bzw. wo ich mit einem Hook neue Parameter hinzufügen muss?

gruß

Kunibert
thumbnail
Dominik Marks, modificado 9 Anos atrás.

RE: Asset Publisher Inhalt mit anderem Portlet filtern

Regular Member Postagens: 149 Data de Entrada: 29/08/12 Postagens Recentes
Hallo Kunibert,

beispielsweise unterstützt der Asset Publisher einen Parameter "categoryId", um nach einer Kategorie zu filtern. Der Parameter "categoryId" ist als Public Render Parameter deklariert und wird z.B. vom "Category Navigation" Portlet gesetzt.

Abgefragt wird der Parameter z.B. in der Datei /html/portlet/asset_publisher/init.jsp. Dort wird der Parameter dann an die AssetEntryQuery übergeben, so dass das Ergebnis entsprechend nach der Kategorie gefiltert wird.

Dort musst du halt mal schauen, ob die von dir gewünschten Filtermöglichkeiten bereits von AssetEntryQuery unterstützt werden.

Viele Grüße,
Dominik
kunibert günter, modificado 9 Anos atrás.

RE: Asset Publisher Inhalt mit anderem Portlet filtern

New Member Postagens: 18 Data de Entrada: 05/07/14 Postagens Recentes
Danke dir Dominik!

Nur für den Fall, dass jemand anderes den Asset Publisher oder die Document Library mit einem eigenen Portlet filtern möchte:

Im eigenen Portlet muss in der portlet.xml der PRP definiert werden:

<supported-public-render-parameter>categoryId</supported-public-render-parameter>

<public-render-parameter>
      <identifier>categoryId</identifier>
      <qname xmlns:x="http://www.liferay.com/public-render-parameters">x:categoryId</qname>
</public-render-parameter>

dadurch hat der Asset Publisher oder die Document Library zugriff auf diesen Parameter.

Um mehrere CategoryIds an die DL zu übergeben und danach zu filtern muss ein Hook für die view_entries.jsp hinzugefügt werden der dem AssetEntryQuery alle KategorieIds übergibt:

if (request.getParameterValues("categoryId") != null) {
	long[] cid=GetterUtil.getLongValues((String[])request.getParameterValues("categoryId"));
	assetEntryQuery.setAllCategoryIds(cid);
}


Beim Asset Publisher ist es ein Hook der init.jsp mit dem selben Vorgehen.


Übergeben wird der Parameter mit:
actionResponse.setRenderParameter("categoryId", categoryIdArray);


Vielleicht hilft es ja dem einen oder anderen.