diff -r -u ./lib.php /Volumes/Teradactyl/! Downloads/assignment_patched/lib.php
--- ./lib.php	2010-04-24 17:03:37.000000000 -0700
+++ /Volumes/Teradactyl/! Downloads/assignment_patched/lib.php	2010-08-11 08:16:13.000000000 -0700
@@ -209,7 +209,8 @@
         global $USER, $CFG;
         require_once($CFG->libdir.'/gradelib.php');
 
-        if (!has_capability('mod/assignment:submit', $this->context, $USER->id, false)) {
+        if (!has_capability('mod/assignment:submit', $this->context, $USER->id, false) and
+                !has_capability('mod/assignment:view', $this->context, $USER->id, false)) {
             // can not submit assignments -> no feedback
             return;
         }
@@ -830,7 +831,8 @@
             $sql = 'FROM '.$CFG->prefix.'user u '.
                    'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid
                                                                       AND s.assignment = '.$this->assignment->id.' '.
-                   'WHERE u.id IN ('.implode(',', $users).') ';
+                   //'WHERE u.id IN ('.implode(',', $users).') ';
+                   'WHERE (u.id = s.userid OR u.id IN ('.implode(',', array_keys($users)).')) ';
 
             if ($sort = flexible_table::get_sql_sort('mod-assignment-submissions')) {
                 $sort = 'ORDER BY '.$sort.' ';
@@ -1068,7 +1070,7 @@
         groups_print_activity_menu($cm, $CFG->wwwroot . '/mod/assignment/submissions.php?id=' . $this->cm->id);
 
         /// Get all ppl that are allowed to submit assignments
-        if ($users = get_users_by_capability($context, 'mod/assignment:submit', 'u.id', '', '', '', $currentgroup, '', false)) {
+        if ($users = get_users_by_capability($context, 'mod/assignment:view', 'u.id', '', '', '', $currentgroup, '', false)) {
             $users = array_keys($users);
         }
 
@@ -1156,7 +1158,8 @@
         $sql = 'FROM '.$CFG->prefix.'user u '.
                'LEFT JOIN '.$CFG->prefix.'assignment_submissions s ON u.id = s.userid
                                                                   AND s.assignment = '.$this->assignment->id.' '.
-               'WHERE '.$where.'u.id IN ('.implode(',',$users).') ';
+               //'WHERE '.$where.'u.id IN ('.implode(',',$users).') ';
+               'WHERE '.$where.' (u.id = s.userid OR u.id IN ('.implode(',',$users).') )';
 
         $table->pagesize($perpage, count($users));
 
@@ -2777,7 +2780,7 @@
     $context = get_context_instance(CONTEXT_MODULE, $cm->id);
 
     // this is all the users with this capability set, in this context or higher
-    if ($users = get_users_by_capability($context, 'mod/assignment:submit', 'u.id', '', '', '', $groupid, '', false)) {
+    if ($users = get_users_by_capability($context, 'mod/assignment:view', 'u.id', '', '', '', $groupid, '', false)) {
         $users = array_keys($users);
     }
 
diff -r -u ./type/online/assignment.class.php /Volumes/Teradactyl/! Downloads/assignment_patched/type/online/assignment.class.php
--- ./type/online/assignment.class.php	2010-03-07 16:03:06.000000000 -0800
+++ /Volumes/Teradactyl/! Downloads/assignment_patched/type/online/assignment.class.php	2010-08-10 09:36:08.000000000 -0700
@@ -83,7 +83,9 @@
 /// print header, etc. and display form if needed
         if ($editmode) {
             $this->view_header(get_string('editmysubmission', 'assignment'));
-        } else {
+        } else if(has_capability('mod/assignment:view', $context)){
+            $this->view_header(get_string('viewsubmissions', 'assignment'));//View my Submissions
+        }else{
             $this->view_header();
         }
 
@@ -95,8 +97,9 @@
             notify(get_string('submissionsaved', 'assignment'), 'notifysuccess');
         }
 
-        if (has_capability('mod/assignment:submit', $context)) {
-            if ($editmode) {
+        if (has_capability('mod/assignment:submit', $context)
+                or has_capability('mod/assignment:view', $context)) {
+            if ($editmode and has_capability('mod/assignment:submit', $context)) {
                 print_box_start('generalbox', 'online');
                 $mform->display();
             } else {
@@ -110,7 +113,7 @@
                 }
             }
             print_box_end();
-            if (!$editmode && $editable) {
+            if (!$editmode && $editable && has_capability('mod/assignment:submit', $context)) {
                 echo "<div style='text-align:center'>";
                 print_single_button('view.php', array('id'=>$this->cm->id,'edit'=>'1'),
                         get_string('editmysubmission', 'assignment'));
diff -r -u ./type/upload/assignment.class.php /Volumes/Teradactyl/! Downloads/assignment_patched/type/upload/assignment.class.php
--- ./type/upload/assignment.class.php	2010-03-07 16:03:06.000000000 -0800
+++ /Volumes/Teradactyl/! Downloads/assignment_patched/type/upload/assignment.class.php	2010-08-10 10:03:44.000000000 -0700
@@ -36,7 +36,8 @@
 
         $this->view_dates();
 
-        if (has_capability('mod/assignment:submit', $this->context)) {
+        if (has_capability('mod/assignment:submit', $this->context) or
+                has_capability('mod/assignment:view', $this->context)) {
             $filecount = $this->count_user_files($USER->id);
             $submission = $this->get_submission($USER->id);
 
@@ -58,7 +59,9 @@
                 }
             }
 
-            $this->view_upload_form();
+            if(has_capability('mod/assignment:submit', $this->context)){
+                $this->view_upload_form();
+            }
 
             if ($this->notes_allowed()) {
                 print_heading(get_string('notes', 'assignment'), '', 3);
diff -r -u ./view.php /Volumes/Teradactyl/! Downloads/assignment_patched/view.php
--- ./view.php	2007-08-17 19:06:23.000000000 -0700
+++ /Volumes/Teradactyl/! Downloads/assignment_patched/view.php	2010-08-10 10:04:48.000000000 -0700
@@ -35,7 +35,6 @@
     require ("$CFG->dirroot/mod/assignment/type/$assignment->assignmenttype/assignment.class.php");
     $assignmentclass = "assignment_$assignment->assignmenttype";
     $assignmentinstance = new $assignmentclass($cm->id, $assignment, $cm, $course);
-
     $assignmentinstance->view();   // Actually display the assignment!
 
 ?>
