From 1d86cd161beab42fa1d40bbf6e4d4d8f59e02153 Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@lothar.com> Date: Tue, 26 Jun 2007 19:55:21 -0700 Subject: [PATCH] webish.py: add a web page to display the manifest for any particular directory --- src/allmydata/web/directory.xhtml | 1 + src/allmydata/web/manifest.xhtml | 27 +++++++++++++++++++++++++++ src/allmydata/webish.py | 20 ++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 100644 src/allmydata/web/manifest.xhtml diff --git a/src/allmydata/web/directory.xhtml b/src/allmydata/web/directory.xhtml index a4b73b7c..b6425e31 100644 --- a/src/allmydata/web/directory.xhtml +++ b/src/allmydata/web/directory.xhtml @@ -13,6 +13,7 @@ <div><a href=".">Refresh this view</a></div> <div><a href="..">Parent Directory</a></div> +<div><a href="@manifest">Manifest for this directory</a></div> <div>To share this directory, paste the following URI string into an "Add Shared Directory" box: <pre class="overflow" n:render="string" n:data="share_uri" /></div> diff --git a/src/allmydata/web/manifest.xhtml b/src/allmydata/web/manifest.xhtml new file mode 100644 index 00000000..0e57fe6d --- /dev/null +++ b/src/allmydata/web/manifest.xhtml @@ -0,0 +1,27 @@ +<html xmlns:n="http://nevow.com/ns/nevow/0.1"> + <head> + <title n:render="title"></title> + <!-- <link href="http://www.allmydata.com/common/css/styles.css" + rel="stylesheet" type="text/css"/> --> + <link href="/tahoe_css" rel="stylesheet" type="text/css"/> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + </head> + <body> + +<h1><p n:render="header"></p></h1> + + +<table n:render="sequence" n:data="items" border="1"> + <tr n:pattern="header"> + <td>Refresh Capabilities</td> + </tr> + <tr n:pattern="item" n:render="row"> + <td><n:slot name="refresh_capability"/></td> + </tr> + + <tr n:pattern="empty"><td>no items in the manifest!</td></tr> + +</table> + + </body> +</html> diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py index a49fcc18..70db0950 100644 --- a/src/allmydata/webish.py +++ b/src/allmydata/webish.py @@ -114,6 +114,8 @@ class Directory(rend.Page): def childFactory(self, ctx, name): if name.startswith("freeform"): # ick return None + if name == "@manifest": # ick, this time it's my fault + return Manifest(self._dirnode, self._dirname) if self._dirname == "/": dirname = "/" + name else: @@ -350,6 +352,24 @@ class Downloader(resource.Resource): self._filenode.download(WebDownloadTarget(req)) return server.NOT_DONE_YET +class Manifest(rend.Page): + docFactory = getxmlfile("manifest.xhtml") + def __init__(self, dirnode, dirname): + self._dirnode = dirnode + self._dirname = dirname + + def render_title(self, ctx): + return T.title["Manifest of %s" % self._dirname] + + def render_header(self, ctx): + return T.p["Manifest of %s" % self._dirname] + + def data_items(self, ctx, data): + return self._dirnode.build_manifest() + + def render_row(self, ctx, refresh_cap): + ctx.fillSlots("refresh_capability", refresh_cap) + return ctx.tag class Root(rend.Page): -- 2.45.2