[opencms-dev] Locale macro in XSD schema

Arturo Martín Lladó arturo.martin.llado at gmail.com
Mon Feb 18 15:24:09 CET 2013


BTW, I'm using this version because this bug gets fixed: "Fixed issue
#105 where the category widget showed all categories even if a
pre-selection was configured." i.e. the attribute "configuration" of
the layout element was being ignored.

Cheers.

2013/2/18 Arturo Martín Lladó <arturo.martin.llado at gmail.com>:
> Hi, Christoph:
>
> I'm currently using OpenCms 8.5.1 :-)
>
> Regards.
>
> 2013/2/18 Christoph Fröhlich <cfauto at folge2.de>:
>> Hi Arturo
>>
>> what version are you running?
>>
>> In 8.0.4 and in 8.5 (at least in my version of the sources)
>> getStartingCategory(...)
>> is called from
>> org.opencms.widgets.CmsCategoryWidget.getDialogWidget(CmsObject,
>> I_CmsWidgetDialog, I_CmsWidgetParameter)
>>
>> Are you eventually running 7.x?
>>
>> Regards
>> c
>>
>>
>> Am 18.02.2013 um 14:27 schrieb Arturo Martín Lladó
>> <arturo.martin.llado at gmail.com>:
>>
>> Hi, Christoph:
>>
>> I have overriden this three methods in my widget like this:
>>
>> public String getStartingCategory(CmsObject cms, java.lang.String
>> referencePath) {
>> LOG.error("== getStartingCategory, referencePath =>" + referencePath);
>> LOG.error("== getStartingCategory =>" +
>> super.getStartingCategory(cms, referencePath));
>> return super.getStartingCategory(cms, referencePath);
>> }
>>
>> public String getDialogWidget(CmsObject cms, I_CmsWidgetDialog
>> widgetDialog, I_CmsWidgetParameter param) {
>> LOG.error("== getDialogWidget");
>> return super.getDialogWidget(cms, widgetDialog, param);
>> }
>>
>> public void setEditorValue(CmsObject cms,
>> java.util.Map<java.lang.String,java.lang.String[]> formParameters,
>> I_CmsWidgetDialog widgetDialog, I_CmsWidgetParameter param) {
>> LOG.error("== setEditorValue");
>> super.setEditorValue(cms, formParameters, widgetDialog, param);
>> }
>>
>> with breakpoints at the beggining of each method.
>>
>> Also, browsing the code on GitHub, I see that getStartingCategory() is
>> only called from getEditorValue() and from setEditorValue(). None of
>> the last ones it's being called whenever I edit the value on the
>> widget. Other methods are called and I see output from them on the
>> log.
>>
>> It is really, really weird. Any ideas?
>>
>> Cheers.
>>
>> 2013/2/18 Christoph Fröhlich <cfauto at folge2.de>:
>>
>> Hi Arturo,
>>
>> I think getStartingCategory is called, when an editor starts to edit a
>> content type which uses this widget.
>> Whereas setConfiguration is called sometimes while the system is
>> initialised. Did you try to edit a content which uses the new widget?
>>
>> Regards
>> c
>>
>>
>> Am 18.02.2013 um 12:28 schrieb Arturo Martín Lladó
>> <arturo.martin.llado at gmail.com>:
>>
>> Hi again, Christoph:
>>
>> Thank you for your help!
>>
>> Now more things are happening, but the method getStartingCategory()
>> stills not being called.
>> I see that the methods that are being called using the widget are:
>>
>> - Empty constructor.
>> - setConfiguration(java.lang.String configuration)
>> - getConfiguration()
>>
>> I guess that I can do what I need inside setConfiguration. I'll keep
>> you posted :-)
>>
>> Kind regards,
>> Arturo.
>>
>> 2013/2/18 Christoph Fröhlich <cfauto at folge2.de>:
>>
>> Hi Arturo,
>>
>> sorry. I forgot that you have to overwrite
>>
>> newInstance()
>>
>> as well.
>>
>> /**
>> * @see org.opencms.widgets.I_CmsWidget#newInstance()
>> */
>> public I_CmsWidget newInstance() {
>>
>> return new CmsLocaleCategoryWidget();
>> }
>>
>> I hope this should do the trick.
>>
>> Regards
>> Christoph
>>
>> Am 18.02.2013 um 12:05 schrieb Arturo Martín Lladó
>> <arturo.martin.llado at gmail.com>:
>>
>> Hi, Christoph:
>>
>> It's really wierd. I have subclassed the widget like this:
>>
>> [...]
>>
>> public class CmsLocaleCategoryWidget extends CmsCategoryWidget {
>>
>> private static Log LOG = CmsLog.getLog(CmsLocaleCategoryWidget.class);
>>
>> public String getStartingCategory(CmsObject cms, java.lang.String
>> referencePath) {
>>
>> LOG.error("== getStartingCategory, referencePath =>" + referencePath);
>> LOG.error("== getStartingCategory =>" +
>> super.getStartingCategory(cms, referencePath));
>> return super.getStartingCategory(cms, referencePath);
>>
>> }
>>
>> }
>>
>> I also changed the XSD and opencms-vfs.xml in order to use the new widget.
>>
>> The "new" widget is rendered ok, showing categories, but I see no
>> output in opencms.log. Even starting Tomcat on debug mode and adding a
>> breakpoint on the method does not trigger anything. No stop in the
>> method. It seems the method is not being called. I just don't get
>> it...
>>
>> Thank you anyway for the help, Christoph. It is very welcome :-)
>>
>> Cheers.
>>
>> 2013/2/16 Christoph Fröhlich <cfauto at folge2.de>:
>>
>> HI Arturo,
>>
>> maybe you can create a custom widget by subclassing
>> org.opencms.widgets.CmsCategoryWidget
>>
>>
>> In the method
>> getStartingCategory(CmsObject, String)
>>
>> you have access to the current locale. I think this should enable you to
>> construct locale dependent starting categories.
>>
>> Regards
>> Christoph
>>
>> Am 15.02.2013 um 17:51 schrieb Rüdiger Kurz <r.kurz at alkacon.com>:
>>
>> Hi,
>>
>> OK, enable the content managers to create categories and localize the
>> display values is an argument. Anyway it would be better using the same
>> taxonomy.
>>
>> If you have only two locales an 'ugly' workaround would be using two
>> properties: simple and straight, but technical not clean. So why don't
>> create an 'config' XSD that has multiple nested elements holding a category
>> together with its display name. This will make it easy to edit the localized
>> display values in a comfortable way for content managers and it would be
>> technically clean.
>>
>> You could initialize this content with a Java Bean or what ever you need to
>> make access easier than writing scriplet code.
>>
>> @Tobias, sorry but your mail comes in while I've already used the word
>> 'ugly', anyway the property variant is simple and straight.
>>
>> regards
>> Rüdiger
>>
>>
>> Am 15.02.2013 17:18, schrieb Arturo Martín Lladó:
>>
>> Hi, Rüdiger.
>>
>> I can say it's a very original solution :-)
>>
>> Unfortunately, the categories should be administrated (and localized,
>> they are siblings with different Title property) by the final users,
>> and the edition of a Java properties file it's not a solution suitable
>> for them.
>>
>> That's why we have a categories taxonomy like this:
>>
>> =====
>> /_categories
>>  ca
>>      categories with locale "ca" configured as property by the parent
>>      [...]
>>  es
>>      categories with locale "es" configured as property by the parent
>>      [...]
>> =====
>>
>> and that's why we'd like to offer to the final user a default category
>> pointed using de "configuration" attribute of the CategoryWidget.
>>
>> Thank you anyway, Rüdiger. I really appreciate your help and any other
>> tip about this problem will be very welcome.
>>
>> I guess that support for macros processing on the "configuration"
>> attribute of the layout widgets could be part of the wishlist of the
>> next release of OpenCms :-)
>>
>> Again, thanks for your help and have a nice weekend.
>>
>> Regards.
>>
>> 2013/2/15 Rüdiger Kurz <r.kurz at alkacon.com>:
>>
>> Hi,
>>
>> think you are right with your assumption. What you're trying to archive is
>> localization of categories. I might be wrong, but I think that localizing
>> categories,tags,facets,... does not make that much sense, since the 'tags'
>> should be the same for one content. (Categories are assigned to VFS
>> resources not to the real-localized content).
>>
>> However, I would try to use the same taxonomy for all languages and then
>> localize its output at rendering time: The messages.properties could have
>> entries per category path, using dots instead slashes and then on JSP side
>> you will replace the slashes pf the category path with dotes and try then to
>> receive the localized value.
>>
>> What do you think?
>>
>> Am 15.02.2013 16:49, schrieb Arturo Martín Lladó:
>>
>> Hi, Rüdiger.
>>
>> I tried with this:
>>
>>          <resourcebundles>
>>               <xmlbundle name="element.workplace.xml">
>>                   <bundle locale="ca">
>>                       <resource
>> key="package.element.language">ca</resource>
>>                   </bundle>
>>                   <bundle locale="es">
>>                       <resource
>> key="package.element.language">es</resource>
>>                   </bundle>
>>               </xmlbundle>
>>           </resourcebundles>
>>
>> The value stored in %(key.package.element.language) is displayed OK in
>> the default values of OpenCmsString fields, but it seems to be ignored
>> in the attribute "configuration" of a CategoryWidget.
>>
>> Is this the expected behaviour? Maybe macros are not processed in
>> <layout> elements?
>>
>> Kind regards.
>>
>> 2013/2/15 Rüdiger Kurz <r.kurz at alkacon.com>:
>>
>>
>> Hi,
>>
>> it's me again. You can access localized message bundles with:
>> %(key.your.label)
>>
>> imagine a XSD:
>>
>> <resourcebundle name="your.package.workplace"/>
>> [...]
>> <layout element="Elem"
>>       widget="CategoryWidget"
>>       configuration="... %(key.language) ..." />
>>
>> and a workplace_en.properties
>> containing:
>> language=en
>>
>> and a workplace_de.properties
>> containing:
>> language=de
>>
>> This should do the trick.
>>
>> regards
>> Rüdiger
>>
>>
>> Am 15.02.2013 14:39, schrieb Rüdiger Kurz:
>>
>> sorry not quiet sure if this works inside the XSD, but inside the
>> content editor you can use it.
>>
>> Am 15.02.2013 14:37, schrieb Rüdiger Kurz:
>>
>>
>>
>> yes, %(request.locale)
>>
>> Am 15.02.2013 14:27, schrieb Arturo Martín Lladó:
>>
>>
>>
>> Hi, list.
>>
>> Is there available any locale macro for using it in XSD schemas?
>>
>> I'd like to do something like this:
>>
>>   <layouts>
>>                [...]
>>                <layout element="Categoria" widget="CategoryWidget"
>>
>>
>> configuration="category=/_categories/__LOCALE_MACRO___/tipoDocumento/|onlyleafs=true"/>
>>
>>
>>   </layouts>
>>
>> This is because our categories tree is organized this way:
>> /sites/default/_categories/__LOCALE__/...
>>
>> Kind regards.
>>
>>
>>
>>
>>
>> --
>> Rüdiger Kurz
>>
>> -------------------
>>
>> Alkacon Software GmbH - The OpenCms Experts
>> Rüdiger Kurz
>> An der Wachsfabrik 13
>> 50996 Koeln, DE
>>
>> Tel: +49 (0)2236 3826-16
>> Fax: +49 (0)2236 3826-20
>> Email: r.kurz at alkacon.com
>>
>> http://www.alkacon.com
>> http://www.opencms.org
>>
>> Geschäftsführer: Alexander Kandzior, Amtsgericht Köln, HRB 54613
>> _______________________________________________
>> 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/cgi-bin/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/cgi-bin/mailman/listinfo/opencms-dev
>>
>>
>>
>>
>>
>>
>>
>> --
>> Arturo Martín Lladó
>>
>>
>> -------------------------------------------------
>> Christoph Fröhlich
>> Folge 3 GmbH
>> Neuer Pferdemarkt 1
>> 20359 Hamburg
>>
>> +49 +40  79 69 48 78
>> cf at folge3.de
>> http://www.folge3.de
>> -------------------------------------------------
>> Geschäftsführer: Christoph Fröhlich, Anja Künzel
>> Handelsregister: HRB 105806, Amtsgericht Hamburg
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> Arturo Martín Lladó
>>
>>
>> -------------------------------------------------
>> Christoph Fröhlich
>> Folge 3 GmbH
>> Neuer Pferdemarkt 1
>> 20359 Hamburg
>>
>> +49 +40  79 69 48 78
>> cf at folge3.de
>> http://www.folge3.de
>> -------------------------------------------------
>> Geschäftsführer: Christoph Fröhlich, Anja Künzel
>> Handelsregister: HRB 105806, Amtsgericht Hamburg
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> --
>> Arturo Martín Lladó
>>
>>
>> -------------------------------------------------
>> Christoph Fröhlich
>> Folge 3 GmbH
>> Neuer Pferdemarkt 1
>> 20359 Hamburg
>>
>> +49 +40  79 69 48 78
>> cf at folge3.de
>> http://www.folge3.de
>> -------------------------------------------------
>> Geschäftsführer: Christoph Fröhlich, Anja Künzel
>> Handelsregister: HRB 105806, Amtsgericht Hamburg
>>
>>
>>
>>
>>
>>
>>
>
>
>
> --
> Arturo Martín Lladó



-- 
Arturo Martín Lladó



More information about the opencms-dev mailing list