Skip to main content
Projects

Canvas – Bulk Publish

Bulk Publish for Canvas

Teachers on Canvas have been asking for a less labor-intensive way to publish and unpublish their module items. They currently have to click on each item manually and unpublish them one by one, which can be quite time-consuming, especially if there are 50 or more items in the module.

I would also appreciate this. It is quite a long list of assignments that I do not all want to be published when I publish the course.

THE ISSUE

Teachers almost developed carpal tunnel by clicking the Publish icon through their entire list of modules and items. Think clicking this small 32 x 32 icon 200 times. They’re very frustrated that why haven’t Canvas developed an option for them to quickly go through the entire list with a click of a button.

Because the issue has been met with inaction from the Canvas end, some users went great lengths into “hacking” a solution for their own by going into their browser’s console and running a few commands in the terminal.

PROPOSAL

It’s actually quite simple to help these teachers with a quick addition – a few bulk edit options that runs recursively on each module and items.

Together with an engineer, we’ve come up with a simple dropdown menu that provides bulk edit options.

By providing the “Publish All Modules,” “Publish All Modules and Items,” and “Unpublish All” options at both the top level and individual module level, the system now fulfills a long-standing request from teachers.

The “Publish All Modules” option publishes only the modules, leaving the items within untouched. This option allows teachers to give their students a preview of the modules without revealing the associated assignments.

The “Publish All Modules and Items” option publishes everything.

The “Unpublish All” option unpublishes everything.

Since the Bulk Publish option runs recursively in the background and if there’s a large list of items to go through, it will take longer than instantly.

So we needed to add a form of loading indicator and an completion alert when the job is finished.

ERROR STATES & EDGE CASES

Because we’ve introduced a few new screens and user interactions, we now have to consider possible edge cases and error states and to display them correctly to the users.

Edge cases such as:

  • If user closes the browser tab or kill the browser while the job is running.
  • If other concurrent users browse to the module page while the job is running.
  • If concurrent users have the module page idling BEFORE the job starts.
  • If User A has the Progress Modal opened, but User B cancels the job.
  • If User A has the Progress Modal opened, but User B starts the job before User User A does.
  • Some Module Items content cannot be changed.
OTHER APPROACHES

We also considered other approaches for handling bulk edits. The traditional method involves adding multi-select checkboxes and providing dropdown options for bulk actions.

However, we soon realized that this approach would require a significant engineering effort. Additionally, it was less intuitive for our teachers in terms of the placement of the publish/unpublish actions.

This was a short Hackathon Week project. Our project manager was very pleased with the work, and it was quickly released because it had a high impact with relatively low effort. This demonstrated that we genuinely cared for our customers.

Although it wasn’t a revenue-driving feature, it sent a clear message to our customers that we listened to their needs and delivered accordingly.

Great improvement! Love it. Sometimes you want to bring in content from somewhere else, and but might not want the whole module published. Usually when you import, everything is published.