3 # Display a list of all known printers
5 require './lpadmin-lib.pl';
6 &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1, 0,
9 $text{'style_'.$config{'print_style'}} ||
10 uc($config{'print_style'})));
11 @plist = &list_printers();
13 # Check the print system (if possible)
14 if (defined(&check_print_system)) {
15 $pserr = &check_print_system();
18 print &text('index_esystem',
19 "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
20 &ui_print_footer("/", $text{'index'});
25 # Create links to select / add
27 if (@plist && !$config{'display_mode'}) {
28 push(@links, &select_all_link("d"),
29 &select_invert_link("d") );
31 push(@links, "<a href=edit_printer.cgi?new=1>$text{'index_add'}</a>")
34 if ($config{'sort_mode'}) {
35 @plist = sort { $a cmp $b } @plist;
38 if ($config{'display_mode'}) {
39 # Just show printer names
40 print &ui_links_row(\@links);
44 local $ed = &can_edit_printer($p);
45 local $jb = &can_edit_jobs($p);
46 next if (!$ed && !$jb && !$access{'view'});
49 $l = "<a href='edit_printer.cgi?name=$p'>".
55 if ($config{'show_jobs'}) {
56 local @jobs = &get_jobs($p->{'name'});
57 $l .= " <a href='list_jobs.cgi?name=$p'>".
58 "(".&text('index_jcount', scalar(@jobs)).
62 $l .= " <a href='list_jobs.cgi?name=$p'>".
63 "($text{'index_jlist'})</a>";
67 print &ui_grid_table(\@grid, 4, 100,
68 [ "width=25%", "width=25%", "width=25%", "width=25%" ],
70 $text{'index_header'});
71 print &ui_links_row(\@links);
74 # Show full printer details .. table heading first
75 if ($access{'delete'}) {
76 print &ui_form_start("delete_printers.cgi", "post");
78 print &ui_links_row(\@links);
80 print &ui_columns_start([
81 $access{'delete'} ? ( "" ) : ( ),
85 $config{'show_status'} ? ( $text{'index_enabled'},
86 $text{'index_accepting'} )
87 : ( $text{'index_driver'} ),
88 $text{'index_jobs'} ], 100, 0, \@tds);
91 for($i=0; $i<@plist; $i++) {
92 local ($wdrv, $hdrv, $drv);
93 local $ed = &can_edit_printer($plist[$i]);
94 local $jb = &can_edit_jobs($plist[$i]);
95 next if (!$ed && !$jb && !$access{'view'});
96 $p = &get_printer($plist[$i], !$config{'show_status'});
97 $ed = 0 if ($p->{'ro'});
101 push(@cols, "<a href=\"edit_printer.cgi?".
102 "name=$p->{'name'}\">".
103 &html_escape($p->{'name'})."</a>");
106 push(@cols, &html_escape($p->{'name'}));
108 push(@cols, &html_escape($p->{'desc'}));
109 if (!$webmin_windows_driver) {
110 $wdrv = &is_webmin_windows_driver($p->{'iface'}, $p);
112 $wdrv = &is_windows_driver($p->{'iface'}, $p) if (!$wdrv);
113 $hdrv = &is_hpnp_driver($p->{'iface'}, $p);
115 push(@cols, "<tt>\\\\$wdrv->{'server'}".
116 "\\$wdrv->{'share'}</tt>");
117 $p->{'iface'} = $wdrv->{'program'};
120 push(@cols, "<tt>HPNP $hdrv->{'server'}:".
121 "$hdrv->{'port'}</tt>");
122 $p->{'iface'} = $hdrv->{'program'};
124 elsif ($p->{'rhost'}) {
125 local $qu = $p->{'rqueue'} ? $p->{'rqueue'}
127 push(@cols, "<tt>$p->{'rhost'}:$qu</tt>");
129 elsif ($p->{'dhost'}) {
130 push(@cols, "<tt>$p->{'dhost'}:$p->{'dport'}</tt>");
133 push(@cols, &dev_name($p->{'dev'}));
135 if (!$webmin_print_driver) {
136 $drv = &is_webmin_driver($p->{'iface'}, $p);
138 $drv = &is_driver($p->{'iface'}, $p)
139 if ($drv->{'mode'} == 0 || $drv->{'mode'} == 2);
140 if ($config{'show_status'}) {
141 push(@cols, $p->{'enabled'} ? $text{'yes'}
143 push(@cols, $p->{'accepting'} ? $text{'yes'}
147 push(@cols, &html_escape($drv->{'desc'}));
149 $jlink = "<a href=\"list_jobs.cgi?name=$p->{'name'}\">";
150 if ($config{'show_jobs'}) {
151 local @jobs = &get_jobs($p->{'name'});
152 $jlink .= scalar(@jobs);
155 $jlink .= $text{'index_list'};
159 if (!$access{'delete'}) {
161 print &ui_columns_row(\@cols, \@tds);
165 print &ui_checked_columns_row(\@cols, \@tds,
169 # Cannot delete this one
170 print &ui_columns_row([ "", @cols ], \@tds);
173 print &ui_columns_end();
174 if ($access{'delete'}) {
175 print &ui_links_row(\@links);
176 print &ui_form_end([ [ "delete", $text{'index_delete'} ] ]);
181 print "<b>$text{'index_none'}</b><p>\n";
182 print &ui_links_row(\@links);
185 # display button to start or stop the scheduler (lpd, lpsched, etc..)
187 print &ui_buttons_start();
188 $pid = &sched_running();
189 if ($pid < 0 || !$access{'stop'}) {
190 # cannot stop or start..
192 elsif ($pid && $access{'stop'} == 2) {
194 print &ui_buttons_row("restart.cgi",
195 $text{'index_restart'}, $text{'index_restartmsg'});
198 print &ui_buttons_row("stop.cgi",
199 $text{'index_stop'}, $text{'index_stopmsg'});
202 print &ui_buttons_row("start.cgi",
203 $text{'index_start'}, $text{'index_startmsg'});
206 # Show cluster button, if possible
207 if (&foreign_check("servers")) {
208 &foreign_require("servers", "servers-lib.pl");
209 @allservers = grep { $_->{'user'} }
210 &servers::list_servers();
212 if ($access{'cluster'} && @allservers) {
213 print &ui_buttons_row("cluster.cgi",
214 $text{'index_cluster'}, $text{'index_clusterdesc'});
217 print &ui_buttons_end();
219 &ui_print_footer("/", $text{'index'});