ℹ︎ | This installation manual assumes an institute-wide installation. If an installation on subaccount level is preferred, additional assistance from Drieam is recommended. |
Before you start: make sure you have root account admin access.
Generate developer keys
Go to Admin (root account) > [root account name] > Developer KeysLTI
Key Name: Portflow
Owner: Admin email
Used to identify who has created the key for internal purposes.- Redirect URI:
EU Hosting
https://app.portflow.app/lti/launches
AU Hosting
https://au.portflow.app/lti/launches Method: Paste JSON (see below)
In case availability on sub-account level only is desired, Drieam assistance is required to get help adding the Portflow to the global navigation.
API
Key Name: Portflow
Owner: Admin email
- Redirect URIs:
EU Hosting
https://app.portflow.app/lti/oauth2/callback
https://app.portflow.app/admin/oauth2/callback
AU Hosting
https://au.portflow.app/lti/oauth2/callback
https://au.portflow.app/admin/oauth2/callback - Add the application icon url:
EU Hosting
https://app.portflow.app/favicon.svg
AU Hosting
https://au.portflow.app/favicon.svg
Switch on both keys
Communicate the key sets with Drieam.
Please send both the public and private keys for both the keys, and indicate which is API/LTI.
Make sure to never delete these keys as they are crucial for the Portflow installation.
- Add app
Go to Admin (root account) > Settings > Apps > View app configurations
In case of installation on sub-account (testing, limited access), add the app on the sub-account instead of the root account and note the sub-account ID (from the URL).Add app
Type: by Client ID
Client ID: LTI developer key (just created in step 1a)
Communicate Deployment ID with Drieam
(Click the cog/gear icon behind Portflow and select Deployment ID)
Add new account role for Portfolio Admin
Go to Admin (root account) > Permissions > Account rolesAdd Role
Name: Portflow role (E.g. Portflow Admin)
Grant permissions
Course content - view
Grades - view all grades (or Marks - view all marks)
Groups - view all student groups
Manage Course Files
Manage Groups
Users - view list
Users - view primary email address
Add person to the account (e.g. [institution name] Portfolio) - name is used to send notifications from.
N.b.Make sure to set SIS-ID, login, password and use a non-existent e-mail address (e.g. portfolio-admin@drieam.de) to prevent unintended merging of existing Canvas-accounts. E-mail address is required by Canvas, but will not be used.Communicate login information to Drieam.
Add that new person as Portflow Admin to the account (Admin > Settings > Admins). In case of sub-account installation, add the person to the intended sub-account only and communicate the sub-account id with Drieam.
Make sure to never delete this account.
In case Portflow is not to be available to everyone, but only for users within a specific subaccount, create a new theme in that subaccount with the custom js snippet from Drieam (see below).
The default language for Portflow has to be set by Drieam. This is the language that will be shown to users who have their Canvas account set to any language other than the supported languages. Let Drieam know what your primary (default) language and secondary language(s) should be. This cannot be changed.
ℹ︎ | Portflow currently supports the following languages:
|
Tip: enable the feature preview of Assignment enhancements - student under Courses to create a better assignment submission experience in combination with Portfolio.
LTI Key JSON (EU hosting)
For installation, step 1:
{
"title": "Portflow",
"description": "Portflow is an LTI application that allows students to collect evidence and receive feedback on their portfolio.",
"scopes": [
"https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly"
],
"oidc_initiation_url": "https://app.portflow.app/lti/open_id",
"target_link_uri": "https://app.portflow.app/lti/launches",
"public_jwk_url": "https://app.portflow.app/lti/keypairs",
"extensions": [
{
"platform": "canvas.instructure.com",
"tool_id": "com.drieam.portfoliolti",
"privacy_level": "name_only",
"settings": {
"icon_url": "https://app.portflow.app/favicon.svg",
"placements": [
{
"placement": "global_navigation",
"message_type": "LtiResourceLinkRequest",
"enabled": true,
"icon_url": "https://app.portflow.app/portfoliolti_global_nav_icon.svg",
"icon_svg_path_64": "M50.925 52.497c1.213 0 2.244-.427 3.094-1.28.849-.855 1.273-1.892 1.273-3.112V24.68c0-1.22-.424-2.258-1.273-3.112-.85-.854-1.88-1.28-3.094-1.28h-7.279v-4.393c0-1.22-.424-2.257-1.274-3.111-.849-.854-1.88-1.281-3.093-1.281H24.72c-1.213 0-2.244.427-3.093 1.28-.85.855-1.274 1.892-1.274 3.112v4.392h-7.28c-1.212 0-2.243.427-3.093 1.281-.849.854-1.273 1.891-1.273 3.112v23.425c0 1.22.424 2.257 1.273 3.111.85.854 1.88 1.281 3.094 1.281zM39.28 20.287H24.72v-4.392H39.28zM20.354 48.105h-7.28V24.68h7.28zm18.925 0H24.72V24.68H39.28zm11.646 0h-7.279V24.68h7.28z",
"display_type": "full_width",
"visibility": "members"
},
{
"placement": "homework_submission",
"message_type": "LtiDeepLinkingRequest",
"enabled": true,
"icon_url": "https://app.portflow.app/favicon.svg"
},
{
"placement": "course_navigation",
"message_type": "LtiResourceLinkRequest",
"enabled": true,
"text": "Portflow",
"icon_url": "https://app.portflow.app/favicon.svg",
"display_type": "full_width_in_context",
"default": "disabled",
"visibility": "admins"
}
]
}
}
],
"custom_fields": {
"canvas_assignment_id": "$Canvas.assignment.id",
"canvas_assignment_title": "$Canvas.assignment.title",
"canvas_course_id": "$Canvas.course.id",
"canvas_course_name": "$Canvas.course.name",
"canvas_user_id": "$Canvas.user.id",
"canvas_user_is_root_account_admin": "$Canvas.user.isRootAccountAdmin",
"person_display_name": "$Person.name.display",
"user_email": "$Person.email.primary",
"user_image": "$User.image",
"user_sourced_id": "$Person.sourcedId"
}
}LTI Key JSON (AU hosting)
For installation, step 1:
{
"title": "Portflow",
"description": "Portflow is an LTI application that allows students to collect evidence and receive feedback on their portfolio.",
"scopes": [
"https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly"
],
"oidc_initiation_url": "https://au.portflow.app/lti/open_id",
"target_link_uri": "https://au.portflow.app/lti/launches",
"public_jwk_url": "https://au.portflow.app/lti/keypairs",
"extensions": [
{
"platform": "canvas.instructure.com",
"tool_id": "com.drieam.portfoliolti",
"privacy_level": "name_only",
"settings": {
"icon_url": "https://au.portflow.app/favicon.svg",
"placements": [
{
"placement": "global_navigation",
"message_type": "LtiResourceLinkRequest",
"enabled": true,
"icon_url": "https://au.portflow.app/portfoliolti_global_nav_icon.svg",
"icon_svg_path_64": "M50.925 52.497c1.213 0 2.244-.427 3.094-1.28.849-.855 1.273-1.892 1.273-3.112V24.68c0-1.22-.424-2.258-1.273-3.112-.85-.854-1.88-1.28-3.094-1.28h-7.279v-4.393c0-1.22-.424-2.257-1.274-3.111-.849-.854-1.88-1.281-3.093-1.281H24.72c-1.213 0-2.244.427-3.093 1.28-.85.855-1.274 1.892-1.274 3.112v4.392h-7.28c-1.212 0-2.243.427-3.093 1.281-.849.854-1.273 1.891-1.273 3.112v23.425c0 1.22.424 2.257 1.273 3.111.85.854 1.88 1.281 3.094 1.281zM39.28 20.287H24.72v-4.392H39.28zM20.354 48.105h-7.28V24.68h7.28zm18.925 0H24.72V24.68H39.28zm11.646 0h-7.279V24.68h7.28z",
"display_type": "full_width",
"visibility": "members"
},
{
"placement": "homework_submission",
"message_type": "LtiDeepLinkingRequest",
"enabled": true,
"icon_url": "https://au.portflow.app/favicon.svg"
},
{
"placement": "course_navigation",
"message_type": "LtiResourceLinkRequest",
"enabled": true,
"text": "Portflow",
"icon_url": "https://au.portflow.app/favicon.svg",
"display_type": "full_width_in_context",
"default": "disabled",
"visibility": "admins"
}
]
}
}
],
"custom_fields": {
"canvas_assignment_id": "$Canvas.assignment.id",
"canvas_assignment_title": "$Canvas.assignment.title",
"canvas_course_id": "$Canvas.course.id",
"canvas_course_name": "$Canvas.course.name",
"canvas_user_id": "$Canvas.user.id",
"canvas_user_is_root_account_admin": "$Canvas.user.isRootAccountAdmin",
"person_display_name": "$Person.name.display",
"user_email": "$Person.email.primary",
"user_image": "$User.image",
"user_sourced_id": "$Person.sourcedId"
}
}Sub-Account theme JavaScript
For sub-account installation - replace [accountId] with the sub-account ID (step 2) and [toolId] with the number before the colon (:) from the Deployment ID (step 2).
/*Drieam Portfolio Theme - pjsmits*/
(() => {
const menu = document.getElementById("menu");
if (!menu) {
return;
}
const historyLink = document.getElementById("global_nav_history_link");
//Rename account id and external id
const menuItem = document.createElement("li");
menuItem.className =
"globalNavExternalTool menu-item ic-app-header__menu-list-item";
menuItem.innerHTML = `
<a class="ic-app-header__menu-list-link" href="/accounts/[accountId]/external_tools/[toolId]?launch_type=global_navigation">
<svg version="1.1" class="ic-icon-svg ic-icon-svg--lti menu-item__icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 64 64">
<path d="M50.925 52.497c1.213 0 2.244-.427 3.094-1.28.849-.855 1.273-1.892 1.273-3.112V24.68c0-1.22-.424-2.258-1.273-3.112-.85-.854-1.88-1.28-3.094-1.28h-7.279v-4.393c0-1.22-.424-2.257-1.274-3.111-.849-.854-1.88-1.281-3.093-1.281H24.72c-1.213 0-2.244.427-3.093 1.28-.85.855-1.274 1.892-1.274 3.112v4.392h-7.28c-1.212 0-2.243.427-3.093 1.281-.849.854-1.273 1.891-1.273 3.112v23.425c0 1.22.424 2.257 1.273 3.111.85.854 1.88 1.281 3.094 1.281zM39.28 20.287H24.72v-4.392H39.28zM20.354 48.105h-7.28V24.68h7.28zm18.925 0H24.72V24.68H39.28zm11.646 0h-7.279V24.68h7.28z"></path>
</svg>
<div class="menu-item__text">
Portflow
</div>
</a>
`;
if (historyLink && historyLink.parentNode.parentNode.id === "menu") {
menu.insertBefore(menuItem, historyLink.parentNode);
} else {
menu.appendChild(menuItem);
}
})();Overview of information to send to Drieam
After completion of the installation according to the steps above, you can send the information to support@drieam.com.
- LTI developer key (step 1)
- Public key
- Secret key
- API developer key (step 1)
- Public key
- Secret key
- Deployment ID (step 2)
- Deployment ID
- User (step 3)
- Username
- Password
- Default and secondary language of your institution.
- URL (vanity url) of the Canvas instance.
- In case of sub-account installation (instead of root-account): sub-account ID (from URL).
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article