Steve Alexander wrote:
Gilles Lavaux wrote:
Argh!!!
no, I made a typo error : it was <!--#var image_name-->.the syntax was good. Ok, I will use the new syntax in my new sites. But for my old site, I will not modify my ~500 dtml methods, except if there is a way to automate the change.
You can write a pretty simple external method to walk your Zope object heirarchy looking for DTML Methods and DTML documents, then altering the syntax. Shouldn't take more than an hour to write and debug and test and document, if you've written stuff in Python before.
I'm off to a meeting for a few hours, but harrass me later and I'll send to the list a proof-of-concept external method to get you started.
An external method for automated change from old syntax to new syntax follows. * Use at your own risk * No warranty implied or given * Use on a copy of your main Zope site * Back up data.fs three times before starting * Not guarenteed not to spin your processor and never terminate * Run on a copy of Zope in debug mode (-D) to see the print statements * Barely tested, if at all -------- import re def convert_dtml(self): """Convert DTML Methods and DTML Documents from old syntax to new syntax. Warning: recursive! Might just eat all your stack. Does not work on subclasses of DTML Method and DTML Document. Preserves normal comments, and handles instances of "-->" in quotes. """ print 'convert_dtml: id=%s' % self.title_and_id() if hasattr(self, 'meta_type') and \ (self.meta_type == 'DTML Method' or \ self.meta_type == 'DTML Document'): convert(self) # should this be "isPrincipiaFolderish"? if hasattr(self, 'isAnObjectManager') and self.isAnObjectManager: for v in self.objectValues(): v.convert_dtml() _convert_regex = re.compile('<!--#(/?)(([^"-]+?|"[^"]*?"|-[^-])+?)-->') def convert(dtml_item): print 'converting...' title = dtml_item.title # like document_src, but doesn't require RESPONSE data = dtml_item.PrincipiaSearchSource() print '----data----' print data newdata = _convert_regex.sub('<\g<1>dtml-\g<2>>', data) print '----newdata----' print newdata print '----end----' dtml_item.manage_edit(newdata, title) -------- -- Steve Alexander Software Engineer Cat-Box limited http://www.cat-box.net