[Rt-commit] r5937 - in commitbit: . lib/CommitBit lib/CommitBit/Model share/web/templates/admin

jesse at bestpractical.com jesse at bestpractical.com
Fri Sep 15 09:38:47 EDT 2006


Author: jesse
Date: Fri Sep 15 09:38:46 2006
New Revision: 5937

Added:
   commitbit/lib/CommitBit.pm
   commitbit/share/web/templates/admin/projects
   commitbit/share/web/templates/admin/repositories
Modified:
   commitbit/   (props changed)
   commitbit/lib/CommitBit/Dispatcher.pm
   commitbit/lib/CommitBit/Model/ProjectMember.pm
   commitbit/share/web/templates/admin/index.html

Log:
 r27495 at pinglin:  jesse | 2006-09-15 14:38:36 +0100
 * Admin UI appears to hang together. 
 * ProjectMember has acls
 


Added: commitbit/lib/CommitBit.pm
==============================================================================
--- (empty file)
+++ commitbit/lib/CommitBit.pm	Fri Sep 15 09:38:46 2006
@@ -0,0 +1,6 @@
+package CommitBit;
+
+use warnings;
+use strict;
+
+our $VERSION = '0.01';

Modified: commitbit/lib/CommitBit/Dispatcher.pm
==============================================================================
--- commitbit/lib/CommitBit/Dispatcher.pm	(original)
+++ commitbit/lib/CommitBit/Dispatcher.pm	Fri Sep 15 09:38:46 2006
@@ -6,9 +6,10 @@
         Jifty->web->navigation->child( logout=>label=>_( 'Logout'), url => '/logout');
     } else {
         Jifty->web->navigation->child(login=>label=>_( 'Login'), url => '/login');
-
-
     }
+    if (Jifty->web->current_user->user_object->admin) {
+        Jifty->web->navigation->child(admin=>label=>_( 'Admin'), url => '/admin');
+   }
 
 };
 
@@ -72,9 +73,25 @@
 };
 
 
-on qr'^/admin/repository/(.+?)(/.*|)$' => run {
+before qr'^/admin' => run {
+    my $admin =   Jifty->web->navigation->child('admin');
+     $admin->child( 'repos' => label => 'Repositories', url => '/admin/repositories');
+     $admin->child( 'proj' => label => 'Projects', url => '/admin/projects');
+
+
+};
+
+before qr'^/admin/project/([^/]+)(/.*|)$' => run  {
+    warn "Setting nav";
+    my $admin =   Jifty->web->navigation->child('admin')->child('proj');
+    my $proj = $admin->child( $1 => label => $1, url => '/admin/project/'.$1.'/index.html');
+    $proj->child( base => label => _('Overview'), url => '/admin/project/'.$1.'/index.html'); 
+    $proj->child( people => label => _('People'), url => '/admin/project/'.$1.'/people'); 
+};
+
+on qr'^/admin/repository/([^/]+)(/.*|)$' => run {
     my $name    = $1;
-    my $path    = $2;
+    my $path    = $2||'index.html';
     $name = URI::Escape::uri_unescape($name);
     warn "Name - $name - $path";
     my $repository = CommitBit::Model::Repository->new();
@@ -83,15 +100,22 @@
         redirect '/__jifty/error/repository/not_found';
     }
 
+    my $admin =   Jifty->web->navigation->child('admin')->child('repos');
+    $radmin =   $admin->child($repository->name => url => '/admin/repository/'.$name.'/index.html');
+    $radmin->child( $repository->name => label => 'Overview', url => '/admin/repository/'.$name.'/index.html');
+    $radmin->child( $repository->name."projects" => label => 'Projects', url => '/admin/repository/'.$name.'/projects');
     set repository => $repository;
-
-    show( '/admin/repository/' . $path || '/repository/index.html' );
+    show "/admin/repository/$path";
 };
 
-on qr'^/(.*?/)?project/(.+?)(/.*|)$' => run {
+
+
+on qr'^/(.*?/)?project/([^/]+)(/.*|)$' => run {
     my $prefix = $1 ||'';
     my $name    = $2;
     my $path    = $3;
+    warn "Got to $1 $2 $3";
+
     $name = URI::Escape::uri_unescape($name);
     my $project = CommitBit::Model::Project->new();
     $project->load_by_cols( name => $name );
@@ -100,8 +124,11 @@
     }
 
     set project => $project;
+    my $url = $prefix . ($path ? '/project/' . $path : '/project/index.html' );
+
+#    Jifty->web->navigation->child( $project->name => label => $project->name, url => $ENV{'REQUEST_URI'});
 
-    show $prefix . ('/project/' . $path || '/project/index.html' );
+    show $url;
 };
 
 1;

Modified: commitbit/lib/CommitBit/Model/ProjectMember.pm
==============================================================================
--- commitbit/lib/CommitBit/Model/ProjectMember.pm	(original)
+++ commitbit/lib/CommitBit/Model/ProjectMember.pm	Fri Sep 15 09:38:46 2006
@@ -3,9 +3,8 @@
 
 package CommitBit::Model::ProjectMember;
 use Jifty::DBI::Schema;
-#use Jifty::RightsFrom column => 'project';
+use Jifty::RightsFrom column => 'project';
 
-sub current_user_can {1}
 use CommitBit::Model::User;
 use CommitBit::Model::Project;
 
@@ -61,6 +60,19 @@
     return $u->id();
 }
 
+sub current_user_can {
+    my $self      = shift;
+    my $rightname = shift;
+    if ( $rightname eq 'update' ) { return undef }
+    if ( $rightname eq 'read' )   { return 1 }
+    if (   $rightname eq 'delete'
+        && $self->user->id == $self->current_user->id )
+    {
+        return 1;
+    }
+    return $self->delegate_current_user_can( $rightname => @_ );
+
+}
 
 1;
 

Modified: commitbit/share/web/templates/admin/index.html
==============================================================================
--- commitbit/share/web/templates/admin/index.html	(original)
+++ commitbit/share/web/templates/admin/index.html	Fri Sep 15 09:38:46 2006
@@ -1,27 +1,6 @@
 <&|/_elements/wrapper, title => 'Commit bit!' &>
 
 <h1><%_('Welcome to CommitBit')%></h1>
+From this administrative interface, you can manage projects and repositories, (assuming that you've got the permissions)
 
-<p><%_('Local repositories')%></p>
-<dl>
-% my $repositorys = CommitBit::Model::RepositoryCollection->new;
-% $repositorys->unlimit();
-% while ( my $p = $repositorys->next ) {
-<dt><%Jifty->web->link( url => '/admin/repository/'.$p->name, label => $p->name)%></dt>
-<dd<%$p->description%></dd>
-% }
-</dl>
-% if (Jifty->web->current_user->user_object->admin) {
-(<% Jifty->web->link( label => 'Create another repository', url => '/admin/create_repository')%>)
-% }
-
-<p><%_('Pick a project')%></p>
-<dl>
-% my $projects = CommitBit::Model::ProjectCollection->new;
-% $projects->unlimit();
-% while ( my $p = $projects->next ) {
-<dt><%Jifty->web->link( url => '/admin/project/'.$p->name, label => $p->name)%></dt>
-<dd<%$p->description%></dd>
-% }
-</dl>
 </&>

Added: commitbit/share/web/templates/admin/projects
==============================================================================
--- (empty file)
+++ commitbit/share/web/templates/admin/projects	Fri Sep 15 09:38:46 2006
@@ -0,0 +1,10 @@
+<&|/_elements/wrapper, title => 'Manage projects' &>
+<dl>
+% my $projects = CommitBit::Model::ProjectCollection->new;
+% $projects->unlimit();
+% while ( my $p = $projects->next ) {
+<dt><%Jifty->web->link( url => '/admin/project/'.$p->name, label => $p->name)%></dt>
+<dd<%$p->description%></dd>
+% }
+</dl>
+</&>

Added: commitbit/share/web/templates/admin/repositories
==============================================================================
--- (empty file)
+++ commitbit/share/web/templates/admin/repositories	Fri Sep 15 09:38:46 2006
@@ -0,0 +1,14 @@
+<&|/_elements/wrapper, title => 'Manage repositories' &>
+
+<dl>
+% my $repositorys = CommitBit::Model::RepositoryCollection->new;
+% $repositorys->unlimit();
+% while ( my $p = $repositorys->next ) {
+<dt><%Jifty->web->link( url => '/admin/repository/'.$p->name, label => $p->name)%></dt>
+<dd<%$p->description%></dd>
+% }
+</dl>
+% if (Jifty->web->current_user->user_object->admin) {
+(<% Jifty->web->link( label => 'Create another repository', url => '/admin/create_repository')%>)
+% }
+</&>


More information about the Rt-commit mailing list