Log message for revision 71576: pt_edit() now has an optional 'keep_output_encoding' flag that is necessary for pt_edit() calls where the encoding should not be changed by sniffing inside the content (used by pt_editAction(), ZMI and by the constructor)
Changed: U Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py -=- Modified: Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py =================================================================== --- Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py 2006-12-17 19:49:11 UTC (rev 71575) +++ Zope/branches/ajung-zpt-encoding-fixes/lib/python/Products/PageTemplates/ZopePageTemplate.py 2006-12-17 20:13:38 UTC (rev 71576) @@ -122,17 +122,16 @@ self.id = id self.expand = 0 self.ZBindings_edit(self._default_bindings) - self.output_encoding = encoding + self.output_encoding = 'utf-8' # default content if not text: text = open(self._default_content_fn).read() - encoding = 'utf-8' content_type = 'text/html' - self.pt_edit(text, content_type) + self.pt_edit(text, content_type, True) security.declareProtected(change_page_templates, 'pt_edit') - def pt_edit(self, text, content_type): + def pt_edit(self, text, content_type, keep_output_encoding=False): text = text.strip() @@ -142,11 +141,14 @@ (guessed_content_type, content_type)) encoding = sniffEncoding(text) - if content_type == 'text/xml': - self.output_encoding = 'utf-8' - else: - self.output_encoding = encoding + if not keep_output_encoding: + if content_type == 'text/xml': + self.output_encoding = 'utf-8' + else: + self.output_encoding = encoding + encoding = self.output_encoding + if not isinstance(text, unicode): text = unicode(text, encoding) @@ -161,16 +163,16 @@ source_dot_xml = Src() security.declareProtected(change_page_templates, 'pt_editAction') - def pt_editAction(self, REQUEST, title, text, content_type, encoding, expand): + def pt_editAction(self, REQUEST, title, text, content_type, expand): """Change the title and document.""" if self.wl_isLocked(): raise ResourceLockedError("File is locked via WebDAV") self.expand = expand - self.pt_setTitle(title, encoding) + self.pt_setTitle(title, self.output_encoding) - self.pt_edit(text, content_type, encoding) + self.pt_edit(text, content_type, True) REQUEST.set('text', self.read()) # May not equal 'text'! REQUEST.set('title', self.title) message = "Saved changes." _______________________________________________ Zope-Checkins maillist - Zope-Checkins@zope.org http://mail.zope.org/mailman/listinfo/zope-checkins