comparison rhodecode/templates/admin/users_groups/users_group_edit.html @ 972:2c8fd84935a4 beta

#56 implemented users groups editing, fixed sqlalchemy relation function into relationship (according to 0.6)
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 28 Jan 2011 18:40:50 +0100
parents 83d35d716a02
children 4e38b2bc8835
comparison
equal deleted inserted replaced
971:c5868406fdb0 972:2c8fd84935a4
1 ## -*- coding: utf-8 -*-
2 <%inherit file="/base/base.html"/>
3
4 <%def name="title()">
5 ${_('Edit users group')} ${c.users_group.users_group_name} - ${c.rhodecode_name}
6 </%def>
7
8 <%def name="breadcrumbs_links()">
9 ${h.link_to(_('Admin'),h.url('admin_home'))}
10 &raquo;
11 ${h.link_to(_('UsersGroups'),h.url('users_groups'))}
12 &raquo;
13 ${_('edit')} "${c.users_group.users_group_name}"
14 </%def>
15
16 <%def name="page_nav()">
17 ${self.menu('admin')}
18 </%def>
19
20 <%def name="main()">
21 <div class="box">
22 <!-- box / title -->
23 <div class="title">
24 ${self.breadcrumbs()}
25 </div>
26 <!-- end box / title -->
27 ${h.form(url('users_group', id=c.users_group.users_group_id),method='put', id='edit_users_group')}
28 <div class="form">
29 <!-- fields -->
30 <div class="fields">
31 <div class="field">
32 <div class="label">
33 <label for="users_group_name">${_('Group name')}:</label>
34 </div>
35 <div class="input">
36 ${h.text('users_group_name',class_='small')}
37 </div>
38 </div>
39
40 <div class="field">
41 <div class="label label-checkbox">
42 <label for="users_group_active">${_('Active')}:</label>
43 </div>
44 <div class="checkboxes">
45 ${h.checkbox('users_group_active',value=True)}
46 </div>
47 </div>
48 <div class="field">
49 <div class="label label-checkbox">
50 <label for="users_group_active">${_('Members')}:</label>
51 </div>
52 <div class="checkboxes">
53 <table>
54 <tr>
55 <td>
56 <div>
57 <div style="float:left">
58 <div class="text">${_('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")}
60 </div>
61 <div style="float:left;width:20px;padding-top:50px">
62 <img alt="add" id="add_element"
63 style="padding:2px;cursor:pointer"
64 src="/images/icons/arrow_left.png">
65 <br />
66 <img alt="remove" id="remove_element"
67 style="padding:2px;cursor:pointer"
68 src="/images/icons/arrow_right.png">
69 </div>
70 <div style="float:left">
71 <div class="text">${_('Available members')}</div>
72 ${h.select('available_members',[],c.available_members,multiple=True,size=8,style="min-width:210px")}
73 </div>
74 </div>
75 </td>
76 </tr>
77 </table>
78 </div>
79
80 </div>
81 <div class="buttons">
82 ${h.submit('save','save',class_="ui-button")}
83 </div>
84 </div>
85 </div>
86 ${h.end_form()}
87 </div>
88
89 <script type="text/javascript">
90 YAHOO.util.Event.onDOMReady(function(){
91 var D = YAHOO.util.Dom;
92 var E = YAHOO.util.Event;
93
94 //definition of containers ID's
95 var available_container = 'available_members';
96 var selected_container = 'users_group_members';
97 //form containing containers id
98 var form_id = 'edit_users_group';
99
100 //temp container for storage.
101 var cache = new Array();
102 var c = D.get(selected_container);
103
104 //get only selected options for further fullfilment
105 for(var i = 0;node =c.options[i];i++){
106 if(node.selected){
107 //push selected to my temp storage left overs :)
108 cache.push(node);
109 }
110 }
111
112 //clear 'selected' select
113 c.options.length = 0;
114
115 //fill it with remembered options
116 for(var i = 0;node = cache[i];i++){
117 c.options[i]=new Option(node.text, node.value, false, false);
118 }
119
120 function prompts_action_callback(e){
121
122 var choosen = D.get(selected_container);
123 var availible = D.get(available_container);
124
125 if (this.id=='add_element'){
126 for(var i=0; node = availible.options[i];i++){
127 if(node.selected){
128 choosen.appendChild(new Option(node.text, node.value, false, false));
129 }
130 }
131 }
132 else if (this.id=='remove_element'){
133
134 //temp container for storage.
135 cache = new Array();
136
137 for(var i = 0;node = choosen.options[i];i++){
138 if(!node.selected){
139 //push left overs :)
140 cache.push(node);
141 }
142 }
143 //clear select
144 choosen.options.length = 0;
145 for(var i = 0;node = cache[i];i++){
146 choosen.options[i]=new Option(node.text, node.value, false, false);
147 }
148 }
149 else{
150
151 }
152 }
153
154
155 E.addListener(['add_element','remove_element'],'click',prompts_action_callback)
156
157 E.addListener(form_id,'submit',function(){
158 var choosen = D.get(selected_container);
159 for (var i = 0; i < choosen.options.length; i++) {
160 choosen.options[i].selected = 'selected';
161 }
162 })
163 });
164 </script>
165
166 </%def>