Show first_login.html syntax highlighted
% # vim: set syntax=mason:
<& /mail/header.mhtml, title => "Initial Preferences" &>
% if($js) {
<script type="text/javascript" language="JavaScript">
<!--
function check_all()
{
document.folders.subscribed.checked=1;
for(var i=0; i<document.folders.subscribed.length; i++)
document.folders.subscribed[i].checked=1;
}
function uncheck_all()
{
document.folders.subscribed.checked=0;
for(var i=0; i<document.folders.subscribed.length; i++)
document.folders.subscribed[i].checked=0;
}
function invert_checks()
{
document.folders.subscribed.checked=!document.folders.subscribed.checked;
for(var i=0; i<document.folders.subscribed.length; i++)
document.folders.subscribed[i].checked=!document.folders.subscribed[i].checked;
}
// -->
</script>
% }
<div class="heading">Initial Preferences</div>
<p>You do not have any preferences set yet. Please choose the following and
select "Save":</p>
<form name="folders" class="foldereditor" method="post"
action="/mail/process_first_login.html">
<div class="subheading">Addressing</div>
<div class="section">
<p>Your full name:
<input type="text" size="40" value="<% $p->get('fullname') |h %>"
name="fullname">
</p>
</div>
<div class="subheading">Utility Folders</div>
<div class="section">
<p>The following is a list of special folders. Changing the
selections will modify how the mail system behaves.
<p>Sent mail folder:
<select name="sent_folder">
<option value="none">None (don't save sent messages)</option>
% for(my $i=0; $i <= $#alt_folders; $i++) {
% my $displayname = decode('utf8', $tr->decode($alt_folders[$i]));
<option <% $alt_folders[$i] eq $sent ? "SELECTED":"" %> value="<% $alt_folders[$i] |h %>"><% $displayname |h %></option>
% }
% for(my $i=0; $i <= $#$list; $i++) {
% my $displayname = decode('utf8', $tr->decode($list->[$i]));
<option <% ("$base/" . $list->[$i]) eq $sent ? "SELECTED":"" %> value="<% "$base/" . $list->[$i] |h %>"><% $displayname |h %></option>
% }
</select>
<p>Trash Folder:
<select name="trash_folder">
<option value="none">None (delete messages on purge)</option>
% for(my $i=0; $i <= $#alt_folders; $i++) {
% my $displayname = decode('utf8', $tr->decode($alt_folders[$i]));
<option <% $alt_folders[$i] eq $trash ? "SELECTED":"" %> value="<% $alt_folders[$i] |h %>"><% $displayname |h %></option>
% }
% for(my $i=0; $i <= $#$list; $i++) {
% my $displayname = decode('utf8', $tr->decode($list->[$i]));
<option <% ("$base/" . $list->[$i]) eq $trash ? "SELECTED":"" %> value="<% "$base/" . $list->[$i] |h %>"><% $displayname |h %></option>
% }
</select>
</div>
<div class="subheading">Subscribed Folders</div>
<div class="section">
<p>The following is a list of all available mail folders in your
account. The checkbox indicates whether or not that folder will
appear in your primary folder list along the left edge of the
interface.</p>
% if($js) {
<div class="quickcheck">
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>
</div>
% }
<table class="foldereditor">
<tr>
% my $ccnt = 0;
% for(my $i=0; $i <= $#$list; $i++) {
% my $displayname = decode('utf8', $tr->decode($list->[$i]));
<td>
<input <% (grep(/^\Q$list->[$i]\E$/, @$slist) ? "CHECKED":"") %> type="checkbox" name="subscribed" value="<% $list->[$i] |h %>">
<% $displayname |h %>
</td>
% if($ccnt % 3 == 2) {
</tr><tr>
% }
% $ccnt++;
% }
</tr>
</table>
<div class="control">
<input type="submit" name="save" value="Save Changes">
<input type="submit" name="cancel" value="Cancel">
</div>
</div>
</form>
<& /mail/footer.mhtml &>
<%init>
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. r, m:" . Dumper($r, $m));
$m->redirect("/");
}
my $js;
my $tr;
my $base;
my $list;
my $slist;
my $c;
my $p;
my ($trash, $sent, $drafts, $altfolders);
my @alt_folders = ();
eval {
$js = defined($user->getAttribute('credential_4')) ? $user->getAttribute('credential_4'):0;
$tr = Unicode::IMAPUtf7->new();
my $prefs = new AlphaMail::Preferences($user->getUsername(),
$user->getAttribute('imap'), $config);
$base = $prefs->get('folder_prefix', $config->get('folder_prefix', 'mail'));
$base =~ s/\/$//;
$c = new AlphaMail::Middleware($user->getAttribute('imap'),
$user->getUsername(),
$user->getAttribute('password'), $config);
$p = new AlphaMail::Preferences($user->getUsername(),
$user->getAttribute('imap'), $config);
# Set reasonable defaults for stuff:
$p->set('signature_on_top', $config->get('default_signature_on_top', 0));
$p->set('icon_preview', $config->get('default_icon_preview', 1));
$p->set('linkify', $config->get('default_linkify', 0));
$p->set('messages_per_page', $config->get('default_messages_per_page', 10));
$p->set('quicknav', $config->get('default_quicknav', 1));
$trash = $p->get('trash_folder', $config->get("default_trash", 'none'));
$sent = $p->get('sent_folder', $config->get("default_sent", 'none'));
$drafts = $p->get('drafts_folder', $config->get("default_drafts", 'none'));
$altfolders = $p->get('alt_folders', '');
@alt_folders = split /,/, $altfolders if($altfolders);
# make sure the "defaults" at least exist.
if($trash ne 'none') {
eval {
$c->makeFolder($trash);
};
}
if($sent ne 'none') {
eval {
$c->makeFolder($sent);
};
}
$list = $c->getFolderList($base);
$slist = $c->getSubscribedFolderList($base);
$logger->debug("Got folderlist: @$list");
$logger->debug("Got subscribed folderlist: @$slist");
# Remove entries that are subdirectories
@$slist = grep /[^\/]$/, @$slist;
@$list = grep /[^\/]$/, @$list;
# Remove the extra crap at BOL
map { s/^\Q$base\E\/?//; } @$slist;
map { s/^\Q$base\E\/?//; } @$list;
# Remove dot file for old imho prefs
@$slist = grep !/^\.imhoprefs$/, @$slist;
@$list = grep !/^\.imhoprefs$/, @$list;
# Sort them:
@$slist = sort { lc($a) cmp lc($b) } @$slist;
@$list = sort { lc($a) cmp lc($b) } @$list;
@alt_folders = sort { lc($a) cmp lc($b) } @alt_folders;
$c->close();
};
if($@) {
my $error_msg = $@;
my $log_entry = "Problem processing first login ";
if($user && ref($user) eq 'SiteControl::User') {
$log_entry .= "for user " . $user->getUsername() . ".\n";
}
$log_entry .= "Error was: $error_msg";
$logger->error($log_entry) if($logger);
$m->redirect('/'); # Retry login
}
</%init>
<%once>
our $logger = Log::Log4perl->get_logger('alphamail');
use Data::Dumper;
use Encode;
</%once>
See more files for this project here