[LON-CAPA-cvs] cvs: loncom /homework grades.pm

raeburn lon-capa-cvs@mail.lon-capa.org
Thu, 04 Jan 2007 14:59:58 -0000


raeburn		Thu Jan  4 09:59:58 2007 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  Include symb in messages sent via lonmsg arising from grading.  Eliminate url from subject line to avoid leaking url when resource is encrypted in student's view.    
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.385 loncom/homework/grades.pm:1.386
--- loncom/homework/grades.pm:1.385	Wed Dec 13 13:43:30 2006
+++ loncom/homework/grades.pm	Thu Jan  4 09:59:57 2007
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.385 2006/12/13 18:43:30 albertel Exp $
+# $Id: grades.pm,v 1.386 2007/01/04 14:59:57 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -39,6 +39,7 @@
 use Apache::lonmsg();
 use Apache::Constants qw(:common);
 use Apache::lonlocal;
+use Apache::lonenc;
 use String::Similarity;
 use lib '/home/httpd/lib/perl';
 use LONCAPA;
@@ -2116,10 +2117,19 @@
 	    }
 	    my $includemsg = $env{'form.includemsg'.$ctr};
 	    my ($subject,$message,$msgstatus) = ('','','');
+            my $restitle = &Apache::lonnet::gettitle($symb);
+            my $encrypturl=&Apache::lonnet::EXT('resource.0.encrypturl',
+                                                $symb,$udom,$uname);
+            my ($feedurl,$baseurl,$showsymb,$messagetail);
+            $feedurl = &Apache::lonnet::clutter($url);
+            if ($encrypturl =~ /^yes$/i) {
+                $baseurl = &Apache::lonenc::encrypted($feedurl,1);
+                $showsymb = &Apache::lonenc::encrypted($symb,1);
+            }
 	    if ($includemsg =~ /savemsg|newmsg\Q$ctr\E/) {
 		$subject = $env{'form.msgsub'} if ($includemsg =~ /msgsub/);
 		unless ($subject=~/\w/) { $subject=&mt('Grading Feedback'); }
-		$subject.=' ['.&Apache::lonnet::declutter($url).']';
+		$subject.=' ['.$restitle.']';
 		my (@msgnum) = split(/,/,$includemsg);
 		foreach (@msgnum) {
 		    $message.=$env{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');
@@ -2127,14 +2137,16 @@
 		$message =&Apache::lonfeedback::clear_out_html($message);
 		if ($env{'form.withgrades'.$ctr}) {
 		    $message.="\n\nPoint".($pts > 1 ? 's':'').' awarded = '.$pts.' out of '.$wgt;
-		    $message.=" for <a href=\"".
-		    &Apache::lonnet::clutter($url).
-		    "?symb=$symb\">$env{'form.probTitle'}</a>";
-		}
-		$msgstatus = &Apache::lonmsg::user_normal_msg($uname,$udom,
-							      $subject,
-							      $message);
-		$request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '.
+		    $messagetail = " for <a href=\"".
+		                   $baseurl."?symb=$showsymb\">$env{'form.probTitle'}</a>";
+		}
+		$msgstatus = 
+                    &Apache::lonmsg::user_normal_msg($uname,$udom,$subject,
+						     $message.$messagetail,
+                                                     undef,$baseurl,undef,
+                                                     undef,undef,$showsymb,
+                                                     $restitle);
+		$request->print('<br />'.&mt('Sending message to [_1]:[_2]',$uname,$udom).': '.
 				$msgstatus);
 	    }
 	    if ($env{'form.collaborator'.$ctr}) {
@@ -2150,7 +2162,23 @@
 			    next;
 			} else {
 			    if ($message ne '') {
-				$msgstatus = &Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message);
+                                $encrypturl=
+                                  &Apache::lonnet::EXT('resource.0.encrypturl',
+                                                       $symb,$udom,$collaborator);
+                                if ($encrypturl =~ /^yes$/i) {
+                                    $baseurl = &Apache::lonenc::encrypted($feedurl,1);
+                                    $showsymb = &Apache::lonenc::encrypted($symb,1);
+                                } else {
+                                    $baseurl = $feedurl;
+                                    $showsymb = $symb;
+                                }
+                                if ($env{'form.withgrades'.$ctr}) {
+                                    $messagetail = " for <a href=\"".
+                                    $baseurl."?symb=$showsymb\">$env{'form.probTitle'}</a>";
+
+                                }
+				$msgstatus = 
+                                    &Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message.$messagetail,undef,$baseurl,undef,undef,undef,$showsymb,$restitle);
 			    }
 			}
 		    }
@@ -2506,10 +2534,22 @@
 		$message .= ' The returned file(s) are named: '. $file_msg;
 		$message .= " and can be found in your portfolio space.";
 		my $url = (&Apache::lonnet::decode_symb($symb))[2];
-		$url = &Apache::lonnet::declutter($url);
-		my $msgstatus = &Apache::lonmsg::user_normal_msg($stuname,$domain,
-								 $subject.' (File Returned) ['.$url.']',$message);                    
-
+		my $feedurl = &Apache::lonnet::declutter($url);
+                my $encrypturl=&Apache::lonnet::EXT('resource.0.encrypturl',
+                                                    $symb,$domain,$stuname);
+                my ($baseurl,$showsymb);
+                if ($encrypturl =~ /^yes$/i) {
+                    $baseurl = &Apache::lonenc::encrypted($feedurl,1);
+                    $showsymb = &Apache::lonenc::encrypted($symb,1);
+                } else {
+                    $baseurl = $feedurl;
+                    $showsymb = $symb;
+                }
+                my $restitle = &Apache::lonnet::gettitle($symb);
+		my $msgstatus = 
+                   &Apache::lonmsg::user_normal_msg($stuname,$domain,$subject.
+			 ' (File Returned) ['.$restitle.']',$message,undef,
+                         $baseurl,undef,undef,undef,$showsymb,$restitle);
             }
         }
     return;