~ubuntu-branches/ubuntu/gutsy/prewikka/gutsy

« back to all changes in this revision

Viewing changes to prewikka/templates/AlertListing.tmpl

  • Committer: Bazaar Package Importer
  • Author(s): Pierre Chifflier
  • Date: 2007-04-11 14:41:09 UTC
  • Revision ID: james.westby@ubuntu.com-20070411144109-2hh7zx3amwd27b4l
Tags: upstream-0.9.10
ImportĀ upstreamĀ versionĀ 0.9.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#from prewikka import User, utils
 
2
#extends prewikka.templates.MessageListing
 
3
 
 
4
#block head_extra_content
 
5
#filter CleanOutput 
 
6
 
 
7
<script type="text/javascript">
 
8
 
 
9
<!-- 
 
10
function del_entry(link) {
 
11
        row = link.parentNode.parentNode
 
12
        table = row.parentNode
 
13
        if ( ! row.nextSibling ) {
 
14
                row.previousSibling.lastChild.appendChild(row.lastChild.firstChild)
 
15
        }
 
16
 
 
17
        table.removeChild(row)  
 
18
}
 
19
 
 
20
function end(row) {
 
21
        field = document.createElement("td")
 
22
        field.setAttribute("width", "11px")
 
23
        row.appendChild(field)
 
24
 
 
25
        if ( row.firstChild != row.lastChild ) {
 
26
                link = document.createElement("a")
 
27
                link.onclick = function(){ del_entry(this) }
 
28
                link.setAttribute("href", "#")
 
29
                content = document.createTextNode("-")
 
30
                link.appendChild(content)
 
31
                field.appendChild(link)         
 
32
        } else {
 
33
                content = document.createTextNode(" ")
 
34
                field.appendChild(content)
 
35
        }
 
36
}
 
37
 
 
38
function get_operator_option(select, operator)
 
39
{
 
40
#end filter
 
41
#for $operator, $desc in (("=", "Equal"), ("<", "Lesser than"), 
 
42
                          (">", "Greater than"), ("<=", "Lesser or equal"), 
 
43
                          (">=", "Greater or equal"), ("<>", "Substring"), 
 
44
                          ("<>*", "Substring (case-insensitive)"), ("~", "Regular expression"), ("~*", "Regular expression (case-insensitive)"))
 
45
        option = document.createElement("option")
 
46
 
 
47
        option.setAttribute("value", '$operator')
 
48
        option.setAttribute("title", '$desc')
 
49
        if ( operator == '$operator' ) {
 
50
                option.setAttribute("selected", "true")
 
51
        }
 
52
        option_value = document.createTextNode('$operator')
 
53
        option.appendChild(option_value)
 
54
        select.appendChild(option)
 
55
#end for
 
56
#filter CleanOutput
 
57
 
 
58
}
 
59
 
 
60
 
 
61
 
 
62
options_array = new Array()
 
63
functions_array = new Array()
 
64
 
 
65
 
 
66
function del_td(name, num)
 
67
{
 
68
        old = document.getElementById("td_" + name + num)
 
69
        if ( ! old )
 
70
                return
 
71
 
 
72
        row = old.parentNode
 
73
                
 
74
        td = document.createElement("td")
 
75
        td.setAttribute("id", "td_" + name + num)
 
76
 
 
77
        row.insertBefore(td, old)
 
78
        row.removeChild(old)
 
79
}
 
80
 
 
81
 
 
82
function filter_add_list(value, object, name, num) {
 
83
        td = document.getElementById("td_" + name + num)
 
84
        
 
85
        var opt;
 
86
 
 
87
        select = document.createElement("select")
 
88
        select.setAttribute("name", name + '_value_' + num)
 
89
        select.setAttribute("class", "popup_input_field")
 
90
        td.appendChild(select)
 
91
        
 
92
        for (key in options_array[object]) {
 
93
                option = document.createElement("option")
 
94
                
 
95
                if ( options_array[object][key] == value ) {
 
96
                        option.setAttribute("selected", "true")
 
97
                }
 
98
                
 
99
                option_value = document.createTextNode(options_array[object][key])
 
100
                option.appendChild(option_value)
 
101
                select.appendChild(option)
 
102
        }
 
103
}
 
104
 
 
105
function filter_add_input(value, object, name, num) {
 
106
        td = document.getElementById("td_" + name + num)
 
107
        
 
108
        input = document.createElement("input")
 
109
        input.setAttribute("class", "popup_input_field")
 
110
        input.setAttribute("name", name + '_value_' + num)
 
111
        input.setAttribute("type", "int")
 
112
        input.setAttribute("value", value)
 
113
        td.appendChild(input)
 
114
}
 
115
 
 
116
 
 
117
 
 
118
#for $category, $aggregations in (
 
119
                          ("classification", $classification_aggregations),
 
120
                          ("analyzer", $analyzer_aggregations),
 
121
                          ("source", $source_aggregations),
 
122
                          ("target", $target_aggregations)
 
123
)
 
124
 
 
125
 
 
126
function aggregated_${category}_add_entry(path) {
 
127
        table = document.getElementById("${category}_aggregation_table")
 
128
 
 
129
        if ( table.lastChild && table.lastChild.nodeName == "TR" ) {
 
130
                table.lastChild.lastChild.removeChild(table.lastChild.lastChild.lastChild)
 
131
        }
 
132
 
 
133
        row = document.createElement("tr")
 
134
        table.appendChild(row)
 
135
 
 
136
        field = document.createElement("th")
 
137
        row.appendChild(field)
 
138
        content = document.createTextNode("$_('Group entry by:')")
 
139
        field.appendChild(content)
 
140
 
 
141
        field = document.createElement("td")
 
142
        row.appendChild(field)
 
143
        field = document.createElement("td")
 
144
        row.appendChild(field)
 
145
 
 
146
        field = document.createElement("td")
 
147
        row.appendChild(field)
 
148
        select = document.createElement("select")
 
149
        field.appendChild(select)
 
150
 
 
151
        select.setAttribute("class", "popup_input_field")
 
152
        select.setAttribute("name", "aggregated_${category}")
 
153
        
 
154
        #for $aggregation_name, $aggregated_path, $unused in $aggregations
 
155
 
 
156
        option = document.createElement("option")
 
157
 
 
158
#if $aggregated_path == None
 
159
        option.setAttribute("disabled", "disabled")
 
160
#else
 
161
        option.setAttribute("value", '$aggregated_path')
 
162
        if ( path == '$aggregated_path' ) {
 
163
                option.setAttribute("selected", "true")
 
164
        }
 
165
#end if
 
166
 
 
167
        option_value = document.createTextNode('$aggregation_name')
 
168
        option.appendChild(option_value)
 
169
        select.appendChild(option)
 
170
        
 
171
        #end for
 
172
 
 
173
        end(row)
 
174
        field = document.createElement("td")
 
175
        field.setAttribute("width", "11px")
 
176
        row.appendChild(field)
 
177
 
 
178
        link = document.createElement("a")
 
179
        link.onclick = function(){ aggregated_${category}_add_entry('') }
 
180
        link.setAttribute("href", "#")
 
181
        content = document.createTextNode("+")
 
182
        link.appendChild(content)
 
183
        field.appendChild(link)
 
184
}
 
185
#end for
 
186
 
 
187
#for $name, $objects in (
 
188
                          ("classification", $classification_filters),
 
189
                          ("analyzer", $analyzer_filters), 
 
190
                          ("source", $source_filters),
 
191
                          ("target", $target_filters),
 
192
)
 
193
 
 
194
function ${name}_add_entry(object, operator, value, num) {
 
195
        table = document.getElementById('${name}_table')
 
196
 
 
197
        if ( table.lastChild && table.lastChild.nodeName == "TR" ) {
 
198
                table.lastChild.lastChild.removeChild(table.lastChild.lastChild.lastChild)
 
199
        }
 
200
 
 
201
        row = document.createElement("tr")
 
202
        table.appendChild(row)
 
203
 
 
204
        field = document.createElement("th")
 
205
        content = document.createTextNode("$_('Filter on:')")
 
206
        field.appendChild(content)
 
207
        row.appendChild(field)
 
208
        
 
209
        field = document.createElement("td")
 
210
        row.appendChild(field)
 
211
        select = document.createElement("select")
 
212
        field.appendChild(select)
 
213
 
 
214
        select.setAttribute("class", "popup_select_field")
 
215
        select.setAttribute("name", "${name}_object_" + num)
 
216
        select.onchange = function() { del_td('${name}', num); functions_array[this.options[this.selectedIndex].value](value, this.options[this.selectedIndex].value, '${name}', num) }
 
217
        
 
218
        var add_default
 
219
        var add_default_object
 
220
        
 
221
#for $object_name, $object, $obval in $objects        
 
222
        option = document.createElement("option")
 
223
 
 
224
#if $obval == None
 
225
        func = filter_add_input
 
226
#else
 
227
        func = filter_add_list
 
228
        options_array["$object"] = new Array()
 
229
 
 
230
        #set $cnt = 0
 
231
        #for $opt in $obval
 
232
                options_array["$object"][$cnt] = '${opt}'
 
233
                #set $cnt += 1
 
234
        #end for
 
235
#end if
 
236
 
 
237
#if $object == None
 
238
        option.setAttribute("disabled", "disabled")
 
239
        option.setAttribute("value", '')
 
240
#else
 
241
        option.setAttribute("value", '$object')
 
242
        if ( object == '$object' || ! object ) {
 
243
                option.setAttribute("selected", "true")
 
244
                add_default = func
 
245
                add_default_object = '$object'
 
246
                object = '$object'
 
247
        }
 
248
#end if
 
249
 
 
250
        option_value = document.createTextNode('$object_name')
 
251
        option.appendChild(option_value)
 
252
        select.appendChild(option)
 
253
 
 
254
 
 
255
        functions_array["$object"] = func
 
256
#end for
 
257
 
 
258
        field = document.createElement("td")
 
259
        row.appendChild(field)        
 
260
        select = document.createElement("select")
 
261
        field.appendChild(select)
 
262
        select.setAttribute("class", "popup_operator_select")
 
263
        select.setAttribute("name", "${name}_operator_" + num)
 
264
        
 
265
        if ( ! operator )
 
266
                operator = "<>*";
 
267
                
 
268
        get_operator_option(select, operator)
 
269
 
 
270
        field = document.createElement("td")
 
271
        field.setAttribute("id", "td_$name" + num)
 
272
        row.appendChild(field)
 
273
 
 
274
        if (add_default) {
 
275
                add_default(value, add_default_object, '${name}', num);
 
276
        }
 
277
                
 
278
        end(row)
 
279
        
 
280
        field = document.createElement("td")
 
281
        field.setAttribute("width", "11px")
 
282
        row.appendChild(field)
 
283
        link = document.createElement("a")
 
284
        link.onclick = function(){ ${name}_add_entry('', '', '', (num + 1)) };
 
285
        link.setAttribute("href", "#")
 
286
        content = document.createTextNode("+")
 
287
        link.appendChild(content)
 
288
        field.appendChild(link)
 
289
}
 
290
 
 
291
#end for
 
292
//--></script>
 
293
 
 
294
#end filter 
 
295
#filter Filter
 
296
#end filter
 
297
#end block
 
298
 
 
299
 
 
300
#block message_fields_header
 
301
#set global $address_cnt = 0
 
302
 
 
303
<thead>
 
304
<tr>
 
305
  <td class="filter_popup">
 
306
    <a onclick="javascript:toggleFilteredColumnVisibility('classification');" href="#">$_("Classification")</a>
 
307
    <div id="classification">
 
308
     <table>
 
309
      <tr><td><table class="inline_filter_content"><tbody id="classification_table"></tbody></table></td></tr>
 
310
      <tr><td><table class="inline_filter_content"><tbody id="classification_aggregation_table"></tbody></table></td></tr>
 
311
      <tr><td>
 
312
      <table class="inline_filter_content">
 
313
      <tr>
 
314
       <th>Type:</th>
 
315
       <td>&nbsp;</td>
 
316
      #if $correlation_alert_view
 
317
       #set $disabled="disabled=\"disabled\""
 
318
      #else
 
319
       #set $disabled=""
 
320
      #end if
 
321
      
 
322
      #for name, path in (("Alert", "alert.create_time"), ("CorrelationAlert", "alert.correlation_alert.name"), 
 
323
                          ("OverflowAlert", "alert.overflow_alert.program"), ("ToolAlert", "alert.tool_alert.name"))
 
324
        #if path in $alert.type
 
325
         #set $checked = "checked='checked'"
 
326
        #else
 
327
         #set $checked = ""
 
328
        #end if
 
329
        
 
330
        <td>$name<input class="checkbox" $disabled type="checkbox" name="alert.type" value="$path" $checked /></td>
 
331
      #end for
 
332
      </tr>
 
333
 
 
334
 
 
335
      <tr>
 
336
       <th>Severity:</th>
 
337
      #for item in "info", "low", "medium", "high", "none"
 
338
        #if item in $alert.assessment.impact.severity
 
339
         #set $checked = "checked='checked'"
 
340
        #else
 
341
         #set $checked = ""
 
342
        #end if
 
343
        <td>$item<input class="checkbox" type="checkbox" name="alert.assessment.impact.severity" value="$item" $checked /></td>
 
344
      #end for
 
345
      </tr>
 
346
 
 
347
      <tr>
 
348
       <th>Completion:</th>  
 
349
       <td colspan="2">&nbsp;</td>
 
350
       
 
351
      #for item in "succeeded", "failed", "none"
 
352
        #if item in $alert.assessment.impact.completion
 
353
         #set $checked = "checked='checked'"
 
354
        #else
 
355
         #set $checked = ""
 
356
        #end if
 
357
        <td>$item<input class="checkbox" type="checkbox" name="alert.assessment.impact.completion" value="$item" $checked /></td>
 
358
      #end for
 
359
      
 
360
    </tr>
 
361
    </table>
 
362
      </td></tr>
 
363
     </table>
 
364
 
 
365
      <script type="text/javascript">
 
366
        #set $cnt = 0
 
367
        #for $object, $operator, $value in $classification
 
368
          classification_add_entry("$object", "$operator", "$utils.escape_attribute($value)", $cnt)
 
369
          #set $cnt = $cnt + 1
 
370
        #end for
 
371
 
 
372
      #if len($aggregated_classification) == 0
 
373
        aggregated_classification_add_entry("")
 
374
      #else
 
375
        #for $path in $aggregated_classification
 
376
          aggregated_classification_add_entry('$path')
 
377
        #end for
 
378
      #end if
 
379
      </script>
 
380
    </div>
 
381
 
 
382
    #if $classification_filtered
 
383
      <span class="filter_enabled_marker">*</span>
 
384
    #end if
 
385
  </td>
 
386
 
 
387
  <td class="filter_popup">
 
388
    <a onclick="javascript:toggleFilteredColumnVisibility('source');" href="#">$_("Source")</a>
 
389
    <div id="source">
 
390
     <table>
 
391
      <tr><td><table class="inline_filter_content"><tbody id="source_table"></tbody></table></td></tr>
 
392
      <tr><td><table class="inline_filter_content"><tbody id="source_aggregation_table"></tbody></table></td></tr>
 
393
     </table>
 
394
     
 
395
     <script type="text/javascript">
 
396
        #set $cnt = 0
 
397
        #for $object, $operator, $value in $source
 
398
          source_add_entry("$object", "$operator", "$utils.escape_attribute($value)", $cnt)
 
399
          #set $cnt += 1
 
400
        #end for
 
401
 
 
402
      #if len($aggregated_source) == 0
 
403
        aggregated_source_add_entry("")
 
404
      #else
 
405
        #for $path in $aggregated_source
 
406
          aggregated_source_add_entry('$path')
 
407
        #end for
 
408
      #end if
 
409
     </script>
 
410
    </div>
 
411
    #if $source_filtered
 
412
      <span class="filter_enabled_marker">*</span>
 
413
    #end if
 
414
  </td>
 
415
 
 
416
  <td class="filter_popup">
 
417
    <a onclick="javascript:toggleFilteredColumnVisibility('target');" href="#">$_("Target")</a>
 
418
    <div id="target">
 
419
     <table>
 
420
      <tr><td><table class="inline_filter_content"><tbody id="target_table"></tbody></table></td></tr>
 
421
      <tr><td><table class="inline_filter_content"><tbody id="target_aggregation_table"></tbody></table></td></tr>
 
422
     </table>
 
423
     <script type="text/javascript">
 
424
        #set $cnt = 0
 
425
        #for $object, $operator, $value in $target
 
426
          target_add_entry("$object", "$operator", "$utils.escape_attribute($value)", $cnt)
 
427
          #set $cnt = $cnt + 1
 
428
        #end for
 
429
 
 
430
      #if len($aggregated_target) == 0
 
431
        aggregated_target_add_entry("")
 
432
      #else
 
433
        #for $path in $aggregated_target
 
434
          aggregated_target_add_entry('$path')
 
435
        #end for
 
436
      #end if
 
437
     </script>
 
438
    </div>
 
439
    #if $target_filtered
 
440
      <span class="filter_enabled_marker">*</span>
 
441
    #end if
 
442
  </td>
 
443
  
 
444
  <td class="filter_popup">
 
445
    <a onclick="javascript:toggleFilteredColumnVisibility('analyzer');" href="#">$_("Sensor")</a>
 
446
    <div id="analyzer">
 
447
     <table>
 
448
      <tr><td><table class="inline_filter_content"><tbody id="analyzer_table"></tbody></table></td></tr>
 
449
      <tr><td><table class="inline_filter_content"><tbody id="analyzer_aggregation_table"></tbody></table></td></tr>
 
450
     </table>
 
451
 
 
452
     <script  type="text/javascript">
 
453
      #set $cnt = 0
 
454
      #for $object, $operator, $value in $analyzer
 
455
       analyzer_add_entry("$object", "$operator", "$utils.escape_attribute($value)", $cnt)
 
456
       #set $cnt = $cnt + 1
 
457
      #end for
 
458
 
 
459
      #if len($aggregated_analyzer) == 0
 
460
        aggregated_analyzer_add_entry("")
 
461
      #else
 
462
        #for $path in $aggregated_analyzer
 
463
          aggregated_analyzer_add_entry('$path')
 
464
        #end for
 
465
      #end if
 
466
     </script>
 
467
    </div>
 
468
    #if $analyzer_filtered
 
469
      <span class="filter_enabled_marker">*</span>
 
470
    #end if
 
471
  </td>
 
472
 
 
473
  <td>$_("Time")</td>
 
474
 
 
475
  <td>
 
476
    <input src="prewikka/images/search.png" type="image" style="border: 0;" />
 
477
  </td>
 
478
</tr>
 
479
</thead>
 
480
#end block message_fields_header
 
481
 
 
482
 
 
483
#block message_fields
 
484
#filter CleanOutput
 
485
 
 
486
<td>
 
487
  #if $message.sub_alert_name
 
488
    <b>$message.sub_alert_type#slurp
 
489
    #if $message.sub_alert_display
 
490
      #set plural = ""
 
491
      #if $message.sub_alert_number > 1:
 
492
          #set plural = "s"
 
493
      #end if
 
494
      (<a href="$message.sub_alert_display">$message.sub_alert_number</a> alert$plural)#slurp
 
495
    #end if
 
496
:</b> <i><a href="$message.sub_alert_link">$message.sub_alert_name</a></i><br/>#slurp
 
497
  #end if
 
498
 
 
499
  #if $message.aggregated and $message.aggregated_classifications_hidden > 0
 
500
    <b>($message.aggregated_classifications_hidden/$message.aggregated_classifications_total alerts not shown...
 
501
    <a href="$message.aggregated_classifications_hidden_expand">expand</a>)</b>
 
502
    <br/>
 
503
  #end if
 
504
 
 
505
  #for $info in $message.infos
 
506
    #if $message.aggregated and (len($message.infos) > 1 or $info.count > 1)
 
507
      $info.count x
 
508
    #end if
 
509
    
 
510
    #if $info.classification.value
 
511
      <a class="impact_severity_$info.severity.value" href="$info.display">$info.classification.value</a>
 
512
    #else
 
513
      <a class="impact_severity_$info.severity.value" href="$info.display">n/a</a>
 
514
    #end if
 
515
 
 
516
    #if $info.completion.value
 
517
      (<span class="impact_completion_$info.completion.value">$info.completion.value</span>)
 
518
    #end if
 
519
 
 
520
    <br/>
 
521
    #set $sep = "("
 
522
#for url, name in $info.classification_references##slurp
 
523
#if $url#$sep<a target="$prewikka.external_link_target" href="$url">$name</a>#else#$sep$name#end if##slurp
 
524
      #set $sep = ", "
 
525
#end for##if $info.classification_references#)#end if
 
526
  #end for
 
527
</td>
 
528
 
 
529
#for $name, $direction, $hidden, $total, $expand in ("source", $message.source, $message.aggregated_source_hidden, $message.aggregated_source_total, $message.aggregated_source_expand), ("target", $message.target, $message.aggregated_target_hidden, $message.aggregated_target_total, $message.aggregated_target_expand)
 
530
<td>
 
531
#if len($direction) == 0
 
532
       n/a
 
533
#end if
 
534
 
 
535
#set $need_hr = 0
 
536
 
 
537
#if $hidden > 0
 
538
       <b>($hidden/$total $name not shown...
 
539
       <a href="$expand">expand</a>)</b>
 
540
       <br/>
 
541
#end if
 
542
 
 
543
#for $direction in $direction 
 
544
      #if $need_hr
 
545
        <hr style="border: 1px dashed #808080; margin-top: 3px; margin-bottom: 0px;" />
 
546
      #end if
 
547
 
 
548
      #set $need_hr = 1
 
549
      #set $service = ""
 
550
      #set $proto_param = ""
 
551
      #set $proto_str = ""
 
552
    
 
553
      #if $direction.protocol.value != None
 
554
       #set $proto_str = $direction.protocol.value.lower()
 
555
       #set $proto_param = "&amp;protocol=" + $direction.protocol.value.upper() 
 
556
      #end if
 
557
 
 
558
      #for $address in $direction.addresses
 
559
       <a href="#" onclick="javascript:toggleVisibilityUnique('menu_$address_cnt'); return false;">$address.value</a>#slurp
 
560
       #if $direction.service.value != None
 
561
:<a target="$prewikka.external_link_target" href="https://www.prelude-ids.com/port_details.php?port=$str($direction.service.value)$proto_param">$str($direction.service.value)#slurp
 
562
         #if $proto_str
 
563
/$proto_str</a>
 
564
         #else 
 
565
</a>
 
566
         #end if
 
567
       #elif $proto_str
 
568
:$proto_str
 
569
       #end if
 
570
<br />
 
571
 
 
572
       <span id="menu_$address_cnt" class="popup_menu">
 
573
       #set global $address_cnt += 1
 
574
 
 
575
         - <a href="$address.inline_filter">Filter on this $name</a><br />
 
576
 
 
577
       #if not $address.category or $address.category in ("ipv4-addr", "ipv4-net", "ipv6-addr", "ipv6-net")
 
578
         - <a target="$prewikka.external_link_target" href="https://www.prelude-ids.com/host_details.php?host=$address.value">$name.capitalize() information</a><br />
 
579
 
 
580
          #for $cmdname, $link in $address.host_commands
 
581
         - <a href="$link">$cmdname</a><br />
 
582
          #end for
 
583
       #end if
 
584
 
 
585
       </span>
 
586
      #end for
 
587
     
 
588
      #if $len($direction.addresses) == 0 and $service
 
589
        service: $service[1:]
 
590
      #end if
 
591
 
 
592
     #set $cnt = 0
 
593
     #for $name, $value, $extra in $direction.listed_values
 
594
         #if $cnt > 0
 
595
          <br />
 
596
         #end if
 
597
 
 
598
         $name: <a href="$value.inline_filter">$value.value</a>
 
599
         #if $extra != None
 
600
          ($extra)
 
601
         #end if
 
602
         
 
603
         #set $cnt += 1
 
604
     #end for
 
605
#end for
 
606
 
 
607
</td>
 
608
#end for
 
609
 
 
610
<td>
 
611
  #for $sensor in $message.sensors
 
612
    <a href="$sensor.name.inline_filter">$sensor.name.value</a>
 
613
    #if $sensor.node_name.value
 
614
      (<a href="$sensor.node_name.inline_filter">$sensor.node_name.value</a>)
 
615
    #end if
 
616
    <br/>
 
617
  #end for
 
618
</td>
 
619
<td>
 
620
  #if $message.aggregated
 
621
    #if $message.time_min.value == $message.time_max.value
 
622
      $message.time_min.value
 
623
    #else
 
624
      $message.time_max.value -
 
625
      $message.time_min.value
 
626
    #end if
 
627
  #else
 
628
    $message.time.value
 
629
    #if $message.analyzer_time.value
 
630
      (sent at $message.analyzer_time.value)
 
631
    #end if
 
632
  #end if
 
633
</td>
 
634
#end filter
 
635
#filter Filter
 
636
#end filter
 
637
#end block message_fields
 
638
 
 
639
#block timeline_extra_content
 
640
#filter CleanOutput
 
641
<tr>
 
642
  <td id="filter_control_label">Filter: </td>
 
643
  <td colspan="3">
 
644
  <select name="filter" size="1" class="filter_control_select">
 
645
  <option value="">&nbsp;</option>
 
646
  #for $fltr in $filters
 
647
    <option value="$fltr" #if $fltr == $current_filter# selected="selected" #end if#>$fltr</option>
 
648
  #end for
 
649
  </select>
 
650
  </td>
 
651
</tr>
 
652
#end filter
 
653
#filter Filter
 
654
#end filter
 
655
#end block