]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/templates/opac/parts/header.tt2
TPac: more template scrubbing and cleaning
[working/Evergreen.git] / Open-ILS / src / templates / opac / parts / header.tt2
1 [%- USE money = format(l('$%.2f'));
2     USE date;
3     USE CGI = CGI_utf8;
4     USE POSIX;
5     SET DATE_FORMAT = l('%m/%d/%Y');
6
7     # Don't wrap in l() here; do that where this format string is actually used.
8     SET HUMAN_NAME_FORMAT = '[_1] [_2] [_3] [_4] [_5]';
9
10     is_advanced = CGI.param("_adv").size;
11     is_special = CGI.param("_special").size;
12
13     # -----------------------------------------------------------------------------
14     # mkurl( destination_page, params_to_set, params_to_clear )
15     #
16     # Current page, updated params:
17     # mkurl('', {foo => 'bar', boo => 'baz'});
18     #
19     # New page, one param is a list:
20     # mkurl('http://flarg.baz/squz', {foo => 'bar', boo => ['baz', 'faz']});
21     #
22     # New page, clear all existing params before applying new ones:
23     # mkurl('/fuz/buster', {foo => 'bar', boo => 'baz'}, 1); 
24     #
25     # Current page, clear 'some_param' from the existing params:
26     # mkurl('', {foo => 'bar', boo => 'baz'}, ['some_param']);
27     MACRO mkurl(page, params, clear_params) BLOCK;
28
29         # clone the query string to avoid clobberation
30         cgi = CGI.new(CGI.query_string);
31
32         # remove requested params
33         IF clear_params.0; # array
34             FOR p IN clear_params; cgi.delete(p); END;
35         ELSIF clear_params;
36             cgi.delete_all();
37         END;
38
39         # x and y are artifacts of using <input type="image" /> tags 
40         # instead of true submit buttons, and their values are never used.
41         cgi.delete('x', 'y'); 
42
43         # apply user params
44         FOR k IN params.keys;
45             encoded = [];
46             list = params.$k.0 ? params.$k : [params.$k];
47             # CGI croaks on already-decoded strings.  force-encode to be safe.
48             FOR p IN list; encoded.push(ctx.encode_utf8(p)); END;
49             foo = cgi.param("-name", k, "-values", encoded);
50         END;
51
52         # for url brevity, remove any params that have no value
53         FOR p IN cgi.param;
54             val = cgi.param(p);
55             IF val == ''; cgi.delete(p); END;
56         END;
57
58         IF page;
59             IF cgi.query_string;
60                 page _ '?' _ cgi.query_string;
61             ELSE;
62                 page;
63             END;
64         ELSE;
65             # staying on the current page
66             cgi.url("-path" => 1, "-query" => 1);
67         END;
68     END;
69 %]