Showing 18 changed files with 61 additions and 39 deletions
+1 -1
lib/Gitprep.pm
... ...
@@ -66,7 +66,7 @@ sub startup {
66 66
   $self->git($git);
67 67
   
68 68
   # Repository Manager
69
-  my $manager = Gitprep::Manager->new(app => $self);
69
+  my $manager = Gitprep::Manager->new(app => $self, git => $git);
70 70
   weaken $manager->{app};
71 71
   $self->manager($manager);
72 72
   
+9
lib/Gitprep/API.pm
... ...
@@ -87,6 +87,15 @@ sub can_access_private_project {
87 87
   return $is_valid;
88 88
 }
89 89
 
90
+sub manager {
91
+  my $self = shift;
92
+  
93
+  my $manager = $self->app->manager->clone;
94
+  $manager->git($self->git);
95
+  
96
+  return $manager;
97
+}
98
+
90 99
 sub new {
91 100
   my ($class, $cntl) = @_;
92 101
 
+20 -9
lib/Gitprep/Manager.pm
... ...
@@ -8,6 +8,7 @@ use File::Path qw/mkpath rmtree/;
8 8
 use File::Temp ();
9 9
 
10 10
 has 'app';
11
+has 'git';
11 12
 
12 13
 sub admin_user {
13 14
   my $self = shift;
... ...
@@ -19,6 +20,16 @@ sub admin_user {
19 20
   return $admin_user;
20 21
 }
21 22
 
23
+sub clone {
24
+  my $self = shift;
25
+  
26
+  my $clone = __PACKAGE__->new;
27
+  $clone->app($self->app);
28
+  $clone->git($self->git);
29
+  
30
+  return $clone;
31
+}
32
+
22 33
 sub default_branch {
23 34
   my ($self, $user, $project, $default_branch) = @_;
24 35
   
... ...
@@ -266,7 +277,7 @@ sub rename_project {
266 277
   my ($self, $user, $project, $to_project) = @_;
267 278
   
268 279
   # Rename project
269
-  my $git = $self->app->git;
280
+  my $git = $self->git;
270 281
   my $dbi = $self->app->dbi;
271 282
   my $error;
272 283
   eval {
... ...
@@ -431,7 +442,7 @@ sub _create_rep {
431 442
   my ($self, $user, $project, $opts) = @_;
432 443
   
433 444
   # Create repository directory
434
-  my $git = $self->app->git;
445
+  my $git = $self->git;
435 446
   my $rep = $git->rep($user, $project);
436 447
   mkdir $rep
437 448
     or croak "Can't create directory $rep: $!";
... ...
@@ -558,7 +569,7 @@ sub _create_user_dir {
558 569
   my ($self, $user) = @_;
559 570
   
560 571
   # Create user directory
561
-  my $rep_home = $self->app->git->rep_home;
572
+  my $rep_home = $self->git->rep_home;
562 573
   my $user_dir = "$rep_home/$user";
563 574
   mkpath $user_dir;
564 575
 }
... ...
@@ -576,7 +587,7 @@ sub _delete_user_dir {
576 587
   my ($self, $user) = @_;
577 588
   
578 589
   # Delete user directory
579
-  my $rep_home = $self->app->git->rep_home;
590
+  my $rep_home = $self->git->rep_home;
580 591
   my $user_dir = "$rep_home/$user";
581 592
   rmtree $user_dir;
582 593
 }
... ...
@@ -593,7 +604,7 @@ sub _delete_rep {
593 604
   my ($self, $user, $project) = @_;
594 605
 
595 606
   # Delete repository
596
-  my $rep_home = $self->app->git->rep_home;
607
+  my $rep_home = $self->git->rep_home;
597 608
   croak "Can't remove repository. repository home is empty"
598 609
     if !defined $rep_home || $rep_home eq '';
599 610
   my $rep = "$rep_home/$user/$project.git";
... ...
@@ -625,7 +636,7 @@ sub _exists_rep {
625 636
   my ($self, $user, $project) = @_;
626 637
   
627 638
   # Exists repository
628
-  my $rep = $self->app->git->rep($user, $project);
639
+  my $rep = $self->git->rep($user, $project);
629 640
   
630 641
   return -e $rep;
631 642
 }
... ...
@@ -634,7 +645,7 @@ sub _fork_rep {
634 645
   my ($self, $user, $project, $to_user, $to_project) = @_;
635 646
   
636 647
   # Fork repository
637
-  my $git = $self->app->git;
648
+  my $git = $self->git;
638 649
   my $rep = $git->rep($user, $project);
639 650
   my $to_rep = $git->rep($to_user, $to_project);
640 651
   my @cmd = (
... ...
@@ -676,8 +687,8 @@ sub _rename_rep {
676 687
     unless defined $user && defined $project && defined $renamed_project;
677 688
 
678 689
   # Rename repository
679
-  my $rep = $self->app->git->rep($user, $project);
680
-  my $renamed_rep = $self->app->git->rep($user, $renamed_project);
690
+  my $rep = $self->git->rep($user, $project);
691
+  my $renamed_rep = $self->git->rep($user, $renamed_project);
681 692
   move($rep, $renamed_rep)
682 693
     or croak "Can't move $rep to $renamed_rep: $!";
683 694
 }
+1 -1
templates/auto/_admin/user/create.html.ep
... ...
@@ -39,7 +39,7 @@
39 39
       $params->{salt} = $salt;
40 40
       
41 41
       # Create user
42
-      eval { app->manager->create_user($id, $params) };
42
+      eval { $api->manager->create_user($id, $params) };
43 43
       if ($@) {
44 44
         app->log->error($@);
45 45
         $errors = ['Internal Error'];
+2 -2
templates/auto/_admin/users.html.ep
... ...
@@ -23,7 +23,7 @@
23 23
       
24 24
       # Delete user
25 25
       my $count;
26
-      eval { $count = app->manager->delete_user($user) };
26
+      eval { $count = $api->manager->delete_user($user) };
27 27
       if ($@) {
28 28
         app->log->error("/_admin/users?op=delete: $@");
29 29
         $errors = ['Internal Error'];
... ...
@@ -41,7 +41,7 @@
41 41
     else { $errors = $vresult->messages }
42 42
   }
43 43
   
44
-  my $users = app->manager->users;
44
+  my $users = $api->manager->users;
45 45
 %>
46 46
 
47 47
 % layout 'common', title => 'Admin Users';
+1 -1
templates/auto/_new.html.ep
... ...
@@ -46,7 +46,7 @@
46 46
       my $description = $data->{description};
47 47
       my $readme = $data->{readme};
48 48
       
49
-      my $manager = app->manager;
49
+      my $manager = $api->manager;
50 50
       if ($manager->exists_project($user, $project)) {
51 51
         $errors = ['Repository already exists'];
52 52
       }
+2 -2
templates/auto/_start.html.ep
... ...
@@ -2,7 +2,7 @@
2 2
   # API
3 3
   my $api = gitprep_api;
4 4
   
5
-  my $admin_user = app->manager->admin_user;
5
+  my $admin_user = $api->manager->admin_user;
6 6
   if (defined $admin_user && $admin_user ne '') {
7 7
     $self->redirect_to('/');
8 8
     return;
... ...
@@ -15,7 +15,7 @@
15 15
   if ($op eq 'create') {
16 16
     
17 17
     # Check existence admin user
18
-    my $admin_user = app->manager->admin_user;
18
+    my $admin_user = $api->manager->admin_user;
19 19
     if (defined $admin_user) { $errors = ['Admin user already exists.'] }
20 20
     else {
21 21
       # Validation
+3 -1
templates/auto/index.html.ep
... ...
@@ -1,6 +1,8 @@
1 1
 <%
2
+  my $api = gitprep_api;
3
+
2 4
   # Users
3
-  my $manager = app->manager;
5
+  my $manager = $api->manager;
4 6
   my $users = $manager->users;
5 7
   
6 8
   # Goto Start page
+1 -1
templates/auto/reset-password.html.ep
... ...
@@ -12,7 +12,7 @@
12 12
   my $logined_user = $api->logined($user);
13 13
   
14 14
   if ($reset_password_conf_on) {
15
-    my $admin_user = app->manager->admin_user;
15
+    my $admin_user = $api->manager->admin_user;
16 16
     $user = $admin_user ? $admin_user->{id} : undef;
17 17
   }
18 18
   elsif (!$logined_admin && !$logined_user) {
+1 -1
templates/branches.html.ep
... ...
@@ -52,7 +52,7 @@
52 52
   }
53 53
   
54 54
   # Default branch
55
-  my $base_branch_name = param('base_branch') || app->manager->default_branch($user, $project);
55
+  my $base_branch_name = param('base_branch') || $api->manager->default_branch($user, $project);
56 56
   my $base_branch = $git->branch($user, $project, $base_branch_name);
57 57
   
58 58
   # No merged branches
+2 -2
templates/fork.html.ep
... ...
@@ -14,13 +14,13 @@
14 14
   }
15 15
   
16 16
   # Repository is already exists
17
-  if (app->manager->exists_project($current_user, $project)) {
17
+  if ($api->manager->exists_project($current_user, $project)) {
18 18
     $self->redirect_to("/$current_user/$project");
19 19
     return;
20 20
   }
21 21
   # Fork
22 22
   else {
23
-    eval { app->manager->fork_project($current_user, $user, $project) };
23
+    eval { $api->manager->fork_project($current_user, $user, $project) };
24 24
     if ($@) {
25 25
       $self->render_exception('Internal Error');
26 26
       app->log->error("/$user/$project/fork: $@");
+1 -1
templates/include/code_menu.html.ep
... ...
@@ -6,7 +6,7 @@
6 6
   $rev = '' unless defined $rev;
7 7
   my $branches = stash('branches');
8 8
   my $branches_count = $api->git->branches_count($user, $project);
9
-  my $default_branch_name = app->manager->default_branch($user, $project);
9
+  my $default_branch_name = $api->manager->default_branch($user, $project);
10 10
   my $tags_count = $api->git->tags_count($user, $project);
11 11
 %>
12 12
 
+2 -2
templates/include/project_header.html.ep
... ...
@@ -3,8 +3,8 @@
3 3
   my $logined = $api->logined;
4 4
   my $current_user = session('user');
5 5
   my $user = stash('user');
6
-  my $original_user = app->manager->original_user($user, $project);
7
-  my $original_project = app->manager->original_project($user, $project);
6
+  my $original_user = $api->manager->original_user($user, $project);
7
+  my $original_project = $api->manager->original_project($user, $project);
8 8
 %>
9 9
 
10 10
 <div class="row" style="margin-bottom:10px">
+2 -2
templates/network.html.ep
... ...
@@ -6,7 +6,7 @@
6 6
   my $branches = [map { $_->{name} } @{$api->git->branches($user, $project)}];
7 7
   
8 8
   # Members
9
-  my $members = app->manager->members($user, $project);
9
+  my $members = $api->manager->members($user, $project);
10 10
   
11 11
   # Members branches
12 12
   for my $member (@$members) {
... ...
@@ -17,7 +17,7 @@
17 17
   }
18 18
   
19 19
   # Default branch
20
-  my $default_branch = app->manager->default_branch($user, $project);
20
+  my $default_branch = $api->manager->default_branch($user, $project);
21 21
 %>
22 22
 
23 23
 % layout 'common', title => "Network \x{30fb} $user/$project";
+2 -2
templates/project.html.ep
... ...
@@ -12,9 +12,9 @@
12 12
   # Parameters
13 13
   my $user = param('user');
14 14
   my $project = param('project');
15
-  my $rev = app->manager->default_branch($user, $project);
15
+  my $rev = $api->manager->default_branch($user, $project);
16 16
   
17
-  unless (app->manager->exists_project($user, $project)) {
17
+  unless ($api->manager->exists_project($user, $project)) {
18 18
     $self->render_not_found;
19 19
     return;
20 20
   }
+8 -8
templates/settings.html.ep
... ...
@@ -3,7 +3,7 @@
3 3
   
4 4
   # API
5 5
   my $api = gitprep_api;
6
-  my $manager = app->manager;
6
+  my $manager = $api->manager;
7 7
   
8 8
   # Parameters
9 9
   my $op = param('op') || '';
... ...
@@ -37,11 +37,11 @@
37 37
       my $to_project = $data->{'to-project'};
38 38
       
39 39
       # Rename
40
-      if (app->manager->exists_project($user, $to_project)) {
40
+      if ($api->manager->exists_project($user, $to_project)) {
41 41
         $errors = ["$to_project is already exists"];
42 42
       }
43 43
       else {
44
-        eval { app->manager->rename_project($user, $project, $to_project) };
44
+        eval { $api->manager->rename_project($user, $project, $to_project) };
45 45
         if (my $e = $@) {
46 46
           app->log->error($e);
47 47
           $errors = ['Internal Error'];
... ...
@@ -76,7 +76,7 @@
76 76
   # Change default branch
77 77
   elsif ($op eq 'default-branch' && $post) {
78 78
     my $default_branch = param('default-branch');
79
-    eval { app->manager->default_branch($user, $project, $default_branch) };
79
+    eval { $api->manager->default_branch($user, $project, $default_branch) };
80 80
     if (my $e = $@) {
81 81
       app->log->error("/$user/$project/settings?op=default-branch: $e");
82 82
       $errors = ['Internal Error'];
... ...
@@ -145,7 +145,7 @@
145 145
     my $user = param('user');
146 146
     my $project = param('project');
147 147
     
148
-    eval { app->manager->delete_project($user, $project) };
148
+    eval { $api->manager->delete_project($user, $project) };
149 149
     if (my $e = $@) {
150 150
       app->log->error("/$user/$project/settings: $e");
151 151
       $errors = ['Internal Error'];
... ...
@@ -265,7 +265,7 @@
265 265
           <div class="border-gray radius-bottom" style="padding:5px 10px;border-top:none;">
266 266
             <form action="<%= url_for->query(op => 'private') %>" method="post" style="margin-bottom:0px">
267 267
               <span>Make this repository private</span>
268
-              % my $private = app->manager->is_private_project($user, $project);
268
+              % my $private = $api->manager->is_private_project($user, $project);
269 269
               % if ($private) {
270 270
                 % param('private', 1);
271 271
               % }
... ...
@@ -308,7 +308,7 @@
308 308
 
309 309
   <div id="rename-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="rename-confirm-label" aria-hidden="true">
310 310
     <div class="modal-header">
311
-      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
311
+      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button>
312 312
       <div style="font-weight:bold">Are you sure you want to rename?</div>
313 313
     </div>
314 314
     <div class="modal-body">
... ...
@@ -333,7 +333,7 @@
333 333
 
334 334
   <div id="delete-confirm" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="delete-confirm-label" aria-hidden="true">
335 335
     <div class="modal-header">
336
-      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
336
+      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">??</button>
337 337
       <div style="font-weight:bold">Are you ABSOLUTELY sure?</div>
338 338
     </div>
339 339
     <div class="modal-body">
+1 -1
templates/settings/collaboration.html.ep
... ...
@@ -1,7 +1,7 @@
1 1
 <%
2 2
   # API
3 3
   my $api = gitprep_api;
4
-  my $manager = app->manager;
4
+  my $manager = $api->manager;
5 5
 
6 6
   # Parameters
7 7
   my $op = param('op') || '';
+2 -2
templates/user.html.ep
... ...
@@ -11,11 +11,11 @@
11 11
   my $user = param('user');
12 12
   
13 13
   # Projects
14
-  unless (app->manager->exists_user($user)) {
14
+  unless ($api->manager->exists_user($user)) {
15 15
     $self->render_not_found;
16 16
     return;
17 17
   }
18
-  my $projects = app->manager->projects($user);
18
+  my $projects = $api->manager->projects($user);
19 19
   my $reps = [];
20 20
   for my $project (@$projects) {
21 21
     my $rep = $api->git->repository($user, $project->{name}) || {none => 1};