Show More
@@ -1,222 +1,222 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | 2 | <%inherit file="base.mako"/> |
|
3 | 3 | |
|
4 | 4 | <%def name="breadcrumbs_links()"> |
|
5 | 5 | %if c.repo: |
|
6 | 6 | ${h.link_to('Settings',h.route_path('edit_repo', repo_name=c.repo.repo_name))} |
|
7 | 7 | %elif c.repo_group: |
|
8 | 8 | ${h.link_to(_('Admin'),h.route_path('admin_home'))} |
|
9 | 9 | » |
|
10 | 10 | ${h.link_to(_('Repository Groups'),h.route_path('repo_groups'))} |
|
11 | 11 | » |
|
12 | 12 | ${h.link_to(c.repo_group.group_name,h.route_path('edit_repo_group', repo_group_name=c.repo_group.group_name))} |
|
13 | 13 | %else: |
|
14 | 14 | ${h.link_to(_('Admin'),h.route_path('admin_home'))} |
|
15 | 15 | » |
|
16 | 16 | ${h.link_to(_('Settings'),h.route_path('admin_settings'))} |
|
17 | 17 | %endif |
|
18 | 18 | %if c.current_IntegrationType: |
|
19 | 19 | » |
|
20 | 20 | %if c.repo: |
|
21 | 21 | ${h.link_to(_('Integrations'), |
|
22 | 22 | request.route_path(route_name='repo_integrations_home', |
|
23 | 23 | repo_name=c.repo.repo_name))} |
|
24 | 24 | %elif c.repo_group: |
|
25 | 25 | ${h.link_to(_('Integrations'), |
|
26 | 26 | request.route_path(route_name='repo_group_integrations_home', |
|
27 | 27 | repo_group_name=c.repo_group.group_name))} |
|
28 | 28 | %else: |
|
29 | 29 | ${h.link_to(_('Integrations'), |
|
30 | 30 | request.route_path(route_name='global_integrations_home'))} |
|
31 | 31 | %endif |
|
32 | 32 | » |
|
33 | 33 | ${c.current_IntegrationType.display_name} |
|
34 | 34 | %else: |
|
35 | 35 | » |
|
36 | 36 | ${_('Integrations')} |
|
37 | 37 | %endif |
|
38 | 38 | </%def> |
|
39 | 39 | |
|
40 | 40 | <div class="panel panel-default"> |
|
41 | 41 | <div class="panel-heading"> |
|
42 | 42 | <h3 class="panel-title"> |
|
43 | 43 | %if c.repo: |
|
44 | 44 | ${_('Current Integrations for Repository: {repo_name}').format(repo_name=c.repo.repo_name)} |
|
45 | 45 | %elif c.repo_group: |
|
46 |
${_(' |
|
|
46 | ${_('Repository Group Integrations: {}').format(c.repo_group.group_name)}</h3> | |
|
47 | 47 | %else: |
|
48 | 48 | ${_('Current Integrations')} |
|
49 | 49 | %endif |
|
50 | 50 | </h3> |
|
51 | 51 | </div> |
|
52 | 52 | <div class="panel-body"> |
|
53 | 53 | |
|
54 | 54 | <% |
|
55 | 55 | integration_type = c.current_IntegrationType and c.current_IntegrationType.display_name or '' |
|
56 | 56 | |
|
57 | 57 | if c.repo: |
|
58 | 58 | create_url = h.route_path('repo_integrations_new', repo_name=c.repo.repo_name) |
|
59 | 59 | elif c.repo_group: |
|
60 | 60 | create_url = h.route_path('repo_group_integrations_new', repo_group_name=c.repo_group.group_name) |
|
61 | 61 | else: |
|
62 | 62 | create_url = h.route_path('global_integrations_new') |
|
63 | 63 | %> |
|
64 | 64 | <p class="pull-right"> |
|
65 | 65 | <a href="${create_url}" class="btn btn-small btn-success">${_(u'Create new integration')}</a> |
|
66 | 66 | </p> |
|
67 | 67 | |
|
68 | 68 | <table class="rctable integrations"> |
|
69 | 69 | <thead> |
|
70 | 70 | <tr> |
|
71 | 71 | <th><a href="?sort=enabled:${c.rev_sort_dir}">${_('Enabled')}</a></th> |
|
72 | 72 | <th><a href="?sort=name:${c.rev_sort_dir}">${_('Name')}</a></th> |
|
73 | 73 | <th colspan="2"><a href="?sort=integration_type:${c.rev_sort_dir}">${_('Type')}</a></th> |
|
74 | 74 | <th><a href="?sort=scope:${c.rev_sort_dir}">${_('Scope')}</a></th> |
|
75 | 75 | <th>${_('Actions')}</th> |
|
76 | 76 | <th></th> |
|
77 | 77 | </tr> |
|
78 | 78 | </thead> |
|
79 | 79 | <tbody> |
|
80 | 80 | %if not c.integrations_list: |
|
81 | 81 | <tr> |
|
82 | 82 | <td colspan="7"> |
|
83 | 83 | |
|
84 | 84 | %if c.repo: |
|
85 | 85 | ${_('No {type} integrations for repo {repo} exist yet.').format(type=integration_type, repo=c.repo.repo_name)} |
|
86 | 86 | %elif c.repo_group: |
|
87 | 87 | ${_('No {type} integrations for repogroup {repogroup} exist yet.').format(type=integration_type, repogroup=c.repo_group.group_name)} |
|
88 | 88 | %else: |
|
89 | 89 | ${_('No {type} integrations exist yet.').format(type=integration_type)} |
|
90 | 90 | %endif |
|
91 | 91 | |
|
92 | 92 | %if c.current_IntegrationType: |
|
93 | 93 | <% |
|
94 | 94 | if c.repo: |
|
95 | 95 | create_url = h.route_path('repo_integrations_create', repo_name=c.repo.repo_name, integration=c.current_IntegrationType.key) |
|
96 | 96 | elif c.repo_group: |
|
97 | 97 | create_url = h.route_path('repo_group_integrations_create', repo_group_name=c.repo_group.group_name, integration=c.current_IntegrationType.key) |
|
98 | 98 | else: |
|
99 | 99 | create_url = h.route_path('global_integrations_create', integration=c.current_IntegrationType.key) |
|
100 | 100 | %> |
|
101 | 101 | %endif |
|
102 | 102 | |
|
103 | 103 | <a href="${create_url}">${_(u'Create one')}</a> |
|
104 | 104 | </td> |
|
105 | 105 | </tr> |
|
106 | 106 | %endif |
|
107 | 107 | %for IntegrationType, integration in c.integrations_list: |
|
108 | 108 | <tr id="integration_${integration.integration_id}"> |
|
109 | 109 | <td class="td-enabled"> |
|
110 | 110 | %if integration.enabled: |
|
111 | 111 | <div class="flag_status approved pull-left"></div> |
|
112 | 112 | %else: |
|
113 | 113 | <div class="flag_status rejected pull-left"></div> |
|
114 | 114 | %endif |
|
115 | 115 | </td> |
|
116 | 116 | <td class="td-description"> |
|
117 | 117 | ${integration.name} |
|
118 | 118 | </td> |
|
119 | 119 | <td class="td-icon"> |
|
120 | 120 | %if integration.integration_type in c.available_integrations: |
|
121 | 121 | <div class="integration-icon"> |
|
122 | 122 | ${c.available_integrations[integration.integration_type].icon()|n} |
|
123 | 123 | </div> |
|
124 | 124 | %else: |
|
125 | 125 | ? |
|
126 | 126 | %endif |
|
127 | 127 | </td> |
|
128 | 128 | <td class="td-type"> |
|
129 | 129 | ${integration.integration_type} |
|
130 | 130 | </td> |
|
131 | 131 | <td class="td-scope"> |
|
132 | 132 | %if integration.repo: |
|
133 | 133 | <a href="${h.route_path('repo_summary', repo_name=integration.repo.repo_name)}"> |
|
134 | 134 | ${_('repo')}:${integration.repo.repo_name} |
|
135 | 135 | </a> |
|
136 | 136 | %elif integration.repo_group: |
|
137 | 137 | <a href="${h.route_path('repo_group_home', repo_group_name=integration.repo_group.group_name)}"> |
|
138 | 138 | ${_('repogroup')}:${integration.repo_group.group_name} |
|
139 | 139 | %if integration.child_repos_only: |
|
140 | 140 | ${_('child repos only')} |
|
141 | 141 | %else: |
|
142 | 142 | ${_('cascade to all')} |
|
143 | 143 | %endif |
|
144 | 144 | </a> |
|
145 | 145 | %else: |
|
146 | 146 | %if integration.child_repos_only: |
|
147 | 147 | ${_('top level repos only')} |
|
148 | 148 | %else: |
|
149 | 149 | ${_('global')} |
|
150 | 150 | %endif |
|
151 | 151 | </td> |
|
152 | 152 | %endif |
|
153 | 153 | <td class="td-action"> |
|
154 | 154 | %if not IntegrationType: |
|
155 | 155 | ${_('unknown integration')} |
|
156 | 156 | %else: |
|
157 | 157 | <% |
|
158 | 158 | if c.repo: |
|
159 | 159 | edit_url = request.route_path('repo_integrations_edit', |
|
160 | 160 | repo_name=c.repo.repo_name, |
|
161 | 161 | integration=integration.integration_type, |
|
162 | 162 | integration_id=integration.integration_id) |
|
163 | 163 | elif c.repo_group: |
|
164 | 164 | edit_url = request.route_path('repo_group_integrations_edit', |
|
165 | 165 | repo_group_name=c.repo_group.group_name, |
|
166 | 166 | integration=integration.integration_type, |
|
167 | 167 | integration_id=integration.integration_id) |
|
168 | 168 | else: |
|
169 | 169 | edit_url = request.route_path('global_integrations_edit', |
|
170 | 170 | integration=integration.integration_type, |
|
171 | 171 | integration_id=integration.integration_id) |
|
172 | 172 | %> |
|
173 | 173 | <div class="grid_edit"> |
|
174 | 174 | <a href="${edit_url}">${_('Edit')}</a> |
|
175 | 175 | </div> |
|
176 | 176 | <div class="grid_delete"> |
|
177 | 177 | <a href="${edit_url}" |
|
178 | 178 | class="btn btn-link btn-danger delete_integration_entry" |
|
179 | 179 | data-desc="${integration.name}" |
|
180 | 180 | data-uid="${integration.integration_id}"> |
|
181 | 181 | ${_('Delete')} |
|
182 | 182 | </a> |
|
183 | 183 | </div> |
|
184 | 184 | %endif |
|
185 | 185 | </td> |
|
186 | 186 | </tr> |
|
187 | 187 | %endfor |
|
188 | 188 | <tr id="last-row"></tr> |
|
189 | 189 | </tbody> |
|
190 | 190 | </table> |
|
191 | 191 | <div class="integrations-paginator"> |
|
192 | 192 | <div class="pagination-wh pagination-left"> |
|
193 | 193 | ${c.integrations_list.pager('$link_previous ~2~ $link_next')} |
|
194 | 194 | </div> |
|
195 | 195 | </div> |
|
196 | 196 | </div> |
|
197 | 197 | </div> |
|
198 | 198 | <script type="text/javascript"> |
|
199 | 199 | var delete_integration = function(entry) { |
|
200 | 200 | if (confirm("Confirm to remove this integration: "+$(entry).data('desc'))) { |
|
201 | 201 | var request = $.ajax({ |
|
202 | 202 | type: "POST", |
|
203 | 203 | url: $(entry).attr('href'), |
|
204 | 204 | data: { |
|
205 | 205 | 'delete': 'delete', |
|
206 | 206 | 'csrf_token': CSRF_TOKEN |
|
207 | 207 | }, |
|
208 | 208 | success: function(){ |
|
209 | 209 | location.reload(); |
|
210 | 210 | }, |
|
211 | 211 | error: function(data, textStatus, errorThrown){ |
|
212 | 212 | alert("Error while deleting entry.\nError code {0} ({1}). URL: {2}".format(data.status,data.statusText,$(entry)[0].url)); |
|
213 | 213 | } |
|
214 | 214 | }); |
|
215 | 215 | }; |
|
216 | 216 | }; |
|
217 | 217 | |
|
218 | 218 | $('.delete_integration_entry').on('click', function(e){ |
|
219 | 219 | e.preventDefault(); |
|
220 | 220 | delete_integration(this); |
|
221 | 221 | }); |
|
222 | 222 | </script> No newline at end of file |
@@ -1,65 +1,65 b'' | |||
|
1 | 1 | <%namespace name="base" file="/base/base.mako"/> |
|
2 | 2 | |
|
3 | 3 | <% |
|
4 | 4 | elems = [ |
|
5 | 5 | (_('Repository Group ID'), c.repo_group.group_id, '', ''), |
|
6 | 6 | (_('Owner'), lambda:base.gravatar_with_user(c.repo_group.user.email), '', ''), |
|
7 | 7 | (_('Created on'), h.format_date(c.repo_group.created_on), '', ''), |
|
8 | 8 | (_('Is Personal Group'), c.repo_group.personal or False, '', ''), |
|
9 | 9 | |
|
10 | 10 | (_('Total repositories'), c.repo_group.repositories_recursive_count, '', ''), |
|
11 | 11 | (_('Top level repositories'), c.repo_group.repositories.count(), '', c.repo_group.repositories.all()), |
|
12 | 12 | |
|
13 | 13 | (_('Children groups'), c.repo_group.children.count(), '', c.repo_group.children.all()), |
|
14 | 14 | ] |
|
15 | 15 | %> |
|
16 | 16 | |
|
17 | 17 | <div class="panel panel-default"> |
|
18 | 18 | <div class="panel-heading"> |
|
19 |
<h3 class="panel-title">${_('Repository Group |
|
|
19 | <h3 class="panel-title">${_('Repository Group Advanced: {}').format(c.repo_group.name)}</h3> | |
|
20 | 20 | </div> |
|
21 | 21 | <div class="panel-body"> |
|
22 | 22 | ${base.dt_info_panel(elems)} |
|
23 | 23 | </div> |
|
24 | 24 | |
|
25 | 25 | </div> |
|
26 | 26 | |
|
27 | 27 | <div class="panel panel-danger"> |
|
28 | 28 | <div class="panel-heading"> |
|
29 | 29 | <h3 class="panel-title">${_('Delete repository group')}</h3> |
|
30 | 30 | </div> |
|
31 | 31 | <div class="panel-body"> |
|
32 | 32 | ${h.secure_form(h.route_path('edit_repo_group_advanced_delete', repo_group_name=c.repo_group.group_name), request=request)} |
|
33 | 33 | <table class="display"> |
|
34 | 34 | |
|
35 | 35 | <tr> |
|
36 | 36 | <td> |
|
37 | 37 | ${_ungettext('This repository group includes %s children repository group.', 'This repository group includes %s children repository groups.', c.repo_group.children.count()) % c.repo_group.children.count()} |
|
38 | 38 | </td> |
|
39 | 39 | <td> |
|
40 | 40 | </td> |
|
41 | 41 | <td> |
|
42 | 42 | </td> |
|
43 | 43 | </tr> |
|
44 | 44 | <tr> |
|
45 | 45 | <td> |
|
46 | 46 | ${_ungettext('This repository group includes %s repository.', 'This repository group includes %s repositories.', c.repo_group.repositories_recursive_count) % c.repo_group.repositories_recursive_count} |
|
47 | 47 | </td> |
|
48 | 48 | <td> |
|
49 | 49 | </td> |
|
50 | 50 | <td> |
|
51 | 51 | </td> |
|
52 | 52 | </tr> |
|
53 | 53 | |
|
54 | 54 | </table> |
|
55 | 55 | <div style="margin: 0 0 20px 0" class="fake-space"></div> |
|
56 | 56 | |
|
57 | 57 | <button class="btn btn-small btn-danger" type="submit" |
|
58 | 58 | onclick="return confirm('${_('Confirm to delete this group: %s') % (c.repo_group.group_name)}');"> |
|
59 | 59 | ${_('Delete this repository group')} |
|
60 | 60 | </button> |
|
61 | 61 | ${h.end_form()} |
|
62 | 62 | </div> |
|
63 | 63 | </div> |
|
64 | 64 | |
|
65 | 65 |
@@ -1,219 +1,219 b'' | |||
|
1 | 1 | <%namespace name="base" file="/base/base.mako"/> |
|
2 | 2 | |
|
3 | 3 | <div class="panel panel-default"> |
|
4 | 4 | <div class="panel-heading"> |
|
5 |
<h3 class="panel-title">${_('Repository Group Permissions |
|
|
5 | <h3 class="panel-title">${_('Repository Group Permissions: {}').format(c.repo_group.name)}</h3> | |
|
6 | 6 | </div> |
|
7 | 7 | <div class="panel-body"> |
|
8 | 8 | ${h.secure_form(h.route_path('edit_repo_group_perms_update', repo_group_name=c.repo_group.group_name), request=request)} |
|
9 | 9 | <table id="permissions_manage" class="rctable permissions"> |
|
10 | 10 | <tr> |
|
11 | 11 | <th class="td-radio">${_('None')}</th> |
|
12 | 12 | <th class="td-radio">${_('Read')}</th> |
|
13 | 13 | <th class="td-radio">${_('Write')}</th> |
|
14 | 14 | <th class="td-radio">${_('Admin')}</th> |
|
15 | 15 | <th class="td-owner">${_('User/User Group')}</th> |
|
16 | 16 | <th class="td-action"></th> |
|
17 | 17 | <th class="td-action"></th> |
|
18 | 18 | </tr> |
|
19 | 19 | ## USERS |
|
20 | 20 | %for _user in c.repo_group.permissions(): |
|
21 | 21 | ## super admin/owner row |
|
22 | 22 | %if getattr(_user, 'admin_row', None) or getattr(_user, 'owner_row', None): |
|
23 | 23 | <tr class="perm_admin_row"> |
|
24 | 24 | <td class="td-radio">${h.radio('admin_perm_%s' % _user.user_id,'repository.none', disabled="disabled")}</td> |
|
25 | 25 | <td class="td-radio">${h.radio('admin_perm_%s' % _user.user_id,'repository.read', disabled="disabled")}</td> |
|
26 | 26 | <td class="td-radio">${h.radio('admin_perm_%s' % _user.user_id,'repository.write', disabled="disabled")}</td> |
|
27 | 27 | <td class="td-radio">${h.radio('admin_perm_%s' % _user.user_id,'repository.admin', 'repository.admin', disabled="disabled")}</td> |
|
28 | 28 | <td class="td-user"> |
|
29 | 29 | ${base.gravatar(_user.email, 16)} |
|
30 | 30 | ${h.link_to_user(_user.username)} |
|
31 | 31 | %if getattr(_user, 'admin_row', None): |
|
32 | 32 | (${_('super admin')}) |
|
33 | 33 | %endif |
|
34 | 34 | %if getattr(_user, 'owner_row', None): |
|
35 | 35 | (${_('owner')}) |
|
36 | 36 | %endif |
|
37 | 37 | </td> |
|
38 | 38 | <td></td> |
|
39 | 39 | <td class="quick_repo_menu"> |
|
40 | 40 | % if c.rhodecode_user.is_admin: |
|
41 | 41 | <i class="icon-more"></i> |
|
42 | 42 | <div class="menu_items_container" style="display: none;"> |
|
43 | 43 | <ul class="menu_items"> |
|
44 | 44 | <li> |
|
45 | 45 | ${h.link_to('show permissions', h.route_path('edit_user_perms_summary', user_id=_user.user_id, _anchor='repositories-groups-permissions'))} |
|
46 | 46 | </li> |
|
47 | 47 | </ul> |
|
48 | 48 | </div> |
|
49 | 49 | % endif |
|
50 | 50 | </td> |
|
51 | 51 | </tr> |
|
52 | 52 | %else: |
|
53 | 53 | <tr> |
|
54 | 54 | ##forbid revoking permission from yourself, except if you're an super admin |
|
55 | 55 | %if c.rhodecode_user.user_id != _user.user_id or c.rhodecode_user.is_admin: |
|
56 | 56 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.none', checked=_user.permission=='group.none')}</td> |
|
57 | 57 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.read', checked=_user.permission=='group.read')}</td> |
|
58 | 58 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.write', checked=_user.permission=='group.write')}</td> |
|
59 | 59 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.admin', checked=_user.permission=='group.admin')}</td> |
|
60 | 60 | <td class="td-user"> |
|
61 | 61 | ${base.gravatar(_user.email, 16)} |
|
62 | 62 | <span class="user"> |
|
63 | 63 | % if _user.username == h.DEFAULT_USER: |
|
64 | 64 | ${h.DEFAULT_USER} <span class="user-perm-help-text"> - ${_('permission for all other users')}</span> |
|
65 | 65 | % else: |
|
66 | 66 | ${h.link_to_user(_user.username)} |
|
67 | 67 | %if getattr(_user, 'duplicate_perm', None): |
|
68 | 68 | (${_('inactive duplicate')}) |
|
69 | 69 | %endif |
|
70 | 70 | % endif |
|
71 | 71 | </span> |
|
72 | 72 | </td> |
|
73 | 73 | <td class="td-action"> |
|
74 | 74 | %if _user.username != h.DEFAULT_USER: |
|
75 | 75 | <span class="btn btn-link btn-danger revoke_perm" |
|
76 | 76 | member="${_user.user_id}" member_type="user"> |
|
77 | 77 | ${_('Remove')} |
|
78 | 78 | </span> |
|
79 | 79 | %endif |
|
80 | 80 | </td> |
|
81 | 81 | <td class="quick_repo_menu"> |
|
82 | 82 | % if c.rhodecode_user.is_admin: |
|
83 | 83 | <i class="icon-more"></i> |
|
84 | 84 | <div class="menu_items_container" style="display: none;"> |
|
85 | 85 | <ul class="menu_items"> |
|
86 | 86 | <li> |
|
87 | 87 | % if _user.username == h.DEFAULT_USER: |
|
88 | 88 | ${h.link_to('show permissions', h.route_path('admin_permissions_overview', _anchor='repositories-groups-permissions'))} |
|
89 | 89 | % else: |
|
90 | 90 | ${h.link_to('show permissions', h.route_path('edit_user_perms_summary', user_id=_user.user_id, _anchor='repositories-groups-permissions'))} |
|
91 | 91 | % endif |
|
92 | 92 | </li> |
|
93 | 93 | </ul> |
|
94 | 94 | </div> |
|
95 | 95 | % endif |
|
96 | 96 | </td> |
|
97 | 97 | %else: |
|
98 | 98 | ## special case for currently logged-in user permissions, we make sure he cannot take his own permissions |
|
99 | 99 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.none', disabled="disabled")}</td> |
|
100 | 100 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.read', disabled="disabled")}</td> |
|
101 | 101 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.write', disabled="disabled")}</td> |
|
102 | 102 | <td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'group.admin', disabled="disabled")}</td> |
|
103 | 103 | <td class="td-user"> |
|
104 | 104 | ${base.gravatar(_user.email, 16)} |
|
105 | 105 | <span class="user"> |
|
106 | 106 | % if _user.username == h.DEFAULT_USER: |
|
107 | 107 | ${h.DEFAULT_USER} <span class="user-perm-help-text"> - ${_('permission for all other users')}</span> |
|
108 | 108 | % else: |
|
109 | 109 | ${h.link_to_user(_user.username)} |
|
110 | 110 | %if getattr(_user, 'duplicate_perm', None): |
|
111 | 111 | (${_('inactive duplicate')}) |
|
112 | 112 | %endif |
|
113 | 113 | % endif |
|
114 | 114 | <span class="user-perm-help-text">(${_('delegated admin')})</span> |
|
115 | 115 | </span> |
|
116 | 116 | </td> |
|
117 | 117 | <td></td> |
|
118 | 118 | <td class="quick_repo_menu"> |
|
119 | 119 | % if c.rhodecode_user.is_admin: |
|
120 | 120 | <i class="icon-more"></i> |
|
121 | 121 | <div class="menu_items_container" style="display: none;"> |
|
122 | 122 | <ul class="menu_items"> |
|
123 | 123 | <li> |
|
124 | 124 | ${h.link_to('show permissions', h.route_path('edit_user_perms_summary', user_id=_user.user_id, _anchor='repositories-groups-permissions'))} |
|
125 | 125 | </li> |
|
126 | 126 | </ul> |
|
127 | 127 | </div> |
|
128 | 128 | % endif |
|
129 | 129 | </td> |
|
130 | 130 | %endif |
|
131 | 131 | </tr> |
|
132 | 132 | %endif |
|
133 | 133 | %endfor |
|
134 | 134 | |
|
135 | 135 | ## USER GROUPS |
|
136 | 136 | %for _user_group in c.repo_group.permission_user_groups(with_members=True): |
|
137 | 137 | <tr id="id${id(_user_group.users_group_name)}"> |
|
138 | 138 | <td class="td-radio">${h.radio('g_perm_%s' % _user_group.users_group_id,'group.none', checked=_user_group.permission=='group.none')}</td> |
|
139 | 139 | <td class="td-radio">${h.radio('g_perm_%s' % _user_group.users_group_id,'group.read', checked=_user_group.permission=='group.read')}</td> |
|
140 | 140 | <td class="td-radio">${h.radio('g_perm_%s' % _user_group.users_group_id,'group.write', checked=_user_group.permission=='group.write')}</td> |
|
141 | 141 | <td class="td-radio">${h.radio('g_perm_%s' % _user_group.users_group_id,'group.admin', checked=_user_group.permission=='group.admin')}</td> |
|
142 | 142 | <td class="td-componentname"> |
|
143 | 143 | <i class="icon-user-group"></i> |
|
144 | 144 | %if c.is_super_admin: |
|
145 | 145 | <a href="${h.route_path('edit_user_group',user_group_id=_user_group.users_group_id)}"> |
|
146 | 146 | ${_user_group.users_group_name} |
|
147 | 147 | </a> |
|
148 | 148 | %else: |
|
149 | 149 | ${h.link_to_group(_user_group.users_group_name)} |
|
150 | 150 | %endif |
|
151 | 151 | (${_('members')}: ${len(_user_group.members)}) |
|
152 | 152 | </td> |
|
153 | 153 | <td class="td-action"> |
|
154 | 154 | <span class="btn btn-link btn-danger revoke_perm" |
|
155 | 155 | member="${_user_group.users_group_id}" member_type="user_group"> |
|
156 | 156 | ${_('Remove')} |
|
157 | 157 | </span> |
|
158 | 158 | </td> |
|
159 | 159 | <td class="quick_repo_menu"> |
|
160 | 160 | % if c.rhodecode_user.is_admin: |
|
161 | 161 | <i class="icon-more"></i> |
|
162 | 162 | <div class="menu_items_container" style="display: none;"> |
|
163 | 163 | <ul class="menu_items"> |
|
164 | 164 | <li> |
|
165 | 165 | ${h.link_to('show permissions', h.route_path('edit_user_group_perms_summary', user_group_id=_user_group.users_group_id, _anchor='repositories-groups-permissions'))} |
|
166 | 166 | </li> |
|
167 | 167 | </ul> |
|
168 | 168 | </div> |
|
169 | 169 | % endif |
|
170 | 170 | </td> |
|
171 | 171 | </tr> |
|
172 | 172 | %endfor |
|
173 | 173 | |
|
174 | 174 | <tr class="new_members" id="add_perm_input"></tr> |
|
175 | 175 | <tr> |
|
176 | 176 | <td></td> |
|
177 | 177 | <td></td> |
|
178 | 178 | <td></td> |
|
179 | 179 | <td></td> |
|
180 | 180 | <td></td> |
|
181 | 181 | <td> |
|
182 | 182 | <span id="add_perm" class="link"> |
|
183 | 183 | ${_('Add user/user group')} |
|
184 | 184 | </span> |
|
185 | 185 | </td> |
|
186 | 186 | <td></td> |
|
187 | 187 | </tr> |
|
188 | 188 | </table> |
|
189 | 189 | |
|
190 | 190 | <div class="fields"> |
|
191 | 191 | <div class="field"> |
|
192 | 192 | <div class="label label-radio"> |
|
193 | 193 | ${_('Apply to children')}: |
|
194 | 194 | </div> |
|
195 | 195 | <div class="radios"> |
|
196 | 196 | ${h.radio('recursive', 'none', label=_('None'), checked="checked")} |
|
197 | 197 | ${h.radio('recursive', 'groups', label=_('Repository Groups'))} |
|
198 | 198 | ${h.radio('recursive', 'repos', label=_('Repositories'))} |
|
199 | 199 | ${h.radio('recursive', 'all', label=_('Both'))} |
|
200 | 200 | <span class="help-block">${_('Set or revoke permissions to selected types of children of this group, including non-private repositories and other groups if chosen.')}</span> |
|
201 | 201 | </div> |
|
202 | 202 | </div> |
|
203 | 203 | </div> |
|
204 | 204 | <div class="buttons"> |
|
205 | 205 | ${h.submit('save',_('Save'),class_="btn btn-primary")} |
|
206 | 206 | ${h.reset('reset',_('Reset'),class_="btn btn-danger")} |
|
207 | 207 | </div> |
|
208 | 208 | ${h.end_form()} |
|
209 | 209 | </div> |
|
210 | 210 | </div> |
|
211 | 211 | <script type="text/javascript"> |
|
212 | 212 | $('#add_perm').on('click', function(e){ |
|
213 | 213 | addNewPermInput($(this), 'group'); |
|
214 | 214 | }); |
|
215 | 215 | $('.revoke_perm').on('click', function(e){ |
|
216 | 216 | markRevokePermInput($(this), 'group'); |
|
217 | 217 | }); |
|
218 | 218 | quick_repo_menu(); |
|
219 | 219 | </script> |
@@ -1,95 +1,95 b'' | |||
|
1 | 1 | ## -*- coding: utf-8 -*- |
|
2 | 2 | <%namespace name="base" file="/base/base.mako"/> |
|
3 | 3 | |
|
4 | 4 | <div class="panel panel-default"> |
|
5 | 5 | <div class="panel-heading"> |
|
6 |
<h3 class="panel-title">${_(' |
|
|
6 | <h3 class="panel-title">${_('Repository Group Settings: {}').format(c.repo_group.name)}</h3> | |
|
7 | 7 | </div> |
|
8 | 8 | <div class="panel-body"> |
|
9 | 9 | ${h.secure_form(h.route_path('edit_repo_group', repo_group_name=c.repo_group.group_name), request=request)} |
|
10 | 10 | <div class="form"> |
|
11 | 11 | <!-- fields --> |
|
12 | 12 | <div class="fields"> |
|
13 | 13 | <div class="field"> |
|
14 | 14 | <div class="label"> |
|
15 | 15 | <label for="group_name">${_('Group name')}:</label> |
|
16 | 16 | </div> |
|
17 | 17 | <div class="input"> |
|
18 | 18 | ${c.form['repo_group_name'].render(css_class='medium', oid='group_name')|n} |
|
19 | 19 | ${c.form.render_error(request, c.form['repo_group_name'])|n} |
|
20 | 20 | </div> |
|
21 | 21 | </div> |
|
22 | 22 | |
|
23 | 23 | <div class="field"> |
|
24 | 24 | <div class="label"> |
|
25 | 25 | <label for="repo_group">${_('Repository group')}:</label> |
|
26 | 26 | </div> |
|
27 | 27 | <div class="select"> |
|
28 | 28 | ${c.form['repo_group'].render(css_class='medium', oid='repo_group')|n} |
|
29 | 29 | ${c.form.render_error(request, c.form['repo_group'])|n} |
|
30 | 30 | |
|
31 | 31 | <p class="help-block">${_('Optional select a parent group to move this repository group into.')}</p> |
|
32 | 32 | </div> |
|
33 | 33 | </div> |
|
34 | 34 | |
|
35 | 35 | <div class="field badged-field"> |
|
36 | 36 | <div class="label"> |
|
37 | 37 | <label for="repo_group_owner">${_('Owner')}:</label> |
|
38 | 38 | </div> |
|
39 | 39 | <div class="input"> |
|
40 | 40 | <div class="badge-input-container"> |
|
41 | 41 | <div class="user-badge"> |
|
42 | 42 | ${base.gravatar_with_user(c.repo_group.user.email, show_disabled=not c.repo_group.user.active)} |
|
43 | 43 | </div> |
|
44 | 44 | <div class="badge-input-wrap"> |
|
45 | 45 | ${c.form['repo_group_owner'].render(css_class='medium', oid='repo_group_owner')|n} |
|
46 | 46 | </div> |
|
47 | 47 | </div> |
|
48 | 48 | ${c.form.render_error(request, c.form['repo_group_owner'])|n} |
|
49 | 49 | <p class="help-block">${_('Change owner of this repository group.')}</p> |
|
50 | 50 | </div> |
|
51 | 51 | </div> |
|
52 | 52 | |
|
53 | 53 | <div class="field"> |
|
54 | 54 | <div class="label label-textarea"> |
|
55 | 55 | <label for="repo_group_description">${_('Description')}:</label> |
|
56 | 56 | </div> |
|
57 | 57 | <div class="textarea text-area editor"> |
|
58 | 58 | ${c.form['repo_group_description'].render(css_class='medium', oid='repo_group_description')|n} |
|
59 | 59 | ${c.form.render_error(request, c.form['repo_group_description'])|n} |
|
60 | 60 | |
|
61 | 61 | <% metatags_url = h.literal('''<a href="#metatagsShow" onclick="$('#meta-tags-desc').toggle();return false">meta-tags</a>''') %> |
|
62 | 62 | <span class="help-block">${_('Plain text format with support of {metatags}').format(metatags=metatags_url)|n}</span> |
|
63 | 63 | <span id="meta-tags-desc" style="display: none"> |
|
64 | 64 | <%namespace name="dt" file="/data_table/_dt_elements.mako"/> |
|
65 | 65 | ${dt.metatags_help()} |
|
66 | 66 | </span> |
|
67 | 67 | </div> |
|
68 | 68 | </div> |
|
69 | 69 | |
|
70 | 70 | <div class="field"> |
|
71 | 71 | <div class="label label-checkbox"> |
|
72 | 72 | <label for="repo_group_enable_locking">${_('Enable Repository Locking')}:</label> |
|
73 | 73 | </div> |
|
74 | 74 | <div class="checkboxes"> |
|
75 | 75 | ${c.form['repo_group_enable_locking'].render(css_class='medium', oid='repo_group_enable_locking')|n} |
|
76 | 76 | ${c.form.render_error(request, c.form['repo_group_enable_locking'])|n} |
|
77 | 77 | |
|
78 | 78 | <span class="help-block">${_('Repository locking will be enabled on all subgroups and repositories inside this repository group. Pulling from a repository locks it, and it is unlocked by pushing back by the same user.')}</span> |
|
79 | 79 | </div> |
|
80 | 80 | </div> |
|
81 | 81 | |
|
82 | 82 | <div class="buttons"> |
|
83 | 83 | ${h.submit('save',_('Save'),class_="btn")} |
|
84 | 84 | ${h.reset('reset',_('Reset'),class_="btn")} |
|
85 | 85 | </div> |
|
86 | 86 | </div> |
|
87 | 87 | </div> |
|
88 | 88 | ${h.end_form()} |
|
89 | 89 | </div> |
|
90 | 90 | </div> |
|
91 | 91 | <script> |
|
92 | 92 | $(document).ready(function(){ |
|
93 | 93 | UsersAutoComplete('repo_group_owner', '${c.rhodecode_user.user_id}'); |
|
94 | 94 | }) |
|
95 | 95 | </script> |
General Comments 0
You need to be logged in to leave comments.
Login now