Mercurial > genshi > mirror
comparison examples/trac/templates/query.cs @ 39:93b4dcbafd7b trunk
Copy Trac to main branch.
author | cmlenz |
---|---|
date | Mon, 03 Jul 2006 18:53:27 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
38:ee669cb9cccc | 39:93b4dcbafd7b |
---|---|
1 <?cs include:"header.cs" ?> | |
2 <?cs include:"macros.cs" ?> | |
3 | |
4 <div id="ctxtnav" class="nav"><?cs | |
5 if:query.report_href ?><ul> | |
6 <li class="first"><a href="<?cs | |
7 var:query.report_href ?>">Available Reports</a></li> | |
8 <li class="last">Custom Query</li></ul><?cs | |
9 /if ?> | |
10 </div> | |
11 | |
12 <?cs def:num_matches(v) ?><span class="numrows">(<?cs | |
13 alt:v ?>No<?cs /alt ?> match<?cs if:v != 1 ?>es<?cs /if ?>)</span><?cs | |
14 /def ?> | |
15 | |
16 <div id="content" class="query"> | |
17 <h1><?cs var:title ?> <?cs call:num_matches(query.num_matches) ?></h1> | |
18 | |
19 <form id="query" method="post" action="<?cs var:trac.href.query ?>"> | |
20 <fieldset id="filters"> | |
21 <legend>Filters</legend> | |
22 <?cs def:checkbox_checked(constraint, option) ?><?cs | |
23 set:checked = 0 ?><?cs | |
24 each:value = constraint.values ?><?cs | |
25 if:(value == option) == (constraint.mode == '') ?><?cs | |
26 set:checked = 1 ?><?cs | |
27 /if ?><?cs | |
28 /each ?><?cs | |
29 if:checked ?> checked="checked"<?cs /if ?><?cs | |
30 /def ?> | |
31 <table summary="Query filters"> | |
32 <tbody><tr style="height: 1px"><td colspan="4"></td></tr></tbody><?cs | |
33 each:field = query.fields ?><?cs | |
34 each:constraint = query.constraints ?><?cs | |
35 if:name(field) == name(constraint) ?> | |
36 <tbody><tr class="<?cs var:name(field) ?>"> | |
37 <th scope="row"><label><?cs var:field.label ?></label></th><?cs | |
38 if:field.type != "radio" && field.type != "checkbox" ?> | |
39 <td class="mode"> | |
40 <select name="<?cs var:name(field) ?>_mode"><?cs | |
41 each:mode = query.modes[field.type] ?> | |
42 <option value="<?cs var:mode.value ?>"<?cs | |
43 if:mode.value == constraint.mode ?> selected="selected"<?cs | |
44 /if ?>><?cs var:mode.name ?></option><?cs | |
45 /each ?> | |
46 </select> | |
47 </td><?cs | |
48 /if ?> | |
49 <td class="filter"<?cs | |
50 if:field.type == "radio" || field.type == "checkbox" ?> colspan="2"<?cs | |
51 /if ?>><?cs | |
52 if:field.type == "select" ?><?cs | |
53 each:value = constraint.values ?> | |
54 <select name="<?cs var:name(constraint) ?>"><option></option><?cs | |
55 each:option = field.options ?> | |
56 <option<?cs if:option == value ?> selected="selected"<?cs /if ?>><?cs | |
57 var:option ?></option><?cs | |
58 /each ?></select><?cs | |
59 if:name(value) != len(constraint.values) - 1 ?> | |
60 </td> | |
61 <td class="actions"><input type="submit" name="rm_filter_<?cs | |
62 var:name(field) ?>_<?cs var:name(value) ?>" value="-" /></td> | |
63 </tr><tr class="<?cs var:name(field) ?>"> | |
64 <th colspan="2"><label>or</label></th> | |
65 <td class="filter"><?cs | |
66 /if ?><?cs | |
67 /each ?><?cs | |
68 elif:field.type == "radio" ?><?cs | |
69 each:option = field.options ?> | |
70 <input type="checkbox" id="<?cs var:name(field) ?>_<?cs | |
71 var:option ?>" name="<?cs var:name(field) ?>" value="<?cs | |
72 var:option ?>"<?cs call:checkbox_checked(constraint, option) ?> /> | |
73 <label for="<?cs var:name(field) ?>_<?cs var:option ?>"><?cs | |
74 alt:option ?>none<?cs /alt ?></label><?cs | |
75 /each ?><?cs | |
76 elif:field.type == "checkbox" ?> | |
77 <input type="radio" id="<?cs var:name(field) ?>_on" name="<?cs | |
78 var:name(field) ?>" value="1"<?cs | |
79 if:constraint.mode != '!' ?> checked="checked"<?cs /if ?> /> | |
80 <label for="<?cs var:name(field) ?>_on">yes</label> | |
81 <input type="radio" id="<?cs var:name(field) ?>_off" name="<?cs | |
82 var:name(field) ?>" value="!1"<?cs | |
83 if:constraint.mode == '!' ?> checked="checked"<?cs /if ?> /> | |
84 <label for="<?cs var:name(field) ?>_off">no</label><?cs | |
85 elif:field.type == "text" ?><?cs | |
86 each:value = constraint.values ?> | |
87 <input type="text" name="<?cs var:name(field) ?>" value="<?cs | |
88 var:value ?>" size="42" /><?cs | |
89 if:name(value) != len(constraint.values) - 1 ?> | |
90 </td> | |
91 <td class="actions"><input type="submit" name="rm_filter_<?cs | |
92 var:name(field) ?>_<?cs var:name(value) ?>" value="-" /></td> | |
93 </tr><tr class="<?cs var:name(field) ?>"> | |
94 <th colspan="2"><label>or</label></th> | |
95 <td class="filter"><?cs | |
96 /if ?><?cs | |
97 /each ?><?cs | |
98 /if ?> | |
99 </td> | |
100 <td class="actions"><input type="submit" name="rm_filter_<?cs | |
101 var:name(field) ?><?cs | |
102 if:field.type != 'radio' ?>_<?cs | |
103 var:len(constraint.values) - 1 ?><?cs | |
104 /if ?>" value="-" /></td> | |
105 </tr></tbody><?cs /if ?><?cs | |
106 /each ?><?cs | |
107 /each ?> | |
108 <tbody><tr class="actions"> | |
109 <td class="actions" colspan="4" style="text-align: right"> | |
110 <label for="add_filter">Add filter</label> | |
111 <select name="add_filter" id="add_filter"> | |
112 <option></option><?cs | |
113 each:field = query.fields ?> | |
114 <option value="<?cs var:name(field) ?>"<?cs | |
115 if:field.type == "radio" ?><?cs | |
116 if:len(query.constraints[name(field)]) != 0 ?> disabled="disabled"<?cs | |
117 /if ?><?cs | |
118 /if ?>><?cs var:field.label ?></option><?cs | |
119 /each ?> | |
120 </select> | |
121 <input type="submit" name="add" value="+" /> | |
122 </td> | |
123 </tr></tbody> | |
124 </table> | |
125 </fieldset> | |
126 <p class="option"> | |
127 <label for="group">Group results by</label> | |
128 <select name="group" id="group"> | |
129 <option></option><?cs | |
130 each:field = query.fields ?><?cs | |
131 if:field.type == 'select' || field.type == 'radio' || | |
132 name(field) == 'owner' ?> | |
133 <option value="<?cs var:name(field) ?>"<?cs | |
134 if:name(field) == query.group ?> selected="selected"<?cs /if ?>><?cs | |
135 var:field.label ?></option><?cs | |
136 /if ?><?cs | |
137 /each ?> | |
138 </select> | |
139 <input type="checkbox" name="groupdesc" id="groupdesc"<?cs | |
140 if:query.groupdesc ?> checked="checked"<?cs /if ?> /> | |
141 <label for="groupdesc">descending</label> | |
142 <script type="text/javascript"> | |
143 var group = document.getElementById("group"); | |
144 var updateGroupDesc = function() { | |
145 enableControl('groupdesc', group.selectedIndex > 0); | |
146 } | |
147 addEvent(window, 'load', updateGroupDesc); | |
148 addEvent(group, 'change', updateGroupDesc); | |
149 </script> | |
150 </p> | |
151 <p class="option"> | |
152 <input type="checkbox" name="verbose" id="verbose"<?cs | |
153 if:query.verbose ?> checked="checked"<?cs /if ?> /> | |
154 <label for="verbose">Show full description under each result</label> | |
155 </p> | |
156 <div class="buttons"> | |
157 <input type="hidden" name="order" value="<?cs var:query.order ?>" /> | |
158 <?cs if:query.desc ?><input type="hidden" name="desc" value="1" /><?cs /if ?> | |
159 <input type="submit" name="update" value="Update" /> | |
160 </div> | |
161 <hr /> | |
162 </form> | |
163 <script type="text/javascript"><?cs set:idx = 0 ?> | |
164 var properties={<?cs each:field = query.fields ?><?cs | |
165 var:name(field) ?>:{type:"<?cs var:field.type ?>",label:"<?cs | |
166 var:field.label ?>",options:[<?cs | |
167 each:option = field.options ?>"<?cs var:option ?>"<?cs | |
168 if:name(option) < len(field.options) -1 ?>,<?cs /if ?><?cs | |
169 /each ?>]}<?cs | |
170 set:idx = idx + 1 ?><?cs if:idx < len(query.fields) ?>,<?cs /if ?><?cs | |
171 /each ?>};<?cs set:idx = 0 ?> | |
172 var modes = {<?cs each:type = query.modes ?><?cs var:name(type) ?>:[<?cs | |
173 each:mode = type ?>{text:"<?cs var:mode.name ?>",value:"<?cs var:mode.value ?>"}<?cs | |
174 if:name(mode) < len(type) -1 ?>,<?cs /if ?><?cs | |
175 /each ?>]<?cs | |
176 set:idx = idx + 1 ?><?cs if:idx < len(query.modes) ?>,<?cs /if ?><?cs | |
177 /each ?>}; | |
178 initializeFilters(); | |
179 </script> | |
180 | |
181 <?cs def:thead() ?> | |
182 <thead><tr><?cs each:header = query.headers ?> | |
183 <th class="<?cs var:header.name ?><?cs if:query.order == header.name ?> <?cs | |
184 if:query.desc ?>desc<?cs else ?>asc<?cs /if ?><?cs /if ?>"> | |
185 <a title="Sort by <?cs var:header.label ?><?cs | |
186 if:query.order == header.name && !query.desc ?> (descending)<?cs | |
187 /if ?>" href="<?cs var:header.href ?>"><?cs var:header.label ?></a> | |
188 </th><?cs | |
189 /each ?></tr></thead> | |
190 <?cs /def ?> | |
191 | |
192 <?cs if:len(query.results) ?><?cs | |
193 if:!query.group ?> | |
194 <table class="listing tickets"> | |
195 <?cs call:thead() ?><tbody><?cs | |
196 /if ?><?cs | |
197 each:result = query.results ?><?cs | |
198 if:result[query.group] != prev_group ?> | |
199 <?cs if:prev_group ?></tbody></table><?cs /if ?> | |
200 <h2><?cs | |
201 each:field = query.fields ?><?cs | |
202 if:name(field) == query.group ?><?cs | |
203 var:field.label ?><?cs | |
204 /if ?><?cs | |
205 /each ?>: <?cs var:result[query.group] ?> <?cs call:num_matches(query.num_matches_group[result[query.group]]) ?></h2> | |
206 <table class="listing tickets"> | |
207 <?cs call:thead() ?><tbody><?cs | |
208 /if ?> | |
209 <tr class="<?cs | |
210 if:name(result) % 2 ?>odd<?cs else ?>even<?cs /if ?> prio<?cs | |
211 var:result.priority_value ?><?cs | |
212 if:result.added ?> added<?cs /if ?><?cs | |
213 if:result.changed ?> changed<?cs /if ?><?cs | |
214 if:result.removed ?> removed<?cs /if ?>"><?cs | |
215 each:header = query.headers ?><?cs | |
216 if:name(header) == 0 ?><td class="id"><a href="<?cs | |
217 var:result.href ?>" title="View ticket"><?cs var:result.id ?></a></td><?cs | |
218 else ?><td class="<?cs var:header.name ?>"><?cs | |
219 if:header.name == 'summary' ?><a href="<?cs | |
220 var:result.href ?>" title="View ticket"><?cs | |
221 var:result.summary ?></a><?cs | |
222 else ?><span><?cs var:result[header.name] ?></span><?cs | |
223 /if ?></td><?cs | |
224 /if ?><?cs | |
225 /each ?> | |
226 <?cs if:query.verbose ?> | |
227 </tr><tr class="fullrow"><td colspan="<?cs var:len(query.headers) ?>"> | |
228 <p class="meta">Reported by <strong><?cs var:result.reporter ?></strong>, | |
229 <?cs var:result.time ?><?cs if:result.description ?>:<?cs /if ?></p> | |
230 <?cs if:result.description ?><p><?cs var:result.description ?></p><?cs /if ?> | |
231 </td> | |
232 <?cs /if ?><?cs set:prev_group = result[query.group] ?> | |
233 </tr><?cs /each ?> | |
234 </tbody></table><?cs | |
235 /if ?> | |
236 | |
237 <div id="help"> | |
238 <strong>Note:</strong> See <a href="<?cs var:trac.href.wiki ?>/TracQuery">TracQuery</a> | |
239 for help on using queries. | |
240 </div> | |
241 | |
242 </div> | |
243 <?cs include:"footer.cs" ?> |