Skip navigation
All Places > Canvas Admins > Blog > 2018 > April
Neal Shebeck

CCSD - Sharing the Love

Posted by Neal Shebeck Apr 11, 2018

I never know when I should be doing a blog post, document, discussion, etc. but this just felt like a blog ( I think ). While the Clark County School District is pretty massive (over 44,000 employees and 318,000 students) our core group of Canvas people is quite small. A majority of management, development, and support comes down to just 3-4 people. We have shared some things in the past like templates for courses and templates for "conference-style" courses in commons but we haven't shared too much code in the past. 


Over the last 2-3 years we have been expanding our hacks of Canvas to try to increase adoption and respond to teacher and student needs. While we have created some very cool things we find that getting feedback from other developers and users is what we're lacking. In an effort to expand our reach for collaboration to other districts and higher ed, we have decided to start sharing more. To that end Robert Carroll has recently posted a couple things to github that we have found helpful. Hopefully you will too.


Create a "Workroom"

We don't let our teachers create courses on their own but we found the need for our teachers to make practice courses for themselves if they were going to leverage Commons, professional development, or just to play around and experiment with Canvas. We managed to do this by:

  • Making sure every employee is a teacher in one "workroom", giving them the teacher role
  • Turning on the ability to create courses for "teachers"
  • Hiding the button to create courses from them
  • Coding a link that creates the additional workrooms for them (and adds them as the teacher)

Check out Robert's post on how we did this.


Sub Account Menu

We have a lot of sub accounts (8,090 and counting). When you're a top level account admin and have more than  even 20 sub accounts, you may find yourself frustrated with navigating to the one you need. This fixes that... big time. Yes, it only helps about 8 people, but speaking as one of those eight people, I love it! Plus, if you save account admin time, that equals quicker support for your users.

See how this was accomplished and get the code for yourself.


When we share something else, I'll be sure to update. In the meantime, hope to see you in the community and at InstructureCon!


---Update (4/26/18)---


Global Nav - Custom Tray

There were several institutions that lost the functionality of some custom "pop out" menus from their global nav after a Canvas recent update. Robert worked on that, (starting with some code he credits in his post), and posted a solution over in the developers area.

The Story

A common frustration of teachers using Canvas at an institution is when their course navigation gets messed up by an admin. A teacher may have been teaching their courses for a couple of weeks and then all of a sudden, their institution adds a new LTI that has a course navigation launch and it messes up their course navigation in all their courses. Then their students start asking about the new LTI and the teacher has to tell them all they aren't using it and hide it in their course settings


However, the story is worse for those instructors who don't know to customize their course navigation. Before you know it, they have a course navigation list that is so long that students have to scroll to see everything on it (see image to right). Core Canvas tools will hide themselves if they aren't being used (light grey items), but not with LTI's. So now those teachers have their students asking about each new tool and wondering why their teachers aren't using it...


Taking Control

Part 1 - Installing New LTIs

As the Canvas admin, you have the ability to decide, when an LTI is installed, whether you want it to be visible or not. Most LTI vendors want to encourage your teachers to use the tool and they enable it by default. A simple edit can help you avoid the above hassle for your teachers, while allowing you to roll the tool out to the teachers who need it.


When installing an LTI tool, the 3rd party provider will generally provide you a URL to configure the tool. If installing the tool from the apps tab in Canvas, the URL's for the installs can be found at the tool's detail page on These URLs should end in .xml which is the format needed to configure an LTI tool. Navigating to these URL's in your browser should take you to a page that looks like this:


<blti:title>Course Wanda Fish</blti:title>
<blti:description>This tool adds a course navigation link to a page on a fish called "Wanda"</blti:description>
<blti:extensions platform="">
  <lticm:property name="tool_id">course_navigation</lticm:property>
  <lticm:property name="privacy_level">anonymous</lticm:property>
  <lticm:options name="course_navigation">
    <lticm:property name="text">Course Wanda Fish</lticm:property>


The trick is to find the <lticm:options name="course_navigation"> part of the xml file so we can customize it a little bit. We just need to add one more line after this and then we can install the LTI by pasting in XML. So here are the instructions:

  1. Copy and paste the XML into a text editor (Notepad for Windows or textEdit for Mac)
  2. Find the <lticm:options name="course_navigation"part of the code
  3. Copy and paste the following code immediately below the course navigation line
    • <lticm:property name="default">disabled</lticm:property>
  4. Follow these instructions to install the LTI via XML
  5. Enjoy the new LTI being hidden by default


Part 2 - Editing Existing LTIs

If you already have LTIs that are visible by default that you'd like to change, you can do that by using the Canvas API. There is a lot to working with the API that I will not go into on this post, but if you have a Mac you already have "cURL" installed by default so you can copy and paste the following code to update your LTI tools. If you have a PC, you can try and follow the instructions here to install cURL on Windows.


You will need to:

  1. Copy and paste the following code snippet to a text editor
    • NOTE: If the tool has other custom navigation parameters they need to be added to avoid breaking some functionality
      • View the existing parameters by viewing the response from step 4
    • curl -X PUT 'https://<canvas>/api/v1/accounts/<account_id>/external_tools/<external_tool_id>' \
             -H "Authorization: Bearer <token>" \
             -F 'course_navigation[default]=disabled'\

             -F 'course_navigation[*CUSTOM PARAMETERS*]=VALUE"

  2. Put your Institution's Canvas URL where <canvas> placeholder is ( or vanity URL)
  3. Put the Account/Sub-Account ID where the <account_id> placeholder is
    • The can be found by navigating to the Account/Sub-account in Canvas and looking at the url. It should be https://<canvas>/accounts/123 with number 123 being the account_id
  4. External tool ID can be found by updating the <school> and <account_id> fields in the url below and then navigating to it in your browser
    • https://<school>/api/v1/accounts/<account_id>/external_tools?per_page=100

    • You may want to download this Chrome Plugin to make the text more organized (similar plugins exist for other browsers)
    • Find the LTI tool you are looking for, the LTI should be a number. eg:

  1. Update the <external_tool_id> placeholder with the LTI id number
  2. Generate an API Token
  3. Replace the <token> placeholder with your new API Token
  4. Copy and paste the edited code snippet into Terminal (on mac) or Command Prompt (on Windows after you install cURL)
  5. Hit Enter and watch the LTI be hidden by default in all courses. 


*Note, your teachers may have to re-enable the LTI tool in their courses to have access. So you may want to send out communication about this change before you do it.

Filter Blog

By date: By tag: