1[%# This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 # 5 # This Source Code Form is "Incompatible With Secondary Licenses", as 6 # defined by the Mozilla Public License, v. 2.0. 7 #%] 8 9[%# INTERFACE: 10 # searchtype: string. Type of search - either "series", "saved" or undef. 11 # ... 12 # defaultsavename: string. The default name for saving the query. 13 #%] 14 15[%############################################################################%] 16[%# Template Initialization #%] 17[%############################################################################%] 18 19[% PROCESS "global/field-descs.none.tmpl" %] 20 21[% USE Bugzilla %] 22[% cgi = Bugzilla.cgi %] 23 24[% unfiltered_title = "Список ${terms.bugs_gen}" %] 25[% IF searchname || defaultsavename %] 26 [% unfiltered_title = unfiltered_title _ ": " _ (searchname OR defaultsavename) %] 27[% END %] 28[% title = unfiltered_title FILTER html %] 29 30[% qorder = order FILTER uri IF order %] 31 32[% javascript = BLOCK %] 33 [% IF quicksearch %] 34 [% new_param = BLOCK ~%] 35 quicksearch=[% quicksearch FILTER uri %] 36 [%~ IF cgi.param('list_id') ~%] 37 &list_id=[% cgi.param('list_id') FILTER uri %] 38 [%~ END %] 39 [% END %] 40 [% ELSIF cgi.param('token') != '' %] 41 [% new_param = cgi.canonicalise_query('token', 'cmdtype', 'remtype') %] 42 [% ELSE %] 43 [% new_param = cgi.canonicalise_query %] 44 [% END %] 45 46 [% IF new_param.length + 12 < constants.CGI_URI_LIMIT %] 47 if (history && history.replaceState) { 48 history.replaceState(null, "[% unfiltered_title FILTER js %]", 49 "buglist.cgi?[% new_param FILTER js %]"); 50 document.title = "[% unfiltered_title FILTER js %]"; 51 } 52 [% END %] 53 [% javascript FILTER none %] 54[% END %] 55 56[%############################################################################%] 57[%# Page Header #%] 58[%############################################################################%] 59 60[% PROCESS global/header.html.tmpl 61 title = title 62 style = style 63 atomlink = "buglist.cgi?$urlquerypart&title=$title&ctype=atom" 64 yui = [ 'autocomplete', 'calendar' ] 65 javascript_urls = [ "js/util.js", "js/field.js", "js/TUI.js" ] 66 style_urls = [ "skins/standard/buglist.css" ] 67 doc_section = "query.html#list" 68%] 69 70<div class="bz_query_head"> 71 <span class="bz_query_timestamp"> 72 [% currenttime FILTER time('%a %b %e %Y %T %Z') FILTER html %]<br> 73 </span> 74 75 [% IF debug %] 76 <div class="bz_query_debug"> 77 <p>Полное время выполнения: [% query_time FILTER html %] сек.</p> 78 [% FOREACH query = queries %] 79 <p>[% query.sql FILTER html %]</p> 80 <p>Время выполнения: [% query.time FILTER html %] сек</p> 81 [% IF query.explain %] 82 <pre>[% query.explain FILTER html %]</pre> 83 [% END %] 84 [% END %] 85 </div> 86 [% END %] 87 88 [% IF user.settings.display_quips.value == 'on' %] 89 [% DEFAULT quip = "$terms.Bugzilla добавляет сюда произвольную цитату, но увы, сейчас сборник цитат пуст!" %] 90 <span class="bz_quip"> 91 <a href="quips.cgi"><em>[% quip FILTER html %]</em></a> 92 </span> 93 [% END %] 94 95</div> 96 97[% IF toolong %] 98 <h2 class="bz_smallminded"> 99 Размер списка слишком велик для [% terms.Bugzilla %]; кнопки навигации 100 на страницах отдельных [% terms.bugs_gen %] отключены. 101 </h2> 102[% END %] 103 104[% SET shown_types = [ 105 'notequals', 'regexp', 'notregexp', 'lessthan', 'lessthaneq', 106 'greaterthan', 'greaterthaneq', 'changedbefore', 'changedafter', 107 'changedfrom', 'changedto', 'changedby', 'notsubstring', 'nowords', 108 'nowordssubstr', 'notmatches', 109] %] 110<a id="search_description_controller" class="bz_default_hidden" 111 href="javascript:TUI_toggle_class('search_description')">Скрыть описание поиска</a> 112[%# Show the link if the browser supports JS %] 113<script type="text/javascript"> 114 TUI_alternates['search_description'] = 'Показать описание поиска'; 115 YAHOO.util.Dom.removeClass('search_description_controller', 116 'bz_default_hidden'); 117</script> 118 119<ul class="search_description"> 120[% FOREACH desc_item = search_description %] 121 <li> 122 <strong>[% field_descs.${desc_item.field} FILTER html %]:</strong> 123 [% IF shown_types.contains(desc_item.type) || debug %] 124 ([% search_descs.${desc_item.type} FILTER html %]) 125 [% END %] 126 [% FOREACH val IN desc_item.value.split(',') %] 127 [%+ display_value(desc_item.field, val) FILTER html %][% ',' UNLESS loop.last %] 128 [% END %] 129 [% IF debug %] 130 (<code>[% desc_item.term FILTER html %]</code>) 131 [% END %] 132 </li> 133[% END %] 134</ul> 135 136<hr> 137 138[%############################################################################%] 139[%# Preceding Status Line #%] 140[%############################################################################%] 141 142[% IF bugs.size > 9 %] 143 [% PROCESS num_results %] 144[% END %] 145 146[%############################################################################%] 147[%# Start of Change Form #%] 148[%############################################################################%] 149 150[% IF dotweak %] 151 <form name="changeform" method="post" action="process_bug.cgi"> 152[% END %] 153 154[%############################################################################%] 155[%# Bug Table #%] 156[%############################################################################%] 157 158[% PROCESS list/table.html.tmpl %] 159 160[%############################################################################%] 161[%# Succeeding Status Line #%] 162[%############################################################################%] 163 164[% PROCESS num_results %] 165 166[% IF bugs.size == 0 %] 167 <ul class="zero_result_links"> 168 <li>[% PROCESS enter_bug_link %]</li> 169 [% IF one_product.defined %] 170 <li><a href="enter_bug.cgi">Зарегистрировать новую [% terms.bug_acc %] в 171 другом продукте</a></li> 172 [% END %] 173 <li><a href="[% PROCESS edit_search_url %]">Изменить условия поиска</a></li> 174 <li><a href="query.cgi">Начать поиск заново</a></li> 175 </ul> 176[% END %] 177 178<br> 179 180[%############################################################################%] 181[%# Rest of Change Form #%] 182[%############################################################################%] 183 184[% IF dotweak %] 185 [% PROCESS "list/edit-multiple.html.tmpl" %] 186 </form> 187 <hr> 188[% END %] 189 190[%############################################################################%] 191[%# Navigation Bar #%] 192[%############################################################################%] 193 194<table> 195 <tr> 196 [% IF bugs.size > 0 %] 197 <td valign="middle" class="bz_query_buttons"> 198 <form method="post" action="show_bug.cgi"> 199 [% id = buglist.join(",") %] 200 <input type="hidden" name="id" value="[% id FILTER html %]"> 201 <input type="hidden" name="format" value="multiple"> 202 <input type="submit" id="long_format" value="Подробно"> 203 </form> 204 <form method="post" action="show_bug.cgi"> 205 <input type="hidden" name="ctype" value="xml"> 206 [% FOREACH id = buglist %] 207 <input type="hidden" name="id" value="[% id FILTER html %]"> 208 [% END %] 209 <input type="hidden" name="excludefield" value="attachmentdata"> 210 <input type="submit" value="XML" id="xml"> 211 </form> 212 213 [% IF user.is_timetracker %] 214 <form method="post" action="summarize_time.cgi"> 215 <input type="hidden" name="id" value="[% buglist_joined FILTER html %]"> 216 <input type="submit" id="timesummary" value="Сводка времени"> 217 </form> 218 [% IF time_summary_limited %] 219 <small> 220 Сводка времени включает в себя только показанные выше [% terms.bugs %]. Чтобы 221 просмотреть сводку времени для всех [% terms.bugs_gen %], найденных поиском, вы можете 222 <a href="buglist.cgi?[% urlquerypart FILTER html %] 223 [%- "&order=$qorder" FILTER html IF order %]&limit=0"> 224 Отобразить все результаты поиска</a>.</small> 225 [% END %] 226 [% END %] 227 </td> 228 229 <td> </td> 230 231 <td valign="middle" class="bz_query_links"> 232 <a href="buglist.cgi? 233 [% urlquerypart FILTER html %]&ctype=csv&human=1">CSV</a> | 234 <a href="buglist.cgi? 235 [% urlquerypart FILTER html %]&title= 236 [%- title FILTER html %]&ctype=atom">RSS</a> | 237 <a href="buglist.cgi? 238 [% urlquerypart FILTER html %]&ctype=ics">iCalendar</a> | 239 <a href="colchange.cgi? 240 [% urlquerypart FILTER html %]&query_based_on= 241 [% defaultsavename OR searchname FILTER uri %]">Формат вывода</a> | 242 243 [% IF bugs.size > 1 && caneditbugs && !dotweak %] 244 <a href="buglist.cgi?[% urlquerypart FILTER html %] 245 [%- "&order=$qorder" FILTER html IF order %]&tweak=1" 246 >Групповое редактирование [% terms.bugs_gen %]</a> 247 | 248 [% END %] 249 250 [% IF bugowners && user.id %] 251 <a href="mailto: 252 [% bugowners FILTER html %]">Отправить сообщения исполнителям [% terms.bugs_gen %]</a> | 253 [% END %] 254 255 [%# Links to more things users can do with this bug list. %] 256 [% Hook.process("links") %] 257 </td> 258 [% END %] 259 260 <td valign="middle" class="bz_query_edit"> 261 <a href="[% PROCESS edit_search_url %]">Изменить отбор</a> 262 </td> 263 264 [% IF searchtype == "saved" %] 265 <td valign="middle" nowrap="nowrap" class="bz_query_forget"> 266 | 267 <a href="buglist.cgi?cmdtype=dorem&remaction=forget&namedcmd= 268 [% searchname FILTER uri %]&token= 269 [% issue_hash_token([search_id, searchname]) FILTER uri %]"> 270 Удалить отбор '[% searchname FILTER html %]'</a> 271 </td> 272 [% ELSE %] 273 <td> </td> 274 275 <td valign="middle" class="bz_query_remember"> 276 <form method="get" action="buglist.cgi"> 277 <input type="submit" id="remember" value="Сохранить условия отбора"> как 278 <input type="hidden" name="newquery" 279 value="[% urlquerypart FILTER html %][% "&order=$qorder" FILTER html IF order %]"> 280 <input type="hidden" name="cmdtype" value="doit"> 281 <input type="hidden" name="remtype" value="asnamed"> 282 <input type="hidden" name="token" value="[% issue_hash_token(['savedsearch']) FILTER html %]"> 283 <input type="text" id="save_newqueryname" name="newqueryname" size="20" 284 title="Имя нового запроса" value="[% defaultsavename FILTER html %]"> 285 </form> 286 </td> 287 [% END %] 288 </tr> 289</table> 290 291[% IF one_product.defined && bugs.size %] 292 <p class="bz_query_single_product"> 293 [% PROCESS enter_bug_link %] 294 </p> 295[% END %] 296 297[%############################################################################%] 298[%# Page Footer #%] 299[%############################################################################%] 300 301[% PROCESS global/footer.html.tmpl %] 302 303[%##########%] 304[%# Blocks #%] 305[%##########%] 306 307[% BLOCK edit_search_url %] 308 [% editqueryname = searchname OR defaultsavename OR '' %] 309 query.cgi?[% urlquerypart FILTER html %] 310 [%- IF editqueryname != '' %]&known_name= 311 [%- editqueryname FILTER uri %] 312 [% END %] 313[% END %] 314 315[% BLOCK enter_bug_link %] 316 <a href="enter_bug.cgi 317 [%- IF one_product.defined %]?product= 318 [%- one_product.name FILTER uri %][% END %]">Зарегистрировать 319 новую [% terms.bug_acc %] 320 [% IF one_product.defined %] 321 для продукта "[% one_product.name FILTER html %]" 322 [% END %]</a> 323[% END %] 324 325[% BLOCK num_results %] 326 <span class="bz_result_count"> 327 [% IF bugs.size == 0 %] 328 <span class="zero_results">[% terms.zeroSearchResults %].</span> 329 [% ELSIF default_limited AND bugs.size >= Param('default_search_limit') %] 330 Этот результат был ограничен [% Param('default_search_limit') FILTER html %] 331 [%+ terms.bugs_abl %]. 332 <a href="buglist.cgi?[% urlquerypart FILTER html %] 333 [%- "&order=$qorder" FILTER html IF order %]&limit=0">Отобразить 334 все результаты поиска для этого запроса</a>. 335 [% time_summary_limited = 1 %] 336 [% ELSIF bugs.size == 1 %] 337 Найдена одна [% terms.bug %]. 338 [% ELSE %] 339 Найдено [% bugs.size %] [%+ terms.bugs_gen %]. 340 [% END %] 341 </span> 342[% END %] 343