vusaverse / vvcanvas

Canvas lms api functions
https://vusaverse.github.io/vvcanvas/
Other
7 stars 2 forks source link

The possibility of uploading quizzes via vvcanvas? #6

Open nelis73 opened 4 weeks ago

nelis73 commented 4 weeks ago

The possibility of uploading quizzes via vvcanvas?

External material can be imported in Canvas through Settings > Import Course Content. I use this route to manually upload (classic) quizzes, as described below, but doing it by hand takes too much time if there are many quizzes. When looking at the API description of Content Migrations it seems possible to write a function similar to those already existing in vvcanvas for doing this from R's command line.

A description of uploading quizzes by hand

In the menu of Settings > Import Course Content quizzes may be uploaded by selecting a zip-file from a local machine, containing qti-xml tailored for Canvas, choosing as content type either

a. "Canvas course export package" while selecting "All content" or b. "QTI .zip file" while selecting "--Create new question bank--" under "Default question bank".

The possibility of setting quiz options via vvcanvas?

Also, it would be great if due dates, feedback moments etcetera of existing quizzes could be set or adjusted as part of the package because doing it manually is also time-consuming. It also seems feasible given the current features of vvcanvas (see e.g. "show_correct_answers_at" "and due_at" elements in Quizzes API).

nelis73 commented 4 weeks ago

As an example of a quizz that may be uploaded into canvas, see the attached zipfile. NewE2C_4321.zip

tin900 commented 4 weeks ago

Hi @nelis73

On the development version of vvcanvas, I have created the function upload_qti_file_with_migration().

When testing, I found that it uploaded the file you attached and turned it into a quiz. Could you check as well?

nelis73 commented 3 weeks ago

Hi @tin900,

Wow, you are fast! And yes it seems to work!

Thanks so much!

Niels

nelis73 commented 3 weeks ago

Hi @tin900 and @Tomeriko96,

Thanks for this fast follow-up!

For the other feature (setting options) it would be informative if the id (number) of the newly created quiz would be saved as part of the output object, as in:

out <- upload_qti_file_with_migration(...)
set_options_quiz(quiz_id = out$quiz_id, due_at = "2013-01-23T23:59:00-07:00")
tin900 commented 3 weeks ago

Hi @nelis73 ,

I agree that having access to the created quiz ID would be useful. However, none of the responses in the function include any reference to the quiz ID.

I believe the best course of action would be to run get_course_quizzes() before and after running the upload_qti_file_with_migration() function, in order to retrieve the ID of the newly created quiz.

Then we need a function to edit the option of said quiz

tin900 commented 3 weeks ago

Hi @nelis73 ,

I have just pushed a new function update_quiz(). With this function you can update the quiz parameters. As mentioned in the previous comment you could run the upload function between two instances of get_course_quizzes. Afterwards run the new function. I have written a vignette that runs users through this process.

https://vusaverse.github.io/vvcanvas/articles/QTI_quiz.html

nelis73 commented 3 weeks ago

@tin900: Wow, fast again! I will play around with this and let you know my experiences.

Best, Niels