users_group_edit.html
280 lines
| 9.7 KiB
| text/html
|
HtmlLexer
r972 | ## -*- coding: utf-8 -*- | |||
<%inherit file="/base/base.html"/> | ||||
<%def name="title()"> | ||||
${_('Edit users group')} ${c.users_group.users_group_name} - ${c.rhodecode_name} | ||||
</%def> | ||||
<%def name="breadcrumbs_links()"> | ||||
r1888 | ${h.link_to(_('Admin'),h.url('admin_home'))} | |||
» | ||||
${h.link_to(_('UsersGroups'),h.url('users_groups'))} | ||||
r972 | » | |||
${_('edit')} "${c.users_group.users_group_name}" | ||||
</%def> | ||||
<%def name="page_nav()"> | ||||
${self.menu('admin')} | ||||
</%def> | ||||
<%def name="main()"> | ||||
r1124 | <div class="box box-left"> | |||
r972 | <!-- box / title --> | |||
<div class="title"> | ||||
r1888 | ${self.breadcrumbs()} | |||
r972 | </div> | |||
<!-- end box / title --> | ||||
${h.form(url('users_group', id=c.users_group.users_group_id),method='put', id='edit_users_group')} | ||||
<div class="form"> | ||||
<!-- fields --> | ||||
<div class="fields"> | ||||
<div class="field"> | ||||
<div class="label"> | ||||
<label for="users_group_name">${_('Group name')}:</label> | ||||
</div> | ||||
<div class="input"> | ||||
${h.text('users_group_name',class_='small')} | ||||
</div> | ||||
</div> | ||||
r1888 | ||||
r972 | <div class="field"> | |||
<div class="label label-checkbox"> | ||||
<label for="users_group_active">${_('Active')}:</label> | ||||
</div> | ||||
<div class="checkboxes"> | ||||
${h.checkbox('users_group_active',value=True)} | ||||
</div> | ||||
</div> | ||||
<div class="field"> | ||||
r985 | <div class="label"> | |||
r972 | <label for="users_group_active">${_('Members')}:</label> | |||
</div> | ||||
r985 | <div class="select"> | |||
r1888 | <table> | |||
r972 | <tr> | |||
<td> | ||||
<div> | ||||
<div style="float:left"> | ||||
r985 | <div class="text" style="padding: 0px 0px 6px;">${_('Choosen group members')}</div> | |||
r972 | ${h.select('users_group_members',[x[0] for x in c.group_members],c.group_members,multiple=True,size=8,style="min-width:210px")} | |||
r985 | <div id="remove_all_elements" style="cursor:pointer;text-align:center"> | |||
${_('Remove all elements')} | ||||
r1701 | <img alt="remove" style="vertical-align:text-bottom" src="${h.url('/images/icons/arrow_right.png')}"/> | |||
r985 | </div> | |||
r972 | </div> | |||
<div style="float:left;width:20px;padding-top:50px"> | ||||
r1888 | <img alt="add" id="add_element" | |||
style="padding:2px;cursor:pointer" | ||||
r1701 | src="${h.url('/images/icons/arrow_left.png')}"/> | |||
r972 | <br /> | |||
r1888 | <img alt="remove" id="remove_element" | |||
style="padding:2px;cursor:pointer" | ||||
r1701 | src="${h.url('/images/icons/arrow_right.png')}"/> | |||
r972 | </div> | |||
<div style="float:left"> | ||||
r985 | <div class="text" style="padding: 0px 0px 6px;">${_('Available members')}</div> | |||
r972 | ${h.select('available_members',[],c.available_members,multiple=True,size=8,style="min-width:210px")} | |||
r985 | <div id="add_all_elements" style="cursor:pointer;text-align:center"> | |||
r1701 | <img alt="add" style="vertical-align:text-bottom" src="${h.url('/images/icons/arrow_left.png')}"/> | |||
r985 | ${_('Add all elements')} | |||
r1888 | </div> | |||
r972 | </div> | |||
</div> | ||||
r1888 | </td> | |||
</tr> | ||||
</table> | ||||
</div> | ||||
r972 | ||||
r1888 | </div> | |||
r972 | <div class="buttons"> | |||
Augusto Herrmann
|
r1472 | ${h.submit('save',_('save'),class_="ui-button")} | ||
r1888 | </div> | |||
</div> | ||||
</div> | ||||
${h.end_form()} | ||||
r972 | </div> | |||
r1888 | ||||
r1952 | <div class="box box-right"> | |||
<!-- box / title --> | ||||
<div class="title"> | ||||
<h5>${_('Permissions')}</h5> | ||||
</div> | ||||
${h.form(url('users_group_perm', id=c.users_group.users_group_id), method='put')} | ||||
<div class="form"> | ||||
<!-- fields --> | ||||
<div class="fields"> | ||||
<div class="field"> | ||||
<div class="label label-checkbox"> | ||||
<label for="create_repo_perm">${_('Create repositories')}:</label> | ||||
</div> | ||||
<div class="checkboxes"> | ||||
${h.checkbox('create_repo_perm',value=True)} | ||||
</div> | ||||
</div> | ||||
<div class="buttons"> | ||||
${h.submit('save',_('Save'),class_="ui-button")} | ||||
${h.reset('reset',_('Reset'),class_="ui-button")} | ||||
</div> | ||||
</div> | ||||
</div> | ||||
${h.end_form()} | ||||
</div> | ||||
<div class="box box-right"> | ||||
<!-- box / title --> | ||||
<div class="title"> | ||||
<h5>${_('Group members')}</h5> | ||||
</div> | ||||
<div class="group_members_wrap"> | ||||
<ul class="group_members"> | ||||
%for user in c.group_members_obj: | ||||
<li> | ||||
<div class="group_member"> | ||||
<div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(user.email,24)}"/> </div> | ||||
<div>${user.username}</div> | ||||
<div>${user.full_name}</div> | ||||
</div> | ||||
</li> | ||||
%endfor | ||||
</ul> | ||||
</div> | ||||
</div> | ||||
r972 | <script type="text/javascript"> | |||
r1961 | YAHOO.util.Event.onDOMReady(function(){ | |||
var D = YAHOO.util.Dom; | ||||
var E = YAHOO.util.Event; | ||||
r1888 | ||||
r1961 | //definition of containers ID's | |||
var available_container = 'available_members'; | ||||
var selected_container = 'users_group_members'; | ||||
r1888 | ||||
r1961 | //form containing containers id | |||
var form_id = 'edit_users_group'; | ||||
r1888 | ||||
r1961 | //temp container for selected storage. | |||
var cache = new Array(); | ||||
var av_cache = new Array(); | ||||
var c = D.get(selected_container); | ||||
var ac = D.get(available_container); | ||||
r1888 | ||||
r1961 | //get only selected options for further fullfilment | |||
for(var i = 0;node =c.options[i];i++){ | ||||
if(node.selected){ | ||||
//push selected to my temp storage left overs :) | ||||
cache.push(node); | ||||
} | ||||
} | ||||
r972 | ||||
r1961 | //get all available options to cache | |||
for(var i = 0;node =ac.options[i];i++){ | ||||
//push selected to my temp storage left overs :) | ||||
av_cache.push(node); | ||||
} | ||||
r1888 | ||||
r1961 | //fill available only with those not in choosen | |||
ac.options.length=0; | ||||
tmp_cache = new Array(); | ||||
r1888 | ||||
r1961 | for(var i = 0;node = av_cache[i];i++){ | |||
var add = true; | ||||
for(var i2 = 0;node_2 = cache[i2];i2++){ | ||||
if(node.value == node_2.value){ | ||||
add=false; | ||||
break; | ||||
} | ||||
} | ||||
if(add){ | ||||
tmp_cache.push(new Option(node.text, node.value, false, false)); | ||||
} | ||||
} | ||||
r1888 | ||||
r1961 | for(var i = 0;node = tmp_cache[i];i++){ | |||
ac.options[i] = node; | ||||
} | ||||
r1888 | ||||
r1961 | function prompts_action_callback(e){ | |||
r1888 | ||||
r1961 | var choosen = D.get(selected_container); | |||
var available = D.get(available_container); | ||||
r1888 | ||||
r1961 | //get checked and unchecked options from field | |||
function get_checked(from_field){ | ||||
//temp container for storage. | ||||
var sel_cache = new Array(); | ||||
var oth_cache = new Array(); | ||||
r1888 | ||||
r1961 | for(var i = 0;node = from_field.options[i];i++){ | |||
if(node.selected){ | ||||
//push selected fields :) | ||||
sel_cache.push(node); | ||||
} | ||||
else{ | ||||
oth_cache.push(node) | ||||
} | ||||
} | ||||
r1888 | ||||
r1961 | return [sel_cache,oth_cache] | |||
} | ||||
r1888 | ||||
r1961 | //fill the field with given options | |||
function fill_with(field,options){ | ||||
//clear firtst | ||||
field.options.length=0; | ||||
for(var i = 0;node = options[i];i++){ | ||||
field.options[i]=new Option(node.text, node.value, | ||||
false, false); | ||||
} | ||||
r1888 | ||||
r1961 | } | |||
//adds to current field | ||||
function add_to(field,options){ | ||||
for(var i = 0;node = options[i];i++){ | ||||
field.appendChild(new Option(node.text, node.value, | ||||
false, false)); | ||||
} | ||||
} | ||||
r1888 | ||||
r1961 | // add action | |||
if (this.id=='add_element'){ | ||||
var c = get_checked(available); | ||||
add_to(choosen,c[0]); | ||||
fill_with(available,c[1]); | ||||
} | ||||
// remove action | ||||
if (this.id=='remove_element'){ | ||||
var c = get_checked(choosen); | ||||
add_to(available,c[0]); | ||||
fill_with(choosen,c[1]); | ||||
} | ||||
// add all elements | ||||
if(this.id=='add_all_elements'){ | ||||
for(var i=0; node = available.options[i];i++){ | ||||
choosen.appendChild(new Option(node.text, | ||||
node.value, false, false)); | ||||
} | ||||
available.options.length = 0; | ||||
} | ||||
//remove all elements | ||||
if(this.id=='remove_all_elements'){ | ||||
for(var i=0; node = choosen.options[i];i++){ | ||||
available.appendChild(new Option(node.text, | ||||
node.value, false, false)); | ||||
} | ||||
choosen.options.length = 0; | ||||
} | ||||
r1888 | ||||
r1961 | } | |||
r1888 | ||||
r1961 | E.addListener(['add_element','remove_element', | |||
'add_all_elements','remove_all_elements'],'click', | ||||
prompts_action_callback) | ||||
r972 | ||||
r1961 | E.addListener(form_id,'submit',function(){ | |||
var choosen = D.get(selected_container); | ||||
for (var i = 0; i < choosen.options.length; i++) { | ||||
choosen.options[i].selected = 'selected'; | ||||
} | ||||
}); | ||||
}); | ||||
r1888 | </script> | |||
</%def> | ||||