gitprep / templates / auto / _new.html.ep /
Newer Older
160 lines | 4.323kb
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
1
<%
add create repository tests
Yuki Kimoto authored on 2013-05-19
2
  # API
3
  my $api = gitprep_api;
fix session
Yuki Kimoto authored on 2016-04-21
4
  my $session_user_row_id = session('user_row_id');
5
  my $session_user = app->dbi->model('user')->select(where => {row_id => $session_user_row_id})->one;
add create repository tests
Yuki Kimoto authored on 2013-05-19
6

            
improved create repository f...
Yuki Kimoto authored on 2013-03-21
7
  my $op = param('op') || '';
add create repository tests
Yuki Kimoto authored on 2013-05-19
8

            
9
  # Authentication
10
  unless ($api->logined) {
11
    $self->redirect_to('/');
12
    return;
13
  }
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
14
  
15
  my $errors;
add validation to _new
Yuki Kimoto authored on 2016-05-04
16
  if (lc $self->req->method eq 'post') {
17
    if ($op eq 'create') {
18
      # Parameters
19
      my $project_id = param('project');
20
      my $description = param('description');
21
      my $readme = param('readme');
22
      my $private = param('private');
improved create repository f...
Yuki Kimoto authored on 2013-03-21
23
      
add validation to _new
Yuki Kimoto authored on 2016-05-04
24
      # Validator
25
      my $vc = app->vc;
cleanup _new page validation
Yuki Kimoto authored on 2016-02-11
26
      
add validation to _new
Yuki Kimoto authored on 2016-05-04
27
      # Validation
28
      my $validation = $vc->validation;
29
      
30
      # "project"
31
      if (!(defined $project_id && length $project_id)) {
32
        $validation->add_failed(project => 'Repository name is empty');
33
      }
34
      elsif (length $project_id > 300) {
35
        $validation->add_failed(project => 'Repository name is too long');
36
      }
37
      elsif (!$vc->check($project_id, 'project_name')) {
38
        $validation->add_failed(project => 'Invalid repository name');
improved create repository f...
Yuki Kimoto authored on 2013-03-21
39
      }
add validation to _new
Yuki Kimoto authored on 2016-05-04
40
      elsif (app->manager->exists_project($session_user->{id}, $project_id)) {
41
        $validation->add_failed(project => 'Repository already exists');
42
      }
43
      
44
      # "description"
45
      $description ||= '';
46
      if (length $description > 300) {
47
        $validation->add_failed(description => 'description is too long');
48
      }
49
      
50
      # "readme"
51
      $readme = $readme ? 1 :0;
52
      
53
      # "private"
54
      $private = $private ? 1 : 0;
55
      
56
      # Git
57
      if ($validation->is_valid) {
58
        # Not logined
59
        unless ($api->logined) {
60
          return $self->reply->exception;
61
        }
62
        
63
        my $manager = app->manager;
64
        # Create repository
65
        eval {
66
          $manager->create_project(
67
            $session_user->{id},
68
            $project_id,
69
            {description => $description, readme => $readme, private => $private}
70
          );
71
        };
72
        
73
        if (my $e = $@) {
74
          app->log->error(url_for . ": $e");
75
          $errors = ['Internal error'];
76
        }
77
        else {
78
          $self->redirect_to("/$session_user->{id}/$project_id");
79
          return;
80
        }
improved create repository f...
Yuki Kimoto authored on 2013-03-21
81
      }
add validation to _new
Yuki Kimoto authored on 2016-05-04
82
      else { $errors = $validation->messages }
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
83
    }
84
  }
85
%>
86

            
add title
Yuki Kimoto authored on 2013-06-12
87
% layout 'common', title => 'Create a New Repository';
added login page
Yuki Kimoto authored on 2013-02-09
88

            
improve _new page design
Yuki Kimoto authored on 2015-12-19
89
  %= include '/include/header', no_project_header => 1;
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
90
  
improve new page design
Yuki Kimoto authored on 2016-01-21
91
  <div class="new-container">
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
92
    % if ($errors) {
93
      <div class="alert alert-error">
94
        <button type="button" class="close" data-dismiss="alert">&times;</button>
95
        % for my $error (@$errors) {
96
          <p><%= $error %></p>
97
        % }
98
      </div>
99
    % }
improve new page design
Yuki Kimoto authored on 2016-01-21
100
    <div class="new-title-container">
101
      <div class="new-title">
improve _new page design
Yuki Kimoto authored on 2015-12-19
102
        Create a new repository
103
      </div>
104
    </div>
cleanup create repository pa...
Yuki Kimoto authored on 2013-03-18
105
    <form action="<%= url_for->query(op => 'create') %>" method="post">
improve new page design
Yuki Kimoto authored on 2016-01-21
106
      <div class="new-repository">
107
        <table>
108
          <tr>
109
            <td>
110
              <b>Owner</b>
111
            </td>
112
            <td>
113
            
114
            </td>
115
            <td>
116
              <b>Repository name</b>
117
            </td>
118
          </tr>
119
          <tr>
120
            <td>
fix session
Yuki Kimoto authored on 2016-04-21
121
              <i class="icon-user"></i><%= $session_user->{id} %>
improve new page design
Yuki Kimoto authored on 2016-01-21
122
            </td>
123
            <td style="padding:0 10px">
124
              /
125
            </td>
126
            <td>
127
              <%= text_field 'project'%>
128
            </td>
129
          </tr>
130
        </table>
131
        <div class="2th-child">
132
          <b>Description</b> <span style="color:#767676">(optional)</span>
133
        </div>
134
        <div class="last-child">
135
          <%= text_field 'description' %>
136
        </div>
improve _new page design
Yuki Kimoto authored on 2015-12-19
137
      </div>
improve new page design
Yuki Kimoto authored on 2016-01-21
138
      <ul class="new-private">
139
        <li>
140
          <div>
141
            <%= radio_button private => 0, checked => undef %><span>Public</span>
142
          </div>
143
        </li>
144
        <li>
145
          <div>
146
            <%= radio_button private => 1 %><span>Private</span>
147
          </div>
148
        </li>
149
      </ul>
added README commited rep fe...
Yuki Kimoto authored on 2013-03-28
150
      
improve new page design
Yuki Kimoto authored on 2016-01-21
151
      <div class="new-readme">
152
        <div>
improve button design
Yuki Kimoto authored on 2016-11-30
153
          <%= check_box readme => 1 %><span>Initialize this repository with a README<span>
improve new page design
Yuki Kimoto authored on 2016-01-21
154
        </div>
add private checkbox to new ...
Yuki Kimoto authored on 2013-11-26
155
      </div>
improve new page design
Yuki Kimoto authored on 2016-01-21
156
      
improve button design
Yuki Kimoto authored on 2016-11-30
157
      <input type="submit" class="btn btn-green btn-new" value="Create repository">
cleanup create repository pa...
Yuki Kimoto authored on 2013-03-18
158
    </form>
added login page
Yuki Kimoto authored on 2013-02-09
159
  </div>
160
  %= include '/include/footer';