Code Search for Developers
 
 
  

index.html from AlphaMail at Krugle


Show index.html syntax highlighted

% # vim: set syntax=mason:
<%args>
$folder => 'none'
$start => -1
$n => 0
$sortby => 'unknown'
$message => ''
$check => 0
</%args>
<& /mail/header.mhtml, message => $message, refresh => 1, folder => $folder, start => $start, n => $n, sortby => $sortby, title => "Mail - $folder" &>
<script type="text/javascript" language="JavaScript">
   <!--
      function check_all()
      {
         document.message_form.uids.checked=1;
         for(var i=0; i<document.message_form.uids.length; i++)
            document.message_form.uids[i].checked=1;
      }
      function uncheck_all()
      {
         document.message_form.uids.checked=0;
         for(var i=0; i<document.message_form.uids.length; i++)
            document.message_form.uids[i].checked=0;
      }
      function invert_checks()
      {
         document.message_form.uids.checked=!document.message_form.uids.checked;
         for(var i=0; i<document.message_form.uids.length; i++)
            document.message_form.uids[i].checked=!document.message_form.uids[i].checked;
      }
      function check_read()
      {
         if(document.message_form.uids.alt == "seen")
            document.message_form.uids.checked=1;
         else
            document.message_form.uids.checked=0;

         for(var i=0; i<document.message_form.uids.length; i++)
            if(document.message_form.uids[i].alt == "seen")
               document.message_form.uids[i].checked=1;
            else
               document.message_form.uids[i].checked=0;
      }
      function check_unread()
      {
         if(document.message_form.uids.alt == "seen")
            document.message_form.uids.checked=0;
         else
            document.message_form.uids.checked=1;

         for(var i=0; i<document.message_form.uids.length; i++)
            if(document.message_form.uids[i].alt == "seen")
               document.message_form.uids[i].checked=0;
            else
               document.message_form.uids[i].checked=1;
      }
   // -->
</script>
<form name="message_form" action="/mail/process_messages.html" method="post">
<div class="top_controls">
      <div class="index_controls">
% if($trash eq $folder) {
         <input type="submit" name="empty" value="Empty Trash">
% } else {
         <input type="submit" name="delete" value="Delete">
%    if($trash eq 'none') {
         <input type="submit" name="purge" value="Purge Deleted">
%    }
% }
         <input type="hidden" name="folder" value="<% $folder |h %>">
         <input type="hidden" name="start" value="<% $start |h %>">
         <input type="hidden" name="n" value="<% $n |h %>">
         <input type="hidden" name="sortby" value="<% $sortby |h %>">
         <input type="hidden" name="uidv" value="<% $uidvalidity |h %>">
         <select name="action" onChange="document.message_form.submit()">
            <option selected value="none">More Actions ...</option>
% if($trash eq 'none') {
            <option value="undelete">&nbsp;&nbsp;&nbsp;Undelete</option>
% }
            <option value="mark">&nbsp;&nbsp;&nbsp;Flag</option> 
            <option value="unmark">&nbsp;&nbsp;&nbsp;Unflag</option> 
            <option value="unread">&nbsp;&nbsp;&nbsp;Mark as unread</option> 
            <option disabled value="none">-----</option>
            <option value="report">&nbsp;&nbsp;&nbsp;Report Spam</option>
% if($trash eq 'none') {
            <option disabled value="none">-----</option>
            <option value="kill">&nbsp;&nbsp;&nbsp;Delete and Purge</option>
% }
            <optgroup label="Move to:">
% for my $fldr (@alt_folders, @$folderlist) {
%    my $displayname = $tr->decode($fldr);
%    $displayname =~ s/^\Q$prefix\E\/?//;
               <option value="to:<% $fldr |h %>"><% decode('utf8', $displayname) |h %></option>
% }
            </optgroup>
         </select>
% if(!$user->getAttribute('javascript')) {
         <input type="submit" name="nothing" value="Go">
% }
         <% hyperlink("/mail/index.html", "Refresh", \%ARGS) %><br>
      </div>
% if($user->getAttribute('basic_html')) { # DUMB BROWSER AGAIN! ***********
      <div class="navright_retarded">
% } else { # END OF DUMB BROWSER ********************************************
      <div class="navright">
% }
% if($start > $n+1) {
         <% hyperlink('/mail/index.html', "<< First", { start => 1, n => $n, sortby => $sortby , folder => $folder }, 'unselected') %>
% }
% if($start > 1) {
         <% hyperlink('/mail/index.html', "< Previous", { start => ($start-$n > 0 ? ($start-$n):1), n => $n, sortby => $sortby , folder => $folder }, 'unselected') %>
% }
         <% $msgcnt ? $start:0 %> - <% $start+$n-1 > $msgcnt ? $msgcnt:($start+$n-1) %> of <% $msgcnt %>
% if(($start+$n) < ($msgcnt+1)) {
         <% hyperlink('/mail/index.html', "Next >", { start => $start+$n, n => $n, sortby => $sortby , folder => $folder }, 'unselected') %>
% }
% if($start+2*$n-1 < $msgcnt) {
         <% hyperlink('/mail/index.html', "Last >>", { start => $msgcnt-$n+1, n => $n, sortby => $sortby , folder => $folder }, 'unselected') %>
% }
      </div>
</div>
      <div class="message_quickcheck">
% if($js) {
         Select: 
         <a class="control" onClick="check_all();" href="#">All</a>,
         <a class="control" onClick="uncheck_all();" href="#">None</a>, 
         <a class="control" onClick="invert_checks();" href="#">Invert</a>,
         <a class="control" onClick="check_read();" href="#">Read</a>,
         <a class="control" onClick="check_unread();" href="#">Unread</a>
% } else {
      Select:
      <% hyperlink('/mail/index.html', "All", { check => "All" }, "control") %>,
      <% hyperlink('/mail/index.html', "None", { check => 0 }, "control") %>,
      <% hyperlink('/mail/index.html', "Read", { check => "Read" }, "control") %>,
      <% hyperlink('/mail/index.html', "Unread", { check => "Unread" }, "control") %>
% }
      </div>
% if($user->getAttribute('basic_html')) { # STUPID BROWSER *****************
      <table class="messagelist">
         <tr> 
            <td>
            </td>
            <td class="messageFrom_retarded">
                  <% hyperlink("/mail/index.html", ($folder eq $sent ? "To":"From"), { start => $start, n => $n, sortby => ($folder eq $sent ? 'to':'from'), uidv => $uidvalidity }, $sortby =~ m/^(from|to)$/ ? "selected":"unselected") %>
            </td>
            <td class="messageSubject_retarded">
                  <% hyperlink("/mail/index.html", "Subject" . ($sortby eq 'thread' ? " (sorted by thread and date)":""), { start => $start, n => $n, sortby => 'thread', uidv => $uidvalidity }, $sortby eq 'thread' ? "selected":"unselected") %>
            </td>
            <td class="messageDate_retarded">
                  <% hyperlink("/mail/index.html", "Date", { start => $start, n => $n, sortby => 'date', uidv => $uidvalidity }, $sortby eq 'date' ? "selected":"unselected") %>
            </td>
         </tr>
% if(defined($headers) && @$headers && defined($headers->[0]{to})) {
<%perl>
      my $offset = $start;
      for my $entry (@$headers) {
         my $date = $entry->{date};
         my ($day, $month, $year, $hour, $minute) = $date =~ m/(?:\w+,\s+)?(\d{1,2})\s+(\w{3})\s+(\d{2,4})\s+(\d+):(\d+):/;
         
         # Customize the date:
         eval { 
            my $mon = Decode_Month($month);
            my $dow = Day_of_Week($year, $mon, $day);
            if($today[3] == $day && $today[5]+1900 == $year && $today[4]+1 == $mon)
            {
               $date = "$hour:$minute";
            } elsif(Delta_Days($year, $mon, $day, $today[5]+1900, $today[4]+1, $today[3]) < 7) {
               $date = Day_of_Week_Abbreviation($dow);
            } elsif($today[5]+1900 == $year) {
               $date = "$month $day";
            } else {
               $year =~ s/^..//;
               $date = "$mon/$day/$year";
            }
         };
         if($@) {
            $logger->error("Unable to format date: $@");
            $date = $entry->{date};
         }
         my @fromaddr = Email::Address->parse($entry->{from});
         my $from;
         if(@fromaddr && defined($fromaddr[0]) && $fromaddr[0]->phrase) {
            $from = $fromaddr[0]->phrase;
         } elsif(@fromaddr && defined($fromaddr[0]) && $fromaddr[0]->address) {
            $from = $fromaddr[0]->address;
         } else {
            $from = $entry->{from};
         }
         my @toaddr = Email::Address->parse($entry->{to});
         my $to;
         if(@toaddr && defined($toaddr[0]) && $toaddr[0]->phrase) {
            $to = $toaddr[0]->phrase;
         } elsif(@toaddr && defined($toaddr[0]) && $toaddr[0]->address) {
            $to = $toaddr[0]->address;
         } else {
            $to = $entry->{to};
         }
</%perl>
         <tr> 
            <td class="messageFlags_retarded">
               <input alt="<% $entry->{seen} ? "seen":"unseen" %>" 
                      type="checkbox" name="uids" 
                      <% ($check eq 'All' || ($check eq 'Read' && $entry->{seen}) || ($check eq 'Unread' && !$entry->{seen})) ? "checked":"" %>
                      value="<% $entry->{uid} %>">
               <span class="flags" onmouseover="return escape('R = Replied, F = Forwarded');">
                  <% ($entry->{answered} ? 'R':'') %><% ($entry->{attachment} ? 'A':'') %><% ($entry->{forwarded} ? 'F':'') %>
               </span>
            </td>
            <td class="messageFrom_retarded">
               <a href="<% build_url("/mail/read.html", 
                              { sorted_offset => $offset, n => $n, 
                                uidv => $uidvalidity, uid => $entry->{uid},
                                sortby => $sortby , folder => $folder }) |h %>">
% if($folder eq $sent) {
                     <% $to |h %>
% } else {
                     <% $from |h %>
% }
               </a>
            </td>
            <td class="messageSubject_retarded">
               <a href="<% build_url("/mail/read.html", 
                              { sorted_offset => $offset, n => $n, 
                                uidv => $uidvalidity, uid => $entry->{uid},
                                sortby => $sortby , folder => $folder }) |h %>">
% if($entry->{deleted}) {
                  <span class="deleted">
% }
% my $class = ($entry->{flagged} ? "flagged":($entry->{seen} ? "seen":"unseen"));
                     <span class="<% $class %>"><% (($sortby eq 'thread' && $entry->{threadlevel}) ? ("+" . "-" x $entry->{threadlevel}):"") . $entry->{subject} |h %> - <span class="snippet"><% $entry->{snippet} |h %></span></span>
% if($entry->{deleted}) {
                  </span>
% }
               </a>
            </td>
            <td class="messageDate_retarded">
                  <% $date |h %>
            </td>
         </tr>
%             $offset++;
%    }
% } else {
         <tr>
            <td class="tablemessage_retarded" colspan="4">
               There are no messages in this mailbox.
            </td>
         </tr>
% }
      </table>
% } else { # NOT A DUMB BROWSER: ********************************************
      <table class="messagelist">
         <tr> 
            <td class="messageFlags">
            </td>
            <td class="messageFrom">
               <div class="nowrap">
                  <% hyperlink("/mail/index.html", ($folder eq $sent ? "To":"From"), { start => $start, n => $n, sortby => ($folder eq $sent ? 'to':'from'), uidv => $uidvalidity }, $sortby =~ m/^(from|to)$/ ? "selected":"unselected") %>
               </div>
            </td>
            <td class="messageSubject">
               <div class="nowrap">
                  <% hyperlink("/mail/index.html", "Subject" . ($sortby eq 'thread' ? " (sorted by thread and date)":""), { start => $start, n => $n, sortby => 'thread', uidv => $uidvalidity }, $sortby eq 'thread' ? "selected":"unselected") %>
               </div>
            </td>
            <td class="messageDate">
               <div class="date">
                  <% hyperlink("/mail/index.html", "Date", { start => $start, n => $n, sortby => 'date', uidv => $uidvalidity }, $sortby eq 'date' ? "selected":"unselected") %>
               </div>
            </td>
         </tr>
% if(defined($headers) && @$headers && defined($headers->[0]{to})) {
<%perl>
      my $offset = $start;
      for my $entry (@$headers) {
         my $date = $entry->{date};
         my ($day, $month, $year, $hour, $minute) = $date =~ m/(?:\w+,\s+)?(\d{1,2})\s+(\w{3})\s+(\d{2,4})\s+(\d+):(\d+):/;
         # Customize the date:
         eval { 
            my $mon = Decode_Month($month);
            my $dow = Day_of_Week($year, $mon, $day);
            if($today[3] == $day && $today[5]+1900 == $year && $today[4]+1 == $mon)
            {
               $date = "$hour:$minute";
            } elsif(Delta_Days($year, $mon, $day, $today[5]+1900, $today[4]+1, $today[3]) < 7) {
               $date = Day_of_Week_Abbreviation($dow);
            } elsif($today[5]+1900 == $year) {
               $date = "$month $day";
            } else {
               $year =~ s/^..//;
               $date = "$mon/$day/$year";
            }
         };
         if($@) {
            $logger->error("Unable to format date: $@");
            $date = $entry->{date};
         }
         my @fromaddr = Email::Address->parse($entry->{from});
         my $from;
         if(@fromaddr && defined($fromaddr[0]) && $fromaddr[0]->phrase) {
            $from = $fromaddr[0]->phrase;
         } elsif(@fromaddr && defined($fromaddr[0]) && $fromaddr[0]->address) {
            $from = $fromaddr[0]->address;
         } else {
            $from = $entry->{from};
         }
         my @toaddr = Email::Address->parse($entry->{to});
         my $to;
         if(@toaddr && defined($toaddr[0]) && $toaddr[0]->phrase) {
            $to = $toaddr[0]->phrase;
         } elsif(@toaddr && defined($toaddr[0]) && $toaddr[0]->address) {
            $to = $toaddr[0]->address;
         } else {
            $to = $entry->{to};
         }
</%perl>
         <tr> 
            <td class="messageFlags">
               <input alt="<% $entry->{seen} ? "seen":"unseen" %>" 
                      type="checkbox" name="uids" 
                      <% ($check eq 'All' || ($check eq 'Read' && $entry->{seen}) || ($check eq 'Unread' && !$entry->{seen})) ? "checked":"" %>
                      value="<% $entry->{uid} %>">
               <span class="flags" onmouseover="return escape('R = Replied, F = Forwarded');">
                  <% ($entry->{answered} ? 'R':'') %><% ($entry->{attachment} ? 'A':'') %><% ($entry->{forwarded} ? 'F':'') %>
               </span>
            </td>
            <td class="messageFrom">
               <div class="nowrap">
                  <a href="<% build_url("/mail/read.html", 
                                 { sorted_offset => $offset, n => $n, 
                                   uidv => $uidvalidity, uid => $entry->{uid},
                                   sortby => $sortby , folder => $folder }) |h %>">
% if($folder eq $sent) {
                     <% $to |h %>
% } else {
                     <% $from |h %>
% }
                  </a>
               </div>
            </td>
            <td class="messageSubject">
               <div class="nowrap">
                  <a href="<% build_url("/mail/read.html", 
                                 { sorted_offset => $offset, n => $n, 
                                   uidv => $uidvalidity, uid => $entry->{uid},
                                   sortby => $sortby , folder => $folder }) |h %>">
% if($entry->{deleted}) {
                  <span class="deleted">
% }
% my $class = ($entry->{flagged} ? "flagged":($entry->{seen} ? "seen":"unseen"));
                     <span class="<% $class %>"><% (($sortby eq 'thread' && $entry->{threadlevel}) ? ("+" . "-" x $entry->{threadlevel}):"") . $entry->{subject} |h %> - <span class="snippet"><% $entry->{snippet} |h %></span></span>
% if($entry->{deleted}) {
                  </span>
% }
                  </a>
               </div>
            </td>
            <td class="messageDate">
               <div class="date">
                  <% $date |h %>
               </div>
            </td>
         </tr>
%             $offset++;
%    }
% } else {
         <tr>
            <td class="tablemessage" colspan="4">
               There are no messages in this mailbox.
            </td>
         </tr>
% }
      </table>
% } # END OF NOT A DUMB BROWSER *********************************************
      <div class="message_quickcheck">
% if($js) {
         Select:
            <a class="control" onClick="check_all();" href="#">All</a>,
            <a class="control" onClick="uncheck_all();" href="#">None</a>, 
            <a class="control" onClick="invert_checks();" href="#">Invert</a>,
            <a class="control" onClick="check_read();" href="#">Read</a>,
            <a class="control" onClick="check_unread();" href="#">Unread</a>
% } else {
         Select:
         <% hyperlink('/mail/index.html', "All", { check => "All" }, "control") %>,
         <% hyperlink('/mail/index.html', "None", { check => 0 }, "control") %>,
         <% hyperlink('/mail/index.html', "Read", { check => "Read" }, "control") %>,
         <% hyperlink('/mail/index.html', "Unread", { check => "Unread" }, "control") %>
% }
      </div>
      <div class="index_controls">
% if($trash eq $folder) {
         <input type="submit" name="empty" value="Empty Trash">
% } else {
         <input type="submit" name="delete" value="Delete">
%    if($trash eq 'none') {
         <input type="submit" name="purge" value="Purge Deleted">
%    }
% }
         <select name="action2" onChange="document.message_form.submit()">
            <option disabled selected value="none">More Actions ...</option>
% if($trash eq 'none') {
            <option value="undelete">&nbsp;&nbsp;&nbsp;Undelete</option>
% }
            <option value="mark">&nbsp;&nbsp;&nbsp;Flag</option> 
            <option value="unmark">&nbsp;&nbsp;&nbsp;Unflag</option> 
            <option value="unread">&nbsp;&nbsp;&nbsp;Mark as unread</option> 
            <option disabled value="none">-----</option>
            <option value="report">&nbsp;&nbsp;&nbsp;Report Spam</option>
% if($trash eq 'none') {
            <option disabled value="none">-----</option>
            <option value="kill">&nbsp;&nbsp;&nbsp;Delete and Purge</option>
% }
            <optgroup label="Move to:">
% for my $fldr (@alt_folders, @$folderlist) {
%    my $displayname = $tr->decode($fldr);
%    $displayname =~ s/^\Q$prefix\E\/?//;
               <option value="to:<% $fldr |h %>"><% decode('utf8', $displayname) |h %></option>
% }
            </optgroup>
         </select>
% if(!$user->getAttribute('javascript')) {
         <input type="submit" name="nothing" value="Go">
% }
         <% hyperlink("/mail/index.html", "Refresh", \%ARGS) %><br>
      </div>
   </form>
   <!-- Cache lookup time: <% sprintf("%4.2f", tv_interval( $st, $st2)) %> seconds 
   <P>Response time: <% sprintf("%4.2f", tv_interval( $st, [gettimeofday])) %> seconds
   -->
<& /mail/footer.mhtml &>

<%init>
my $logger = Log::Log4perl->get_logger('alphamail');
my $user = Apache::SiteControl->getCurrentUser($r);
if(!$user || !$user->isa('Apache::SiteControl::User')) {
   $logger->error("Unable to find a user for the given session key.");
   $m->redirect("/");
}
AlphaMail::SessionUtil::sessionSetup($r, $user, $config);
my $js = 0;
my $tr;
my $prefs;
my @today;
eval {
   $tr = Unicode::IMAPUtf7->new();
   $prefs = new AlphaMail::Preferences($user->getUsername(), 
                                      $user->getAttribute('imap'), $config);
   @today = localtime;
};
if($@) {
   $logger->error("fatal error: $@. User, m and r were: ". Dumper($user, $m, $r));
   die "Unable to process index.html";
}

if($folder =~ m/\\/ || $folder =~ m/^\// || $folder =~ m/\.\./) {
   $logger->error("SECURITY ALERT: Access requested for folder $folder by user: " . $user->getUsername());
   $m->redirect('/mail/index.html');
}

if(!$prefs->get('trash_folder')) {
   $m->redirect('/mail/first_login.html');
}

# Notify them if they clobbered their own session
if($user->getAttribute("session_removed") && $user->getAttribute("session_removed") == 1) {
   $message = "Multiple sessions detected. You forgot to log out last time! Your old session was logged out.";
   $user->setAttribute($r, "session_removed", 0);
}

if(!defined($user->getAttribute('javascript'))) {
   # If the javascript property is not defined, then this is the first pass.
   # Features that vary with browser:
   #  - Basic HTML vs advanced HTML: basic_html = 0 or 1
   #  - field completion in compose: field_completion = 0 or 1
   #  - tool tips, auto form submission: javascript = 0 or 1
   #  - Spell check DOM replacement: dom_edit = 0 or 1
   my $js = defined($user->getAttribute('credential_4')) ? $user->getAttribute('credential_4'):0;
   $user->setAttribute($r, 'javascript', $js); # defaults
   $user->setAttribute($r, 'basic_html', 1);
   $user->setAttribute($r, 'field_completion', 0);
   $user->setAttribute($r, 'dom_edit', 0);
   if(defined($user->getAttribute('credential_4'))) {
      my $id = $user->getAttribute('credential_5');
      my $os = "other";
      $os = "windows" if $id =~ m/windows/i;
      $os = "mac" if $id =~ m/macintosh/i;
      $os = "linux" if $id =~ m/linux/i;
      if($id =~ m/Safari/) { # Safari
         $user->setAttribute($r, 'basic_html', 0);
         $user->setAttribute($r, 'field_completion', $js);
         $user->setAttribute($r, 'dom_edit', 1);
      } elsif($id =~ m/Opera/) { # Opera
         $user->setAttribute($r, 'basic_html', 0);
         $user->setAttribute($r, 'field_completion', $js);
         $user->setAttribute($r, 'dom_edit', 1);
      } elsif($id =~ m/Gecko\/(\d+)\b/i) { # Mozilla-based
         if($1 > 20040500) {
            $user->setAttribute($r, 'basic_html', 0);
            $user->setAttribute($r, 'field_completion', $js);
            $user->setAttribute($r, 'dom_edit', 1);
         } 
      } elsif($id =~ m/MSIE\s+(\d+)\.(\d+)/) { # IE 
         if($1 >= 6) {
            $user->setAttribute($r, 'basic_html', 0);
            $user->setAttribute($r, 'field_completion', $js);
            $user->setAttribute($r, 'dom_edit', 1);
         } 
      }
      $user->setAttribute($r, 'supported', ($user->getAttribute('basic_html') == 0 && $user->getAttribute('field_completion') == 1 && $user->getAttribute('dom_edit') == 1));
      $logger->info($user->getUsername() . " using " . $user->getAttribute('credential_5') . " version " . $user->getAttribute('credential_6'));
      $logger->info("Enabling features: basic_html: " . $user->getAttribute('basic_html') . ", field_completion: " . $user->getAttribute('field_completion') . ", javascript: " . $js);
   }
}
$js = $user->getAttribute('javascript');

my $prefix = $prefs->get('folder_prefix', $config->get('folder_prefix', 'mail'));

# Get the configured allowed number of messages per page:
my @allowed_per_page = $config->getList('allowed_per_page', 20, 30, 50);
@allowed_per_page = (20) if(!@allowed_per_page);

my $trash = $prefs->get('trash_folder', 'none');
my $sent = $prefs->get('sent_folder', 'none');

my $altfolders = $prefs->get('alt_folders', '');
my @alt_folders = split /,/, $altfolders if($altfolders);

if(!$n) {
   my @allowed_per_page = $config->getList('allowed_per_page', 20, 35, 50);
   $n = $prefs->get('messages_per_page', $allowed_per_page[0]);
}

my $folderlist;
my $headers;
my $uidvalidity;
my $c;
my $msgcnt;
my $st = [gettimeofday];
my $st2;

if($sortby eq 'unknown') {
   $sortby = $user->getAttribute('lastsortby') || 'date';
   # Flip sorting around when changing folders
   $sortby = 'to' if($folder eq $sent && $sortby eq 'from');
   $sortby = 'from' if($folder ne $sent && $sortby eq 'to');
} else {
   $user->setAttribute($r, 'lastsortby', $sortby);
}

eval {
   $c = new AlphaMail::Middleware($user->getAttribute('imap'), $user->getUsername(), $user->getAttribute('password'), $config);
   $folderlist = AlphaMail::SessionUtil::getFolderList($r, $user, $config);
   ($folder, $start, $n, $sortby) = AlphaMail::SessionUtil::markLocation($r, $user, $folder, $start, $n, $sortby);
   $msgcnt = $c->getMessageCount($folder);
   $start = $msgcnt - $n if($start > $msgcnt);
   if($start < 1) {
         $start = $msgcnt - $n + 1;
   }
   $start = 1 if($start < 1);
   $headers = $c->getMessageHeaders($folder, $start, $n, $sortby);
   $msgcnt = $headers->[0]{count};
   $uidvalidity = $headers->[0]{uidvalidity};
   $c->close;
};
if($@) {
   $logger->error("ERROR GETTING INDEX: $@");
   $message = "Unable to read folder. Perhaps it is in use by another application. Please try again, or contact support.";
   $msgcnt = 0;
}
$st2 = [gettimeofday];
</%init>
<%once>
use Date::Calc qw(Decode_Month Day_of_Week Day_of_Week_Abbreviation Delta_Days);
use Data::Dumper;
use Encode;
use Time::HiRes qw( gettimeofday tv_interval );
use AlphaMail::HTMLHelper qw(build_url hyperlink);
</%once>




See more files for this project here

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  addressbook/
    edit.mhtml
    import.mhtml
    import_complete.html
    import_csv.html
    import_csv_save.html
    import_fname.html
    import_imho.html
    import_lname.html
    index.html
    lists.mhtml
    process_edit.html
    process_lists.html
    process_take.html
    take.html
  settings/
    altfolder_update.html
    altprefix_update.html
    edit_folders.html
    folders.mhtml
    general.mhtml
    index.html
    share.mhtml
    sharing_agree.html
    signatures.mhtml
    update_folderlist.html
    update_general.html
    update_signatures.html
  viewers/
    excel.html
    html.html
    targz.html
    text.html
    word.html
    zip.html
  address_mail.html
  addresslist.html
  autohandler
  check_spelling.html
  compose.html
  error.html
  first_login.html
  fix_spelling.html
  folderlist.mhtml
  footer.mhtml
  get_attachment.html
  header.mhtml
  help.html
  index.html
  logout.html
  menu.mhtml
  other_folders.html
  process_compose.html
  process_first_login.html
  process_messages.html
  process_read_message.html
  quota.html
  quota_graph.html
  raw.html
  read.html
  remove_attachment.html
  renew_session.html
  sanitized.html
  share_options.html
  share_upload.html
  show_stats.html
  verify_password.html
  view_attachment.html