From 6427b44b427efde7c4f788d64b1695d83ab578e9 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@allmydata.com>
Date: Fri, 29 Jun 2007 11:17:18 -0700
Subject: [PATCH] webish: make each link in the directory name an href to that
 directory

---
 src/allmydata/web/directory.xhtml |  2 +-
 src/allmydata/webish.py           | 26 ++++++++++++++++++++++----
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/allmydata/web/directory.xhtml b/src/allmydata/web/directory.xhtml
index b6425e31..2ef480b4 100644
--- a/src/allmydata/web/directory.xhtml
+++ b/src/allmydata/web/directory.xhtml
@@ -9,7 +9,7 @@
   </head>
   <body>
 
-<h1><p n:render="header"></p></h1>
+<h2 n:render="header"></h2>
 
 <div><a href=".">Refresh this view</a></div>
 <div><a href="..">Parent Directory</a></div>
diff --git a/src/allmydata/webish.py b/src/allmydata/webish.py
index 85549086..77e54f6b 100644
--- a/src/allmydata/webish.py
+++ b/src/allmydata/webish.py
@@ -133,13 +133,31 @@ class Directory(rend.Page):
         return d
 
     def render_title(self, ctx, data):
-        return ctx.tag["Directory of '%s':" % self._dirname]
+        return ctx.tag["Directory '%s':" % self._dirname]
 
     def render_header(self, ctx, data):
-        header = "Directory of '%s':" % self._dirname
+        parent_directories = self._dirname.split("/")
+        num_dirs = len(parent_directories)
+
+        header = ["Directory '"]
+        for i,d in enumerate(parent_directories):
+            if d == "":
+                link = "/".join([".."] * (num_dirs - i))
+                header.append(T.a(href=link)["/"])
+            else:
+                if i == num_dirs-1:
+                    link = "."
+                else:
+                    link = "/".join([".."] * (num_dirs - i - 1))
+                header.append(T.a(href=link)[d])
+                if i < num_dirs - 1:
+                    header.append("/")
+        header.append("'")
+
         if not self._dirnode.is_mutable():
-            header += " (readonly)"
-        return header
+            header.append(" (readonly)")
+        header.append(":")
+        return ctx.tag[header]
 
     def data_share_uri(self, ctx, data):
         return self._dirnode.get_uri()
-- 
2.45.2