Hiding LTI Links from Course Navigation

BKINNEY
Community Contributor
22
8597

Deactivated user​ requested that I post this here. Honestly, it feels sort of odd to write an entire blog post about a single API endpoint, but here goes.

When installing External Tools (aka Apps, aka LTI tools), especially from commercial publishers, you will often find that the resulting course menu items appear active by default. That's fine, even preferred, when an instructor installs the app in a single course. However, when an admin installs such an app at the account or sub-account level, you generally want it to appear disabled by default. Otherwise it will appear in every course menu in the account, and in most cases, need to be disabled manually. Currently there is no easy way to correct this. Admins can not control the default availability of course links. If, like me, you wish you could, please go vote for Allow account admins to set default course navigation menu.

In the meantime, the only way I know of to disable the links by default is to hit the edit external tool API endpoint:

PUT /api/v1/accounts/:account_id/external_tools/:tool_id?course_navigation[default]=false

Tags (4)
22 Comments
vkg
Community Contributor

We've had success installing LTI apps disabled on courses by default without using APIs.  I use the XML configuration method provided in the app installer -- and since I don't write XML myself use this XML builder​ that includes options for disabling course navigation. 

BKINNEY
Community Contributor

You don't need the API if you own the tool, or if you know how to edit someone else's xml before you install. The problem comes when you've already installed, and you want to change the the configuration without uninstalling and reinstalling. Recently all my PUT requests have been failing, so I've been forced to uninstall and reinstall some apps. This can be very disruptive for users who have already relying on the original app.

harker
Community Member

AMEN  @BKINNEY 

As the Canvas Admin at my U, I find it counter productive to have more hay added to the haystack for students to navigate through. None of these 3rd party systems ever think that it is inconvenient for everyone else that is NOT wanting to use their product. I get their logic with the active action being a move for free advertising, but I still hate it. Not everyone uses the tools, usually it is just a fraction of faculty that do.

I would take this a step farther and say that by DEFAULT ALL of the COURSE TOOLS should be INACTIVE. In this way, only the tools used by faculty will be activated. And even with that thought, to make it friendly to all, have the auto active/inactive as an Administrative setting.

vrs07nl
Community Contributor

inactive by default should extend to group pages too... . see and

harker
Community Member

I agree.

jthoms
Community Novice

 @BKINNEY ​ - this post is so helpful, I bookmarked it the first time I found it, forgot, and managed to rediscover it again. Kudos!!

bgibson
Community Champion

The Course Navigation area needs to be rethought.  There probably needs to be several "instructor re-nameable" holding locations where multiple navigation links can be added (drag-n-drop) so that you don't end up with a long list of course navigation items.  I know you would basically be recreating a folder/files (links) interface, but it is needed.  Maybe have mouseover capabilities for the holding locations.  When you mouseover one of these, the sub-navigation items would slide out.

harker
Community Member

That is a good point. But it comes down to the pros and cons of effective design.

For us, we have been encouraging faculty to hide all the course content tools and have everything accessible via Modules. With Modules used as the homepage, we have seen less confusion for students, because all of the course content and links are found on that page only.

Again when it comes to user interfaces, if you have too many choices, then it can be overwhelming. "Less is more when it comes to design." This point is ever-so true with course design. Sadly, how many instructors don't even bother hiding course tools they don't use, then giving them the ability to have more items just becomes way too much.

dbreckon
Community Participant

I have noticed that previously hidden LTI's are now showing once we made the switch to the new UI. The XML that defaulted them as hidden doesn't seem to be working anymore.

Anyone else see this response?

harker
Community Member

I haven't seen any LTI stuff showing with the change. However, did you make sure that your previous JS/CSS have any scripts to hide them? Just a thought.

dbreckon
Community Participant

Thank you for the response. The items that are appearing were not part of our js/css files.

QC99_tsilvius
Community Champion

We had SCORM integration turned on and I was hoping for something similar to this. It's initial state in all courses is visible. I'd rather it be displayed as hidden initially from student and observer view in courses and as teachers learn more about using it to make it visible as they are ready. I'd love a way to call and make SCORM hidden for everyone initally.

abunag
Community Champion

We talked to our CSM about this - apparently on their end, they can disable SCORM and re-enable it with it default hidden.  Downside is that you need to do...something? to courses that are active when you do this (I think re-enable SCORM for each course, but I can't quite remember).

dlyons
Instructure Alumni
Instructure Alumni

I didn't find any success using

course_navigation[default]=false

but

course_navigation[default]=disabled

worked like a charm!

ChrisMedina
Community Participant

where did you put

course_navigation[default]=disabled

i assumed it was in the custom fields in the app configurations but it didn't work.

can you elaborate how to make this disabled by default as I only have 1 or 2 instructors that use it?

thanks

dlyons
Instructure Alumni
Instructure Alumni

Sounds like you are talking about the Custom Fields you see in the configuration after the app is installed. Those have to do with data exchanged between the tool, not the configuration itself. The API call needed to use the parameter described is a PUT to:

https://<YOUR INSTANCE>.instructure.com/api/v1/accounts/self/external_tools/<TOOL ID>?course_navigation[default]=disabled

johnson
Community Novice

David, I'm confused as to where the code "course_navigation[default]=disabled" is suppose to go? 

I went to the address "https://<YOUR INSTANCE>.instructure.com/api/v1/accounts/self/external_tools/<TOOL ID>?course_navigation[default]=disabled " 

Where do I find the TOOL ID?

awilliams
Instructure Alumni
Instructure Alumni

Hey  @johnson ,

I'm sure there is a more sophisticated way to do this but I was able to get it by going to a course and hovering over the tool in question.

johnson
Community Novice

Thanks, I figured out the Tool ID, but I still have no clue where to place the code or what to do next?

I assumed you put it in the Custom Fields you see in the configuration after the app is installed, so I'm lost.

dlyons
Instructure Alumni
Instructure Alumni

That URL isn't one you'd navigate to in a browser, it's a (PUT) API call you would make from the command line or an API tool. However, GET API calls can be navigated to in a browser, including this one which lists all of the configured LTIs, and their IDs: External Tools - Canvas LMS REST API Documentation

awilliams‌ method noted https://community.canvaslms.com/groups/admins/blog/2015/07/07/hiding-lti-links?commentID=76692#comme... works too. 😉

qnguyen
Community Contributor

@BKINNEYWhat API tool do you use to send the PUT command ? Thanks

Shoopity
Community Member

@qnguyen 

You can just use a regular command line using CURL; it's built-in to Windows 10 since version 17063.

Start here, which has a link to here to tell you how to generate an Access Token.  Also use the following URL to get the specifics to the "apps":

https://yousite.instructure.com/doc/api/live

Then you can use the follow example in a regular command prompt (this particular command was hiding the old Google LTI tool from being select-able by teachers in an assignment without removing it from the system all together):

curl -X PUT "https://yoursite.instructure.com/api/v1/accounts/1/external_tools/ToolNumber" -H "Authorization: Bearer PreverioiuslyGeneratedAccessToken" -F "course_navigation[enabled]=false" -F "collaboration[enabled]=false" -F "editor_button[enabled]=false" -F "homework_submission[enabled]=false" -F "link_selection[enabled]=false" -F "assignment_selection[enabled]=false" -F "not_selectable=true"