From 753b942d6620056a978ab1c86ac0d327266ff375 Mon Sep 17 00:00:00 2001 From: Correl Roush Date: Mon, 22 Nov 2010 09:50:41 -0500 Subject: [PATCH] Added some browsing abilities --- browser/templatetags/vcs.py | 11 +++++++++++ browser/urls.py | 3 ++- browser/views.py | 4 ++-- media/default.css | 11 +++++++++-- templates/browser/navigation.html | 17 +++++++++++++++-- 5 files changed, 39 insertions(+), 7 deletions(-) diff --git a/browser/templatetags/vcs.py b/browser/templatetags/vcs.py index 6f738c3..fd12105 100644 --- a/browser/templatetags/vcs.py +++ b/browser/templatetags/vcs.py @@ -1,3 +1,4 @@ +import os from django.template import Library from django.template.defaultfilters import stringfilter @@ -8,3 +9,13 @@ register = Library() def oneline(value): line = value.split('\n')[0].strip() return line + +@register.filter +@stringfilter +def dirname(value): + return os.path.dirname(value) + +@register.filter +@stringfilter +def basename(value): + return os.path.basename(value) diff --git a/browser/urls.py b/browser/urls.py index 92f3d6f..b37f950 100644 --- a/browser/urls.py +++ b/browser/urls.py @@ -1,6 +1,7 @@ from django.conf.urls.defaults import * urlpatterns = patterns('', - (r'^(?P.*?)/log/(?P(.*?/)+)?$', 'codereview.browser.views.log'), + (r'^(?P.*?)/log/$', 'codereview.browser.views.log'), + (r'^(?P.*?)/log/(?P.*?/?)$', 'codereview.browser.views.log'), (r'^(?P.*?)/view/(?P.*?)/$', 'codereview.browser.views.view'), ) diff --git a/browser/views.py b/browser/views.py index 61f4f84..a33510d 100755 --- a/browser/views.py +++ b/browser/views.py @@ -14,9 +14,9 @@ def log(request,repository, path=None): offset = int(request.GET['o']) if 'o' in request.GET else 0 limit = 20 - path = os.path.dirname(path) if path else '' + path = path if path else '' log = repo.log(ref, path=path, max=limit, offset=offset) - navigation = dict(zip(('dirs', 'files'), repo.browse())) + navigation = dict(zip(('dirs', 'files'), repo.browse(ref, os.path.dirname(path)))) newer = offset - limit if offset > limit else 0 # Inspect the last commit. If it has no parents, we can't go any further diff --git a/media/default.css b/media/default.css index c5ed04d..d5dc724 100644 --- a/media/default.css +++ b/media/default.css @@ -6,14 +6,21 @@ a { color: black; } div.navigation { - width: 200px; + width: 300px; float: left; background-color: #ddd; + overflow: hidden; } div.content { - margin-left: 200px; + margin-left: 300px; background-color: #eee; } +ul.tree li.dir { + list-style-type: circle; +} +ul.tree li.file { + list-style-type: square; +} span.marker { display: block; float: left; diff --git a/templates/browser/navigation.html b/templates/browser/navigation.html index 6a71ff0..b5a9cf1 100644 --- a/templates/browser/navigation.html +++ b/templates/browser/navigation.html @@ -1,9 +1,22 @@ +{% load vcs %}

{{ repository.name }}

+{% if path|dirname %} + {{ path|dirname }}/
+ Up one +{% endif %}
    {% for dir in navigation.dirs %} -
  • {{ dir }}
  • +
  • + {{ dir|basename }} +
  • {% endfor %} {% for file in navigation.files %} -
  • {{ file }}
  • +
  • + {% if file == path %} + {{ file|basename }} + {% else %} + {{ file|basename }} + {% endif %} +
  • {% endfor %}