Hi,
abgesehen davon, dass ich Andreas Jung recht gebe, dass das Vorgehen
nicht legitim ist, so ist es immerhin möglich so vorzugehen.
Und das Problem ist bekannt, und das schon seit Archetypes Urzeiten.
Archetypes nimmt halt beim Verspeichern Unicode. In dem Fall wird von
Archetypes das simple AttributeStorage verwendet. d.h. hier ist der
Storage-Name gleich dem Fieldnamen. damit wird das Attribut 'title' auf
dem Content-Typen gespeichert. Und OFS.PropertyManager.setProperty macht
auch genau das. Änderst Du das Storage vom title Field, so zerschlägt
sich das Problem auch wieder. Z.B. mit einem AnnotationStorage für den
title, was durchaus geht, kannst Du im ZMI soviel ändern wie Du willst.
Dein Content-Type zeigt das deswegen nicht an. Und das ist legitim. Und
weil das legitim ist, ist es nicht legitim das ZMI zum Ändern vom title
zu nehmen.
Am Donnerstag, den 15.10.2009, 13:51 +0200 schrieb Andreas Gabriel:
[...]
> Das Wechseln des Objekttyps sollte doch lieber vermieden werden.
> Soweit ich erkennen kann, ist es nicht richtig, dass Archetypes
> die Variable _properties aus der PropertyManager-Klasse erbt,
> wenn Archetypes "title" als unicode abspeichert
>
> vgl. OFS/PropertyManager.py:
>
> _properties=({'id':'title', 'type': 'string', 'mode':'wd'},)
>
> Archetypes müsste als type "ustring" verwenden
>
> _properties=({'id':'title', 'type': 'ustring', 'mode':'wd'},)
Hast Du das Mal gepatched und probiert ob es dann funktioniert?
>
> In ZMI's properties.dtml müsste dann für das korrekte Abspeichern
>
> <input name="title:UTF-8:unicode" ...
>
> stehen, wenn man title als Unicode-Objekt erhalten möchte.
Da müsste man dann ein Archtypes spezifisches properties.dtml zur
Verfügung stellen füer alle AT-basierten Types.
> Wo ist eigentlich Dokumentiert, dass sich das Coding-Verhalten bei DTML
> ändert, je nachdem ob man zuerst Unicode oder String ausgibt?
> Bei properties.dtml wird z.B. bei management_page_charset == "UTF-8"
> Unicode erzwungen
>
> <dtml-var "u' '">
>
> Deaktiviert man die Zeile, gibt es wieder andere schöne Effekte.
Ist DTML nicht irgendwie recht tot? Ich würde das Form als ZPT nachbauen
und bei allen Archetypes anstelle dem Original properties.dtml
registrieren. Ich würde wenn mir das wichtig wäre. Und ich würde auch
den OFS.PropertyManager überschreiben und an das field delegieren. Aber
mir ist das ehrlich gesagt nicht wichtig.
Ich bitte dich, wenn es Dir wichtig ist, das Problem a) zu Melden (auf
http://dev.plone.org/plone anmelden und ein neues Ticket erstellen) mit
ausführlicher Beschreibung des Problems. b) einen Test (z.b. Browsertest
eignet sich gut) zu schreiben, der das Problem reproduziert c) wenn
möglich einen Bugfix beizulegen. Wenn Du technisch b) oder c) nicht
produzieren kannst bleibe bei a). Ich kann aber aus Erfahrung sagen,
dass dieser Bug nicht zwingend so hoch priorisiert sein wird, dass er
auch gelöst wird, wenn Du nur a) lieferst. Man kann mit dem Problem
Leben und einfach das Vorgehen als nicht-legitim dokumentieren.
Vielleicht ist es sowieso am einfachsten, das properties.dtml zu
ersetzen durch eines, bei dem die Properties, die einem field
entsprechen einfach ausgegraut werden (read-only, no-submit). Damit wird
das nicht-legitime Vorgehen einfach unmöglich gemacht.
lg Jens
--
Jens W. Klein
Software Architect
Managing Director, General Partner
+43 512 890077
Klein & Partner KEG WEB APPLICATIONS, ZOPE, PLONE, HOSTING
BlueDynamics Alliance production: concept, development, design
http://bluedynamics.com consulting: analysis, coaching, training
http://zoplo.com management: projects, process, community
_______________________________________________
zope mailing list
[hidden email]
https://mail.dzug.org/mailman/listinfo/zope