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>&nbsp;
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" ?>
Copyright (C) 2012-2017 Edgewall Software