forked from webmin/webmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodule_chooser.cgi
executable file
·139 lines (136 loc) · 4.15 KB
/
module_chooser.cgi
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/usr/local/bin/perl
# This CGI generates the HTML for choosing a module or list of modules
BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();
&ReadParse(undef, undef, 2);
%access = &get_module_acl();
if ($in{'multi'}) {
# selecting multiple modules
if ($in{'frame'} == 0) {
# base frame
&PrintHeader();
print "<script>\n";
@ul = split(/\s+/, $in{'module'});
$len = @ul;
print "sel = new Array($len);\n";
print "selr = new Array($len);\n";
for($i=0; $i<$len; $i++) {
%minfo = &get_module_info($ul[$i]);
if (%minfo) {
print "sel[$i] = \"$ul[$i]\";\n";
print "selr[$i] = \"$minfo{'desc'}\";\n";
}
}
print "</script>\n";
print "<title>$text{'modules_title1'}</title>\n";
print "<frameset cols='50%,50%'>\n";
print "<frame src=\"$gconfig{'webprefix'}/module_chooser.cgi?frame=1&multi=1\">\n";
print "<frameset rows='*,50' frameborder=no>\n";
print " <frame src=\"$gconfig{'webprefix'}/module_chooser.cgi?frame=2&multi=1\">\n";
print " <frame src=\"$gconfig{'webprefix'}/module_chooser.cgi?frame=3&multi=1\" scrolling=no>\n";
print "</frameset>\n";
print "</frameset>\n";
}
elsif ($in{'frame'} == 1) {
# list of all modules to choose from
&popup_header();
print "<script>\n";
print "function addmodule(u, r)\n";
print "{\n";
print "top.sel[top.sel.length] = u\n";
print "top.selr[top.selr.length] = r\n";
print "top.frames[1].location = top.frames[1].location\n";
print "return false;\n";
print "}\n";
print "</script>\n";
print "<font size=+1>$text{'modules_all'}</font>\n";
print "<table width=100%>\n";
foreach $m (&get_all_module_infos()) {
if ($in{'module'} eq $m->{'dir'}) { print "<tr $cb>\n"; }
else { print "<tr>\n"; }
print "<td width=20%><a href=\"\" onClick='return addmodule(\"$m->{'dir'}\", \"$m->{'desc'}\")'>$m->{'dir'}</a></td>\n";
print "<td>$m->{'desc'}</td> </tr>\n";
}
print "</table>\n";
&popup_footer();
}
elsif ($in{'frame'} == 2) {
# show chosen modules
&popup_header();
print "<font size=+1>$text{'modules_sel'}</font>\n";
print <<'EOF';
<table width=100%>
<script>
function sub(j)
{
sel2 = new Array(); selr2 = new Array();
for(k=0,l=0; k<top.sel.length; k++) {
if (k != j) {
sel2[l] = top.sel[k];
selr2[l] = top.selr[k];
l++;
}
}
top.sel = sel2; top.selr = selr2;
top.frames[1].location = top.frames[1].location;
return false;
}
for(i=0; i<top.sel.length; i++) {
document.write("<tr>\n");
document.write("<td><a href=\"\" onClick='return sub("+i+")'>"+top.sel[i]+"</a></td>\n");
document.write("<td>"+top.selr[i]+"</td>\n");
}
</script>
</table>
EOF
&popup_footer();
}
elsif ($in{'frame'} == 3) {
# output OK and Cancel buttons
&popup_header();
print "<script>\n";
print "function qjoin(l)\n";
print "{\n";
print "rv = \"\";\n";
print "for(i=0; i<l.length; i++) {\n";
print " if (rv != '') rv += ' ';\n";
print " if (l[i].indexOf(' ') < 0) rv += l[i];\n";
print " else rv += '\"'+l[i]+'\"'\n";
print " }\n";
print "return rv;\n";
print "}\n";
print "</script>\n";
print "<form>\n";
print "<input type=button value=\"$text{'modules_ok'}\" ",
"onClick='top.opener.ifield.value = qjoin(top.sel); ",
"top.close()'>\n";
print "<input type=button value=\"$text{'modules_cancel'}\" ",
"onClick='top.close()'>\n";
print " <input type=button value=\"$text{'modules_clear'}\" onClick='top.sel = new Array(); top.selr = new Array(); top.frames[1].location = top.frames[1].location'>\n";
print "</form>\n";
&popup_footer();
}
}
else {
# selecting just one module .. display a list of all modules to
# choose from
&popup_header($text{'modules_title2'});
print "<script>\n";
print "function select(f)\n";
print "{\n";
print "top.opener.ifield.value = f;\n";
print "top.close();\n";
print "return false;\n";
print "}\n";
print "</script>\n";
print "<table width=100%>\n";
foreach $m (&get_all_module_infos()) {
if ($in{'user'} eq $m->{'dir'}) { print "<tr $cb>\n"; }
else { print "<tr>\n"; }
print "<td width=20%><a href=\"\" onClick='return select(\"$m->{'dir'}\")'>$m->{'dir'}</a></td>\n";
print "<td>$m->{'dir'}</td> </tr>\n";
}
print "</table>\n";
&popup_footer();
}