diff options
author | Jesse Luehrs <doy@tozt.net> | 2011-02-18 00:12:12 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2011-02-18 00:12:12 -0600 |
commit | 4875037269702e9e4195d01e2711b489c40ad0e9 (patch) | |
tree | 1f73708fa2b2cf8a6241ced5891749f846da8a67 /lib | |
parent | 85de4ab2e5114c343cac8abd89a796d1bb48153a (diff) | |
download | narwhal-4875037269702e9e4195d01e2711b489c40ad0e9.tar.gz narwhal-4875037269702e9e4195d01e2711b489c40ad0e9.zip |
allow viewing page history
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Narwhal.pm | 7 | ||||
-rw-r--r-- | lib/Narwhal/Component/Wiki.pm | 37 |
2 files changed, 44 insertions, 0 deletions
diff --git a/lib/Narwhal.pm b/lib/Narwhal.pm index 4437027..9c0f099 100644 --- a/lib/Narwhal.pm +++ b/lib/Narwhal.pm @@ -42,6 +42,13 @@ router as { route '/edit/:page_name' => 'http-method:edit', ( page_name => { isa => 'Str' }, ); + route '/page/:page_name/:rev' => 'wiki.old_page', ( + page_name => { isa => 'Str' }, + rev => { isa => qr/^[0-9a-f]{40}$/ }, + ); + route '/history/:page_name' => 'wiki.history', ( + page_name => { isa => 'Str' }, + ); }, ( redirect => depends_on('/Component/Redirect'), wiki => depends_on('/Component/Wiki'), diff --git a/lib/Narwhal/Component/Wiki.pm b/lib/Narwhal/Component/Wiki.pm index 1139301..e3eb254 100644 --- a/lib/Narwhal/Component/Wiki.pm +++ b/lib/Narwhal/Component/Wiki.pm @@ -31,6 +31,43 @@ sub page { ); } +sub old_page { + my $self = shift; + my ($req, $page_name, $rev) = @_; + + my $page_rev = $self->lookup($rev); + return $req->new_response(404) + unless $page_rev; + + $self->render( + $req, + 'page.tt', + { + page => $page_name, + text => $page_rev->text, + author => $page_rev->author, + modified => $page_rev->modification_date, + historical => 1, + }, + ); +} + +sub history { + my $self = shift; + my ($req, $page_name) = @_; + + my $page = $self->lookup("page:$page_name"); + + $self->render( + $req, + 'history.tt', + { + page => $page_name, + head => $page->current_revision, + } + ); +} + __PACKAGE__->meta->make_immutable; no Moose; |