xhtml_style: display form groups legends
For erp5_web it is possible to define form groups following a naming rule "group_id (Group Title)" and "Group Title" is displayed in a legend, according to this comment in form_render.zpt: > It is possible to specify a group id and a group title by naming a group following the > "group id (Group Title)" pattern. In this case the group id will be used as fieldset css > class and as tag id. The group title will be used as a legend for the fieldset. If no group > title is found, we use group id as title. For historical reasons, the legend was hidden, this feature was only used in erp5_web, but this does not seem bad to enable it in erp5_xhtml_style as well. At the moment, this is not used much, this script ```py for sf in context.getPortalObject().portal_skins.objectValues(): for f in sf.objectValues(): if not hasattr(f, 'get_groups'): continue for group in f.get_groups(): if '(' in group: print('/'.join(f.getPhysicalPath()[1:]), group) return printed ``` when running on a site with many business template installed yields ``` erp5/portal_skins/erp5_base/EmbeddedFile_view left (Document Reference) erp5/portal_skins/erp5_base/EmbeddedFile_view right (Publication Information) erp5/portal_skins/erp5_base/NotificationMessage_viewEditor left (Page Properties) erp5/portal_skins/erp5_knowledge_pad/Base_viewKnowledgePadFieldLibrary right column (Toolbox) erp5/portal_skins/erp5_web/StaticWebSite_viewRedirectAssistConfiguration left (Style) erp5/portal_skins/erp5_web/WebPage_view left (Page Properties) erp5/portal_skins/erp5_web/WebPage_view right (Publication) erp5/portal_skins/erp5_web/WebPage_view bottom (Content) erp5/portal_skins/erp5_web/WebPage_viewEditor left (Page Properties) erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary left (Page Properties) erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary right (Publication) erp5/portal_skins/erp5_web/WebPage_viewFieldLibrary bottom (Content) erp5/portal_skins/erp5_web/WebSection_view left (Content) erp5/portal_skins/erp5_web/WebSection_view right (Layout) erp5/portal_skins/erp5_web/WebSection_view center (Description) erp5/portal_skins/erp5_web/WebSection_view bottom (Subsections) erp5/portal_skins/erp5_web/WebSection_viewDefaultThemeConfiguration left (Style) erp5/portal_skins/erp5_web/WebSection_viewDefaultThemeConfiguration right (Widgets) erp5/portal_skins/erp5_web/WebSite_view left (Content) erp5/portal_skins/erp5_web/WebSite_view right (Layout) erp5/portal_skins/erp5_web/WebSite_view center (Description) erp5/portal_skins/erp5_web/WebSite_view bottom (Subsections) erp5/portal_skins/erp5_web/WebSite_viewRegistrationDialog left (User Login) erp5/portal_skins/erp5_web/WebSite_viewRegistrationDialog right (User Identity) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column transparent (Logo) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Navigation) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Sections) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Contents) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Search) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout left column (Debug) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (News) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (Toolbox) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_content_layout right column (Highlight) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column transparent (Logo) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Navigation) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Sections) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Contents) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Search) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout left column (Debug) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (News) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Toolbox) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Highlight) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_layout right column (Action) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column transparent (Logo) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Navigation) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Sections) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Contents) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Search) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout left column (Debug) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (News) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (Toolbox) erp5/portal_skins/erp5_web_minimal_theme/erp5_web_section_layout right column (Highlight) erp5/portal_skins/erp5_dms/Document_viewFieldLibrary left (Document Reference) erp5/portal_skins/erp5_dms/Document_viewFieldLibrary right (Publication Information) erp5/portal_skins/erp5_dms/ExternalSource_view left (Document Reference) erp5/portal_skins/erp5_dms/ExternalSource_view right (Publication Information) erp5/portal_skins/erp5_dms/OOoDocument_view left (Document Reference) erp5/portal_skins/erp5_dms/OOoDocument_view right (Publication Information) erp5/portal_skins/erp5_dms_base/File_view left (Document Reference) erp5/portal_skins/erp5_dms_base/File_view right (Publication Information) erp5/portal_skins/erp5_dms_base/Image_view left (Document Reference) erp5/portal_skins/erp5_dms_base/Image_view right (Publication Information) erp5/portal_skins/erp5_dms_web/WebIllustration_view left (Document Reference) erp5/portal_skins/erp5_dms_web/WebIllustration_view right (Publication Information) erp5/portal_skins/erp5_dms_web/WebIllustration_view bottom (Preview) erp5/portal_skins/erp5_dms_web/WebPage_view left (Document Reference) erp5/portal_skins/erp5_dms_web/WebPage_view right (Publication Information) erp5/portal_skins/erp5_dms_web/WebPage_view bottom (Preview) erp5/portal_skins/erp5_multimedia/Sound_view left (Document Reference) erp5/portal_skins/erp5_multimedia/Sound_view right (Publication Information) erp5/portal_skins/erp5_run_my_doc/Review_view left (Document Reference) erp5/portal_skins/erp5_run_my_doc/Review_view right (Publication Information) erp5/portal_skins/erp5_run_my_doc/TestPage_view left (Document Reference) erp5/portal_skins/erp5_run_my_doc/TestPage_view right (Publication Information) erp5/portal_skins/erp5_run_my_doc/TestPage_view bottom (Preview) erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary left (Page Properties) erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary right (Publication) erp5/portal_skins/erp5_run_my_doc/TestPage_viewFieldLibrary bottom (Content) erp5/portal_skins/erp5_run_my_doc/TestPage_viewTestReport bottom (Content) erp5/portal_skins/erp5_officejs_slideshow_editor/WebPage_viewForSlideshowEditor bottom (Preview) erp5/portal_skins/erp5_credential/CredentialRequest_view left (Personal Information) erp5/portal_skins/erp5_credential/CredentialRequest_view left (Organisation Information) erp5/portal_skins/erp5_credential/CredentialRequest_view right (Login Information) erp5/portal_skins/erp5_credential/CredentialUpdate_view left (Personal Information) erp5/portal_skins/erp5_credential/CredentialUpdate_view left (Organisation Information) erp5/portal_skins/erp5_credential/CredentialUpdate_view right (Login Information) erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration left (Colors) erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration right (Static Content) erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration left (Navigation) erp5/portal_skins/erp5_km/WebSection_viewKMMinimalThemeConfiguration right (Gadgets) erp5/portal_skins/erp5_km_theme/Base_viewKMFieldLibrary right column (Toolbox) erp5/portal_skins/erp5_km_theme/WebSection_viewMinimalKMWidgetFieldLibrary bottom gadget (Bottom Gadget) erp5/portal_skins/erp5_km_theme/WebSection_viewMinimalKMWidgetFieldLibrary right column gadget (Right Gadget) erp5/portal_skins/erp5_km_theme/erp5_km_minimal_content_layout bottom gadget (Bottom Gadget) erp5/portal_skins/erp5_km_theme/erp5_km_minimal_content_layout right column gadget (Right Gadget) erp5/portal_skins/erp5_km_theme/erp5_km_minimal_layout bottom gadget (Bottom Gadget) erp5/portal_skins/erp5_km_theme/erp5_km_minimal_layout right column gadget (Right Gadget) erp5/portal_skins/erp5_km_theme/login_form left registration (Login) erp5/portal_skins/erp5_km_theme/login_form right registration (New User Registration) ``` and this does not look bad when viewing the forms.