Code Search for Developers
 
 
  

edit_folders.html from AlphaMail at Krugle


Show edit_folders.html syntax highlighted

% # vim:set syntax=mason:
<%args>
$foldername => ''
$create => 0
$delete => 0
</%args>
<%init>
my $user = Apache::SiteControl->getCurrentUser($r);
my $tr = Unicode::IMAPUtf7->new();
my $base = $config->get('folder_prefix', 'mail');
my $c;
my $p = new AlphaMail::Preferences($user->getUsername(), 
                             $user->getAttribute('imap'), $config);
my $message = "";
my $trash = $p->get('trash_folder', $config->get("default_trash", 'none'));
my $sent = $p->get('sent_folder', $config->get("default_sent", 'none'));
my $drafts = $p->get('drafts_folder', $config->get("default_drafts", 'none'));

$base =~ s/\/$//;

eval {
   if(!$foldername) {
      $logger->error("User failed to provide a folder name");
      $message = "You must provide a folder name.";
   } elsif($foldername =~ m/\.\.\//) {
      $message = "Folder names cannot contain ../";
   } else {
      $c = new AlphaMail::Middleware($user->getAttribute('imap'), 
                                     $user->getUsername(), 
                                     $user->getAttribute('password'), $config);
      $logger->debug("Creating a new folder");
      if($create) {
         eval {
            my $f = decode('utf8', $foldername);
            $f = $tr->encode($f);
            $logger->debug("Creating folder with utf7 name: $f");
            $c->makeFolder("$base/" . $f);
            $message = "Folder Created.";
            $user->setAttribute($r, 'subfolderlist', '');
            $user->setAttribute($r, 'folderlist', '');
         };
         if($@) {
            $message = "Unable to create $foldername.";
            $logger->error("Unable to create $foldername: $@");
         }
      } elsif($delete) {
         # First see if the folder is in use for something
         if("$base/$foldername" eq $trash || "$base/$foldername" eq $sent || 
            "$base/$foldername" eq $drafts) 
         {
            $message = "That folder is in use (for sent mail, trash, etc.). Please select another before removing it.";
         } else {
            eval {
               $logger->debug("Deleting folder with utf7 name: $foldername");
               # Make sure it isn't still in the subscribed list.
               $logger->debug("Making sure no longer subscribed");
               my $sfl = $c->getSubscribedFolderList($base);
               my @nsfl = grep(!/^d/, @$sfl);
               $logger->debug("Old list: @$sfl");
               map { s/^\Q$base\E\/?// } @nsfl;
               @nsfl = grep(!/^\Q$foldername\E$/, @nsfl);
               $logger->debug("New list: @nsfl");
               $c->setSubscribedFolderList($base, @nsfl);
               $c->removeFolder("$base/" . $foldername);
               $message = "Folder Removed.";
               $user->setAttribute($r, 'subfolderlist', '');
               $user->setAttribute($r, 'folderlist', '');
            };
            if($@) {
               $message = "Unable to delete $foldername.";
               $logger->error("Unable to delete $foldername: $@");
            }
         }
      } else {
         $message = "Invalid request";
      }
      $c->close();
   }
};
if($@) {
   $logger->error("$@");
   $message = "There was an error processing your request.";
   $logger->error("Unable to process $foldername: $@");
}

$m->redirect(build_url('/mail/settings/index.html', { selected => 'Folders',
   message => $message }));
</%init>
<%once>
use Encode;
use AlphaMail::HTMLHelper qw(build_url);
our $logger = Log::Log4perl->get_logger('alphamail');
</%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

  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