Unicode characters in menu. When was it fixed

Does anyone know when 'unicode characters' were fixed in the menu (see screenshot).

I guess this is a benefit of using Python 3 where everything is text unless it is explicitly not :slight_smile: .

In fact, I have two 'old' 5.x sites / Python2 running (not sure about version since I have 'home/cov19 office) and one shows it correct, the other not.

This problem has reoccured in 5.2.3 ( Single quote in folder's title rendered as ' in drop down menu )

Can anyone (else) confirm this error ?

Also: Where should this be reported ?

Yes i can confirm this. I have a site with the same? error. I have registered an action in /portal_actions/portal_tabs with a title "Activities & Projects" and in the navigationbar in plone show me "Activities & Projects". That only happend after migration to 5.2.3 Py3

Same with 2.7, I just tested

But here https://demo.plone.org/de it is no error.

  1. What python version do you use
  2. Is it possible that some setting ( language / country ), in 'system', or maybe even in buildout ? has something to do with it?

Is buildout.cfg of demo.plone.org available so we could test (with) it ?

demo.plone.org use:

  • Plone 5.2.3 (5210)
  • CMF 2.4.8
  • Zope 4.5.3
  • Python 3.8.3 (default, Jul 14 2020, 07:39:54) [GCC 7.5.0]
  • PIL 6.2.2 (Pillow)
  • WSGI: An
  • Server: waitress 1.4.4

Tomorrow, I will investigate the Problem on my Testinstance.
@espenmn: Update: on my local testsystem did not happend the error, mysterious.

I 'had a feeling about that', since I could not find out the difference between my two sites, see below

Ok thats what i found in plone.app.layout.viewlets.common, and that is really strange:

def build_tree(self, path, first_run=True):
    """Non-template based recursive tree building.
    3-4 times faster than template based.
    """
    out = u""
    for item in self.navtree.get(path, []):
        print("in build tree before self.render_item:", item)
        # the output of print:
        # all is fine, yeah
        # {.... 'title': 'Activities & Projects', 'name': 'Activities & Projects', .....}
        out += self.render_item(item, path)
    if not first_run and out:
        out = self._subtree_markup_wrapper.format(out=out)
    return out

def render_item(self, item, path):
    print("in self.render_item:", item)
    # the output of print:
    # WTF! Why is here a quotet "&"
    # {.... 'title': 'Activities & Projects', 'name': 'Activities & Projects', .....}
    # the other code ...
    return self._item_markup_template.format(**item)


As you see, in build_tree is a call of render_item. Outside render_item() is all ok, inside there a magic quote!

Update
The Hotfix is the Problem: see here: Characters doubly escaped if Hotfix20200121 is present in 5.2.2 · Issue #246 · plone/plone.app.layout · GitHub

Question: What is the right way to patch this? Update the Hotfix (disable the layout patch)? Or local in any installation?