Show More
@@ -1,145 +1,146 b'' | |||||
1 | div.diffblock { |
|
1 | div.diffblock { | |
2 | overflow: auto; |
|
2 | overflow: auto; | |
3 | padding: 0px; |
|
3 | padding: 0px; | |
4 | border: 1px solid #ccc; |
|
4 | border: 1px solid #ccc; | |
5 | background: #f8f8f8; |
|
5 | background: #f8f8f8; | |
6 | font-size: 100%; |
|
6 | font-size: 100%; | |
7 | line-height: 100%; |
|
7 | line-height: 100%; | |
8 | /* new */ |
|
8 | /* new */ | |
9 | line-height: 125%; |
|
9 | line-height: 125%; | |
10 | } |
|
10 | } | |
11 |
|
11 | |||
12 | div.diffblock.margined{ |
|
12 | div.diffblock.margined{ | |
13 | margin: 0px 20px 0px 20px; |
|
13 | margin: 0px 20px 0px 20px; | |
14 | } |
|
14 | } | |
15 |
|
15 | |||
16 | div.diffblock .code-header{ |
|
16 | div.diffblock .code-header{ | |
17 | border-bottom: 1px solid #CCCCCC; |
|
17 | border-bottom: 1px solid #CCCCCC; | |
18 | background: #EEEEEE; |
|
18 | background: #EEEEEE; | |
19 | padding:10px 0 10px 0; |
|
19 | padding:10px 0 10px 0; | |
20 | } |
|
20 | } | |
21 | div.diffblock .code-header div{ |
|
21 | div.diffblock .code-header div{ | |
22 | margin-left:25px; |
|
22 | margin-left:25px; | |
23 | font-weight: bold; |
|
23 | font-weight: bold; | |
24 | } |
|
24 | } | |
25 | div.diffblock .code-body{ |
|
25 | div.diffblock .code-body{ | |
26 | background: #FFFFFF; |
|
26 | background: #FFFFFF; | |
27 | } |
|
27 | } | |
28 | div.diffblock pre.raw{ |
|
28 | div.diffblock pre.raw{ | |
29 | background: #FFFFFF; |
|
29 | background: #FFFFFF; | |
30 | color:#000000; |
|
30 | color:#000000; | |
31 | } |
|
31 | } | |
32 |
|
32 | |||
33 | table.code-difftable{ |
|
33 | table.code-difftable{ | |
34 | border-collapse: collapse; |
|
34 | border-collapse: collapse; | |
35 | width: 99%; |
|
35 | width: 99%; | |
36 | } |
|
36 | } | |
37 |
|
37 | |||
38 | table.code-difftable td { |
|
38 | table.code-difftable td { | |
39 | padding: 0 !important; |
|
39 | padding: 0 !important; | |
40 | background: none !important; |
|
40 | background: none !important; | |
41 | border:0 !important; |
|
41 | border:0 !important; | |
42 | } |
|
42 | } | |
43 |
|
43 | |||
44 |
|
44 | |||
45 | .code-difftable .context{ |
|
45 | .code-difftable .context{ | |
46 | background:none repeat scroll 0 0 #DDE7EF; |
|
46 | background:none repeat scroll 0 0 #DDE7EF; | |
47 | } |
|
47 | } | |
48 | .code-difftable .add{ |
|
48 | .code-difftable .add{ | |
49 | background:none repeat scroll 0 0 #DDFFDD; |
|
49 | background:none repeat scroll 0 0 #DDFFDD; | |
50 | } |
|
50 | } | |
51 | .code-difftable .add ins{ |
|
51 | .code-difftable .add ins{ | |
52 | background:none repeat scroll 0 0 #AAFFAA; |
|
52 | background:none repeat scroll 0 0 #AAFFAA; | |
53 | text-decoration:none; |
|
53 | text-decoration:none; | |
54 | } |
|
54 | } | |
55 |
|
55 | |||
56 | .code-difftable .del{ |
|
56 | .code-difftable .del{ | |
57 | background:none repeat scroll 0 0 #FFDDDD; |
|
57 | background:none repeat scroll 0 0 #FFDDDD; | |
58 | } |
|
58 | } | |
59 | .code-difftable .del del{ |
|
59 | .code-difftable .del del{ | |
60 | background:none repeat scroll 0 0 #FFAAAA; |
|
60 | background:none repeat scroll 0 0 #FFAAAA; | |
61 | text-decoration:none; |
|
61 | text-decoration:none; | |
62 | } |
|
62 | } | |
63 |
|
63 | |||
64 | .code-difftable .lineno{ |
|
64 | .code-difftable .lineno{ | |
65 | background:none repeat scroll 0 0 #EEEEEE !important; |
|
65 | background:none repeat scroll 0 0 #EEEEEE !important; | |
66 | padding-left:2px; |
|
66 | padding-left:2px; | |
67 | padding-right:2px; |
|
67 | padding-right:2px; | |
68 | text-align:right; |
|
68 | text-align:right; | |
69 | width:30px; |
|
69 | width:30px; | |
70 | -moz-user-select:none; |
|
70 | -moz-user-select:none; | |
71 | -webkit-user-select: none; |
|
71 | -webkit-user-select: none; | |
72 | } |
|
72 | } | |
73 | .code-difftable .lineno-inline{ |
|
73 | .code-difftable .lineno-inline{ | |
74 | background:none repeat scroll 0 0 #FFF !important; |
|
74 | background:none repeat scroll 0 0 #FFF !important; | |
75 | padding-left:2px; |
|
75 | padding-left:2px; | |
76 | padding-right:2px; |
|
76 | padding-right:2px; | |
77 | text-align:right; |
|
77 | text-align:right; | |
78 | width:30px; |
|
78 | width:30px; | |
79 | -moz-user-select:none; |
|
79 | -moz-user-select:none; | |
80 | -webkit-user-select: none; |
|
80 | -webkit-user-select: none; | |
81 | } |
|
81 | } | |
82 | .code-difftable .new { |
|
82 | .code-difftable .new { | |
83 | border-right: 1px solid #CCC !important; |
|
83 | border-right: 1px solid #CCC !important; | |
84 | } |
|
84 | } | |
85 | .code-difftable .old { |
|
85 | .code-difftable .old { | |
86 | border-right: 1px solid #CCC !important; |
|
86 | border-right: 1px solid #CCC !important; | |
87 | } |
|
87 | } | |
88 |
|
88 | |||
89 | .code-difftable .lineno-inline.new-inline{ |
|
89 | .code-difftable .lineno-inline.new-inline{ | |
90 |
|
90 | |||
91 | } |
|
91 | } | |
92 | .code-difftable .lineno-inline.old-inline{ |
|
92 | .code-difftable .lineno-inline.old-inline{ | |
93 | border-right: 1px solid #CCC !important; |
|
93 | border-right: 1px solid #CCC !important; | |
94 | } |
|
94 | } | |
95 |
|
95 | |||
96 | .code-difftable .lineno pre{ |
|
96 | .code-difftable .lineno pre{ | |
97 | color:#747474 !important; |
|
97 | color:#747474 !important; | |
98 | font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important; |
|
98 | font:11px "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace !important; | |
99 | letter-spacing:-1px; |
|
99 | letter-spacing:-1px; | |
100 | text-align:right; |
|
100 | text-align:right; | |
101 | width:20px; |
|
101 | width:20px; | |
102 | } |
|
102 | } | |
103 | .code-difftable .lineno a{ |
|
103 | .code-difftable .lineno a{ | |
104 | font-weight: 700; |
|
104 | font-weight: 700; | |
105 | cursor: pointer; |
|
105 | cursor: pointer; | |
106 | } |
|
106 | } | |
107 | .code-difftable .code td{ |
|
107 | .code-difftable .code td{ | |
108 | margin:0; |
|
108 | margin:0; | |
109 | padding: 0; |
|
109 | padding: 0; | |
110 | } |
|
110 | } | |
111 | .code-difftable .code pre{ |
|
111 | .code-difftable .code pre{ | |
112 | margin:0; |
|
112 | margin:0; | |
113 | padding:0; |
|
113 | padding:0; | |
114 | } |
|
114 | } | |
115 |
|
115 | |||
116 | .code { |
|
116 | .code { | |
117 | display: block; |
|
117 | display: block; | |
118 | width: 100%; |
|
118 | width: 100%; | |
119 | } |
|
119 | } | |
120 | .code-diff { |
|
120 | .code-diff { | |
121 | padding: 0px; |
|
121 | padding: 0px; | |
122 | margin-top: 5px; |
|
122 | margin-top: 5px; | |
123 | margin-bottom: 5px; |
|
123 | margin-bottom: 5px; | |
124 | border-left: 2px solid #ccc; |
|
124 | border-left: 2px solid #ccc; | |
125 | } |
|
125 | } | |
126 | .code-diff pre, .line pre { |
|
126 | .code-diff pre, .line pre { | |
127 | padding: 3px; |
|
127 | padding: 3px; | |
128 | margin: 0; |
|
128 | margin: 0; | |
129 | } |
|
129 | } | |
130 | .lineno a { |
|
130 | .lineno a { | |
131 | text-decoration: none; |
|
131 | text-decoration: none; | |
132 | } |
|
132 | } | |
133 |
|
133 | |||
134 | .line{ |
|
134 | .line{ | |
135 | padding:0; |
|
135 | padding:0; | |
136 | margin:0; |
|
136 | margin:0; | |
137 | } |
|
137 | } | |
138 | .line:hover{ |
|
138 | ||
|
139 | .diffblock.margined.comm .line:hover{ | |||
139 | background-color:#FFFFCC !important; |
|
140 | background-color:#FFFFCC !important; | |
140 | cursor: pointer !important; |
|
141 | cursor: pointer !important; | |
141 | background-image:url("../images/icons/comment_add.png") !important; |
|
142 | background-image:url("../images/icons/comment_add.png") !important; | |
142 | background-repeat:no-repeat !important; |
|
143 | background-repeat:no-repeat !important; | |
143 | background-position: right !important; |
|
144 | background-position: right !important; | |
144 | background-position: 100% 50% !important; |
|
145 | background-position: 100% 50% !important; | |
145 | } No newline at end of file |
|
146 | } |
@@ -1,281 +1,281 b'' | |||||
1 | <table id="permissions_manage" class="noborder"> |
|
1 | <table id="permissions_manage" class="noborder"> | |
2 | <tr> |
|
2 | <tr> | |
3 | <td>${_('none')}</td> |
|
3 | <td>${_('none')}</td> | |
4 | <td>${_('read')}</td> |
|
4 | <td>${_('read')}</td> | |
5 | <td>${_('write')}</td> |
|
5 | <td>${_('write')}</td> | |
6 | <td>${_('admin')}</td> |
|
6 | <td>${_('admin')}</td> | |
7 | <td>${_('member')}</td> |
|
7 | <td>${_('member')}</td> | |
8 | <td></td> |
|
8 | <td></td> | |
9 | </tr> |
|
9 | </tr> | |
10 | ## USERS |
|
10 | ## USERS | |
11 | %for r2p in c.repo_info.repo_to_perm: |
|
11 | %for r2p in c.repo_info.repo_to_perm: | |
12 | %if r2p.user.username =='default' and c.repo_info.private: |
|
12 | %if r2p.user.username =='default' and c.repo_info.private: | |
13 | <tr> |
|
13 | <tr> | |
14 | <td colspan="4"> |
|
14 | <td colspan="4"> | |
15 | <span class="private_repo_msg"> |
|
15 | <span class="private_repo_msg"> | |
16 | ${_('private repository')} |
|
16 | ${_('private repository')} | |
17 | </span> |
|
17 | </span> | |
18 | </td> |
|
18 | </td> | |
19 |
<td class="private_repo_msg"><img style="vertical-align:bottom" src="${h.url( |
|
19 | <td class="private_repo_msg"><img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username}</td> | |
20 | </tr> |
|
20 | </tr> | |
21 | %else: |
|
21 | %else: | |
22 | <tr id="id${id(r2p.user.username)}"> |
|
22 | <tr id="id${id(r2p.user.username)}"> | |
23 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.none')}</td> |
|
23 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.none')}</td> | |
24 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.read')}</td> |
|
24 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.read')}</td> | |
25 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.write')}</td> |
|
25 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.write')}</td> | |
26 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.admin')}</td> |
|
26 | <td>${h.radio('u_perm_%s' % r2p.user.username,'repository.admin')}</td> | |
27 | <td style="white-space: nowrap;"> |
|
27 | <td style="white-space: nowrap;"> | |
28 | <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username} |
|
28 | <img style="vertical-align:bottom" src="${h.url('/images/icons/user.png')}"/>${r2p.user.username} | |
29 | </td> |
|
29 | </td> | |
30 | <td> |
|
30 | <td> | |
31 | %if r2p.user.username !='default': |
|
31 | %if r2p.user.username !='default': | |
32 | <span class="delete_icon action_button" onclick="ajaxActionUser(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')"> |
|
32 | <span class="delete_icon action_button" onclick="ajaxActionUser(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')"> | |
33 | ${_('revoke')} |
|
33 | ${_('revoke')} | |
34 | </span> |
|
34 | </span> | |
35 | %endif |
|
35 | %endif | |
36 | </td> |
|
36 | </td> | |
37 | </tr> |
|
37 | </tr> | |
38 | %endif |
|
38 | %endif | |
39 | %endfor |
|
39 | %endfor | |
40 |
|
40 | |||
41 | ## USERS GROUPS |
|
41 | ## USERS GROUPS | |
42 | %for g2p in c.repo_info.users_group_to_perm: |
|
42 | %for g2p in c.repo_info.users_group_to_perm: | |
43 | <tr id="id${id(g2p.users_group.users_group_name)}"> |
|
43 | <tr id="id${id(g2p.users_group.users_group_name)}"> | |
44 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.none')}</td> |
|
44 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.none')}</td> | |
45 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.read')}</td> |
|
45 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.read')}</td> | |
46 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.write')}</td> |
|
46 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.write')}</td> | |
47 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.admin')}</td> |
|
47 | <td>${h.radio('g_perm_%s' % g2p.users_group.users_group_name,'repository.admin')}</td> | |
48 | <td style="white-space: nowrap;"> |
|
48 | <td style="white-space: nowrap;"> | |
49 | <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name} |
|
49 | <img style="vertical-align:bottom" src="${h.url('/images/icons/group.png')}"/>${g2p.users_group.users_group_name} | |
50 | </td> |
|
50 | </td> | |
51 | <td> |
|
51 | <td> | |
52 | <span class="delete_icon action_button" onclick="ajaxActionUsersGroup(${g2p.users_group.users_group_id},'${'id%s'%id(g2p.users_group.users_group_name)}')"> |
|
52 | <span class="delete_icon action_button" onclick="ajaxActionUsersGroup(${g2p.users_group.users_group_id},'${'id%s'%id(g2p.users_group.users_group_name)}')"> | |
53 | ${_('revoke')} |
|
53 | ${_('revoke')} | |
54 | </span> |
|
54 | </span> | |
55 | </td> |
|
55 | </td> | |
56 | </tr> |
|
56 | </tr> | |
57 | %endfor |
|
57 | %endfor | |
58 | <tr id="add_perm_input"> |
|
58 | <tr id="add_perm_input"> | |
59 | <td>${h.radio('perm_new_member','repository.none')}</td> |
|
59 | <td>${h.radio('perm_new_member','repository.none')}</td> | |
60 | <td>${h.radio('perm_new_member','repository.read')}</td> |
|
60 | <td>${h.radio('perm_new_member','repository.read')}</td> | |
61 | <td>${h.radio('perm_new_member','repository.write')}</td> |
|
61 | <td>${h.radio('perm_new_member','repository.write')}</td> | |
62 | <td>${h.radio('perm_new_member','repository.admin')}</td> |
|
62 | <td>${h.radio('perm_new_member','repository.admin')}</td> | |
63 | <td class='ac'> |
|
63 | <td class='ac'> | |
64 | <div class="perm_ac" id="perm_ac"> |
|
64 | <div class="perm_ac" id="perm_ac"> | |
65 | ${h.text('perm_new_member_name',class_='yui-ac-input')} |
|
65 | ${h.text('perm_new_member_name',class_='yui-ac-input')} | |
66 | ${h.hidden('perm_new_member_type')} |
|
66 | ${h.hidden('perm_new_member_type')} | |
67 | <div id="perm_container"></div> |
|
67 | <div id="perm_container"></div> | |
68 | </div> |
|
68 | </div> | |
69 | </td> |
|
69 | </td> | |
70 | <td></td> |
|
70 | <td></td> | |
71 | </tr> |
|
71 | </tr> | |
72 | <tr> |
|
72 | <tr> | |
73 | <td colspan="6"> |
|
73 | <td colspan="6"> | |
74 | <span id="add_perm" class="add_icon" style="cursor: pointer;"> |
|
74 | <span id="add_perm" class="add_icon" style="cursor: pointer;"> | |
75 | ${_('Add another member')} |
|
75 | ${_('Add another member')} | |
76 | </span> |
|
76 | </span> | |
77 | </td> |
|
77 | </td> | |
78 | </tr> |
|
78 | </tr> | |
79 | </table> |
|
79 | </table> | |
80 | <script type="text/javascript"> |
|
80 | <script type="text/javascript"> | |
81 | function ajaxActionUser(user_id, field_id) { |
|
81 | function ajaxActionUser(user_id, field_id) { | |
82 | var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; |
|
82 | var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; | |
83 | var callback = { |
|
83 | var callback = { | |
84 | success: function (o) { |
|
84 | success: function (o) { | |
85 | var tr = YUD.get(String(field_id)); |
|
85 | var tr = YUD.get(String(field_id)); | |
86 | tr.parentNode.removeChild(tr); |
|
86 | tr.parentNode.removeChild(tr); | |
87 | }, |
|
87 | }, | |
88 | failure: function (o) { |
|
88 | failure: function (o) { | |
89 | alert("${_('Failed to remove user')}"); |
|
89 | alert("${_('Failed to remove user')}"); | |
90 | }, |
|
90 | }, | |
91 | }; |
|
91 | }; | |
92 | var postData = '_method=delete&user_id=' + user_id; |
|
92 | var postData = '_method=delete&user_id=' + user_id; | |
93 | var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); |
|
93 | var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); | |
94 | }; |
|
94 | }; | |
95 |
|
95 | |||
96 | function ajaxActionUsersGroup(users_group_id,field_id){ |
|
96 | function ajaxActionUsersGroup(users_group_id,field_id){ | |
97 | var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}"; |
|
97 | var sUrl = "${h.url('delete_repo_users_group',repo_name=c.repo_name)}"; | |
98 | var callback = { |
|
98 | var callback = { | |
99 | success:function(o){ |
|
99 | success:function(o){ | |
100 | var tr = YUD.get(String(field_id)); |
|
100 | var tr = YUD.get(String(field_id)); | |
101 | tr.parentNode.removeChild(tr); |
|
101 | tr.parentNode.removeChild(tr); | |
102 | }, |
|
102 | }, | |
103 | failure:function(o){ |
|
103 | failure:function(o){ | |
104 | alert("${_('Failed to remove users group')}"); |
|
104 | alert("${_('Failed to remove users group')}"); | |
105 | }, |
|
105 | }, | |
106 | }; |
|
106 | }; | |
107 | var postData = '_method=delete&users_group_id='+users_group_id; |
|
107 | var postData = '_method=delete&users_group_id='+users_group_id; | |
108 | var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); |
|
108 | var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); | |
109 | }; |
|
109 | }; | |
110 |
|
110 | |||
111 | YUE.onDOMReady(function () { |
|
111 | YUE.onDOMReady(function () { | |
112 | if (!YUD.hasClass('perm_new_member_name', 'error')) { |
|
112 | if (!YUD.hasClass('perm_new_member_name', 'error')) { | |
113 | YUD.setStyle('add_perm_input', 'display', 'none'); |
|
113 | YUD.setStyle('add_perm_input', 'display', 'none'); | |
114 | } |
|
114 | } | |
115 | YAHOO.util.Event.addListener('add_perm', 'click', function () { |
|
115 | YAHOO.util.Event.addListener('add_perm', 'click', function () { | |
116 | YUD.setStyle('add_perm_input', 'display', ''); |
|
116 | YUD.setStyle('add_perm_input', 'display', ''); | |
117 | YUD.setStyle('add_perm', 'opacity', '0.6'); |
|
117 | YUD.setStyle('add_perm', 'opacity', '0.6'); | |
118 | YUD.setStyle('add_perm', 'cursor', 'default'); |
|
118 | YUD.setStyle('add_perm', 'cursor', 'default'); | |
119 | }); |
|
119 | }); | |
120 | }); |
|
120 | }); | |
121 |
|
121 | |||
122 | YAHOO.example.FnMultipleFields = function () { |
|
122 | YAHOO.example.FnMultipleFields = function () { | |
123 | var myUsers = ${c.users_array|n}; |
|
123 | var myUsers = ${c.users_array|n}; | |
124 | var myGroups = ${c.users_groups_array|n}; |
|
124 | var myGroups = ${c.users_groups_array|n}; | |
125 |
|
125 | |||
126 | // Define a custom search function for the DataSource of users |
|
126 | // Define a custom search function for the DataSource of users | |
127 | var matchUsers = function (sQuery) { |
|
127 | var matchUsers = function (sQuery) { | |
128 | // Case insensitive matching |
|
128 | // Case insensitive matching | |
129 | var query = sQuery.toLowerCase(); |
|
129 | var query = sQuery.toLowerCase(); | |
130 | var i = 0; |
|
130 | var i = 0; | |
131 | var l = myUsers.length; |
|
131 | var l = myUsers.length; | |
132 | var matches = []; |
|
132 | var matches = []; | |
133 |
|
133 | |||
134 | // Match against each name of each contact |
|
134 | // Match against each name of each contact | |
135 | for (; i < l; i++) { |
|
135 | for (; i < l; i++) { | |
136 | contact = myUsers[i]; |
|
136 | contact = myUsers[i]; | |
137 | if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { |
|
137 | if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { | |
138 | matches[matches.length] = contact; |
|
138 | matches[matches.length] = contact; | |
139 | } |
|
139 | } | |
140 | } |
|
140 | } | |
141 | return matches; |
|
141 | return matches; | |
142 | }; |
|
142 | }; | |
143 |
|
143 | |||
144 | // Define a custom search function for the DataSource of usersGroups |
|
144 | // Define a custom search function for the DataSource of usersGroups | |
145 | var matchGroups = function (sQuery) { |
|
145 | var matchGroups = function (sQuery) { | |
146 | // Case insensitive matching |
|
146 | // Case insensitive matching | |
147 | var query = sQuery.toLowerCase(); |
|
147 | var query = sQuery.toLowerCase(); | |
148 | var i = 0; |
|
148 | var i = 0; | |
149 | var l = myGroups.length; |
|
149 | var l = myGroups.length; | |
150 | var matches = []; |
|
150 | var matches = []; | |
151 |
|
151 | |||
152 | // Match against each name of each contact |
|
152 | // Match against each name of each contact | |
153 | for (; i < l; i++) { |
|
153 | for (; i < l; i++) { | |
154 | matched_group = myGroups[i]; |
|
154 | matched_group = myGroups[i]; | |
155 | if (matched_group.grname.toLowerCase().indexOf(query) > -1) { |
|
155 | if (matched_group.grname.toLowerCase().indexOf(query) > -1) { | |
156 | matches[matches.length] = matched_group; |
|
156 | matches[matches.length] = matched_group; | |
157 | } |
|
157 | } | |
158 | } |
|
158 | } | |
159 | return matches; |
|
159 | return matches; | |
160 | }; |
|
160 | }; | |
161 |
|
161 | |||
162 | //match all |
|
162 | //match all | |
163 | var matchAll = function (sQuery) { |
|
163 | var matchAll = function (sQuery) { | |
164 | u = matchUsers(sQuery); |
|
164 | u = matchUsers(sQuery); | |
165 | g = matchGroups(sQuery); |
|
165 | g = matchGroups(sQuery); | |
166 | return u.concat(g); |
|
166 | return u.concat(g); | |
167 | }; |
|
167 | }; | |
168 |
|
168 | |||
169 | // DataScheme for members |
|
169 | // DataScheme for members | |
170 | var memberDS = new YAHOO.util.FunctionDataSource(matchAll); |
|
170 | var memberDS = new YAHOO.util.FunctionDataSource(matchAll); | |
171 | memberDS.responseSchema = { |
|
171 | memberDS.responseSchema = { | |
172 | fields: ["id", "fname", "lname", "nname", "grname", "grmembers"] |
|
172 | fields: ["id", "fname", "lname", "nname", "grname", "grmembers"] | |
173 | }; |
|
173 | }; | |
174 |
|
174 | |||
175 | // DataScheme for owner |
|
175 | // DataScheme for owner | |
176 | var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); |
|
176 | var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); | |
177 | ownerDS.responseSchema = { |
|
177 | ownerDS.responseSchema = { | |
178 | fields: ["id", "fname", "lname", "nname"] |
|
178 | fields: ["id", "fname", "lname", "nname"] | |
179 | }; |
|
179 | }; | |
180 |
|
180 | |||
181 | // Instantiate AutoComplete for perms |
|
181 | // Instantiate AutoComplete for perms | |
182 | var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS); |
|
182 | var membersAC = new YAHOO.widget.AutoComplete("perm_new_member_name", "perm_container", memberDS); | |
183 | membersAC.useShadow = false; |
|
183 | membersAC.useShadow = false; | |
184 | membersAC.resultTypeList = false; |
|
184 | membersAC.resultTypeList = false; | |
185 |
|
185 | |||
186 | // Instantiate AutoComplete for owner |
|
186 | // Instantiate AutoComplete for owner | |
187 | var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS); |
|
187 | var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS); | |
188 | ownerAC.useShadow = false; |
|
188 | ownerAC.useShadow = false; | |
189 | ownerAC.resultTypeList = false; |
|
189 | ownerAC.resultTypeList = false; | |
190 |
|
190 | |||
191 |
|
191 | |||
192 | // Helper highlight function for the formatter |
|
192 | // Helper highlight function for the formatter | |
193 | var highlightMatch = function (full, snippet, matchindex) { |
|
193 | var highlightMatch = function (full, snippet, matchindex) { | |
194 | return full.substring(0, matchindex) + "<span class='match'>" + full.substr(matchindex, snippet.length) + "</span>" + full.substring(matchindex + snippet.length); |
|
194 | return full.substring(0, matchindex) + "<span class='match'>" + full.substr(matchindex, snippet.length) + "</span>" + full.substring(matchindex + snippet.length); | |
195 | }; |
|
195 | }; | |
196 |
|
196 | |||
197 | // Custom formatter to highlight the matching letters |
|
197 | // Custom formatter to highlight the matching letters | |
198 | var custom_formatter = function (oResultData, sQuery, sResultMatch) { |
|
198 | var custom_formatter = function (oResultData, sQuery, sResultMatch) { | |
199 | var query = sQuery.toLowerCase(); |
|
199 | var query = sQuery.toLowerCase(); | |
200 |
|
200 | |||
201 | if (oResultData.grname != undefined) { |
|
201 | if (oResultData.grname != undefined) { | |
202 | var grname = oResultData.grname; |
|
202 | var grname = oResultData.grname; | |
203 | var grmembers = oResultData.grmembers; |
|
203 | var grmembers = oResultData.grmembers; | |
204 | var grnameMatchIndex = grname.toLowerCase().indexOf(query); |
|
204 | var grnameMatchIndex = grname.toLowerCase().indexOf(query); | |
205 | var grprefix = "${_('Group')}: "; |
|
205 | var grprefix = "${_('Group')}: "; | |
206 | var grsuffix = " (" + grmembers + " ${_('members')})"; |
|
206 | var grsuffix = " (" + grmembers + " ${_('members')})"; | |
207 |
|
207 | |||
208 | if (grnameMatchIndex > -1) { |
|
208 | if (grnameMatchIndex > -1) { | |
209 | return grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix; |
|
209 | return grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix; | |
210 | } |
|
210 | } | |
211 |
|
211 | |||
212 | return grprefix + oResultData.grname + grsuffix; |
|
212 | return grprefix + oResultData.grname + grsuffix; | |
213 | } else if (oResultData.fname != undefined) { |
|
213 | } else if (oResultData.fname != undefined) { | |
214 |
|
214 | |||
215 | var fname = oResultData.fname, |
|
215 | var fname = oResultData.fname, | |
216 | lname = oResultData.lname, |
|
216 | lname = oResultData.lname, | |
217 | nname = oResultData.nname || "", |
|
217 | nname = oResultData.nname || "", | |
218 | // Guard against null value |
|
218 | // Guard against null value | |
219 | fnameMatchIndex = fname.toLowerCase().indexOf(query), |
|
219 | fnameMatchIndex = fname.toLowerCase().indexOf(query), | |
220 | lnameMatchIndex = lname.toLowerCase().indexOf(query), |
|
220 | lnameMatchIndex = lname.toLowerCase().indexOf(query), | |
221 | nnameMatchIndex = nname.toLowerCase().indexOf(query), |
|
221 | nnameMatchIndex = nname.toLowerCase().indexOf(query), | |
222 | displayfname, displaylname, displaynname; |
|
222 | displayfname, displaylname, displaynname; | |
223 |
|
223 | |||
224 | if (fnameMatchIndex > -1) { |
|
224 | if (fnameMatchIndex > -1) { | |
225 | displayfname = highlightMatch(fname, query, fnameMatchIndex); |
|
225 | displayfname = highlightMatch(fname, query, fnameMatchIndex); | |
226 | } else { |
|
226 | } else { | |
227 | displayfname = fname; |
|
227 | displayfname = fname; | |
228 | } |
|
228 | } | |
229 |
|
229 | |||
230 | if (lnameMatchIndex > -1) { |
|
230 | if (lnameMatchIndex > -1) { | |
231 | displaylname = highlightMatch(lname, query, lnameMatchIndex); |
|
231 | displaylname = highlightMatch(lname, query, lnameMatchIndex); | |
232 | } else { |
|
232 | } else { | |
233 | displaylname = lname; |
|
233 | displaylname = lname; | |
234 | } |
|
234 | } | |
235 |
|
235 | |||
236 | if (nnameMatchIndex > -1) { |
|
236 | if (nnameMatchIndex > -1) { | |
237 | displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")"; |
|
237 | displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")"; | |
238 | } else { |
|
238 | } else { | |
239 | displaynname = nname ? "(" + nname + ")" : ""; |
|
239 | displaynname = nname ? "(" + nname + ")" : ""; | |
240 | } |
|
240 | } | |
241 |
|
241 | |||
242 | return displayfname + " " + displaylname + " " + displaynname; |
|
242 | return displayfname + " " + displaylname + " " + displaynname; | |
243 | } else { |
|
243 | } else { | |
244 | return ''; |
|
244 | return ''; | |
245 | } |
|
245 | } | |
246 | }; |
|
246 | }; | |
247 | membersAC.formatResult = custom_formatter; |
|
247 | membersAC.formatResult = custom_formatter; | |
248 | ownerAC.formatResult = custom_formatter; |
|
248 | ownerAC.formatResult = custom_formatter; | |
249 |
|
249 | |||
250 | var myHandler = function (sType, aArgs) { |
|
250 | var myHandler = function (sType, aArgs) { | |
251 |
|
251 | |||
252 | var myAC = aArgs[0]; // reference back to the AC instance |
|
252 | var myAC = aArgs[0]; // reference back to the AC instance | |
253 | var elLI = aArgs[1]; // reference to the selected LI element |
|
253 | var elLI = aArgs[1]; // reference to the selected LI element | |
254 | var oData = aArgs[2]; // object literal of selected item's result data |
|
254 | var oData = aArgs[2]; // object literal of selected item's result data | |
255 | //fill the autocomplete with value |
|
255 | //fill the autocomplete with value | |
256 | if (oData.nname != undefined) { |
|
256 | if (oData.nname != undefined) { | |
257 | //users |
|
257 | //users | |
258 | myAC.getInputEl().value = oData.nname; |
|
258 | myAC.getInputEl().value = oData.nname; | |
259 | YUD.get('perm_new_member_type').value = 'user'; |
|
259 | YUD.get('perm_new_member_type').value = 'user'; | |
260 | } else { |
|
260 | } else { | |
261 | //groups |
|
261 | //groups | |
262 | myAC.getInputEl().value = oData.grname; |
|
262 | myAC.getInputEl().value = oData.grname; | |
263 | YUD.get('perm_new_member_type').value = 'users_group'; |
|
263 | YUD.get('perm_new_member_type').value = 'users_group'; | |
264 | } |
|
264 | } | |
265 |
|
265 | |||
266 | }; |
|
266 | }; | |
267 |
|
267 | |||
268 | membersAC.itemSelectEvent.subscribe(myHandler); |
|
268 | membersAC.itemSelectEvent.subscribe(myHandler); | |
269 | if(ownerAC.itemSelectEvent){ |
|
269 | if(ownerAC.itemSelectEvent){ | |
270 | ownerAC.itemSelectEvent.subscribe(myHandler); |
|
270 | ownerAC.itemSelectEvent.subscribe(myHandler); | |
271 | } |
|
271 | } | |
272 |
|
272 | |||
273 | return { |
|
273 | return { | |
274 | memberDS: memberDS, |
|
274 | memberDS: memberDS, | |
275 | ownerDS: ownerDS, |
|
275 | ownerDS: ownerDS, | |
276 | membersAC: membersAC, |
|
276 | membersAC: membersAC, | |
277 | ownerAC: ownerAC, |
|
277 | ownerAC: ownerAC, | |
278 | }; |
|
278 | }; | |
279 | }(); |
|
279 | }(); | |
280 |
|
280 | |||
281 | </script> No newline at end of file |
|
281 | </script> |
@@ -1,88 +1,88 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 | <%inherit file="/base/base.html"/> |
|
2 | <%inherit file="/base/base.html"/> | |
3 |
|
3 | |||
4 | <%def name="title()"> |
|
4 | <%def name="title()"> | |
5 | ${_('Repositories administration')} - ${c.rhodecode_name} |
|
5 | ${_('Repositories administration')} - ${c.rhodecode_name} | |
6 | </%def> |
|
6 | </%def> | |
7 |
|
7 | |||
8 |
|
8 | |||
9 | <%def name="breadcrumbs_links()"> |
|
9 | <%def name="breadcrumbs_links()"> | |
10 | ${h.link_to(_('Admin'),h.url('admin_home'))} » ${_('Repositories')} |
|
10 | ${h.link_to(_('Admin'),h.url('admin_home'))} » ${_('Repositories')} | |
11 | </%def> |
|
11 | </%def> | |
12 | <%def name="page_nav()"> |
|
12 | <%def name="page_nav()"> | |
13 | ${self.menu('admin')} |
|
13 | ${self.menu('admin')} | |
14 | </%def> |
|
14 | </%def> | |
15 | <%def name="main()"> |
|
15 | <%def name="main()"> | |
16 | <div class="box"> |
|
16 | <div class="box"> | |
17 | <!-- box / title --> |
|
17 | <!-- box / title --> | |
18 | <div class="title"> |
|
18 | <div class="title"> | |
19 | ${self.breadcrumbs()} |
|
19 | ${self.breadcrumbs()} | |
20 | <ul class="links"> |
|
20 | <ul class="links"> | |
21 | <li> |
|
21 | <li> | |
22 | <span>${h.link_to(_(u'ADD NEW REPOSITORY'),h.url('new_repo'))}</span> |
|
22 | <span>${h.link_to(_(u'ADD NEW REPOSITORY'),h.url('new_repo'))}</span> | |
23 | </li> |
|
23 | </li> | |
24 | </ul> |
|
24 | </ul> | |
25 | </div> |
|
25 | </div> | |
26 | <!-- end box / title --> |
|
26 | <!-- end box / title --> | |
27 | <div class="table"> |
|
27 | <div class="table"> | |
28 | <table class="table_disp"> |
|
28 | <table class="table_disp"> | |
29 | <tr class="header"> |
|
29 | <tr class="header"> | |
30 | <th class="left">${_('Name')}</th> |
|
30 | <th class="left">${_('Name')}</th> | |
31 | <th class="left">${_('Description')}</th> |
|
31 | <th class="left">${_('Description')}</th> | |
32 | <th class="left">${_('Last change')}</th> |
|
32 | <th class="left">${_('Last change')}</th> | |
33 | <th class="left">${_('Tip')}</th> |
|
33 | <th class="left">${_('Tip')}</th> | |
34 | <th class="left">${_('Contact')}</th> |
|
34 | <th class="left">${_('Contact')}</th> | |
35 | <th class="left">${_('action')}</th> |
|
35 | <th class="left">${_('action')}</th> | |
36 | </tr> |
|
36 | </tr> | |
37 | %for cnt,repo in enumerate(c.repos_list): |
|
37 | %for cnt,repo in enumerate(c.repos_list): | |
38 | <tr class="parity${cnt%2}"> |
|
38 | <tr class="parity${cnt%2}"> | |
39 | <td> |
|
39 | <td> | |
40 | ## TYPE OF REPO |
|
40 | ## TYPE OF REPO | |
41 | %if repo['dbrepo']['repo_type'] =='hg': |
|
41 | %if repo['dbrepo']['repo_type'] =='hg': | |
42 | <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/> |
|
42 | <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/> | |
43 | %elif repo['dbrepo']['repo_type'] =='git': |
|
43 | %elif repo['dbrepo']['repo_type'] =='git': | |
44 | <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> |
|
44 | <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> | |
45 | %else: |
|
45 | %else: | |
46 |
|
46 | |||
47 | %endif |
|
47 | %endif | |
48 |
|
48 | |||
49 | ## PRIVATE/PUBLIC REPO |
|
49 | ## PRIVATE/PUBLIC REPO | |
50 | %if repo['dbrepo']['private']: |
|
50 | %if repo['dbrepo']['private']: | |
51 | <img alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/> |
|
51 | <img alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/> | |
52 | %else: |
|
52 | %else: | |
53 | <img alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/> |
|
53 | <img alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/> | |
54 | %endif |
|
54 | %endif | |
55 | ${h.link_to(repo['name'],h.url('edit_repo',repo_name=repo['name']))} |
|
55 | ${h.link_to(repo['name'],h.url('edit_repo',repo_name=repo['name']))} | |
56 |
|
56 | |||
57 | %if repo['dbrepo_fork']: |
|
57 | %if repo['dbrepo_fork']: | |
58 | <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}"> |
|
58 | <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}"> | |
59 | <img class="icon" alt="${_('public')}" |
|
59 | <img class="icon" alt="${_('public')}" | |
60 | title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" |
|
60 | title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" | |
61 |
src="${h.url( |
|
61 | src="${h.url('/images/icons/arrow_divide.png')}"/></a> | |
62 | %endif |
|
62 | %endif | |
63 | </td> |
|
63 | </td> | |
64 | <td title="${repo['description']}">${h.truncate(repo['description'],60)}</td> |
|
64 | <td title="${repo['description']}">${h.truncate(repo['description'],60)}</td> | |
65 | <td>${h.age(repo['last_change'])}</td> |
|
65 | <td>${h.age(repo['last_change'])}</td> | |
66 | <td> |
|
66 | <td> | |
67 | %if repo['rev']>=0: |
|
67 | %if repo['rev']>=0: | |
68 | ${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])), |
|
68 | ${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])), | |
69 | h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']), |
|
69 | h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']), | |
70 | class_="tooltip", |
|
70 | class_="tooltip", | |
71 | title=h.tooltip(repo['last_msg']))} |
|
71 | title=h.tooltip(repo['last_msg']))} | |
72 | %else: |
|
72 | %else: | |
73 | ${_('No changesets yet')} |
|
73 | ${_('No changesets yet')} | |
74 | %endif |
|
74 | %endif | |
75 | </td> |
|
75 | </td> | |
76 | <td title="${repo['contact']}">${h.person(repo['contact'])}</td> |
|
76 | <td title="${repo['contact']}">${h.person(repo['contact'])}</td> | |
77 | <td> |
|
77 | <td> | |
78 | ${h.form(url('repo', repo_name=repo['name']),method='delete')} |
|
78 | ${h.form(url('repo', repo_name=repo['name']),method='delete')} | |
79 | ${h.submit('remove_%s' % repo['name'],_('delete'),class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository')+"');")} |
|
79 | ${h.submit('remove_%s' % repo['name'],_('delete'),class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository')+"');")} | |
80 | ${h.end_form()} |
|
80 | ${h.end_form()} | |
81 | </td> |
|
81 | </td> | |
82 | </tr> |
|
82 | </tr> | |
83 | %endfor |
|
83 | %endfor | |
84 | </table> |
|
84 | </table> | |
85 | </div> |
|
85 | </div> | |
86 | </div> |
|
86 | </div> | |
87 |
|
87 | |||
88 | </%def> |
|
88 | </%def> |
@@ -1,190 +1,190 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 | <%inherit file="/base/base.html"/> |
|
2 | <%inherit file="/base/base.html"/> | |
3 |
|
3 | |||
4 | <%def name="title()"> |
|
4 | <%def name="title()"> | |
5 | ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name} |
|
5 | ${_('My account')} ${c.rhodecode_user.username} - ${c.rhodecode_name} | |
6 | </%def> |
|
6 | </%def> | |
7 |
|
7 | |||
8 | <%def name="breadcrumbs_links()"> |
|
8 | <%def name="breadcrumbs_links()"> | |
9 | ${_('My Account')} |
|
9 | ${_('My Account')} | |
10 | </%def> |
|
10 | </%def> | |
11 |
|
11 | |||
12 | <%def name="page_nav()"> |
|
12 | <%def name="page_nav()"> | |
13 | ${self.menu('admin')} |
|
13 | ${self.menu('admin')} | |
14 | </%def> |
|
14 | </%def> | |
15 |
|
15 | |||
16 | <%def name="main()"> |
|
16 | <%def name="main()"> | |
17 |
|
17 | |||
18 | <div class="box box-left"> |
|
18 | <div class="box box-left"> | |
19 | <!-- box / title --> |
|
19 | <!-- box / title --> | |
20 | <div class="title"> |
|
20 | <div class="title"> | |
21 | ${self.breadcrumbs()} |
|
21 | ${self.breadcrumbs()} | |
22 | </div> |
|
22 | </div> | |
23 | <!-- end box / title --> |
|
23 | <!-- end box / title --> | |
24 | <div> |
|
24 | <div> | |
25 | ${h.form(url('admin_settings_my_account_update'),method='put')} |
|
25 | ${h.form(url('admin_settings_my_account_update'),method='put')} | |
26 | <div class="form"> |
|
26 | <div class="form"> | |
27 |
|
27 | |||
28 | <div class="field"> |
|
28 | <div class="field"> | |
29 | <div class="gravatar_box"> |
|
29 | <div class="gravatar_box"> | |
30 | <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/></div> |
|
30 | <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/></div> | |
31 | <p> |
|
31 | <p> | |
32 | %if c.use_gravatar: |
|
32 | %if c.use_gravatar: | |
33 | <strong>${_('Change your avatar at')} <a href="http://gravatar.com">gravatar.com</a></strong> |
|
33 | <strong>${_('Change your avatar at')} <a href="http://gravatar.com">gravatar.com</a></strong> | |
34 | <br/>${_('Using')} ${c.user.email} |
|
34 | <br/>${_('Using')} ${c.user.email} | |
35 | %else: |
|
35 | %else: | |
36 | <br/>${c.user.email} |
|
36 | <br/>${c.user.email} | |
37 | %endif |
|
37 | %endif | |
38 | </p> |
|
38 | </p> | |
39 | </div> |
|
39 | </div> | |
40 | </div> |
|
40 | </div> | |
41 | <div class="field"> |
|
41 | <div class="field"> | |
42 | <div class="label"> |
|
42 | <div class="label"> | |
43 | <label>${_('API key')}</label> ${c.user.api_key} |
|
43 | <label>${_('API key')}</label> ${c.user.api_key} | |
44 | </div> |
|
44 | </div> | |
45 | </div> |
|
45 | </div> | |
46 | <div class="fields"> |
|
46 | <div class="fields"> | |
47 | <div class="field"> |
|
47 | <div class="field"> | |
48 | <div class="label"> |
|
48 | <div class="label"> | |
49 | <label for="username">${_('Username')}:</label> |
|
49 | <label for="username">${_('Username')}:</label> | |
50 | </div> |
|
50 | </div> | |
51 | <div class="input"> |
|
51 | <div class="input"> | |
52 | ${h.text('username',class_="medium")} |
|
52 | ${h.text('username',class_="medium")} | |
53 | </div> |
|
53 | </div> | |
54 | </div> |
|
54 | </div> | |
55 |
|
55 | |||
56 | <div class="field"> |
|
56 | <div class="field"> | |
57 | <div class="label"> |
|
57 | <div class="label"> | |
58 | <label for="new_password">${_('New password')}:</label> |
|
58 | <label for="new_password">${_('New password')}:</label> | |
59 | </div> |
|
59 | </div> | |
60 | <div class="input"> |
|
60 | <div class="input"> | |
61 | ${h.password('new_password',class_="medium",autocomplete="off")} |
|
61 | ${h.password('new_password',class_="medium",autocomplete="off")} | |
62 | </div> |
|
62 | </div> | |
63 | </div> |
|
63 | </div> | |
64 |
|
64 | |||
65 | <div class="field"> |
|
65 | <div class="field"> | |
66 | <div class="label"> |
|
66 | <div class="label"> | |
67 | <label for="password_confirmation">${_('New password confirmation')}:</label> |
|
67 | <label for="password_confirmation">${_('New password confirmation')}:</label> | |
68 | </div> |
|
68 | </div> | |
69 | <div class="input"> |
|
69 | <div class="input"> | |
70 | ${h.password('password_confirmation',class_="medium",autocomplete="off")} |
|
70 | ${h.password('password_confirmation',class_="medium",autocomplete="off")} | |
71 | </div> |
|
71 | </div> | |
72 | </div> |
|
72 | </div> | |
73 |
|
73 | |||
74 | <div class="field"> |
|
74 | <div class="field"> | |
75 | <div class="label"> |
|
75 | <div class="label"> | |
76 | <label for="name">${_('First Name')}:</label> |
|
76 | <label for="name">${_('First Name')}:</label> | |
77 | </div> |
|
77 | </div> | |
78 | <div class="input"> |
|
78 | <div class="input"> | |
79 | ${h.text('name',class_="medium")} |
|
79 | ${h.text('name',class_="medium")} | |
80 | </div> |
|
80 | </div> | |
81 | </div> |
|
81 | </div> | |
82 |
|
82 | |||
83 | <div class="field"> |
|
83 | <div class="field"> | |
84 | <div class="label"> |
|
84 | <div class="label"> | |
85 | <label for="lastname">${_('Last Name')}:</label> |
|
85 | <label for="lastname">${_('Last Name')}:</label> | |
86 | </div> |
|
86 | </div> | |
87 | <div class="input"> |
|
87 | <div class="input"> | |
88 | ${h.text('lastname',class_="medium")} |
|
88 | ${h.text('lastname',class_="medium")} | |
89 | </div> |
|
89 | </div> | |
90 | </div> |
|
90 | </div> | |
91 |
|
91 | |||
92 | <div class="field"> |
|
92 | <div class="field"> | |
93 | <div class="label"> |
|
93 | <div class="label"> | |
94 | <label for="email">${_('Email')}:</label> |
|
94 | <label for="email">${_('Email')}:</label> | |
95 | </div> |
|
95 | </div> | |
96 | <div class="input"> |
|
96 | <div class="input"> | |
97 | ${h.text('email',class_="medium")} |
|
97 | ${h.text('email',class_="medium")} | |
98 | </div> |
|
98 | </div> | |
99 | </div> |
|
99 | </div> | |
100 |
|
100 | |||
101 | <div class="buttons"> |
|
101 | <div class="buttons"> | |
102 | ${h.submit('save',_('Save'),class_="ui-button")} |
|
102 | ${h.submit('save',_('Save'),class_="ui-button")} | |
103 | ${h.reset('reset',_('Reset'),class_="ui-button")} |
|
103 | ${h.reset('reset',_('Reset'),class_="ui-button")} | |
104 | </div> |
|
104 | </div> | |
105 | </div> |
|
105 | </div> | |
106 | </div> |
|
106 | </div> | |
107 | ${h.end_form()} |
|
107 | ${h.end_form()} | |
108 | </div> |
|
108 | </div> | |
109 | </div> |
|
109 | </div> | |
110 |
|
110 | |||
111 | <div class="box box-right"> |
|
111 | <div class="box box-right"> | |
112 | <!-- box / title --> |
|
112 | <!-- box / title --> | |
113 | <div class="title"> |
|
113 | <div class="title"> | |
114 | <h5> |
|
114 | <h5> | |
115 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> |
|
115 | <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> | |
116 | ${_('My repositories')} |
|
116 | ${_('My repositories')} | |
117 | </h5> |
|
117 | </h5> | |
118 | %if h.HasPermissionAny('hg.admin','hg.create.repository')(): |
|
118 | %if h.HasPermissionAny('hg.admin','hg.create.repository')(): | |
119 | <ul class="links"> |
|
119 | <ul class="links"> | |
120 | <li> |
|
120 | <li> | |
121 | <span>${h.link_to(_('ADD REPOSITORY'),h.url('admin_settings_create_repository'))}</span> |
|
121 | <span>${h.link_to(_('ADD REPOSITORY'),h.url('admin_settings_create_repository'))}</span> | |
122 | </li> |
|
122 | </li> | |
123 | </ul> |
|
123 | </ul> | |
124 | %endif |
|
124 | %endif | |
125 | </div> |
|
125 | </div> | |
126 | <!-- end box / title --> |
|
126 | <!-- end box / title --> | |
127 | <div class="table"> |
|
127 | <div class="table"> | |
128 | <table> |
|
128 | <table> | |
129 | <thead> |
|
129 | <thead> | |
130 | <tr> |
|
130 | <tr> | |
131 | <th class="left">${_('Name')}</th> |
|
131 | <th class="left">${_('Name')}</th> | |
132 | <th class="left">${_('revision')}</th> |
|
132 | <th class="left">${_('revision')}</th> | |
133 | <th colspan="2" class="left">${_('action')}</th> |
|
133 | <th colspan="2" class="left">${_('action')}</th> | |
134 | </thead> |
|
134 | </thead> | |
135 | <tbody> |
|
135 | <tbody> | |
136 | %if c.user_repos: |
|
136 | %if c.user_repos: | |
137 | %for repo in c.user_repos: |
|
137 | %for repo in c.user_repos: | |
138 | <tr> |
|
138 | <tr> | |
139 | <td> |
|
139 | <td> | |
140 | %if repo['dbrepo']['repo_type'] =='hg': |
|
140 | %if repo['dbrepo']['repo_type'] =='hg': | |
141 |
<img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url( |
|
141 | <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/> | |
142 | %elif repo['dbrepo']['repo_type'] =='git': |
|
142 | %elif repo['dbrepo']['repo_type'] =='git': | |
143 |
<img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url( |
|
143 | <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/> | |
144 | %else: |
|
144 | %else: | |
145 |
|
145 | |||
146 | %endif |
|
146 | %endif | |
147 | %if repo['dbrepo']['private']: |
|
147 | %if repo['dbrepo']['private']: | |
148 |
<img class="icon" alt="${_('private')}" src="${h.url( |
|
148 | <img class="icon" alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/> | |
149 | %else: |
|
149 | %else: | |
150 |
<img class="icon" alt="${_('public')}" src="${h.url( |
|
150 | <img class="icon" alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/> | |
151 | %endif |
|
151 | %endif | |
152 |
|
152 | |||
153 | ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")} |
|
153 | ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")} | |
154 | %if repo['dbrepo_fork']: |
|
154 | %if repo['dbrepo_fork']: | |
155 | <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}"> |
|
155 | <a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}"> | |
156 | <img class="icon" alt="${_('public')}" |
|
156 | <img class="icon" alt="${_('public')}" | |
157 | title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" |
|
157 | title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}" | |
158 | src="${h.url('/images/icons/arrow_divide.png')}"/></a> |
|
158 | src="${h.url('/images/icons/arrow_divide.png')}"/></a> | |
159 | %endif |
|
159 | %endif | |
160 | </td> |
|
160 | </td> | |
161 | <td><span class="tooltip" title="${repo['last_change']}">${("r%s:%s") % (repo['rev'],h.short_id(repo['tip']))}</span></td> |
|
161 | <td><span class="tooltip" title="${repo['last_change']}">${("r%s:%s") % (repo['rev'],h.short_id(repo['tip']))}</span></td> | |
162 | <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url('/images/icons/application_form_edit.png')}"/></a></td> |
|
162 | <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url('/images/icons/application_form_edit.png')}"/></a></td> | |
163 | <td> |
|
163 | <td> | |
164 | ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')} |
|
164 | ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')} | |
165 | ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")} |
|
165 | ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('Confirm to delete this repository');")} | |
166 | ${h.end_form()} |
|
166 | ${h.end_form()} | |
167 | </td> |
|
167 | </td> | |
168 | </tr> |
|
168 | </tr> | |
169 | %endfor |
|
169 | %endfor | |
170 | %else: |
|
170 | %else: | |
171 | <div style="padding:5px 0px 10px 0px;"> |
|
171 | <div style="padding:5px 0px 10px 0px;"> | |
172 | ${_('No repositories yet')} |
|
172 | ${_('No repositories yet')} | |
173 | %if h.HasPermissionAny('hg.admin','hg.create.repository')(): |
|
173 | %if h.HasPermissionAny('hg.admin','hg.create.repository')(): | |
174 | ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-button-small")} |
|
174 | ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-button-small")} | |
175 | %endif |
|
175 | %endif | |
176 | </div> |
|
176 | </div> | |
177 | %endif |
|
177 | %endif | |
178 | </tbody> |
|
178 | </tbody> | |
179 | </table> |
|
179 | </table> | |
180 | </div> |
|
180 | </div> | |
181 | </div> |
|
181 | </div> | |
182 | <script type="text/javascript"> |
|
182 | <script type="text/javascript"> | |
183 | var nodes = YUQ('div.table tr td a.repo_name'); |
|
183 | var nodes = YUQ('div.table tr td a.repo_name'); | |
184 | var target = 'q_filter'; |
|
184 | var target = 'q_filter'; | |
185 | var func = function(node){ |
|
185 | var func = function(node){ | |
186 | return node.parentNode.parentNode; |
|
186 | return node.parentNode.parentNode; | |
187 | } |
|
187 | } | |
188 | q_filter(target,nodes,func); |
|
188 | q_filter(target,nodes,func); | |
189 | </script> |
|
189 | </script> | |
190 | </%def> |
|
190 | </%def> |
@@ -1,270 +1,270 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 | <%inherit file="/base/base.html"/> |
|
2 | <%inherit file="/base/base.html"/> | |
3 |
|
3 | |||
4 | <%def name="title()"> |
|
4 | <%def name="title()"> | |
5 | ${_('Edit users group')} ${c.users_group.users_group_name} - ${c.rhodecode_name} |
|
5 | ${_('Edit users group')} ${c.users_group.users_group_name} - ${c.rhodecode_name} | |
6 | </%def> |
|
6 | </%def> | |
7 |
|
7 | |||
8 | <%def name="breadcrumbs_links()"> |
|
8 | <%def name="breadcrumbs_links()"> | |
9 | ${h.link_to(_('Admin'),h.url('admin_home'))} |
|
9 | ${h.link_to(_('Admin'),h.url('admin_home'))} | |
10 | » |
|
10 | » | |
11 | ${h.link_to(_('UsersGroups'),h.url('users_groups'))} |
|
11 | ${h.link_to(_('UsersGroups'),h.url('users_groups'))} | |
12 | » |
|
12 | » | |
13 | ${_('edit')} "${c.users_group.users_group_name}" |
|
13 | ${_('edit')} "${c.users_group.users_group_name}" | |
14 | </%def> |
|
14 | </%def> | |
15 |
|
15 | |||
16 | <%def name="page_nav()"> |
|
16 | <%def name="page_nav()"> | |
17 | ${self.menu('admin')} |
|
17 | ${self.menu('admin')} | |
18 | </%def> |
|
18 | </%def> | |
19 |
|
19 | |||
20 | <%def name="main()"> |
|
20 | <%def name="main()"> | |
21 | <div class="box box-left"> |
|
21 | <div class="box box-left"> | |
22 | <!-- box / title --> |
|
22 | <!-- box / title --> | |
23 | <div class="title"> |
|
23 | <div class="title"> | |
24 | ${self.breadcrumbs()} |
|
24 | ${self.breadcrumbs()} | |
25 | </div> |
|
25 | </div> | |
26 | <!-- end box / title --> |
|
26 | <!-- end box / title --> | |
27 | ${h.form(url('users_group', id=c.users_group.users_group_id),method='put', id='edit_users_group')} |
|
27 | ${h.form(url('users_group', id=c.users_group.users_group_id),method='put', id='edit_users_group')} | |
28 | <div class="form"> |
|
28 | <div class="form"> | |
29 | <!-- fields --> |
|
29 | <!-- fields --> | |
30 | <div class="fields"> |
|
30 | <div class="fields"> | |
31 | <div class="field"> |
|
31 | <div class="field"> | |
32 | <div class="label"> |
|
32 | <div class="label"> | |
33 | <label for="users_group_name">${_('Group name')}:</label> |
|
33 | <label for="users_group_name">${_('Group name')}:</label> | |
34 | </div> |
|
34 | </div> | |
35 | <div class="input"> |
|
35 | <div class="input"> | |
36 | ${h.text('users_group_name',class_='small')} |
|
36 | ${h.text('users_group_name',class_='small')} | |
37 | </div> |
|
37 | </div> | |
38 | </div> |
|
38 | </div> | |
39 |
|
39 | |||
40 | <div class="field"> |
|
40 | <div class="field"> | |
41 | <div class="label label-checkbox"> |
|
41 | <div class="label label-checkbox"> | |
42 | <label for="users_group_active">${_('Active')}:</label> |
|
42 | <label for="users_group_active">${_('Active')}:</label> | |
43 | </div> |
|
43 | </div> | |
44 | <div class="checkboxes"> |
|
44 | <div class="checkboxes"> | |
45 | ${h.checkbox('users_group_active',value=True)} |
|
45 | ${h.checkbox('users_group_active',value=True)} | |
46 | </div> |
|
46 | </div> | |
47 | </div> |
|
47 | </div> | |
48 | <div class="field"> |
|
48 | <div class="field"> | |
49 | <div class="label"> |
|
49 | <div class="label"> | |
50 | <label for="users_group_active">${_('Members')}:</label> |
|
50 | <label for="users_group_active">${_('Members')}:</label> | |
51 | </div> |
|
51 | </div> | |
52 | <div class="select"> |
|
52 | <div class="select"> | |
53 | <table> |
|
53 | <table> | |
54 | <tr> |
|
54 | <tr> | |
55 | <td> |
|
55 | <td> | |
56 | <div> |
|
56 | <div> | |
57 | <div style="float:left"> |
|
57 | <div style="float:left"> | |
58 | <div class="text" style="padding: 0px 0px 6px;">${_('Choosen group members')}</div> |
|
58 | <div class="text" style="padding: 0px 0px 6px;">${_('Choosen group members')}</div> | |
59 | ${h.select('users_group_members',[x[0] for x in c.group_members],c.group_members,multiple=True,size=8,style="min-width:210px")} |
|
59 | ${h.select('users_group_members',[x[0] for x in c.group_members],c.group_members,multiple=True,size=8,style="min-width:210px")} | |
60 | <div id="remove_all_elements" style="cursor:pointer;text-align:center"> |
|
60 | <div id="remove_all_elements" style="cursor:pointer;text-align:center"> | |
61 | ${_('Remove all elements')} |
|
61 | ${_('Remove all elements')} | |
62 |
<img alt="remove" style="vertical-align:text-bottom" src="${h.url( |
|
62 | <img alt="remove" style="vertical-align:text-bottom" src="${h.url('/images/icons/arrow_right.png')}"/> | |
63 | </div> |
|
63 | </div> | |
64 | </div> |
|
64 | </div> | |
65 | <div style="float:left;width:20px;padding-top:50px"> |
|
65 | <div style="float:left;width:20px;padding-top:50px"> | |
66 | <img alt="add" id="add_element" |
|
66 | <img alt="add" id="add_element" | |
67 | style="padding:2px;cursor:pointer" |
|
67 | style="padding:2px;cursor:pointer" | |
68 |
src="${h.url( |
|
68 | src="${h.url('/images/icons/arrow_left.png')}"/> | |
69 | <br /> |
|
69 | <br /> | |
70 | <img alt="remove" id="remove_element" |
|
70 | <img alt="remove" id="remove_element" | |
71 | style="padding:2px;cursor:pointer" |
|
71 | style="padding:2px;cursor:pointer" | |
72 |
src="${h.url( |
|
72 | src="${h.url('/images/icons/arrow_right.png')}"/> | |
73 | </div> |
|
73 | </div> | |
74 | <div style="float:left"> |
|
74 | <div style="float:left"> | |
75 | <div class="text" style="padding: 0px 0px 6px;">${_('Available members')}</div> |
|
75 | <div class="text" style="padding: 0px 0px 6px;">${_('Available members')}</div> | |
76 | ${h.select('available_members',[],c.available_members,multiple=True,size=8,style="min-width:210px")} |
|
76 | ${h.select('available_members',[],c.available_members,multiple=True,size=8,style="min-width:210px")} | |
77 | <div id="add_all_elements" style="cursor:pointer;text-align:center"> |
|
77 | <div id="add_all_elements" style="cursor:pointer;text-align:center"> | |
78 |
<img alt="add" style="vertical-align:text-bottom" src="${h.url( |
|
78 | <img alt="add" style="vertical-align:text-bottom" src="${h.url('/images/icons/arrow_left.png')}"/> | |
79 | ${_('Add all elements')} |
|
79 | ${_('Add all elements')} | |
80 | </div> |
|
80 | </div> | |
81 | </div> |
|
81 | </div> | |
82 | </div> |
|
82 | </div> | |
83 | </td> |
|
83 | </td> | |
84 | </tr> |
|
84 | </tr> | |
85 | </table> |
|
85 | </table> | |
86 | </div> |
|
86 | </div> | |
87 |
|
87 | |||
88 | </div> |
|
88 | </div> | |
89 | <div class="buttons"> |
|
89 | <div class="buttons"> | |
90 | ${h.submit('save',_('save'),class_="ui-button")} |
|
90 | ${h.submit('save',_('save'),class_="ui-button")} | |
91 | </div> |
|
91 | </div> | |
92 | </div> |
|
92 | </div> | |
93 | </div> |
|
93 | </div> | |
94 | ${h.end_form()} |
|
94 | ${h.end_form()} | |
95 | </div> |
|
95 | </div> | |
96 |
|
96 | |||
97 | <script type="text/javascript"> |
|
97 | <script type="text/javascript"> | |
98 | YAHOO.util.Event.onDOMReady(function(){ |
|
98 | YAHOO.util.Event.onDOMReady(function(){ | |
99 | var D = YAHOO.util.Dom; |
|
99 | var D = YAHOO.util.Dom; | |
100 | var E = YAHOO.util.Event; |
|
100 | var E = YAHOO.util.Event; | |
101 |
|
101 | |||
102 | //definition of containers ID's |
|
102 | //definition of containers ID's | |
103 | var available_container = 'available_members'; |
|
103 | var available_container = 'available_members'; | |
104 | var selected_container = 'users_group_members'; |
|
104 | var selected_container = 'users_group_members'; | |
105 |
|
105 | |||
106 | //form containing containers id |
|
106 | //form containing containers id | |
107 | var form_id = 'edit_users_group'; |
|
107 | var form_id = 'edit_users_group'; | |
108 |
|
108 | |||
109 | //temp container for selected storage. |
|
109 | //temp container for selected storage. | |
110 | var cache = new Array(); |
|
110 | var cache = new Array(); | |
111 | var av_cache = new Array(); |
|
111 | var av_cache = new Array(); | |
112 | var c = D.get(selected_container); |
|
112 | var c = D.get(selected_container); | |
113 | var ac = D.get(available_container); |
|
113 | var ac = D.get(available_container); | |
114 |
|
114 | |||
115 | //get only selected options for further fullfilment |
|
115 | //get only selected options for further fullfilment | |
116 | for(var i = 0;node =c.options[i];i++){ |
|
116 | for(var i = 0;node =c.options[i];i++){ | |
117 | if(node.selected){ |
|
117 | if(node.selected){ | |
118 | //push selected to my temp storage left overs :) |
|
118 | //push selected to my temp storage left overs :) | |
119 | cache.push(node); |
|
119 | cache.push(node); | |
120 | } |
|
120 | } | |
121 | } |
|
121 | } | |
122 |
|
122 | |||
123 | //clear 'selected' select |
|
123 | //clear 'selected' select | |
124 | //c.options.length = 0; |
|
124 | //c.options.length = 0; | |
125 |
|
125 | |||
126 | //fill it with remembered options |
|
126 | //fill it with remembered options | |
127 | //for(var i = 0;node = cache[i];i++){ |
|
127 | //for(var i = 0;node = cache[i];i++){ | |
128 | // c.options[i]=new Option(node.text, node.value, false, false); |
|
128 | // c.options[i]=new Option(node.text, node.value, false, false); | |
129 | //} |
|
129 | //} | |
130 |
|
130 | |||
131 |
|
131 | |||
132 | //get all available options to cache |
|
132 | //get all available options to cache | |
133 | for(var i = 0;node =ac.options[i];i++){ |
|
133 | for(var i = 0;node =ac.options[i];i++){ | |
134 | //push selected to my temp storage left overs :) |
|
134 | //push selected to my temp storage left overs :) | |
135 | av_cache.push(node); |
|
135 | av_cache.push(node); | |
136 | } |
|
136 | } | |
137 |
|
137 | |||
138 | //fill available only with those not in choosen |
|
138 | //fill available only with those not in choosen | |
139 | ac.options.length=0; |
|
139 | ac.options.length=0; | |
140 | tmp_cache = new Array(); |
|
140 | tmp_cache = new Array(); | |
141 |
|
141 | |||
142 | for(var i = 0;node = av_cache[i];i++){ |
|
142 | for(var i = 0;node = av_cache[i];i++){ | |
143 | var add = true; |
|
143 | var add = true; | |
144 | for(var i2 = 0;node_2 = cache[i2];i2++){ |
|
144 | for(var i2 = 0;node_2 = cache[i2];i2++){ | |
145 | if(node.value == node_2.value){ |
|
145 | if(node.value == node_2.value){ | |
146 | add=false; |
|
146 | add=false; | |
147 | break; |
|
147 | break; | |
148 | } |
|
148 | } | |
149 | } |
|
149 | } | |
150 | if(add){ |
|
150 | if(add){ | |
151 | tmp_cache.push(new Option(node.text, node.value, false, false)); |
|
151 | tmp_cache.push(new Option(node.text, node.value, false, false)); | |
152 | } |
|
152 | } | |
153 | } |
|
153 | } | |
154 |
|
154 | |||
155 | for(var i = 0;node = tmp_cache[i];i++){ |
|
155 | for(var i = 0;node = tmp_cache[i];i++){ | |
156 | ac.options[i] = node; |
|
156 | ac.options[i] = node; | |
157 | } |
|
157 | } | |
158 |
|
158 | |||
159 | function prompts_action_callback(e){ |
|
159 | function prompts_action_callback(e){ | |
160 |
|
160 | |||
161 | var choosen = D.get(selected_container); |
|
161 | var choosen = D.get(selected_container); | |
162 | var available = D.get(available_container); |
|
162 | var available = D.get(available_container); | |
163 |
|
163 | |||
164 | //get checked and unchecked options from field |
|
164 | //get checked and unchecked options from field | |
165 | function get_checked(from_field){ |
|
165 | function get_checked(from_field){ | |
166 | //temp container for storage. |
|
166 | //temp container for storage. | |
167 | var sel_cache = new Array(); |
|
167 | var sel_cache = new Array(); | |
168 | var oth_cache = new Array(); |
|
168 | var oth_cache = new Array(); | |
169 |
|
169 | |||
170 | for(var i = 0;node = from_field.options[i];i++){ |
|
170 | for(var i = 0;node = from_field.options[i];i++){ | |
171 | if(node.selected){ |
|
171 | if(node.selected){ | |
172 | //push selected fields :) |
|
172 | //push selected fields :) | |
173 | sel_cache.push(node); |
|
173 | sel_cache.push(node); | |
174 | } |
|
174 | } | |
175 | else{ |
|
175 | else{ | |
176 | oth_cache.push(node) |
|
176 | oth_cache.push(node) | |
177 | } |
|
177 | } | |
178 | } |
|
178 | } | |
179 |
|
179 | |||
180 | return [sel_cache,oth_cache] |
|
180 | return [sel_cache,oth_cache] | |
181 | } |
|
181 | } | |
182 |
|
182 | |||
183 | //fill the field with given options |
|
183 | //fill the field with given options | |
184 | function fill_with(field,options){ |
|
184 | function fill_with(field,options){ | |
185 | //clear firtst |
|
185 | //clear firtst | |
186 | field.options.length=0; |
|
186 | field.options.length=0; | |
187 | for(var i = 0;node = options[i];i++){ |
|
187 | for(var i = 0;node = options[i];i++){ | |
188 | field.options[i]=new Option(node.text, node.value, |
|
188 | field.options[i]=new Option(node.text, node.value, | |
189 | false, false); |
|
189 | false, false); | |
190 | } |
|
190 | } | |
191 |
|
191 | |||
192 | } |
|
192 | } | |
193 | //adds to current field |
|
193 | //adds to current field | |
194 | function add_to(field,options){ |
|
194 | function add_to(field,options){ | |
195 | for(var i = 0;node = options[i];i++){ |
|
195 | for(var i = 0;node = options[i];i++){ | |
196 | field.appendChild(new Option(node.text, node.value, |
|
196 | field.appendChild(new Option(node.text, node.value, | |
197 | false, false)); |
|
197 | false, false)); | |
198 | } |
|
198 | } | |
199 | } |
|
199 | } | |
200 |
|
200 | |||
201 | // add action |
|
201 | // add action | |
202 | if (this.id=='add_element'){ |
|
202 | if (this.id=='add_element'){ | |
203 | var c = get_checked(available); |
|
203 | var c = get_checked(available); | |
204 | add_to(choosen,c[0]); |
|
204 | add_to(choosen,c[0]); | |
205 | fill_with(available,c[1]); |
|
205 | fill_with(available,c[1]); | |
206 | } |
|
206 | } | |
207 | // remove action |
|
207 | // remove action | |
208 | if (this.id=='remove_element'){ |
|
208 | if (this.id=='remove_element'){ | |
209 | var c = get_checked(choosen); |
|
209 | var c = get_checked(choosen); | |
210 | add_to(available,c[0]); |
|
210 | add_to(available,c[0]); | |
211 | fill_with(choosen,c[1]); |
|
211 | fill_with(choosen,c[1]); | |
212 | } |
|
212 | } | |
213 | // add all elements |
|
213 | // add all elements | |
214 | if(this.id=='add_all_elements'){ |
|
214 | if(this.id=='add_all_elements'){ | |
215 | for(var i=0; node = available.options[i];i++){ |
|
215 | for(var i=0; node = available.options[i];i++){ | |
216 | choosen.appendChild(new Option(node.text, |
|
216 | choosen.appendChild(new Option(node.text, | |
217 | node.value, false, false)); |
|
217 | node.value, false, false)); | |
218 | } |
|
218 | } | |
219 | available.options.length = 0; |
|
219 | available.options.length = 0; | |
220 | } |
|
220 | } | |
221 | //remove all elements |
|
221 | //remove all elements | |
222 | if(this.id=='remove_all_elements'){ |
|
222 | if(this.id=='remove_all_elements'){ | |
223 | for(var i=0; node = choosen.options[i];i++){ |
|
223 | for(var i=0; node = choosen.options[i];i++){ | |
224 | available.appendChild(new Option(node.text, |
|
224 | available.appendChild(new Option(node.text, | |
225 | node.value, false, false)); |
|
225 | node.value, false, false)); | |
226 | } |
|
226 | } | |
227 | choosen.options.length = 0; |
|
227 | choosen.options.length = 0; | |
228 | } |
|
228 | } | |
229 |
|
229 | |||
230 | } |
|
230 | } | |
231 |
|
231 | |||
232 |
|
232 | |||
233 | E.addListener(['add_element','remove_element', |
|
233 | E.addListener(['add_element','remove_element', | |
234 | 'add_all_elements','remove_all_elements'],'click', |
|
234 | 'add_all_elements','remove_all_elements'],'click', | |
235 | prompts_action_callback) |
|
235 | prompts_action_callback) | |
236 |
|
236 | |||
237 | E.addListener(form_id,'submit',function(){ |
|
237 | E.addListener(form_id,'submit',function(){ | |
238 | var choosen = D.get(selected_container); |
|
238 | var choosen = D.get(selected_container); | |
239 | for (var i = 0; i < choosen.options.length; i++) { |
|
239 | for (var i = 0; i < choosen.options.length; i++) { | |
240 | choosen.options[i].selected = 'selected'; |
|
240 | choosen.options[i].selected = 'selected'; | |
241 | } |
|
241 | } | |
242 | }) |
|
242 | }) | |
243 | }); |
|
243 | }); | |
244 | </script> |
|
244 | </script> | |
245 | <div class="box box-right"> |
|
245 | <div class="box box-right"> | |
246 | <!-- box / title --> |
|
246 | <!-- box / title --> | |
247 | <div class="title"> |
|
247 | <div class="title"> | |
248 | <h5>${_('Permissions')}</h5> |
|
248 | <h5>${_('Permissions')}</h5> | |
249 | </div> |
|
249 | </div> | |
250 | ${h.form(url('users_group_perm', id=c.users_group.users_group_id), method='put')} |
|
250 | ${h.form(url('users_group_perm', id=c.users_group.users_group_id), method='put')} | |
251 | <div class="form"> |
|
251 | <div class="form"> | |
252 | <!-- fields --> |
|
252 | <!-- fields --> | |
253 | <div class="fields"> |
|
253 | <div class="fields"> | |
254 | <div class="field"> |
|
254 | <div class="field"> | |
255 | <div class="label label-checkbox"> |
|
255 | <div class="label label-checkbox"> | |
256 | <label for="create_repo_perm">${_('Create repositories')}:</label> |
|
256 | <label for="create_repo_perm">${_('Create repositories')}:</label> | |
257 | </div> |
|
257 | </div> | |
258 | <div class="checkboxes"> |
|
258 | <div class="checkboxes"> | |
259 | ${h.checkbox('create_repo_perm',value=True)} |
|
259 | ${h.checkbox('create_repo_perm',value=True)} | |
260 | </div> |
|
260 | </div> | |
261 | </div> |
|
261 | </div> | |
262 | <div class="buttons"> |
|
262 | <div class="buttons"> | |
263 | ${h.submit('save',_('Save'),class_="ui-button")} |
|
263 | ${h.submit('save',_('Save'),class_="ui-button")} | |
264 | ${h.reset('reset',_('Reset'),class_="ui-button")} |
|
264 | ${h.reset('reset',_('Reset'),class_="ui-button")} | |
265 | </div> |
|
265 | </div> | |
266 | </div> |
|
266 | </div> | |
267 | </div> |
|
267 | </div> | |
268 | ${h.end_form()} |
|
268 | ${h.end_form()} | |
269 | </div> |
|
269 | </div> | |
270 | </%def> |
|
270 | </%def> |
@@ -1,257 +1,257 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 |
|
2 | |||
3 | <%inherit file="/base/base.html"/> |
|
3 | <%inherit file="/base/base.html"/> | |
4 |
|
4 | |||
5 | <%def name="title()"> |
|
5 | <%def name="title()"> | |
6 | ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name} |
|
6 | ${c.repo_name} ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} - ${c.rhodecode_name} | |
7 | </%def> |
|
7 | </%def> | |
8 |
|
8 | |||
9 | <%def name="breadcrumbs_links()"> |
|
9 | <%def name="breadcrumbs_links()"> | |
10 | ${h.link_to(u'Home',h.url('/'))} |
|
10 | ${h.link_to(u'Home',h.url('/'))} | |
11 | » |
|
11 | » | |
12 | ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))} |
|
12 | ${h.link_to(c.repo_name,h.url('summary_home',repo_name=c.repo_name))} | |
13 | » |
|
13 | » | |
14 | ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} |
|
14 | ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} | |
15 | </%def> |
|
15 | </%def> | |
16 |
|
16 | |||
17 | <%def name="page_nav()"> |
|
17 | <%def name="page_nav()"> | |
18 | ${self.menu('changelog')} |
|
18 | ${self.menu('changelog')} | |
19 | </%def> |
|
19 | </%def> | |
20 |
|
20 | |||
21 | <%def name="fid(raw_id,path)" filter="strip"> |
|
21 | <%def name="fid(raw_id,path)" filter="strip"> | |
22 | <% |
|
22 | <% | |
23 | return 'C-%s-%s' % (h.short_id(raw_id),h.safeid(h.safe_unicode(path))) |
|
23 | return 'C-%s-%s' % (h.short_id(raw_id),h.safeid(h.safe_unicode(path))) | |
24 | %> |
|
24 | %> | |
25 | </%def> |
|
25 | </%def> | |
26 |
|
26 | |||
27 | <%def name="main()"> |
|
27 | <%def name="main()"> | |
28 | <div class="box"> |
|
28 | <div class="box"> | |
29 | <!-- box / title --> |
|
29 | <!-- box / title --> | |
30 | <div class="title"> |
|
30 | <div class="title"> | |
31 | ${self.breadcrumbs()} |
|
31 | ${self.breadcrumbs()} | |
32 | </div> |
|
32 | </div> | |
33 | <div class="table"> |
|
33 | <div class="table"> | |
34 | <div class="diffblock"> |
|
34 | <div class="diffblock"> | |
35 | <div class="code-header"> |
|
35 | <div class="code-header"> | |
36 | <div> |
|
36 | <div> | |
37 | ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} |
|
37 | ${_('Changeset')} - r${c.changeset.revision}:${h.short_id(c.changeset.raw_id)} | |
38 | » <span>${h.link_to(_('raw diff'), |
|
38 | » <span>${h.link_to(_('raw diff'), | |
39 | h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show'))}</span> |
|
39 | h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='show'))}</span> | |
40 | » <span>${h.link_to(_('download diff'), |
|
40 | » <span>${h.link_to(_('download diff'), | |
41 | h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download'))}</span> |
|
41 | h.url('raw_changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id,diff='download'))}</span> | |
42 | </div> |
|
42 | </div> | |
43 | </div> |
|
43 | </div> | |
44 | </div> |
|
44 | </div> | |
45 | <div id="changeset_content"> |
|
45 | <div id="changeset_content"> | |
46 | <div class="container"> |
|
46 | <div class="container"> | |
47 | <div class="left"> |
|
47 | <div class="left"> | |
48 | <div class="date">${_('commit')} ${c.changeset.revision}: ${h.short_id(c.changeset.raw_id)}@${c.changeset.date}</div> |
|
48 | <div class="date">${_('commit')} ${c.changeset.revision}: ${h.short_id(c.changeset.raw_id)}@${c.changeset.date}</div> | |
49 | <div class="author"> |
|
49 | <div class="author"> | |
50 | <div class="gravatar"> |
|
50 | <div class="gravatar"> | |
51 | <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/> |
|
51 | <img alt="gravatar" src="${h.gravatar_url(h.email(c.changeset.author),20)}"/> | |
52 | </div> |
|
52 | </div> | |
53 | <span>${h.person(c.changeset.author)}</span><br/> |
|
53 | <span>${h.person(c.changeset.author)}</span><br/> | |
54 | <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/> |
|
54 | <span><a href="mailto:${h.email_or_none(c.changeset.author)}">${h.email_or_none(c.changeset.author)}</a></span><br/> | |
55 | </div> |
|
55 | </div> | |
56 | <div class="message">${h.link_to(h.wrap_paragraphs(c.changeset.message),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</div> |
|
56 | <div class="message">${h.link_to(h.wrap_paragraphs(c.changeset.message),h.url('changeset_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</div> | |
57 | </div> |
|
57 | </div> | |
58 | <div class="right"> |
|
58 | <div class="right"> | |
59 | <div class="changes"> |
|
59 | <div class="changes"> | |
60 | % if len(c.changeset.affected_files) <= c.affected_files_cut_off: |
|
60 | % if len(c.changeset.affected_files) <= c.affected_files_cut_off: | |
61 | <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span> |
|
61 | <span class="removed" title="${_('removed')}">${len(c.changeset.removed)}</span> | |
62 | <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span> |
|
62 | <span class="changed" title="${_('changed')}">${len(c.changeset.changed)}</span> | |
63 | <span class="added" title="${_('added')}">${len(c.changeset.added)}</span> |
|
63 | <span class="added" title="${_('added')}">${len(c.changeset.added)}</span> | |
64 | % else: |
|
64 | % else: | |
65 | <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> |
|
65 | <span class="removed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> | |
66 | <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> |
|
66 | <span class="changed" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> | |
67 | <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> |
|
67 | <span class="added" title="${_('affected %s files') % len(c.changeset.affected_files)}">!</span> | |
68 | % endif |
|
68 | % endif | |
69 | </div> |
|
69 | </div> | |
70 | %if len(c.changeset.parents)>1: |
|
70 | %if len(c.changeset.parents)>1: | |
71 | <div class="merge"> |
|
71 | <div class="merge"> | |
72 | ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/> |
|
72 | ${_('merge')}<img alt="merge" src="${h.url('/images/icons/arrow_join.png')}"/> | |
73 | </div> |
|
73 | </div> | |
74 | %endif |
|
74 | %endif | |
75 |
|
75 | |||
76 | %if c.changeset.parents: |
|
76 | %if c.changeset.parents: | |
77 | %for p_cs in reversed(c.changeset.parents): |
|
77 | %for p_cs in reversed(c.changeset.parents): | |
78 | <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id), |
|
78 | <div class="parent">${_('Parent')} ${p_cs.revision}: ${h.link_to(h.short_id(p_cs.raw_id), | |
79 | h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)} |
|
79 | h.url('changeset_home',repo_name=c.repo_name,revision=p_cs.raw_id),title=p_cs.message)} | |
80 | </div> |
|
80 | </div> | |
81 | %endfor |
|
81 | %endfor | |
82 | %else: |
|
82 | %else: | |
83 | <div class="parent">${_('No parents')}</div> |
|
83 | <div class="parent">${_('No parents')}</div> | |
84 | %endif |
|
84 | %endif | |
85 | <span class="logtags"> |
|
85 | <span class="logtags"> | |
86 | <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}"> |
|
86 | <span class="branchtag" title="${'%s %s' % (_('branch'),c.changeset.branch)}"> | |
87 | ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> |
|
87 | ${h.link_to(c.changeset.branch,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> | |
88 | %for tag in c.changeset.tags: |
|
88 | %for tag in c.changeset.tags: | |
89 | <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}"> |
|
89 | <span class="tagtag" title="${'%s %s' % (_('tag'),tag)}"> | |
90 | ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> |
|
90 | ${h.link_to(tag,h.url('files_home',repo_name=c.repo_name,revision=c.changeset.raw_id))}</span> | |
91 | %endfor |
|
91 | %endfor | |
92 | </span> |
|
92 | </span> | |
93 | </div> |
|
93 | </div> | |
94 | </div> |
|
94 | </div> | |
95 | <span style="font-size:1.1em;font-weight: bold"> |
|
95 | <span style="font-size:1.1em;font-weight: bold"> | |
96 | ${_('%s files affected with %s additions and %s deletions.') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)} |
|
96 | ${_('%s files affected with %s additions and %s deletions.') % (len(c.changeset.affected_files),c.lines_added,c.lines_deleted)} | |
97 | </span> |
|
97 | </span> | |
98 | <div class="cs_files"> |
|
98 | <div class="cs_files"> | |
99 | %for change,filenode,diff,cs1,cs2,stat in c.changes: |
|
99 | %for change,filenode,diff,cs1,cs2,stat in c.changes: | |
100 | <div class="cs_${change}"> |
|
100 | <div class="cs_${change}"> | |
101 | <div class="node"> |
|
101 | <div class="node"> | |
102 | %if change != 'removed': |
|
102 | %if change != 'removed': | |
103 | ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=self.fid(filenode.changeset.raw_id,filenode.path)))} |
|
103 | ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=self.fid(filenode.changeset.raw_id,filenode.path)))} | |
104 | %else: |
|
104 | %else: | |
105 | ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=self.fid('',filenode.path)))} |
|
105 | ${h.link_to(h.safe_unicode(filenode.path),h.url.current(anchor=self.fid('',filenode.path)))} | |
106 | %endif |
|
106 | %endif | |
107 | </div> |
|
107 | </div> | |
108 | <div class="changes">${h.fancy_file_stats(stat)}</div> |
|
108 | <div class="changes">${h.fancy_file_stats(stat)}</div> | |
109 | </div> |
|
109 | </div> | |
110 | %endfor |
|
110 | %endfor | |
111 | % if c.cut_off: |
|
111 | % if c.cut_off: | |
112 | ${_('Changeset was too big and was cut off...')} |
|
112 | ${_('Changeset was too big and was cut off...')} | |
113 | % endif |
|
113 | % endif | |
114 | </div> |
|
114 | </div> | |
115 | </div> |
|
115 | </div> | |
116 |
|
116 | |||
117 | </div> |
|
117 | </div> | |
118 |
|
118 | |||
119 | %for change,filenode,diff,cs1,cs2,stat in c.changes: |
|
119 | %for change,filenode,diff,cs1,cs2,stat in c.changes: | |
120 | %if change !='removed': |
|
120 | %if change !='removed': | |
121 | <div style="clear:both;height:10px"></div> |
|
121 | <div style="clear:both;height:10px"></div> | |
122 | <div class="diffblock margined" id="${self.fid(filenode.changeset.raw_id,filenode.path)}"> |
|
122 | <div class="diffblock margined comm" id="${self.fid(filenode.changeset.raw_id,filenode.path)}"> | |
123 | <div class="code-header"> |
|
123 | <div class="code-header"> | |
124 | <div class="changeset_header"> |
|
124 | <div class="changeset_header"> | |
125 | <span class="changeset_file"> |
|
125 | <span class="changeset_file"> | |
126 | ${h.link_to_if(change!='removed',h.safe_unicode(filenode.path),h.url('files_home',repo_name=c.repo_name, |
|
126 | ${h.link_to_if(change!='removed',h.safe_unicode(filenode.path),h.url('files_home',repo_name=c.repo_name, | |
127 | revision=filenode.changeset.raw_id,f_path=h.safe_unicode(filenode.path)))} |
|
127 | revision=filenode.changeset.raw_id,f_path=h.safe_unicode(filenode.path)))} | |
128 | </span> |
|
128 | </span> | |
129 | » <span>${h.link_to(_('diff'), |
|
129 | » <span>${h.link_to(_('diff'), | |
130 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff'))}</span> |
|
130 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='diff'))}</span> | |
131 | » <span>${h.link_to(_('raw diff'), |
|
131 | » <span>${h.link_to(_('raw diff'), | |
132 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw'))}</span> |
|
132 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='raw'))}</span> | |
133 | » <span>${h.link_to(_('download diff'), |
|
133 | » <span>${h.link_to(_('download diff'), | |
134 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download'))}</span> |
|
134 | h.url('files_diff_home',repo_name=c.repo_name,f_path=h.safe_unicode(filenode.path),diff2=cs2,diff1=cs1,diff='download'))}</span> | |
135 | <span style="float:right"> |
|
135 | <span style="float:right"> | |
136 | <label> |
|
136 | <label> | |
137 | ${_('show inline comments')} |
|
137 | ${_('show inline comments')} | |
138 | ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=self.fid(filenode.changeset.raw_id,filenode.path))} |
|
138 | ${h.checkbox('',checked="checked",class_="show-inline-comments",id_for=self.fid(filenode.changeset.raw_id,filenode.path))} | |
139 | </label> |
|
139 | </label> | |
140 | </span> |
|
140 | </span> | |
141 | </div> |
|
141 | </div> | |
142 | </div> |
|
142 | </div> | |
143 | <div class="code-body"> |
|
143 | <div class="code-body"> | |
144 | <div class="full_f_path" path="${filenode.path}"></div> |
|
144 | <div class="full_f_path" path="${filenode.path}"></div> | |
145 | %if diff: |
|
145 | %if diff: | |
146 | ${diff|n} |
|
146 | ${diff|n} | |
147 | %else: |
|
147 | %else: | |
148 | ${_('No changes in this file')} |
|
148 | ${_('No changes in this file')} | |
149 | %endif |
|
149 | %endif | |
150 | </div> |
|
150 | </div> | |
151 | </div> |
|
151 | </div> | |
152 | %endif |
|
152 | %endif | |
153 | %endfor |
|
153 | %endfor | |
154 |
|
154 | |||
155 | <%namespace name="comment" file="/changeset/changeset_file_comment.html"/> |
|
155 | <%namespace name="comment" file="/changeset/changeset_file_comment.html"/> | |
156 | ## template for inline comment form |
|
156 | ## template for inline comment form | |
157 | ${comment.comment_inline_form()} |
|
157 | ${comment.comment_inline_form()} | |
158 |
|
158 | |||
159 | <div class="comments"> |
|
159 | <div class="comments"> | |
160 | <div class="comments-number">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div> |
|
160 | <div class="comments-number">${len(c.comments)} comment(s) (${c.inline_cnt} ${_('inline')})</div> | |
161 |
|
161 | |||
162 | %for path, lines in c.inline_comments: |
|
162 | %for path, lines in c.inline_comments: | |
163 | <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${self.fid(c.changeset.raw_id,path)}"> |
|
163 | <div style="display:none" class="inline-comment-placeholder" path="${path}" target_id="${self.fid(c.changeset.raw_id,path)}"> | |
164 | % for line,comments in lines.iteritems(): |
|
164 | % for line,comments in lines.iteritems(): | |
165 | <div class="inline-comment-placeholder-line" line="${line}" target_id="${h.safeid(h.safe_unicode(path))}"> |
|
165 | <div class="inline-comment-placeholder-line" line="${line}" target_id="${h.safeid(h.safe_unicode(path))}"> | |
166 | %for co in comments: |
|
166 | %for co in comments: | |
167 | ${comment.comment_block(co)} |
|
167 | ${comment.comment_block(co)} | |
168 | %endfor |
|
168 | %endfor | |
169 | </div> |
|
169 | </div> | |
170 | %endfor |
|
170 | %endfor | |
171 | </div> |
|
171 | </div> | |
172 | %endfor |
|
172 | %endfor | |
173 |
|
173 | |||
174 | %for co in c.comments: |
|
174 | %for co in c.comments: | |
175 | ${comment.comment_block(co)} |
|
175 | ${comment.comment_block(co)} | |
176 | %endfor |
|
176 | %endfor | |
177 | %if c.rhodecode_user.username != 'default': |
|
177 | %if c.rhodecode_user.username != 'default': | |
178 | <div class="comment-form"> |
|
178 | <div class="comment-form"> | |
179 | ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=c.changeset.raw_id))} |
|
179 | ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=c.changeset.raw_id))} | |
180 | <strong>${_('Leave a comment')}</strong> |
|
180 | <strong>${_('Leave a comment')}</strong> | |
181 | <div class="clearfix"> |
|
181 | <div class="clearfix"> | |
182 | <div class="comment-help"> |
|
182 | <div class="comment-help"> | |
183 | ${_('Comments parsed using')} <a href="${h.url('rst_help')}">RST</a> ${_('syntax')} |
|
183 | ${_('Comments parsed using')} <a href="${h.url('rst_help')}">RST</a> ${_('syntax')} | |
184 | </div> |
|
184 | </div> | |
185 | ${h.textarea('text')} |
|
185 | ${h.textarea('text')} | |
186 | </div> |
|
186 | </div> | |
187 | <div class="comment-button"> |
|
187 | <div class="comment-button"> | |
188 | ${h.submit('save', _('Comment'), class_='ui-button')} |
|
188 | ${h.submit('save', _('Comment'), class_='ui-button')} | |
189 | </div> |
|
189 | </div> | |
190 | ${h.end_form()} |
|
190 | ${h.end_form()} | |
191 | </div> |
|
191 | </div> | |
192 | %endif |
|
192 | %endif | |
193 | </div> |
|
193 | </div> | |
194 | <script type="text/javascript"> |
|
194 | <script type="text/javascript"> | |
195 | var deleteComment = function(comment_id){ |
|
195 | var deleteComment = function(comment_id){ | |
196 |
|
196 | |||
197 | var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id); |
|
197 | var url = "${url('changeset_comment_delete',repo_name=c.repo_name,comment_id='__COMMENT_ID__')}".replace('__COMMENT_ID__',comment_id); | |
198 | var postData = '_method=delete'; |
|
198 | var postData = '_method=delete'; | |
199 | var success = function(o){ |
|
199 | var success = function(o){ | |
200 | var n = YUD.get('comment-'+comment_id); |
|
200 | var n = YUD.get('comment-'+comment_id); | |
201 | n.parentNode.removeChild(n); |
|
201 | n.parentNode.removeChild(n); | |
202 | } |
|
202 | } | |
203 | ajaxPOST(url,postData,success); |
|
203 | ajaxPOST(url,postData,success); | |
204 | } |
|
204 | } | |
205 |
|
205 | |||
206 | YUE.onDOMReady(function(){ |
|
206 | YUE.onDOMReady(function(){ | |
207 |
|
207 | |||
208 | YUE.on(YUQ('.show-inline-comments'),'change',function(e){ |
|
208 | YUE.on(YUQ('.show-inline-comments'),'change',function(e){ | |
209 | var show = 'none'; |
|
209 | var show = 'none'; | |
210 | var target = e.currentTarget; |
|
210 | var target = e.currentTarget; | |
211 | if(target.checked){ |
|
211 | if(target.checked){ | |
212 | var show = '' |
|
212 | var show = '' | |
213 | } |
|
213 | } | |
214 | var boxid = YUD.getAttribute(target,'id_for'); |
|
214 | var boxid = YUD.getAttribute(target,'id_for'); | |
215 | var comments = YUQ('#{0} .inline-comments'.format(boxid)); |
|
215 | var comments = YUQ('#{0} .inline-comments'.format(boxid)); | |
216 | for(c in comments){ |
|
216 | for(c in comments){ | |
217 | YUD.setStyle(comments[c],'display',show); |
|
217 | YUD.setStyle(comments[c],'display',show); | |
218 | } |
|
218 | } | |
219 | }) |
|
219 | }) | |
220 |
|
220 | |||
221 |
|
221 | |||
222 |
|
222 | |||
223 | YUE.on(YUQ('.line'),'click',function(e){ |
|
223 | YUE.on(YUQ('.line'),'click',function(e){ | |
224 | var tr = e.currentTarget; |
|
224 | var tr = e.currentTarget; | |
225 | if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context')){ |
|
225 | if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context')){ | |
226 | return |
|
226 | return | |
227 | } |
|
227 | } | |
228 | YUD.addClass(tr,'form-open'); |
|
228 | YUD.addClass(tr,'form-open'); | |
229 | var node = tr.parentNode.parentNode.parentNode.getElementsByClassName('full_f_path')[0]; |
|
229 | var node = tr.parentNode.parentNode.parentNode.getElementsByClassName('full_f_path')[0]; | |
230 | var f_path = YUD.getAttribute(node,'path'); |
|
230 | var f_path = YUD.getAttribute(node,'path'); | |
231 | var lineno = getLineNo(tr); |
|
231 | var lineno = getLineNo(tr); | |
232 | var form = createInlineForm(tr, f_path, lineno); |
|
232 | var form = createInlineForm(tr, f_path, lineno); | |
233 | YUD.insertAfter(form,tr); |
|
233 | YUD.insertAfter(form,tr); | |
234 | }); |
|
234 | }); | |
235 |
|
235 | |||
236 | // inject comments into they proper positions |
|
236 | // inject comments into they proper positions | |
237 | var file_comments = YUQ('.inline-comment-placeholder'); |
|
237 | var file_comments = YUQ('.inline-comment-placeholder'); | |
238 |
|
238 | |||
239 | for (f in file_comments){ |
|
239 | for (f in file_comments){ | |
240 | var box = file_comments[f]; |
|
240 | var box = file_comments[f]; | |
241 | var inlines = box.children; |
|
241 | var inlines = box.children; | |
242 | for(var i=0; i<inlines.length; i++){ |
|
242 | for(var i=0; i<inlines.length; i++){ | |
243 | try{ |
|
243 | try{ | |
244 | var inline = inlines[i]; |
|
244 | var inline = inlines[i]; | |
245 | var lineno = YUD.getAttribute(inlines[i],'line'); |
|
245 | var lineno = YUD.getAttribute(inlines[i],'line'); | |
246 | var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno); |
|
246 | var lineid = "{0}_{1}".format(YUD.getAttribute(inline,'target_id'),lineno); | |
247 | var target_line = YUD.get(lineid); |
|
247 | var target_line = YUD.get(lineid); | |
248 | var comments = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML)) |
|
248 | var comments = new YAHOO.util.Element(tableTr('inline-comments',inline.innerHTML)) | |
249 | YUD.insertAfter(comments,target_line.parentNode); |
|
249 | YUD.insertAfter(comments,target_line.parentNode); | |
250 | }catch(e){} |
|
250 | }catch(e){} | |
251 | } |
|
251 | } | |
252 | } |
|
252 | } | |
253 | }) |
|
253 | }) | |
254 |
|
254 | |||
255 | </script> |
|
255 | </script> | |
256 | </div> |
|
256 | </div> | |
257 | </%def> |
|
257 | </%def> |
@@ -1,69 +1,69 b'' | |||||
1 | ## -*- coding: utf-8 -*- |
|
1 | ## -*- coding: utf-8 -*- | |
2 | <%inherit file="/base/base.html"/> |
|
2 | <%inherit file="/base/base.html"/> | |
3 | <%def name="title()"> |
|
3 | <%def name="title()"> | |
4 | ${_('Journal')} - ${c.rhodecode_name} |
|
4 | ${_('Journal')} - ${c.rhodecode_name} | |
5 | </%def> |
|
5 | </%def> | |
6 | <%def name="breadcrumbs()"> |
|
6 | <%def name="breadcrumbs()"> | |
7 | ${c.rhodecode_name} |
|
7 | ${c.rhodecode_name} | |
8 | </%def> |
|
8 | </%def> | |
9 | <%def name="page_nav()"> |
|
9 | <%def name="page_nav()"> | |
10 | ${self.menu('home')} |
|
10 | ${self.menu('home')} | |
11 | </%def> |
|
11 | </%def> | |
12 | <%def name="main()"> |
|
12 | <%def name="main()"> | |
13 |
|
13 | |||
14 | <div class="box box-left"> |
|
14 | <div class="box box-left"> | |
15 | <!-- box / title --> |
|
15 | <!-- box / title --> | |
16 | <div class="title"> |
|
16 | <div class="title"> | |
17 | <h5>${_('Journal')}</h5> |
|
17 | <h5>${_('Journal')}</h5> | |
18 | </div> |
|
18 | </div> | |
19 | <script type="text/javascript"> |
|
19 | <script type="text/javascript"> | |
20 | function show_more_event(){ |
|
20 | function show_more_event(){ | |
21 | YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){ |
|
21 | YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){ | |
22 | var el = e.target; |
|
22 | var el = e.target; | |
23 | YUD.setStyle(YUD.get(el.id.substring(1)),'display',''); |
|
23 | YUD.setStyle(YUD.get(el.id.substring(1)),'display',''); | |
24 | YUD.setStyle(el.parentNode,'display','none'); |
|
24 | YUD.setStyle(el.parentNode,'display','none'); | |
25 | }); |
|
25 | }); | |
26 | } |
|
26 | } | |
27 | </script> |
|
27 | </script> | |
28 | <div id="journal">${c.journal_data}</div> |
|
28 | <div id="journal">${c.journal_data}</div> | |
29 | </div> |
|
29 | </div> | |
30 |
|
30 | |||
31 | <div class="box box-right"> |
|
31 | <div class="box box-right"> | |
32 | <!-- box / title --> |
|
32 | <!-- box / title --> | |
33 | <div class="title"> |
|
33 | <div class="title"> | |
34 | <h5>${_('Following')}</h5> |
|
34 | <h5>${_('Following')}</h5> | |
35 | </div> |
|
35 | </div> | |
36 | <div> |
|
36 | <div> | |
37 | %if c.following: |
|
37 | %if c.following: | |
38 | %for entry in c.following: |
|
38 | %for entry in c.following: | |
39 | <div class="currently_following"> |
|
39 | <div class="currently_following"> | |
40 | %if entry.follows_user_id: |
|
40 | %if entry.follows_user_id: | |
41 |
<img title="${_('following user')}" alt="${_('user')}" src="${h.url( |
|
41 | <img title="${_('following user')}" alt="${_('user')}" src="${h.url('/images/icons/user.png')}"/> | |
42 | ${entry.follows_user.full_contact} |
|
42 | ${entry.follows_user.full_contact} | |
43 | %endif |
|
43 | %endif | |
44 |
|
44 | |||
45 | %if entry.follows_repo_id: |
|
45 | %if entry.follows_repo_id: | |
46 |
|
46 | |||
47 | <div style="float:left;padding-right:5px"> |
|
47 | <div style="float:left;padding-right:5px"> | |
48 | <span id="follow_toggle_${entry.follows_repository.repo_id}" class="following" title="${_('Stop following this repository')}" |
|
48 | <span id="follow_toggle_${entry.follows_repository.repo_id}" class="following" title="${_('Stop following this repository')}" | |
49 | onclick="javascript:toggleFollowingRepo(this,${entry.follows_repository.repo_id},'${str(h.get_token())}')"> |
|
49 | onclick="javascript:toggleFollowingRepo(this,${entry.follows_repository.repo_id},'${str(h.get_token())}')"> | |
50 | </span> |
|
50 | </span> | |
51 | </div> |
|
51 | </div> | |
52 | %if entry.follows_repository.private: |
|
52 | %if entry.follows_repository.private: | |
53 |
<img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url( |
|
53 | <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="${h.url('/images/icons/lock.png')}"/> | |
54 | %else: |
|
54 | %else: | |
55 |
<img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url( |
|
55 | <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="${h.url('/images/icons/lock_open.png')}"/> | |
56 | %endif |
|
56 | %endif | |
57 |
|
57 | |||
58 | ${h.link_to(entry.follows_repository.repo_name,h.url('summary_home', |
|
58 | ${h.link_to(entry.follows_repository.repo_name,h.url('summary_home', | |
59 | repo_name=entry.follows_repository.repo_name))} |
|
59 | repo_name=entry.follows_repository.repo_name))} | |
60 |
|
60 | |||
61 | %endif |
|
61 | %endif | |
62 | </div> |
|
62 | </div> | |
63 | %endfor |
|
63 | %endfor | |
64 | %else: |
|
64 | %else: | |
65 | ${_('You are not following any users or repositories')} |
|
65 | ${_('You are not following any users or repositories')} | |
66 | %endif |
|
66 | %endif | |
67 | </div> |
|
67 | </div> | |
68 | </div> |
|
68 | </div> | |
69 | </%def> |
|
69 | </%def> |
General Comments 0
You need to be logged in to leave comments.
Login now