[opencms-dev] programatically determine which locale is currently being edited
Paul-Inge Flakstad
flakstad at npolar.no
Wed Jul 22 12:19:56 CEST 2009
Greetings again Marc, Achim
I did a quick rewrite (see below) of the source code provided in the OpenCms 7 development book, and I'm glad to inform that Achim's tip did the trick. :) The select options are now being built using the editor's currently selected locale.
Many, many thanks to Achim for submitting this example code!
Best regards,
Paul
Source changes
================
I_WidgetSelectSource:
Changed
getValues(CmsObject cms)
to
getValues(CmsObject cms, I_CmsWidgetParameter param)
---------------
Changed all classes implementing I_WidgetSelectSource to reflect the above change.
---------------
CmsCustomSourceSelectWidget:
Changed
getSelectOptionData(CmsObject cms)
to
getSelectOptionData(CmsObject cms, I_CmsWidgetParameter param)
---------------
ContentFieldListDS#getValues(CmsObject cms, I_CmsWidgetParameter param):
Changed the line
List lVals = content.getValues(m_strFieldname, cms.getRequestContext().getLocale());
Into this snippet
// Get the editor's current locale (or fallback to default locale)
Locale defaultLocale = OpenCms.getLocaleManager().getDefaultLocale();
Locale dialogContentLocale = ((I_CmsXmlContentValue)param).getLocale();
Locale locale = null == dialogContentLocale ? defaultLocale : dialogContentLocale;
// Get the values using the specified fieldname and locale
List lVals = content.getValues(m_strFieldname, locale);
---------------
That's it - hopefully I didn't forget anything. :)
> -----Original Message-----
> From: opencms-dev-bounces at opencms.org
> [mailto:opencms-dev-bounces at opencms.org] On Behalf Of
> a.westermann at alkacon.com
> Sent: 22. juli 2009 10:15
> To: The OpenCms mailing list
> Subject: Re: [opencms-dev] programatically determine which
> locale is currently being edited
>
> Hi Marc,
>
> I think it is this dirty and hidden (the cast!) trick:
>
> protected List parseSelectOptions(CmsObject cms,
> I_CmsWidgetDialog
> widgetDialog, I_CmsWidgetParameter param)
> throws CmsIllegalArgumentException {
>
> Locale dialogContentLocale =
> ((I_CmsXmlContentValue)param).getLocale();
> ...
> }
>
>
> Use it wherever you need it and have an I_CmsWidgetParameter argument.
>
>
> Kind Regards,
> Achim.
>
> -------------------
> Achim Westermann
>
> Alkacon Software GmbH - The OpenCms Experts
> http://www.alkacon.com - http://www.opencms.org
>
>
>
>
> Marc.Schlegel wrote:
> > Hello Everyone
> >
> > After solving my problem with the CustomSelectWidget (the
> one from the
> > OpenCms 7 book), there is one more tiny (but important)
> detail that I
> > need to solve.
> >
> > First I have to thank Paul for helping me previously and he whas
> > actually also the one phrasing this question.
> >
> > The point is, how can we get the correct Locale that is
> currently being
> > edited in a structured content editor. As some of you might
> remember,
> > the CustomWidget in the book is reading the possible values
> from another
> > structured content. This one of course can have several languages as
> > well. So when I switch the language in the editor that uses this
> > CustomWidget, the widget should change its contents to the
> corresponding
> > language as well.
> >
> > So, as the subject says: how to programatically determine
> which locale
> > is currently being edited? And how to refresh the widget
> when the editor
> > changes the language?
> >
> > Thanks in advance
> > Marc
> >
> > _______________________________________________
> > This mail is sent to you from the opencms-dev mailing list
> > To change your list options, or to unsubscribe from the
> list, please visit
> > http://lists.opencms.org/mailman/listinfo/opencms-dev
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list,
> please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
>
More information about the opencms-dev
mailing list