[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