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