... | ... |
@@ -89,6 +89,16 @@ sub is_admin { |
89 | 89 |
return $is_admin; |
90 | 90 |
} |
91 | 91 |
|
92 |
+sub is_private_project { |
|
93 |
+ my ($self, $user, $project) = @_; |
|
94 |
+ |
|
95 |
+ # Is private |
|
96 |
+ my $private = $self->app->dbi->model('project') |
|
97 |
+ ->select('private', id => [$user, $project])->value; |
|
98 |
+ |
|
99 |
+ return $private; |
|
100 |
+} |
|
101 |
+ |
|
92 | 102 |
sub members { |
93 | 103 |
my ($self, $user, $project) = @_; |
94 | 104 |
|
... | ... |
@@ -321,7 +331,8 @@ EOS |
321 | 331 |
my $project_columns = [ |
322 | 332 |
"default_branch not null default 'master'", |
323 | 333 |
"original_user not null default ''", |
324 |
- "original_pid integer not null default 0" |
|
334 |
+ "original_pid integer not null default 0", |
|
335 |
+ "private not null default 0" |
|
325 | 336 |
]; |
326 | 337 |
for my $column (@$project_columns) { |
327 | 338 |
eval { $dbi->execute("alter table project add column $column") }; |
... | ... |
@@ -1,6 +1,7 @@ |
1 | 1 |
<% |
2 | 2 |
# API |
3 | 3 |
my $api = gitprep_api; |
4 |
+ my $manager = app->manager; |
|
4 | 5 |
|
5 | 6 |
# Parameters |
6 | 7 |
my $op = param('op') || ''; |
... | ... |
@@ -39,8 +40,8 @@ |
39 | 40 |
} |
40 | 41 |
else { |
41 | 42 |
eval { app->manager->rename_project($user, $project, $to_project) }; |
42 |
- if ($@) { |
|
43 |
- app->log->error($@); |
|
43 |
+ if (my $e = $@) { |
|
44 |
+ app->log->error($e); |
|
44 | 45 |
$errors = ['Internal Error']; |
45 | 46 |
} |
46 | 47 |
else { |
... | ... |
@@ -59,8 +60,8 @@ |
59 | 60 |
$description = '' unless defined $description; |
60 | 61 |
|
61 | 62 |
eval { $git->description($user, $project, $description) }; |
62 |
- if ($@) { |
|
63 |
- app->log->error("/$user/$project/settings?op=description: $@"); |
|
63 |
+ if (my $e = $@) { |
|
64 |
+ app->log->error("/$user/$project/settings?op=description: $e"); |
|
64 | 65 |
$errors = ['Internal Error']; |
65 | 66 |
} |
66 | 67 |
else { |
... | ... |
@@ -74,8 +75,8 @@ |
74 | 75 |
elsif ($op eq 'default-branch' && $post) { |
75 | 76 |
my $default_branch = param('default-branch'); |
76 | 77 |
eval { app->manager->default_branch($user, $project, $default_branch) }; |
77 |
- if ($@) { |
|
78 |
- app->log->error("/$user/$project/settings?op=default-branch: $@"); |
|
78 |
+ if (my $e = $@) { |
|
79 |
+ app->log->error("/$user/$project/settings?op=default-branch: $e"); |
|
79 | 80 |
$errors = ['Internal Error']; |
80 | 81 |
} |
81 | 82 |
else { |
... | ... |
@@ -85,6 +86,27 @@ |
85 | 86 |
} |
86 | 87 |
} |
87 | 88 |
|
89 |
+ # Private repository |
|
90 |
+ elsif ($op eq 'private' && $post) { |
|
91 |
+ my $private = param('private') ? 1 : 0; |
|
92 |
+ |
|
93 |
+ eval { |
|
94 |
+ app->dbi->model('project')->update( |
|
95 |
+ {private => $private}, |
|
96 |
+ id => [$user, $project] |
|
97 |
+ ); |
|
98 |
+ }; |
|
99 |
+ if (my $e = $@) { |
|
100 |
+ app->log->error("/$user/$project/settings?op=private: $e"); |
|
101 |
+ $errors = ['Internal Error']; |
|
102 |
+ } |
|
103 |
+ else { |
|
104 |
+ flash(message => 'Private status is saved.'); |
|
105 |
+ $self->redirect_to('current'); |
|
106 |
+ return; |
|
107 |
+ } |
|
108 |
+ } |
|
109 |
+ |
|
88 | 110 |
# Delete project |
89 | 111 |
elsif ($op eq 'delete-project' && $post) { |
90 | 112 |
|
... | ... |
@@ -92,8 +114,8 @@ |
92 | 114 |
my $project = param('project'); |
93 | 115 |
|
94 | 116 |
eval { app->manager->delete_project($user, $project) }; |
95 |
- if ($@) { |
|
96 |
- app->log->error("/$user/$project/settings:$@"); |
|
117 |
+ if (my $e = $@) { |
|
118 |
+ app->log->error("/$user/$project/settings: $e"); |
|
97 | 119 |
$errors = ['Internal Error']; |
98 | 120 |
} |
99 | 121 |
else { |
... | ... |
@@ -191,9 +213,11 @@ |
191 | 213 |
<div class="border-gray radius-bottom" style="padding:5px 10px;border-top:none;"> |
192 | 214 |
<form id="form-default-branch" action="<%= url_for->query(op => 'private') %>" method="post" style="margin-bottom:0px"> |
193 | 215 |
<span>Make this repository private</span> |
194 |
- %# my $private = $git->description($user, $project); |
|
195 |
- % my $private = 1; |
|
196 |
- %= check_box 'private' => $private, style => 'margin-top:0px;margin-left:5px;margin-right:10px'; |
|
216 |
+ % my $private = app->manager->is_private_project($user, $project); |
|
217 |
+ % if ($private) { |
|
218 |
+ % param('private', 1); |
|
219 |
+ % } |
|
220 |
+ %= check_box 'private' => 1, style => 'margin-top:0px;margin-left:5px;margin-right:10px'; |
|
197 | 221 |
<input type="submit" class="btn" value="Save"> |
198 | 222 |
</form> |
199 | 223 |
</div> |