Tribune

Home » Liferay Portal » English » 3. Development

Vista Combinata Vista Piatta Vista ad Albero
Discussioni [ Precedente | Successivo ]
toggle
Alain Dresse
language portlet in theme for site template based pages...
7 gennaio 2013 8.59
Risposta

Alain Dresse

Punteggio: Junior Member

Messaggi: 95

Data di Iscrizione: 18 luglio 2011

Messaggi recenti

Hi all,

I have been facing a wierd issue for the last hours, have a workaround, but don't quite understand what's going on. I hope my post will help people that could have similar issues, and maybe that a liferay guru can shed some light on the crix of the issue.

Issue
The language portlet, embedded in my theme using
1$theme.language()

works fine for most pages on my portal.
It doesn't work for pages created from page templates...

The pages are created from site templates using the following code:
 1if (publicSiteTemplateId != 0){
 2    LayoutSetPrototype prototype = LayoutSetPrototypeLocalServiceUtil
 3            .getLayoutSetPrototype(publicSiteTemplateId);
 4    LayoutSetLocalServiceUtil.updateLayoutSetPrototypeLinkEnabled(
 5            groupId,
 6            false,  //privateLayout,
 7            true,   //layoutSetPrototypeLinkEnabled
 8            prototype.getUuid()
 9            );
10}


observations
  • The language portlet embedded in the theme works for an omniadmin user, but not for a standard (or guest) user.
  • The language portlet added on a page works.
  • The language selector added to any other portlet using
    1<liferay-ui:language displayStyle="<%= LanguageTag.LIST_ICON %>" languageIds="<%= languageIds %>" />

    does not work.


workaround
Embed the language portlet in the theme using $theme.runtime:
1$velocityPortletPreferences.setValue("portletSetupShowBorders","false")
2<menu class="nav-horizontal" id="language-navigation">
3    <ul>
4        <li>$theme.runtime("82", "", $velocityPortletPreferences.toString())</li>
5    </ul>
6</menu>
7$velocityPortletPreferences.reset()


As I said earlier, I hope this helps someone someday, and I would be more than happy to understand why this workaround is needed. I assume it has to do with generating the actual pages from the page templates.

Best regards,
Alain
Alain Dresse
RE: language portlet in theme for site template based pages...
8 gennaio 2013 2.11
Risposta

Alain Dresse

Punteggio: Junior Member

Messaggi: 95

Data di Iscrizione: 18 luglio 2011

Messaggi recenti

Some more information:

Some of my pages already had a language portlet created from the previous version of my theme. To remove the borders, I ran the following code.
 1        DynamicQuery query = PortletPreferencesLocalServiceUtil.dynamicQuery();
 2        query.add(RestrictionsFactoryUtil.eq("portletId", languageLayoutPortletId));
 3        @SuppressWarnings("unchecked")
 4        List<PortletPreferences> preferenceList = PortletPreferencesLocalServiceUtil.dynamicQuery(query);
 5       
 6        for (PortletPreferences preferences : preferenceList){
 7            Layout layout = LayoutLocalServiceUtil.getLayout(preferences.getPlid());
 8            javax.portlet.PortletPreferences javaPrefs = PortletPreferencesFactoryUtil.getPortletSetup(layout, languageLayoutPortletId, StringPool.BLANK);
 9            String showBorders = javaPrefs.getValue("portletSetupShowBorders", StringPool.TRUE);
10            if (!showBorders.equals(StringPool.FALSE)) {
11                javaPrefs.setValue("portletSetupShowBorders", StringPool.FALSE);
12                javaPrefs.store();
13            }
14        }
15   
16    private static String languageLayoutPortletId = "82";


I had also forgotten to note in the previous post that once the admin had gone to a page and changed languages, the page worked for non admin users.

Alain
Rewati Raman
RE: language portlet in theme for site template based pages...
15 febbraio 2013 16.05
Risposta

Rewati Raman

Punteggio: Junior Member

Messaggi: 97

Data di Iscrizione: 24 febbraio 2012

Messaggi recenti

Hi Alain,

i am facing issues with Language Portlet customization.
I want borderless language portlet in search box mode

i want this things happen while adding my portlet in theme so that no need to customize from portal

Thanks in advance