blob: ba709ce6405aaff1f8023187082aface69694296 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
<% include('/elements/header-popup.html', 'Override taxes', '', 'onload="resizeFrames()"') %>
<TABLE WIDTH="100%" HEIGHT="100%">
<TR><TD>
<iframe name="selected" src="<% $p %>browse/tax_class.html?_type=select;magic=select;maxrecords=15;offset=<% $selected_offset %>;selected=<% $selected %>;" width="100%" frameborder="0" border="0" id="selectorSelected" scrolling="no">
</iframe>
<BR>
</TD></TR>
<TR><TD>
<FORM="dummy">
<CENTER>
<INPUT type="submit" value="Finish" onclick="s=fetchSelected(); s.shift(); parent.document.getElementById('tax_override').value=s.toString(); parent.cClick();">
<INPUT type="reset" value="Cancel" onclick="parent.cClick();">
</CENTER>
</FORM>
</TD></TR>
<TR><TD>
<iframe name="unselected" src="<% $p %>browse/tax_class.html?_type=select;magic=omit;maxrecords=15;offset=<% $unselected_offset %>;omit=<% $selected %>;" width="100%" frameborder="0" border="0" id="selectorUnselected" scrolling="no">
</iframe>
<BR>
</TD></TR>
</TABLE>
<SCRIPT>
function resizeFrames() {
//frames['selected'].style.height =
// frames['selected'].contentWindow.document.body.scrollHeight + "px";
//frames['unselected'].style.height =
// frames['unselected'].contentWindow.document.body.scrollHeight + "px";
var f = document.getElementById('selectorSelected');
f.style.height = f.contentWindow.document.body.scrollHeight + "px";
var f = document.getElementById('selectorUnselected');
f.style.height = f.contentWindow.document.body.scrollHeight + "px";
}
function fetchOffset(search) {
var value = 0;
if (search.length > 1) {
var params = search.split(';');
for (i=0; i<params.length; i++) {
if (params[i].substr(0,7) == 'offset=') {
value = params[i].substr(7);
}
}
}
return value;
}
function fetchOffsetStrings() {
return 'selected_offset=' +
fetchOffset(frames['selected'].location.search) + ';' +
'unselected_offset=' +
fetchOffset(frames['unselected'].location.search) + ';';
}
function fetchSelected() {
var i;
var selected = new Array;
var replace = '?';
if (window.location.search.length > 1) {
var search = window.location.search.substr(1).split(';');
for (i=0; i<search.length; i++) {
if (search[i].substr(0,9) == 'selected=') {
selected = search[i].substr(9).split(',')
}else if (search[i].substr(0,16) == 'selected_offset=') {
}else if (search[i].substr(0,18) == 'unselected_offset=') {
}else if (search[i].length) {
replace += search[i] + ';';
}
}
}
selected.unshift(replace);
return selected;
}
function doUnselect(classnum) {
var selected = fetchSelected();
var search = selected.shift();
//alert("discovered: "+selected.toString());
var i=-1, j=-1, k=selected.length;
while(++j < k) {
if (!(selected[j]==classnum)) {
selected[++i]=selected[j];
}
}
selected.length = ++i;
//alert("finished: "+selected.toString());
search += "selected=" + selected.toString() + ';';
window.location.search = search + fetchOffsetStrings();
}
function doSelect(classnum) {
var selected = fetchSelected();
var search = selected.shift();
selected.push(classnum);
search += "selected=" + selected.toString() + ';';
window.location.search = search + fetchOffsetStrings();
}
</SCRIPT>
<% include('/elements/footer.html') %>
<%once>
my $conf = new FS::Conf;
</%once>
<%init>
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
my $selected_offset = $1
if $cgi->param('selected_offset') =~/^(\d+)$/;
my $unselected_offset = $1
if $cgi->param('unselected_offset') =~/^(\d+)$/;
my $selected = $1
if $cgi->param('selected') =~/^([,\d]+)$/;
</%init>
|