3 # List the mail messages for some user in some folder
5 require './mailboxes-lib.pl';
7 &can_user($in{'user'}) || &error($text{'mail_ecannot'});
8 &is_user($in{'user'}) || -e $in{'user'} || &error($text{'mail_efile'});
9 $uuser = &urlize($in{'user'});
11 if ($config{'track_read'}) {
12 dbmopen(%read, "$module_config_directory/$in{'user'}.read", 0600);
15 # Make sure the mail system is OK
16 $err = &test_mail_system();
18 &ui_print_header(undef, $text{'index_title'}, "", undef, 1, 1);
19 if (!$access{'noconfig'}) {
20 &ui_print_endpage(&text('index_esystem3',
21 "../config.cgi?$module_name", $err));
24 &ui_print_endpage(&text('mail_esystem', $err));
28 &ui_print_header(undef, $text{'mail_title'}, "");
29 print &check_clicks_function();
30 @folders = &list_user_folders_sorted($in{'user'});
31 ($folder) = grep { $_->{'index'} == $in{'folder'} } @folders;
33 # Get folder-selection HTML
34 $sel = &folder_select(\@folders, $folder, "folder", undef, 0, 1);
36 # Work out start from jump page
37 $perpage = $folder->{'perpage'} || $config{'perpage'};
38 if ($in{'jump'} =~ /^\d+$/ && $in{'jump'} > 0) {
39 $in{'start'} = ($in{'jump'}-1)*$perpage;
42 # View mail from the most recent
43 @mail = reverse(&mailbox_list_mails(-$in{'start'},
44 -$in{'start'}-$perpage+1,
45 $folder, 1, \@error));
46 if ($in{'start'} >= @mail && $in{'jump'}) {
48 $in{'start'} = @mail - $perpage;
49 @mail = reverse(&mailbox_list_mails(-$in{'start'},
50 -$in{'start'}-$perpage+1,
51 $folder, 1, \@error));
54 # Show page flipping arrows
57 # Start of the deletion / move form
58 print &ui_form_start("delete_mail.cgi", "post");
59 print &ui_hidden("user", $in{'user'});
60 print &ui_hidden("folder", $folder->{'index'});
61 print &ui_hidden("mod", &modification_time($folder));
62 print &ui_hidden("start", $in{'start'});
63 if ($config{'top_buttons'} && @mail) {
64 &show_buttons(1, \@folders, $folder, \@mail, $in{'user'});
67 # Show error opening folder
69 print "<center><b><font color=#ff0000>\n";
70 print &text('mail_err', $error[0] == 0 ? $error[1] :
71 &text('save_elogin', $error[1])),"\n";
72 print "</font></b></center>\n";
77 for($i=$in{'start'}; $i<@mail && $i<$in{'start'}+$perpage; $i++) {
78 push(@showmail, $mail[$i]);
80 @hasattach = &mail_has_attachments(\@showmail, $folder);
84 &show_mail_table(\@showmail, $folder, 1);
87 &show_buttons(2, \@folders, $folder, \@mail, $in{'user'});
89 if ($config{'arrows'} && @mail) {
90 # Show page flipping arrows at the bottom
96 # Show simple search form
97 push(@grid, &ui_form_start("mail_search.cgi").
98 &ui_hidden("user", $in{'user'}).
99 &ui_hidden("folder", $folder->{'index'}).
100 &ui_hidden("simple", 1).
101 &ui_submit($text{'mail_search2'})." ".
102 &ui_textbox("search", undef, 20).
105 # Show advanced search button
106 push(@grid, &ui_form_start("search_form.cgi").
107 &ui_hidden("user", $in{'user'}).
108 &ui_hidden("folder", $folder->{'index'}).
109 &ui_submit($text{'mail_advanced'}, "advanced").
112 # Show delete all button
113 push(@grid, &ui_form_start("delete_all.cgi").
114 &ui_hidden("user", $in{'user'}).
115 &ui_hidden("folder", $folder->{'index'}).
116 &ui_submit($text{'mail_delall'}).
120 # Show page jump form
121 $jumpform = (@mail > $perpage);
123 push(@grid, &ui_form_start("list_mail.cgi").
124 &ui_hidden("user", $in{'user'}).
125 &ui_hidden("folder", $folder->{'index'}).
126 &ui_submit($text{'mail_jump'})." ".
127 &ui_textbox("jump", int($in{'start'} / $perpage)+1, 3)." ".
128 $text{'mail_of'}." ".(int(@mail / $perpage)+1).
132 # Show the buttons, if any
135 print &ui_grid_table(\@grid, 4, 100,
136 [ "align=left width=25%", "align=center width=25%",
137 "align=center width=25%", "align=right width=25%" ],
138 "cellpadding=0 cellspacing=0");
141 if ($config{'log_read'}) {
142 &webmin_log("read", undef, $in{'user'},
143 { 'file' => $folder->{'file'} });
145 &ui_print_footer("", $text{'index_return'});
149 my $link = "list_mail.cgi?user=".&urlize($in{'user'})."&folder=".$in{'folder'};
150 my $left = $in{'start'} ?
151 $link."&start=".($in{'start'}-$perpage) : undef;
152 my $right = $in{'start'}+$perpage < @mail ?
153 $link."&start=".($in{'start'}+$perpage) : undef;
154 my $first = $in{'start'} ?
155 $link."&start=0" : undef;
156 my $last = $in{'start'}+$perpage < @mail ?
157 $link."&start=".(int((scalar(@mail)-$perpage-1)/$perpage + 1)*$perpage) : undef;
158 my $s = @mail-$in{'start'};
159 my $e = @mail-$in{'start'}-$perpage+1;
160 print &ui_page_flipper(
161 @mail ? &text('mail_pos', $s, $e < 1 ? 1 : $e, scalar(@mail), $sel)
162 : &text('mail_none', $sel),
163 &ui_submit($text{'mail_fchange'}).&ui_hidden("user", $in{'user'}),