Code Search for Developers
 
 
  

read.html from AlphaMail at Krugle


Show read.html syntax highlighted

% # vim: set syntax=mason:
<%args>
$folder => 'none'
$uid => -1
$uidv => -1
$sorted_offset => 1
$sortby => 'date'
$literal => 0
$printable => 0
$full_headers => 0
$n => 0
$msg => ''
$filter => ''
$search_string => ''
</%args>
<& /mail/header.mhtml, title => "Read: " . HTML::Entities::encode($header->{subject}), folder => $folder, message => $msg, hide_controls => $printable &>
      <table class="message_display">
% if(!$printable) {
         <tr>
           <th>
              <div class="controls">
              <div class="left">
%    if($user->getAttribute('credential_3') eq "pda") {
                    <% hyperlink("$base/mail/index.html", "< index") %>
                    &nbsp;
%    }
                 <form name="action_form" method="post" 
                       action="<% $base %>/mail/process_read_message.html">
                    <input type="submit" name="replyall" value="Reply All">
                    <input type="submit" name="reply" value="Reply">
                    <input type="submit" name="forward" value="Forward">
%    if($deleted) {
                    <input type="submit" name="undelete" value="Undelete">
%    } else {
                    <input type="submit" name="delete" value="Delete">
%    }
                    <select name="action" onChange="document.action_form.submit()">
                       <option selected value="none">More Actions ...</option>
%    if($marked) {
                       <option value="unmark">&nbsp;&nbsp;&nbsp;Unflag</option> 
%    } else {
                       <option value="mark">&nbsp;&nbsp;&nbsp;Flag</option> 
%    }
                       <option value="report">&nbsp;&nbsp;&nbsp;Report Spam</option>
                       <optgroup label="Move to:">
%    for $fldr (@alt_folders, @$folderlist) {
%       $displayname = $fldr;
%       eval { $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">
%    }

                    <input type="hidden" name="folder" value="<% $folder |h %>">
                    <input type="hidden" name="uid" value="<% $uid |h %>">
                    <input type="hidden" name="uidv" value="<% $uidvalidity |h %>">
                    <input type="hidden" name="sorted_offset" value="<% $sorted_offset |h %>">
                    <input type="hidden" name="n" value="<% $n |h %>">
                    <input type="hidden" name="sortby" value="<% $sortby |h %>">
                    <input type="hidden" name="fullheaders" value="<% $full_headers |h %>">
%    if($sorted_offset > 1 && $headers->[2]{uid} > 0) {
                    <input type="hidden" name="nextuid" value="<% $headers->[2]{uid} |h %>">
%    } elsif($sorted_offset == 1 && $headers->[1]{uid} > 0) {
                    <input type="hidden" name="nextuid" value="<% $headers->[1]{uid} |h %>">
%    }
                 </form>
                 <br>
                 <% hyperlink("$base/mail/index.html", "Return to index", {
                    folder => $folder, search_string => $search_string,
                    filter => $filter }) %>
              </div>
              <span class="right">
%    if($sorted_offset > 1) {
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[0]{uid},
                            sorted_offset => $sorted_offset-1, 
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>" 
%       $tip = $headers->[0]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g;
                          onmouseover="return escape('<% $tip %>');">
                          < Previous
                          </a>
                          <% $sorted_offset %> of <% $msgcnt %>
%       if($headers->[2]{uid} > 0) {
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[2]{uid},
                            sorted_offset => $sorted_offset+1, 
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>"
%          $tip = $headers->[2]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g;
                          onmouseover="return escape('<% $tip %>');">
                          Next >
                          </a>
%       }
%       if($filter) {
                          <br>Filter: <% $search_string |h %>
%       }
%    } elsif($headers->[1]{uid} > 0) {
                          1 of <% $msgcnt %>
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[1]{uid},
                            sorted_offset => $sorted_offset+1, 
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>"
%    $tip = $headers->[1]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g;
                          onmouseover="return escape('<% $tip %>');">
                          Next >
                          </a>
%       if($filter) {
                          <br>Filter: <% $search_string |h %>
%       }
%    }                 
              </span>
              </div>
           </th>
         </tr>
% } # end of not printable
         <tr>
            <td class="messageHeader">
               <div class="messageHeader">
% if(!$full_headers) {
               <b>Subject:</b> <% $header->{subject} |h %>
               <br><b>To:</b> <% $header->{to} |h %> <% hyperlink("$base/mail/addressbook/take.html", "Add to address book...", { folder => $folder, uid => $uid, uidv => $uidv, sorted_offset => $sorted_offset, sortby => $sortby, literal => $literal, printable => $printable, full_headers => $full_headers , n  => $n, addresslist => AlphaMail::MailTool::encode_utf8addresses($header->{to}) }) %>

%     if(defined($header->{cc}) && $header->{cc} ne "") {
               <br><b>Cc:</b> <% $header->{cc} |h %> <% hyperlink("$base/mail/addressbook/take.html", "Add to address book...", { folder => $folder, uid => $uid, uidv => $uidv, sorted_offset => $sorted_offset, sortby => $sortby, literal => $literal, printable => $printable, full_headers => $full_headers , n  => $n, addresslist => AlphaMail::MailTool::encode_utf8addresses($header->{cc}) }) %>
%     }
               <br><b>From:</b> <% $header->{from} |h %> <% hyperlink("$base/mail/addressbook/take.html", "Add to address book...", { folder => $folder, uid => $uid, uidv => $uidv, sorted_offset => $sorted_offset, sortby => $sortby, literal => $literal, printable => $printable, full_headers => $full_headers , n  => $n, addresslist => AlphaMail::MailTool::encode_utf8addresses($header->{from}) }) %>
               <br><b>Date:</b> <% $header->{date} |h %>
               <br> <% hyperlink("$base/mail/read.html", 
                          "full header",
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $uid,
                            printable => $printable, literal => $literal,
                            sorted_offset => $sorted_offset, sortby => $sortby,
                            full_headers => 1 }) %>
% } else {
               <pre>
<% $header->{full_header} |h %>
               </pre>
               <% hyperlink("$base/mail/read.html", 
                          "minimal header",
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $uid, 
                            printable => $printable, literal => $literal,
                            sorted_offset => $sorted_offset, sortby => $sortby
                          }) %>
% }
                 | <a href="<% build_url("$base/mail/read.html", 
                    { sortby => $sortby, sorted_offset => $sorted_offset,
                      folder => $folder, uidv => $uidvalidity, uid => $uid, 
                      n => $n, literal => $literal, printable => !$printable,
                      full_headers => $full_headers  }) |h %>"><% $printable ? "normal":"printable" %> view</a>
                 | <a onmouseover="return escape('In formatted view, text is wrapped according to browser window and extra whitespace is removed. Literal view preserves the original spacing and line breaks.')" href="<% build_url("$base/mail/read.html", 
                    { sortby => $sortby, sorted_offset => $sorted_offset,
                      folder => $folder, uidv => $uidvalidity, uid => $uid, 
                      n => $n, literal => !$literal, printable => $printable,
                      full_headers => $full_headers  }) |h %>"><% $literal ? "formatted":"literal" %></a>
% if($prefs->get("enable_raw", 0)) {
                 | <a href="<% build_url("$base/mail/raw.html", 
                    { sortby => $sortby, sorted_offset => $sorted_offset,
                      folder => $folder, uidv => $uidvalidity, uid => $uid, 
                      n => $n }) |h %>">raw MIME message</a>
% }
               </div>
            </td>
         </tr><tr>
            <td>
	      <div class="messageBody">
<% main_body($inline, $attachments, $literal, $prefs, $base) %>
	      </div>	
            </td>
         </tr>
         <tr>
            <td>
% if(@$attachments) {
               <div class="attachments">
%    for my $a (@$attachments) {
%       $filename = mimewords_to_utf8($a->{recommended_filename});
%       $filename =~ s!^.*/([^/]*)$!$1!;
%       my $fn = $a->{path};
%       $fn =~ s/^\Q$dir\E//;
                  Download: <% hyperlink("$base/mail/get_attachment.html", 
                        "$filename", 
                        { type => $a->{type}, subtype => $a->{subtype}, 
                          suggested_name => $a->{recommended_filename}, 
                          file => $fn }, "file") %>
                  <br>
                  <span class="type"><% $a->{type} |h %>/<% $a->{subtype} |h %></span> 
                  <span class="size">(<% $a->{size} %> bytes)</span>
                  <br>
                  <% viewer_link($a, $prefs, $config, $user) %>
                  <br>
                  <br>
%    }
               </div>
% }
            </td>
         </tr>
         <tr>
           <th>
% if(!$printable) {
              <div class="controls">
              <div class="left">
%    if($user->getAttribute('credential_3') eq "pda") {
                    <% hyperlink("$base/mail/index.html", "< index") %>
                    &nbsp;
%    }
                 <form name="action_form2" method="post" 
                       action="<% $base %>/mail/process_read_message.html">
                    <input type="submit" name="replyall" value="Reply All">
                    <input type="submit" name="forward" value="Forward">
                    <input type="submit" name="reply" value="Reply">
%    if($deleted) {
                    <input type="submit" name="undelete" value="Undelete">
%    } else {
                    <input type="submit" name="delete" value="Delete">
%    }
                    <select name="action" onChange="document.action_form2.submit()">
                       <option selected value="none">More Actions ...</option>
%    if($marked) {
                       <option value="unmark">&nbsp;&nbsp;&nbsp;Unflag</option> 
%    } else {
                       <option value="mark">&nbsp;&nbsp;&nbsp;Flag</option> 
%    }
                       <option value="report">&nbsp;&nbsp;&nbsp;Report Spam</option>
                       <optgroup label="Move to:">
%    for $fldr (@alt_folders, @$folderlist) {
%       $displayname = $fldr;
%       eval { $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">
%    }
                    <input type="hidden" name="folder" value="<% $folder |h %>">
                    <input type="hidden" name="uid" value="<% $uid |h %>">
                    <input type="hidden" name="uidv" value="<% $uidvalidity |h %>">
                    <input type="hidden" name="sorted_offset" value="<% $sorted_offset |h %>">
                    <input type="hidden" name="n" value="<% $n |h %>">
                    <input type="hidden" name="sortby" value="<% $sortby |h %>">
                    <input type="hidden" name="fullheaders" value="<% $full_headers |h %>">
%    if($sorted_offset > 1 && $headers->[2]{uid} > 0) {
                    <input type="hidden" name="nextuid" value="<% $headers->[2]{uid} |h %>">
%    } elsif($sorted_offset == 1 && $headers->[1]{uid} > 0) {
                    <input type="hidden" name="nextuid" value="<% $headers->[1]{uid} |h %>">
%    }
                 </form>
              </div>
              <span class="right">
%    if($sorted_offset > 1) {
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[0]{uid},
                            sorted_offset => $sorted_offset-1,
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>" 
%       $tip = $headers->[0]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g; # "
                          onmouseover="return escape('<% $tip %>');">
                          &lt; Previous
                          </a>
                          <% $sorted_offset %> of <% $msgcnt %>
%       if($headers->[2]{uid} > 0) {
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[2]{uid},
                            sorted_offset => $sorted_offset+1, 
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>"
%          $tip = $headers->[2]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g; # "
                          onmouseover="return escape('<% $tip %>');">
                          Next >
                          </a>
%       }
%       if($filter) {
                          <br>Filter: <% $search_string |h %>
%       }
%    } elsif($headers->[1]{uid} > 0) {
                          1 of <% $msgcnt %>
                 <a href="<% build_url("$base/mail/read.html", 
                          { folder => $folder, n => $n,
                            uidv => $uidvalidity, uid => $headers->[1]{uid},
                            sorted_offset => $sorted_offset+1, 
                            sortby => $sortby, filter => $filter,
                            search_string => $search_string
                          }) |h %>"
%       $tip = $headers->[1]{subject}; $tip =~ s/"//g; $tip =~ s/'/\\'/g; # "
                          onmouseover="return escape('<% $tip %>');">
                          Next &gt;
                          </a>
%       if($filter) {
                          <br>Filter: <% $search_string |h %>
%       }
%    }                 
              </span>
              </div>
           </th>
         </tr>
% }
      </table>
      <!--
      Startup time: <% sprintf("%4.2f", tv_interval( $page_st, $middleware_st)) %>
      Header read time: <% sprintf("%4.2f", tv_interval( $middleware_st, $parse_st)) %>
      Parsing time: <% sprintf("%4.2f", tv_interval( $parse_st, $render_st)) %>
      Rendering time: <% sprintf("%4.2f", tv_interval( $render_st, [gettimeofday])) %>
      Total time: <% sprintf("%4.2f", tv_interval( $page_st, [ gettimeofday ])) %>
      -->

<& /mail/footer.mhtml, hide_controls => $printable &>
<%init>
$m->redirect(build_url("$base/mail/index.html", { message => "Unable to process request. Please try again."})) if($folder eq 'none' || $uid == -1 || $uidv == -1);
my $page_st = [gettimeofday];
my $middleware_st;
my $parse_st;
my $render_st;
my $user = Apache2::SiteControl->getCurrentUser($r);
my $prefs = new AlphaMail::Preferences($user->getUsername(), 
                                   $user->getAttribute('mx'), $config);
my $c;
my $tip;
my $fldr;
my $displayname;
my $error = 0;
my $message;
my $entity;
my $headers;
my $msgcnt;
my $uidvalidity;
my $filename;
my $parser = undef;
my $reply_address;
my $altfolders = $prefs->get('alt_folders', '');
my @alt_folders = split /,/, $altfolders if($altfolders);
my $folderlist = AlphaMail::SessionUtil::getFolderList($r, $user, $config);
my $tr = Unicode::IMAPUtf7->new();
my ($prefix, $separator) = $config->getFolderPrefix($user);
$prefix .= $separator;
# The cleanup scripts run every few minutes, and clean up things that are older
# than cachetime minutes. If we cache a parse, and the files get removed, then
# it will not work...so shorten the cache time slightly.
my $cachetime = ($config->get("message_tmpdir_cachetime", 10)-1) . ' min';
my $key;
my $forwardsize;

if($prefs->get('replyto') =~ m/\@/) {
   $reply_address = $prefs->get('replyto');
} else {
   $reply_address = $user->getUsername() . '@' . $user->getAttribute('mx');
}

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

$user->setAttribute($r, 'reading_folder', $folder);
$user->setAttribute($r, 'reading_uid', $uid);
$user->setAttribute($r, 'reading_uidv', $uidv);
$user->setAttribute($r, 'reading_offset', $sorted_offset);
$user->setAttribute($r, 'reading_sortby', $sortby);

my $dir;

my $attachments = [];
my $inline = [];
my $header = {};
my ($deleted, $replied, $forwarded, $marked);

eval {
   $dir = $config->getScratchDir($user);
   if(!-d $dir) {
      mkdir $dir or die "Could not create temporary storage for message: $dir.";
   }

   $middleware_st = [gettimeofday];
   $c = new AlphaMail::Middleware($user->getAttribute('imap'),
                                  $user->getUsername(),
                                  $user->getAttribute('password'),
                                  $config);
   $message = $c->getMessage($folder, $uid, $uidv, $config->getScratchDir($user));

   $forwardsize = (stat($message))[7];

   if($sorted_offset > 1) {
      $headers = $c->getMessageHeaders($folder, $sorted_offset-1, 3, $sortby, $filter);
      $deleted = $headers->[1]{deleted};
      $replied = $headers->[1]{answered};
      $forwarded = $headers->[1]{forwarded};
      $marked = $headers->[1]{flagged};
   } else {
      $headers = $c->getMessageHeaders($folder, $sorted_offset, 2, $sortby, $filter);
      $deleted = $headers->[0]{deleted};
      $replied = $headers->[0]{answered};
      $forwarded = $headers->[0]{forwarded};
      $marked = $headers->[0]{flagged};
   }
   $msgcnt = $headers->[0]{count};
   $uidvalidity = $headers->[0]{uidvalidity};
   if($uidv != $uidvalidity) {
      die("UID validity changed. Returning user to index");
   }

   $parse_st = [gettimeofday];
   # Cache the results of a message parse, in case the page is reloaded (i.e.
   # after an attachment view, etc.) so we don't reparse the thing.
   $key = $user->getUsername() . "_" . $user->getAttribute('mx') . "_${folder}_${uid}_${uidv}_${sorted_offset}_${sortby}_${n}";
   my $data_cache = $m->cache->get($key);
   if(!defined($data_cache)) {
      $parser = new MIME::Parser;
      $parser->output_dir($dir);
      $parser->decode_headers(0);
      $parser->ignore_errors(0);
      $entity = $parser->parse_open("<$message");
      parse_entity($entity, "", "", $inline, $attachments, $header);
      $data_cache = {
         inline => $inline,
         attachments => $attachments,
         header => $header
         };
      $m->cache->set($key, $data_cache, $cachetime);
   } else {
      $inline = $data_cache->{inline};
      $attachments = $data_cache->{attachments};
      $header = $data_cache->{header};
   }
   $c->close;
};
if($@) {
   $logger->error("Read.html failed: $@");
   $error = 1;
}

$m->redirect(build_url("$base/mail/index.html", { message => "Folder changed. Please try again."})) if $error;

chomp $header->{date};
chomp $header->{subject};
chomp $header->{from};

$render_st = [gettimeofday];
</%init>
<%once>
use Encode;
use AlphaMail::HTMLHelper qw(url_encode viewer_link hyperlink build_url linkify);
use AlphaMail::MailTool qw(mimewords_to_utf8);
use AlphaMail::Message qw(main_body parse_entity);
use Time::HiRes qw( gettimeofday tv_interval );
our $logger = Log::Log4perl->get_logger('alphamail');
our $base = $config->get('base_uri');
</%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
  admin/
    autohandler
    index.html
    show_stats.mhtml
    test.mhtml
  docs/
    faq/
      colors.gif
      dates1.gif
      drafts.gif
      filter.gif
      general.html
      index.html
      notrash1.gif
      notrash2.gif
      notrash3.gif
      other.html
      sort.gif
      timeout.gif
    new_features.html
  settings/
    add_filter.html
    altfolder_update.html
    altprefix_update.html
    edit_folders.html
    filters.mhtml
    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
  feedback.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
  process_search.html
  quota.html
  quota_graph.html
  raw.html
  read.html
  remove_attachment.html
  renew_session.html
  resume_compose.html
  sanitized.html
  share_options.html
  share_upload.html
  verify_password.html
  view_attachment.html