Just thought I'd mention what I've done with my new website. I'm trying, as much as possible, to make all content be based on Structured Text. I've created a ZClass that combines PageTemplates and stx_to_html.py together.
one thing that really annoys me is that the "heres my url":xyz and "my picture":img:wow tag processing in Structured Text assumes that the "urls" are http type paths or relative. I'd prefer that images output tag() values and that urls, when "not local", output absolute_url() values. What I did was pass nocall() to stx_to_html from within my PageTemplate and modified the HTMLWithImages class, as follows in the code below. It tries to use nocall() to lookup the href part of the tag. If an object is found, we use tag() or absolute_url() respectively. Otherwise it outputs the href tag as-is. Currently this is a bit of a hack, but I'm curious if anyone else would like this functionality (in which case it's back to the Wiki). (code fragment from stx_to_html.py) class HWIClass( HTMLWithImages ): def document(self, doc, level, output): # overrides HTMLWithImages.document (Zope 2.4.1b1) to leave out <html> and <body> tag when rendering for c in doc.getChildNodes(): getattr(self, self.element_types[c.getNodeName()])(c, level, output) def image(self, doc, level, output): if hasattr(doc, 'key'): output('<a name="%s"></a>\n' % doc.key) if hasattr(self,'nocall'): try: obj = self.nocall("here/"+doc.href) alt = str(doc.getNodeValue()) alt = alt.replace('"','') output(obj.tag(alt=alt)) hr = None except AttributeError: hr = doc.href else: hr = doc.href if hr: output('<img src="%s" alt="%s">\n' % (hr, doc.getNodeValue())) if doc.getNodeValue() and hasattr(doc, 'key'): output('<p><b>Figure %s</b> %s</p>\n' % (doc.key, doc.getNodeValue())) def image(self, doc, level, output): if hasattr(doc, 'key'): output('<a name="%s"></a>\n' % doc.key) if hasattr(self,'nocall'): try: obj = self.nocall("here/"+doc.href) alt = str(doc.getNodeValue()) alt = alt.replace('"','') output(obj.tag(alt=alt)) return except AttributeError: hr = doc.href else: hr = doc.href output('<img src="%s" alt="%s">\n' % (hr, doc.getNodeValue())) if doc.getNodeValue() and hasattr(doc, 'key'): output('<p><b>Figure %s</b> %s</p>\n' % (doc.key, doc.getNodeValue())) def link(self, doc, level, output): """override to use nocall""" if hasattr(self,'nocall'): try: obj = self.nocall("here/"+doc.href) hr = obj.absolute_url() except AttributeError: hr = doc.href else: hr = doc.href output('<a href="%s">' % hr) for c in doc.getChildNodes(): getattr(self, self.element_types[c.getNodeName()])(c, level, output) output('</a>') def stx_to_html(src=None,text="", nocall=None,level=1 ): if src and src.meta_type == 'Rendered STX' and not text: text = src.document_src() st = StructuredText.Basic( text ) if not st: return "" doc = DWIClass( st ) HWICls = HWIClass() HWICls.nocall = nocall html = HWICls( doc, level ) return html Brad Clements, [EMAIL PROTECTED] (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )