def _convertPath(self, path): """if it's not an absolute url, run it through the IPath adapter on the REQUEST to take into account virtual hosting situations""" if urlparse(path)[0]: return path pad = IPath(self.context.REQUEST) return pad.pathToUrlPath(path)
def sax_img(self, node): """Unfortunately <image> is a special case, since height and width are not stored in the document but in the Image object itself, and need to be retrieved here. """ attributes = {} options = self.getOptions() request = self.getExported().request if node.attributes: attributes = get_dict(node.attributes) if options.external_rendering: rewritten_path = None if 'reference' in attributes: service = getUtility(IReferenceService) reference = service.get_reference( self.context, name=attributes['reference']) image = reference.target if options.upgrade30: attributes['data-silva-target'] = str(reference.target_id) attributes['data-silva-reference'] = reference.tags[1] reference.tags[0] = u"body image" reference._p_changed = True elif image is not None: rewritten_path = absoluteURL(image, request) else: document = self.context.get_content() image = document.unrestrictedTraverse( attributes['path'].split('/'), None) if options.upgrade30: attributes['data-silva-url'] = attributes['path'] elif image is not None: path = IPath(document) rewritten_path = path.pathToUrlPath(attributes['path']) if not options.upgrade30: if not rewritten_path: site = IVirtualSite(request) rewritten_path = site.get_root_url() + \ "/++resource++Products.SilvaDocument/broken-link.jpg" attributes['title'] = _(u'Referenced image is missing') attributes['rewritten_path'] = rewritten_path if image is not None: if IImage.providedBy(image): resolution = options.image_res attributes['title'] = image.get_title() if resolution and not options.upgrade30: attributes['rewritten_path'] += '?%s' % resolution if resolution == 'hires': width, height = image.get_dimensions() attributes['width'] = str(width) attributes['height'] = str(height) else: if 'reference' in attributes: attributes['reference'] = self.get_reference( attributes['reference']) if attributes.has_key('alignment'): if not attributes['alignment']: attributes['alignment'] = 'default' else: attributes['alignment'] = 'default' self.startElementNS(NS_DOCUMENT_URI, node.nodeName, attributes) self.endElementNS(NS_DOCUMENT_URI, node.nodeName)