xaizek / rocketgit (License: AGPLv3+) (since 2018-12-09)
Light and fast Git hosting solution suitable to serve both as a hub or as a personal code storage with its tickets, pull requests, API and much more.
Commit c307acb2b9340adbcfa2442c2abd88f72a72ab15

CSS changes, rework of <label> element.
Author: Catalin(ux) M. BOIE
Author date (UTC): 2015-07-13 15:48
Committer name: Catalin(ux) M. BOIE
Committer date (UTC): 2015-07-13 15:48
Parent(s): 53e96aea10cb7559c84ca47b53c20b503031b2f1
Signing key:
Tree: c2598a5ea919243d339bce79709b27de6f1ccd7c
File Lines added Lines deleted
Compare.txt 1 0
TODO 24 4
duilder.conf 1 1
inc/bug.inc.php 1 1
inc/plan.inc.php 1 1
inc/rights.inc.php 9 3
inc/struct.inc.php 2 1
inc/user.inc.php 11 6
inc/util.inc.php 20 2
root/index.php 6 1
root/themes/default/admin/init.html 30 30
root/themes/default/admin/invites/invites.html 17 17
root/themes/default/admin/plans/add_edit.html 45 45
root/themes/default/download-vm.html 2 2
root/themes/default/errmsg/footer.html 0 2
root/themes/default/errmsg/header.html 1 2
root/themes/default/errmsg/line.html 1 1
root/themes/default/features.html 3 2
root/themes/default/index.html 49 41
root/themes/default/main.css 69 74
root/themes/default/repo/add_edit.html 21 20
root/themes/default/repo/bug/bug_add_edit.html 22 22
root/themes/default/repo/bug/note_add.html 5 5
root/themes/default/repo/bug/search/search.html 56 56
root/themes/default/repo/search.html 5 5
root/themes/default/suggestion.html 5 13
root/themes/default/user/add_edit.html 41 35
root/themes/default/user/forgot.html 16 12
root/themes/default/user/forgot_send.html 5 5
root/themes/default/user/keys/add.html 5 5
root/themes/default/user/login.html 16 10
root/themes/default/user/pass.html 13 13
root/themes/default/user/repo/delete/sure.html 5 5
root/themes/default/user/repo/rights/form_repo.html 23 22
root/themes/default/user/repo/rights/form_repo_path.html 27 26
root/themes/default/user/repo/rights/form_repo_refs.html 27 26
tests/http_create_account.php 13 3
tests/http_settings.php 11 12
tests/user.php 2 2
File Compare.txt changed (mode: 100644) (index 3da7297..38f42b1)
... ... Anonymous push Yes ? No ? ? ?
13 13 Languages 1 ? ? ? ? ? Languages 1 ? ? ? ? ?
14 14 IPv6 Yes ? ? ? ? ? IPv6 Yes ? ? ? ? ?
15 15 Submodules ? ? ? ? ? ? Submodules ? ? ? ? ? ?
16 Usable with lynx ? ? ? ? ? ?
16 17
17 18
18 19 [Rights] [Rights]
File TODO changed (mode: 100644) (index f4cc376..56a6010)
1 1 == Where I stopped last time == == Where I stopped last time ==
2 [ ] Switch to Affero GPL?
3 [ ] css: fix top header!
2 4 [ ] [ ]
3 5
4
5 6 == CSRF logic == == CSRF logic ==
6 7 - Generate a token for a specific form (call rg_token_get with an $op) - Generate a token for a specific form (call rg_token_get with an $op)
7 8 Why I do not use a key per user not a master key?! Maybe because I have Why I do not use a key per user not a master key?! Maybe because I have
 
... ... to store it in db. Why not? Because of caching of the pages...
16 17
17 18
18 19 == BEFORE NEXT RELEASE == == BEFORE NEXT RELEASE ==
20 [ ] Use bintray.com to distribute isos?
21 [ ] When creating an account, seems the email is cached, not the username!
22 Check!
23 [ ] After login, show the last ip and date of the last login?
24 [ ] I should show some 'plan' islands when you create the account
25 so the user will know the disk space and bandwidth.
26 [ ] In a table, if nothing can be deleted, do not show the delete button.
27 [ ] Add IP address in /etc/issue (or /etc/motd), somehw to appear, maybe using
28 a systemd script that runs before terminal?
29 [ ] web hooks: start with a http post to a custom server.
30 [ ] When giving some users rights to your repo, do not spam them with
31 messages. The user must agree to be spammed. Best, no notification
32 is ever issued. User may go to project to activate them if s/he wants.
33 (see Linus Torvalds post about GitHub)
34 [ ] Add a cache based on content. For example, if a repo was last changed
35 at timestamp t1, add a cache entry 'history''t1' with the content
36 to not render it again. Same for 'history''source' and
37 'history''logs' etc.
38 [ ] We should have a daemon which will test the expiration of variables in
39 cache and will refresh them. Also, it will receive prefetch
40 requests. For example: when a user logs in, we can prefetch the list
41 of repos.
19 42 [ ] Prefetch of varibles from cache [ ] Prefetch of varibles from cache
20 43 Take care of non-existing vars in cache. Take care of non-existing vars in cache.
21 44 First candidate: first_install. First candidate: first_install.
22 [ ] Seems I do not insert a history item on repo creation!
23 45 [ ] admin_delete_rights::delete, was not protected against csrf/ua! [ ] admin_delete_rights::delete, was not protected against csrf/ua!
24 46 Other places? Use a unit test for this stuff? Other places? Use a unit test for this stuff?
25 [ ] When building VM, automatically add a snapshot, so user can go back.
26 47 [ ] Some rg_cache_unset may trigger an error. Case by case we have to [ ] Some rg_cache_unset may trigger an error. Case by case we have to
27 48 analyze the impact. We may want to give an error to the user. analyze the impact. We may want to give an error to the user.
28 49 I am thinking at tokens. Maybe we do ot want to mark it as used in I am thinking at tokens. Maybe we do ot want to mark it as used in
29 50 db if we cannot set it as used in the cache. Else, an attacker may db if we cannot set it as used in the cache. Else, an attacker may
30 51 reuse the token. reuse the token.
31 52 [ ] Run the tests also with cache down (on the server side). [ ] Run the tests also with cache down (on the server side).
32 [ ] When showing empty rights, maybe replace with "DENY"?
33 53 [ ] Show who is watching a bug. [ ] Show who is watching a bug.
34 54 [ ] Mess with session_*() functions to achieve some vars persistence. [ ] Mess with session_*() functions to achieve some vars persistence.
35 55 [ ] Add a para to rg_token_get to specify the form (ex: 'login'), this way [ ] Add a para to rg_token_get to specify the form (ex: 'login'), this way
File duilder.conf changed (mode: 100644) (index 3d10ee8..9828243)
1 1 PRJ="rocketgit" PRJ="rocketgit"
2 VER="0.36"
2 VER="0.37"
3 3 REV="1" REV="1"
4 4 EXCLUDE=".exclude" EXCLUDE=".exclude"
5 5 EXPORT_PATH="/data/www/umbrella/kernel/us/rocketgit" EXPORT_PATH="/data/www/umbrella/kernel/us/rocketgit"
File inc/bug.inc.php changed (mode: 100644) (index e3782b1..d5c6568)
... ... function rg_bug_state_select($value, $exclude)
205 205 global $rg_bug_states; global $rg_bug_states;
206 206
207 207 $ret = ""; $ret = "";
208 $ret .= "<select name=\"state\">\n";
208 $ret .= "<select name=\"state\" id=\"state\">\n";
209 209 foreach ($rg_bug_states as $key => $name) { foreach ($rg_bug_states as $key => $name) {
210 210 if (in_array($key, $exclude)) if (in_array($key, $exclude))
211 211 continue; continue;
File inc/plan.inc.php changed (mode: 100644) (index 6690ce9..306ef98)
... ... function rg_plan_select($db, $plan_id)
215 215 if ($list === FALSE) if ($list === FALSE)
216 216 return rg_warning("Could not load plans."); return rg_warning("Could not load plans.");
217 217
218 $ret = "<select name=\"plan_id\">\n";
218 $ret = "<select name=\"plan_id\" id=\"plan_id\">\n";
219 219 foreach ($list as $row) { foreach ($list as $row) {
220 220 $add = ""; $add = "";
221 221 if ($row['id'] == $plan_id) if ($row['id'] == $plan_id)
File inc/rights.inc.php changed (mode: 100644) (index 3001127..559a846)
... ... function rg_rights_checkboxes($type, $name, $passed_rights)
111 111 } }
112 112
113 113 $ret = ""; $ret = "";
114 $br = "";
114 115 foreach ($rg_rights[$type] as $right => $info) { foreach ($rg_rights[$type] as $right => $info) {
115 116 $add = ""; $add = "";
116 117 if (strstr($passed_rights, $right)) if (strstr($passed_rights, $right))
117 118 $add = " checked=\"checked\""; $add = " checked=\"checked\"";
118 $ret .= "<input type=\"checkbox\""
119 $ret .= $br
120 . "<input type=\"checkbox\""
119 121 . " name=\"" . $name . "[$right]\"" . " name=\"" . $name . "[$right]\""
120 . $add . " />$info<br />\n";
122 . " id=\"" . $name . "[$right]\""
123 . $add . " />"
124 . "<label for=\"" . $name . "[$right]\">" . $info . "</label>"
125 . "\n";
126 $br = "<br />\n";
121 127 } }
122 128
123 129 return $ret; return $ret;
 
... ... function rg_rights_text($type, $rights)
140 146
141 147 $len = strlen($rights); $len = strlen($rights);
142 148 if ($len == 0) if ($len == 0)
143 return array("Deny everything");
149 return array("None");
144 150
145 151 for ($i = 0; $i < $len; $i++) { for ($i = 0; $i < $len; $i++) {
146 152 if (isset($rg_rights[$type][$rights[$i]])) if (isset($rg_rights[$type][$rights[$i]]))
File inc/struct.inc.php changed (mode: 100644) (index da058c3..7f4b318)
... ... $rg_sql_struct[32]['other'] = array(
418 418 $rg_sql_struct[33] = array(); $rg_sql_struct[33] = array();
419 419 $rg_sql_struct[33]['tables'] = array(); $rg_sql_struct[33]['tables'] = array();
420 420 $rg_sql_struct[33]['other'] = array( $rg_sql_struct[33]['other'] = array(
421 "suggestion_itime" => "ALTER TABLE suggestions ADD itime INTEGER NOT NULL DEFAULT 0"
421 "suggestion_itime" => "ALTER TABLE suggestions ADD itime INTEGER NOT NULL DEFAULT 0",
422 "suggestion_email" => "ALTER TABLE suggestions DROP email"
422 423 ); );
423 424
424 425 TODO: do not fill email in suggestions - we have the uid! TODO: do not fill email in suggestions - we have the uid!
File inc/user.inc.php changed (mode: 100644) (index 0525fa3..e660e53)
... ... function rg_user_edit($db, $d)
435 435 $d['confirmed'] = 0; $d['confirmed'] = 0;
436 436 } }
437 437
438 if (!empty($d['pass'])) {
438 $update_pass = !empty($d['pass']);
439 if ($update_pass) {
439 440 if (strcmp($d['pass'], $d['pass2']) != 0) { if (strcmp($d['pass'], $d['pass2']) != 0) {
440 441 rg_user_set_error("passwords are not the same"); rg_user_set_error("passwords are not the same");
441 442 break; break;
442 443 } }
444
445 $d['salt'] = rg_id(40);
446 $d['pass_crypted'] = rg_user_pass($d['salt'], $d['pass']);
443 447 } }
444 448
445 449 $d['itime'] = time(); $d['itime'] = time();
446 $d['salt'] = rg_id(40);
447 $d['pass_crypted'] = rg_user_pass($d['salt'], $d['pass']);
448 450
449 451 if ($d['uid'] == 0) { // add if ($d['uid'] == 0) { // add
450 452 if (rg_user_pass_ok($d['pass']) !== TRUE) if (rg_user_pass_ok($d['pass']) !== TRUE)
 
... ... function rg_user_edit($db, $d)
461 463 . " RETURNING uid"; . " RETURNING uid";
462 464 } else { // edit } else { // edit
463 465 $salt_pass_add = ""; $salt_pass_add = "";
464 if (!empty($d['pass'])) {
466 if ($update_pass)
465 467 $salt_pass_add = ", pass = @@pass_crypted@@" $salt_pass_add = ", pass = @@pass_crypted@@"
466 468 . ", salt = @@salt@@"; . ", salt = @@salt@@";
467 }
468 469
469 470 $sql = "UPDATE users" $sql = "UPDATE users"
470 471 . " SET username = @@username@@" . " SET username = @@username@@"
 
... ... function rg_user_edit($db, $d)
507 508 } }
508 509 rg_event_signal_daemon("", 0); rg_event_signal_daemon("", 0);
509 510 } else { // edit } else { // edit
511 // else, we will overwrite the pass in cache
512 if (!$update_pass)
513 unset($d['pass']);
514 unset($d['pass2']); // not needed in cache
510 515 rg_cache_merge('user::' . $d['uid'], $d, RG_SOCKET_NO_WAIT); rg_cache_merge('user::' . $d['uid'], $d, RG_SOCKET_NO_WAIT);
511 516 } }
512 517
 
... ... function rg_user_edit_high_level($db, &$rg)
1495 1500 } }
1496 1501
1497 1502 if ($ui['uid'] == 0) { if ($ui['uid'] == 0) {
1498 $_ui = rg_user_info($db, 0, $ui['username'], "");
1503 $_ui = rg_user_info($db, 0, $ui['username'], '');
1499 1504 if ($_ui['ok'] != 1) { if ($_ui['ok'] != 1) {
1500 1505 $errmsg[] = rg_user_error(); $errmsg[] = rg_user_error();
1501 1506 break; break;
File inc/util.inc.php changed (mode: 100644) (index dd45fc0..cd8fde2)
... ... function rg_re_repo_git($organization, $user, $repo)
254 254 . $prefix . "/" . rawurlencode($user) . "/" . rawurlencode($repo); . $prefix . "/" . rawurlencode($user) . "/" . rawurlencode($repo);
255 255 } }
256 256
257 function rg_var_str($name)
257 function rg_var_get($name)
258 258 { {
259 $ret = "";
259 $ret = FALSE;
260 260
261 261 if (isset($_SERVER[$name])) if (isset($_SERVER[$name]))
262 262 $ret = $_SERVER[$name]; $ret = $_SERVER[$name];
 
... ... function rg_var_str($name)
268 268 return $ret; return $ret;
269 269 } }
270 270
271 function rg_var_is_set($name)
272 {
273 $c = rg_var_get($name);
274 if ($c === FALSE)
275 return 0;
276
277 return 1;
278 }
279
280 function rg_var_str($name)
281 {
282 $c = rg_var_get($name);
283 if ($c === FALSE)
284 return '';
285
286 return $c;
287 }
288
271 289 function rg_var_int($name) function rg_var_int($name)
272 290 { {
273 291 $r = rg_var_str($name); $r = rg_var_str($name);
File root/index.php changed (mode: 100644) (index 37971f5..2c9f130)
... ... while ($tries > 0) {
94 94 if ($r === 0) { if ($r === 0) {
95 95 $good = 1; $good = 1;
96 96 break; break;
97 } else {
98 rg_log("Fixes needed (r=$r)");
97 99 } }
100 } else {
101 rg_log("db struct update needed (r=$r)");
98 102 } }
99 103
100 104 rg_log("Schema/fixes is not up-to-date! Sleep 1 second..."); rg_log("Schema/fixes is not up-to-date! Sleep 1 second...");
 
... ... while ($tries > 0) {
102 106 sleep(1); sleep(1);
103 107 } }
104 108 if ($good == 0) { if ($good == 0) {
105 // TODO: we must let it go to dispatcher instead of redirecting = another connection
109 // TODO: we must let it go to dispatcher instead of redirecting =>
110 // another connection
106 111 $url = rg_re_url("fatal"); $url = rg_re_url("fatal");
107 112 rg_fatal_web("Internal error", $url); rg_fatal_web("Internal error", $url);
108 113 } }
File root/themes/default/admin/init.html changed (mode: 100644) (index 4f1a4b0..4897b8d)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Create first admin account</div><br />
3 <div class="formarea_title">Create first admin account</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="username" class="form_item_title">User name (public)</label><br />
12 <input type="text" name="init::username" value="@@init::username@@" />
13 <br />
14 <br />
15
16 <label for="realname" class="form_item_title">Name (not public)</label><br />
17 <input type="text" name="init::realname" value="@@init::realname@@" />
18 <br />
19 <br />
20
21 <label for="email" class="form_item_title">E-mail (not public)</label><br />
22 <input type="text" name="init::email" value="@@init::email@@" />
23 <br />
24 <br />
25
26 <label for="pass" class="form_item_title">Password</label><br />
27 <input type="password" name="init::pass" value="@@init::pass@@" />
28 <br />
29 <br />
30
31 <label for="pass2" class="form_item_title">Password (confirmation)</label><br />
32 <input type="password" name="init::pass2" value="@@init::pass2@@" />
33 <br />
34 <br />
35
36 <label for="session_time" class="form_item_title">Preferred session time (in seconds)</label><br />
37 <input type="text" name="init::session_time" value="@@init::session_time@@" />
38 <br />
39 <br />
11 <p>
12 <label for="username">User name (public)</label><br />
13 <input type="text" name="init::username" id="username" value="@@init::username@@" />
14 </p>
15
16 <p>
17 <label for="realname">Name (not public)</label><br />
18 <input type="text" name="init::realname" id="realname" value="@@init::realname@@" />
19 </p>
20
21 <p>
22 <label for="email">E-mail (not public)</label><br />
23 <input type="text" name="init::email" id="email" value="@@init::email@@" />
24 </p>
25
26 <p>
27 <label for="pass">Password</label><br />
28 <input type="password" name="init::pass" id="pass" value="@@init::pass@@" />
29 </p>
30
31 <p>
32 <label for="pass2">Password (confirmation)</label><br />
33 <input type="password" name="init::pass2" id="pass2" value="@@init::pass2@@" />
34 </p>
35
36 <p>
37 <label for="session_time">Preferred session time (in seconds)</label><br />
38 <input type="text" name="init::session_time" id="session_time" value="@@init::session_time@@" />
39 </p>
40 40
41 41 <input type="submit" value="Create" /> <input type="submit" value="Create" />
42 42 </form> </form>
File root/themes/default/admin/invites/invites.html changed (mode: 100644) (index 2cc6bbd..811d082)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Send invites</div><br />
3 <div class="formarea_title">Send invites</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="inv::list" class="form_item_title">
11 <p>
12 <label for="list">
12 13 People list (email|name pairs) People list (email|name pairs)
13 14 </label><br /> </label><br />
14 <textarea name="inv::list" rows="20" cols="100">@@inv::list@@</textarea>
15 <br />
16 <br />
15 <textarea name="inv::list" id="list" rows="20" cols="100">@@inv::list@@</textarea>
16 </p>
17 17
18 <label for="inv::subject" class="form_item_title">
18 <p>
19 <label for="subject">
19 20 Subject ({NAME} will be replaced with the name defined above) Subject ({NAME} will be replaced with the name defined above)
20 21 </label><br /> </label><br />
21 <input type="text" name="inv::subject" size="100" value="@@inv::subject@@" />
22 <br />
23 <br />
22 <input type="text" name="inv::subject" id="subject" size="100" value="@@inv::subject@@" />
23 </p>
24 24
25 <label for="inv::file" class="form_item_title">
25 <p>
26 <label for="file">
26 27 File containing the body of the mail e-mail File containing the body of the mail e-mail
27 28 ({NAME} will be replaced with the name defined above) ({NAME} will be replaced with the name defined above)
28 29 </label><br /> </label><br />
29 <input type="file" name="inv::file" size="80" />
30 <br />
31 <br />
30 <input type="file" name="inv::file" id="file" size="80" />
31 </p>
32 32
33 <label for="inv::body" class="form_item_title">
33 <p>
34 <label for="body">
34 35 If you did not upload any file, insert here the body of e-mail If you did not upload any file, insert here the body of e-mail
35 36 ({NAME} will be replaced with the name defined above) ({NAME} will be replaced with the name defined above)
36 37 </label><br /> </label><br />
37 <textarea name="inv::body" rows="20" cols="100">@@inv::body@@</textarea>
38 <br />
39 <br />
38 <textarea name="inv::body" id="body" rows="20" cols="100">@@inv::body@@</textarea>
39 </p>
40 40
41 41 <input type="submit" name="button" value="Send" /> <input type="submit" name="button" value="Send" />
42 42
File root/themes/default/admin/plans/add_edit.html changed (mode: 100644) (index ca17966..b0b133f)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">@@if(@@id@@ == 0){{Add a new plan}}{{Edit plan}}</div><br />
3 <div class="formarea_title">@@if(@@id@@ == 0){{Add a new plan}}{{Edit plan}}</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label for="pi::position" class="form_item_title">Position in the list</label><br />
13 <input type="text" name="pi::position" value="@@pi::position@@" />
14 <br />
15 <br />
16
17 <label for="pi::name" class="form_item_title">Name</label><br />
18 <input type="text" name="pi::name" value="@@pi::name@@" />
19 <br />
20 <br />
21
22 <label for="pi::description" class="form_item_title">Description</label><br />
23 <textarea name="pi::description" rows="4" cols="50">@@pi::description@@</textarea>
24 <br />
25 <br />
26
27 <label for="pi::disk_mb" class="form_item_title">Maximum disk space (MiB, 0 = unlimited)</label><br />
28 <input type="text" name="pi::disk_mb" value="@@pi::disk_mb@@" />
29 <br />
30 <br />
31
32 <label for="pi::users" class="form_item_title">Maximum number of co-workers (0 = unlimited)</label><br />
33 <input type="text" name="pi::users" value="@@pi::users@@" />
34 <br />
35 <br />
36
37 <label for="pi::speed" class="form_item_title">Maximum speed (kbit/s, 0 = unlimited)</label><br />
38 <input type="text" name="pi::speed" value="@@pi::speed@@" />
39 <br />
40 <br />
41
42 <label for="pi::bw" class="form_item_title">Maximum bandwidth (MiB/month, 0 = unlimited)</label><br />
43 <input type="text" name="pi::bw" value="@@pi::bw@@" />
44 <br />
45 <br />
46
47 <label for="pi::max_public_repos" class="form_item_title">Maximum number of public repos (0 = unlimited)</label><br />
48 <input type="text" name="pi::max_public_repos" value="@@pi::max_public_repos@@" />
49 <br />
50 <br />
51
52 <label for="pi::max_private_repos" class="form_item_title">Maximum number of private repos (0 = unlimited)</label><br />
53 <input type="text" name="pi::max_private_repos" value="@@pi::max_private_repos@@" />
54 <br />
55 <br />
12 <p>
13 <label for="position">Position in the list</label><br />
14 <input type="text" name="pi::position" id="position" value="@@pi::position@@" />
15 </p>
16
17 <p>
18 <label for="name">Name</label><br />
19 <input type="text" name="pi::name" id="name" value="@@pi::name@@" />
20 </p>
21
22 <p>
23 <label for="description">Description</label><br />
24 <textarea name="pi::description" id="description" rows="4" cols="50">@@pi::description@@</textarea>
25 </p>
26
27 <p>
28 <label for="disk_mb">Maximum disk space (MiB, 0 = unlimited)</label><br />
29 <input type="text" name="pi::disk_mb" id="disk_mb" value="@@pi::disk_mb@@" />
30 </p>
31
32 <p>
33 <label for="users">Maximum number of co-workers (0 = unlimited)</label><br />
34 <input type="text" name="pi::users" id="users" value="@@pi::users@@" />
35 </p>
36
37 <p>
38 <label for="speed">Maximum speed (kbit/s, 0 = unlimited)</label><br />
39 <input type="text" name="pi::speed" id="speed" value="@@pi::speed@@" />
40 </p>
41
42 <p>
43 <label for="bw">Maximum bandwidth (MiB/month, 0 = unlimited)</label><br />
44 <input type="text" name="pi::bw" id="bw" value="@@pi::bw@@" />
45 </p>
46
47 <p>
48 <label for="max_public_repos">Maximum number of public repos (0 = unlimited)</label><br />
49 <input type="text" name="pi::max_public_repos" id="max_public_repos" value="@@pi::max_public_repos@@" />
50 </p>
51
52 <p>
53 <label for="max_private_repos">Maximum number of private repos (0 = unlimited)</label><br />
54 <input type="text" name="pi::max_private_repos" id="max_private_repos" value="@@pi::max_private_repos@@" />
55 </p>
56 56
57 57 <input type="submit" name="button" value="@@if(@@pi::id@@ == 0){{Add}}{{Edit}}" /> <input type="submit" name="button" value="@@if(@@pi::id@@ == 0){{Add}}{{Edit}}" />
58 58
File root/themes/default/download-vm.html changed (mode: 100644) (index 63bb4c5..c010e6f)
172 172 Steps to follow:<br /> Steps to follow:<br />
173 173
174 174 - if you do not have a VMware virtualization solution, go to - if you do not have a VMware virtualization solution, go to
175 <a href="http://www.vmware.com/player" target="_new">VMware site</a>
175 <a href="http://www.vmware.com/player" target="_blank">VMware site</a>
176 176 and download VMware Player. Choose try for free. It is around 75 MiB. and download VMware Player. Choose try for free. It is around 75 MiB.
177 177 And then, install it<br /> And then, install it<br />
178 178 <br /> <br />
 
226 226 Steps to follow:<br /> Steps to follow:<br />
227 227
228 228 - if you do not have VirtualBox installed, go to - if you do not have VirtualBox installed, go to
229 <a href="https://www.virtualbox.org/wiki/Downloads" target="_new">VirtualBox site</a>,
229 <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank">VirtualBox site</a>,
230 230 download a proper executable (around 106 MiB) and install it<br /> download a proper executable (around 106 MiB) and install it<br />
231 231 <br /> <br />
232 232
File root/themes/default/errmsg/footer.html changed (mode: 100644) (index 8902b2e..04f5b84)
1 </ul>
2 1 </div> </div>
3 <br />
File root/themes/default/errmsg/header.html changed (mode: 100644) (index 34b4d49..6a842a1)
1 <div class="error">
1 <div class="form_error">
2 2 <b>Errors:</b><br /> <b>Errors:</b><br />
3 <ul>
File root/themes/default/errmsg/line.html changed (mode: 100644) (index 52e526a..529c5f9)
1 <li>@@error@@</li>
1 <p>@@error@@</p>
File root/themes/default/features.html changed (mode: 100644) (index d6dc40f..90d18fc)
12 12 version. version.
13 13 No vendor lock-in. No vendor lock-in.
14 14 See <a href="http://www.gnu.org/philosophy/free-sw.html">What is free software</a> See <a href="http://www.gnu.org/philosophy/free-sw.html">What is free software</a>
15 for ore information.
15 for more information.
16 16 </div> </div>
17 17 </div> </div>
18 18
 
125 125 <div class="island_title">The features that you need are not here?</div> <div class="island_title">The features that you need are not here?</div>
126 126 Do not worry! Let us know by leaving a Do not worry! Let us know by leaving a
127 127 <a href="/op/suggestion">suggestion</a> (you must be logged in) <a href="/op/suggestion">suggestion</a> (you must be logged in)
128 or by writing an e-mail at in@rocketgit.com.
128 or by writing an e-mail at
129 <a href="mailto:in@rocketgit.com">in@rocketgit.com</a>.
129 130 </div> </div>
130 131 </div> </div>
131 132 </div> </div>
File root/themes/default/index.html changed (mode: 100644) (index aa697c3..350bf75)
11 11 <div id="container"> <div id="container">
12 12
13 13 <div id="header"> <div id="header">
14 <div class="logo">
15 <a href="/">RocketGit</a>
16 </div>
14 <div id="header_fake_table">
15 <div class="logo">
16 <a href="/">RocketGit</a>
17 </div>
17 18
18 <div class="user">
19 <a href="/op/features">Features</a>
20 <a href="/op/discover">Discover</a>
21 <a href="/op/download">Download</a>
22 <a href="/op/pricing">Pricing</a>
23 <a href="/op/tos">ToS</a>
24 <a href="/op/donate">Donate</a>
25 @@if(@@login_ui::uid@@ != 0){{
26 <a href="/op/suggestion">Suggestion</a>
27 <a href="/op/repo">My repositories</a>
28 <a href="/op/settings">Settings</a>
29 @@if(@@login_ui::is_admin@@ == 1){{<a href="/op/admin">Admin</a>}}
30 <a href="/op/logout?token=@@logout_token@@">Logout</a>
31 }}{{
32 <a href="/op/login">Sign in</a>
33 }}
19 <div class="main_menu">
20 <a href="/op/features">Features</a>
21 <a href="/op/discover">Discover</a>
22 <a href="/op/download">Download</a>
23 <a href="/op/pricing">Pricing</a>
24 <a href="/op/tos">ToS</a>
25 <a href="/op/donate">Donate</a>
26 @@if(@@login_ui::uid@@ != 0){{
27 <a href="/op/suggestion">Suggestion</a>
28 <a href="/op/repo">My repositories</a>
29 <a href="/op/settings">Settings</a>
30 @@if(@@login_ui::is_admin@@ == 1){{<a href="/op/admin">Admin</a>}}
31 <a href="/op/logout?token=@@logout_token@@">Logout</a>
32 }}{{
33 <a href="/op/login">Sign in</a>
34 <a href="/op/create_account">Create account</a>
35 }}
36 </div>
34 37 </div> </div>
35 38 </div> <!-- header --> </div> <!-- header -->
36 39
37 40 <div id="main_container"> <div id="main_container">
38 <div class="menus">
39 @@submenu1@@
40 @@submenu2@@
41 </div>
41 <div id="main_fake_table">
42 <div class="menus">
43 @@submenu1@@
44 @@submenu2@@
45 </div>
42 46
43 <div id="main">
44 @@rg_body@@
45 </div> <!-- main -->
47 <div id="main">
48 @@rg_body@@
49 </div>
50 </div>
46 51 </div> <!-- main_container --> </div> <!-- main_container -->
47 52
48 53 <div id="footer"> <div id="footer">
49 <div id="footer_logo">
50 <img src="@@IMG:logo/rg6.png@@" alt="RocketGit logo" />
51 <br />
52 <div class="logo">
53 <a href="/">RocketGit</a>
54 <div id="footer_fake_table">
55 <div id="footer_logo">
56 <img src="@@IMG:logo/rg6.png@@" alt="RocketGit logo" />
54 57 <br /> <br />
55 Rocket your launch!
58 <div class="logo">
59 <a href="/">RocketGit</a>
60 <br />
61 Rocket your launch!
62 </div>
56 63 </div> </div>
57 <br />
58 </div>
59 64
60 <div id="footer_info">
61 For any information, please contact us at in@rocketgit.com.<br />
62 Copyright: <a href="http://kernel.embedromix.ro/">Catalin(ux) M. BOIE</a><br />
63 Version: @@rg_version@@<br />
64 Running since: @@first_install_text@@<br />
65 <i>Git was created by Linus Torvalds.</i><br />
66 rocketgit.com site is operated by Embedromix SRL, RO13505234, J08/979/2000, Brasov, Romania.
65 <div id="footer_info">
66 For any information, please contact us at
67 <a href="mailto:in@rocketgit.com">in@rocketgit.com</a>.<br />
68 Copyright: <a href="http://kernel.embedromix.ro/">Catalin(ux) M. BOIE</a><br />
69 Software version: @@rg_version@@<br />
70 Running since: @@first_install_text@@<br />
71 <i>Git was created by Linus Torvalds.</i><br />
72 rocketgit.com site is operated by Embedromix SRL,<br />
73 RO13505234, J08/979/2000, Brasov, Romania.
74 </div>
67 75 </div> </div>
68 76 </div> <!-- footer --> </div> <!-- footer -->
69 77
File root/themes/default/main.css changed (mode: 100644) (index d2729dd..94dce67)
... ... th, td {
32 32 word-wrap: break-word; word-wrap: break-word;
33 33 } }
34 34
35 a {
36 text-decoration: none;
37 }
38
35 39 .xcode { .xcode {
36 40 margin-left: 5px; margin-left: 5px;
37 41 border-left: 1px solid #000; border-left: 1px solid #000;
 
... ... th, td {
39 43 padding-left: 5px; padding-left: 5px;
40 44 } }
41 45
42 form input[type="text"], form input[type="password"], form textarea, form select, form checkbox {
46 form { margin-top: 5pt }
47 form p { margin-top: 5pt }
48 form input[type="text"], form input[type="password"],
49 form input[type="radio"], form input[type="checkbox"],
50 form textarea, form select {
43 51 border: 1px solid #999998; border: 1px solid #999998;
44 52 font-size: 11pt; font-size: 11pt;
45 53 padding: 2px; padding: 2px;
46 54 margin: 2px 0px; margin: 2px 0px;
47 55 } }
56 form input[type="checkbox"] {
57 margin-right: 4pt;
58 }
59 form input[type="radio"] {
60 margin-right: 4pt;
61 }
48 62 form select option { padding: 1px 4px 1px 4px; } form select option { padding: 1px 4px 1px 4px; }
49 63 form input[type="submit"] { form input[type="submit"] {
50 64 color: red; color: red;
 
... ... form input[type="submit"] {
55 69 cursor: pointer; cursor: pointer;
56 70 border: 1px solid #999998; border: 1px solid #999998;
57 71 background-image: -moz-linear-gradient(top, #EEEEEE, #DDDDDD); background-image: -moz-linear-gradient(top, #EEEEEE, #DDDDDD);
58 margin-top: 2px;
59 margin-bottom: 2px;
72 margin-top: 5pt;
60 73 } }
61 74
75 form fieldset { margin-top: 5pt; padding: 3pt; }
76
77 legend { padding: 0px 2pt; }
78
62 79 #container { #container {
63 80 width: 100%; width: 100%;
64 81 height: 100%; height: 100%;
 
... ... form input[type="submit"] {
66 83 } }
67 84
68 85 .logo { .logo {
69 float: left;
70 86 font-size: 16pt; font-size: 16pt;
71 87 font-weight: bold; font-weight: bold;
72 88 padding: 5px 15px; padding: 5px 15px;
73 xxx-vertical-align: bottom;
74 89 color: yellow; color: yellow;
75 90 font-style: italic; font-style: italic;
76 91 line-height: 120%; line-height: 120%;
92 display: table-cell;
93 vertical-align: middle;
77 94 } }
78 95 .logo a { .logo a {
79 96 text-shadow: 0 0 2px yellow; text-shadow: 0 0 2px yellow;
80 97 color: red; color: red;
81 text-decoration: none;
82 98 font-size: 20pt; font-size: 20pt;
83 99 font-style: normal; font-style: normal;
84 100 } }
85 101
86 .slogan {
87 font-size: 16pt;
88 font-weight: bold;
89 font-style: italic;
90 line-height: 120%;
91 color: yellow;
92 padding: 5px 15px;
93 }
94
95 .user {
96 padding: 10px 15px;
97 float: right;
102 .main_menu {
103 padding: 6pt;
104 vertical-align: middle;
105 text-align: right;
98 106 } }
99 .user a {
107 .main_menu a {
100 108 font-size: 11pt; font-size: 11pt;
101 109 font-weight: bold; font-weight: bold;
102 text-decoration: none;
103 110 color: #fff; color: #fff;
104 111 text-shadow: 0 0 2px #000; text-shadow: 0 0 2px #000;
105 112 padding: 6px; padding: 6px;
106 113 } }
107 .user a:hover { color: #f00; }
114 .main_menu a:hover { color: #f00; }
108 115
109 116 .menus { .menus {
110 117 } }
 
... ... form input[type="submit"] {
119 126 padding: 2px 0px; padding: 2px 0px;
120 127 } }
121 128 .menu ul li a { .menu ul li a {
122 text-decoration: none;
123 129 color: #FFF; color: #FFF;
124 130 font-size: 13pt; font-size: 13pt;
125 131 font-weight: bold; font-weight: bold;
 
... ... form input[type="submit"] {
151 157 .branches_and_tags { padding: 3px 0px; margin: 3px 0px; } .branches_and_tags { padding: 3px 0px; margin: 3px 0px; }
152 158 .branches_and_tags a { .branches_and_tags a {
153 159 padding: 3px 3px; padding: 3px 3px;
154 text-decoration: none;
155 160 color: black; color: black;
156 161 border: 1px solid #cccccc; border: 1px solid #cccccc;
157 162 border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
 
... ... form input[type="submit"] {
160 165 .branch a { background-color: #a0ffa0; } .branch a { background-color: #a0ffa0; }
161 166 .tag a { background-color: #ffffa0; } .tag a { background-color: #ffffa0; }
162 167
163 #header {
164 overflow: hidden;
165 background-color: #aaa;
166 box-shadow: 0px 4px 6px #666;
167 width: 100%;
168 margin-bottom: 6px;
169 line-height: 120%;
170 }
171 #header table {
172 border-collapse: collapse;
173 border: 0;
174 border-spacing: 0;
175 background-color: #888888;
176 margin: 3px 0 3px 0;
177 }
178 #header table td {
179 padding: 0 10px 0 0;
180 border: 0;
181 }
182
183 168
184 169 #main_container { #main_container {
185 170 width: 100%; width: 100%;
171 display: table-row;
186 172 } }
187 173
188 174 #main { #main {
189 175 padding: 10px 15px; padding: 10px 15px;
190 176 line-height: 120%; line-height: 120%;
177 display: table-cell;
191 178 } }
192 179
193 #footer {
180 #main_fake_table {
181 display: table;
182 }
183
184 #header {
185 background-color: #aaa;
186 box-shadow: 0px 4px 6px #666;
187 margin-bottom: 6px;
188 line-height: 120%;
189 display: table-row;
194 190 width: 100%; width: 100%;
195 overflow: hidden;
196 border-top: 1px solid #CCCCCC;
191 height: 28pt;
192 }
193 #header_fake_table {
194 display: table;
195 width: 100%;
196 }
197
198 #footer {
197 199 background-color: #888888; background-color: #888888;
198 padding: 0 15px;
199 200 display: table-row; display: table-row;
200 201 vertical-align: bottom; vertical-align: bottom;
201 height: 100px;
202 width: 100%;
203 height: 120pt;
202 204 box-shadow: 0px -4px 6px #666666; box-shadow: 0px -4px 6px #666666;
203 205 } }
206 #footer_fake_table {
207 display: table;
208 width: 100%;
209 }
204 210 #footer_logo { #footer_logo {
205 211 padding: 10px 0; padding: 10px 0;
206 float: left;
207 212 text-align: center; text-align: center;
213 display: table-cell;
214 width: 190pt;
208 215 } }
209 #footer_logo img { margin-left: auto; margin-right: auto; display: block; }
216 #footer_logo img { margin-left: auto; margin-right: auto; display: table-cell; }
210 217 #footer_info { #footer_info {
211 218 color: #ffffff; color: #ffffff;
212 219 padding: 5px; padding: 5px;
220 padding-left: 20px;
213 221 font-size: 11pt; font-size: 11pt;
214 222 line-height: 115%; line-height: 115%;
215 margin-left: 20px;
216 float: left;
223 display: table-cell;
224 vertical-align: top;
217 225 } }
218 226
219 227 .horizontal_buttons { .horizontal_buttons {
 
... ... form input[type="submit"] {
235 243 } }
236 244
237 245 .formarea { .formarea {
238 margin-top: 5px;
246 margin-top: 5pt;
239 247 border: 1px solid #999998; border: 1px solid #999998;
240 padding: 5px;
248 padding: 5pt;
241 249 border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
242 display: table;
250 display: inline-block;
243 251 } }
244 252
245 253 .formarea_title { .formarea_title {
 
... ... form input[type="submit"] {
262 270 color: red; color: red;
263 271 } }
264 272
265 .form_item_title {}
266
267 273 .rg_keys_list { .rg_keys_list {
268 274 margin-top: 20px; margin-top: 20px;
269 275 } }
 
... ... form input[type="submit"] {
333 339 color: #bbbbbb; color: #bbbbbb;
334 340 } }
335 341 .repo_title a { .repo_title a {
336 text-decoration: none;
337 342 color: #777777; color: #777777;
338 343 } }
339 344
 
... ... form input[type="submit"] {
356 361 background-color: #E5E5FF; background-color: #E5E5FF;
357 362 } }
358 363 .urls ul li a { .urls ul li a {
359 text-decoration: none;
360 364 color: #666666; color: #666666;
361 365 white-space: nowrap; white-space: nowrap;
362 366 } }
363 367
364 .error {}
365 .error b { color: red; font-weight: bold; font-size: 11pt; }
366 .error ul { padding-left: 15pt; }
367 .error ul li {}
368 .form_error { margin-top: 6pt; color: red; }
369 .form_error b { font-weight: bold; font-size: 11pt; }
370 .form_error p { padding-left: 15pt; }
368 371
369 372 .labels { padding: 3px 0px; margin: 3px 0px; } .labels { padding: 3px 0px; margin: 3px 0px; }
370 373 .labels ul { list-style-type: none; } .labels ul { list-style-type: none; }
371 374 .labels ul li { .labels ul li {
372 375 display: inline; display: inline;
373 376 padding: 3px 3px; padding: 3px 3px;
374 text-decoration: none;
375 377 color: black; color: black;
376 378 border: 1px solid #cccccc; border: 1px solid #cccccc;
377 379 border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
 
... ... form input[type="submit"] {
384 386 .searches ul li { .searches ul li {
385 387 display: inline; display: inline;
386 388 padding: 3px 3px; padding: 3px 3px;
387 text-decoration: none;
388 389 color: black; color: black;
389 390 border: 1px solid #cccccc; border: 1px solid #cccccc;
390 391 border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
391 392 font-size: 9pt; font-size: 9pt;
392 393 background-color: #a0d0ff; background-color: #a0d0ff;
393 394 } }
394 .searches ul li a {
395 text-decoration: none;
396 }
397 395
398 396 .hints { .hints {
399 margin-top: 5px;
400 xxx-background-color: #A0FFA0;
397 margin-top: 10pt;
401 398 background-color: #FFFFFF; background-color: #FFFFFF;
402 padding: 5px;
399 padding: 4pt;
403 400 border-radius: 4px 4px 4px 4px; border-radius: 4px 4px 4px 4px;
404 401 border: 1px solid #cccccc; border: 1px solid #cccccc;
405 402 line-height: 120%; line-height: 120%;
406 403 font-size: 9pt; font-size: 9pt;
407 display: table;
408 vertical-align: bottom;
409 404 box-shadow: 0px 2px 3px #666666; box-shadow: 0px 2px 3px #666666;
410 405 } }
411 406 .hints ul { list-style-type: none; } .hints ul { list-style-type: none; }
 
... ... form input[type="submit"] {
483 478 } }
484 479
485 480 .island_row { .island_row {
486 display: table;
481 display: table-row;
487 482 } }
488 483
489 484 .island_cell { .island_cell {
File root/themes/default/repo/add_edit.html changed (mode: 100644) (index 253e309..f26e973)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">@@if(@@ri::repo_id@@ == 0){{Create repository}}{{Edit repository}}</div><br />
3 <div class="formarea_title">@@if(@@ri::repo_id@@ == 0){{Create repository}}{{Edit repository}}</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
12 12
13 13 @@if("@@ri::master_name@@" != ""){{Master repo: @@ri::master_name@@<br />}} @@if("@@ri::master_name@@" != ""){{Master repo: @@ri::master_name@@<br />}}
14 14
15 <label for="name" class="form_item_title">Name</label><br />
16 <input type="text" name="name" value="@@ri::name@@" />
17 <br />
18 <br />
15 <p>
16 <label for="name">Name</label><br />
17 <input type="text" name="name" id="name" value="@@ri::name@@" />
18 </p>
19 19
20 <label for="license" class="form_item_title">License(s)</label><br />
21 <input type="text" name="license" value="@@ri::license@@" />
22 <br />
23 <br />
20 <p>
21 <label for="license">License(s)</label><br />
22 <input type="text" name="license" id="license" value="@@ri::license@@" />
23 </p>
24 24
25 <label for="description" class="form_item_title">Description</label><br />
26 <textarea name="description" rows="4" cols="30">@@ri::description@@</textarea>
27 <br />
28 <br />
25 <p>
26 <label for="description">Description</label><br />
27 <textarea name="description" id="description" rows="4" cols="30">@@ri::description@@</textarea>
28 </p>
29 29
30 <label for="public" class="form_item_title">Public or private</label><br />
31 <select name="public">
30 <p>
31 <label for="public">Public or private</label><br />
32 <select name="public" id="public">
32 33 <option value="0"@@if(@@ri::public@@ == 0){{ selected="selected"}}{{}}>Private</option> <option value="0"@@if(@@ri::public@@ == 0){{ selected="selected"}}{{}}>Private</option>
33 34 <option value="1"@@if(@@ri::public@@ == 1){{ selected="selected"}}{{}}>Public</option> <option value="1"@@if(@@ri::public@@ == 1){{ selected="selected"}}{{}}>Public</option>
34 35 </select> </select>
35 <br />
36 </p>
36 37
37 <label for="max_commit_size" class="form_item_title">Max commit size (bytes, 0 = unlimited)</label><br />
38 <input type="text" name="max_commit_size" value="@@ri::max_commit_size@@" />
39 <br />
40 <br />
38 <p>
39 <label for="max_commit_size">Max commit size (bytes, 0 = unlimited)</label><br />
40 <input type="text" name="max_commit_size" id="max_commit_size" value="@@ri::max_commit_size@@" />
41 </p>
41 42
42 43 <input type="submit" name="button" value="@@if(@@ri::repo_id@@ == 0){{Create}}{{Update}}" /> <input type="submit" name="button" value="@@if(@@ri::repo_id@@ == 0){{Create}}{{Update}}" />
43 44
File root/themes/default/repo/bug/bug_add_edit.html changed (mode: 100644) (index dfd3140..81771fe)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">@@if(@@bug::bug_id@@ == 0){{Add bug}}{{Edit bug}}</div><br />
3 <div class="formarea_title">@@if(@@bug::bug_id@@ == 0){{Add bug}}{{Edit bug}}</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label for="title" class="form_item_title">Title</label><br />
13 <input type="text" name="title" value="@@bug::title@@" size="80" />
14 <br />
15 <br />
12 <p>
13 <label for="title">Title</label><br />
14 <input type="text" name="title" id="title" value="@@bug::title@@" size="80" />
15 </p>
16 16
17 <label for="body" class="form_item_title">Description</label><br />
18 <textarea name="body" rows="5" cols="80">@@bug::body@@</textarea>
19 <br />
20 <br />
17 <p>
18 <label for="body">Description</label><br />
19 <textarea name="body" id="body" rows="5" cols="80">@@bug::body@@</textarea>
20 </p>
21 21
22 <label for="state" class="form_item_title">State</label><br />
22 <p>
23 <label for="state">State</label><br />
23 24 @@bug::state_select@@ @@bug::state_select@@
24 <br />
25 <br />
26
27 <label for="assigned_to" class="form_item_title">Assign to</label><br />
28 <input type="text" name="assigned_to" value="@@bug::assigned_to@@" size="80" />
29 <br />
30 <br />
31
32 <label for="labels" class="form_item_title">Labels (comma or Enter separated)</label><br />
33 <textarea name="labels" rows="3" cols="80">@@bug::labels@@</textarea>
34 <br />
35 <br />
25 </p>
26
27 <p>
28 <label for="assigned_to">Assign to</label><br />
29 <input type="text" name="assigned_to" id="assigned_to" value="@@bug::assigned_to@@" size="80" />
30 </p>
31
32 <p>
33 <label for="labels">Labels (comma or Enter separated)</label><br />
34 <textarea name="labels" id="labels" rows="3" cols="80">@@bug::labels@@</textarea>
35 </p>
36 36
37 37 <input type="submit" name="button" value="@@if(@@bug::bug_id@@ == 0){{Add bug}}{{Update}}" /> <input type="submit" name="button" value="@@if(@@bug::bug_id@@ == 0){{Add bug}}{{Update}}" />
38 38
File root/themes/default/repo/bug/note_add.html changed (mode: 100644) (index 28dbf9a..5c3ad57)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Add note</div><br />
3 <div class="formarea_title">Add note</div>
4 4
5 5 @@note_errmsg@@ @@note_errmsg@@
6 6
 
8 8 <input type="hidden" name="note_add_doit" value="1" /> <input type="hidden" name="note_add_doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="note" class="form_item_title">Note</label><br />
12 <textarea name="note" rows="4" cols="80">@@note@@</textarea>
13 <br />
14 <br />
11 <p>
12 <label for="note">Note</label><br />
13 <textarea name="note" id="note" rows="4" cols="80">@@note@@</textarea>
14 </p>
15 15
16 16 <input type="submit" name="button" value="Add note" /> <input type="submit" name="button" value="Add note" />
17 17
File root/themes/default/repo/bug/search/search.html changed (mode: 100644) (index 71942f6..ce16f90)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Search bugs</div><br />
3 <div class="formarea_title">Search bugs</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
7 7 <form method="post" action="@@url_repo@@/bug/search"> <form method="post" action="@@url_repo@@/bug/search">
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9
10 <label for="reported_by" class="form_item_title">Reported by</label><br />
11 <input type="text" name="reported_by" value="@@reported_by@@" size="30" />
12 <br />
13 <br />
10 <p>
11 <label for="reported_by">Reported by</label><br />
12 <input type="text" name="reported_by" id="reported_by" value="@@reported_by@@" size="30" />
13 </p>
14 14
15 <label for="assigned_to" class="form_item_title">Assigned to</label><br />
16 <input type="text" name="assigned_to" value="@@assigned_to@@" size="30" />
17 <br />
18 <br />
15 <p>
16 <label for="assigned_to">Assigned to</label><br />
17 <input type="text" name="assigned_to" id="assigned_to" value="@@assigned_to@@" size="30" />
18 </p>
19 19
20 <label for="state" class="form_item_title">State</label><br />
20 <p>
21 <label for="state">State</label><br />
21 22 @@state_select@@ @@state_select@@
22 <br />
23 <br />
24
25 <label for="order_by" class="form_item_title">Order by</label><br />
26 <input type="text" name="order_by" value="@@order_by@@" size="40" />
27 <br />
28 <br />
29
30 <label for="start" class="form_item_title">Start date (yyyy-mm-dd)</label><br />
31 <input type="text" name="start" value="@@start@@" size="10" />
32 <br />
33 <br />
34
35 <label for="end" class="form_item_title">End date (yyyy-mm-dd)</label><br />
36 <input type="text" name="end" value="@@end@@" size="10" />
37 <br />
38 <br />
39
40 <label for="title_string" class="form_item_title">Title contains</label><br />
41 <input type="text" name="title_string" value="@@title_string@@" size="40" />
42 <br />
43 <br />
44
45 <label for="body_string" class="form_item_title">Body contains</label><br />
46 <input type="text" name="body_string" value="@@body_string@@" size="40" />
47 <br />
48 <br />
49
50 <label for="bugs_per_page" class="form_item_title">Bugs per page</label><br />
51 <input type="text" name="bugs_per_page" value="@@bugs_per_page@@" size="10" />
52 <br />
53 <br />
23 </p>
24
25 <p>
26 <label for="order_by">Order by</label><br />
27 <input type="text" name="order_by" id="order_by" value="@@order_by@@" size="40" />
28 </p>
29
30 <p>
31 <label for="start">Start date (yyyy-mm-dd)</label><br />
32 <input type="text" name="start" id="start" value="@@start@@" size="10" />
33 </p>
34
35 <p>
36 <label for="end">End date (yyyy-mm-dd)</label><br />
37 <input type="text" name="end" id="end" value="@@end@@" size="10" />
38 </p>
39
40 <p>
41 <label for="title_string">Title contains</label><br />
42 <input type="text" name="title_string" id="title_string" value="@@title_string@@" size="40" />
43 </p>
44
45 <p>
46 <label for="body_string">Body contains</label><br />
47 <input type="text" name="body_string" id="body_string" value="@@body_string@@" size="40" />
48 </p>
49
50 <p>
51 <label for="bugs_per_page">Bugs per page</label><br />
52 <input type="text" name="bugs_per_page" id="bugs_per_page" value="@@bugs_per_page@@" size="10" />
53 </p>
54 54
55 55 @@if(@@can_save@@ == 1){{ @@if(@@can_save@@ == 1){{
56 <label for="for_all_users" class="form_item_title">Make this search public (available for other users)?</label><br />
57 <input type="checkbox" name="for_all_users"@@if(@@for_all_users@@ == on){{ checked="checked"}}{{}} />
58 <br />
59 <br />
60
61 <label for="global" class="form_item_title">Make this search available also for other repos?</label><br />
62 <input type="checkbox" name="global"@@if(@@global@@ == on){{ checked="checked"}}{{}} />
63 <br />
64 <br />
65
66 <label for="body" class="form_item_title">Save search as</label><br />
67 <input type="text" name="name" value="@@name@@" size="40" />
68 <br />
69 <br />
56 <p>
57 <input type="checkbox" name="for_all_users" id="for_all_users"@@if(@@for_all_users@@ == on){{ checked="checked"}}{{}} />
58 <label for="for_all_users">Make this search public (available for other users)?</label>
59 </p>
60
61 <p>
62 <input type="checkbox" name="global" id="global"@@if(@@global@@ == on){{ checked="checked"}}{{}} />
63 <label for="global">Make this search available also for other repos?</label>
64 </p>
65
66 <p>
67 <label for="name">Save search as</label><br />
68 <input type="text" name="name" id="name" value="@@name@@" size="40" />
69 </p>
70 70 }}{{}} }}{{}}
71 71
72 72 <input type="submit" name="button" value="Search" /> <input type="submit" name="button" value="Search" />
File root/themes/default/repo/search.html changed (mode: 100644) (index da957c3..d438a44)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Search for repositories</div><br />
3 <div class="formarea_title">Search for repositories</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
7 7 <form method="post" action="@@search_url@@/search"> <form method="post" action="@@search_url@@/search">
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9
10 <label for="q" class="form_item_title">Keyword</label><br />
11 <input type="text" name="q" value="@@q@@" />
12 <br />
13 <br />
10 <p>
11 <label for="q">Keyword</label><br />
12 <input type="text" name="q" id="q" value="@@q@@" />
13 </p>
14 14
15 15 <input type="submit" name="button" value="Search" /> <input type="submit" name="button" value="Search" />
16 16
File root/themes/default/suggestion.html changed (mode: 100644) (index 001f0c6..7bb12b8)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Send a suggestion</div><br />
3 <div class="formarea_title">Send a suggestion</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 @@if(@@login_ui::uid@@ == 0){{
12 <label for="suggestion" class="form_item_title">Suggestion</label><br />
13 <input type="text" name="email">@@email@@ />
14 <br />
15 <br />
16 }}{{
17 }}
18
19 <label for="suggestion" class="form_item_title">Suggestion</label><br />
20 <textarea name="suggestion" rows="6" cols="50">@@suggestion@@</textarea>
21 <br />
22 <br />
11 <p>
12 <label for="suggestion">Suggestion</label><br />
13 <textarea name="suggestion" id="suggestion" rows="6" cols="50">@@suggestion@@</textarea>
14 </p>
23 15
24 16 <input type="submit" name="button" value="Send" /> <input type="submit" name="button" value="Send" />
25 17
File root/themes/default/user/add_edit.html changed (mode: 100644) (index 01216f3..4334981)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">@@if(@@create_mode@@ == 1){{Create a new account}}{{Change account}}</div><br />
3 <div class="formarea_title">@@if(@@create_mode@@ == 1){{Create a new account}}{{Change account}}</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label for="username" class="form_item_title">User name (public)</label><br />
13 <input type="text" name="username" value="@@username@@" />
14 <br />
15 <br />
12 <p>
13 <label for="username">User name (public)</label><br />
14 <input type="text" name="username" id="username" value="@@username@@" />
15 </p>
16 16
17 <label for="realname" class="form_item_title">Name (not public)</label><br />
18 <input type="text" name="realname" value="@@realname@@" />
19 <br />
20 <br />
17 <p>
18 <label for="realname">Name (not public)</label><br />
19 <input type="text" name="realname" id="realname" value="@@realname@@" />
20 </p>
21 21
22 <label for="email" class="form_item_title">E-mail (not public)</label><br />
23 <input type="text" name="email" value="@@email@@" />
24 <br />
25 <br />
22 <p>
23 <label for="email">E-mail (not public)</label><br />
24 <input type="text" name="email" id="email" value="@@email@@" />
25 </p>
26 26
27 27 @@if(@@ask_for_pass@@ == 1){{ @@if(@@ask_for_pass@@ == 1){{
28 <label for="pass" class="form_item_title">Password</label><br />
29 <input type="password" name="pass" value="@@pass@@" />
30 <br />
31 <br />
28 <p>
29 <label for="pass">Password</label><br />
30 <input type="password" name="pass" id="pass" value="@@pass@@" />
31 </p>
32 32
33 <label for="pass2" class="form_item_title">Password (confirmation)</label><br />
34 <input type="password" name="pass2" value="@@pass2@@" />
35 <br />
36 <br />
33 <p>
34 <label for="pass2">Password (confirmation)</label><br />
35 <input type="password" name="pass2" id="pass2" value="@@pass2@@" />
36 </p>
37 37 }}{{ }}{{
38 38 }} }}
39 39
40 40 @@if(@@login_ui::is_admin@@ == 1){{ @@if(@@login_ui::is_admin@@ == 1){{
41 <label for="is_admin" class="form_item_title">Admin?</label><br />
42 <select name="is_admin">
41 <p>
42 <label for="is_admin">Admin?</label><br />
43 <select name="is_admin" id="is_admin">
43 44 <option value="0"@@if(@@is_admin@@ == 0){{ selected="selected"}}{{}}>No, I will give rights later</option> <option value="0"@@if(@@is_admin@@ == 0){{ selected="selected"}}{{}}>No, I will give rights later</option>
44 45 <option value="1"@@if(@@is_admin@@ == 1){{ selected="selected"}}{{}}>Yes, will have full access</option> <option value="1"@@if(@@is_admin@@ == 1){{ selected="selected"}}{{}}>Yes, will have full access</option>
45 46 </select> </select>
46 <br />
47 <br />
47 </p>
48 48 }}{{ }}{{
49 49 }} }}
50 50
51 <label for="plan_id" class="form_item_title">Plan</label><br />
51 <p>
52 <label for="plan_id">Plan</label><br />
52 53 @@select_plan@@ @@select_plan@@
53 <br />
54 <br />
54 </p>
55 55
56 <label for="session_time" class="form_item_title">Preferred session time (in seconds)</label><br />
57 <input type="text" name="session_time" value="@@session_time@@" />
58 <br />
59 <br />
56 <p>
57 <label for="session_time">Preferred session time (in seconds)</label><br />
58 <input type="text" name="session_time" id="session_time" value="@@session_time@@" />
59 </p>
60
61 <fieldset>
62 <legend>Do you agree with our <a href="/op/tos" target="_blank">Terms of service</a>?</legend>
63 <input type="radio" name="tos" id="tos_yes" value="1"@@if(@@tos@@ == 1){{checked="checked"}}{{}} />
64 <label for="tos_yes">I agree</label>
65 <br />
66 <input type="radio" name="tos" id="tos_no" value="0" @@if(@@tos@@ == 0){{checked="checked"}}{{}}/>
67 <label for="tos_no">I do NOT agree</label>
68 </fieldset>
60 69
61 70 <input type="submit" value="@@if(@@create_mode@@ == 1){{Create}}{{Edit}}" /> <input type="submit" value="@@if(@@create_mode@@ == 1){{Create}}{{Edit}}" />
62 71 </form> </form>
63 72
64 By creating/editing an account on this server,<br />
65 you accept our <a href="/op/tos">Terms of service</a>.<br />
66
67 73 </div> </div>
File root/themes/default/user/forgot.html changed (mode: 100644) (index 7047ceb..666bdcc)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Change password</div><br />
3 <div class="formarea_title">Change password</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="forgot_token" value="@@forgot_token@@" /> <input type="hidden" name="forgot_token" value="@@forgot_token@@" />
9 9 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
10 10
11 <label for="pass1" class="form_item_title">New password</label><br />
12 <input type="password" name="pass1" value="@@pass1@@" />
13 <br />
14 <br />
11 <p>
12 <label for="pass1">New password</label><br />
13 <input type="password" name="pass1" id="pass1" value="@@pass1@@" />
14 </p>
15 15
16 <label for="pass2" class="form_item_title">New password (re-type)</label><br />
17 <input type="password" name="pass2" value="@@pass2@@" />
18 <br />
19 <br />
16 <p>
17 <label for="pass2">New password (re-type)</label><br />
18 <input type="password" name="pass2" id="pass2" value="@@pass2@@" />
19 </p>
20 20
21 <label for="lock_ip" class="form_item_title">Lock login from current IP</label><br />
22 <input type="radio" name="lock_ip" value="1" checked="checked"/> Yes (more secure)<br />
23 <input type="radio" name="lock_ip" value="0" /> No (works everywhere)<br />
21 <fieldset>
22 <legend>Lock login from current IP</legend>
23 <input type="radio" name="lock_ip" id="lock_ip_yes" value="1" checked="checked" />
24 <label for="lock_ip_yes">Yes (more secure)</label>
24 25 <br /> <br />
26 <input type="radio" name="lock_ip" id="lock_ip_no" value="0" />
27 <label for="lock_ip_no">No (works everywhere)</label>
28 </fieldset>
25 29
26 30 <input type="submit" name="button" value="Change password" /> <input type="submit" name="button" value="Change password" />
27 31
File root/themes/default/user/forgot_send.html changed (mode: 100644) (index 364e4c3..66cd0e6)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Forgot password</div><br />
3 <div class="formarea_title">Forgot password</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
7 7 <form method="post" action="/op/forgot_send"> <form method="post" action="/op/forgot_send">
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9
10 <label for="email" class="form_item_title">E-mail</label><br />
11 <input type="text" name="email" value="@@email@@" />
12 <br />
13 <br />
10 <p>
11 <label for="email">E-mail</label><br />
12 <input type="text" name="email" id="email" value="@@email@@" />
13 </p>
14 14
15 15 <input type="submit" name="button" value="Recover password" /> <input type="submit" name="button" value="Recover password" />
16 16
File root/themes/default/user/keys/add.html changed (mode: 100644) (index f51c1be..21a2d1d)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Add a new ssh key</div><br />
3 <div class="formarea_title">Add a new ssh key</div>
4 4
5 5 @@add_errmsg@@ @@add_errmsg@@
6 6
 
8 8 <input type="hidden" name="add" value="1" /> <input type="hidden" name="add" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="key" class="form_item_title">Key string (starts with ssh-...)</label><br />
12 <textarea name="key" rows="6" cols="80">@@key@@</textarea>
13 <br />
14 <br />
11 <p>
12 <label for="key">Key string (starts with ssh-...)</label><br />
13 <textarea name="key" id="key" rows="6" cols="80">@@key@@</textarea>
14 </p>
15 15
16 16 <input type="submit" name="button" value="Add" /> <input type="submit" name="button" value="Add" />
17 17
File root/themes/default/user/login.html changed (mode: 100644) (index 9dad729..f265cf1)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Login</div><br />
3 <div class="formarea_title">Login</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="username" class="form_item_title">Username</label><br />
12 <input type="text" name="user" value="@@user@@" /><br />
13 <br />
11 <p>
12 <label for="user">Username</label><br />
13 <input type="text" name="user" id="user" value="@@user@@" />
14 </p>
14 15
15 <label for="password" class="form_item_title">Password</label><br />
16 <input type="password" name="pass" value="@@pass@@" /><br />
17 <br />
16 <p>
17 <label for="password">Password</label><br />
18 <input type="password" name="pass" id="password" value="@@pass@@" />
19 </p>
18 20
19 <label for="lock_ip" class="form_item_title">Lock login from current IP</label><br />
20 <input type="radio" name="lock_ip" value="1" checked="checked"/> Yes (more secure)<br />
21 <input type="radio" name="lock_ip" value="0" /> No (works everywhere)<br />
21 <fieldset>
22 <legend>Lock login from current IP</legend>
23 <input type="radio" name="lock_ip" id="lock_ip_yes" value="1" checked="checked" />
24 <label for="lock_ip_yes">Yes (more secure)</label>
22 25 <br /> <br />
26 <input type="radio" name="lock_ip" id="lock_ip_no" value="0" />
27 <label for="lock_ip_no">No (works everywhere)</label>
28 </fieldset>
23 29
24 30 <input type="submit" name="button" value="Login" /> <input type="submit" name="button" value="Login" />
25 31 </form> </form>
File root/themes/default/user/pass.html changed (mode: 100644) (index 1480306..4d73117)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Change password</div><br />
3 <div class="formarea_title">Change password</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
8 8 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
9 9 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
10 10
11 <label for="old_pass" class="form_item_title">Old password</label><br />
12 <input type="password" name="old_pass" value="@@old_pass@@" />
13 <br />
14 <br />
11 <p>
12 <label for="old_pass">Old password</label><br />
13 <input type="password" name="old_pass" id="old_pass" value="@@old_pass@@" />
14 </p>
15 15
16 <label for="pass1" class="form_item_title">New password</label><br />
17 <input type="password" name="pass1" value="@@pass1@@" />
18 <br />
19 <br />
16 <p>
17 <label for="pass1">New password</label><br />
18 <input type="password" name="pass1" id="pass1" value="@@pass1@@" />
19 </p>
20 20
21 <label for="pass2" class="form_item_title">New password (re-type)</label><br />
22 <input type="password" name="pass2" value="@@pass2@@" />
23 <br />
24 <br />
21 <p>
22 <label for="pass2">New password (re-type)</label><br />
23 <input type="password" name="pass2" id="pass2" value="@@pass2@@" />
24 </p>
25 25
26 26 <input type="submit" name="button" value="Change password" /> <input type="submit" name="button" value="Change password" />
27 27
File root/themes/default/user/repo/delete/sure.html changed (mode: 100644) (index 354309c..3cb4923)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Delete repository</div><br />
3 <div class="formarea_title">Delete repository</div>
4 4
5 5 <form method="post" action="@@url_repo@@/admin/delete"> <form method="post" action="@@url_repo@@/admin/delete">
6 6 <input type="hidden" name="doit" value="1" /> <input type="hidden" name="doit" value="1" />
7 7 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
8 8
9 <label class="form_item_title" for="are_you_sure">Are you sure?</label><br />
10 <select name="are_you_sure">
9 <p>
10 <label for="are_you_sure">Are you sure?</label><br />
11 <select name="are_you_sure" id="are_you_sure">
11 12 <option value="0">No</option> <option value="0">No</option>
12 13 <option value="1">Yes</option> <option value="1">Yes</option>
13 14 </select> </select>
14 <br />
15 <br />
15 </p>
16 16
17 17 <input type="submit" name="button" value="Do it!" /> <input type="submit" name="button" value="Do it!" />
18 18
File root/themes/default/user/repo/rights/form_repo.html changed (mode: 100644) (index 14241a1..56a5016)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Grant repo rights</div><br />
3 <div class="formarea_title">Grant repo rights</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="grant" value="1" /> <input type="hidden" name="grant" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label class="form_item_title" for="username">User (use '*' for any user)</label><br />
13 <input type="text" name="username" value="@@username@@" />
14 <br />
15 <br />
12 <p>
13 <label for="username">User (use '*' for any user)</label><br />
14 <input type="text" name="username" id="username" value="@@username@@" />
15 </p>
16 16
17 <label class="form_item_title" for="rights">Rights</label><br />
17 <fieldset>
18 <legend>Rights</legend>
18 19 @@rights_checkboxes@@ @@rights_checkboxes@@
19 <br />
20
21 <label class="form_item_title" for="desc">Description</label><br />
22 <textarea name="description" rows="3" cols="50">@@description@@</textarea>
23 <br />
24 <br />
25
26 <label class="form_item_title" for="ip">IP addresses/prefix (comma/space separated)</label><br />
27 <textarea name="ip" rows="3" cols="50">@@ip@@</textarea>
28 <br />
29 <br />
30
31 <label class="form_item_title" for="prio">Priority (10 - 30000)</label><br />
32 <input type="text" name="prio" value="@@prio@@" />
33 <br />
34 <br />
20 </fieldset>
21
22 <p>
23 <label for="description">Description</label><br />
24 <textarea name="description" id="description" rows="3" cols="50">@@description@@</textarea>
25 </p>
26
27 <p>
28 <label for="ip">IP addresses/prefix (comma/space separated)</label><br />
29 <textarea name="ip" id="ip" rows="3" cols="50">@@ip@@</textarea>
30 </p>
31
32 <p>
33 <label for="prio">Priority (10 - 30000)</label><br />
34 <input type="text" name="prio" id="prio" value="@@prio@@" />
35 </p>
35 36
36 37 <input type="submit" name="button" value="Grant" /> <input type="submit" name="button" value="Grant" />
37 38
File root/themes/default/user/repo/rights/form_repo_path.html changed (mode: 100644) (index b21f2f9..563db66)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Grant path rights</div><br />
3 <div class="formarea_title">Grant path rights</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="grant" value="1" /> <input type="hidden" name="grant" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label class="form_item_title" for="username">User (use '*' for any user)</label><br />
13 <input type="text" name="username" value="@@username@@" />
14 <br />
15 <br />
12 <p>
13 <label for="username">User (use '*' for any user)</label><br />
14 <input type="text" name="username" id="username" value="@@username@@" />
15 </p>
16 16
17 <label class="form_item_title" for="ref">Path (regexp)</label><br />
18 <input type="text" name="misc" value="@@misc@@" />
19 <br />
20 <br />
17 <p>
18 <label for="ref">Path (regexp)</label><br />
19 <input type="text" name="misc" id="ref" value="@@misc@@" />
20 </p>
21 21
22 <label class="form_item_title" for="rights">Rights</label><br />
22 <fieldset>
23 <legend>Rights</legend>
23 24 @@rights_checkboxes@@ @@rights_checkboxes@@
24 <br />
25
26 <label class="form_item_title" for="desc">Description</label><br />
27 <textarea name="description" rows="3" cols="50">@@description@@</textarea>
28 <br />
29 <br />
30
31 <label class="form_item_title" for="ip">IP addresses/prefix (comma/space separated)</label><br />
32 <textarea name="ip" rows="3" cols="50">@@ip@@</textarea>
33 <br />
34 <br />
35
36 <label class="form_item_title" for="prio">Priority (10 - 30000)</label><br />
37 <input type="text" name="prio" value="@@prio@@" />
38 <br />
39 <br />
25 </fieldset>
26
27 <p>
28 <label for="description">Description</label><br />
29 <textarea name="description" id="description" rows="3" cols="50">@@description@@</textarea>
30 </p>
31
32 <p>
33 <label for="ip">IP addresses/prefix (comma/space separated)</label><br />
34 <textarea name="ip" id="ip" rows="3" cols="50">@@ip@@</textarea>
35 </p>
36
37 <p>
38 <label for="prio">Priority (10 - 30000)</label><br />
39 <input type="text" name="prio" id="prio" value="@@prio@@" />
40 </p>
40 41
41 42 <input type="submit" name="button" value="Grant" /> <input type="submit" name="button" value="Grant" />
42 43
File root/themes/default/user/repo/rights/form_repo_refs.html changed (mode: 100644) (index c3ebe9d..a4406e5)
1 1 <div class="formarea"> <div class="formarea">
2 2
3 <div class="formarea_title">Grant refs rights</div><br />
3 <div class="formarea_title">Grant refs rights</div>
4 4
5 5 @@errmsg@@ @@errmsg@@
6 6
 
9 9 <input type="hidden" name="grant" value="1" /> <input type="hidden" name="grant" value="1" />
10 10 <input type="hidden" name="token" value="@@rg_form_token@@" /> <input type="hidden" name="token" value="@@rg_form_token@@" />
11 11
12 <label class="form_item_title" for="username">User (use '*' for any user)</label><br />
13 <input type="text" name="username" value="@@username@@" />
14 <br />
15 <br />
12 <p>
13 <label for="username">User (use '*' for any user)</label><br />
14 <input type="text" name="username" id="username" value="@@username@@" />
15 </p>
16 16
17 <label class="form_item_title" for="ref">Reference (regexp)</label><br />
18 <input type="text" name="misc" value="@@misc@@" />
19 <br />
20 <br />
17 <p>
18 <label for="ref">Reference (regexp)</label><br />
19 <input type="text" name="misc" id="ref" value="@@misc@@" />
20 </p>
21 21
22 <label class="form_item_title" for="rights">Rights</label><br />
22 <fieldset>
23 <legend>Rights</legend>
23 24 @@rights_checkboxes@@ @@rights_checkboxes@@
24 <br />
25
26 <label class="form_item_title" for="desc">Description</label><br />
27 <textarea name="description" rows="3" cols="50">@@description@@</textarea>
28 <br />
29 <br />
30
31 <label class="form_item_title" for="ip">IP addresses/prefix (comma/space separated)</label><br />
32 <textarea name="ip" rows="3" cols="50">@@ip@@</textarea>
33 <br />
34 <br />
35
36 <label class="form_item_title" for="prio">Priority (10 - 30000)</label><br />
37 <input type="text" name="prio" value="@@prio@@" />
38 <br />
39 <br />
25 </fieldset>
26
27 <p>
28 <label for="description">Description</label><br />
29 <textarea name="description" id="description" rows="3" cols="50">@@description@@</textarea>
30 </p>
31
32 <p>
33 <label for="ip">IP addresses/prefix (comma/space separated)</label><br />
34 <textarea name="ip" id="ip" rows="3" cols="50">@@ip@@</textarea>
35 </p>
36
37 <p>
38 <label for="prio">Priority (10 - 30000)</label><br />
39 <input type="text" name="prio" id="prio" value="@@prio@@" />
40 </p>
40 41
41 42 <input type="submit" name="button" value="Grant" /> <input type="submit" name="button" value="Grant" />
42 43
File tests/http_create_account.php changed (mode: 100644) (index d08c2c4..4036138)
... ... $rg_no_db = TRUE;
15 15 require_once("common.php"); require_once("common.php");
16 16
17 17 rg_log("Test create account"); rg_log("Test create account");
18
18 19 // First we need to load the form so we can get the token // First we need to load the form so we can get the token
19 20 $r = do_req($test_url . "/op/create_account", $data, $headers); $r = do_req($test_url . "/op/create_account", $data, $headers);
20 21 if ($r === FALSE) { if ($r === FALSE) {
 
... ... $good_token = $r['tokens']['user_edit_hl'];
26 27
27 28 $uniq = time(); $uniq = time();
28 29
29 // Second, do the request
30 rg_log('Adding an account without accepting tos...');
30 31 $username = "http1-$uniq<xss>"; $username = "http1-$uniq<xss>";
31 32 $data = array( $data = array(
32 33 "uid" => 0, "uid" => 0,
 
... ... $data = array(
42 43 ); );
43 44 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
44 45 $r = do_req($test_url . "/op/create_account?t=create_account", $data, $headers); $r = do_req($test_url . "/op/create_account?t=create_account", $data, $headers);
46 if (!strstr($r['body'], "without accepting")) {
47 rg_log("Seems we could create an account without accepting ToS. Bad!");
48 exit(1);
49 }
50
51 rg_log('Adding an account accepting tos...');
52 $data['token'] = $r['tokens']['user_edit_hl'];
53 $data['tos'] = 1;
54 $headers = array("Cookie: sid=" . $good_sid);
55 $r = do_req($test_url . "/op/create_account?t=create_account", $data, $headers);
45 56 if (!strstr($r['body'], "Your account was created")) { if (!strstr($r['body'], "Your account was created")) {
46 file_put_contents("http_create_account.log", print_r($r, TRUE));
47 57 rg_log("Cannot create account"); rg_log("Cannot create account");
48 58 exit(1); exit(1);
49 59 } }
 
... ... foreach ($data as $k => $v) {
78 88 rg_log("Key $k matches."); rg_log("Key $k matches.");
79 89 } }
80 90
81 rg_log("Done!");
91 rg_log("OK!");
82 92 ?> ?>
File tests/http_settings.php changed (mode: 100644) (index 32ef9ca..931bcb2)
... ... $data = array();
50 50 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
51 51 $r = do_req($test_url . "/op/settings/change_pass?t=load_change_pass_form", $data, $headers); $r = do_req($test_url . "/op/settings/change_pass?t=load_change_pass_form", $data, $headers);
52 52 if (!strstr($r['body'], "action=\"/op/settings/change_pass\"")) { if (!strstr($r['body'], "action=\"/op/settings/change_pass\"")) {
53 rg_log_ml("Cannot load change pass form!");
53 rg_log("Cannot load change pass form!");
54 54 exit(1); exit(1);
55 55 } }
56 56 $good_token = $r['tokens']['set_pass']; $good_token = $r['tokens']['set_pass'];
 
... ... $data = array(
66 66 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
67 67 $r = do_req($test_url . "/op/settings/change_pass?t=post_change_pass_form", $data, $headers); $r = do_req($test_url . "/op/settings/change_pass?t=post_change_pass_form", $data, $headers);
68 68 if (!strstr($r['body'], "Password was updated with success")) { if (!strstr($r['body'], "Password was updated with success")) {
69 rg_log_ml("Cannot change pass!");
69 rg_log("Cannot change pass!");
70 70 exit(1); exit(1);
71 71 } }
72 72
 
... ... $data = array();
84 84 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
85 85 $r = do_req($test_url . "/op/settings/change_pass?t=load_change_pass_form", $data, $headers); $r = do_req($test_url . "/op/settings/change_pass?t=load_change_pass_form", $data, $headers);
86 86 if (!strstr($r['body'], "action=\"/op/settings/change_pass\"")) { if (!strstr($r['body'], "action=\"/op/settings/change_pass\"")) {
87 rg_log_ml("Cannot load change pass form!");
87 rg_log("Cannot load change pass form!");
88 88 exit(1); exit(1);
89 89 } }
90 90 $good_token = $r['tokens']['set_pass']; $good_token = $r['tokens']['set_pass'];
 
... ... $data = array(
98 98 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
99 99 $r = do_req($test_url . "/op/settings/change_pass?t=change_back_the_password", $data, $headers); $r = do_req($test_url . "/op/settings/change_pass?t=change_back_the_password", $data, $headers);
100 100 if ($r === FALSE) { if ($r === FALSE) {
101 rg_log_ml("Cannot change back the pass to aaaa!");
101 rg_log("Cannot change back the pass to aaaa!");
102 102 exit(1); exit(1);
103 103 } }
104 104
 
... ... $data = array();
110 110 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
111 111 $r = do_req($test_url . "/op/settings/edit_info?t=load_edit_info_form", $data, $headers); $r = do_req($test_url . "/op/settings/edit_info?t=load_edit_info_form", $data, $headers);
112 112 if ($r === FALSE) { if ($r === FALSE) {
113 rg_log_ml("Cannot load form!");
113 rg_log("Cannot load form!");
114 114 exit(1); exit(1);
115 115 } }
116 116
 
... ... $data = array(
128 128 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
129 129 $r = do_req($test_url . "/op/settings/edit_info?t=post_edit_info_form", $data, $headers); $r = do_req($test_url . "/op/settings/edit_info?t=post_edit_info_form", $data, $headers);
130 130 if (!strstr($r['body'], "Information was updated with success")) { if (!strstr($r['body'], "Information was updated with success")) {
131 rg_log_ml("Cannot change back the pass to aaaa: " . print_r($r, TRUE));
131 rg_log("Cannot change back the pass to aaaa!");
132 132 exit(1); exit(1);
133 133 } }
134 134
 
... ... if ($r === FALSE) {
161 161 exit(1); exit(1);
162 162 } }
163 163 if (empty($r['tokens']['keys'])) { if (empty($r['tokens']['keys'])) {
164 rg_log_ml("token not found! r:" . print_r($r, TRUE));
164 rg_log("token not found!");
165 165 exit(1); exit(1);
166 166 } }
167 167 rg_log("Posting keys form"); rg_log("Posting keys form");
 
... ... $data = array("add" => 1, "token" => $r['tokens']['keys'], "key" => $key . ' ' .
171 171 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
172 172 $r = do_req($test_url . "/op/settings/keys?t=post_key_form_add", $data, $headers); $r = do_req($test_url . "/op/settings/keys?t=post_key_form_add", $data, $headers);
173 173 if ($r === FALSE) { if ($r === FALSE) {
174 rg_log_ml("Cannot upload key: " . print_r($r, TRUE));
174 rg_log("Cannot upload key!");
175 175 exit(1); exit(1);
176 176 } }
177 177 // the key upload stuff will change < and > to empty. // the key upload stuff will change < and > to empty.
 
... ... if ($rows > 0)
182 182 $row = rg_sql_fetch_array($res); $row = rg_sql_fetch_array($res);
183 183 rg_sql_free_result($res); rg_sql_free_result($res);
184 184 if ($rows == 0) { if ($rows == 0) {
185 rg_log_ml("r=" . print_r($r, TRUE));
186 185 rg_log("Key was not uploaded!"); rg_log("Key was not uploaded!");
187 186 exit(1); exit(1);
188 187 } }
 
... ... $data = array();
194 193 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
195 194 $r = do_req($test_url . "/op/settings/keys?t=load_key_form_del", $data, $headers); $r = do_req($test_url . "/op/settings/keys?t=load_key_form_del", $data, $headers);
196 195 if ($r === FALSE) { if ($r === FALSE) {
197 rg_log_ml("Cannot load form: " . print_r($r, TRUE));
196 rg_log("Cannot load ssh key form!");
198 197 exit(1); exit(1);
199 198 } }
200 199 rg_log("Posting delete keys form"); rg_log("Posting delete keys form");
 
... ... $data = array("delete" => 1, "token" => $r['tokens']['keys'], "key_delete_ids[$k
202 201 $headers = array("Cookie: sid=" . $good_sid); $headers = array("Cookie: sid=" . $good_sid);
203 202 $r = do_req($test_url . "/op/settings/keys?t=post_key_form_del", $data, $headers); $r = do_req($test_url . "/op/settings/keys?t=post_key_form_del", $data, $headers);
204 203 if (!strstr($r['body'], "Selected keys were removed with success.")) { if (!strstr($r['body'], "Selected keys were removed with success.")) {
205 rg_log_ml("Cannot delete key!");
204 rg_log("Cannot delete key!");
206 205 exit(1); exit(1);
207 206 } }
208 207 $sql = "SELECT * FROM keys WHERE key_id = $key_id"; $sql = "SELECT * FROM keys WHERE key_id = $key_id";
 
... ... $res = rg_sql_query($db, $sql);
210 209 $rows = rg_sql_num_rows($res); $rows = rg_sql_num_rows($res);
211 210 rg_sql_free_result($res); rg_sql_free_result($res);
212 211 if ($rows == 1) { if ($rows == 1) {
213 rg_log_ml("key $key_id was not deleted!");
212 rg_log("key $key_id was not deleted!");
214 213 exit(1); exit(1);
215 214 } }
216 215
File tests/user.php changed (mode: 100644) (index 645d1bc..0144349)
... ... $pass = $_ui['pass'];
87 87
88 88 // edit user - empty pass // edit user - empty pass
89 89 $_u['uid'] = $uid; $_u['uid'] = $uid;
90 $_u['pass'] = "";
90 $_u['pass'] = '';
91 91 $r = rg_user_edit($db, $_u); $r = rg_user_edit($db, $_u);
92 92 if ($r === FALSE) { if ($r === FALSE) {
93 93 rg_log("Cannot edit user with empty pass (" . rg_user_error() . ")!"); rg_log("Cannot edit user with empty pass (" . rg_user_error() . ")!");
94 94 exit(1); exit(1);
95 95 } }
96 96 // the pass should not be changed here // the pass should not be changed here
97 $_ui = rg_user_info($db, $uid, "", "");
97 $_ui = rg_user_info($db, $uid, '', '');
98 98 if ($_ui['exists'] != 1) { if ($_ui['exists'] != 1) {
99 99 rg_log("Seems that user with $uid does not exists!"); rg_log("Seems that user with $uid does not exists!");
100 100 exit(1); exit(1);
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/rocketgit

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/rocketgit

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master