Community

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
JosephRousseau
Community Member

Can Canvas act as an LTI tool

Jump to solution

I would like to build an LTI consumer and consume an instance of canvas as though it were an LTI tool. I believe the LTI spec allows for this, but I'm curious if there are docs or if someone can point me in the right direction?

 

The use case is to add functionality to the left/top/right rail of the page and I've found that using the global js provides a sub par user experience.

Tags (1)
0 Kudos
1 Solution

Accepted Solutions

What you're describing sounds a lot little how DesignPLUS works. It adds extra drawers in certain area to Canvas. This tool was originally open sourced and it had both an LTI tool as well as a lot of custom Javascript to pop up the Design Tools navigation. The open source tool "KennethWare" stopped working when Canvas released their new rich text editor last year but the CidiLabs version still is updated and supported. Might be useful as inspiration on what is possible. There is a lot of information available to Javascript code in the ENV variable such as ENV["COURSE"} and ENV["current_user"].

Some web apps can work as both a LTI platform and a tool but Canvas is just a platform currently. 

 

View solution in original post

5 Replies
chriscas
Community Member

Hi @JosephRousseau,

I'm going to take a stab at this, being a Canvas administrator, though i'm probably only 95% sure of my answer.  I believe Canvas is set up to be more on the receiving end of data in the LTI equation.  From what I'm reading you'd like to do, I don't think LTI is going to really help you much.  I do have a couple other ideas though, depending on what exactly you're trying to change/modify/add...

  • First, even though you've already mentioned you've had difficluty, if the custom JS/CSS files.  I will agree they can be tricky, and some things just may plain not be doable, but they really are pretty flexible.  If you can describe what you'd like to modify, there are definitely some community members who might be able to offer some suggestions or code snippets to help you get on your way.
  • Second, depending on your skills and resources available, you could try to spin up your own instance of Canvas using their open source repository.  I think there are some differences between the open source Canvas and the paid cloud-hosted version, but if you build your own form source and have the tech skills, you should be able to modify almost anything you'd like.

I am personally curious to know what you'd like to change, as I have made a few very simple JS/CSS tweaks myself.  By no means am I the most skilled person in the community in this area, but sometimes what seems like an impossible to climb mountain for one person is just an ant hill for someone else.

-Chris

BrianLester
Community Member

Hi Joseph,

Here's a link to a post about reflexive LTI written by Seth Battis:

https://community.canvaslms.com/t5/InstructureCon-2016/Reflexive-LTIs-that-Feedback-into-Canvas/td-p...

Best,

Brian

JosephRousseau
Community Member

Thanks for the responses both!

 

The biggest thing that I'd like to add is a "drawer" to the right side of the page that contains some different information depending on the page. on an assignment page it might be a social chat, on the homepage it may just contain some extra announcements. I was thinking LTI because I'd like it to be context aware (which page/course/ am I currently viewing)/ user aware (who is the current user/ other students in same section). Unfortunately, LTI works using placements/ iframes and so that's not possible because that placement doesn't exist. So seems I either create an app that consumes canvas or use the global js functionality. 

 

Looks like there are other limitations with consuming canvas, so I am now leaning towards the Global JS solution. That "reflexive LTI" seems like a nice solution, but I'm unclear on how it is integrated into canvas and whether it could load some js as I'm imagining. It doesn't look like that is maintained any longer and was using LTI1.1 @SethBattis

 

Unfortunately I can't modify the source code for Canvas because I would like to launch this in a couple of different schools instances.

What you're describing sounds a lot little how DesignPLUS works. It adds extra drawers in certain area to Canvas. This tool was originally open sourced and it had both an LTI tool as well as a lot of custom Javascript to pop up the Design Tools navigation. The open source tool "KennethWare" stopped working when Canvas released their new rich text editor last year but the CidiLabs version still is updated and supported. Might be useful as inspiration on what is possible. There is a lot of information available to Javascript code in the ENV variable such as ENV["COURSE"} and ENV["current_user"].

Some web apps can work as both a LTI platform and a tool but Canvas is just a platform currently. 

 

JosephRousseau
Community Member

Oops a bit of a late reply here.

Thanks for that @jonespm ! I took a better look and it seems the sidebar portion is not LTI/ just built with the global js functionality. I think, in the end, I'm going to need to go down that route. 

 

One problem I'm running into is that I will need to set up a server (to return auth tokens to enable the chat for instance). But since the login is directly to canvas, I'm not sure how to authenticate with my own server (that's where LTI would have helped). Maybe someone has some pointers for this?

 

Thanks again for all the help!