Limit teachers to not grade empty submission

Jump to solution
AbrahamOquendo
Community Explorer

Hello hope have a wonderfull weekend 

I'm wondering is there a setting in canvas that I can limit the professor to not grade empty online submission or a js code that can help with that?

 

0 Likes
1 Solution
jerry_nguyen
Community Contributor

@AbrahamOquendo 

There is no setting in Canvas to prevent grading an unsubmitted assignment. However, you can remove the grade input box by uploading a custom Javascript (JS)

Please note the following JS will only work on the web browser version of Canvas, and users can always disable it

The first script will hide the grade input box from /gradebook page and the flyout grading tray (For non Root Admin users)

Grade Entry box.png

 

if (window.location.href.match('/gradebook')) {
   if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin then hide grade input box
      var style = (function () {
         // Create the <style> tag
         var style = document.createElement("style");
         style.appendChild(document.createTextNode(""));
         // Add the <style> element to the page
         document.head.appendChild(style);
         return style;
      })();
      //CSS to hide grade input boxes
      style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);

      document.addEventListener('click', function (event) {

         if (event.target.matches('#grade-detail-tray--grade-input')) {
            alert("Please use SpeedGrader to grade");
            document.getElementById('grade-detail-tray--grade-input').disabled = true;
         };
      });
   };
}

 

 

The second script will hide the grade input box and rubric within the SpeedGrader

SpeedGraader Grade.png

 

if (window.location.href.match('/gradebook')) {
   if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin
      var style = (function () {
         // Create the <style> tag
         var style = document.createElement("style");

         style.appendChild(document.createTextNode(""));

         // Add the <style> element to the page
         document.head.appendChild(style);

         return style;
      })();
      style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);

      document.addEventListener('click', function (event) {

         if (event.target.matches('#grade-detail-tray--grade-input')) {
            alert("Please use SpeedGrader to grade");
            document.getElementById('grade-detail-tray--grade-input').disabled = true;
            $('span:contains("Excused")').remove();
         };
      });
   };
}

// SpeedGrader Hide


if (window.location.href.match('/gradebook/speed_grader?')) {
   console.log("In SpeedGrader Page")
   SpeedGraderCheck();

   //Run script again when users use the dropdown to change to another student
   var pushState = history.pushState;
   history.pushState = function () {
      pushState.apply(history, arguments);
      SpeedGraderCheck();
      console.log("URL Change");
   };
};

function SpeedGraderCheck() {
   var currentURL = window.location.href;
   var courseID = currentURL.match(/\/courses\/(\d+)/g);
   var asID_Reg = /(?:^|assignment_id)=(\d*?)(?:\D|$)/g;
   var asID_Result = asID_Reg.exec(currentURL);
   var assignment_id = asID_Result[1];

   var checkExist = setInterval(function () {
      if (window.location.href.indexOf('student_id=') > -1) {
         clearInterval(checkExist);

         var NewCurrentURL = window.location.href;
         var stdID_Reg = /(?:^|student_id)=(\d*?)(?:\D|$)/g;
         var stdID_Result = stdID_Reg.exec(NewCurrentURL);
         var student_id = stdID_Result[1];

         //Call API to check the submission status
         $.get('/api/v1' + courseID + '/assignments/' + assignment_id + '/submissions/' + student_id, function (response) {


            if (response['workflow_state'] == 'unsubmitted') {
               //Call API to check whether the assignment require submission	
               $.get('/api/v1' + courseID + '/assignments/' + assignment_id, function (response) {


                  if (response['submission_types'][0] != 'none') {
                     console.log("No Submission")

                     $('#grading-box-extended').attr('style', 'display: none !important');
                     $("button[class='toggle_full_rubric edit btn']").attr('style', 'display: none !important');
                  } else {
                     console.log("No Submission Required")
                  }
               })
            };
         });
      }
   }, 500);
};

 

 

 

View solution in original post