imio.smartweb.core 1.4.4__py3-none-any.whl → 1.4.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. imio/smartweb/core/browser/configure.zcml +8 -0
  2. imio/smartweb/core/browser/controlpanel_siteadmin.py +142 -0
  3. imio/smartweb/core/browser/sitemap.py +1 -1
  4. imio/smartweb/core/browser/static/src/view.js +9 -2
  5. imio/smartweb/core/contents/pages/procedure/content.py +8 -0
  6. imio/smartweb/core/permissions.zcml +6 -0
  7. imio/smartweb/core/profiles/default/controlpanel.xml +12 -0
  8. imio/smartweb/core/profiles/default/metadata.xml +1 -1
  9. imio/smartweb/core/profiles/default/registry/smartweb.xml +3 -0
  10. imio/smartweb/core/profiles/default/rolemap.xml +5 -0
  11. imio/smartweb/core/profiles/default/taxonomies/procedure_category.xml +9 -0
  12. imio/smartweb/core/profiles/default/types/imio.smartweb.Page.xml +2 -1
  13. imio/smartweb/core/profiles/default/types/imio.smartweb.PortalPage.xml +1 -0
  14. imio/smartweb/core/setuphandlers.py +2 -0
  15. imio/smartweb/core/upgrades/configure.zcml +41 -1
  16. imio/smartweb/core/upgrades/profiles/1068_to_1069/controlpanel.xml +26 -0
  17. imio/smartweb/core/upgrades/profiles/1068_to_1069/registry.xml +9 -0
  18. imio/smartweb/core/upgrades/profiles/1068_to_1069/rolemap.xml +11 -0
  19. imio/smartweb/core/upgrades/profiles/1069_to_1070/taxonomies/procedure_category.cfg +9 -0
  20. imio/smartweb/core/upgrades/profiles/1069_to_1070/taxonomies/procedure_category.xml +121 -0
  21. imio/smartweb/core/upgrades/upgrades.py +7 -1
  22. imio/smartweb/core/utils.py +38 -0
  23. imio/smartweb/core/viewlets/procedure.pt +1 -0
  24. imio/smartweb/core/viewlets/procedure.py +14 -0
  25. imio/smartweb/core/vocabularies.py +28 -2
  26. imio/smartweb/core/vocabularies.zcml +6 -0
  27. imio/smartweb/core/webcomponents/build/css/251.smartweb-webcomponents-compiled.css +1 -0
  28. imio/smartweb/core/webcomponents/build/css/373.smartweb-webcomponents-compiled.css +1 -1
  29. imio/smartweb/core/webcomponents/build/css/666.smartweb-webcomponents-compiled.css +1 -1
  30. imio/smartweb/core/webcomponents/build/css/700.smartweb-webcomponents-compiled.css +1 -0
  31. imio/smartweb/core/webcomponents/build/js/141.smartweb-webcomponents-compiled.js +1 -1
  32. imio/smartweb/core/webcomponents/build/js/141.smartweb-webcomponents-compiled.js.LICENSE.txt +3 -3
  33. imio/smartweb/core/webcomponents/build/js/15.smartweb-webcomponents-compiled.js +2 -0
  34. imio/smartweb/core/webcomponents/build/js/21.smartweb-webcomponents-compiled.js +1 -1
  35. imio/smartweb/core/webcomponents/build/js/218.smartweb-webcomponents-compiled.js +1 -1
  36. imio/smartweb/core/webcomponents/build/js/251.smartweb-webcomponents-compiled.js +1 -0
  37. imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +1 -1
  38. imio/smartweb/core/webcomponents/build/js/666.smartweb-webcomponents-compiled.js +1 -1
  39. imio/smartweb/core/webcomponents/build/js/700.smartweb-webcomponents-compiled.js +1 -0
  40. imio/smartweb/core/webcomponents/build/js/824.smartweb-webcomponents-compiled.js +1 -1
  41. imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
  42. imio/smartweb/core/webcomponents/build/js/922.smartweb-webcomponents-compiled.js +1 -1
  43. imio/smartweb/core/webcomponents/build/js/963.smartweb-webcomponents-compiled.js +1 -1
  44. imio/smartweb/core/webcomponents/build/js/smartweb-webcomponents-compiled.js +1 -1
  45. imio/smartweb/core/webcomponents/package.json +1 -1
  46. imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.scss +32 -1
  47. imio/smartweb/core/webcomponents/src/components/Annuaire/Filters/Filter.jsx +118 -70
  48. imio/smartweb/core/webcomponents/src/components/Filters/MainFilter.scss +4 -8
  49. imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.jsx +167 -85
  50. imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.scss +44 -15
  51. imio/smartweb/core/webcomponents/src/components/News/News.scss +0 -1
  52. imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +20 -11
  53. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/METADATA +18 -1
  54. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/RECORD +61 -56
  55. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/WHEEL +1 -1
  56. imio/smartweb/core/webcomponents/build/css/420.smartweb-webcomponents-compiled.css +0 -1
  57. imio/smartweb/core/webcomponents/build/css/486.smartweb-webcomponents-compiled.css +0 -1
  58. imio/smartweb/core/webcomponents/build/css/884.smartweb-webcomponents-compiled.css +0 -1
  59. imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +0 -1
  60. imio/smartweb/core/webcomponents/build/js/491.smartweb-webcomponents-compiled.js +0 -2
  61. imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +0 -1
  62. /imio/smartweb/core/webcomponents/build/js/{491.smartweb-webcomponents-compiled.js.LICENSE.txt → 15.smartweb-webcomponents-compiled.js.LICENSE.txt} +0 -0
  63. /imio.smartweb.core-1.4.4-py3.12-nspkg.pth → /imio.smartweb.core-1.4.5-py3.12-nspkg.pth +0 -0
  64. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/licenses/LICENSE.GPL +0 -0
  65. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/licenses/LICENSE.rst +0 -0
  66. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/namespace_packages.txt +0 -0
  67. {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/top_level.txt +0 -0
@@ -56,6 +56,14 @@
56
56
  layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
57
57
  />
58
58
 
59
+ <browser:page
60
+ name="siteadmin-smartweb-controlpanel"
61
+ for="Products.CMFPlone.interfaces.IPloneSiteRoot"
62
+ class=".controlpanel_siteadmin.SmartwebSiteAdminControlPanelView"
63
+ permission="cmf.ManagePortal"
64
+ layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
65
+ />
66
+
59
67
  <browser:page
60
68
  name="utils"
61
69
  for="*"
@@ -0,0 +1,142 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from collective.z3cform.datagridfield.datagridfield import DataGridFieldFactory
4
+ from collective.z3cform.datagridfield.registry import DictRow
5
+ from imio.smartweb.locales import SmartwebMessageFactory as _
6
+ from plone import api
7
+ from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper
8
+ from plone.app.registry.browser.controlpanel import RegistryEditForm
9
+ from plone.autoform.directives import omitted
10
+ from plone.autoform.directives import mode
11
+ from plone.autoform.directives import widget
12
+ from plone.registry.interfaces import IRegistry
13
+ from plone.z3cform import layout
14
+ from Products.statusmessages.interfaces import IStatusMessage
15
+
16
+ from z3c.form.interfaces import ActionExecutionError
17
+ from zope import schema
18
+ from zope.component import getUtility
19
+ from zope.interface import Interface
20
+ from zope.interface import Invalid
21
+ from zope.schema import ValidationError
22
+ from zope import schema
23
+
24
+ import json
25
+ import logging
26
+
27
+ logger = logging.getLogger("imio.smartweb.core.browser.controlpanel_siteadmin")
28
+
29
+ MAX_LENGTH = 33
30
+
31
+
32
+ class LabelTooLong(ValidationError):
33
+ __doc__ = f"Le texte ne peut pas dépasser {MAX_LENGTH} caractères."
34
+
35
+
36
+ def max_length_constraint(value):
37
+ if len(value) > MAX_LENGTH:
38
+ raise LabelTooLong(value)
39
+ return True
40
+
41
+
42
+ class IProcedureTextRowSchema(Interface):
43
+
44
+ omitted("label_id")
45
+ mode(label_id="hidden")
46
+ label_id = schema.TextLine(
47
+ title=_("ID"),
48
+ description=_("Unique identifier for the procedure button text"),
49
+ required=False,
50
+ )
51
+ label_fr = schema.TextLine(
52
+ title=_("Label (fr)"),
53
+ description=_("Your button title (french)"),
54
+ constraint=max_length_constraint,
55
+ required=True,
56
+ )
57
+ label_nl = schema.TextLine(
58
+ title=_("Label (nl)"),
59
+ description=_("Your button title (dutch)"),
60
+ constraint=max_length_constraint,
61
+ required=False,
62
+ )
63
+ label_de = schema.TextLine(
64
+ title=_("Label (de)"),
65
+ description=_("Your button title (german)"),
66
+ constraint=max_length_constraint,
67
+ required=False,
68
+ )
69
+ label_en = schema.TextLine(
70
+ title=_("Label (en)"),
71
+ description=_("Your button title (english)"),
72
+ constraint=max_length_constraint,
73
+ required=False,
74
+ )
75
+
76
+
77
+ class ISmartwebSiteAdminControlPanel(Interface):
78
+
79
+ widget(procedure_button_text=DataGridFieldFactory)
80
+ procedure_button_text = schema.List(
81
+ title=_("Procedure : Define button text"),
82
+ description=_("Choose procedure submission button text"),
83
+ value_type=DictRow(
84
+ title="Labels",
85
+ schema=IProcedureTextRowSchema,
86
+ ),
87
+ default=[],
88
+ required=False,
89
+ )
90
+
91
+
92
+ class SmartwebSiteAdminControlPanelForm(RegistryEditForm):
93
+ schema = ISmartwebSiteAdminControlPanel
94
+ schema_prefix = "smartweb"
95
+ label = _("Smartweb Site admin Settings")
96
+ # fields = field.Fields(ISmartwebSiteAdminControlPanel)
97
+
98
+
99
+ class SmartwebSiteAdminControlPanelForm(RegistryEditForm):
100
+ schema = ISmartwebSiteAdminControlPanel
101
+ schema_prefix = "smartweb"
102
+ label = _("Smartweb Site admin Settings")
103
+
104
+ def applyChanges(self, data):
105
+ rows = data.get("procedure_button_text") or []
106
+ for row in rows:
107
+ all_label_ids = [row.get("label_id") for row in rows if row.get("label_id")]
108
+ numbers = [
109
+ int(label.split("-")[1])
110
+ for label in all_label_ids
111
+ if isinstance(label, str)
112
+ and label.startswith("label-")
113
+ and label.split("-")[1].isdigit()
114
+ ]
115
+ max_number = max(numbers, default=0)
116
+ if row.get("label_id") is None:
117
+ max_number += 1
118
+ row["label_id"] = f"label-{max_number}"
119
+ new_ids = {row.get("label_id") for row in rows if row.get("label_id")}
120
+
121
+ registry = getUtility(IRegistry)
122
+ old_rows = registry.get("smartweb.procedure_button_text") or []
123
+ old_ids = {row.get("label_id") for row in old_rows if row.get("label_id")}
124
+
125
+ removed_ids = old_ids - new_ids
126
+ if removed_ids:
127
+ brains = api.content.find(portal_type="imio.smartweb.Procedure")
128
+ for removed_id in removed_ids:
129
+ for brain in brains:
130
+ obj = brain.getObject()
131
+ if obj.button_ts_label == removed_id:
132
+ IStatusMessage(self.request).addStatusMessage(
133
+ f"Label ID '{removed_id}' is still used in Procedure '{obj.absolute_url()}' and will not be removed.",
134
+ type="error",
135
+ )
136
+ return False
137
+ return super().applyChanges(data)
138
+
139
+
140
+ SmartwebSiteAdminControlPanelView = layout.wrap_form(
141
+ SmartwebSiteAdminControlPanelForm, ControlPanelFormWrapper
142
+ )
@@ -74,7 +74,7 @@ def format_sitemap_items(items, base_url):
74
74
  formatted_items = []
75
75
  for item in items:
76
76
  item_id = normalizeString(item.get("title"))
77
- item_uid = item.get("id")
77
+ item_uid = item.get("UID")
78
78
  lastmod = item.get("modified") or "1970-01-01T00:00:00Z"
79
79
  formatted_items.append(
80
80
  {
@@ -1,6 +1,5 @@
1
- import './view.less'
2
- jQuery(document).ready(function ($) {
3
1
 
2
+ jQuery(document).ready(function ($) {
4
3
  // Show full schedule table when clicking on today's schedule
5
4
  $(".opening_informations").click(function (e) {
6
5
  $(this).siblings(".table_schedule").toggleClass("table_schedule--active");
@@ -16,11 +15,19 @@ jQuery(document).ready(function ($) {
16
15
  }
17
16
  }
18
17
  });
18
+
19
+ if (window.location.href.indexOf('@@siteadmin-smartweb-controlpanel') !== -1) {
20
+ // On est bien sur la page @@siteadmin-smartweb-controlpanel
21
+ if ($('div.container div.statusmessage-error').length > 0) {
22
+ $('div.container div.statusmessage-info').remove();
23
+ }
24
+ }
19
25
 
20
26
  });
21
27
  // New navigation
22
28
 
23
29
  $(document).ready(function () {
30
+
24
31
  const menu = $('#portal-globalnav');
25
32
  const submenu = $('#subsite-navigation');
26
33
 
@@ -25,6 +25,14 @@ class IProcedure(IPages):
25
25
 
26
26
  procedure_url = schema.URI(title=_("Procedure url"), required=False)
27
27
 
28
+ button_ts_label = schema.Choice(
29
+ vocabulary="imio.smartweb.vocabulary.ProcedureButtonLabels",
30
+ title=_("Button label"),
31
+ description=_("Set button label to redirect to e-guichet"),
32
+ required=False,
33
+ default=None,
34
+ )
35
+
28
36
  @invariant
29
37
  def required_procedure(data):
30
38
  # if data.procedure_ts is None and data.procedure_url is None:
@@ -74,4 +74,10 @@
74
74
  description=""
75
75
  />
76
76
 
77
+ <permission
78
+ id="imio.smartweb.core.ManageSiteAdminControlPanel"
79
+ title="imio.smartweb.core: Manage site admin control panel"
80
+ description=""
81
+ />
82
+
77
83
  </configure>
@@ -11,4 +11,16 @@
11
11
  visible="True">
12
12
  <permission>Manage portal</permission>
13
13
  </configlet>
14
+
15
+ <configlet
16
+ title="Site admin smartweb Settings"
17
+ action_id="siteadmin-smartweb-controlpanel"
18
+ appId="siteadmin-smartweb-controlpanel"
19
+ category="Products"
20
+ condition_expr=""
21
+ icon_expr=""
22
+ url_expr="string:${portal_url}/@@siteadmin-smartweb-controlpanel"
23
+ visible="True">
24
+ <permission>Manage portal</permission>
25
+ </configlet>
14
26
  </object>
@@ -1,6 +1,6 @@
1
1
  <?xml version='1.0' encoding='UTF-8'?>
2
2
  <metadata>
3
- <version>1068</version>
3
+ <version>1070</version>
4
4
  <dependencies>
5
5
  <dependency>profile-plone.app.dexterity:default</dependency>
6
6
  <dependency>profile-plone.app.discussion:default</dependency>
@@ -6,4 +6,7 @@
6
6
  <records interface="imio.smartweb.core.browser.controlpanel.ISmartwebControlPanel"
7
7
  prefix="smartweb" />
8
8
 
9
+ <records interface="imio.smartweb.core.browser.controlpanel_siteadmin.ISmartwebSiteAdminControlPanel"
10
+ prefix="smartweb" />
11
+
9
12
  </registry>
@@ -83,6 +83,11 @@
83
83
  <role name="Site Administrator"/>
84
84
  </permission>
85
85
 
86
+ <permission name="imio.smartweb.core: Manage site admin control panel" acquire="True">
87
+ <role name="Manager"/>
88
+ <role name="Site Administrator"/>
89
+ </permission>
90
+
86
91
  </permissions>
87
92
 
88
93
  </rolemap>
@@ -88,6 +88,15 @@
88
88
  <langstring language="de">Anmeldung</langstring>
89
89
  </caption>
90
90
  </term>
91
+ <term>
92
+ <termIdentifier>offre_d_emploi</termIdentifier>
93
+ <caption>
94
+ <langstring language="fr">Offre d'emploi</langstring>
95
+ <langstring language="en">Job offer</langstring>
96
+ <langstring language="nl">Job aanbod</langstring>
97
+ <langstring language="de">Stellenangebot</langstring>
98
+ </caption>
99
+ </term>
91
100
  <term>
92
101
  <termIdentifier>permis</termIdentifier>
93
102
  <caption>
@@ -19,7 +19,7 @@
19
19
  <property name="filter_content_types">True</property>
20
20
  <property name="allowed_content_types">
21
21
  <element value="imio.smartweb.SectionContact" />
22
- <element value="imio.smartweb.SectionExternalContent" />
22
+ <element value="imio.smartweb.SectionExternalContent" />
23
23
  <element value="imio.smartweb.SectionFiles" />
24
24
  <element value="imio.smartweb.SectionGallery" />
25
25
  <element value="imio.smartweb.SectionHTML" />
@@ -28,6 +28,7 @@
28
28
  <element value="imio.smartweb.SectionPostit" />
29
29
  <element value="imio.smartweb.SectionSelections" />
30
30
  <element value="imio.smartweb.SectionText" />
31
+ <element value="imio.smartweb.SectionTimestampedPublications" />
31
32
  <element value="imio.smartweb.SectionVideo" />
32
33
  </property>
33
34
  <!-- Schema, class and security -->
@@ -32,6 +32,7 @@
32
32
  <element value="imio.smartweb.SectionSelections" />
33
33
  <element value="imio.smartweb.SectionSendinblue" />
34
34
  <element value="imio.smartweb.SectionText" />
35
+ <element value="imio.smartweb.SectionTimestampedPublications" />
35
36
  <element value="imio.smartweb.SectionVideo" />
36
37
  </property>
37
38
  <!-- Schema, class and security -->
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ from imio.smartweb.core.utils import populate_procedure_button_text
3
4
  from Products.CMFPlone.interfaces import INonInstallable
4
5
  from zope.interface import implementer
5
6
 
@@ -25,6 +26,7 @@ class HiddenProfiles(object):
25
26
 
26
27
  def post_install(context):
27
28
  """Post install script"""
29
+ populate_procedure_button_text()
28
30
 
29
31
 
30
32
  def uninstall(context):
@@ -305,7 +305,23 @@
305
305
  directory="profiles/1067_to_1068"
306
306
  description="Don't display cropping action on react views"
307
307
  provides="Products.GenericSetup.interfaces.EXTENSION"
308
- />
308
+ />
309
+
310
+ <genericsetup:registerProfile
311
+ name="upgrade_1068_to_1069"
312
+ title="Upgrade core from 1068 to 1069"
313
+ directory="profiles/1068_to_1069"
314
+ description="Add new control panel for site admin"
315
+ provides="Products.GenericSetup.interfaces.EXTENSION"
316
+ />
317
+
318
+ <genericsetup:registerProfile
319
+ name="upgrade_1069_to_1070"
320
+ title="Upgrade core from 1069 to 1070"
321
+ directory="profiles/1069_to_1070"
322
+ description="Add term offre_d_emploi to procedure_taxonomy"
323
+ provides="Products.GenericSetup.interfaces.EXTENSION"
324
+ />
309
325
 
310
326
  <genericsetup:upgradeStep
311
327
  title="Configure first official release"
@@ -997,6 +1013,30 @@
997
1013
  />
998
1014
  </genericsetup:upgradeSteps>
999
1015
 
1016
+ <genericsetup:upgradeSteps
1017
+ source="1068"
1018
+ destination="1069"
1019
+ profile="imio.smartweb.core:default">
1020
+ <genericsetup:upgradeDepends
1021
+ title="Add new control panel for site admin"
1022
+ import_profile="imio.smartweb.core.upgrades:upgrade_1068_to_1069"
1023
+ />
1024
+ <genericsetup:upgradeStep
1025
+ title="Set some default texts for procedure button"
1026
+ handler=".upgrades.populate_procedure_button_text"
1027
+ />
1028
+ </genericsetup:upgradeSteps>
1029
+
1030
+ <genericsetup:upgradeSteps
1031
+ source="1069"
1032
+ destination="1070"
1033
+ profile="imio.smartweb.core:default">
1034
+ <genericsetup:upgradeDepends
1035
+ title="Add term offre_d_emploi to procedure_taxonomy"
1036
+ import_profile="imio.smartweb.core.upgrades:upgrade_1069_to_1070"
1037
+ />
1038
+ </genericsetup:upgradeSteps>
1039
+
1000
1040
  <!--genericsetup:upgradeStep
1001
1041
  title="Check contact itinerary if address was checked in visible blocks"
1002
1042
  description=""
@@ -0,0 +1,26 @@
1
+ <?xml version="1.0"?>
2
+ <object name="portal_controlpanel">
3
+ <configlet
4
+ title="Smartweb Settings"
5
+ action_id="smartweb-controlpanel"
6
+ appId="smartweb-controlpanel"
7
+ category="Products"
8
+ condition_expr=""
9
+ icon_expr=""
10
+ url_expr="string:${portal_url}/@@smartweb-controlpanel"
11
+ visible="True">
12
+ <permission>Manage portal</permission>
13
+ </configlet>
14
+
15
+ <configlet
16
+ title="Site admin smartweb Settings"
17
+ action_id="siteadmin-smartweb-controlpanel"
18
+ appId="siteadmin-smartweb-controlpanel"
19
+ category="Products"
20
+ condition_expr=""
21
+ icon_expr=""
22
+ url_expr="string:${portal_url}/@@siteadmin-smartweb-controlpanel"
23
+ visible="True">
24
+ <permission>Manage portal</permission>
25
+ </configlet>
26
+ </object>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0"?>
2
+ <registry
3
+ xmlns:i18n="http://xml.zope.org/namespaces/i18n"
4
+ i18n:domain="imio.smartweb">
5
+
6
+ <records interface="imio.smartweb.core.browser.controlpanel_siteadmin.ISmartwebSiteAdminControlPanel"
7
+ prefix="smartweb" />
8
+
9
+ </registry>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0"?>
2
+ <rolemap>
3
+
4
+ <permissions>
5
+ <permission name="imio.smartweb.core: Manage site admin control panel" acquire="True">
6
+ <role name="Manager"/>
7
+ <role name="Site Administrator"/>
8
+ </permission>
9
+ </permissions>
10
+
11
+ </rolemap>
@@ -0,0 +1,9 @@
1
+ [taxonomy]
2
+ name = procedure_category
3
+ title = Catégorie d'une démarche
4
+ default_language = fr
5
+ field_title = Catégorie
6
+ field_description = Important! Ces catégories sont utilisées pour créer des listes accessibles via le menu navigation
7
+ taxonomy_fieldset = categorization
8
+ is_single_select = true
9
+ is_required = false
@@ -0,0 +1,121 @@
1
+ <?xml version='1.0' encoding='utf-8'?>
2
+ <vdex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.imsglobal.org/xsd/imsvdex_v1p0" xsi:schemaLocation="http://www.imsglobal.org/xsd/imsvdex_v1p0 imsvdex_v1p0.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd" profileType="hierarchicalTokenTerms" orderSignificant="false" language="fr">
3
+ <vocabIdentifier>procedure_category</vocabIdentifier>
4
+ <term>
5
+ <termIdentifier>actes</termIdentifier>
6
+ <caption>
7
+ <langstring language="fr">Acte (naissance, mariage, décès, etc.)</langstring>
8
+ <langstring language="en">Act (birth, marriage, death, etc.)</langstring>
9
+ <langstring language="nl">Akte (geboorte, huwelijk, overlijden, enz.)</langstring>
10
+ <langstring language="de">Urkunde (Geburt, Ehe, Tod, usw.)</langstring>
11
+ </caption>
12
+ </term>
13
+ <term>
14
+ <termIdentifier>autorisation_carte</termIdentifier>
15
+ <caption>
16
+ <langstring language="fr">Autorisation et carte</langstring>
17
+ <langstring language="en">Authorization and card</langstring>
18
+ <langstring language="nl">Vergunning en kaart</langstring>
19
+ <langstring language="de">Genehmigung und Karte</langstring>
20
+ </caption>
21
+ </term>
22
+ <term>
23
+ <termIdentifier>certificat</termIdentifier>
24
+ <caption>
25
+ <langstring language="fr">Certificat (de vie, d'hérédité, etc.)</langstring>
26
+ <langstring language="en">Certificate (of life, inheritance, etc.)</langstring>
27
+ <langstring language="nl">Certificaat (van leven, van erfenis, enz.)</langstring>
28
+ <langstring language="de">Bescheinigung (des Lebens, des Erbes, usw.)</langstring>
29
+ </caption>
30
+ </term>
31
+ <term>
32
+ <termIdentifier>declaration</termIdentifier>
33
+ <caption>
34
+ <langstring language="fr">Déclaration</langstring>
35
+ <langstring language="en">Statement</langstring>
36
+ <langstring language="nl">Verklaring</langstring>
37
+ <langstring language="de">Erklärung</langstring>
38
+ </caption>
39
+ </term>
40
+ <term>
41
+ <termIdentifier>demande</termIdentifier>
42
+ <caption>
43
+ <langstring language="fr">Demande (concession funéraire, changement de prénom, etc.)</langstring>
44
+ <langstring language="en">Request (funeral concession, change of first name, etc.)</langstring>
45
+ <langstring language="nl">Aanvraag (begrafenisconcessie, naamsverandering, enz.)</langstring>
46
+ <langstring language="de">Antrag (Begräbnis Konzession, Namensänderung, usw.)</langstring>
47
+ </caption>
48
+ </term>
49
+ <term>
50
+ <termIdentifier>document_d_identite</termIdentifier>
51
+ <caption>
52
+ <langstring language="fr">Document d'identité</langstring>
53
+ <langstring language="en">Identity document</langstring>
54
+ <langstring language="nl">Identiteitsdocument</langstring>
55
+ <langstring language="de">Ausweisdokument</langstring>
56
+ </caption>
57
+ </term>
58
+ <term>
59
+ <termIdentifier>extrait_de_registre</termIdentifier>
60
+ <caption>
61
+ <langstring language="fr">Extrait de registre</langstring>
62
+ <langstring language="en">Register extract</langstring>
63
+ <langstring language="nl">Uittreksel uit het register</langstring>
64
+ <langstring language="de">Registerauszug</langstring>
65
+ </caption>
66
+ </term>
67
+ <term>
68
+ <termIdentifier>information_pratique</termIdentifier>
69
+ <caption>
70
+ <langstring language="fr">Information pratique</langstring>
71
+ <langstring language="en">Practical information</langstring>
72
+ <langstring language="nl">Praktische informatie</langstring>
73
+ <langstring language="de">Praktische Information</langstring>
74
+ </caption>
75
+ </term>
76
+ <term>
77
+ <termIdentifier>inscription</termIdentifier>
78
+ <caption>
79
+ <langstring language="fr">Inscription</langstring>
80
+ <langstring language="en">Registration</langstring>
81
+ <langstring language="nl">Inschrijving</langstring>
82
+ <langstring language="de">Anmeldung</langstring>
83
+ </caption>
84
+ </term>
85
+ <term>
86
+ <termIdentifier>offre_d_emploi</termIdentifier>
87
+ <caption>
88
+ <langstring language="fr">Offre d'emploi</langstring>
89
+ <langstring language="en">Job offer</langstring>
90
+ <langstring language="nl">Job aanbod</langstring>
91
+ <langstring language="de">Stellenangebot</langstring>
92
+ </caption>
93
+ </term>
94
+ <term>
95
+ <termIdentifier>permis</termIdentifier>
96
+ <caption>
97
+ <langstring language="fr">Permis</langstring>
98
+ <langstring language="en">License</langstring>
99
+ <langstring language="nl">Vergunning</langstring>
100
+ <langstring language="de">Erlaubnis</langstring>
101
+ </caption>
102
+ </term>
103
+ <term>
104
+ <termIdentifier>plainte_et_reclamation</termIdentifier>
105
+ <caption>
106
+ <langstring language="fr">Plainte et réclamation</langstring>
107
+ <langstring language="en">Complaint</langstring>
108
+ <langstring language="nl">Klacht</langstring>
109
+ <langstring language="de">Beschwerde</langstring>
110
+ </caption>
111
+ </term>
112
+ <term>
113
+ <termIdentifier>prime_et_aide</termIdentifier>
114
+ <caption>
115
+ <langstring language="fr">Prime et aide</langstring>
116
+ <langstring language="en">Bonus and aid</langstring>
117
+ <langstring language="nl">Premie en hulp</langstring>
118
+ <langstring language="de">Prämie und Hilfe</langstring>
119
+ </caption>
120
+ </term>
121
+ </vdex>
@@ -2,6 +2,9 @@
2
2
 
3
3
  from imio.smartweb.core.browser.controlpanel import ISmartwebControlPanel
4
4
  from imio.smartweb.core.contents import IPages
5
+ from imio.smartweb.core.utils import (
6
+ populate_procedure_button_text as utils_populate_procedure_button_text,
7
+ )
5
8
  from imio.smartweb.locales import SmartwebMessageFactory as _
6
9
  from eea.facetednavigation.interfaces import ICriteria
7
10
  from eea.facetednavigation.subtypes.interfaces import IFacetedNavigable
@@ -13,7 +16,6 @@ from plone.registry.interfaces import IRegistry
13
16
  from zope.annotation.interfaces import IAnnotations
14
17
  from zope.component import getUtility
15
18
  from zope.schema import getFieldNames
16
- from zope.schema import TextLine
17
19
 
18
20
  import logging
19
21
 
@@ -291,3 +293,7 @@ def update_control_panel_combo_api_fieldname(context):
291
293
  logger.info("La clé 'smartweb.url_formdefs_api' a été supprimée.")
292
294
  except KeyError:
293
295
  logger.info("La clé 'smartweb.url_formdefs_api' n'existe pas dans le registre.")
296
+
297
+
298
+ def populate_procedure_button_text(context):
299
+ utils_populate_procedure_button_text()
@@ -9,11 +9,13 @@ from more_itertools import chunked
9
9
  from plone import api
10
10
  from plone.app.multilingual.interfaces import ILanguageRootFolder
11
11
  from plone.dexterity.interfaces import IDexterityContent
12
+ from plone.registry.interfaces import IRegistry
12
13
  from Products.CMFPlone.defaultpage import get_default_page
13
14
  from Products.CMFPlone.interfaces.siteroot import IPloneSiteRoot
14
15
  from Products.CMFPlone.utils import base_hasattr
15
16
  from urllib.parse import urlparse, urlunparse
16
17
  from zope.component import getSiteManager
18
+ from zope.component import getUtility
17
19
  from zope.component import queryMultiAdapter
18
20
 
19
21
  import base64
@@ -252,8 +254,20 @@ def get_basic_auth_json(url, user, pwd):
252
254
  return json
253
255
 
254
256
 
257
+ def is_valid_url(url: str) -> bool:
258
+ try:
259
+ parsed = urlparse(url)
260
+ return all([parsed.scheme in ("http", "https"), parsed.netloc])
261
+ except Exception:
262
+ return False
263
+
264
+
255
265
  def get_ts_api_url(service="wcs"):
256
266
  url_ts = get_value_from_registry("smartweb.url_ts")
267
+ if url_ts is None:
268
+ return None
269
+ if not is_valid_url(url_ts):
270
+ return None
257
271
  parsed_url = urlparse(url_ts)
258
272
  if "wcs" in service:
259
273
  new_netloc = parsed_url.netloc.replace(
@@ -279,3 +293,27 @@ def remove_cache_key(json_data: dict) -> dict:
279
293
  json_data["batching"][key] = pattern.sub("", json_data["batching"][key])
280
294
 
281
295
  return json_data
296
+
297
+
298
+ def populate_procedure_button_text():
299
+ """Populate the procedure_button_text in the control panel registry."""
300
+ registry = getUtility(IRegistry)
301
+ current = registry.get("smartweb.procedure_button_text", None)
302
+ # if not current:
303
+ # logger.info("Populating smartweb.procedure_button_text in registry")
304
+ registry["smartweb.procedure_button_text"] = [
305
+ {
306
+ "label_id": "label-1",
307
+ "label_fr": "Effectuer cette démarche en ligne",
308
+ "label_nl": "Voltooi deze procedure online",
309
+ "label_de": "Diese Prozedur online abschließen",
310
+ "label_en": "Complete this procedure online",
311
+ },
312
+ {
313
+ "label_id": "label-2",
314
+ "label_fr": "Postuler",
315
+ "label_nl": "Solliciteren",
316
+ "label_de": "Bewerben",
317
+ "label_en": "Apply",
318
+ },
319
+ ]
@@ -13,5 +13,6 @@
13
13
  <a target="_blank"
14
14
  tal:attributes="href procedure/value;
15
15
  title python:'' if view.is_anonymous else procedure.title"
16
+ tal:content="view/get_button_label"
16
17
  i18n:translate="">Complete this procedure online</a>
17
18
  </div>