imio.smartweb.core 1.2.42__py3-none-any.whl → 1.2.44__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 (27) hide show
  1. imio/smartweb/core/browser/sitemap.py +10 -3
  2. imio/smartweb/core/contents/pages/portal_page/view.py +3 -0
  3. imio/smartweb/core/contents/pages/views.py +2 -0
  4. imio/smartweb/core/contents/rest/utils.py +0 -1
  5. imio/smartweb/core/contents/sections/configure.zcml +18 -0
  6. imio/smartweb/core/contents/sections/files/view.py +2 -1
  7. imio/smartweb/core/contents/sections/macros.pt +25 -0
  8. imio/smartweb/core/contents/sections/views.py +38 -1
  9. imio/smartweb/core/interfaces.py +4 -0
  10. imio/smartweb/core/profiles/default/metadata.xml +1 -1
  11. imio/smartweb/core/profiles/default/types/imio.smartweb.SectionFiles.xml +1 -0
  12. imio/smartweb/core/tests/test_htmx_in_sections.py +124 -0
  13. imio/smartweb/core/upgrades/configure.zcml +19 -1
  14. imio/smartweb/core/upgrades/profiles/1055_to_1056/types/imio.smartweb.SectionFiles.xml +12 -0
  15. imio/smartweb/core/utils.py +23 -0
  16. imio/smartweb/core/viewlets/configure.zcml +22 -0
  17. imio/smartweb/core/viewlets/htmx.py +15 -0
  18. imio/smartweb/core/viewlets/htmx_js_header.pt +59 -0
  19. imio/smartweb/core/webcomponents/src/components/News/News.scss +1 -1
  20. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/METADATA +24 -1
  21. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/RECORD +27 -23
  22. /imio.smartweb.core-1.2.42-py3.10-nspkg.pth → /imio.smartweb.core-1.2.44-py3.10-nspkg.pth +0 -0
  23. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/LICENSE.GPL +0 -0
  24. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/LICENSE.rst +0 -0
  25. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/WHEEL +0 -0
  26. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/namespace_packages.txt +0 -0
  27. {imio.smartweb.core-1.2.42.dist-info → imio.smartweb.core-1.2.44.dist-info}/top_level.txt +0 -0
@@ -4,7 +4,6 @@ from imio.smartweb.core.config import EVENTS_URL
4
4
  from imio.smartweb.core.config import NEWS_URL
5
5
  from imio.smartweb.core.contents.rest.utils import get_auth_sources_response
6
6
  from imio.smartweb.core.contents.rest.utils import get_entity_id
7
- from imio.smartweb.core.utils import get_json
8
7
  from plone import api
9
8
  from plone.base.interfaces import IPloneSiteRoot
10
9
  from plone.app.layout.sitemap.sitemap import SiteMapView
@@ -13,6 +12,10 @@ from Products.CMFCore.utils import getToolByName
13
12
  from Products.CMFPlone.utils import normalizeString
14
13
  from zope.component import getUtility
15
14
 
15
+ import logging
16
+
17
+ logger = logging.getLogger("imio.smartweb.core")
18
+
16
19
 
17
20
  class CustomSiteMapView(SiteMapView):
18
21
 
@@ -122,8 +125,12 @@ class CustomSiteMapView(SiteMapView):
122
125
  return self.request.response.setStatus(
123
126
  404, "No default authentic source found"
124
127
  )
125
- brains = api.content.find(UID=auth_source_uid)
126
- obj = brains[0].getObject()
128
+ obj = api.content.get(UID=auth_source_uid)
129
+ if obj is None:
130
+ logger.warning(
131
+ f"Seems that a main authentic view (for {auth_source_key}) is not found"
132
+ )
133
+ continue
127
134
  auth_source_view_url = obj.absolute_url()
128
135
  results = get_auth_sources_response(
129
136
  auth_source_key, normalizeString(entity_id), (60 * 60 * 24)
@@ -1,8 +1,11 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ from imio.smartweb.core.interfaces import IHtmxViewUtils
3
4
  from Products.Five.browser import BrowserView
5
+ from zope.interface import implementer
4
6
 
5
7
 
8
+ @implementer(IHtmxViewUtils)
6
9
  class NoTitleView(BrowserView):
7
10
  def __call__(self):
8
11
  return ""
@@ -2,6 +2,7 @@
2
2
 
3
3
  from Acquisition import aq_inner
4
4
  from imio.smartweb.core.utils import get_scale_url
5
+ from imio.smartweb.core.interfaces import IHtmxViewUtils
5
6
  from imio.smartweb.core.interfaces import IViewWithoutLeadImage
6
7
  from imio.smartweb.locales import SmartwebMessageFactory as _
7
8
  from Products.CMFPlone.resources import add_bundle_on_request
@@ -17,6 +18,7 @@ from zope.interface import implementer
17
18
 
18
19
 
19
20
  @implementer(IViewWithoutLeadImage)
21
+ @implementer(IHtmxViewUtils)
20
22
  class PagesView(FolderView):
21
23
  """Pages view"""
22
24
 
@@ -5,7 +5,6 @@ from imio.smartweb.core.config import EVENTS_URL
5
5
  from imio.smartweb.core.config import NEWS_URL
6
6
  from imio.smartweb.core.utils import get_wca_token
7
7
  from plone.memoize import ram
8
- from plone.memoize.view import memoize
9
8
  from time import time
10
9
  from zope.component import getUtility
11
10
  from zope.schema.interfaces import IVocabularyFactory
@@ -54,6 +54,24 @@
54
54
  layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
55
55
  />
56
56
 
57
+ <browser:page
58
+ for="*"
59
+ name="getsizes"
60
+ attribute="get_sizes"
61
+ class="imio.smartweb.core.contents.sections.views.SectionView"
62
+ permission="zope2.View"
63
+ layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
64
+ />
65
+
66
+ <browser:page
67
+ for="*"
68
+ name="savesize"
69
+ attribute="save_size"
70
+ class="imio.smartweb.core.contents.sections.views.SectionView"
71
+ permission="zope2.View"
72
+ layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
73
+ />
74
+
57
75
  <subscriber
58
76
  for="imio.smartweb.core.contents.ISection
59
77
  zope.lifecycleevent.interfaces.IObjectAddedEvent"
@@ -10,6 +10,7 @@ class FilesView(CarouselOrTableSectionView):
10
10
  """Files Section view"""
11
11
 
12
12
  def items(self):
13
+ orientation = self.context.orientation
13
14
  image_scale = self.image_scale
14
15
  items = self.context.listFolderContents()
15
16
  results = []
@@ -18,7 +19,7 @@ class FilesView(CarouselOrTableSectionView):
18
19
  has_image = True if getattr(item.aq_base, "image", None) else False
19
20
  file_view = queryMultiAdapter((item, self.request), name="file_view")
20
21
  scale_url = get_scale_url(
21
- item, self.request, "image", image_scale, orientation="paysage"
22
+ item, self.request, "image", image_scale, orientation
22
23
  )
23
24
  results.append(
24
25
  {
@@ -53,6 +53,31 @@
53
53
  <a tal:attributes="href string:${context/absolute_url}/delete_confirmation"
54
54
  i18n:translate="">Delete section</a>
55
55
 
56
+ <form class="form_section_size"
57
+ style="display: none;"
58
+ hx-swap="innerHTML"
59
+ hx-trigger="change"
60
+ tal:attributes="name string:sizesForm_${context/UID};
61
+ id string:sizesForm_${context/UID};
62
+ hx-boost string:${context/UID};
63
+ hx-post string:${context/absolute_url}/@@savesize;
64
+ hx-target string:#selected_size_${context/UID}">
65
+ <select name="sectionSize"
66
+ class="form-select select_section_size"
67
+ hx-vals="serialize"
68
+ tal:attributes="name string:select_${context/UID};
69
+ id string:select_${context/UID}">
70
+ <option tal:repeat="size view/get_sizes"
71
+ tal:attributes="value size/key"
72
+ tal:content="size/value"></option>
73
+ </select>
74
+ </form>
75
+ <a class="section_size"
76
+ href="#"
77
+ tal:attributes="id string:selected_size_${context/UID};
78
+ uid string:${context/UID}"
79
+ tal:content="string:${view/get_section_size}"></a>
80
+
56
81
  <tal:dates define="modified context/ModificationDate">
57
82
  <span class="documentModified"
58
83
  tal:condition="modified">
@@ -1,5 +1,9 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ from Acquisition import aq_inner
4
+ from imio.smartweb.common.utils import get_vocabulary
5
+ from imio.smartweb.common.utils import translate_vocabulary_term
6
+ from imio.smartweb.core.utils import get_current_language
3
7
  from imio.smartweb.core.utils import hash_md5
4
8
  from imio.smartweb.locales import SmartwebMessageFactory as _
5
9
  from plone import api
@@ -60,6 +64,39 @@ class SectionView(BrowserView):
60
64
  def is_anonymous(self):
61
65
  return api.user.is_anonymous()
62
66
 
67
+ def get_section_size(self):
68
+ if not self.context.bootstrap_css_class:
69
+ return _("Define section size")
70
+ current_lang = api.portal.get_current_language()[:2]
71
+ return translate_vocabulary_term(
72
+ "imio.smartweb.vocabulary.BootstrapCSS",
73
+ self.context.bootstrap_css_class,
74
+ current_lang,
75
+ )
76
+
77
+ @property
78
+ def get_sizes(self):
79
+ voc = get_vocabulary("imio.smartweb.vocabulary.BootstrapCSS")
80
+ sizes = [{"key": t.token, "value": _(t.title)} for t in voc]
81
+ return sizes
82
+
83
+ @property
84
+ def save_size(self):
85
+ select_name = f"select_{self.context.UID()}"
86
+ if not self.request.form.get(select_name):
87
+ return json.dumps({})
88
+ section_size = self.request.form.get(select_name)
89
+ context = aq_inner(self.context)
90
+ context.bootstrap_css_class = section_size
91
+ context.reindexObject()
92
+ current_lang = get_current_language(self.context)[:2]
93
+ size_txt = translate_vocabulary_term(
94
+ "imio.smartweb.vocabulary.BootstrapCSS",
95
+ section_size,
96
+ current_lang,
97
+ )
98
+ return json.dumps({"id": section_size, "title": size_txt})
99
+
63
100
 
64
101
  class CarouselOrTableSectionView(SectionView):
65
102
  """Section view that can display a carousel"""
@@ -71,7 +108,7 @@ class CarouselOrTableSectionView(SectionView):
71
108
  if layout == "carousel_view":
72
109
  return self.context.nb_results_by_batch == 1 and "affiche" or "vignette"
73
110
  elif layout == "table_view":
74
- return self.context.nb_results_by_batch == 1 and "liste" or "vignette"
111
+ return self.context.nb_results_by_batch == 1 and "affiche" or "vignette"
75
112
  else:
76
113
  return getattr(self.context, "image_scale", "")
77
114
 
@@ -42,3 +42,7 @@ class IOdwbViewUtils(Interface):
42
42
 
43
43
  def is_odwb_widget_plugins():
44
44
  """Return True if we are in the generic odwb widget plugins"""
45
+
46
+
47
+ class IHtmxViewUtils(Interface):
48
+ """ """
@@ -1,6 +1,6 @@
1
1
  <?xml version='1.0' encoding='UTF-8'?>
2
2
  <metadata>
3
- <version>1055</version>
3
+ <version>1056</version>
4
4
  <dependencies>
5
5
  <dependency>profile-plone.app.dexterity:default</dependency>
6
6
  <dependency>profile-plone.app.imagecropping:default</dependency>
@@ -31,6 +31,7 @@
31
31
  <element value="plone.namefromtitle"/>
32
32
  <element value="plone.locking"/>
33
33
  <element value="plone.shortname"/>
34
+ <element value="imio.smartweb.orientation"/>
34
35
  </property>
35
36
 
36
37
  <!-- View information -->
@@ -0,0 +1,124 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from imio.smartweb.core.interfaces import IImioSmartwebCoreLayer
4
+ from imio.smartweb.core.testing import IMIO_SMARTWEB_CORE_FUNCTIONAL_TESTING
5
+ from imio.smartweb.core.testing import ImioSmartwebTestCase
6
+ from plone import api
7
+ from plone.app.testing import logout
8
+ from plone.app.testing import setRoles
9
+ from plone.app.testing import TEST_USER_ID
10
+ from plone.app.testing import TEST_USER_NAME
11
+ from plone.app.testing import TEST_USER_PASSWORD
12
+ from plone.app.textfield.value import RichTextValue
13
+ from plone.protect.authenticator import createToken
14
+ from plone.testing.zope import Browser
15
+ from zope.component import getMultiAdapter
16
+ from zope.component import queryMultiAdapter
17
+ from zope.interface import alsoProvides
18
+
19
+ import json
20
+ import re
21
+ import transaction
22
+
23
+
24
+ class TestSections(ImioSmartwebTestCase):
25
+ layer = IMIO_SMARTWEB_CORE_FUNCTIONAL_TESTING
26
+
27
+ def setUp(self):
28
+ self.request = self.layer["request"]
29
+ self.portal = self.layer["portal"]
30
+ setRoles(self.portal, TEST_USER_ID, ["Manager"])
31
+ self.page = api.content.create(
32
+ container=self.portal,
33
+ type="imio.smartweb.Page",
34
+ id="page",
35
+ )
36
+ alsoProvides(self.request, IImioSmartwebCoreLayer)
37
+ self.section_text = api.content.create(
38
+ container=self.page,
39
+ type="imio.smartweb.SectionText",
40
+ title="Section Text",
41
+ id="section-text",
42
+ )
43
+ self.section_text.text = RichTextValue(
44
+ "<p>My rich text</p>", "text/html", "text/html"
45
+ )
46
+ api.content.transition(self.page, "publish")
47
+
48
+ def test_htmx_not_loaded_for_anonymous(self):
49
+ logout()
50
+ view = queryMultiAdapter((self.page, self.request), name="full_view")
51
+ self.assertNotIn("https://unpkg.com/htmx.org@1.9.10/dist/htmx.js", view())
52
+
53
+ def test_all_html_elements_are_here(self):
54
+ view = queryMultiAdapter((self.page, self.request), name="full_view")
55
+ # test if htmx well loaded
56
+ self.assertIn("https://unpkg.com/htmx.org@1.9.10/dist/htmx.js", view())
57
+ section_text_uid = self.section_text.UID()
58
+ # test if elements are here and have the right id
59
+ self.assertIn(f"sizesForm_{section_text_uid}", view())
60
+ self.assertIn(f'hx-boost="{section_text_uid}"', view())
61
+ self.assertIn(f'id="selected_size_{section_text_uid}"', view())
62
+ self.assertIn(f'hx-target="#selected_size_{section_text_uid}"', view())
63
+
64
+ def test_options_in_select(self):
65
+ view = queryMultiAdapter((self.page, self.request), name="full_view")
66
+ section_text_view = getMultiAdapter(
67
+ (self.section_text, self.request), name="view"
68
+ )
69
+ available_sizes = section_text_view.get_sizes
70
+ match = re.search(
71
+ r'<form class="form_section_size".*?</form>', view(), re.DOTALL
72
+ )
73
+ form_to_choose_size = match.group(0)
74
+ nb_occurrences = len(re.findall(r"<option", form_to_choose_size))
75
+ self.assertEqual(len(available_sizes), nb_occurrences)
76
+ for size in available_sizes:
77
+ self.assertIn(
78
+ f'<option value="{size["key"]}">{size["value"]}</option>',
79
+ form_to_choose_size,
80
+ )
81
+
82
+ def test_change_section_size(self):
83
+ transaction.commit()
84
+ section_text_uid = self.section_text.UID()
85
+ browser = Browser(self.layer["app"])
86
+ browser.addHeader(
87
+ "Authorization",
88
+ "Basic %s:%s"
89
+ % (
90
+ TEST_USER_NAME,
91
+ TEST_USER_PASSWORD,
92
+ ),
93
+ )
94
+ browser.open(f"{self.page.absolute_url()}/full_view/?language=fr")
95
+ contents = browser.contents
96
+ div_section_container = (
97
+ '<div class="sortable-section sectiontext" data-id="section-text" style="">'
98
+ )
99
+ self.assertIn(div_section_container, contents)
100
+
101
+ select = browser.getControl(name=f"select_{section_text_uid}")
102
+ select.value = "col-sm-12"
103
+ browser.getForm(name=f"sizesForm_{section_text_uid}").submit()
104
+ section_text_view = getMultiAdapter(
105
+ (self.section_text, self.request), name="view"
106
+ )
107
+ self.assertEqual(section_text_view.save_size, json.dumps({}))
108
+ select_name = f"select_{self.section_text.UID()}"
109
+ self.request.form[select_name] = select.value[0]
110
+ self.request.form["_authenticator"] = createToken()
111
+ section_text_view = getMultiAdapter(
112
+ (self.section_text, self.request), name="view"
113
+ )
114
+ section_text_view.save_size
115
+ self.assertEqual(
116
+ section_text_view.save_size,
117
+ json.dumps({"id": "col-sm-12", "title": "Full width"}),
118
+ )
119
+ transaction.commit()
120
+
121
+ browser.open(f"{self.page.absolute_url()}/full_view/?language=fr")
122
+ contents = browser.contents
123
+ div_section_container = f'<div class="sortable-section sectiontext {select.value[0]}" data-id="section-text" style="">'
124
+ self.assertIn(div_section_container, contents)
@@ -219,6 +219,14 @@
219
219
  provides="Products.GenericSetup.interfaces.EXTENSION"
220
220
  />
221
221
 
222
+ <genericsetup:registerProfile
223
+ name="upgrade_1055_to_1056"
224
+ title="Upgrade core from 1055 to 1056"
225
+ directory="profiles/1055_to_1056"
226
+ description="Add imio.smartweb.orientation to section files"
227
+ provides="Products.GenericSetup.interfaces.EXTENSION"
228
+ />
229
+
222
230
  <genericsetup:upgradeStep
223
231
  title="Configure first official release"
224
232
  description="Run needed profiles steps and reindex catalog"
@@ -783,4 +791,14 @@
783
791
  />
784
792
  </genericsetup:upgradeSteps>
785
793
 
786
- </configure>
794
+ <genericsetup:upgradeSteps
795
+ source="1055"
796
+ destination="1056"
797
+ profile="imio.smartweb.core:default">
798
+ <genericsetup:upgradeDepends
799
+ title="Add imio.smartweb.orientation to section files"
800
+ import_profile="imio.smartweb.core.upgrades:upgrade_1055_to_1056"
801
+ />
802
+ </genericsetup:upgradeSteps>
803
+
804
+ </configure>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0"?>
2
+ <object xmlns:i18n="http://xml.zope.org/namespaces/i18n"
3
+ name="imio.smartweb.SectionHTML"
4
+ meta_type="Dexterity FTI"
5
+ i18n:domain="imio.smartweb">
6
+
7
+ <!-- Enabled behaviors -->
8
+ <property name="behaviors" purge="false">
9
+ <element value="imio.smartweb.orientation"/>
10
+ </property>
11
+
12
+ </object>
@@ -1,5 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
+ from Acquisition import aq_inner
3
4
  from Acquisition import aq_parent
4
5
  from collective.taxonomy.interfaces import ITaxonomy
5
6
  from imio.smartweb.core.config import WCA_URL
@@ -13,6 +14,7 @@ from Products.CMFPlone.interfaces.siteroot import IPloneSiteRoot
13
14
  from Products.CMFPlone.utils import base_hasattr
14
15
  from zope.component import getSiteManager
15
16
  from zope.component import queryMultiAdapter
17
+ from zope.globalrequest import getRequest
16
18
 
17
19
  import hashlib
18
20
  import json
@@ -196,3 +198,24 @@ def get_plausible_vars():
196
198
  return plausible_vars
197
199
  else:
198
200
  return None
201
+
202
+
203
+ def get_current_language(context=None):
204
+ """Return the current negotiated language.
205
+
206
+ :param context: context object
207
+ :type context: object
208
+ :returns: language identifier
209
+ :rtype: string
210
+ :Example: :ref:`portal-get-current-language-example`
211
+ """
212
+ request = getRequest()
213
+ if request is None:
214
+ return (
215
+ context and aq_inner(context).Language()
216
+ ) or api.portal.get_default_language()
217
+ return (
218
+ request.get("LANGUAGE", None)
219
+ or (context and aq_inner(context).Language())
220
+ or api.portal.get_default_language()
221
+ )
@@ -328,6 +328,28 @@
328
328
  />
329
329
  </configure>
330
330
 
331
+ <browser:viewlet
332
+ name="smartweb.htmx.js"
333
+ for="imio.smartweb.core.contents.IPage"
334
+ view="imio.smartweb.core.interfaces.IHtmxViewUtils"
335
+ manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
336
+ layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
337
+ template="htmx_js_header.pt"
338
+ class=".htmx.HtmxViewlet"
339
+ permission="zope2.View"
340
+ />
341
+
342
+ <browser:viewlet
343
+ name="smartweb.htmx.js"
344
+ for="imio.smartweb.core.contents.IPortalPage"
345
+ view="imio.smartweb.core.interfaces.IHtmxViewUtils"
346
+ manager="plone.app.layout.viewlets.interfaces.IHtmlHead"
347
+ layer="imio.smartweb.core.interfaces.IImioSmartwebCoreLayer"
348
+ template="htmx_js_header.pt"
349
+ class=".htmx.HtmxViewlet"
350
+ permission="zope2.View"
351
+ />
352
+
331
353
  <!-- Overrides to change viewlets managers -->
332
354
 
333
355
  <configure package="plone.app.multilingual.browser">
@@ -0,0 +1,15 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ from plone import api
4
+ from plone.app.layout.viewlets.httpheaders import HeaderViewlet
5
+
6
+
7
+ class HtmxViewlet(HeaderViewlet):
8
+ """htmx"""
9
+
10
+ def update(self):
11
+ super(HtmxViewlet, self).update()
12
+
13
+ @property
14
+ def is_anonymous(self):
15
+ return api.user.is_anonymous()
@@ -0,0 +1,59 @@
1
+ <tal:cond condition="python:not view.is_anonymous">
2
+ <script src="https://unpkg.com/htmx.org@1.9.10/dist/htmx.js"></script>
3
+
4
+ <script type="text/javascript">
5
+ $(document).ready(function() {
6
+ /**
7
+ Manage section size
8
+ When clicking on link (<a>) with class "section_size", display the form to select the section size
9
+ */
10
+ $(".manage-section > a.section_size").on("click", function(event) {
11
+ event.preventDefault();
12
+ var clickedElement = event.target;
13
+ var uid = clickedElement.getAttribute("uid");
14
+ var sizesForm = $("#sizesForm_" + uid);
15
+ // Get <select>
16
+ var selectElement = document.querySelector("#sizesForm_" + uid + " > select");
17
+ sizesForm.css({ "display": "inline-block", "position": "absolute", "zIndex": "2" });
18
+ selectElement.selectedIndex = -1;
19
+ selectElement.size = selectElement.options.length;
20
+ selectElement.focus();
21
+ selectElement.addEventListener('focusout', function(event) {
22
+ sizesForm.css("display", "none");
23
+ });
24
+ });
25
+
26
+ /**
27
+ Manage section size
28
+ When submitting the form, update the section size and the class of the parent element
29
+ (to directly resize the section)
30
+ */
31
+ $(".manage-section > form").on("htmx:afterRequest", function(event) {
32
+ event.preventDefault();
33
+ var response = JSON.parse(event.detail.xhr.response);
34
+ var currentForm = event.target;
35
+ var uid = currentForm.getAttribute("hx-boost");
36
+ var link = document.getElementById("selected_size_" + uid);
37
+ var parent = currentForm.closest('.sortable-section');
38
+ var lst_parent_classes = $(parent).attr("class").split(" ");
39
+ var new_parent_classes = ""
40
+ var find = false;
41
+ for (var i = 0; i < lst_parent_classes.length; i++) {
42
+ if (lst_parent_classes[i].startsWith("col-")) {
43
+ find = true;
44
+ lst_parent_classes[i] = response.id;
45
+ }
46
+ new_parent_classes += new_parent_classes + " " + lst_parent_classes[i];
47
+ }
48
+ // "col-" can not be found if there is no section size defined
49
+ if (find == false) {
50
+ new_parent_classes += " " + response.id;
51
+ }
52
+ $(parent).removeClass().addClass(new_parent_classes);
53
+ currentForm.style.display = "none";
54
+ link.innerText = response.title;
55
+ link.style.display = "inline-block";
56
+ });
57
+ });
58
+ </script>
59
+ </tal:cond>
@@ -133,7 +133,7 @@
133
133
  .r-list-item-group {
134
134
  &:hover {
135
135
  .r-item-arrow-more {
136
- background: url(../../assets/next-react-white.svg), #F9B331;
136
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20.44 10'%3E%3Cg data-name='Calque 2'%3E%3Cg data-name='Calque 1'%3E%3Cpath d='M1 5h18.44' data-name='Ligne 7' style='fill:none;stroke:%23fff;stroke-linecap:round;stroke-width:2px'/%3E%3Cpath d='m14.83 1 4.61 4' data-name='Ligne 8' style='fill:none;stroke:%23fff;stroke-linecap:round;stroke-width:2px'/%3E%3Cpath d='m14.83 9 4.61-4' data-name='Ligne 9' style='fill:none;stroke:%23fff;stroke-linecap:round;stroke-width:2px'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"), #F9B331;
137
137
  background-repeat: no-repeat;
138
138
  background-size: 20px;
139
139
  background-position: center;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imio.smartweb.core
3
- Version: 1.2.42
3
+ Version: 1.2.44
4
4
  Summary: Core product for iMio websites
5
5
  Home-page: https://github.com/imio/imio.smartweb.core
6
6
  Author: Christophe Boulanger
@@ -189,6 +189,29 @@ Changelog
189
189
  =========
190
190
 
191
191
 
192
+ 1.2.44 (2024-04-18)
193
+ -------------------
194
+
195
+ - WEB-4099 : Fix select name
196
+ [boulch]
197
+
198
+
199
+ 1.2.43 (2024-04-18)
200
+ -------------------
201
+
202
+ - WEB-4099 : Resize sections in front-end thanks to htmx / jquery
203
+ [boulch]
204
+
205
+ - WEB-4098 : Add affiche scale for section on table view display and one element by lot
206
+ [thomlamb]
207
+
208
+ - WEB-4098 : Add new profile for imio.smartweb.orientation to section files
209
+ [thomlamb]
210
+
211
+ - SUP-35100 : Fix sitemap.xml.gz generation. When a "main" rest view was removed, continue to build sitemap for others rest views
212
+ [boulch]
213
+
214
+
192
215
  1.2.42 (2024-04-12)
193
216
  -------------------
194
217
 
@@ -1,10 +1,10 @@
1
- imio.smartweb.core-1.2.42-py3.10-nspkg.pth,sha256=wnCUSUElqssZ5FI3x-9HqwD229HQ-bAuPoDUNJHmMtU,1684
1
+ imio.smartweb.core-1.2.44-py3.10-nspkg.pth,sha256=wnCUSUElqssZ5FI3x-9HqwD229HQ-bAuPoDUNJHmMtU,1684
2
2
  imio/smartweb/core/__init__.py,sha256=iwhKnzeBJLKxpRVjvzwiRE63_zNpIBfaKLITauVph-0,24
3
3
  imio/smartweb/core/config.py,sha256=BUgfvh4hCaw0onCYAG4gQI1O4hZ-GzXWEltdHi4YLIs,337
4
4
  imio/smartweb/core/configure.zcml,sha256=PeC4rF--rF6MfVQ0NzggQrZWIl35oPtJdEhvQwGxhhI,1459
5
5
  imio/smartweb/core/indexers.py,sha256=Lv1lHWFzM71ju822N8y7w61GDOyi6qmUbveZNI1tCz4,3887
6
6
  imio/smartweb/core/indexers.zcml,sha256=XHvKTkNcF5mkX-dVwRbjNsrBwIwwqa2Cm81PoXBqtow,968
7
- imio/smartweb/core/interfaces.py,sha256=VA58befy9GhyfmHmwoI40wk06U3W_LG07e8oKat4a3Y,1170
7
+ imio/smartweb/core/interfaces.py,sha256=ioMwBC-HdOyz35HQGMZTksaJf8GLS2hbRz2wjvB_r5w,1217
8
8
  imio/smartweb/core/permissions.zcml,sha256=ZyBEARyO8NAq7tKFTb3G1FqEWERT1mQQ6vCVzji1ci8,1777
9
9
  imio/smartweb/core/profiles.zcml,sha256=H9crlNrI8zLxgmkpbkhkD3Ti5LRF8Zutk3AJXNBpvw0,2299
10
10
  imio/smartweb/core/setuphandlers.py,sha256=k1K8-ezP2gELwCNM5An2bBwQJjAKeS0rYtr2-q_InK8,932
@@ -12,7 +12,7 @@ imio/smartweb/core/subscribers.py,sha256=9I6fAJj1FhtkYQZ2Ug_3Bl-p_rn1Nf9_BBHo_iU
12
12
  imio/smartweb/core/subscribers.zcml,sha256=48jHmwwnW37LFCN8HFlxdCe8CgNohYRY_pvbKYa2Gww,1016
13
13
  imio/smartweb/core/testing.py,sha256=t0Y3t3FXX2RjgklcRzHT37AjKbMKL3ZjjT3d2UhQm7A,3636
14
14
  imio/smartweb/core/testing.zcml,sha256=VyKjWW2QHYuUYKkGUvtsdFI_Pa7Wcp1yBBDla112eMc,172
15
- imio/smartweb/core/utils.py,sha256=2hE3RmiEV8dO5ZrevlvTmf8BhnmMZIV4QkYuceWWkDY,6577
15
+ imio/smartweb/core/utils.py,sha256=ozDjW737fjTtAHLocs6YzVssOgKfg8De51NxnSER3Z0,7245
16
16
  imio/smartweb/core/vocabularies.py,sha256=dZTt0hTNKwnlBNFDtKEc-10ISDXeMB9pxZOJx10GvQA,20587
17
17
  imio/smartweb/core/vocabularies.zcml,sha256=lqiCmaaJwMcO18fWlrtdpI-1g3AZ-Krh9mXRTt1y8o4,5264
18
18
  imio/smartweb/core/behaviors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -29,7 +29,7 @@ imio/smartweb/core/browser/forms.py,sha256=_6Z0x7yVeA5JaW4IwpYkX7bTIbw0UskgvtGfN
29
29
  imio/smartweb/core/browser/icons.py,sha256=LFBCYTfynp4qNX2OQuNmMTOUEcJv-oQ8Izu6opE3o7A,2065
30
30
  imio/smartweb/core/browser/layout.py,sha256=wvo_Q2dYg1Yd8wOdYSfPg29NPESy9ndAGl6z3r5kxnY,2066
31
31
  imio/smartweb/core/browser/redirect_to_main_react_view.py,sha256=vzJwAet0P2uoMhlOtNjMy02e4LQw9DsHb6mRgBXGOB8,1668
32
- imio/smartweb/core/browser/sitemap.py,sha256=7fnBtlJN80LOzpL4OuJstPv0GwsO-WnMzsaL9F_qS6c,5790
32
+ imio/smartweb/core/browser/sitemap.py,sha256=voch7Bvchz3NTCm9zUC75sShCLD4KunLKyWA6OtaGmE,5962
33
33
  imio/smartweb/core/browser/utils.py,sha256=ccA2DVA994S3t92_fQeMSFIGfAblE9C1vw78ZFUAJiU,3218
34
34
  imio/smartweb/core/browser/vocabulary.py,sha256=CHQeWZwvjDeoPLZS6C89ucfGGGnxBbAYpVu31_n7TSA,1142
35
35
  imio/smartweb/core/browser/banner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -166,7 +166,7 @@ imio/smartweb/core/contents/pages/pages.py,sha256=iCQwzbp4nnGqwy31UE5Q9MaeJVAzJU
166
166
  imio/smartweb/core/contents/pages/subscriber.py,sha256=2efcWPA5VsoEzv1_fIWh3sn1k2g0Kx_B_cTyQ5LIhLg,961
167
167
  imio/smartweb/core/contents/pages/view.pt,sha256=0-rTH5tgN9mgSHdt9_0qwYQpJO0nC4Wc0Kg6CUGRCbY,3127
168
168
  imio/smartweb/core/contents/pages/view_section.pt,sha256=_jYm5FqFVYr1Jia5r9qmqryd2a6NDNXO5SWu6osTZ0A,1345
169
- imio/smartweb/core/contents/pages/views.py,sha256=9PmL9uvMJPJdLkBkWpoVP4mp78qD3glS1gYi9e9Gil0,4852
169
+ imio/smartweb/core/contents/pages/views.py,sha256=hHuK6_1JsmIJVWKRGXApcgVwl50k3jAFH2M2Z20BhTo,4938
170
170
  imio/smartweb/core/contents/pages/cirkwi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
171
  imio/smartweb/core/contents/pages/cirkwi/configure.zcml,sha256=f5kNhtZhY10aHetW5nZZZ00tbBQP1EiezVia5_JfJlg,378
172
172
  imio/smartweb/core/contents/pages/cirkwi/content.py,sha256=SYRqRgs5cluwHeMVnM63cmzrmeZp3tHlNyTTXTbsbII,664
@@ -184,7 +184,7 @@ imio/smartweb/core/contents/pages/page/content.py,sha256=aW9zBWQCNPTbE-heY5eiM_M
184
184
  imio/smartweb/core/contents/pages/portal_page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
185
  imio/smartweb/core/contents/pages/portal_page/configure.zcml,sha256=2ItrYCWjrdvvk5_piKmAkOeO4gbdn70gzgNKAuST-Vs,352
186
186
  imio/smartweb/core/contents/pages/portal_page/content.py,sha256=abPGe30xSvPUMCl96asDe453J-wI3QQ6tNF5tM1jfkg,336
187
- imio/smartweb/core/contents/pages/portal_page/view.py,sha256=MnGezZqDT4HgumfCWbjs_RISZgLkQUZYtHvdJ-JKr18,147
187
+ imio/smartweb/core/contents/pages/portal_page/view.py,sha256=RrCUBUDSZeTohtSSINn8wFvqLAV1q0ZPL5voUjXd6n8,272
188
188
  imio/smartweb/core/contents/pages/procedure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
189
  imio/smartweb/core/contents/pages/procedure/configure.zcml,sha256=pyeShXwkU4p6WrEQmLm-_SbTtRwtn0GLvQWU5wbm7i0,356
190
190
  imio/smartweb/core/contents/pages/procedure/content.py,sha256=e_kv7YsRF0vblfpxqqs9uhTLObA1NmiXiVyh0JWwoEc,1297
@@ -194,7 +194,7 @@ imio/smartweb/core/contents/rest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
194
194
  imio/smartweb/core/contents/rest/base.py,sha256=8VWBC7EKJUW6rNVH8DLD4JWGCHY7lDSQ-xJtEOsdBW0,2428
195
195
  imio/smartweb/core/contents/rest/configure.zcml,sha256=vANiA3brvm8rsJIUSVNf0BdlEnejpEGXoC82-hpxKkA,433
196
196
  imio/smartweb/core/contents/rest/traversal.py,sha256=KLNGhUmvTAzaRqSIzT3B28HgMBK4vcNV75AfyIesjN8,540
197
- imio/smartweb/core/contents/rest/utils.py,sha256=3R8BSRBzYCTL5sBtVraoHvEwhN6e1PyUY5mjczKLlFk,3112
197
+ imio/smartweb/core/contents/rest/utils.py,sha256=paMFXc81Hni0a8fpfNQtRTAr1vXNtXgBs5qLOn3_k2Q,3073
198
198
  imio/smartweb/core/contents/rest/view.py,sha256=nOdJ3It-cEzwCLqz4QMAzMwZCWsMnWIJrSIhLcbCU4s,1014
199
199
  imio/smartweb/core/contents/rest/directory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
200
  imio/smartweb/core/contents/rest/directory/configure.zcml,sha256=_K34jECLk9RWscAyiRXwoJLLBIVj-EJRGFOEbUU5Ito,1035
@@ -219,10 +219,10 @@ imio/smartweb/core/contents/rest/search/configure.zcml,sha256=BTFcBQ28NINyEfoVgY
219
219
  imio/smartweb/core/contents/rest/search/endpoint.py,sha256=i5LMM0R1Xvpy76JHO6pI98G41Xep15fPR9uv9rqropo,9797
220
220
  imio/smartweb/core/contents/sections/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
221
  imio/smartweb/core/contents/sections/base.py,sha256=2e3lIG_RGGFAshBEkTNG97OReAnn9GLQk_O_Eqh7SRY,2486
222
- imio/smartweb/core/contents/sections/configure.zcml,sha256=aEbAu9MikK-sCVzST8Nn-bMbv7clnHfnoumlBW197Wk,2242
223
- imio/smartweb/core/contents/sections/macros.pt,sha256=dJryNJTUmPRz1fLw3ORt3OSNPr6xedMmvJfFIvG16jU,4338
222
+ imio/smartweb/core/contents/sections/configure.zcml,sha256=bUqipFja2372GWcS029GK4--1vtYG5C947VI6LZqLyc,2754
223
+ imio/smartweb/core/contents/sections/macros.pt,sha256=1Jk_bbaBCqfIBcuM4EoO94aBD7jcXgvmozBGs2yQY8Y,5541
224
224
  imio/smartweb/core/contents/sections/subscriber.py,sha256=WM7nEZVPOkmyT1GfkWGDWwLhuhUYaTnlBr6BJVqUJMk,642
225
- imio/smartweb/core/contents/sections/views.py,sha256=hZJlySZQiUHlRLXDErtwXJZoiSp7wJ8Bg0ETcTmtLL0,3645
225
+ imio/smartweb/core/contents/sections/views.py,sha256=cmtvPsyiAWEBf3Vi3tZGzmZQDwK8Ldxa_RXhbVGiA8Q,5071
226
226
  imio/smartweb/core/contents/sections/collection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
227
227
  imio/smartweb/core/contents/sections/collection/configure.zcml,sha256=Ak4UbKFjogWZad6-5_y6oSx8tWXt3nN7bEdKXG7pQCI,920
228
228
  imio/smartweb/core/contents/sections/collection/content.py,sha256=DMmU9rIaRlbRjIaot5RHXu59vJmAbun0FCmyahWhBCM,2379
@@ -254,7 +254,7 @@ imio/smartweb/core/contents/sections/external_content/views.py,sha256=yInKcthDf-
254
254
  imio/smartweb/core/contents/sections/files/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
255
  imio/smartweb/core/contents/sections/files/configure.zcml,sha256=DyyHzDEKLWmOywbV08Zf7bvf0At5jyAeDfZ8PCK5Rog,501
256
256
  imio/smartweb/core/contents/sections/files/content.py,sha256=60wt1VguNqKBu3fyuuG2dcrHC-9FjxTf96af2IqU3fw,871
257
- imio/smartweb/core/contents/sections/files/view.py,sha256=0KnXIWEadsqYV2U0XhMd2a5-Mon4VZy4RyAWNwUBVUc,1249
257
+ imio/smartweb/core/contents/sections/files/view.py,sha256=ThEXBCD-WhTYDz6BsJqO8pJiIB1cT_twVgaAPvM4h7I,1286
258
258
  imio/smartweb/core/contents/sections/gallery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
259
  imio/smartweb/core/contents/sections/gallery/configure.zcml,sha256=0fq5_PWU9vFrmPkExvFPBCzZrDSnlN8B0K7fHQReAvA,424
260
260
  imio/smartweb/core/contents/sections/gallery/content.py,sha256=l6HLGVNi70gcEP-zz9OXi2WYtyd-V6LCAZH44a2Td_s,780
@@ -316,7 +316,7 @@ imio/smartweb/core/profiles/default/browserlayer.xml,sha256=j9-hf9pW0KRVUx9S7sOH
316
316
  imio/smartweb/core/profiles/default/catalog.xml,sha256=AZx3c3qR6ANx8y269IxmDOIvB7yVSOTy6D1nP9kXza0,864
317
317
  imio/smartweb/core/profiles/default/controlpanel.xml,sha256=9FSBU7UaS7-b02DRCmbAs-j0HgdVzbP-TQQ8T9rXvyE,400
318
318
  imio/smartweb/core/profiles/default/diff_tool.xml,sha256=66L2L7ZBGJajPDeHl16A3h6RUcj9l0C7qpwe8JSYe7o,212
319
- imio/smartweb/core/profiles/default/metadata.xml,sha256=nyOfr4tsaBuMfFteEWYtiQ8gp350-tqz8ou1V-GIIMQ,1218
319
+ imio/smartweb/core/profiles/default/metadata.xml,sha256=A-x4_Rq09ieonn0OJ7kSAFBCK7IIdHDQTlK9oy88DGs,1218
320
320
  imio/smartweb/core/profiles/default/repositorytool.xml,sha256=aTErs-VvEEV3dm9_TdgPZfx1Pb1f5Sw7ap7IgiJOK4w,227
321
321
  imio/smartweb/core/profiles/default/rolemap.xml,sha256=xZIPtzR9vfQLMZKg8FPLdIIeYb2VzjXl8z2CtURWGsc,2726
322
322
  imio/smartweb/core/profiles/default/types.xml,sha256=xkQyPtEccUnAHu5mL83r96dmtnCWNn17lVRJPP2jWMg,2040
@@ -347,7 +347,7 @@ imio/smartweb/core/profiles/default/types/imio.smartweb.SectionCollection.xml,sh
347
347
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionContact.xml,sha256=gh4Aal-ZNoV-_t1TiNIdyYsyZaYGQ56fRk9Ata37on0,1183
348
348
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionEvents.xml,sha256=5qfrH7XxqyDssiS_9dFh4_ub16IYdJr5wSXJ5se3lTE,1484
349
349
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionExternalContent.xml,sha256=C1BFq3Kn52p4xLfYgiJg9B1AOimq5lPd-3IyNUtjtZI,1284
350
- imio/smartweb/core/profiles/default/types/imio.smartweb.SectionFiles.xml,sha256=XTprZ_LTzgFabYRu-w99u30HHs3tgIgUsCSOSL1S3UA,1490
350
+ imio/smartweb/core/profiles/default/types/imio.smartweb.SectionFiles.xml,sha256=h7GNc8Kt4nNp-8yK9JMYohjqnU_CEQ6eWzGcoY7S4Us,1539
351
351
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionGallery.xml,sha256=8CPXF2CBF-9cz13jowiU0eUqLxzph6ic4Ly6GzVD0NQ,1349
352
352
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionHTML.xml,sha256=qIaImpJ6b70saTXNs-X5EgU8jqx6FGyR3Kguyt7Tc3A,1191
353
353
  imio/smartweb/core/profiles/default/types/imio.smartweb.SectionLinks.xml,sha256=Ee5OyXdJNjGNhdyAvm6TkxiWVzIi2WtTgUkaqvyhsOQ,1595
@@ -388,6 +388,7 @@ imio/smartweb/core/tests/test_faceted.py,sha256=4wCfxDsU_zQ2G9xAy0g2jcuYl4HBALHs
388
388
  imio/smartweb/core/tests/test_folder.py,sha256=JjV5Hvo6IMEFHo2kowbqhLxcXy11zHRTKL9jYJrRHV0,13527
389
389
  imio/smartweb/core/tests/test_footer.py,sha256=5FYaKDRrY10_rXvetVmbo6-uOZSRQuOkaO_fvuv94N4,10970
390
390
  imio/smartweb/core/tests/test_herobanner.py,sha256=oCbnS288FcJqbhWDmqdWcAXi4S7qdnf2MvBtxrLVd_I,5940
391
+ imio/smartweb/core/tests/test_htmx_in_sections.py,sha256=GJnJuZuuYaf7X9JLQp_Ew5EovSpO1N_QDQjsoLDsZrI,5055
391
392
  imio/smartweb/core/tests/test_icons.py,sha256=sP1lIVnImCREersIZp1_QfD1LLyLFyr_mSMpt-ybgfY,2788
392
393
  imio/smartweb/core/tests/test_indexes.py,sha256=DtRgpdkZ2PKu8y8OrARY1Gk3JU-siWlkDf98A_ZvzFI,10784
393
394
  imio/smartweb/core/tests/test_instance_behaviors.py,sha256=YMLtXkhxrLlD0nh0wx1-kX2hawQiOGvJqYXh_s53GPI,4274
@@ -453,7 +454,7 @@ imio/smartweb/core/tests/robot/test_ct_page.robot,sha256=UoH47egHyCCVHmfqPdA1vQe
453
454
  imio/smartweb/core/tests/robot/test_ct_procedure.robot,sha256=vTeIpI4inkRWbJy41EZc1bkLL5tLrblRFYtNA820H68,2712
454
455
  imio/smartweb/core/tests/robot/test_example.robot,sha256=G_rUe5kTswB8E8xtM92zF78H1wotHxhzzZH8zrfrDi8,2003
455
456
  imio/smartweb/core/upgrades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
456
- imio/smartweb/core/upgrades/configure.zcml,sha256=-jufQtfvUQByhD1wk8_mcvIdKcOLz5aoDrewg8cCkSU,26238
457
+ imio/smartweb/core/upgrades/configure.zcml,sha256=HIv5j2bYTD5K7d4uuOXab6NFy0PYA0N9G5pSDiXkhtc,26858
457
458
  imio/smartweb/core/upgrades/upgrades.py,sha256=SZHVeYODErjQZR_LzQ0cxBnJoqWRWsIiRpUhNTMiz7k,8295
458
459
  imio/smartweb/core/upgrades/profiles/1015_to_1016/registry/e-guichet-icon.xml,sha256=CG5K3-MCDqdMl7Dog-yvNZK0u0t8ipK-6QCcBNLb4cY,481
459
460
  imio/smartweb/core/upgrades/profiles/1016_to_1017/registry/shop-icon.xml,sha256=vvmcWnYlU5Yic6RrOhziRj0RsveKaclNM5xWJVHx6r0,478
@@ -567,6 +568,7 @@ imio/smartweb/core/upgrades/profiles/1054_to_1055/types/imio.smartweb.NewsView.x
567
568
  imio/smartweb/core/upgrades/profiles/1054_to_1055/types/imio.smartweb.Page.xml,sha256=nLcb2onLazsotJrFKTriUlR7gXAyMm1gOdMPDGCXr0M,307
568
569
  imio/smartweb/core/upgrades/profiles/1054_to_1055/types/imio.smartweb.PortalPage.xml,sha256=h9d7ik0t38bivtJ4iVbO4UJ-hpURQ1jLiTP2Jp3KVqk,313
569
570
  imio/smartweb/core/upgrades/profiles/1054_to_1055/types/imio.smartweb.Procedure.xml,sha256=lLd6CWzYpZZoHP_bktcV7m5i1BebkPXF4u7fo7oJhxY,312
571
+ imio/smartweb/core/upgrades/profiles/1055_to_1056/types/imio.smartweb.SectionFiles.xml,sha256=oTc9d6l88GaP311Vs6l0tD8PQ1cwBuWyKt2ekUzkBEU,327
570
572
  imio/smartweb/core/viewlets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
571
573
  imio/smartweb/core/viewlets/actions.py,sha256=QWj_pLNxH4223XPk4b4Dc79DiajF0HHfaXlUmXTwJ8k,661
572
574
  imio/smartweb/core/viewlets/arcgis_header.pt,sha256=iQc5ZG3g1Cmap963OG-wPotllr7oWmVSMoAnA7tctrQ,3428
@@ -576,7 +578,7 @@ imio/smartweb/core/viewlets/category.pt,sha256=JElI8UGE7Lk-Uhf2KsKlTlX3EvqPdjmgk
576
578
  imio/smartweb/core/viewlets/category.py,sha256=F8Vqxy3686-jY6ymjvZJFtK1Kj2a8Sqj8tAC37ZsCOU,308
577
579
  imio/smartweb/core/viewlets/chatbot.pt,sha256=ataC2OtLpEawvrIZnM9vR8ChLfwkeMl78tOieSGpvSM,611
578
580
  imio/smartweb/core/viewlets/chatbot.py,sha256=WgY4PQ7hZAuMRdACxRmwAs7-71Vl-h1Jk7CM1YPc6b0,329
579
- imio/smartweb/core/viewlets/configure.zcml,sha256=gZjomt1JTfe-LqS9HdBG46O0rBEzOLh4SAVLZ_-DEyg,13035
581
+ imio/smartweb/core/viewlets/configure.zcml,sha256=-KaEEu6ijuZyY8Q9fTti5JxQDyNtS2Cey_lMpE6JLEo,13785
580
582
  imio/smartweb/core/viewlets/default_page_warning.pt,sha256=nw1G01jkmyY776NMmSxg-7ZHuNcZkzbrrZirTaRVyXY,531
581
583
  imio/smartweb/core/viewlets/external_content.py,sha256=YeTvnnfnAS1jsgsqvwTmYjjOHxg9BYX1MlQPNef_HkA,558
582
584
  imio/smartweb/core/viewlets/footer.pt,sha256=PbbXe2krY6DvCFWidShbo5XU9PATf8smpGM3N33vhkw,872
@@ -587,6 +589,8 @@ imio/smartweb/core/viewlets/header_actions_viewlet.pt,sha256=8XzyvcdvhyWneUrv7FU
587
589
  imio/smartweb/core/viewlets/header_top_viewlet.pt,sha256=nn7AhTim_4yfhxevbW1-UsQ62tREyFZhZKq1FODmccc,137
588
590
  imio/smartweb/core/viewlets/herobanner.pt,sha256=Zg7Hv44VkU5FZ7T0RcuDCcZ7oDcvVX5HQyiVrPU62bU,688
589
591
  imio/smartweb/core/viewlets/herobanner.py,sha256=RkuqUWY7pXcSgIW7amSnJCi5MzGDbjWHtuUAes0yhgc,1359
592
+ imio/smartweb/core/viewlets/htmx.py,sha256=ylacmUstXdyZbr4gDSo9VaymBTI8c4dEDKEUP83A810,309
593
+ imio/smartweb/core/viewlets/htmx_js_header.pt,sha256=15-ff8m7gXpQdkfE4LQIHAhSPv45yPsgJRgzgT-kDxY,2575
590
594
  imio/smartweb/core/viewlets/httpheaders.py,sha256=-bLAtb_N5wNCe9yoQ_5hcw5Ok74uEwjsDvbiKM0uQEY,389
591
595
  imio/smartweb/core/viewlets/interfaces.py,sha256=guKxKhsi93k2GXX5Ohw-wAdxwZKxstQScUjLvi7jJ94,498
592
596
  imio/smartweb/core/viewlets/lead_image.py,sha256=z7MVIBEcdmjR53TYCP60YHi-6fgUz7RHbK82GtfDjKk,318
@@ -699,7 +703,7 @@ imio/smartweb/core/webcomponents/src/components/Events/Filters/Filter.jsx,sha256
699
703
  imio/smartweb/core/webcomponents/src/components/Filters/DateFilter.jsx,sha256=yWZdgoOlXLrhQsprCsaV1O795L7ClrBVk7vAjycgZnA,5631
700
704
  imio/smartweb/core/webcomponents/src/components/Filters/DateFilter.scss,sha256=9gQ-SR8xzL3aYMP9mSwNKHtzBxWvvXnmPmIoMD9Mkjo,1577
701
705
  imio/smartweb/core/webcomponents/src/components/News/News.jsx,sha256=UnBsl51Eg8xOTZYG9rzllvo8bv_uQ1Z5rEPReODv-Qk,7080
702
- imio/smartweb/core/webcomponents/src/components/News/News.scss,sha256=1RnZHhLGYzwVWejfw4TbjyTEsiyn_Ajd2SQCF21aiYA,3260
706
+ imio/smartweb/core/webcomponents/src/components/News/News.scss,sha256=wE8cD2IIWbuxMoVUWW4hhBgtXbPdGfg0pPbqF8Jeu-I,3755
703
707
  imio/smartweb/core/webcomponents/src/components/News/index.js,sha256=-I1awA2Z7q9UPwBtrr0Ab3TlFRTpDODf2hIJ2r5tGlA,93
704
708
  imio/smartweb/core/webcomponents/src/components/News/Filters/Filter.jsx,sha256=VxXd4yayo-ziaXc_89qXrd1QsGQc7zG_Fuxz3YdWe-A,6225
705
709
  imio/smartweb/core/webcomponents/src/components/News/NewsCard/NewsCard.jsx,sha256=2vgkR-on4YunRjbM8TbdhPi9tW4xqLJFzFZwrd0uHnQ,2717
@@ -719,10 +723,10 @@ imio/smartweb/core/webcomponents/src/utils/Map.jsx,sha256=x9xi6Ym29ENfIdeysHeh0g
719
723
  imio/smartweb/core/webcomponents/src/utils/Map.scss,sha256=xXWz0O-JBwSZrzz2XeQdN4nZEOjppU2sVFtlLQOitQ8,77
720
724
  imio/smartweb/core/webcomponents/src/utils/translation.js,sha256=SmhBsvncTNx95019NNz5uAm1foKqeKjcC5i9ZMo1G3E,6629
721
725
  imio/smartweb/core/webcomponents/src/utils/url.js,sha256=iyl_1QXfPBgUn0LEbZYT_zMEEjmj5DMiEz44Z6AKLcg,244
722
- imio.smartweb.core-1.2.42.dist-info/LICENSE.GPL,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
723
- imio.smartweb.core-1.2.42.dist-info/LICENSE.rst,sha256=RzkMFz6AX3-cHd531zd2YQcXai8RIbjFWTs6m66Y5u4,653
724
- imio.smartweb.core-1.2.42.dist-info/METADATA,sha256=wZOa_i1_u6FIQLds41O3eDv6AzNTFHlVuAlkwzXlbyg,51403
725
- imio.smartweb.core-1.2.42.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
726
- imio.smartweb.core-1.2.42.dist-info/namespace_packages.txt,sha256=Pg8AH8t9viMMW1hJbNZvTy_n2jXG2igIYUpon5RA4Js,19
727
- imio.smartweb.core-1.2.42.dist-info/top_level.txt,sha256=ZktC0EGzThvMTAin9_q_41rzvvfMT2FYbP8pbhSLMSA,5
728
- imio.smartweb.core-1.2.42.dist-info/RECORD,,
726
+ imio.smartweb.core-1.2.44.dist-info/LICENSE.GPL,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
727
+ imio.smartweb.core-1.2.44.dist-info/LICENSE.rst,sha256=RzkMFz6AX3-cHd531zd2YQcXai8RIbjFWTs6m66Y5u4,653
728
+ imio.smartweb.core-1.2.44.dist-info/METADATA,sha256=N2ZVlX9v_iLWtlIIIL32SQf2bFdMXIxLeuJOfwDLxDU,51940
729
+ imio.smartweb.core-1.2.44.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
730
+ imio.smartweb.core-1.2.44.dist-info/namespace_packages.txt,sha256=Pg8AH8t9viMMW1hJbNZvTy_n2jXG2igIYUpon5RA4Js,19
731
+ imio.smartweb.core-1.2.44.dist-info/top_level.txt,sha256=ZktC0EGzThvMTAin9_q_41rzvvfMT2FYbP8pbhSLMSA,5
732
+ imio.smartweb.core-1.2.44.dist-info/RECORD,,