##// END OF EJS Templates
added "add group" shortcuts for admins, and group admins
marcink -
r3369:667630c9 beta
parent child Browse files
Show More
@@ -1,334 +1,340 b''
1 <%page args="parent" />
1 <%page args="parent" />
2 <div class="box">
2 <div class="box">
3 <!-- box / title -->
3 <!-- box / title -->
4 <div class="title">
4 <div class="title">
5 <h5>
5 <h5>
6 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> ${parent.breadcrumbs()} <span id="repo_count">0</span> ${_('repositories')}
6 <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/> ${parent.breadcrumbs()} <span id="repo_count">0</span> ${_('repositories')}
7 </h5>
7 </h5>
8 %if c.rhodecode_user.username != 'default':
8 %if c.rhodecode_user.username != 'default':
9 <ul class="links">
9 <ul class="links">
10 %if h.HasPermissionAny('hg.admin','hg.create.repository')() or h.HasReposGroupPermissionAny('group.write', 'group.admin')(c.group.group_name if c.group else None):
10 %if h.HasPermissionAny('hg.admin','hg.create.repository')() or h.HasReposGroupPermissionAny('group.write', 'group.admin')(c.group.group_name if c.group else None):
11 <li>
11 <li>
12 %if c.group:
12 %if c.group:
13 <span>${h.link_to(_('Add repository'),h.url('admin_settings_create_repository',parent_group=c.group.group_id))}</span>
13 <span>${h.link_to(_('Add repository'),h.url('admin_settings_create_repository',parent_group=c.group.group_id))}</span>
14 %if h.HasPermissionAny('hg.admin')() or h.HasReposGroupPermissionAny('group.admin')(c.group.group_name):
15 <span>${h.link_to(_(u'Add group'),h.url('new_repos_group', parent_group=c.group.group_id))}</span>
16 %endif
14 %else:
17 %else:
15 <span>${h.link_to(_('Add repository'),h.url('admin_settings_create_repository'))}</span>
18 <span>${h.link_to(_('Add repository'),h.url('admin_settings_create_repository'))}</span>
19 %if h.HasPermissionAny('hg.admin')():
20 <span>${h.link_to(_(u'Add group'),h.url('new_repos_group'))}</span>
21 %endif
16 %endif
22 %endif
17 </li>
23 </li>
18 %endif
24 %endif
19 %if c.group and h.HasReposGroupPermissionAny('group.admin')(c.group.group_name):
25 %if c.group and h.HasReposGroupPermissionAny('group.admin')(c.group.group_name):
20 <li>
26 <li>
21 <span>${h.link_to(_('Edit group'),h.url('edit_repos_group',group_name=c.group.group_name), title=_('You have admin right to this group, and can edit it'))}</span>
27 <span>${h.link_to(_('Edit group'),h.url('edit_repos_group',group_name=c.group.group_name), title=_('You have admin right to this group, and can edit it'))}</span>
22 </li>
28 </li>
23 %endif
29 %endif
24 </ul>
30 </ul>
25 %endif
31 %endif
26 </div>
32 </div>
27 <!-- end box / title -->
33 <!-- end box / title -->
28 <div class="table">
34 <div class="table">
29 % if c.groups:
35 % if c.groups:
30 <div id='groups_list_wrap' class="yui-skin-sam">
36 <div id='groups_list_wrap' class="yui-skin-sam">
31 <table id="groups_list">
37 <table id="groups_list">
32 <thead>
38 <thead>
33 <tr>
39 <tr>
34 <th class="left"><a href="#">${_('Group name')}</a></th>
40 <th class="left"><a href="#">${_('Group name')}</a></th>
35 <th class="left"><a href="#">${_('Description')}</a></th>
41 <th class="left"><a href="#">${_('Description')}</a></th>
36 ##<th class="left"><a href="#">${_('Number of repositories')}</a></th>
42 ##<th class="left"><a href="#">${_('Number of repositories')}</a></th>
37 </tr>
43 </tr>
38 </thead>
44 </thead>
39
45
40 ## REPO GROUPS
46 ## REPO GROUPS
41 % for gr in c.groups:
47 % for gr in c.groups:
42 <tr>
48 <tr>
43 <td>
49 <td>
44 <div style="white-space: nowrap">
50 <div style="white-space: nowrap">
45 <img class="icon" alt="${_('Repositories group')}" src="${h.url('/images/icons/database_link.png')}"/>
51 <img class="icon" alt="${_('Repositories group')}" src="${h.url('/images/icons/database_link.png')}"/>
46 ${h.link_to(gr.name,url('repos_group_home',group_name=gr.group_name))}
52 ${h.link_to(gr.name,url('repos_group_home',group_name=gr.group_name))}
47 </div>
53 </div>
48 </td>
54 </td>
49 %if c.visual.stylify_metatags:
55 %if c.visual.stylify_metatags:
50 <td>${h.urlify_text(h.desc_stylize(gr.group_description))}</td>
56 <td>${h.urlify_text(h.desc_stylize(gr.group_description))}</td>
51 %else:
57 %else:
52 <td>${gr.group_description}</td>
58 <td>${gr.group_description}</td>
53 %endif
59 %endif
54 ## this is commented out since for multi nested repos can be HEAVY!
60 ## this is commented out since for multi nested repos can be HEAVY!
55 ## in number of executed queries during traversing uncomment at will
61 ## in number of executed queries during traversing uncomment at will
56 ##<td><b>${gr.repositories_recursive_count}</b></td>
62 ##<td><b>${gr.repositories_recursive_count}</b></td>
57 </tr>
63 </tr>
58 % endfor
64 % endfor
59 </table>
65 </table>
60 </div>
66 </div>
61 <div id="group-user-paginator" style="padding: 0px 0px 0px 0px"></div>
67 <div id="group-user-paginator" style="padding: 0px 0px 0px 0px"></div>
62 <div style="height: 20px"></div>
68 <div style="height: 20px"></div>
63 % endif
69 % endif
64 <div id="welcome" style="display:none;text-align:center">
70 <div id="welcome" style="display:none;text-align:center">
65 <h1><a href="${h.url('home')}">${c.rhodecode_name} ${c.rhodecode_version}</a></h1>
71 <h1><a href="${h.url('home')}">${c.rhodecode_name} ${c.rhodecode_version}</a></h1>
66 </div>
72 </div>
67 <%cnt=0%>
73 <%cnt=0%>
68 <%namespace name="dt" file="/data_table/_dt_elements.html"/>
74 <%namespace name="dt" file="/data_table/_dt_elements.html"/>
69 % if c.visual.lightweight_dashboard is False:
75 % if c.visual.lightweight_dashboard is False:
70 ## old full detailed version
76 ## old full detailed version
71 <div id='repos_list_wrap' class="yui-skin-sam">
77 <div id='repos_list_wrap' class="yui-skin-sam">
72 <table id="repos_list">
78 <table id="repos_list">
73 <thead>
79 <thead>
74 <tr>
80 <tr>
75 <th class="left"></th>
81 <th class="left"></th>
76 <th class="left">${_('Name')}</th>
82 <th class="left">${_('Name')}</th>
77 <th class="left">${_('Description')}</th>
83 <th class="left">${_('Description')}</th>
78 <th class="left">${_('Last change')}</th>
84 <th class="left">${_('Last change')}</th>
79 <th class="left">${_('Tip')}</th>
85 <th class="left">${_('Tip')}</th>
80 <th class="left">${_('Owner')}</th>
86 <th class="left">${_('Owner')}</th>
81 <th class="left">${_('Atom')}</th>
87 <th class="left">${_('Atom')}</th>
82 </tr>
88 </tr>
83 </thead>
89 </thead>
84 <tbody>
90 <tbody>
85 %for cnt,repo in enumerate(c.repos_list):
91 %for cnt,repo in enumerate(c.repos_list):
86 <tr class="parity${(cnt+1)%2}">
92 <tr class="parity${(cnt+1)%2}">
87 ##QUICK MENU
93 ##QUICK MENU
88 <td class="quick_repo_menu">
94 <td class="quick_repo_menu">
89 ${dt.quick_menu(repo['name'])}
95 ${dt.quick_menu(repo['name'])}
90 </td>
96 </td>
91 ##REPO NAME AND ICONS
97 ##REPO NAME AND ICONS
92 <td class="reponame">
98 <td class="reponame">
93 ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],h.AttributeDict(repo['dbrepo_fork']),pageargs.get('short_repo_names'))}
99 ${dt.repo_name(repo['name'],repo['dbrepo']['repo_type'],repo['dbrepo']['private'],h.AttributeDict(repo['dbrepo_fork']),pageargs.get('short_repo_names'))}
94 </td>
100 </td>
95 ##DESCRIPTION
101 ##DESCRIPTION
96 <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
102 <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
97 %if c.visual.stylify_metatags:
103 %if c.visual.stylify_metatags:
98 ${h.urlify_text(h.desc_stylize(h.truncate(repo['description'],60)))}</span>
104 ${h.urlify_text(h.desc_stylize(h.truncate(repo['description'],60)))}</span>
99 %else:
105 %else:
100 ${h.truncate(repo['description'],60)}</span>
106 ${h.truncate(repo['description'],60)}</span>
101 %endif
107 %endif
102 </td>
108 </td>
103 ##LAST CHANGE DATE
109 ##LAST CHANGE DATE
104 <td>
110 <td>
105 ${dt.last_change(repo['last_change'])}
111 ${dt.last_change(repo['last_change'])}
106 </td>
112 </td>
107 ##LAST REVISION
113 ##LAST REVISION
108 <td>
114 <td>
109 ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
115 ${dt.revision(repo['name'],repo['rev'],repo['tip'],repo['author'],repo['last_msg'])}
110 </td>
116 </td>
111 ##
117 ##
112 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
118 <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
113 <td>
119 <td>
114 ${dt.atom(repo['name'])}
120 ${dt.atom(repo['name'])}
115 </td>
121 </td>
116 </tr>
122 </tr>
117 %endfor
123 %endfor
118 </tbody>
124 </tbody>
119 </table>
125 </table>
120 </div>
126 </div>
121 % else:
127 % else:
122 ## lightweight version
128 ## lightweight version
123 <div class="yui-skin-sam" id="repos_list_wrap"></div>
129 <div class="yui-skin-sam" id="repos_list_wrap"></div>
124 <div id="user-paginator" style="padding: 0px 0px 0px 0px"></div>
130 <div id="user-paginator" style="padding: 0px 0px 0px 0px"></div>
125 % endif
131 % endif
126 </div>
132 </div>
127 </div>
133 </div>
128 % if c.visual.lightweight_dashboard is False:
134 % if c.visual.lightweight_dashboard is False:
129 <script>
135 <script>
130 YUD.get('repo_count').innerHTML = ${cnt+1 if cnt else 0};
136 YUD.get('repo_count').innerHTML = ${cnt+1 if cnt else 0};
131
137
132 // groups table sorting
138 // groups table sorting
133 var myColumnDefs = [
139 var myColumnDefs = [
134 {key:"name",label:"${_('Group name')}",sortable:true,
140 {key:"name",label:"${_('Group name')}",sortable:true,
135 sortOptions: { sortFunction: groupNameSort }},
141 sortOptions: { sortFunction: groupNameSort }},
136 {key:"desc",label:"${_('Description')}",sortable:true},
142 {key:"desc",label:"${_('Description')}",sortable:true},
137 ];
143 ];
138
144
139 var myDataSource = new YAHOO.util.DataSource(YUD.get("groups_list"));
145 var myDataSource = new YAHOO.util.DataSource(YUD.get("groups_list"));
140
146
141 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
147 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
142 myDataSource.responseSchema = {
148 myDataSource.responseSchema = {
143 fields: [
149 fields: [
144 {key:"name"},
150 {key:"name"},
145 {key:"desc"},
151 {key:"desc"},
146 ]
152 ]
147 };
153 };
148
154
149 var myDataTable = new YAHOO.widget.DataTable("groups_list_wrap", myColumnDefs, myDataSource,{
155 var myDataTable = new YAHOO.widget.DataTable("groups_list_wrap", myColumnDefs, myDataSource,{
150 sortedBy:{key:"name",dir:"asc"},
156 sortedBy:{key:"name",dir:"asc"},
151 paginator: new YAHOO.widget.Paginator({
157 paginator: new YAHOO.widget.Paginator({
152 rowsPerPage: 50,
158 rowsPerPage: 50,
153 alwaysVisible: false,
159 alwaysVisible: false,
154 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
160 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
155 pageLinks: 5,
161 pageLinks: 5,
156 containerClass: 'pagination-wh',
162 containerClass: 'pagination-wh',
157 currentPageClass: 'pager_curpage',
163 currentPageClass: 'pager_curpage',
158 pageLinkClass: 'pager_link',
164 pageLinkClass: 'pager_link',
159 nextPageLinkLabel: '&gt;',
165 nextPageLinkLabel: '&gt;',
160 previousPageLinkLabel: '&lt;',
166 previousPageLinkLabel: '&lt;',
161 firstPageLinkLabel: '&lt;&lt;',
167 firstPageLinkLabel: '&lt;&lt;',
162 lastPageLinkLabel: '&gt;&gt;',
168 lastPageLinkLabel: '&gt;&gt;',
163 containers:['group-user-paginator']
169 containers:['group-user-paginator']
164 }),
170 }),
165 MSG_SORTASC:"${_('Click to sort ascending')}",
171 MSG_SORTASC:"${_('Click to sort ascending')}",
166 MSG_SORTDESC:"${_('Click to sort descending')}"
172 MSG_SORTDESC:"${_('Click to sort descending')}"
167 });
173 });
168
174
169 // main table sorting
175 // main table sorting
170 var myColumnDefs = [
176 var myColumnDefs = [
171 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
177 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
172 {key:"name",label:"${_('Name')}",sortable:true,
178 {key:"name",label:"${_('Name')}",sortable:true,
173 sortOptions: { sortFunction: nameSort }},
179 sortOptions: { sortFunction: nameSort }},
174 {key:"desc",label:"${_('Description')}",sortable:true},
180 {key:"desc",label:"${_('Description')}",sortable:true},
175 {key:"last_change",label:"${_('Last Change')}",sortable:true,
181 {key:"last_change",label:"${_('Last Change')}",sortable:true,
176 sortOptions: { sortFunction: ageSort }},
182 sortOptions: { sortFunction: ageSort }},
177 {key:"tip",label:"${_('Tip')}",sortable:true,
183 {key:"tip",label:"${_('Tip')}",sortable:true,
178 sortOptions: { sortFunction: revisionSort }},
184 sortOptions: { sortFunction: revisionSort }},
179 {key:"owner",label:"${_('Owner')}",sortable:true},
185 {key:"owner",label:"${_('Owner')}",sortable:true},
180 {key:"atom",label:"",sortable:false},
186 {key:"atom",label:"",sortable:false},
181 ];
187 ];
182
188
183 var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
189 var myDataSource = new YAHOO.util.DataSource(YUD.get("repos_list"));
184
190
185 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
191 myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
186
192
187 myDataSource.responseSchema = {
193 myDataSource.responseSchema = {
188 fields: [
194 fields: [
189 {key:"menu"},
195 {key:"menu"},
190 //{key:"raw_name"},
196 //{key:"raw_name"},
191 {key:"name"},
197 {key:"name"},
192 {key:"desc"},
198 {key:"desc"},
193 {key:"last_change"},
199 {key:"last_change"},
194 {key:"tip"},
200 {key:"tip"},
195 {key:"owner"},
201 {key:"owner"},
196 {key:"atom"},
202 {key:"atom"},
197 ]
203 ]
198 };
204 };
199
205
200 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,
206 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,
201 {
207 {
202 sortedBy:{key:"name",dir:"asc"},
208 sortedBy:{key:"name",dir:"asc"},
203 MSG_SORTASC:"${_('Click to sort ascending')}",
209 MSG_SORTASC:"${_('Click to sort ascending')}",
204 MSG_SORTDESC:"${_('Click to sort descending')}",
210 MSG_SORTDESC:"${_('Click to sort descending')}",
205 MSG_EMPTY:"${_('No records found.')}",
211 MSG_EMPTY:"${_('No records found.')}",
206 MSG_ERROR:"${_('Data error.')}",
212 MSG_ERROR:"${_('Data error.')}",
207 MSG_LOADING:"${_('Loading...')}",
213 MSG_LOADING:"${_('Loading...')}",
208 }
214 }
209 );
215 );
210 myDataTable.subscribe('postRenderEvent',function(oArgs) {
216 myDataTable.subscribe('postRenderEvent',function(oArgs) {
211 tooltip_activate();
217 tooltip_activate();
212 quick_repo_menu();
218 quick_repo_menu();
213 var func = function(node){
219 var func = function(node){
214 return node.parentNode.parentNode.parentNode.parentNode;
220 return node.parentNode.parentNode.parentNode.parentNode;
215 }
221 }
216 q_filter('q_filter',YUQ('div.table tr td a.repo_name'),func);
222 q_filter('q_filter',YUQ('div.table tr td a.repo_name'),func);
217 });
223 });
218
224
219 </script>
225 </script>
220 % else:
226 % else:
221 <script>
227 <script>
222 var data = ${c.data|n};
228 var data = ${c.data|n};
223 var myDataSource = new YAHOO.util.DataSource(data);
229 var myDataSource = new YAHOO.util.DataSource(data);
224 myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
230 myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
225
231
226 myDataSource.responseSchema = {
232 myDataSource.responseSchema = {
227 resultsList: "records",
233 resultsList: "records",
228 fields: [
234 fields: [
229 {key:"menu"},
235 {key:"menu"},
230 {key:"raw_name"},
236 {key:"raw_name"},
231 {key:"name"},
237 {key:"name"},
232 {key:"desc"},
238 {key:"desc"},
233 {key:"last_change"},
239 {key:"last_change"},
234 {key:"last_changeset"},
240 {key:"last_changeset"},
235 {key:"owner"},
241 {key:"owner"},
236 {key:"atom"},
242 {key:"atom"},
237 ]
243 ]
238 };
244 };
239 myDataSource.doBeforeCallback = function(req,raw,res,cb) {
245 myDataSource.doBeforeCallback = function(req,raw,res,cb) {
240 // This is the filter function
246 // This is the filter function
241 var data = res.results || [],
247 var data = res.results || [],
242 filtered = [],
248 filtered = [],
243 i,l;
249 i,l;
244
250
245 if (req) {
251 if (req) {
246 req = req.toLowerCase();
252 req = req.toLowerCase();
247 for (i = 0; i<data.length; i++) {
253 for (i = 0; i<data.length; i++) {
248 var pos = data[i].raw_name.toLowerCase().indexOf(req)
254 var pos = data[i].raw_name.toLowerCase().indexOf(req)
249 if (pos != -1) {
255 if (pos != -1) {
250 filtered.push(data[i]);
256 filtered.push(data[i]);
251 }
257 }
252 }
258 }
253 res.results = filtered;
259 res.results = filtered;
254 }
260 }
255 YUD.get('repo_count').innerHTML = res.results.length;
261 YUD.get('repo_count').innerHTML = res.results.length;
256 return res;
262 return res;
257 }
263 }
258
264
259 // main table sorting
265 // main table sorting
260 var myColumnDefs = [
266 var myColumnDefs = [
261 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
267 {key:"menu",label:"",sortable:false,className:"quick_repo_menu hidden"},
262 {key:"name",label:"${_('Name')}",sortable:true,
268 {key:"name",label:"${_('Name')}",sortable:true,
263 sortOptions: { sortFunction: nameSort }},
269 sortOptions: { sortFunction: nameSort }},
264 {key:"desc",label:"${_('Description')}",sortable:true},
270 {key:"desc",label:"${_('Description')}",sortable:true},
265 {key:"last_change",label:"${_('Last Change')}",sortable:true,
271 {key:"last_change",label:"${_('Last Change')}",sortable:true,
266 sortOptions: { sortFunction: ageSort }},
272 sortOptions: { sortFunction: ageSort }},
267 {key:"last_changeset",label:"${_('Tip')}",sortable:true,
273 {key:"last_changeset",label:"${_('Tip')}",sortable:true,
268 sortOptions: { sortFunction: revisionSort }},
274 sortOptions: { sortFunction: revisionSort }},
269 {key:"owner",label:"${_('Owner')}",sortable:true},
275 {key:"owner",label:"${_('Owner')}",sortable:true},
270 {key:"atom",label:"",sortable:false},
276 {key:"atom",label:"",sortable:false},
271 ];
277 ];
272
278
273 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
279 var myDataTable = new YAHOO.widget.DataTable("repos_list_wrap", myColumnDefs, myDataSource,{
274 sortedBy:{key:"name",dir:"asc"},
280 sortedBy:{key:"name",dir:"asc"},
275 paginator: new YAHOO.widget.Paginator({
281 paginator: new YAHOO.widget.Paginator({
276 rowsPerPage: ${c.visual.lightweight_dashboard_items},
282 rowsPerPage: ${c.visual.lightweight_dashboard_items},
277 alwaysVisible: false,
283 alwaysVisible: false,
278 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
284 template : "{PreviousPageLink} {FirstPageLink} {PageLinks} {LastPageLink} {NextPageLink}",
279 pageLinks: 5,
285 pageLinks: 5,
280 containerClass: 'pagination-wh',
286 containerClass: 'pagination-wh',
281 currentPageClass: 'pager_curpage',
287 currentPageClass: 'pager_curpage',
282 pageLinkClass: 'pager_link',
288 pageLinkClass: 'pager_link',
283 nextPageLinkLabel: '&gt;',
289 nextPageLinkLabel: '&gt;',
284 previousPageLinkLabel: '&lt;',
290 previousPageLinkLabel: '&lt;',
285 firstPageLinkLabel: '&lt;&lt;',
291 firstPageLinkLabel: '&lt;&lt;',
286 lastPageLinkLabel: '&gt;&gt;',
292 lastPageLinkLabel: '&gt;&gt;',
287 containers:['user-paginator']
293 containers:['user-paginator']
288 }),
294 }),
289
295
290 MSG_SORTASC:"${_('Click to sort ascending')}",
296 MSG_SORTASC:"${_('Click to sort ascending')}",
291 MSG_SORTDESC:"${_('Click to sort descending')}",
297 MSG_SORTDESC:"${_('Click to sort descending')}",
292 MSG_EMPTY:"${_('No records found.')}",
298 MSG_EMPTY:"${_('No records found.')}",
293 MSG_ERROR:"${_('Data error.')}",
299 MSG_ERROR:"${_('Data error.')}",
294 MSG_LOADING:"${_('Loading...')}",
300 MSG_LOADING:"${_('Loading...')}",
295 }
301 }
296 );
302 );
297 myDataTable.subscribe('postRenderEvent',function(oArgs) {
303 myDataTable.subscribe('postRenderEvent',function(oArgs) {
298 tooltip_activate();
304 tooltip_activate();
299 quick_repo_menu();
305 quick_repo_menu();
300 });
306 });
301
307
302 var filterTimeout = null;
308 var filterTimeout = null;
303
309
304 updateFilter = function () {
310 updateFilter = function () {
305 // Reset timeout
311 // Reset timeout
306 filterTimeout = null;
312 filterTimeout = null;
307
313
308 // Reset sort
314 // Reset sort
309 var state = myDataTable.getState();
315 var state = myDataTable.getState();
310 state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
316 state.sortedBy = {key:'name', dir:YAHOO.widget.DataTable.CLASS_ASC};
311
317
312 // Get filtered data
318 // Get filtered data
313 myDataSource.sendRequest(YUD.get('q_filter').value,{
319 myDataSource.sendRequest(YUD.get('q_filter').value,{
314 success : myDataTable.onDataReturnInitializeTable,
320 success : myDataTable.onDataReturnInitializeTable,
315 failure : myDataTable.onDataReturnInitializeTable,
321 failure : myDataTable.onDataReturnInitializeTable,
316 scope : myDataTable,
322 scope : myDataTable,
317 argument: state
323 argument: state
318 });
324 });
319
325
320 };
326 };
321 YUE.on('q_filter','click',function(){
327 YUE.on('q_filter','click',function(){
322 if(!YUD.hasClass('q_filter', 'loaded')){
328 if(!YUD.hasClass('q_filter', 'loaded')){
323 YUD.get('q_filter').value = '';
329 YUD.get('q_filter').value = '';
324 //TODO: load here full list later to do search within groups
330 //TODO: load here full list later to do search within groups
325 YUD.addClass('q_filter', 'loaded');
331 YUD.addClass('q_filter', 'loaded');
326 }
332 }
327 });
333 });
328
334
329 YUE.on('q_filter','keyup',function (e) {
335 YUE.on('q_filter','keyup',function (e) {
330 clearTimeout(filterTimeout);
336 clearTimeout(filterTimeout);
331 filterTimeout = setTimeout(updateFilter,600);
337 filterTimeout = setTimeout(updateFilter,600);
332 });
338 });
333 </script>
339 </script>
334 % endif
340 % endif
General Comments 0
You need to be logged in to leave comments. Login now