Index: mod/assignment/lib.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/assignment/lib.php,v
retrieving revision 1.277.2.54
diff -u -8 -p -r1.277.2.54 lib.php
--- mod/assignment/lib.php	30 Nov 2009 17:12:16 -0000	1.277.2.54
+++ mod/assignment/lib.php	9 Feb 2010 15:39:15 -0000
@@ -1780,20 +1817,32 @@ class assignment_base {
      * Return an outline of the user's interaction with the assignment
      *
      * The default method prints the grade and timemodified
      * @param $grade object
      * @return object with properties ->info and ->time
      */
     function user_outline($grade) {
         $result = new object();
-        $result->info = get_string('grade').': '.$grade->str_long_grade;
-        $result->time = $grade->dategraded;
+        if(!empty($grade->dategraded)){
+            $result->info = get_string('grade').': '.$grade->str_long_grade;
+        }else{
+	        $userid = optional_param('user',0,PARAM_INT);
+	        if ($submission = $this->get_submission($userid)) {
+		        $result->info = get_string("lastmodified").": ";
+		        $result->info .= userdate($submission->timemodified);
+		        $result->info .= $this->display_lateness($submission->timemodified);
+		        $result->info .= $this->print_user_files($userid, true, true);
+		    } else {
+		        $result->info = get_string("notsubmittedyet", "assignment");
+		    }
+		}
+		$result->time = $grade->dategraded;
         return $result;
-    }
+	}

     /**
      * Print complete information about the user's interaction with the assignment
      *
      * @param $user object
      */
     function user_complete($user, $grade=null) {
         if ($grade) {
@@ -1813,17 +1862,17 @@ class assignment_base {
                 }
             }

             print_simple_box_start();
             echo get_string("lastmodified").": ";
             echo userdate($submission->timemodified);
             echo $this->display_lateness($submission->timemodified);

-            $this->print_user_files($user->id);
+            $this->print_user_files($user->id, false, true);

             echo '<br />';

             $this->view_feedback($submission);

             print_simple_box_end();

         } else {
Index: mod/assignment/type/upload/assignment.class.php
===================================================================
RCS file: /cvsroot/moodle/moodle/mod/assignment/type/upload/assignment.class.php,v
retrieving revision 1.32.2.16
diff -u -8 -p -r1.32.2.16 assignment.class.php
--- mod/assignment/type/upload/assignment.class.php	20 Nov 2009 08:25:32 -0000	1.32.2.16
+++ mod/assignment/type/upload/assignment.class.php	9 Feb 2010 15:39:15 -0000
@@ -320,17 +321,17 @@ class assignment_upload extends assignme

     /**
      * Produces a list of links to the files uploaded by a user
      *
      * @param $userid int optional id of the user. If 0 then $USER->id is used.
      * @param $return boolean optional defaults to false. If true the list is returned rather than printed
      * @return string optional
      */
-    function print_user_files($userid=0, $return=false) {
+    function print_user_files($userid=0, $return=false, $outline=false) {
         global $CFG, $USER;

         $mode    = optional_param('mode', '', PARAM_ALPHA);
         $offset  = optional_param('offset', 0, PARAM_INT);

         if (!$userid) {
             if (!isloggedin()) {
                 return '';
@@ -376,23 +377,30 @@ class assignment_upload extends assignme
                     }

                     $output .= '<br />';
                 }
             }
         }

         if ($this->drafts_tracked() and $this->isopen() and has_capability('mod/assignment:grade', $this->context) and $mode != '') { // we do not want it on view.php page
-            if ($this->can_unfinalize($submission)) {
-                $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'unfinalize', 'mode'=>$mode, 'offset'=>$offset, 'sesskey'=>sesskey());
-                $output .= print_single_button('upload.php', $options, get_string('unfinalize', 'assignment'), 'post', '_self', true);
-            } else if ($this->can_finalize($submission)) {
-                $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'finalizeclose', 'mode'=>$mode, 'offset'=>$offset, 'sesskey'=>sesskey());
-                $output .= print_single_button('upload.php', $options, get_string('finalize', 'assignment'), 'post', '_self', true);
-            }
+            if($outline){
+	            $buttontext = get_string('grader:view','gradereport_grader');
+	            $popup_url = '/mod/assignment/submissions.php?id='.$this->cm->id.'&amp;userid='.$userid.'&amp;mode=single'.'&amp;offset=0';
+	            $icone = '<img alt="Modifier" class="iconsmall" src="http://moodledev-1.uhb.fr/0810/pix/t/edit.gif">';
+	            $output .= '-> '.link_to_popup_window ($popup_url, 'grade'.$userid, $buttontext, 600, 780, $buttontext, 'none', true, 'button'.$userid).$icone;
+			}else{
+				if ($this->can_unfinalize($submission)) {
+		            $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'unfinalize', 'mode'=>$mode, 'offset'=>$offset, 'sesskey'=>sesskey());
+					$output .= print_single_button('upload.php', $options, get_string('unfinalize', 'assignment'), 'post', '_self', true);
+				} else if ($this->can_finalize($submission)) {
+			        $options = array ('id'=>$this->cm->id, 'userid'=>$userid, 'action'=>'finalizeclose', 'mode'=>$mode, 'offset'=>$offset, 'sesskey'=>sesskey());
+		            $output .= print_single_button('upload.php', $options, get_string('finalize', 'assignment'), 'post', '_self', true);
+	            }
+			}
         }

         $output = '<div class="files">'.$output.'</div>';

         if ($return) {
             return $output;
         }
         echo $output;
