Hi Everyone,
I was installing a LTI application to canvas. I want this LTI to appear in User navigation and Course Navigation of canvas. And when someone clicks on it, it should open in new tab. After installing this everything is fine except one. LTI app is not appearing in the new tab. I found in configuration API Importing Extended Tool Configurations - Canvas LMS REST API Documentation following code for new tab windowTarget ">_blank
Below is XML for my LTI:
<?xml version="1.0" encoding="UTF-8"?>
http://www.imsglobal.org/xsd/imslticc_v1p0"
xmlns:blti = "http://www.imsglobal.org/xsd/imsbasiclti_v1p0"
xmlns:lticm ="http://www.imsglobal.org/xsd/imslticm_v1p0"
xmlns:lticp ="http://www.imsglobal.org/xsd/imslticp_v1p0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.imsglobal.org/xsd/imslticc_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticc_v1p0.xsd
http://www.imsglobal.org/xsd/imsbasiclti_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imsbasiclti_v1p0.xsd
http://www.imsglobal.org/xsd/imslticm_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticm_v1p0.xsd
http://www.imsglobal.org/xsd/imslticp_v1p0 http://www.imsglobal.org/xsd/lti/ltiv1p0/imslticp_v1p0.xsd">
https://.starfishsolutions.com/starfish-ops/support/ltiLogin.html>
Starfish
Go to Starfish
public
true
windowTarget ">_blank
Any suggestions to resolve this will be appreciated.
@zweifel your XML looks like it's missing some stuff, but if it's working...
Have you looked at this tool to help generate your XML:
Anyway, try moving your "windowTarget" into your placement options.
Using your XML it would look like this:
_blank
https://.starfishsolutions.com/starfish-ops/support/ltiLogin.html
Placing the "windowTarget" in my XML like this is working, launching my LTI tool in a new browser tab.
I hope this helps.
Hi. Does anyone know if there is there a property that will set the order of the menu item in course nav?
The windowTarget _blank property does not work with user_navigation link placement. Even if you set it in the XML, the link will still open in Canvas in-frame. I thought I should mention this because the conversation at the top of this thread implies that it is possible to open in a new tab. This may have worked in the past; if so, something changed in Canvas so it no longer functions with this particular placement.
Hey all, sometimes you need to create LTIs (external tools) on a mass scale OR make changes on a mass scale. I put together this Python script to do just that. Maybe this will help someone.
Provided 'as is', but it works pretty well.
Here's some code you can use in the javascript console to update any arbitrary object value.
// take the object that you got from the url and update it with the partial object you have function updateObjVal(object, searchObj) { //console.log(object); Object.keys(searchObj).forEach(function (k) { if (object[k] && typeof object[k] === 'object' && typeof searchObj[k] === 'object') { return updateObjVal(object[k], searchObj[k]) } else{ object[k] = searchObj[k]; } }); return object; } // get the existing json from the url function updateTool(url, updateObj){ $.ajax({ url: url, type: 'GET', success: function(data) { // console.log(data); //console.log(updateObj); var updatedObj = updateObjVal(data,updateObj); putUpdate(url,updatedObj); } }); } // send the updated json back function putUpdate(url, updatedObj){ console.log(updatedObj); var updateString = decodeURIComponent(jQuery.param( updatedObj )); $.ajax({ url: url, type: 'PUT', data: updateString, success: function(data) { console.log('Tool was updated.'); } }); } // e.g. /api/v1/courses/281820/external_tools/22087 visible from network panel in console after you look at Placements for example var targeturl="/api/v1/accounts/3371/external_tools/40870"; // the update object is any fragment of the json that you want to update var updateObj = {"course_navigation": { "default": "disabled", "text": "Some Name", "label": "Some Name" } }; updateTool( targeturl, updateObj );
Sure. I tend to forget that I have the JSON Formatter Chrome Extension that makes JSON really easy to look at and decipher, but you just need to look at the JSON and only need to include the object attribute you want to change or add, i.e.
var updateObj = {"account_navigation": { "windowTarget": "_blank" }};
sure. My email is my username @vccs.edu
Hello, I was thinking of this a while ago and have been trying to message Canvas support about this but they suggested here but not which category. I apologize if this is the wrong spot. When messaging students right now we need to message one by one. I would like to know if there is a way we can change that to streamline…
I'm building a tool for my institution that imports grades from another LTI tool into Canvas so instructors can automate late assignment policies not otherwise supported by Canvas. I'm trying to use the LTIv1.3 ID which is readily available on the LTI-side as a link to the student record on Canvas, but I can't find the ID…
How can one track Canvas Media use without having the reports available from Canvas Studio? Checking API endpoints and the Data 2 schema, there do not seem to be dedicated Canvas Media endpoints. Am I missing some? A method I've considered is using the body field of the wiki_pages table, as this contains the html code of…
Hello, I'm trying to utilize an API call to pull completed certificates and was hoping to download and store the certs as a backup. I can successfully run the API call but it will not allow me to view the certificate unless I access the URL while signed into an account where it's "my" cert. Is there a permissions setting…
UI for weekly progression idea that rest in the Schedule tab of the **K-12 UI** of Canvas it's incomplete and I really would not take it and push it into instance but I am going to post it here because in the past people like @James && @robotcars || @Steve_25 have had terrific input in the past... maybe w/their eyes and…