[LON-CAPA-cvs] cvs: loncom /interface lonmsg.pm

www lon-capa-cvs@mail.lon-capa.org
Mon, 20 Sep 2004 15:01:56 -0000


This is a MIME encoded message

--www1095692516
Content-Type: text/plain

www		Mon Sep 20 11:01:56 2004 EDT

  Modified files:              
    /loncom/interface	lonmsg.pm 
  Log:
  Just saving work from during the trip
  
  
--www1095692516
Content-Type: text/plain
Content-Disposition: attachment; filename="www-20040920110156.txt"

Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.107 loncom/interface/lonmsg.pm:1.108
--- loncom/interface/lonmsg.pm:1.107	Fri Sep 10 04:42:21 2004
+++ loncom/interface/lonmsg.pm	Mon Sep 20 11:01:56 2004
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Routines for messaging
 #
-# $Id: lonmsg.pm,v 1.107 2004/09/10 08:42:21 www Exp $
+# $Id: lonmsg.pm,v 1.108 2004/09/20 15:01:56 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -117,11 +117,14 @@
 
 # Querystring component with sorting type
 my $sqs;
+my $startdis;
+my $interdis;
 
 # ===================================================================== Package
 
 sub packagemsg {
-    my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+    my ($subject,$message,$citation,$baseurl,$attachmenturl,
+	$recuser,$recdomain)=@_;
     $message =&HTML::Entities::encode($message,'<>&"');
     $citation=&HTML::Entities::encode($citation,'<>&"');
     $subject =&HTML::Entities::encode($subject,'<>&"');
@@ -156,6 +159,8 @@
 	   '<role>'.$ENV{'request.role'}.'</role>'.
 	   '<resource>'.$ENV{'request.filename'}.'</resource>'.
            '<msgid>'.$msgid.'</msgid>'.
+	   '<recuser>'.$recuser.'</recuser>'.
+	   '<recdomain>'.$recdomain.'</recdomain>'.
 	   '<message>'.$message.'</message>';
     if (defined($citation)) {
 	$result.='<citation>'.$citation.'</citation>';
@@ -447,13 +452,21 @@
     my $homeserver=&Apache::lonnet::homeserver($user,$domain);
     if ($homeserver ne 'no_host') {
        ($msgid,$message)=&packagemsg($subject,$message,$citation,$baseurl,
-                                     $attachmenturl);
+                                     $attachmenturl,$user,$domain);
+# Store in user folder
        $status=&Apache::lonnet::critical(
            'put:'.$domain.':'.$user.':nohist_email:'.
            &Apache::lonnet::escape($msgid).'='.
            &Apache::lonnet::escape($message),$homeserver);
+# Save new message received time
        &Apache::lonnet::put
                          ('email_status',{'recnewemail'=>time},$domain,$user);
+# Into sent-mail folder
+       $status.=' '.&Apache::lonnet::critical(
+           'put:'.$ENV{'user.domain'}.':'.$ENV{'user.name'}.
+					      ':nohist_email_sent:'.
+           &Apache::lonnet::escape($msgid).'='.
+           &Apache::lonnet::escape($message),$ENV{'user.home'});
     } else {
        $status='no_host';
     }
@@ -507,15 +520,25 @@
     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').'" />'.
+	&mt('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('Show').' '.
+	    &Apache::loncommon::select_form($interdis,'interdis',
+(' 10' => '10', ' 20' => '20', ' 50' => '50', '100' => '100', '200' => '200')).	
+   '<input type="submit" value="'.&mt('View Folder').'" /><br />'.
+   '<input type="submit" name="firstview" value="'.&mt('First').'" />'.
+   '<input type="submit" name="prevview" value="'.&mt('Previous').'" />'.
+   '<input type="text" size="5" name="startdis" value="'.$startdis.'" />'.
+   '<input type="submit" name="nextview" value="'.&mt('Next').'" />'.
+   '<input type="submit" name="lastview" value="'.&mt('Last').'" />'.
+	'<a href="/adm/email?critical=display'.$sqs.'">'.
 	    &mt('View Critical Messages').'</a>'.
-        '</form>';
+	    '</form>';
 }
+
 # =============================================================== Folder suffix
 
 sub foldersuffix {
@@ -564,7 +587,7 @@
     my %status=&Apache::lonnet::get('email_status'.$srcsuffix,[$unmsgid]);
     &Apache::lonnet::put('email_status'.$trgsuffix,{$unmsgid => $status{$unmsgid}});
 # See if was deleted -> becomes "read" in trash
-    my $currentstatus=(&unpackmsgid($status{$unmsgid}));
+    my $currentstatus=(&unpackmsgid($status{$unmsgid}),$srcfolder);
     if ($currentstatus eq 'deleted') {
 	&statuschange($msgid,'read',$trgfolder);
     }
@@ -694,7 +717,7 @@
         $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 {
@@ -706,7 +729,7 @@
     foreach (@messages) {
 	my $msgid=&Apache::lonnet::escape($_);
 	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status)=
-	    &Apache::lonmsg::unpackmsgid($msgid);
+	    &Apache::lonmsg::unpackmsgid($msgid,$folder);
 	my @temp1 = ($sendtime,$shortsubj,$fromname,$fromdomain,$status,
 		     $msgid);
         # Check whether message was sent during blocking period.
@@ -784,43 +807,50 @@
     }
 </script>
 ENDDISHEADER
+    my $fsqs='&folder='.$folder;
+    my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
+    my $totalnumber=$#temp+1;
+    my $number=int($totalnumber/$interdis)+1;
+    my $firstdis=$interdis*$startdis;
+    if ($firstdis>$#temp) { $firstdis=$#temp-$interdis+1; }
+    my $lastdis=$firstdis+$interdis-1;
+    if ($lastdis>$#temp) { $lastdis=$#temp; }
     $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">&nbsp</th><th>');
     if ($ENV{'form.sortedby'} eq "revdate") {
-	$r->print('<a href = "?sortedby=date">'.&mt('Date').'</a></th>');
+	$r->print('<a href = "?sortedby=date'.$fsqs.'">'.&mt('Date').'</a></th>');
     } else {
-	$r->print('<a href = "?sortedby=revdate">'.&mt('Date').'</a></th>');
+	$r->print('<a href = "?sortedby=revdate'.$fsqs.'">'.&mt('Date').'</a></th>');
     }
     $r->print('<th>');
     if ($ENV{'form.sortedby'} eq "revuser") {
-	$r->print('<a href = "?sortedby=user">'.&mt('Username').'</a>');
+	$r->print('<a href = "?sortedby=user'.$fsqs.'">'.&mt('Username').'</a>');
     } else {
-	$r->print('<a href = "?sortedby=revuser">'.&mt('Username').'</a>');
+	$r->print('<a href = "?sortedby=revuser'.$fsqs.'">'.&mt('Username').'</a>');
     }
     $r->print('</th><th>');
     if ($ENV{'form.sortedby'} eq "revdomain") {
-	$r->print('<a href = "?sortedby=domain">'.&mt('Domain').'</a>');
+	$r->print('<a href = "?sortedby=domain'.$fsqs.'">'.&mt('Domain').'</a>');
     } else {
-	$r->print('<a href = "?sortedby=revdomain">'.&mt('Domain').'</a>');
+	$r->print('<a href = "?sortedby=revdomain'.$fsqs.'">'.&mt('Domain').'</a>');
     }
     $r->print('</th><th>');
     if ($ENV{'form.sortedby'} eq "revsubject") {
-	$r->print('<a href = "?sortedby=subject">'.&mt('Subject').'</a>');
+	$r->print('<a href = "?sortedby=subject'.$fsqs.'">'.&mt('Subject').'</a>');
     } else {
-    	$r->print('<a href = "?sortedby=revsubject">'.&mt('Subject').'</a>');
+    	$r->print('<a href = "?sortedby=revsubject'.$fsqs.'">'.&mt('Subject').'</a>');
     }
     $r->print('</th><th>');
     if ($ENV{'form.sortedby'} eq "revstatus") {
-	$r->print('<a href = "?sortedby=status">'.&mt('Status').'</th>');
+	$r->print('<a href = "?sortedby=status'.$fsqs.'">'.&mt('Status').'</th>');
     } else {
-     	$r->print('<a href = "?sortedby=revstatus">'.&mt('Status').'</th>');
+     	$r->print('<a href = "?sortedby=revstatus'.$fsqs.'">'.&mt('Status').'</th>');
     }
     $r->print('</tr>');
-    my @temp=sortedmessages(\%blocked,$startblock,$endblock,\$numblocked,$folder);
-    foreach (@temp){
-	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @$_;
+    for (my $n=$firstdis;$n<=$lastdis;$n++) {
+	my ($sendtime,$shortsubj,$fromname,$fromdomain,$status,$origID)= @{$temp[$n]};
 	if (($status ne 'deleted') && defined($sendtime) && $sendtime!~/error/) {
 	    if ($status eq 'new') {
 		$r->print('<tr bgcolor="#FFBB77">');
@@ -841,7 +871,7 @@
                       $status.'</td></tr>');
 	} elsif ($status eq 'deleted') {
 # purge
-	    &movemsg($origID,$folder,'trash');
+	    &movemsg(&Apache::lonnet::unescape($origID),$folder,'trash');
 	}
     }   
     $r->print('</table><p>'.
@@ -872,7 +902,7 @@
 # ============================================================== Compose output
 
 sub compout {
-    my ($r,$forwarding,$replying,$broadcast,$replycrit)=@_;
+    my ($r,$forwarding,$replying,$broadcast,$replycrit,$folder)=@_;
 
     if ($broadcast eq 'individual') {
 	&printheader($r,'/adm/email?compose=individual',
@@ -924,7 +954,7 @@
     my $defdom=$ENV{'user.domain'};
     if ($forwarding) {
 	%message=&Apache::lonnet::get('nohist_email',[$forwarding]);
-	%content=&unpackagemsg($message{$forwarding});
+	%content=&unpackagemsg($message{$forwarding},$folder);
 	$dispcrit.='<input type="hidden" name="forwid" value="'.
 	    $forwarding.'" />';
 	$func=&mt('Forward');
@@ -935,10 +965,10 @@
     }
     if ($replying) {
 	%message=&Apache::lonnet::get('nohist_email',[$replying]);
-	%content=&unpackagemsg($message{$replying});
+	%content=&unpackagemsg($message{$replying},$folder);
 	$dispcrit.='<input type="hidden" name="replyid" value="'.
 	    $replying.'" />';
-	$func=&mt('Replying to');
+	$func=&mt('Send Reply to');
 	
 	$dissub=&mt('Reply').': '.$content{'subject'};       
 	$dismsg='> '.$content{'message'};
@@ -1594,12 +1624,17 @@
     }
     $r->print('</tr></table>');
     $r->print('<br /><b>'.&mt('Subject').':</b> '.$content{'subject'}.
-	      '<br /><b>'.&mt('From').':</b> '.
+	      ($folder ne 'sent'?'<br /><b>'.&mt('From').':</b> '.
 	      &Apache::loncommon::aboutmewrapper(
 						 &Apache::loncommon::plainname($content{'sendername'},$content{'senderdomain'}),
 						 $content{'sendername'},$content{'senderdomain'}).' ('.
 	      $content{'sendername'}.' at '.
-	      $content{'senderdomain'}.') '.
+	      $content{'senderdomain'}.') ':'<br /><b>'.&mt('To').':</b> '.
+	      &Apache::loncommon::aboutmewrapper(
+						 &Apache::loncommon::plainname($content{'recuser'},$content{'recdomain'}),
+						 $content{'recuser'},$content{'recdomain'}).' ('.
+	      $content{'recuser'}.' at '.
+	      $content{'recdomain'}.') ').
 	      ($content{'courseid'}?'<br /><b>'.&mt('Course').':</b> '.$courseinfo{'description'}.
 	       ($content{'coursesec'}?' ('.&mt('Group/Section').': '.$content{'coursesec'}.')':''):'').
 	      '<br /><b>'.&mt('Time').':</b> '.$content{'time'}.
@@ -1651,8 +1686,11 @@
     &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
         ['display','replyto','forward','markread','markdel','markunread',
          'sendreply','compose','sendmail','critical','recname','recdom',
-         'recordftf','sortedby','block','folder']);
-    $sqs='&sortedby='.$ENV{'form.sortedby'};
+         'recordftf','sortedby','block','folder','startdis','interdis']);
+    $sqs='&sortedby='.$ENV{'form.sortedby'}.
+	 '&startdis='.$ENV{'form.startdis'}.
+	 '&interdis='.$ENV{'form.interdis'};
+
 # ------------------------------------------------------ They checked for email
     unless ($ENV{'form.block'}) {
         &Apache::lonnet::put('email_status',{'recnewemail'=>0});
@@ -1675,12 +1713,19 @@
 	$sqs='&folder='.&Apache::lonnet::escape($folder);
     }
 
+# --------------------------------------------------------------------- Display
+
+    $startdis=$ENV{'form.startdis'};
+    unless ($startdis) { $startdis=0; }
+    $interdis=$ENV{'form.interdis'};
+    unless ($interdis) { $interdis=20; }
+
 # --------------------------------------------------------------- Render Output
 
     if ($ENV{'form.display'}) {
 	&displaymessage($r,$ENV{'form.display'},$folder);
     } elsif ($ENV{'form.replyto'}) {
-	&compout($r,'',$ENV{'form.replyto'});
+	&compout($r,'',$ENV{'form.replyto'},undef,undef,$folder);
     } elsif ($ENV{'form.confirm'}) {
 	&printheader($r,'','Confirmed Receipt');
 	foreach (keys %ENV) {
@@ -1721,7 +1766,7 @@
 	my $total=0;
 	foreach (keys %ENV) {
 	    if ($_=~/^form\.delmark_(.*)$/) {
-		&statuschange(&Apache::lonnet::unescape($1),'deleted');
+		&statuschange(&Apache::lonnet::unescape($1),'deleted',$folder);
 		$total++;
 	    }
 	}

--www1095692516--