Vista combinada Visión Plana Vista de árbol
Discusiones [ Anterior | Siguiente ]
toggle
M. Garcia
Portlet settings (programatically) : classes to use & database storage
22 de diciembre de 2011 7:21
Respuesta

M. Garcia

Ranking: Regular Member

Mensajes: 107

Fecha de incorporación: 17 de mayo de 2011

Mensajes recientes

Hello everyone,

I'd like to know what classes I should use to handle the following programmatically, and also where are those settings stored in the database :

- setting an Asset Publisher to ignore shared parameters such as categoryId / tag (this can be done manually accessing portlet Configuration / Communication tab)
- managing a portlet look&feel (this can be done manually accessing portlet Look and Feel)

The look & feel appears to be stored in PortletPreferences : <portlet-setup-css> field.
I didn't find where shared parameters "ignorance" are stored.

Then, what's the proper way to update some PortletPreferences ? Do I have to retrieve all the XML and parse it myself to update the preference fields I need to ? (Using PortletPreferencesLocalServiceUtil.updatePreferences() )


Thanks a lot =)

PS: using Liferay 6.0.6 CE + Tomcat 6 + Oracle 11g
M. Garcia
RE: Portlet settings (programatically) : classes to use & database storage
27 de diciembre de 2011 6:31
Respuesta

M. Garcia

Ranking: Regular Member

Mensajes: 107

Fecha de incorporación: 17 de mayo de 2011

Mensajes recientes

Anyone.. ?
M. Garcia
RE: Portlet settings (programatically) : classes to use & database storage
10 de enero de 2012 1:35
Respuesta

M. Garcia

Ranking: Regular Member

Mensajes: 107

Fecha de incorporación: 17 de mayo de 2011

Mensajes recientes

A hint on this topic would be much appreciated =)
Thanks
Sandeep Nair
RE: Portlet settings (programatically) : classes to use & database storage
10 de enero de 2012 2:03
Respuesta

Sandeep Nair

Ranking: Liferay Legend

Mensajes: 1692

Fecha de incorporación: 5 de noviembre de 2008

Mensajes recientes

You have to get PortletPreferences programatically and update the preference. For example in case of shared parameter for AssetPublisher (categoryid and tagname) you can see the logic in EditPublicRenderParametersAction
 1
 2PortletPreferences preferences =
 3            PortletPreferencesFactoryUtil.getLayoutPortletSetup(
 4                layout, portlet.getPortletId());
 5
 6        Enumeration<String> enu = preferences.getNames();
 7
 8        while (enu.hasMoreElements()) {
 9            String name = enu.nextElement();
10
11            if (name.startsWith(
12                    PublicRenderParameterConfiguration.IGNORE_PREFIX) ||
13                name.startsWith(
14                    PublicRenderParameterConfiguration.MAPPING_PREFIX)) {
15
16                preferences.reset(name);
17            }
18        }
19
20        for (PublicRenderParameter publicRenderParameter :
21                portlet.getPublicRenderParameters()) {
22
23            String ignoreKey = PublicRenderParameterConfiguration.getIgnoreKey(
24                publicRenderParameter);
25
26            boolean ignoreValue = ParamUtil.getBoolean(
27                actionRequest, ignoreKey);
28
29            if (ignoreValue) {
30                preferences.setValue(ignoreKey, String.valueOf(Boolean.TRUE));
31            }
32            else {
33                String mappingKey =
34                    PublicRenderParameterConfiguration.getMappingKey(
35                        publicRenderParameter);
36
37                String mappingValue = ParamUtil.getString(
38                    actionRequest, mappingKey);
39
40                if (Validator.isNotNull(mappingValue)) {
41                    preferences.setValue(mappingKey, mappingValue);
42                }
43            }
44        }
45
46        if (SessionErrors.isEmpty(actionRequest)) {
47            preferences.store();
48        }


The ignore key is the name of the public render parameter which in your case is categoryId and tag respectively.

Regards,
Sandeep