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 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>
<div class="top_controls">
<%doc>
% if($prefs->get('quicknav', 0)) {
   <div class="message_selector">
      Index: <% build_message_selector($folder, $msgcnt, $start, $n, $sortby, $user->getAttribute('javascript')) %>
   </div>
% } 
</%doc>
   <form name="message_form" action="/mail/process_messages.html" method="post">
      <div class="index_controls">
% if($trash eq $folder) {
         <input type="submit" name="empty" value="Empty Trash">
% } else {
         <input type="submit" name="delete" value="Delete">
% }
         <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="expunge">&nbsp;&nbsp;&nbsp;Purge Deleted</option>
               <option value="kill">&nbsp;&nbsp;&nbsp;Delete and Purge</option>
% }
               <option value="report">&nbsp;&nbsp;&nbsp;Report Spam</option>
            </optgroup>
            <option disabled value="none">------</option> 
            <option disabled>Move to:</option>
% for my $fldr (@alt_folders, @$folderlist) {
%    my $displayname = $tr->decode($fldr);
%    $displayname =~ s/^\Q$prefix\E\/?//;
            <option value="to:<% $fldr |h %>">&nbsp;&nbsp;&nbsp;<% decode('utf8', $displayname) |h %></option>
% }
         </select>
% if(!$user->getAttribute('javascript')) {
         <input type="submit" name="nothing" value="Go">
% }
         <% hyperlink("/mail/index.html", "Refresh", \%ARGS) %><br>
      </div>
% if($user->getAttribute('dumb_browser')) { # 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('dumb_browser')) { # STUPID BROWSER *****************
      <table class="messagelist">
         <tr> 
            <td>
            </td>
            <td class="messageFrom_retarded">
                  <% hyperlink("/mail/index.html", "Sender", { start => $start, n => $n, sortby => 'from', uidv => $uidvalidity }, $sortby eq 'from' ? "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+):/;
         my $from = $entry->{from};
         if($from =~ m/^([^<]*)\s*<[^>]*>$/) {
            $from = $1;
         }
</%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} %>">
                  <% ($entry->{answered} ? '<span class="flag">R</span>':'') %>
                  <% ($entry->{attachment} ? '<span class="flag">A</span>':'') %>
                  <% ($entry->{flagged} ? '<span class="flag">F</span>':'') %>
                  <% ($entry->{forwarded} ? '<span class="flag">W</span>':'') %>
            </td>
            <td class="messageFrom_retarded">
                  <% ($entry->{seen} ? '<span class="seen">':
                                       '<span class="unseen">') %>
                     <% hyperlink("/mail/read.html", $from, 
                           { sorted_offset => $offset, n => $n, 
                             uidv => $uidvalidity, uid => $entry->{uid},
                             sortby => $sortby , folder => $folder }) %>
                  </span>
            </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 }) %>"
                     class="<% $entry->{deleted} ? "deleted":"" %>">
                     <% ($entry->{seen} ? '<span class="seen">': '<span class="unseen">') %><% (($sortby eq 'thread' && $entry->{threadlevel}) ? ("+" . "-" x $entry->{threadlevel}):"") . $entry->{subject} |h %> - <span class="snippet"><% $entry->{snippet} |h %></span></span>
                  </a>
            </td>
            <td class="messageDate_retarded">
                  <% hyperlink("/mail/read.html", $month . " " . $day . 
                        ", " . $year . " " . $hour . ":" . $minute, 
                        { sorted_offset => $offset, n => $n, 
                          uidv => $uidvalidity, uid => $entry->{uid},
                          sortby => $sortby , folder => $folder }) %>
            </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", "Sender", { start => $start, n => $n, sortby => 'from', uidv => $uidvalidity }, $sortby eq 'from' ? "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="nowrap">
                  <% 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+):/;
         my $from = $entry->{from};
         if($from =~ m/^([^<]*)\s*<[^>]*>$/) {
            $from = $1;
         }
</%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">
                  <% ($entry->{answered} ? '<span class="flag">R</span>':'') %>
                  <% ($entry->{attachment} ? '<span class="flag">A</span>':'') %>
                  <% ($entry->{flagged} ? '<span class="flag">F</span>':'') %>
                  <% ($entry->{forwarded} ? '<span class="flag">W</span>':'') %>
               </span>
            </td>
            <td class="messageFrom">
               <div class="nowrap">
                  <% ($entry->{seen} ? '<span class="seen">':
                                       '<span class="unseen">') %>
                     <% hyperlink("/mail/read.html", $from, 
                           { sorted_offset => $offset, n => $n, 
                             uidv => $uidvalidity, uid => $entry->{uid},
                             sortby => $sortby , folder => $folder }) %>
                  </span>
               </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 }) %>"
                     class="<% $entry->{deleted} ? "deleted":"" %>">
                     <% ($entry->{seen} ? '<span class="seen">': '<span class="unseen">') %><% (($sortby eq 'thread' && $entry->{threadlevel}) ? ("+" . "-" x $entry->{threadlevel}):"") . $entry->{subject} |h %> - <span class="snippet"><% $entry->{snippet} |h %></span></span>
                  </a>
               </div>
            </td>
            <td class="messageDate">
               <div class="nowrap">
                  <% hyperlink("/mail/read.html", $month . " " . $day . 
                        ", " . $year . " " . $hour . ":" . $minute, 
                        { sorted_offset => $offset, n => $n, 
                          uidv => $uidvalidity, uid => $entry->{uid},
                          sortby => $sortby , folder => $folder }) %>
               </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 *********************************************
   </form>
   <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>
   <!-- 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 $user = Apache::SiteControl->getCurrentUser($r);
AlphaMail::SessionUtil::sessionSetup($r, $user, $config);

my $logger = Log::Log4perl->get_logger('alphamail');
my $tr = Unicode::IMAPUtf7->new();
my $js = 0;
my $prefs = new AlphaMail::Preferences($user->getUsername(), 
                                   $user->getAttribute('imap'), $config);
if(!$prefs->get('trash_folder')) {
   $m->redirect('/mail/first_login.html');
}

if(!defined($user->getAttribute('javascript'))) {
   # FIXME: Add in browser detection to avoid browsers that are flaky
   $user->setAttribute($r, 'javascript', 0);
   if(defined($user->getAttribute('credential_4'))) {
      if($user->getAttribute('credential_5') =~ m/Safari/) {
         $user->setAttribute($r, 'dumb_browser', 0);
      } elsif($user->getAttribute('credential_5') =~ m/Gecko\/(\d+)\s/) {
         if($1 > 20040500) {
            $user->setAttribute($r, 'dumb_browser', 0);
         } else {
            $user->setAttribute($r, 'dumb_browser', 1);
         }
      }
      if($user->getAttribute('credential_5') =~ m/MSIE\s+(\d+)\.(\d+)/) {
         if($1 < 6) {
            $user->setAttribute($r, 'dumb_browser', 1);
         }
      }
      $user->setAttribute($r, 'javascript', $user->getAttribute('credential_4'));
      $logger->info($user->getUsername() . " using " . $user->getAttribute('credential_5') . " version " . $user->getAttribute('credential_6'));
   }
}
$js = $user->getAttribute('javascript');

my $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 $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';
} 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) {
      # if($prefs->get('quicknav', 0)) {
         # $start = $msgcnt - ($msgcnt % $n == 0 ? $n:($msgcnt % $n)) + 1;
      # } else {
         $start = $msgcnt - $n + 1;
      # }
   # } elsif($start % $n != 1 && $prefs->get('quicknav', 0)) {
      # $start = $start - ($start % $n == 0 ? $n:($start % $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($@) {
   $message = "Error: $@";
}
$st2 = [gettimeofday];
</%init>
<%once>
use Data::Dumper;
use Encode;
use Time::HiRes qw( gettimeofday tv_interval );
use AlphaMail::HTMLHelper qw(build_message_selector 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_alias.html
    import_complete.html
    import_csv.html
    import_csv_save.html
    import_fname.html
    import_imho.html
    import_lname.html
    index.html
    process_edit.html
    take.html
  settings/
    altfolder_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
    word.html
    zip.html
  address_mail.html
  addresslist.mhtml
  autohandler
  check_spelling.html
  compose.html
  filevault.html
  first_login.html
  fix_spelling.html
  folderlist.mhtml
  footer.mhtml
  get_attachment.html
  header.mhtml
  index.html
  logout.html
  menu.mhtml
  other_folders.html
  print.html
  process_compose.html
  process_first_login.html
  process_messages.html
  read.html
  remove_attachment.html
  renew_session.html
  share_options.html
  share_upload.html
  verify_password.html
  view_attachment.html