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.
- imio/smartweb/core/browser/configure.zcml +8 -0
- imio/smartweb/core/browser/controlpanel_siteadmin.py +142 -0
- imio/smartweb/core/browser/sitemap.py +1 -1
- imio/smartweb/core/browser/static/src/view.js +9 -2
- imio/smartweb/core/contents/pages/procedure/content.py +8 -0
- imio/smartweb/core/permissions.zcml +6 -0
- imio/smartweb/core/profiles/default/controlpanel.xml +12 -0
- imio/smartweb/core/profiles/default/metadata.xml +1 -1
- imio/smartweb/core/profiles/default/registry/smartweb.xml +3 -0
- imio/smartweb/core/profiles/default/rolemap.xml +5 -0
- imio/smartweb/core/profiles/default/taxonomies/procedure_category.xml +9 -0
- imio/smartweb/core/profiles/default/types/imio.smartweb.Page.xml +2 -1
- imio/smartweb/core/profiles/default/types/imio.smartweb.PortalPage.xml +1 -0
- imio/smartweb/core/setuphandlers.py +2 -0
- imio/smartweb/core/upgrades/configure.zcml +41 -1
- imio/smartweb/core/upgrades/profiles/1068_to_1069/controlpanel.xml +26 -0
- imio/smartweb/core/upgrades/profiles/1068_to_1069/registry.xml +9 -0
- imio/smartweb/core/upgrades/profiles/1068_to_1069/rolemap.xml +11 -0
- imio/smartweb/core/upgrades/profiles/1069_to_1070/taxonomies/procedure_category.cfg +9 -0
- imio/smartweb/core/upgrades/profiles/1069_to_1070/taxonomies/procedure_category.xml +121 -0
- imio/smartweb/core/upgrades/upgrades.py +7 -1
- imio/smartweb/core/utils.py +38 -0
- imio/smartweb/core/viewlets/procedure.pt +1 -0
- imio/smartweb/core/viewlets/procedure.py +14 -0
- imio/smartweb/core/vocabularies.py +28 -2
- imio/smartweb/core/vocabularies.zcml +6 -0
- imio/smartweb/core/webcomponents/build/css/251.smartweb-webcomponents-compiled.css +1 -0
- imio/smartweb/core/webcomponents/build/css/373.smartweb-webcomponents-compiled.css +1 -1
- imio/smartweb/core/webcomponents/build/css/666.smartweb-webcomponents-compiled.css +1 -1
- imio/smartweb/core/webcomponents/build/css/700.smartweb-webcomponents-compiled.css +1 -0
- imio/smartweb/core/webcomponents/build/js/141.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/141.smartweb-webcomponents-compiled.js.LICENSE.txt +3 -3
- imio/smartweb/core/webcomponents/build/js/15.smartweb-webcomponents-compiled.js +2 -0
- imio/smartweb/core/webcomponents/build/js/21.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/218.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/251.smartweb-webcomponents-compiled.js +1 -0
- imio/smartweb/core/webcomponents/build/js/373.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/666.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/700.smartweb-webcomponents-compiled.js +1 -0
- imio/smartweb/core/webcomponents/build/js/824.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/919.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/922.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/963.smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/build/js/smartweb-webcomponents-compiled.js +1 -1
- imio/smartweb/core/webcomponents/package.json +1 -1
- imio/smartweb/core/webcomponents/src/components/Annuaire/Annuaire.scss +32 -1
- imio/smartweb/core/webcomponents/src/components/Annuaire/Filters/Filter.jsx +118 -70
- imio/smartweb/core/webcomponents/src/components/Filters/MainFilter.scss +4 -8
- imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.jsx +167 -85
- imio/smartweb/core/webcomponents/src/components/Filters/TaxonomyFilter.scss +44 -15
- imio/smartweb/core/webcomponents/src/components/News/News.scss +0 -1
- imio/smartweb/core/webcomponents/src/components/News/NewsContent/NewsContent.jsx +20 -11
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/METADATA +18 -1
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/RECORD +61 -56
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/WHEEL +1 -1
- imio/smartweb/core/webcomponents/build/css/420.smartweb-webcomponents-compiled.css +0 -1
- imio/smartweb/core/webcomponents/build/css/486.smartweb-webcomponents-compiled.css +0 -1
- imio/smartweb/core/webcomponents/build/css/884.smartweb-webcomponents-compiled.css +0 -1
- imio/smartweb/core/webcomponents/build/js/486.smartweb-webcomponents-compiled.js +0 -1
- imio/smartweb/core/webcomponents/build/js/491.smartweb-webcomponents-compiled.js +0 -2
- imio/smartweb/core/webcomponents/build/js/884.smartweb-webcomponents-compiled.js +0 -1
- /imio/smartweb/core/webcomponents/build/js/{491.smartweb-webcomponents-compiled.js.LICENSE.txt → 15.smartweb-webcomponents-compiled.js.LICENSE.txt} +0 -0
- /imio.smartweb.core-1.4.4-py3.12-nspkg.pth → /imio.smartweb.core-1.4.5-py3.12-nspkg.pth +0 -0
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/licenses/LICENSE.GPL +0 -0
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/licenses/LICENSE.rst +0 -0
- {imio_smartweb_core-1.4.4.dist-info → imio_smartweb_core-1.4.5.dist-info}/namespace_packages.txt +0 -0
- {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("
|
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:
|
@@ -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>
|
@@ -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
|
+
[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()
|
imio/smartweb/core/utils.py
CHANGED
@@ -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
|
+
]
|