##// END OF EJS Templates
don't show empty permissions on my account page
marcink -
r2131:d683d8bc beta
parent child Browse files
Show More
@@ -1,304 +1,313 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 <a id="show_my" class="link-white" href="#my">${_('My repos')}</a> / <a id="show_perms" class="link-white" href="#perms">${_('My permissions')}</a>
116 <a id="show_my" class="link-white" href="#my">${_('My repos')}</a> / <a id="show_perms" class="link-white" href="#perms">${_('My permissions')}</a>
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'),h.url('admin_settings_create_repository'))}</span>
121 <span>${h.link_to(_('ADD'),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 id="my" class="table">
127 <div id="my" class="table">
128 <div id='repos_list_wrap' class="yui-skin-sam">
128 <div id='repos_list_wrap' class="yui-skin-sam">
129 <table id="repos_list">
129 <table id="repos_list">
130 <thead>
130 <thead>
131 <tr>
131 <tr>
132 <th></th>
132 <th></th>
133 <th class="left">${_('Name')}</th>
133 <th class="left">${_('Name')}</th>
134 <th class="left">${_('Revision')}</th>
134 <th class="left">${_('Revision')}</th>
135 <th class="left">${_('Action')}</th>
135 <th class="left">${_('Action')}</th>
136 <th class="left">${_('Action')}</th>
136 <th class="left">${_('Action')}</th>
137 </thead>
137 </thead>
138 <tbody>
138 <tbody>
139 <%namespace name="dt" file="/_data_table/_dt_elements.html"/>
139 <%namespace name="dt" file="/_data_table/_dt_elements.html"/>
140 %if c.user_repos:
140 %if c.user_repos:
141 %for repo in c.user_repos:
141 %for repo in c.user_repos:
142 <tr>
142 <tr>
143 ##QUICK MENU
143 ##QUICK MENU
144 <td class="quick_repo_menu">
144 <td class="quick_repo_menu">
145 ${dt.quick_menu(repo['name'])}
145 ${dt.quick_menu(repo['name'])}
146 </td>
146 </td>
147 ##REPO NAME AND ICONS
147 ##REPO NAME AND ICONS
148 <td class="reponame">
148 <td class="reponame">
149 ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],repo['dbrepo_fork'].get('repo_name'))}
149 ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],repo['dbrepo_fork'].get('repo_name'))}
150 </td>
150 </td>
151 ##LAST REVISION
151 ##LAST REVISION
152 <td>
152 <td>
153 ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
153 ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
154 </td>
154 </td>
155 <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>
155 <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>
156 <td>
156 <td>
157 ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')}
157 ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')}
158 ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository: %s') % repo['name']+"');")}
158 ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository: %s') % repo['name']+"');")}
159 ${h.end_form()}
159 ${h.end_form()}
160 </td>
160 </td>
161 </tr>
161 </tr>
162 %endfor
162 %endfor
163 %else:
163 %else:
164 <div style="padding:5px 0px 10px 0px;">
164 <div style="padding:5px 0px 10px 0px;">
165 ${_('No repositories yet')}
165 ${_('No repositories yet')}
166 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
166 %if h.HasPermissionAny('hg.admin','hg.create.repository')():
167 ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-btn")}
167 ${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-btn")}
168 %endif
168 %endif
169 </div>
169 </div>
170 %endif
170 %endif
171 </tbody>
171 </tbody>
172 </table>
172 </table>
173 </div>
173 </div>
174 </div>
174 </div>
175 <div id="perms" class="table" style="display:none">
175 <div id="perms" class="table" style="display:none">
176 %for section in sorted(c.rhodecode_user.permissions.keys()):
176 %for section in sorted(c.rhodecode_user.permissions.keys()):
177 <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
177 <div class="perms_section_head">${section.replace("_"," ").capitalize()}</div>
178
178
179 <div id='tbl_list_wrap_${section}' class="yui-skin-sam">
179 <div id='tbl_list_wrap_${section}' class="yui-skin-sam">
180 <table id="tbl_list_${section}">
180 <table id="tbl_list_${section}">
181 <thead>
181 <thead>
182 <tr>
182 <tr>
183 <th class="left">${_('Name')}</th>
183 <th class="left">${_('Name')}</th>
184 <th class="left">${_('Permission')}</th>
184 <th class="left">${_('Permission')}</th>
185 </thead>
185 </thead>
186 <tbody>
186 <tbody>
187 %for k in c.rhodecode_user.permissions[section]:
187 %for k in c.rhodecode_user.permissions[section]:
188 <%
189 if section != 'global':
190 section_perm = c.rhodecode_user.permissions[section].get(k)
191 _perm = section_perm.split('.')[-1]
192 else:
193 _perm = section_perm = None
194 %>
195 %if _perm not in ['none']:
188 <tr>
196 <tr>
189 <td>
197 <td>
190 %if section == 'repositories':
198 %if section == 'repositories':
191 <a href="${h.url('summary_home',repo_name=k)}">${k}</a>
199 <a href="${h.url('summary_home',repo_name=k)}">${k}</a>
192 %elif section == 'repositories_groups':
200 %elif section == 'repositories_groups':
193 <a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
201 <a href="${h.url('repos_group_home',group_name=k)}">${k}</a>
194 %else:
202 %else:
195 ${k}
203 ${k}
196 %endif
204 %endif
197 </td>
205 </td>
198 <td>
206 <td>
199 %if section == 'global':
207 %if section == 'global':
200 ${h.bool2icon(True)}
208 ${h.bool2icon(True)}
201 %else:
209 %else:
202 <span class="perm_tag ${c.rhodecode_user.permissions[section].get(k).split('.')[-1] }">${c.rhodecode_user.permissions[section].get(k)}</span>
210 <span class="perm_tag ${_perm}">${section_perm}</span>
203 %endif
211 %endif
204 </td>
212 </td>
205 </tr>
213 </tr>
214 %endif
206 %endfor
215 %endfor
207 </tbody>
216 </tbody>
208 </table>
217 </table>
209 </div>
218 </div>
210 %endfor
219 %endfor
211 </div>
220 </div>
212 </div>
221 </div>
213 <script type="text/javascript">
222 <script type="text/javascript">
214 var filter_activate = function(){
223 var filter_activate = function(){
215 var nodes = YUQ('#my tr td a.repo_name');
224 var nodes = YUQ('#my tr td a.repo_name');
216 var func = function(node){
225 var func = function(node){
217 return node.parentNode.parentNode.parentNode.parentNode;
226 return node.parentNode.parentNode.parentNode.parentNode;
218 }
227 }
219 q_filter('q_filter',YUQ('#my tr td a.repo_name'),func);
228 q_filter('q_filter',YUQ('#my tr td a.repo_name'),func);
220 }
229 }
221
230
222 YUE.on('show_my','click',function(e){
231 YUE.on('show_my','click',function(e){
223 YUD.setStyle('perms','display','none');
232 YUD.setStyle('perms','display','none');
224 YUD.setStyle('my','display','');
233 YUD.setStyle('my','display','');
225 YUD.get('q_filter').removeAttribute('disabled');
234 YUD.get('q_filter').removeAttribute('disabled');
226 filter_activate();
235 filter_activate();
227 YUE.preventDefault(e);
236 YUE.preventDefault(e);
228 })
237 })
229 YUE.on('show_perms','click',function(e){
238 YUE.on('show_perms','click',function(e){
230 YUD.setStyle('my','display','none');
239 YUD.setStyle('my','display','none');
231 YUD.setStyle('perms','display','');
240 YUD.setStyle('perms','display','');
232 YUD.setAttribute('q_filter','disabled','disabled');
241 YUD.setAttribute('q_filter','disabled','disabled');
233 YUE.preventDefault(e);
242 YUE.preventDefault(e);
234 })
243 })
235
244
236
245
237 // main table sorting
246 // main table sorting
238 var myColumnDefs = [
247 var myColumnDefs = [
239 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
248 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
240 {key:"name",label:"${_('Name')}",sortable:true,
249 {key:"name",label:"${_('Name')}",sortable:true,
241 sortOptions: { sortFunction: nameSort }},
250 sortOptions: { sortFunction: nameSort }},
242 {key:"tip",label:"${_('Tip')}",sortable:true,
251 {key:"tip",label:"${_('Tip')}",sortable:true,
243 sortOptions: { sortFunction: revisionSort }},
252 sortOptions: { sortFunction: revisionSort }},
244 {key:"action1",label:"",sortable:false},
253 {key:"action1",label:"",sortable:false},
245 {key:"action2",label:"",sortable:false},
254 {key:"action2",label:"",sortable:false},
246 ];
255 ];
247
256
248 var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
257 var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
249 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
258 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
250 myDataSource.responseSchema = {
259 myDataSource.responseSchema = {
251 fields: [
260 fields: [
252 {key:"menu"},
261 {key:"menu"},
253 {key:"name"},
262 {key:"name"},
254 {key:"tip"},
263 {key:"tip"},
255 {key:"action1"},
264 {key:"action1"},
256 {key:"action2"},
265 {key:"action2"},
257 ]
266 ]
258 };
267 };
259 var trans_defs = {
268 var trans_defs = {
260 sortedBy:{key:"name",dir:"asc"},
269 sortedBy:{key:"name",dir:"asc"},
261 MSG_SORTASC:"${_('Click to sort ascending')}",
270 MSG_SORTASC:"${_('Click to sort ascending')}",
262 MSG_SORTDESC:"${_('Click to sort descending')}",
271 MSG_SORTDESC:"${_('Click to sort descending')}",
263 MSG_EMPTY:"${_('No records found.')}",
272 MSG_EMPTY:"${_('No records found.')}",
264 MSG_ERROR:"${_('Data error.')}",
273 MSG_ERROR:"${_('Data error.')}",
265 MSG_LOADING:"${_('Loading...')}",
274 MSG_LOADING:"${_('Loading...')}",
266 }
275 }
267 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,trans_defs);
276 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,trans_defs);
268 myDataTable.subscribe('postRenderEvent',function(oArgs) {
277 myDataTable.subscribe('postRenderEvent',function(oArgs) {
269 tooltip_activate();
278 tooltip_activate();
270 quick_repo_menu();
279 quick_repo_menu();
271 filter_activate();
280 filter_activate();
272 });
281 });
273
282
274 var permsColumnDefs = [
283 var permsColumnDefs = [
275 {key:"name",label:"${_('Name')}",sortable:true, sortOptions: { sortFunction: permNameSort }},
284 {key:"name",label:"${_('Name')}",sortable:true, sortOptions: { sortFunction: permNameSort }},
276 {key:"perm",label:"${_('Permission')}",sortable:false,},
285 {key:"perm",label:"${_('Permission')}",sortable:false,},
277 ];
286 ];
278
287
279 // perms repos table
288 // perms repos table
280 var myDataSource2 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories"));
289 var myDataSource2 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories"));
281 myDataSource2.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
290 myDataSource2.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
282 myDataSource2.responseSchema = {
291 myDataSource2.responseSchema = {
283 fields: [
292 fields: [
284 {key:"name"},
293 {key:"name"},
285 {key:"perm"},
294 {key:"perm"},
286 ]
295 ]
287 };
296 };
288
297
289 new YAHOO.widget.DataTable("tbl_list_wrap_repositories", permsColumnDefs, myDataSource2, trans_defs);
298 new YAHOO.widget.DataTable("tbl_list_wrap_repositories", permsColumnDefs, myDataSource2, trans_defs);
290
299
291 //perms groups table
300 //perms groups table
292 var myDataSource3 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories_groups"));
301 var myDataSource3 = new YAHOO.util.DataSource(YUD.get("tbl_list_repositories_groups"));
293 myDataSource3.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
302 myDataSource3.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
294 myDataSource3.responseSchema = {
303 myDataSource3.responseSchema = {
295 fields: [
304 fields: [
296 {key:"name"},
305 {key:"name"},
297 {key:"perm"},
306 {key:"perm"},
298 ]
307 ]
299 };
308 };
300
309
301 new YAHOO.widget.DataTable("tbl_list_wrap_repositories_groups", permsColumnDefs, myDataSource3, trans_defs);
310 new YAHOO.widget.DataTable("tbl_list_wrap_repositories_groups", permsColumnDefs, myDataSource3, trans_defs);
302
311
303 </script>
312 </script>
304 </%def>
313 </%def>
General Comments 0
You need to be logged in to leave comments. Login now