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

raeburn raeburn at source.lon-capa.org
Sat Feb 16 12:53:06 EST 2019


raeburn		Sat Feb 16 17:53:06 2019 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/homework	grades.pm 
  Log:
  - For 2.11
    - Backport 1.753
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.596.2.12.2.44 loncom/homework/grades.pm:1.596.2.12.2.45
--- loncom/homework/grades.pm:1.596.2.12.2.44	Mon Oct  8 19:12:29 2018
+++ loncom/homework/grades.pm	Sat Feb 16 17:53:05 2019
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.596.2.12.2.44 2018/10/08 19:12:29 raeburn Exp $
+# $Id: grades.pm,v 1.596.2.12.2.45 2019/02/16 17:53:05 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2053,6 +2053,7 @@
     $env{'form.fullname'} = &Apache::loncommon::plainname($uname,$udom,'lastname') if $env{'form.fullname'} eq '';
     my ($symb) = &get_symb($request); 
     if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; }
+    my ($essayurl,%coursedesc_by_cid);
 
     if (!&canview($usec)) {
         $request->print(
@@ -2190,11 +2191,24 @@
 #
 # Load the other essays for similarity check
 #
-            my (undef,undef,$essayurl) = &Apache::lonnet::decode_symb($symb);
-	    my ($adom,$aname,$apath)=($essayurl=~/^($LONCAPA::domain_re)\/($LONCAPA::username_re)\/(.*)$/);
-	    $apath=&escape($apath);
-	    $apath=~s/\W/\_/gs;
-            &init_old_essays($symb,$apath,$adom,$aname);
+            (undef,undef,$essayurl) = &Apache::lonnet::decode_symb($symb);
+            if ($essayurl eq 'lib/templates/simpleproblem.problem') {
+                my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
+                my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
+                if ($cdom ne '' && $cnum ne '') {
+                    my ($map,$id,$res) = &Apache::lonnet::decode_symb($symb);
+                    if ($map =~ m{^\Quploaded/$cdom/$cnum/\E(default(?:|_\d+)\.(?:sequence|page))$}) {
+                        my $apath = $1.'_'.$id;
+                        $apath=~s/\W/\_/gs;
+                        &init_old_essays($symb,$apath,$cdom,$cnum);
+                    }
+                }
+            } else {
+	        my ($adom,$aname,$apath)=($essayurl=~/^($LONCAPA::domain_re)\/($LONCAPA::username_re)\/(.*)$/);
+	        $apath=&escape($apath);
+	        $apath=~s/\W/\_/gs;
+                &init_old_essays($symb,$apath,$adom,$aname);
+            }
         }
     }
 
@@ -2335,27 +2349,51 @@
 			    &most_similar($uname,$udom,$symb,$subval);
 			if ($osim) {
 			    $osim=int($osim*100.0);
-			    my %old_course_desc = 
-				&Apache::lonnet::coursedescription($ocrsid,
-								   {'one_time' => 1});
-
                             if ($hide eq 'anon') {
                                 $similar='<hr /><span class="LC_warning">'.&mt("Essay was found to be similar to another essay submitted for this assignment.").'<br />'.
                                          &mt('As the current submission is for an anonymous survey, no other details are available.').'</span><hr />';
                             } else {
-			        $similar="<hr /><h3><span class=\"LC_warning\">".
-				    &mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
-				        $osim,
-				        &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
-				        $old_course_desc{'description'},
-				        $old_course_desc{'num'},
-				        $old_course_desc{'domain'}).
-				    '</span></h3><blockquote><i>'.
-				    &keywords_highlight($oessay).
-				    '</i></blockquote><hr />';
-                            }
-			}
-		    }
+			        $similar='<hr />';
+                                if ($essayurl eq 'lib/templates/simpleproblem.problem') {
+                                    $similar .= '<h3><span class="LC_warning">'.
+                                                &mt('Essay is [_1]% similar to an essay by [_2]',
+                                                    $osim,
+                                                    &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')').
+                                                '</span></h3>';
+                                } elsif ($ocrsid ne '') {
+                                    if (ref($coursedesc_by_cid{$ocrsid}) eq 'HASH') {
+                                        %old_course_desc = %{$coursedesc_by_cid{$ocrsid}};
+                                    } else {
+                                        my $args;
+                                        if ($ocrsid ne $env{'request.course.id'}) {
+                                            $args = {'one_time' => 1};
+                                        }
+                                        %old_course_desc =
+                                            &Apache::lonnet::coursedescription($ocrsid,$args);
+                                        $coursedesc_by_cid{$ocrsid} = \%old_course_desc;
+                                    }
+                                    $similar .=
+				        &mt('Essay is [_1]% similar to an essay by [_2] in course [_3] (course id [_4]:[_5])',
+				            $osim,
+				            &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')',
+				            $old_course_desc{'description'},
+				            $old_course_desc{'num'},
+				            $old_course_desc{'domain'}).
+				            '</span></h3>';
+                                } else {
+                                    $similar .=
+                                        '<h3><span class="LC_warning">'.
+                                        &mt('Essay is [_1]% similar to an essay by [_2] in an unknown course',
+                                            $osim,
+                                            &Apache::loncommon::plainname($oname,$odom).' ('.$oname.':'.$odom.')').
+                                        '</span></h3>';
+                                }
+                                $similar .= '<blockquote><i>'.
+                                            &keywords_highlight($oessay).
+                                            '</i></blockquote><hr />';
+		            }
+                        }
+                    }
 		    my $order=&get_order($partid,$respid,$symb,$uname,$udom,
                                          undef,$type,$trial,$rndseed);
                     if ($env{'form.lastSub'} eq 'lastonly' || $env{'form.lastSub'} eq 'datesub' || $env{'form.lastSub'} =~ /^(last|all)$/ || ($env{'form.lastSub'} eq 'hdgrade' &&




More information about the LON-CAPA-cvs mailing list