Fixed summary and changed a few links.
[catagits/Gitalist.git] / lib / Gitalist / URIStructure / Repository.pm
index 9d7a0e3..13c6ed8 100644 (file)
@@ -5,10 +5,9 @@ use namespace::autoclean;
 
 requires 'base';
 
-after 'base' => sub {
-    my ($self, $c) = @_;
-    $c->stash(_do_not_mangle_uri_for => 1);
-};
+with qw/
+    Gitalist::URIStructure::WithLog
+/;
 
 sub find : Chained('base') PathPart('') CaptureArgs(1) {
     my ($self, $c, $repos_name) = @_;
@@ -19,6 +18,7 @@ sub find : Chained('base') PathPart('') CaptureArgs(1) {
         $c->stash(
             Repository => $repos,
             HEAD => $repos->head_hash,
+            data => $repos,
         );
     }
     catch {
@@ -26,13 +26,26 @@ sub find : Chained('base') PathPart('') CaptureArgs(1) {
     };
 }
 
-sub summary : Chained('find') PathPart('') Args(0) {}
+before 'log' => sub {
+    my ($self, $c) = @_;
+    $c->stash->{Commit} = $c->stash->{Repository}->get_object($c->stash->{Repository}->head_hash);
+};
 
-sub shortlog : Chained('find') Args(0) {}
+sub object : Chained('find') PathPart('') Args(1) {
+    my ($self, $c, $sha1) = @_;
 
-sub heads : Chained('find') Args(0) {}
+    my $repo = $c->stash->{Repository};
+    my $obj  = $c->stash->{Commit} = $repo->get_object($sha1);
+    my($act) = (ref($obj) || '') =~ /::(\w+)$/;
 
-sub log : Chained('find') Args(0) {}
+    $c->res->redirect($c->uri_for_action("/ref/\L$act", [$repo->name, $obj->sha1]));
+    $c->res->status(301);
+
+}
+
+sub summary : Chained('find') Args() {}
+
+sub heads : Chained('find') Args(0) {}
 
 sub tags : Chained('find') Args(0) {}