Mercurial > kallithea
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 » | |
11 ${h.link_to(_('UsersGroups'),h.url('users_groups'))} | |
12 » | |
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> |