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 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 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/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/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/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/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/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 |
|
|