Mercurial > kallithea
comparison pylons_app/templates/admin/repos/repo_edit.html @ 362:558eb7c5028f rhodecode-0.0.0.8.0
version bump to 0.8
hg app 0.8 new template.
Add yui flot and graph into summary page.
+ various tweeks and patches into look of application
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 24 Jul 2010 02:17:48 +0200 |
parents | cec5cbc956c0 |
children | 0f35fa0f4eb8 |
comparison
equal
deleted
inserted
replaced
361:3581656180b7 | 362:558eb7c5028f |
---|---|
2 <%inherit file="/base/base.html"/> | 2 <%inherit file="/base/base.html"/> |
3 | 3 |
4 <%def name="title()"> | 4 <%def name="title()"> |
5 ${_('Repositories administration')} | 5 ${_('Repositories administration')} |
6 </%def> | 6 </%def> |
7 <%def name="breadcrumbs()"> | 7 |
8 ${h.link_to(u'Admin',h.url('admin_home'))} | 8 <%def name="breadcrumbs_links()"> |
9 / | 9 ${h.link_to(_('Admin'),h.url('admin_home'))} |
10 ${_('Repos')} | 10 » |
11 ${h.link_to(_('Repositories'),h.url('repos'))} | |
12 » | |
13 ${_('edit')} "${c.repo_name}" | |
11 </%def> | 14 </%def> |
15 | |
12 <%def name="page_nav()"> | 16 <%def name="page_nav()"> |
13 ${self.menu('admin')} | 17 ${self.menu('admin')} |
14 ${self.submenu('repos')} | |
15 </%def> | 18 </%def> |
19 | |
16 <%def name="main()"> | 20 <%def name="main()"> |
17 <div> | 21 <div class="box"> |
18 <h2>${_('Repositories')} - ${_('edit')} "${c.repo_name}"</h2> | 22 <!-- box / title --> |
19 ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='put')} | 23 <div class="title"> |
20 <table> | 24 ${self.breadcrumbs()} |
21 <tr> | 25 </div> |
22 <td>${_('Name')}</td> | 26 ${h.form(url('repo', repo_name=c.repo_info.repo_name),method='put')} |
23 <td>${h.text('repo_name',size="28")}</td> | 27 <div class="form"> |
24 <td>${self.get_form_error('repo_name')}</td> | 28 <!-- fields --> |
25 </tr> | 29 <div class="fields"> |
26 <tr> | 30 <div class="field"> |
27 <td>${_('Description')}</td> | 31 <div class="label"> |
28 <td>${h.textarea('description',cols=32,rows=5)}</td> | 32 <label for="repo_name">${_('Name')}:</label> |
29 <td>${self.get_form_error('description')}</td> | 33 </div> |
30 </tr> | 34 <div class="input input-medium"> |
31 <tr> | 35 ${h.text('repo_name')} |
32 <td>${_('Private')}</td> | 36 </div> |
33 <td>${h.checkbox('private',value="True")}</td> | 37 </div> |
34 <td>${self.get_form_error('private')}</td> | 38 |
35 </tr> | 39 <div class="field"> |
36 <tr> | 40 <div class="label label-textarea"> |
37 <td>${_('Owner')}</td> | 41 <label for="description">${_('Description')}:</label> |
38 <td class='ac'> | 42 </div> |
39 <div class="perm_ac"> | 43 <div class="textarea text-area editor"> |
40 ${h.text('user',class_='yui-ac-input')} | 44 ${h.textarea('description',cols=23,rows=5)} |
41 <div id="owner_container"></div> | 45 </div> |
42 </div> | 46 </div> |
43 </td> | 47 |
44 <td>${self.get_form_error('user')}</td> | 48 <div class="field"> |
45 </tr> | 49 <div class="label label-checkbox"> |
46 <tr> | 50 <label for="private">${_('Private')}:</label> |
47 <td>${_('Permissions')}</td> | 51 </div> |
48 <td> | 52 <div class="checkboxes"> |
49 <table> | 53 ${h.checkbox('private',value="True")} |
50 <tr> | 54 </div> |
51 <td>${_('none')}</td> | 55 </div> |
52 <td>${_('read')}</td> | 56 |
53 <td>${_('write')}</td> | 57 <div class="field"> |
54 <td>${_('admin')}</td> | 58 <div class="label label-checkbox"> |
55 <td>${_('user')}</td> | 59 <label for="user">${_('Owner')}:</label> |
56 </tr> | 60 </div> |
57 | 61 <div class="input input-small ac"> |
58 %for r2p in c.repo_info.repo2perm: | 62 <div class="perm_ac"> |
59 %if r2p.user.username =='default' and c.repo_info.private: | 63 ${h.text('user',class_='yui-ac-input')} |
60 <tr> | 64 <div id="owner_container"></div> |
61 <td colspan="4"> | 65 </div> |
62 <span style="font-size: 0.8em">${_('disabled for private repository')}</span></td> | 66 </div> |
63 <td>${r2p.user.username}</td> | 67 </div> |
64 </tr> | 68 |
65 %else: | 69 <div class="field"> |
66 <tr id="id${id(r2p.user.username)}"> | 70 <div class="label"> |
67 <td>${h.radio('perm_%s' % r2p.user.username,'repository.none')}</td> | 71 <label for="input">${_('Permissions')}:</label> |
68 <td>${h.radio('perm_%s' % r2p.user.username,'repository.read')}</td> | 72 </div> |
69 <td>${h.radio('perm_%s' % r2p.user.username,'repository.write')}</td> | 73 <div class="input"> |
70 <td>${h.radio('perm_%s' % r2p.user.username,'repository.admin')}</td> | 74 <table id="permissions_manage"> |
71 <td>${r2p.user.username}</td> | 75 <tr> |
72 <td> | 76 <td>${_('none')}</td> |
73 %if r2p.user.username !='default': | 77 <td>${_('read')}</td> |
74 <span class="delete_icon action_button" onclick="ajaxAction(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')"> | 78 <td>${_('write')}</td> |
75 <script type="text/javascript"> | 79 <td>${_('admin')}</td> |
76 function ajaxAction(user_id,field_id){ | 80 <td>${_('user')}</td> |
77 var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; | 81 <td></td> |
78 var callback = { success:function(o){ | 82 </tr> |
79 var tr = YAHOO.util.Dom.get(String(field_id)); | 83 |
80 tr.parentNode.removeChild(tr);}}; | 84 %for r2p in c.repo_info.repo2perm: |
81 var postData = '_method=delete&user_id='+user_id; | 85 %if r2p.user.username =='default' and c.repo_info.private: |
82 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);}; | 86 <tr> |
83 </script> | 87 <td colspan="6"> |
84 </span> | 88 <span class="private_repo_msg"> |
85 %endif | 89 ${_('disabled for private repository')} |
86 </td> | 90 </span> |
87 </tr> | 91 </td> |
88 %endif | 92 <td>${r2p.user.username}</td> |
89 %endfor | 93 </tr> |
90 <% | 94 %else: |
91 if not hasattr(c,'form_errors'): | 95 <tr id="id${id(r2p.user.username)}"> |
92 d = 'display:none;' | 96 <td>${h.radio('perm_%s' % r2p.user.username,'repository.none')}</td> |
93 else: | 97 <td>${h.radio('perm_%s' % r2p.user.username,'repository.read')}</td> |
94 d='' | 98 <td>${h.radio('perm_%s' % r2p.user.username,'repository.write')}</td> |
95 %> | 99 <td>${h.radio('perm_%s' % r2p.user.username,'repository.admin')}</td> |
96 | 100 <td>${r2p.user.username}</td> |
97 <tr id="add_perm_input" style="${d}"> | 101 <td> |
98 <td>${h.radio('perm_new_user','repository.none')}</td> | 102 %if r2p.user.username !='default': |
99 <td>${h.radio('perm_new_user','repository.read')}</td> | 103 <span class="delete_icon action_button" onclick="ajaxAction(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')"> |
100 <td>${h.radio('perm_new_user','repository.write')}</td> | 104 <script type="text/javascript"> |
101 <td>${h.radio('perm_new_user','repository.admin')}</td> | 105 function ajaxAction(user_id,field_id){ |
102 <td class='ac'> | 106 var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}"; |
103 <div class="perm_ac" id="perm_ac"> | 107 var callback = { success:function(o){ |
104 ${h.text('perm_new_user_name',class_='yui-ac-input')} | 108 var tr = YAHOO.util.Dom.get(String(field_id)); |
105 <div id="perm_container"></div> | 109 tr.parentNode.removeChild(tr);}}; |
106 </div> | 110 var postData = '_method=delete&user_id='+user_id; |
107 </td> | 111 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);}; |
108 <td>${self.get_form_error('perm_new_user_name')}</td> | 112 </script> |
109 </tr> | 113 </span> |
110 <tr> | 114 %endif |
111 <td colspan="4"> | 115 </td> |
112 <span id="add_perm" class="add_icon" style="cursor: pointer;"> | 116 </tr> |
113 ${_('Add another user')} | 117 %endif |
114 </span> | 118 %endfor |
115 </td> | 119 |
116 </tr> | 120 <tr id="add_perm_input" > |
117 </table> | 121 <td>${h.radio('perm_new_user','repository.none')}</td> |
118 </td> | 122 <td>${h.radio('perm_new_user','repository.read')}</td> |
119 | 123 <td>${h.radio('perm_new_user','repository.write')}</td> |
120 </tr> | 124 <td>${h.radio('perm_new_user','repository.admin')}</td> |
121 <tr> | 125 <td class='ac'> |
122 <td></td> | 126 <div class="perm_ac" id="perm_ac"> |
123 <td>${h.submit('update','update')}</td> | 127 ${h.text('perm_new_user_name',class_='yui-ac-input')} |
124 </tr> | 128 <div id="perm_container"></div> |
125 | 129 </div> |
126 </table> | 130 </td> |
127 ${h.end_form()} | 131 <td></td> |
132 </tr> | |
133 <tr> | |
134 <td colspan="6"> | |
135 <span id="add_perm" class="add_icon" style="cursor: pointer;"> | |
136 ${_('Add another user')} | |
137 </span> | |
138 </td> | |
139 </tr> | |
140 </table> | |
141 </div> | |
142 | |
143 <div class="buttons"> | |
144 ${h.submit('save','save',class_="ui-button ui-widget ui-state-default ui-corner-all")} | |
145 </div> | |
146 </div> | |
147 </div> | |
148 </div> | |
149 ${h.end_form()} | |
128 <script type="text/javascript"> | 150 <script type="text/javascript"> |
129 YAHOO.util.Event.onDOMReady(function(){ | 151 YAHOO.util.Event.onDOMReady(function(){ |
130 var D = YAHOO.util.Dom; | 152 var D = YAHOO.util.Dom; |
131 YAHOO.util.Event.addListener('add_perm','click',function(){ | 153 if(!D.hasClass('perm_new_user_name','error')){ |
132 D.setStyle('add_perm_input','display',''); | 154 D.setStyle('add_perm_input','display','none'); |
133 D.setStyle('add_perm','opacity','0.6'); | 155 } |
134 D.setStyle('add_perm','cursor','default'); | 156 YAHOO.util.Event.addListener('add_perm','click',function(){ |
135 }); | 157 D.setStyle('add_perm_input','display',''); |
158 D.setStyle('add_perm','opacity','0.6'); | |
159 D.setStyle('add_perm','cursor','default'); | |
160 }); | |
136 }); | 161 }); |
137 </script> | 162 </script> |
138 <script type="text/javascript"> | 163 <script type="text/javascript"> |
139 YAHOO.example.FnMultipleFields = function(){ | 164 YAHOO.example.FnMultipleFields = function(){ |
140 var myContacts = ${c.users_array|n} | 165 var myContacts = ${c.users_array|n} |
141 | 166 |
142 // Define a custom search function for the DataSource | 167 // Define a custom search function for the DataSource |
143 var matchNames = function(sQuery) { | 168 var matchNames = function(sQuery) { |
144 // Case insensitive matching | 169 // Case insensitive matching |
145 var query = sQuery.toLowerCase(), | 170 var query = sQuery.toLowerCase(), |
146 contact, | 171 contact, |
147 i=0, | 172 i=0, |
148 l=myContacts.length, | 173 l=myContacts.length, |
149 matches = []; | 174 matches = []; |
150 | 175 |
151 // Match against each name of each contact | 176 // Match against each name of each contact |
152 for(; i<l; i++) { | 177 for(; i<l; i++) { |
153 contact = myContacts[i]; | 178 contact = myContacts[i]; |
154 if((contact.fname.toLowerCase().indexOf(query) > -1) || | 179 if((contact.fname.toLowerCase().indexOf(query) > -1) || |
155 (contact.lname.toLowerCase().indexOf(query) > -1) || | 180 (contact.lname.toLowerCase().indexOf(query) > -1) || |
156 (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { | 181 (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { |
157 matches[matches.length] = contact; | 182 matches[matches.length] = contact; |
158 } | 183 } |
159 } | 184 } |
160 | 185 |
161 return matches; | 186 return matches; |
162 }; | 187 }; |
163 | 188 |
164 // Use a FunctionDataSource | 189 // Use a FunctionDataSource |
165 var oDS = new YAHOO.util.FunctionDataSource(matchNames); | 190 var oDS = new YAHOO.util.FunctionDataSource(matchNames); |
166 oDS.responseSchema = { | 191 oDS.responseSchema = { |
167 fields: ["id", "fname", "lname", "nname"] | 192 fields: ["id", "fname", "lname", "nname"] |
168 } | 193 } |
169 | 194 |
170 // Instantiate AutoComplete for perms | 195 // Instantiate AutoComplete for perms |
171 var oAC_perms = new YAHOO.widget.AutoComplete("perm_new_user_name", "perm_container", oDS); | 196 var oAC_perms = new YAHOO.widget.AutoComplete("perm_new_user_name", "perm_container", oDS); |
172 oAC_perms.useShadow = false; | 197 oAC_perms.useShadow = false; |
173 oAC_perms.resultTypeList = false; | 198 oAC_perms.resultTypeList = false; |
174 | 199 |
175 // Instantiate AutoComplete for owner | 200 // Instantiate AutoComplete for owner |
176 var oAC_owner = new YAHOO.widget.AutoComplete("user", "owner_container", oDS); | 201 var oAC_owner = new YAHOO.widget.AutoComplete("user", "owner_container", oDS); |
177 oAC_owner.useShadow = false; | 202 oAC_owner.useShadow = false; |
178 oAC_owner.resultTypeList = false; | 203 oAC_owner.resultTypeList = false; |
179 | 204 |
180 | 205 |
181 // Custom formatter to highlight the matching letters | 206 // Custom formatter to highlight the matching letters |
182 var custom_formatter = function(oResultData, sQuery, sResultMatch) { | 207 var custom_formatter = function(oResultData, sQuery, sResultMatch) { |
183 var query = sQuery.toLowerCase(), | 208 var query = sQuery.toLowerCase(), |
184 fname = oResultData.fname, | 209 fname = oResultData.fname, |
185 lname = oResultData.lname, | 210 lname = oResultData.lname, |
186 nname = oResultData.nname || "", // Guard against null value | 211 nname = oResultData.nname || "", // Guard against null value |
187 query = sQuery.toLowerCase(), | 212 query = sQuery.toLowerCase(), |
188 fnameMatchIndex = fname.toLowerCase().indexOf(query), | 213 fnameMatchIndex = fname.toLowerCase().indexOf(query), |
189 lnameMatchIndex = lname.toLowerCase().indexOf(query), | 214 lnameMatchIndex = lname.toLowerCase().indexOf(query), |
190 nnameMatchIndex = nname.toLowerCase().indexOf(query), | 215 nnameMatchIndex = nname.toLowerCase().indexOf(query), |
191 displayfname, displaylname, displaynname; | 216 displayfname, displaylname, displaynname; |
192 | 217 |
193 if(fnameMatchIndex > -1) { | 218 if(fnameMatchIndex > -1) { |
194 displayfname = highlightMatch(fname, query, fnameMatchIndex); | 219 displayfname = highlightMatch(fname, query, fnameMatchIndex); |
195 } | 220 } |
196 else { | 221 else { |
197 displayfname = fname; | 222 displayfname = fname; |
198 } | 223 } |
199 | 224 |
200 if(lnameMatchIndex > -1) { | 225 if(lnameMatchIndex > -1) { |
201 displaylname = highlightMatch(lname, query, lnameMatchIndex); | 226 displaylname = highlightMatch(lname, query, lnameMatchIndex); |
202 } | 227 } |
203 else { | 228 else { |
204 displaylname = lname; | 229 displaylname = lname; |
205 } | 230 } |
206 | 231 |
207 if(nnameMatchIndex > -1) { | 232 if(nnameMatchIndex > -1) { |
208 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")"; | 233 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")"; |
209 } | 234 } |
210 else { | 235 else { |
211 displaynname = nname ? "(" + nname + ")" : ""; | 236 displaynname = nname ? "(" + nname + ")" : ""; |
212 } | 237 } |
213 | 238 |
214 return displayfname + " " + displaylname + " " + displaynname; | 239 return displayfname + " " + displaylname + " " + displaynname; |
215 | 240 |
216 }; | 241 }; |
217 oAC_perms.formatResult = custom_formatter; | 242 oAC_perms.formatResult = custom_formatter; |
218 oAC_owner.formatResult = custom_formatter; | 243 oAC_owner.formatResult = custom_formatter; |
219 | 244 |
220 // Helper function for the formatter | 245 // Helper function for the formatter |
221 var highlightMatch = function(full, snippet, matchindex) { | 246 var highlightMatch = function(full, snippet, matchindex) { |
222 return full.substring(0, matchindex) + | 247 return full.substring(0, matchindex) + |
223 "<span class='match'>" + | 248 "<span class='match'>" + |
224 full.substr(matchindex, snippet.length) + | 249 full.substr(matchindex, snippet.length) + |
225 "</span>" + | 250 "</span>" + |
226 full.substring(matchindex + snippet.length); | 251 full.substring(matchindex + snippet.length); |
227 }; | 252 }; |
228 | 253 |
229 var myHandler = function(sType, aArgs) { | 254 var myHandler = function(sType, aArgs) { |
230 var myAC = aArgs[0]; // reference back to the AC instance | 255 var myAC = aArgs[0]; // reference back to the AC instance |
231 var elLI = aArgs[1]; // reference to the selected LI element | 256 var elLI = aArgs[1]; // reference to the selected LI element |
232 var oData = aArgs[2]; // object literal of selected item's result data | 257 var oData = aArgs[2]; // object literal of selected item's result data |
233 myAC.getInputEl().value = oData.nname; | 258 myAC.getInputEl().value = oData.nname; |
234 }; | 259 }; |
235 | 260 |
236 oAC_perms.itemSelectEvent.subscribe(myHandler); | 261 oAC_perms.itemSelectEvent.subscribe(myHandler); |
237 oAC_owner.itemSelectEvent.subscribe(myHandler); | 262 oAC_owner.itemSelectEvent.subscribe(myHandler); |
238 | 263 |
239 return { | 264 return { |
240 oDS: oDS, | 265 oDS: oDS, |
241 oAC_perms: oAC_perms, | 266 oAC_perms: oAC_perms, |
242 oAC_owner: oAC_owner, | 267 oAC_owner: oAC_owner, |
243 }; | 268 }; |
244 }(); | 269 }(); |
245 | 270 |
246 </script> | 271 </script> |
247 </div> | 272 |
248 </%def> | 273 </div> |
274 </%def> |