QuizWiz: Enhancements to SpeedGrader and Quizzes

James
Community Champion
137
50688

QuizWiz is a user script developed by  @James   and  @avi_naiman  that adds speed enhancements to quizzes, assignments, and discussions within SpeedGrader. It also provides alternative scoring methods for certain types of quiz questions. It runs in SpeedGrader and on the Quiz Moderation pages.

Installation instructions are near the bottom, but please read and understand this document before you install QuizWiz, especially if you choose regrading options.

Feature Overview

Currently, all of the following features are configurable except for duplicating the information from the bottom at the top.

Speed Improvements

Some of the speed improvements are specific to quizzes and will work from either SpeedGrader or the Quiz Moderation page. Other enhancements are specific to SpeedGrader, but will work for quizzes, assignments, and discussions.

  • Can assign zero points to any unanswered Essay or File Upload quiz questions.
  • Can assign full points to any answered, but ungraded, Essay or File Upload quiz questions.
  • Duplicates the Final Score, Fudge Points input, and Update Scores button at the top of a quiz page when the user is not using SpeedGrader's Grade by Question mode.
  • Duplicates the question header of question number and point values at the bottom of each quiz question.
  • Automatically expands a quiz question's Additional Comments textbox when you start typing in it.
  • Adds a button next to the Update Scores button quizzes that will update scores and automatically advance to the next user.
  • Adds a button next to a submission comment's Submit button that will submit the submission comment and automatically advance to the next user.
  • Adds a button next to a rubric's Save button that will save the rubric and automatically advance to the next user.
  • Automatically expands a rubric when you advance to the next user. This feature depends on the Save Rubric and Advance feature.

Regrading Features

The following features are specific to quizzes.

Each of these methods adds a button at the top of the quiz to invoke the method. Each button contains the number of questions on the student's quiz that would be affected by clicking the button and buttons will not show if they would not make any changes to the quiz. Buttons are disabled after being run, but left visible on the screen so that you can see how many questions were affected. Any of these methods can be configured to automatically execute once the quiz has loaded.

  • Can regrade Multiple-Answers questions, which are also known as multiple-select questions, using different approaches than Canvas. Only one of the following can be enabled at a time.
    • All or Nothing provides the ability to grade questions without any partial credit – all of the parts must be correct to receive any points.
    • Partial Credit based off the percentage of items that are correctly answered. An item is correctly answered when the student selects a correct response or does not select an incorrect response.
    • The Difference between the number of items correctly answered and the number of items incorrectly answered. This is sometimes called right minus wrong method. It invokes a penalty for guessing, like the Canvas-native approach method does, but bases it on whether a response is correctly answered and considers all items, not just those that are selected.
  • Can regrade Fill-in-Multiple-Blanks questions using the All or Nothing technique of no partial credit. Canvas currently grades these questions based on the percentage of items that are correctly answered.
  • Can regrade Multiple-Dropdowns questions using the All or Nothing technique of no partial credit. Canvas currently grades these questions based on the percentage of items that are correctly answered.
  • Can assign zero points to any unanswered Essay or File Upload quiz questions. Although this was listed as a speed enhancement, it still changes the default grading of Canvas and so it is listed here as well.
  • Can assign full points to any answered, but ungraded, Essay or File Upload quiz questions. This is another speed enhancement that provides an alternative to the Canvas default and is invoked via a button.

Videos

QuizWiz Introduction

This video demonstrates how Avi Naiman used QuizWiz to reduce grading time on mathematics homework by 75%. Grading a typical student's quiz submission went from 22 clicks in SpeedGrader to 5 clicks in QuizWiz. Like many math teachers, he takes points off rather than adding points up. By assigning full points to all essay questions, he can skip the majority of the questions and then only click on the ones that missed points.

The video also illustrates many of the problems with SpeedGrader: the Additional Comments box is small and often needs to be expanded; the points for a question are only at the top so you have to scroll back and forth with long essay questions to grade; assigning a 0 requires two clicks, one up and one down; essay and file upload questions must be manually graded, even if they are unanswered.

He had QuizWiz automatically assign 0's to unanswered questions and full points to the answered essay questions. He also enabled the automatic expansion of comment boxes, and duplicated the question headers at the bottom of the question to minimize scrolling. The advance to next student upon updating scores was not available at the time he used it in his classes.

Canvancement Installation

This video shows how to install a Canvancement, including how to install a script manager like Greasemonkey or Tampermonkey if you have not already done so. Once your script manager is installed, it shows how to install and edit a script as well.

Note that QuizWiz requires you to select a flavor based on your desired usage whereas many of the Canvancements only have a single script.

This video is for Safari on a Mac, but the process is similar for Windows.

QuizWiz Regrading Methods

This video explains how Multiple-Answers questions are graded in Canvas and then how they would be graded using the All or Nothing approach and the Partial Credit based on the percentage of correct responses method.

The video also mentions the all or nothing approach for Fill-in-Multiple-Blanks and Multiple-Dropdowns questions.

Regrading Methods

There are several methods of regrading that are available with QuizWiz. It is important that you understand how the process works before you use them.

Canvas does not know about QuizWiz – QuizWiz knows about Canvas.

Canvas is going to do what Canvas does. Quizzes will be scored the way they normally are. When Quizzes 2.0 become available you may have more options available to you. QuizWiz is something that you can use while you wait on changes to happen to Canvas.

If you choose one of the regrade methods that changes how grades are calculated, then you need to let your students know that their grades are subject to change or they will think that the grade Canvas gives them will be the grade they get.


If you regrade a question using Canvas, it may override changes that you made using QuizWiz and you may need to reapply QuizWiz.

No grading changes in QuizWiz are saved until you click Update Scores.

But there is also no easy way to undo what it does once it has done it. There is no "Regrade the Canvas Way" button. You might want to play around in your test or beta instance before using it in production.

You must make the updates to each student, there is no bulk "apply to entire class" option.

When Avi Naiman first approached me, my first idea was to write a script that would just automatically do what he wanted for every student in the class. As we fleshed things out, we decided it would be better to incorporate it directly within SpeedGrader so that the grader could see what was happening.

However, if you want to grade the entire class using the All or Nothing approach for multiple-answers questions, then you can make that method automatic in the configuration file and then use the update scores and advance to next student button and then it's only one click per student. Maybe not ideal, especially if you have 1000 students in a class, but much faster than the current method of manually regrading each question.

Buttons only appear when they would make changes.

This allows you to see what is going to happen before it happens. The buttons are also labeled with badges that show how many quiz questions will be affected.

Using the buttons will change every quiz question affected by that method. If you only want to grade, for example, question 5 using a different method, you'll still need to do that manually, but you can take advantage of other features like update scores and advance to next student.

Regrade methods may be disabled, enabled, or autorun.

You choose how you want it to work. Conflicting methods, like grading Multiple-Answers questions All or Nothing and also Partial Credit cannot be used at the same time.

Feature Descriptions, Rationales, and Use Cases

Show counts on buttons

This will show you how many quiz questions will be affected by clicking the button. Once you click the button, the button becomes disabled, but the count remains so you can tell how many quiz questions were affected.

Button Count

You'll never see a badge with a 0 on it – the button just won't show up at all.

Assign 0 points to unanswered essay and file upload questions

Essay and File Upload questions must be manually graded. That sounds like a reasonable expectation, but when a student doesn't even bother to answer the essay question or upload the file, then the grader still needs to enter a 0 for those questions. If the grader is using the mouse, then it requires two clicks of the mouse to change the score to 0.

This regrading method automatically assigns a 0 to essay and file upload questions that do not have an answer and have not yet been graded. If, for some reason, the instructor decides that a non-answer should be worth 5 points, QuizWiz will honor that decision.

Since most people who have essay questions don't award points for blank answers, automatically assigning 0's for them speeds up the process.

This button will be labeled "Unanswered" when it is available.

Assign full points to answered essay and file upload questions

Essay and File Upload questions must be manually graded. Some professors like to assume that the questions are correct and then deduct points as needed. This regrading method automatically assigns full points to essay and file upload questions that have been answered but not yet graded. Once there is a score for an essay or file upload question, then QuizWiz will honor that grade.

This method allows graders to deduct points quickly for incorrect answers and skip questions that would get the full points. Many professors grade this way - by subtracting points when the answers are incorrect, rather than adding points when the answers are correct.

This button will be labeled "Full Points" when it is available.

Multiple-Answers All or Nothing

Multiple-Answers or multiple-select questions are normally graded in Canvas by dividing the points for the question by the number of correct items and then awarding points when a correct item is selected and deducting points when an incorrect item is selected. See Understanding Multiple Answers Questions for more information.

Sometimes it is desirable to grade these questions using an all or nothing without partial credit. This feature will go through and automatically assign 0 points to any question that did not select all of the correct items or did select any of the incorrect items.

Certain national licensing exams are based this way and instructors currently have to go through and manually regrade the quizzes or find other ways to ask the questions.

This button will be labeled "MA All/None" when it is available.

Multiple-Answers Partial Credit based on the percentage of correctly answered responses

This grades Multiple-Answers questions based on the number of items that are correctly answered. This essentially turns a Multiple-Answers question into a set of true-false or yes-no questions. The student is awarded points for selecting a correct item and for not selecting an incorrect item. Each item's point value is found by dividing the total points for the question by the number of possible responses.

This is a very popular method of grading. If the student correctly chooses 80% of the responses, then they get 80% of the points. One often-overlooked issue of this method is that students are awarded points even if they skip answering the question.

This button will be labeled "MA Correct" when it is available.

Multiple-Answers Difference between correctly answered and incorrectly answered responses

This approach, sometimes called "right minus wrong", scores Multiple-Answers questions by taking the number of correctly answered items and subtracting the number of incorrectly answered items. Each item's point value is found by dividing the total points for the question by the number of possible responses.

I can't provide a direct use-case for this one, but it invokes a penalty for answering incorrectly, so it is less likely that a student would get points for leaving a question blank. It was available in other learning management systems, which means that some people probably use it, and it was easy to add.

This button will be labeled "MA Difference" when it is available.

Fill-in-Multiple-Blanks

This method grades Fill-in-Multiple-Blanks questions as an all or nothing approach without partial credit. Canvas currently awards partial credit based on the percent of items that people have correctly answered.

I have never seen a request for this in the Community, so there may not be much demand for this. But it seemed logical that if someone wanted to grade Multiple-Answers as all or nothing, that they might want to do the same thing for fill in the blanks questions.

This button will be labeled "Fill in Blanks" when it is available.

Multiple-Dropdowns

This method grades Multiple-Dropdown questions using an all or nothing approach without partial credit. Canvas currently awards partial credit based on the percent of items that people have correctly answered.

I have never seen a request for this in the Community, so there may not be much demand for this. But it seemed logical that if someone wanted to grade Multiple-Answers as all or nothing, that they might want to do the same thing for fill in the blanks questions.

This button will be labeled "Dropdowns" when it is available.

Duplicating the footer at the top

When grading quizzes, there is currently a footer at the bottom that allows you to adjust the fudge points, shows the final scores, and then allows you to update the scores.

Quiz Footer

People complained about having to scroll all the way to the bottom of the question to make these adjustments. This feature duplicates the information at the top of the quiz so that you don't have to scroll to see the information or make the changes.

Quiz Custom Top Footer

This feature is currently the only one that is not configurable. If you use QuizWiz, you get this. Note that if you are using the Grade by Question feature, that the footer remains on the screen at all times and so it is not needlessly duplicated at the top.

Duplicating the Question Header at the bottom

The top of each question has the question number and the points awarded for that question. This feature duplicates that header at the bottom of the question.

Duplicating Question Header

Without this feature, in long essay questions, instructors have to scroll back to the top to award points and then scroll back past the answer to move to the next question. This feature minimizes scrolling.

If you're interested in showing the question name after the question number, then install the Show Question Names script as well (click on the Raw button once you go to that page).

Automatically expand the additional comments box

The Additional Comments box is quite tiny and people often have to expand it. This feature will automatically expand the box when you start typing in it and shrink it back down if you delete the comment. It will also automatically expand if you paste the clipboard contents into the box.

Auto Expand Additional Comments (gif)

Update Scores and Advance to Next User

Quizzes have an Update Scores button at the bottom. A common complaint when grading quizzes in SpeedGrader was that graders would have to scroll to the bottom to update the scores and then move the mouse back to the top to press the advance to next student triangle.

Canvas has addressed some of those issues with the August 2016 facelift, but all they really did was move the arrow from the left side to the right side at the top. The Update Scores button is still at the bottom and the next user is still at the top.

Many people probably felt they also had to wait for the quiz to fully load before clicking the Next student button. While technically not true, if you click it too quickly, then the scores aren't updated and if you return to that student, then it kept the original score in the grade box, causing concern about whether or not the change had been made. Those who noticed this probably consciously decided to slow down until the grade had changed, which took some of the speed out of SpeedGrader. For those who wondered, the grade was actually changed when this happened, it just wasn't reflected in SpeedGrader until you reloaded SpeedGrader.

This feature adds an update scores and advance to the next user button next to the Update Scores button. Of course, it does this at both the bottom and the top.

Update Scores

If you press the Update Scores button, then it will update the scores and remain on the current student as is the current behavior.

If you press the right arrow button, then it will first update the scores, wait long enough for the changes to be made to the grade in the right panel, and then advance to the next user. This means that if you return to this student, you will see the correct grade in the right panel.

This feature only applies to quizzes when viewed from within SpeedGrader. Discussions and Assignments don't have an Update Scores button and there is no concept of Next student from the Quiz Moderation page.

Submit Comment and Advance to Next User

There is an Assignment Comments box in the right panel of SpeedGrader. There is a  Submit button next to it that will submit your comments and leave you on the page to continue grading.

If submitting the comment is the last thing you need to do, then you have to go click on the Next student button in the top navigation bar. Luckily, submitting a comment doesn't affect the score, which requires a quiz or assignment to reload, so the delay is minimal, but it's still extra mouse movement.

This feature adds a submit comments and advance to the next user button. This button is available whenever SpeedGrader is: assignments, discussions, or quizzes.

Assignment Comments

Clicking the right arrow next to the Submit button will submit the comment, wait for it to show in the comment panel, and then advance. If you press the button when there is no comment, then it just moves to the next student.

Save Rubric and Advance to Next User

If your assignment, discussion, or quiz has a rubric assigned to it, then there will be a View Rubric button in the right panel of SpeedGrader. Clicking this button will open up the rubric where you can make your changes and click Save. If the rubric is used for grading, then saving the rubric forces the user to wait while the page is reloaded on the left.

This feature adds a Save a rubric and advance to the next user button.

Save Rubric and Advance

Clicking the Save button will save the rubric and leave you on the current user so that you can perform additional grading like leaving a comment.

Clicking the right arrow next to the Save button will save the rubric and wait for any changes to be reflected in the grade and then advance to the next user.

Automatically expand a rubric when advancing to the next student

Many people use rubrics in SpeedGrader to grade the assignment without leaving comments. The flow process is normally to 1) click on View Rubric, 2) complete the rubric, 3) click Save, 4) wait while the page reloads, 5) move to the top and click the next student button. This five-step process is repeated for each student.

This feature will automatically expand the rubric when using the save rubric and advance to next user button. When both of these options are enabled, the process the first time is 1) click on View Rubric, 2) complete the rubric, 3) click Save and Advance. For the students after that, it's just 1) complete the rubric, 2) click Save and Advance.

It was a conscious decision to have the rubric automatically open only when clicking on the save rubric and advance to next user button. It would be possible to have the rubric automatically open anytime the SpeedGrader was loaded or the user was advanced; however, as the rubric hides the grade, it would take extra steps to close the window to see what the grade was.

Installation

QuizWiz has been tested on Firefox, Chrome, and Safari.

Installation instructions can be found on the QuizWiz Canvancement site. The quick install is

  1. Install a browser add-on: Greasemonkey for Firefox or Tampermonkey for Chrome/Safari.
  2. Choose one of the QuizWiz Installation Scripts. Do not install more than one script.

Normally, the link in step 2 of the Quick Install directions will install the script for you. However, this time there are multiple varieties of QuizWiz from which to choose. Listed below are short descriptions; clicking on one of these links will install the script after you've completed step 1. Do not install more than one script.

Features common to all of these scripts include enabling the automatic expansion of the comment box, duplicating the question headers, and duplicating the footer at the top when not using Grade by Question. Do not install more than one script, regardless of the type. Instead, find the one closest to what you want and then edit the configuration (see the second video).

Scripts that focus on speed enhancements

All of these scripts enable the automatic expansion of the comment box, duplicate the question headers, and duplicate the footer at the top when not using Grade by Question. Do not install more than one script, regardless of the type. Instead, find the one closest to what you want and then edit the configuration (see the second video).

  • Speed enhancements only contains just the common features listed above.
  • Auto Advance includes the common features and adds the advance to next users buttons, but does not automatically show the rubrics on advance.
  • Math Whiz is the configuration used by Avi Naiman in the first video. It takes the common features and adds automatically assigning 0 points to unanswered questions and full points to answered essay and file-upload questions.
  • Rubrics is a configuration that may be useful for those who grade with rubrics. It includes the common features, the advance to next user buttons, and automatically opens the rubrics when you advance via the save rubric and advance to next user button. It also includes automatically assigning 0 points to unanswered essay questions.

Scripts that focus on regrading

All of these scripts enable the automatic expansion of the comment box, duplicate the question headers, and duplicate the footer at the top when not using Grade by Question. Do not install more than one script, regardless of the type. Instead, find the one closest to what you want and then edit the configuration (see the second video).

  • All or Nothing includes those common features and adds buttons for regrading multiple-answers, fill-in-multiple-blanks, and multiple-dropdown questions as all or nothing.
  • Partial Credit includes those common features and adds a button for assigning partial credit based on the percentage of responses correctly answered.

Custom domains and other configuration changes

The scripts run on any pages that look like SpeedGrader or Quiz Moderation pages on Canvas instances, including test and beta, that use .instructure.com as their domain name.

However, if you use a custom domain, like canvas.institution.edu, then you will need to edit the configuration file so that it recognizes your Canvas instance.

If you do not know how to edit a user script, please see the instructions on the Users Scripts page on the Canvancement site.

There are two lines near the top of the script that look like:

// @include     https://*.instructure.com/courses/*/gradebook/speed_grader?*
// @include https://*.instructure.com/courses/*/quizzes/*/history?*

You will need to change *.instructure.com to match your Canvas instance. For example, if your production site is canvas.institution.edu, then you would use:

// @include     https://canvas*.institution.edu/courses/*/gradebook/speed_grader?*
// @include https://canvas*.institution.edu/courses/*/
quizzes/*/history?*

The wildcard character * is necessary if you want to run on your test and beta instances. If you only wish to run on the production site, then you could leave off the *, but I recommend testing this in your test or beta instance.

By they way, the second include line is for the Quiz Moderation page. If you don't want QuizWiz to run there, you can delete that line.

If you would like to modify the installed script to select different features, you may edit the user script and make the changes. The names of the configuration variables have been chosen to somewhat match the feature with perhaps an exception for ma_correct, which is the partial credit based on the percentage of items correctly answered. There are multiple ways that you could give partial credit, so I felt I needed to include a different word.


There are brief instructions on how to edit the configuration file in the file itself. The second video shows editing a Tampermonkey script.

Updating

The scripts that you install basically contain a configuration and then execute the main program. This is similar to an installation profile where you choose the features you want and then install those. You can make changes to the features after it is installed.

The decision here was to manage one version of the code while allowing people to use it as they desire. By separating the configuration from the code, it makes it easier to accomplish this. This approach also allows me to make bug fixes and have them automatically appear on your end while preserving any changes to the configuration that might be lost if I tried to put everything into one file.

The QuizWiz engine is fetched by the installed script when you visit the SpeedGrader page. It only loads the engine once per SpeedGrader session.

The good news is that you probably won't have to do anything to make sure you're running the latest version of the code. If new features are added, you might need to edit the configuration settings or reinstall the script to obtain them, but I'm going to try to keep those breaking changes to a minimum in order to preserve your configuration.

Multiple Versions

There may be a need for multiple versions of QuizWiz. For instance, you may want to grade multiple-answers questions as all or nothing in one course but partial credit in another. This is, of course, totally unsupported at this time. There was a period of about two months where development on QuizWiz was stalemated because I was working on a fancy graphical interface that would allow users to choose their default options for a course or even for a quiz. Once we decided to go with coded configurations, the process picked back up and we finally have a release.

You could change the @name and @include lines in the metadata at the top of the configuration and specify that those configurations run only on specific courses. You would need to obtain the Canvas course ID (available in the location bar of your browser).

Script 1: Run in BIOL 101 course – Canvas course id 12345

// @name        QuizWiz : BIOL 101
// @include https://*.instructure.com/courses/12345/gradebook/speed_grader?*
// @include https://*.instructure.com/courses/12345/quizzes/*/
history?*

Script 2: Run in BIOL 201 course – Canvas course id 56789

// @name        QuizWiz : BIOL 201
// @include https://*.instructure.com/courses/56789/gradebook/speed_grader?*
// @include https://*.instructure.com/courses/56789/quizzes/*/
history?*

You can have multiple // @include lines, so if you have multiple courses that need the same configuration, just add extra lines to include those courses. The second include line is for the Quiz Moderation page. If you don't want QuizWiz to run there, you can delete that line.

Another solution is to use one browser for one configuration and a different browser for another. You could also use two separate computers like a desktop and a laptop or the home computer and the office computer.

References

The original intent was to have a system that would speed up the process of manually grading mathematics homework by reducing the number of clicks needed in SpeedGrader. From there, it grew to include some other requests that had been made in the Community.

Canvas marked many of the advance to next user requests as deployed with the 2016-08-06 production release, referred to as SpeedGrader 1.25 in Canvas Studio: Speedgrader™ Facelift, but that was just a layout redesign of SpeedGrader and doesn't actually advance to the next user.

137 Comments
dhulsey
Community Champion

Hey,  @kona . I am using the rubric version of Quiz Wiz "out of the box" with no modifications on my part in Chrome: 

220401_pastedImage_1.png

dhulsey
Community Champion

So, I just kept on grading and the QuizWiz buttons came back without me doing anything else. Weird. Sorry for the false alarm. Smiley Happy 

kona
Community Coach
Community Coach

Whew! I use the rubric one as well! What a time saver and I honestly forget sometimes that it's not actually part of Canvas!

dhulsey
Community Champion

Right? That is why I was panicky when it didn't work. I felty like I didn't know where to click to get my grading done. I hope Instructure does build these features into Speedgrader at some point.

James
Community Champion
Author

I love problems that resolve themselves before I'm even aware they're problems.

My guess is that there were network issues pulling the engine down from the cloud hosting. As some of us saw a couple of weeks ago, there can be blips even with the cloud hosting. My guess is that it's the app that checks for the latest version of the engine and then redirects to the actual location.The whole content delivery network (CDN) thing was kind of new experience for me and I had problems with it working right when I first tested it out.

scottdennis
Instructure
Instructure

Just a reminder that the shift from requirejs to webpack goes live with this coming release.

James
Community Champion
Author

I just discovered that there is now an issue with using the "Submit comment and advance" button not actually submitting. I had left comments to some of my students just to find out that they never got them. When I went back and looked, Canvas had saved the comment, which is what happens when you move off the page without saving. I double checked to see if it was a QuizWiz issue and sure enough, it was. I will try to get this fixed as soon as I can, but I wanted people to be aware of it. After further testing, I determined that Canvas sometimes does not submit the submission comment even when QuizWiz is disabled. I have adjusted QuizWiz to not advance to the next user if Canvas does not actually submit the comment but places it in draft mode instead. I suppose I could have had it click the submit button that shows up on the draft mode, but that is programming around a bug in Canvas and Avi and I decided early on QuizWiz was an enhancement and that we would not try to fix broken behavior with it. If the submission comment goes through, then it advances to the next user like it used to do.

Note that if you're using Firefox 57 and Greasemonkey, then you will need to use an alternative user script manager or browser as that combination will no longer install, update, or allow you to create user scripts. There are additional security restrictions placed on them so that they cannot access environment variables or JavaScript libraries loaded by the page (like jQuery) and the interface isn't as robust as the previous version of Greasemonkey was. I recommend switching to Tampermonkey for those still using Greasemonkey. I've left more information on the Canvancements - Canvas Enhancements ‌ page.

dhulsey
Community Champion

 @James ‌, Quizwiz suddenly seems to have stopped working for me today. I am using Chrome 65. I checked for updates to Quizwiz in TamperMonkey, checked for Chrome updates, restarted my browser and then I restarted my laptop. Is there any thing else I can try?  

jlmasters
Community Participant

The exact same thing happened to me! It was working for me last night and then today it stopped. I have tried uninstalling/reinstalling/etc. I am desperate for help with this- midterm grading will take me twice as long without Quizwiz!! 

It appears that perhaps Chrome isn't supporting it because it's not an extension available in their store, but I'm not sure if that is the problem or not.

I hope someone can help.

jlmasters
Community Participant

Update: as of this morning, it is back up and working again!! THANK GOODNESS!!! Dallas- I hope you have similar luck??

dhulsey
Community Champion

 @jlmasters ‌, yes, I just came here to say that QuizWiz is functioning this morning. I am glad, but I am curious about what happened as well.

James
Community Champion
Author

I love problems that fix themselves. I just now got these messages, so it's hard to go back and check what happened, but I didn't change anything on my end, so it's likely an issue with the content delivery systems failing to deliver the QuizWiz engine. It could have been a DNS resolution problem or a snafu with the CDN themselves.

jlmasters
Community Participant

Thanks so much for the response, James. And for building (and maintaining!) such a fantastic set of resources. They honestly make my life better every single day. Smiley Happy

glenaz
Community Novice

Hi  @James ‌ - I just discovered your amazing tool and it already has saved me lots of time.  The feature I enjoy the most is expanding the "Additional Comments" box (silly why Canvas doesn't have a setting for this where you can set a default option for the size of the box) and the "Update Points" duplicated at the bottom of questions.

I am using a Surface Pro 4, and one thing I did notice, however, is that when I am using the Surface in a tablet mode (i.e., travelling on a plane or train and trying to grade exams), and I am using a different "on-screen" keyboard other than the standard one, the Additional Comments box doesn't automatically expand.  For example, I am using the new Windows 10 Swipe keyboard or Handwriting keyboard (which are both pretty impressive), when the words are appearing in the Additional Comment Box, it doesn't expand.

I'm curious as to what the trigger is in your javascript to resize the comment box, and if it can be updated to allow these two other keyboard options?  Any thoughts or suggestions would be helpful  (or if there is even a way to just automatically expand the additional comments for essay questions whenever the SpeedGrader is opened?)

Thanks in advance,

Jerry

James
Community Champion
Author

It looks for input and paste events inside the textfield. Here is a link to that section of the code on GitHub. I'm not sure what the on-screen-keyboard does, but if someone knows what event is triggered, please let me know.

There's another bug I need to fix it in anyway.

James
Community Champion
Author

As of June 9, 2019, the content delivery system I'm using to deliver the QuizWiz engine is having an SSL certificate problem and so QuizWiz isn't getting the code needed to run. When it gets it, QuizWiz still works. I'm hoping that they resolve their certificate issue and things will go back to working. If they don't get it updated within a couple of days, I will find a new way to host the engine or rethink keeping the engine separate so I only have to update it once.

In the meantime, I do have a working location, but I haven't had time to make sure it's stable and the correct way to do things (as opposed to a hack someone shared) so I don't want to publish it in the source code. Direct message me if you need QuizWiz and can't wait a couple of days.

Beth_Young
Community Contributor

Whew! I can wait a couple of days, but it is great to get this update. Thanks! 

James
Community Champion
Author

As of June 11, 2019, the issue with SSL certificate has been resolved and QuizWiz should be working again.

glenaz
Community Novice

 @James ‌ I've noticed I'm not able to get QuizWiz running again.  There is an error notification in the plug-in icon, and when looking at the code, there are two errors identified.

$.ajax({   New Error here states: '$' is not defined
'url' : 'https://gitcdn.link/repo/jamesjonesmath/canvancement/master/quizzes/quizwiz/src/qw-engine.js',
'dataType' : 'script',
'cache' : true,
'success' : function() {
QuizWiz(config); New Error here states 'QuizWiz is not defined'
}

I've tried reloading the TamperMonkey plug-in, refreshing browser, etc, but still seeing an error and QuizWiz doesn't work.  Any suggestions on what else to try would be appreciated. 

Thanks in advance,

Jerry

James
Community Champion
Author

 @glenaz ,

Someone else wrote me earlier today about it not working. I wonder if they're seeing the same thing that you are. It worked fine when I tested it, but that was about 7 hours after he wrote the message. It's still working for me now (1.5 after that and 5 minutes after you wrote your message). I don't suppose that it works if you reload the page, does it?

$ is jQuery and Canvas promises us it will be available when the document is ready. If the $ isn't available, as the first error says, then it shouldn't be executing the success function to get to the QuizWiz(config). That's confusing me.

Since I'm not experiencing the problem, it's hard for me to debug, so I'll have to ask a bunch of questions and hopefully that will help me narrow down what's going on.

Can you open up the developer tools for the browser (F12), switch to the console tab, and reload the page. Look for the error there. If it happens, start to type $.ajax and see if the browser tries to autocomplete it. If the autocomplete doesn't work, then try typing in jQuery and see if it recognizes it.

I think I recall a change in Tampermonkey earlier that required I re-grant permissions. Do you remember doing this or is there an option to do it? When you said you reloaded the TamperMonkey plugin, do you mean you removed Tampermonkey itself (not just the script) and reinstalled it?

What operating system are you using (Mac, Windows, Linux) and do you have the latest version of Chrome. I'm testing with Chrome on a PC, but if you're using a Mac, I might need to switch to a different machine to test.

If it really turns out to be that $ isn't defined, is your school running any custom JavaScript? Do you have a really fast (or really slow) connection to Canvas? Are there any other error messages in the browser's console?

michellez
Community Contributor

 @avi_naiman ‌ and  @James ‌ - Thanks! This is great.  I love the Speedgrader so all I'm always happy to see updates! Nice work!

olsonhum
Community Member

Hello  @James  and  @avi_naiman ,

Regarding the partial credit grading option: This is truly astonishing - you two have gone to all of this trouble to get Canvas to do something D2L lets you choose with a radio button... Our university is currently switching from D2L to Canvas, and the list of the times I ask "Why?!" is growing very quickly. But enough about that...

Although I do a lot of programming (I'm a statistician), I'm not familiar with the script in this exact instance, and thus I have a question about "autorun". I see in your documentation and videos, you talk a lot about pressing a button to re-grade questions for students for whom it would make a difference (again, to regrade using the partial credit option). I'm thus wondering if I change

'ma_correct' : 'enabled',

to

'ma_correct' : 'autorun',

in the Partial Credit script, does this mean Canvas will literally automatically grade multiple answer questions in this partial credit format, without me having to click a button?

The reason this is especially of interest to me is because in one of my courses (Intro Stat), I let students have two attempts at a given quiz, and they can see their answers and score after each attempt. The quiz questions are written such that they can be auto-graded (their answer has to match mine exactly), giving the students feedback before their second attempt. I would like the first attempt (well, and the second, obviously) to be graded using your partial credit method, so the students "accurately" (from my viewpoint on partial credit) see their scores before their second attempt. Basically, I want to override Canvas's grading of multiple answer questions altogether, and automatically employ your partial credit method.

Please let me know if I'm interpreting "autorun" correctly. And thank you for doing all of this work that Canvas really should be doing (or paying you to do...).

James
Community Champion
Author

 @olsonhum ,

Thank you for the kind words.

It sounds like you understand autorun correctly. It places a button at the top of the page, like enabled does, but then it goes ahead and clicks it for you so that you do not have to.

Together, with the "Update and Advance" button, you can literally sit there and go through all students for an entire assignment and put your mouse over the click the "Update and Advance" button. When the next student comes up and is adjusted, just click again with out moving your mouse. The difference between enabled and autorun is that it would take two mouse clicks (and mouse movement) to accomplish the same thing with just enabled.

I know I could have automated it to do an entire class at one time, but it was more useful if faculty get the chance to see what the student responses are, which meant doing it within SpeedGrader instead of as a separate, external, program.

olsonhum
Community Member

Thank you for your timely response,  @James ‌. This sounds promising - looking forward to using it. Thanks again for your work on Canvas!

James
Community Champion
Author

October 24, 2019 Update

We're seeing errors that $ is undefined when QuizWiz tries to run. $ is jQuery and it's been one of those things that Canvas has said will always be there.

The October 23, 2019 deploy notes mention that changes were made to ensure the $ is available for custom JavaScript. That sounds good, but user scripts are getting loaded through a user script manager and are getting called before the custom JavaScript would get loaded. In other words, for the user scripts, the $ may not be available yet and they were written assuming that it would be there.

In short, people who are using jQuery (the $ variable) for custom user scripts need to wait for $ to become available or use pure JavaScript instead of jQuery. It's possible that Canvas will restore this, but the engineers frown on using custom JavaScript in the first place, so I wouldn't count on it.

QuizWiz is a script that I use regularly, so it will be one of the first ones I get fixed. However, there are several scripts I've written that still use jQuery and I'm backlogged at work right now, so I cannot give a time estimate.

James
Community Champion
Author

October 24, 2019 Update (part 2)

I've updated the QuizWiz installation code so that it does not use the jQuery.getScript() function, but rather creates a script element and appends it directly to the document head. It should be working after your scripts get updated.

I also created a standalone version of the script that includes the source code of the engine and the config all in a single file. When I originally wrote this, I didn't want to maintain separate files, but I did internally for testing purposes. Since there have been a couple of cases where the content delivery network (CDN) has had issues, people who install this one would be able to use it, even with the CDN isn't delivering the right content. I think I now know enough about Tampermonkey and the way that it does updates that it should be okay and just prompt you for the changes in the code.

jborbon
Community Explorer

Hello  @avi_naiman  and @James Jones is this a script that can be applied Campuswide in GSuite as an admin? Is there a way to pushout Tampermonkey with scripts installed? 

My concern is sending directions for instructors to install on their own and do so incorrectly.

James
Community Champion
Author

 @jborbon  

When I write things, I try to make them so that they can be used both as a standalone userscript or in the custom global JavaScript for an institution. I test them as userscripts, I do not test them as global Javascript includes. I do believe someone said they were using it globally. If you do that, then you do not need to install it on each person's computer. You may want to minimize it if you do this as it gets loaded with every page load for every user (not just teachers). With user scripts, the script is stored on the local computer so it's not as important to compress it. It does load code remotely, but only when someone is in SpeedGrader, which keeps students from loading it unnecessarily.

As far as the technical issues with GSuite or pushing out Tampermonkey with scripts installed, I do not have any experience with either one of those. Some people have suggested that if you convert your script into a Chrome extension that you can automate the process. I have no personal experience doing that, either, but it was a thrown out as a possible workaround in late 2018/early 2019 when Chrome threatened to make changes that would render Tampermonkey unusable.

I've not heard much in the way of people having trouble installing the scripts. If you send your faculty an email with a link to Tampermonkey and a link to the script on GitHub, it's really pretty simple. If your Canvas instance doesn't use *.instructure.com, then you would want to make your own version available that runs out of the box. The biggest issue with this script is that there are so many options; most of my others don't have that many choices. I didn't want people to have to edit the code, so I made multiple installs available, but if you pick the one you want them to use, it's fairly straightforward.

julie_mccarty
Community Explorer

Hi 
So I have used QuizWiz with Tampermonkey no problems for a few years now, but now the script is showing that 

    QuizWiz(config);    has the error "undefined"

This is the script that contains the error

  if (typeof QuizWiz !== 'function') {

    const script = document.createElement('script');

    script.src='https://gitcdn.link/repo/jamesjonesmath/canvancement/master/quizzes/quizwiz/src/qw-engine.js';

    script.onload = function() {

      QuizWiz(config);

    };

    document.head.appendChild(script);

  }

  else {

    QuizWiz(config);

  }

 

})();



I have tried reinstalling Tampermonkey and reinstalling the script to no avail.

Helpppppp?

Ron_Bowman
Community Champion

@James 

I am going to post this question here about the comment box in QuizWiz.

I really like the auto-expand feature of the comment box;  However, I was wondering if there was a way to also have it expand vertically automatically once you have entered more lines than it can show? Or by default have it double it height when a comment is typed in - such that once someone types it not only expands horizontally, but also adds a little more height to the box.

By the way, I really liked the information regarding the QuizWiz features that this conversation starts with.  I have created a document for giving out to other faculty that lists some of the canvancements that I like and I like being able to put in links such as the one here for more in depth information.

 

James
Community Champion
Author

Canvas uses a textarea element for the comments, which it seems cannot autogrow. The hack to get it to autogrow would likely break the ability to enter comments.

You could modify the height CSS attribute on the element with id=question_comment_1234  (1234 is the question number) and set it to double height once someone starts typing in it. You could possibly use a Mutation Observer or other event to watch the box to see if you are on the last line. I'm not sure that would work. When Canvas autogrows stuff, it often behaves badly. Right now, when I type a message to a student, I get a flashing border (alternating between top/bottom and sides) with every keystroke or the screen jerks.

I'm not a big fan of taking up more space vertically. The horizontal space was a no-brainer to me since it wasn't being used by anything else. But I tend to write a lot when I leave comments and I don't want to have to scroll through all that to find the next question.

Ron_Bowman
Community Champion

@James 

Thanks for the reply.  I was just curious.  Not being able to work any with the script - or knowing how to, I just thought it would be possible to expand the height some as well.  I tend to run out of vertical space and wanted a little more vertical space.

I created my own copy of your canvancement page in github and thought I modified the wrapper file to run my version of the Quiz-Wiz engine, but it does not work.

 

James
Community Champion
Author

@Ron_Bowman 

Ron, start with the stand-alone version of QuizWiz. Then you can install it inside Tampermonkey and not even have to fetch it over the internet each time it runs.

James
Community Champion
Author

The site that hosts the QuizWiz engine code is having SSL issues on 2021-03-28. The name on the installed certificate does not match the name on the website. I use a free CDN hosting site and so I have to wait for them to resolve the issue. In the past, issues have been resolved within a couple of days.

If you absolutely cannot survive until the issue resolves itself, you can install the StandAlone version and then modify the configuration section to match your settings. The StandAlone version is the same as the Rubrics version, but you may need to modify the include line at the top if your Canvas URL does not use instructure.com.

If you install the standalone version, be sure to disable or uninstall the currently installed version so they are both not trying to run at the same time.

The non-standalone versions were convenience packages so that I didn't have to maintain the source code in multiple files when only a few lines changed, but it does have an occasional network glitch every couple of years.

James
Community Champion
Author

After two days of the gitcdn.link site being down, I switched over to using Amazon's S3 storage for the qw-engine.js file. That should be more reliable. I could have used the Amazon CloudFront CDN, but I don't even know how many people are using it, so that seemed like a bit much for right now.

If it gets to be too much traffic, then I will start putting the code in each version of the script instead of loading it across the network. That will make it faster to use as well as it won't have to download the engine each time you load QuizWiz. This is essentially what the standalone version does and I would recommend that version for people who are comfortable editing the code to make their own configuration.

TamperMonkey should automatically update the file at some point (the default is to check once a day), but you may be able to speed up the process by going to the Tampermonkey menu and choosing Check for userscript updates.

dhulsey
Community Champion

I came here because QuizWiz was not working, but forcing the update worked. Thanks, @James ! I felt lost for a minute when it was not working!

James
Community Champion
Author

@dhulsey 

Dallas, thanks for confirming that the force update works as I wasn't able to get it to work on my local version. It's also good to know that people are still finding it useful after all these years.

LindsayAbraham
Community Explorer

This is amazing! Thank you so much for coding this!

Does anyone know of a fix for allowing partial credit in matching questions in New Quizzes? Or being able to assign total points to Classic Quizzes without playing around with points for individual questions? We have teachers at my institution who want both capabilities in one quiz. 

Ron_Bowman
Community Champion

@LindsayAbraham 

I can't help with the first question.

For the second question can you elaborate on what you mean by the question?  I do not understand what you are asking.

 

James
Community Champion
Author

@LindsayAbraham 

QuizWiz does not support New Quizzes, so it cannot be used to assign partial credit for matching questions. I recommend engaging in the idea conversation New Quizzes: Partial Credit for Matching Questions.

Like Ron, I'm not quite sure what you mean on the second question, so I might be answering a question that wasn't asked.

In Classic Quizzes, you can use the Fudge Points to set the total number of points without messing with points on individual questions. Note that the fudge points is in addition to the score they already have, so if it is a 10 point quiz and they have 7 points and you want them to have 9, then you would use 2 fudge points. The Fudge points are at the bottom of the quiz, although QuizWiz can duplicate the functionality at the top.

The other way to set the total grade for a quiz is to go into the Gradebook and just type in the score that you want. When you do this, Canvas will automatically do the subtraction and set the fudge points for you.

Ron_Bowman
Community Champion

@james -

with your last comment about setting the score in the grade book, would that same effect occur if you used the set default grade and told it to overwrite existing grades?  That way you enter in the score you want and all students get that score (which is what I am thinking @LindsayAbraham wants) and you only have to do it once instead of individually for all students.

Ron

LindsayAbraham
Community Explorer

Re: Grading with Rubrics - Please allow me to "hide" the scores 

Thank you for the quick, thoughtful comments!

By "assign total points to Classic Quizzes," I mean to set the total value of the quiz to a certain number of points (like 20), regardless of how many questions there are and what the individual questions are worth. New Quizzes has a little box at the top of the quiz creation page to assign a point value (and this is what I want in Classic Quizzes). For example, I may want my daily quizzes to always be out of 20 points, but the number of questions each day to vary, and I don't want to do the math to change the value of each individual question from day to day. 

I hope that clarifies!

 

Ron_Bowman
Community Champion

@LindsayAbraham 

Thanks for the clarification.  I understand perfectly now.  As far as I know there is no way to do that in classic quizzes.  The classic quiz grade is based on the points allocated per question.  The only way I can think of to do what you want would be to create a question group with all the questions in it and then specify to pick all of them and assign them the 20pts/number of questions in the group (you have to do the math for that entry).  Its a kluge, but if James sees this post he may know of a better way.

wallacema
Community Member

Really dumb question, I'm sure, but here it is:

I have added TamperMonkey to Safari and found QuizWiz in GitHub.  However, I don't see a download option to get the script into TamperMonkey.

Any hints?

Thanks!

James
Community Champion
Author

@wallacema 

Provided that Tampermonkey in installed and enabled, then it will automatically recognize the .user.js extension and offer to install it. If you are clicking on the name of the file from GitHub, it is designed to show the source, not deliver the file.

You can either click on the link from the instructions (readme) page [scroll down past the list of files] or click on the Raw link in GitHub when viewing the source.

wallacema
Community Member

@James

It looks like I have the script in TamperMonkey:

 71B58906-8FD8-42C3-860B-9C70D44F6CA6_4_5005_c.jpeg

 


 However, I don't see exactly how to turn this on in Safari:

DC4FDB9C-8E4B-48C6-A24E-DBAEAEC1B054_4_5005_c.jpeg

 

James
Community Champion
Author

@wallacema 

It's hard to tell from the screenshot, but it looks like your Canvas instance has a custom domain (doesn't end in .instructure.com). It looks like canvas.???.edu. The "no script running" further backs that up. You don't need to worry about a wildcard (*), you should just be able to change the *.instructure.com to canvas.???.edu (I can't tell the ??? from the screenshot, but it's part of your domain).

You will need to edit the metadata at the top of the script to change the include lines to match your Canvas instance. Then save the script and reload SpeedGrader. You can edit the script from within Tampermonkey using the line shown in the first screenshot (there's an edit button to the right of what you captured).

wallacema
Community Member

Thanks, @James, but now I'm in way over my head.  Too bad that Canvas hasn't simply made this simple improvement!

LindsayAbraham
Community Explorer

I have been using the partial credit (based on percentage of correctly answered items), but am now wanting to try the partial credit difference (right minus wrong). I don't see the partial credit difference script in GitHub- am I missing it, or is it no longer available? Thank you!!

Ron_Bowman
Community Champion

@LindsayAbraham @James 

Lindsey -

I tagged James on this to make sure that what I tell you is correct - from his information about quiz wiz, I think this is what you are looking for "

  • The Difference between the number of items correctly answered and the number of items incorrectly answered. This is sometimes called right minus wrong method and is similar to Canvas' method except Canvas assigns the points based on the number of correct responses and this method bases it on the total number of available responses.

The way to enable that is to go into the javascript file in Tampermonkey - you will need to edit your current quizwiz file.  near the top are the configuration options like the following:

// Regrading methods may be 'disabled', 'enabled', or 'autorun'
'methods' : {
'unanswered' : 'autorun',
'full_points' : 'disabled',
'ma_allnone' : 'disabled',
'ma_correct' : 'disabled',
'ma_difference' : 'disabled',
'fill_in_blanks' : 'disabled',
'dropdowns' : 'disabled'

What you want to do is change the ma_difference to enabled or autorun

then save the script and go try it out.

Ron