def __init__(self, environ=None): """ Initialize the serialization. Delete tiddlyweb.title to turn off HTMLPresenter. """ HTMLSerialization.__init__(self, environ) del self.environ['tiddlyweb.title']
def list_tiddlers(self, bag): """ If the URL is a list of bag tiddlers, we present a bag editing interface. Otherwise we use the parent serialization. """ if (self.environ['wsgiorg.routing_args'][1].get('tiddler_name')): return HTMLSerialization.list_tiddlers(self, bag) try: name = self.environ['wsgiorg.routing_args'][1]['bag_name'] except KeyError: # not a bag link return HTMLSerialization.list_tiddlers(self, bag) representation_link = '%s/bags/%s/tiddlers' % ( self._server_prefix(), encode_name(bag.name)) representations = self._tiddler_list_header(representation_link) user_object = get_user_object(self.environ) publicity = '' try: bag.policy.allows(user_object, 'manage') policy = bag.policy publicity = determine_publicity(user_object, policy) except (UserRequiredError, ForbiddenError): policy = None try: bag.policy.allows(user_object, 'delete') delete = True except (UserRequiredError, ForbiddenError): delete = False data = {'title': 'TiddlyHoster Bag %s' % bag.name, 'policy': policy, 'publicity': publicity, 'delete': delete, 'bag': bag, 'representations': representations} del self.environ['tiddlyweb.title'] return send_template(self.environ, 'baglist.html', data)
def tiddler_as(self, tiddler): self.environ['tiddlyweb.links'].append( '<link rel="alternate" ' 'type="application/atom+xml" ' 'title="Atom" href="%s" />' % '%s.atom' % tiddler_url(self.environ, tiddler)) return HTMLSerialization.tiddler_as(self, tiddler)
def _tiddler_list_header(self, wiki_link): if wiki_link: self.environ['tiddlyweb.links'].append( '<link rel="alternate" type="application/atom+xml" title="Atom" href="%s" />' \ % '%s.atom' % wiki_link ) return HTMLSerialization._tiddler_list_header(self, wiki_link)
def _footer(self): """ Add editor to the footer. """ output = "" # Not using tiddlyweb.web.util:get_route_value to avoid # ValueError routing_args = self.environ["wsgiorg.routing_args"][1] config = self.environ["tiddlyweb.config"] if "tiddlyeditor_tiddlers" in config: tiddler_name = routing_args.get("tiddler_name", None) recipe_name = routing_args.get("recipe_name", "") bag_name = routing_args.get("bag_name", "") revision = routing_args.get("revision", None) server_prefix = config["server_prefix"] if tiddler_name and not revision: output = """ <div id="edit"> <a href="%s/tiddlyeditor?tiddler=%s;bag=%s;recipe=%s">TiddlyEdit</a> </div> """ % ( server_prefix, tiddler_name, bag_name, recipe_name, ) original_footer = HTML._footer(self) if output: head, sep, tail = original_footer.partition('<div id="badge">') return head + output + sep + tail return original_footer
def _tiddler_list_header(self, wiki_link): if wiki_link: self.environ['tiddlyweb.links'].append( '<link rel="alternate" ' 'type="application/atom+xml" ' 'title="Atom" href="%s" />' % '%s.atom' % wiki_link) return HTMLSerialization._tiddler_list_header(self, wiki_link)
def tiddler_as(self, tiddler): links = [] for javascript in self.environ['tiddlyweb.config'].get( 'mdedit.javascripts', []): links.append('<script type="text/javascript" src="%s"></script>' % javascript) for css in self.environ['tiddlyweb.config'].get('mdedit.css', []): links.append('<link rel="stylesheet" type="text/css" href="%s" />' % css) self.environ['tiddlyweb.links'] = links return HTML.tiddler_as(self, tiddler)
def list_tiddlers(self, tiddlers): """ If the URL is a list of bag tiddlers, we present a bag editing interface. Otherwise we use the parent serialization. """ if (self.environ['wsgiorg.routing_args'][1].get('tiddler_name')): return HTMLSerialization.list_tiddlers(self, tiddlers) try: name = get_route_value(environ, 'bag_name') return self._bag_list(tiddlers) except KeyError: # not a bag link try: name = get_route_value(environ, 'recipe_name') return self._recipe_list(tiddlers, name) except KeyError: return self._bag_list(tiddlers)
def list_tiddlers(self, tiddlers): """ If the URL is a list of bag tiddlers, we present a bag editing interface. Otherwise we use the parent serialization. """ if (self.environ['wsgiorg.routing_args'][1].get('tiddler_name')): return HTMLSerialization.list_tiddlers(self, tiddlers) try: name = self.environ['wsgiorg.routing_args'][1]['bag_name'] return self._bag_list(tiddlers) except KeyError: # not a bag link try: name = self.environ['wsgiorg.routing_args'][1]['recipe_name'] name = urllib.unquote(name) name = unicode(name, 'utf-8') return self._recipe_list(tiddlers, name) except KeyError: return self._bag_list(tiddlers)
def tiddler_as(self, tiddler): tiddler.text = tiddler.text.upper() return HTMLSerialization.tiddler_as(self, tiddler)
def tiddler_as(self, tiddler): return self._templatize(HTMLSerialization.tiddler_as(self, tiddler))
def bag_as(self, bag): return self._templatize(HTMLSerialization.bag_as(self, bag))
def recipe_as(self, recipe): return self._templatize(HTMLSerialization.recipe_as(self, recipe))
def list_bags(self, bags): return self._templatize(HTMLSerialization.list_bags(self, bags))
def list_recipes(self, recipes): return self._templatize(HTMLSerialization.list_recipes(self, recipes))