[LON-CAPA-cvs] cvs: rat / lonsequence.pm loncom/interface loncommunicate.pm lonmsg.pm
www
lon-capa-cvs@mail.lon-capa.org
Fri, 10 Sep 2004 06:38:24 -0000
This is a MIME encoded message
--www1094798304
Content-Type: text/plain
www Fri Sep 10 02:38:24 2004 EDT
Modified files:
/loncom/interface loncommunicate.pm lonmsg.pm
/rat lonsequence.pm
Log:
Quickly saving my work on folders in COM, Trash.
Also fixed bodytag "emfo" - BTW, bodytag does its own &mt-call.
--www1094798304
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20040910023824.txt"
Index: loncom/interface/loncommunicate.pm
diff -u loncom/interface/loncommunicate.pm:1.22 loncom/interface/loncommunicate.pm:1.23
--- loncom/interface/loncommunicate.pm:1.22 Mon May 17 15:00:46 2004
+++ loncom/interface/loncommunicate.pm Fri Sep 10 02:38:24 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network
# Communicate
#
-# $Id: loncommunicate.pm,v 1.22 2004/05/17 19:00:46 raeburn Exp $
+# $Id: loncommunicate.pm,v 1.23 2004/09/10 06:38:24 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -38,7 +38,7 @@
sub menu {
my $r=shift;
my %lt=&Apache::lonlocal::texthash(
-'vam' => 'View All Messages',
+'mnf' => 'Make New Folder',
'vcm' => 'View Critical Messages',
'smu' => 'Send Message to User(s)',
'bmc' => 'Broadcast Message to Course',
@@ -59,16 +59,16 @@
'Course_Broadcast_Message') {
$help{$_}=&Apache::loncommon::help_open_topic($_);
}
+ my $folderlist=&Apache::lonmsg::folderlist();
# ------------------------------------------------------------------------ Menu
$r->print(<<END);
+$folderlist
+<form method="post" action="/adm/email">
+<input type="submit" value="$lt{'mnf'}" />
+<input type="text" size="15" name="newfolder" value="" />
+</form>
<table cellspacing="10" cellpadding="2">
<tr><td bgcolor="#FFFFAA">
- <b><a href="/adm/email/">$lt{'vam'}</a></b>
-</td></tr>
-<tr><td bgcolor="#FFFFAA">
- <b><a href="/adm/email?critical=display">$lt{'vcm'}</a></b>
-</td></tr>
-<tr><td bgcolor="#FFFFAA">
<b><a href="/adm/email?compose=individual">$lt{'smu'}</a></b>
</td></tr>
END
Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.105 loncom/interface/lonmsg.pm:1.106
--- loncom/interface/lonmsg.pm:1.105 Thu Sep 9 04:00:12 2004
+++ loncom/interface/lonmsg.pm Fri Sep 10 02:38:24 2004
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.105 2004/09/09 08:00:12 albertel Exp $
+# $Id: lonmsg.pm,v 1.106 2004/09/10 06:38:24 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -201,10 +201,12 @@
# ======================================================= Get info out of msgid
sub unpackmsgid {
- my $msgid=&Apache::lonnet::unescape(shift);
+ my ($msgid,$folder)=@_;
+ $msgid=&Apache::lonnet::unescape($msgid);
+ my $suffix=&foldersuffix($folder);
my ($sendtime,$shortsubj,$fromname,$fromdomain)=split(/\:/,
&Apache::lonnet::unescape($msgid));
- my %status=&Apache::lonnet::get('email_status',[$msgid]);
+ my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]);
if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }
unless ($status{$msgid}) { $status{$msgid}='new'; }
return ($sendtime,$shortsubj,$fromname,$fromdomain,$status{$msgid});
@@ -498,22 +500,71 @@
}
+# ============================================================ List all folders
+
+sub folderlist {
+ my $folder=shift;
+ my @allfolders=&Apache::lonnet::getkeys('email_folders');
+ if ($allfolders[0]=~/^error:/) { @allfolders=(); }
+ return '<form method="post" action="/adm/email">'.
+ '<input type="submit" value="'.&mt('View Folder').'" />'.
+ &Apache::loncommon::select_form($folder,'folder',
+ ('' => &mt('INBOX'),'trash' => &mt('TRASH'),
+ 'sent' => &mt('Sent Messages'),
+ map { $_ => $_ } @allfolders)).
+ '<a href="/adm/email?critical=display">'.
+ &mt('View Critical Messages').'</a>'.
+ '</form>';
+}
+# =============================================================== Folder suffix
+
+sub foldersuffix {
+ my $folder=shift;
+ unless ($folder) { return ''; }
+ return '_'.&Apache::lonnet::escape($folder);
+}
+
# =============================================================== Status Change
sub statuschange {
- my ($msgid,$newstatus)=@_;
- my %status=&Apache::lonnet::get('email_status',[$msgid]);
+ my ($msgid,$newstatus,$folder)=@_;
+ my $suffix=&foldersuffix($folder);
+ my %status=&Apache::lonnet::get('email_status'.$suffix,[$msgid]);
if ($status{$msgid}=~/^error\:/) { $status{$msgid}=''; }
unless ($status{$msgid}) { $status{$msgid}='new'; }
unless (($status{$msgid} eq 'replied') ||
($status{$msgid} eq 'forwarded')) {
- &Apache::lonnet::put('email_status',{$msgid => $newstatus});
+ &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
}
if (($newstatus eq 'deleted') || ($newstatus eq 'new')) {
- &Apache::lonnet::put('email_status',{$msgid => $newstatus});
+ &Apache::lonnet::put('email_status'.$suffix,{$msgid => $newstatus});
}
}
+# ============================================================= Make new folder
+
+sub makefolder {
+ my ($newfolder)=@_;
+ &Apache::lonnet::put('email_folders',{$newfolder => time});
+}
+
+# ======================================================== Move between folders
+
+sub movemsg {
+ my ($msgid,$srcfolder,$trgfolder)=@_;
+ my $srcsuffix=&foldersuffix($srcfolder);
+ my $trgsuffix=&foldersuffix($trgfolder);
+ my $srcstatus=&Apache::lonnet::get('email_status'.$srcsuffix,[$msgid]);
+ my $trgstatus=$srcstatus;
+ if ($trgstatus eq 'deleted') { $trgstatus='read'; }
+ &Apache::lonnet::put(
+ 'nohist_email'.$trgsuffix,{$msgid =>
+ &Apache::lonnet::get('nohist_email'.$srcsuffix,[$msgid])});
+ &statuschange($msgid,$trgstatus,$trgfolder);
+ &Apache::lonnet::del('nohist_email'.$srcsuffix,[$msgid]);
+ &Apache::lonnet::del('email_status'.$srcsuffix,[$msgid]);
+}
+
# ======================================================= Display a course list
sub discourse {
@@ -611,13 +662,13 @@
my %content=&unpackagemsg($what{$_});
next if ($content{'senderdomain'} eq '');
$content{'message'}=~s/\n/\<br\>/g;
- $result.='<hr>'.&mt('From').': <b>'.
+ $result.='<hr />'.&mt('From').': <b>'.
&Apache::loncommon::aboutmewrapper(
&Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),$content{'sendername'},$content{'senderdomain'}).'</b> ('.
$content{'sendername'}.'@'.
$content{'senderdomain'}.') '.$content{'time'}.
- '<br>'.&mt('Subject').': '.$content{'subject'}.
- '<br><blockquote>'.
+ '<br />'.&mt('Subject').': '.$content{'subject'}.
+ '<br /><blockquote>'.
&Apache::lontexconvert::msgtexconverted($content{'message'}).
'</blockquote><small>'.
&mt('You have to confirm that you received this message. After confirmation, this message will be moved to your regular inbox').
@@ -629,17 +680,19 @@
# Check to see if there were any messages.
if ($result eq '') {
$result = "<h2>".&mt('You have no critical messages.')."</h2>".
- '<a href="/adm/roles">'.&mt('Select a course').'</a>';
+ '<a href="/adm/roles">'.&mt('Select a course').'</a><br />'.
+ '<a href="/adm/email">'.&mt('Communicate').'</a>';
} else {
$r->print($header);
}
$r->print($result);
- $r->print('<input type=hidden name="displayedcrit" value="true"></form>');
+ $r->print('<input type=hidden name="displayedcrit" value="true" /></form>');
}
sub sortedmessages {
- my ($blocked,$startblock,$endblock,$numblocked) = @_;
- my @messages = &Apache::lonnet::getkeys('nohist_email');
+ my ($blocked,$startblock,$endblock,$numblocked,$folder) = @_;
+ my $suffix=&foldersuffix($folder);
+ my @messages = &Apache::lonnet::getkeys('nohist_email'.$suffix);
#unpack the varibles and repack into temp for sorting
my @temp;
foreach (@messages) {
@@ -695,7 +748,7 @@
# ======================================================== Display all messages
sub disall {
- my $r=shift;
+ my ($r,$folder)=@_;
my %blocked = ();
my %setters = ();
my $startblock;
@@ -723,9 +776,10 @@
}
</script>
ENDDISHEADER
- $r->print('<h1>'.&mt('Display All Messages').'</h1><form method=post name=disall '.
- 'action="/adm/email">'.
- '<table border=2><tr><th colspan=2> </th><th>');
+ $r->print('<h2>'.&mt('Display All Messages').'</h2>'.
+ &folderlist($folder).
+ '<form method="post" name="disall" action="/adm/email">'.
+ '<table border=2><tr><th colspan="3"> </th><th>');
if ($ENV{'form.sortedby'} eq "revdate") {
$r->print('<a href = "?sortedby=date">'.&mt('Date').'</a></th>');
} else {
@@ -756,7 +810,7 @@
$r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>');
}
$r->print('</tr>');
- my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked);
+ my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
foreach (@temp){
my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_;
if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
@@ -769,21 +823,35 @@
} else {
$r->print('<tr bgcolor="#99BBBB">');
}
- $r->print('<td><a href="/adm/email?display='.$origID.$sqs.
- '">'.&mt('Open').'</a></td><td><a href="/adm/email?markdel='.$origID.$sqs.
- '">'.&mt('Delete').'</a><input type=checkbox name="delmark_'.$origID.'" /></td>'.
+ $r->print('<td></a><input type=checkbox name="delmark_'.$origID.'" /></td><td><a href="/adm/email?display='.$origID.$sqs.
+ '">'.&mt('Open').'</a></td><td>'.
+ ($folder ne 'trash'?'<a href="/adm/email?markdel='.$origID.$sqs.
+ '">'.&mt('Delete'):' ').'</td>'.
'<td>'.&Apache::lonlocal::locallocaltime($sendtime).'</td><td>'.
$fromname.'</td><td>'.$fromdomain.'</td><td>'.
&Apache::lonnet::unescape($shortsubj).'</td><td>'.
$status.'</td></tr>');
+ } elsif ($status eq 'deleted') {
+# purge
+ &movemsg($origID,$folder,'trash');
}
}
$r->print('</table><p>'.
- '<a href="javascript:checkall()">'.&mt('Check All').'</a> '.
- '<a href="javascript:uncheckall()">'.&mt('Uncheck All').'</a><p>'.
- '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />'.
- '<input type="submit" name="markeddel" value="'.&mt('Delete Checked').'" />'.
- '</form>');
+ '<a href="javascript:checkall()">'.&mt('Check All').'</a> '.
+ '<a href="javascript:uncheckall()">'.&mt('Uncheck All').'</a></p>'.
+ '<input type="hidden" name="sortedby" value="'.$ENV{'form.sortedby'}.'" />');
+ if ($folder ne 'trash') {
+ $r->print(
+ '<p><input type="submit" name="markeddel" value="'.&mt('Delete Checked').'" /></p>');
+ }
+$r->print('<p><input type="submit" name="markedmove" value="'.&mt('Move Checked to Folder').'" />');
+ my @allfolders=&Apache::lonnet::getkeys('email_folders');
+ if ($allfolders[0]=~/^error:/) { @allfolders=(); }
+ $r->print(
+ &Apache::loncommon::select_form('','movetofolder',
+ ( map { $_ => $_ } @allfolders))
+ );
+ $r->print('<input type="hidden" name="folder" value="'.$folder.'" /></form>');
if ($numblocked > 0) {
my $beginblock = &Apache::lonlocal::locallocaltime($startblock);
my $finishblock = &Apache::lonlocal::locallocaltime($endblock);
@@ -791,7 +859,6 @@
$numblocked.' '.&mt('message(s) is/are not viewable because display of LON-CAPA messages sent to you by other students between').' '.$beginblock.' '.&mt('and').' '.$finishblock.' '.&mt('is currently being blocked because of online exams.'));
&build_block_table($r,$startblock,$endblock,\%setters);
}
- $r->print('</body></html>');
}
# ============================================================== Compose output
@@ -1462,7 +1529,8 @@
# ----------------------------------------------------------- Display a message
sub displaymessage {
- my ($r,$msgid)=@_;
+ my ($r,$msgid,$folder)=@_;
+ my $suffix=&foldersuffix($folder);
my %blocked = ();
my %setters = ();
my $startblock = 0;
@@ -1478,7 +1546,7 @@
return;
}
&statuschange($msgid,'read');
- my %message=&Apache::lonnet::get('nohist_email',[$msgid]);
+ my %message=&Apache::lonnet::get('nohist_email'.$suffix,[$msgid]);
my %content=&unpackagemsg($message{$msgid});
my $counter=0;
$r->print('<pre>');
@@ -1573,7 +1641,7 @@
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['display','replyto','forward','markread','markdel','markunread',
'sendreply','compose','sendmail','critical','recname','recdom',
- 'recordftf','sortedby','block']);
+ 'recordftf','sortedby','block','folder']);
$sqs='&sortedby='.$ENV{'form.sortedby'};
# ------------------------------------------------------ They checked for email
unless ($ENV{'form.block'}) {
@@ -1588,10 +1656,19 @@
text=>"Communication/Messages",
faq=>12,bug=>'Communication Tools',});
+# ------------------------------------------------------------------ Get Folder
+
+ my $folder=$ENV{'form.folder'};
+ unless ($folder) {
+ $folder='';
+ } else {
+ $sqs='&folder='.&Apache::lonnet::escape($folder);
+ }
+
# --------------------------------------------------------------- Render Output
if ($ENV{'form.display'}) {
- &displaymessage($r,$ENV{'form.display'});
+ &displaymessage($r,$ENV{'form.display'},$folder);
} elsif ($ENV{'form.replyto'}) {
&compout($r,'',$ENV{'form.replyto'});
} elsif ($ENV{'form.confirm'}) {
@@ -1616,8 +1693,20 @@
&compout($r,$ENV{'form.forward'});
} elsif ($ENV{'form.markdel'}) {
&printheader($r,'','Deleted Message');
- &statuschange($ENV{'form.markdel'},'deleted');
- &disall($r);
+ &statuschange($ENV{'form.markdel'},'deleted',$folder);
+ &disall($r,$folder);
+ } elsif ($ENV{'form.markedmove'}) {
+ my $total=0;
+ foreach (keys %ENV) {
+ if ($_=~/^form\.delmark_(.*)$/) {
+ &movemsg(&Apache::lonnet::unescape($1),$folder,
+ $ENV{'form.movetofolder'});
+ $total++;
+ }
+ }
+ &printheader($r,'','Moved Messages');
+ $r->print('Moved '.$total.' message(s)<p>');
+ &disall($r,$folder);
} elsif ($ENV{'form.markeddel'}) {
my $total=0;
foreach (keys %ENV) {
@@ -1628,11 +1717,11 @@
}
&printheader($r,'','Deleted Messages');
$r->print('Deleted '.$total.' message(s)<p>');
- &disall($r);
+ &disall($r,$folder);
} elsif ($ENV{'form.markunread'}) {
&printheader($r,'','Marked Message as Unread');
&statuschange($ENV{'form.markunread'},'new');
- &disall($r);
+ &disall($r,$folder);
} elsif ($ENV{'form.compose'}) {
&compout($r,'','',$ENV{'form.compose'});
} elsif ($ENV{'form.recordftf'}) {
@@ -1731,9 +1820,13 @@
&mt('Please use the browser "Back" button and correct the recipient addresses')
);
}
+ } elsif ($ENV{'form.newfolder'}) {
+ &printheader($r,'','New Folder');
+ &makefolder($ENV{'form.newfolder'});
+ &disall($r,$ENV{'form.newfolder'});
} else {
&printheader($r,'','Display All Messages');
- &disall($r);
+ &disall($r,$folder);
}
$r->print('</body></html>');
return OK;
Index: rat/lonsequence.pm
diff -u rat/lonsequence.pm:1.19 rat/lonsequence.pm:1.20
--- rat/lonsequence.pm:1.19 Sun Aug 29 12:30:53 2004
+++ rat/lonsequence.pm Fri Sep 10 02:38:24 2004
@@ -2,7 +2,7 @@
#
# Sequence Handler
#
-# $Id: lonsequence.pm,v 1.19 2004/08/29 16:30:53 raeburn Exp $
+# $Id: lonsequence.pm,v 1.20 2004/09/10 06:38:24 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -330,7 +330,7 @@
$warnmsg .= &mt('preceding the current resource were empty').',';
}
$warnmsg .= &mt('you have now reached the').' '.$lt{$arrow_dir}.' '.&mt('of the course.');
- my $bodytag=&Apache::loncommon::bodytag(&mt('emfo'));
+ my $bodytag=&Apache::loncommon::bodytag('Empty Folder/Sequence');
$r->print(<<ENDNONE);
<head><title>$lt{'emfo'}</title></head>
$bodytag
--www1094798304--