|
|
|
|
@ -4,140 +4,179 @@ IMS/LTI plugin |
|
|
|
|
Version 1.9.0 |
|
|
|
|
|
|
|
|
|
> This plugin is meant to be later integrated into Chamilo (in a major version |
|
|
|
|
release). |
|
|
|
|
|
|
|
|
|
IMS/LTI defines the possibility to integrate tools or content into Chamilo. |
|
|
|
|
This plugin allows the integration of a new tool into courses, obtaining |
|
|
|
|
data back from those tools and recording them as gradebook "external" activities. |
|
|
|
|
> release). |
|
|
|
|
|
|
|
|
|
This plugin allows certified support for LTI 1.0, 1.1, 1.1.1, Deep Linking 1.x, Outcome Services 1.x. |
|
|
|
|
You can get information about the LTI Certification on [this page][certification link]. |
|
|
|
|
The LTI 1.3 is being developed. |
|
|
|
|
|
|
|
|
|
IMS/LTI defines the possibility to integrate tools or content into Chamilo. |
|
|
|
|
This plugin allows the integration of a new tool into courses, obtaining |
|
|
|
|
data back from those tools and recording them as gradebook "external" activities. |
|
|
|
|
|
|
|
|
|
As a platform admin, you can register external tools available for all courses. |
|
|
|
|
You need set the tools settings in the IMS/LTI administration page. |
|
|
|
|
Then the registered tools should be added in each course individually. |
|
|
|
|
|
|
|
|
|
As a teacher, you can register external tools available only for the current |
|
|
|
|
course. You need follow the link in the IMS/LTI block located in the Course |
|
|
|
|
Settings tool. Then select a previously tool registered or register a new |
|
|
|
|
Settings tool. Then select a tool registered previously or register a new |
|
|
|
|
external tool. |
|
|
|
|
|
|
|
|
|
# Installation |
|
|
|
|
|
|
|
|
|
* Prepare your web server to allow to send cookies in all contexts, set the `SameSite` attribute to `None` |
|
|
|
|
* i.e. Apache configuration |
|
|
|
|
|
|
|
|
|
```apacheconf |
|
|
|
|
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure;SameSite=None |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
1. Install the plugin from the Plugins page |
|
|
|
|
2. Enable the plugin from the IMS/LTI Plugin Settings page |
|
|
|
|
3. Assign to the Administrator region (in the regions management page) |
|
|
|
|
|
|
|
|
|
# Changelog |
|
|
|
|
|
|
|
|
|
## v1.9 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.9](#to-v190). |
|
|
|
|
|
|
|
|
|
* Add option to add LTI tool to sessions |
|
|
|
|
|
|
|
|
|
## v1.8 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v180). |
|
|
|
|
|
|
|
|
|
* Add option to add replacements for launch params |
|
|
|
|
|
|
|
|
|
## v1.7 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v170). |
|
|
|
|
|
|
|
|
|
* Fix auth params |
|
|
|
|
* Add option to show LTI tool in iframe or new window. |
|
|
|
|
|
|
|
|
|
## v1.6 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v160). |
|
|
|
|
|
|
|
|
|
* Add support to LTI 1.3 and Advantage Services |
|
|
|
|
|
|
|
|
|
## v1.5 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v151). |
|
|
|
|
|
|
|
|
|
* Plugin has passed the tests from the LTI Certification suite. |
|
|
|
|
* Add support for substitution of variable. |
|
|
|
|
See `ImsLti::getSubstitutableParams()`. |
|
|
|
|
* Outcome services has a unique URL and sourced ID. |
|
|
|
|
|
|
|
|
|
## v1.4 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v140). |
|
|
|
|
|
|
|
|
|
* Allow create external tools when there is no key/secret available for launch |
|
|
|
|
|
|
|
|
|
## v1.3 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v130). |
|
|
|
|
|
|
|
|
|
* Privacy settings added. Allow to indicate id the launcher's data |
|
|
|
|
should be sent in request. |
|
|
|
|
|
|
|
|
|
## v1.2 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v120). |
|
|
|
|
|
|
|
|
|
* Register course in which the tool was added. |
|
|
|
|
* Register parent tool from which the new tool comes from. |
|
|
|
|
|
|
|
|
|
## v1.1 |
|
|
|
|
|
|
|
|
|
> Requires DB changes to upgrade, see [v1.8](#to-v110). |
|
|
|
|
|
|
|
|
|
* Support for Deep-Linking added. |
|
|
|
|
* Support for outcomes services. And register score on course gradebook. |
|
|
|
|
|
|
|
|
|
# Installation |
|
|
|
|
|
|
|
|
|
*Prior to installing/uninstalling this plugin, you will need to make sure the src/Chamilo/PluginBundle/Entity folder is |
|
|
|
|
temporarily writeable by the web server.* |
|
|
|
|
|
|
|
|
|
1. Install the plugin from the Plugins page |
|
|
|
|
2. Enable the plugin from the IMS/LTI Plugin Settings page |
|
|
|
|
3. Assign to the Administrator region (in the regions management page) |
|
|
|
|
|
|
|
|
|
# Upgrading |
|
|
|
|
|
|
|
|
|
Run this changes on database: |
|
|
|
|
|
|
|
|
|
## To v1.9.0 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD session_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD CONSTRAINT FK_C5E47F7C613FECDF FOREIGN KEY (session_id) REFERENCES session (id); |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD session_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD CONSTRAINT FK_C5E47F7C613FECDF FOREIGN KEY (session_id) REFERENCES session (id); |
|
|
|
|
CREATE INDEX IDX_C5E47F7C613FECDF ON plugin_ims_lti_tool (session_id); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.8.0 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD replacement_params LONGTEXT NOT NULL COMMENT '(DC2Type:json)'; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD replacement_params LONGTEXT NOT NULL COMMENT '(DC2Type:json)'; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.7.0 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD launch_presentation LONGTEXT NOT NULL COMMENT '(DC2Type:json)'; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD launch_presentation LONGTEXT NOT NULL COMMENT '(DC2Type:json)'; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.6.0 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
CREATE TABLE plugin_ims_lti_platform ( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
kid VARCHAR(255) NOT NULL, |
|
|
|
|
public_key LONGTEXT NOT NULL, |
|
|
|
|
private_key LONGTEXT NOT NULL, |
|
|
|
|
PRIMARY KEY(id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB; |
|
|
|
|
CREATE TABLE plugin_ims_lti_token ( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
tool_id INT DEFAULT NULL, |
|
|
|
|
scope LONGTEXT NOT NULL COMMENT '(DC2Type:json)', |
|
|
|
|
hash VARCHAR(255) NOT NULL, |
|
|
|
|
created_at INT NOT NULL, |
|
|
|
|
expires_at INT NOT NULL, |
|
|
|
|
CREATE TABLE plugin_ims_lti_platform |
|
|
|
|
( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
kid VARCHAR(255) NOT NULL, |
|
|
|
|
public_key LONGTEXT NOT NULL, |
|
|
|
|
private_key LONGTEXT NOT NULL, |
|
|
|
|
PRIMARY KEY (id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 |
|
|
|
|
COLLATE utf8_unicode_ci |
|
|
|
|
ENGINE = InnoDB; |
|
|
|
|
CREATE TABLE plugin_ims_lti_token |
|
|
|
|
( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
tool_id INT DEFAULT NULL, |
|
|
|
|
scope LONGTEXT NOT NULL COMMENT '(DC2Type:json)', |
|
|
|
|
hash VARCHAR(255) NOT NULL, |
|
|
|
|
created_at INT NOT NULL, |
|
|
|
|
expires_at INT NOT NULL, |
|
|
|
|
INDEX IDX_F7B5692F8F7B22CC (tool_id), |
|
|
|
|
PRIMARY KEY(id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB; |
|
|
|
|
PRIMARY KEY (id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 |
|
|
|
|
COLLATE utf8_unicode_ci |
|
|
|
|
ENGINE = InnoDB; |
|
|
|
|
ALTER TABLE plugin_ims_lti_token |
|
|
|
|
ADD CONSTRAINT FK_F7B5692F8F7B22CC FOREIGN KEY (tool_id) REFERENCES plugin_ims_lti_tool (id) ON DELETE CASCADE; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD client_id VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD public_key LONGTEXT DEFAULT NULL, |
|
|
|
|
ADD login_url VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD redirect_url VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD advantage_services LONGTEXT DEFAULT NULL COMMENT '(DC2Type:json)', |
|
|
|
|
ADD version VARCHAR(255) DEFAULT 'lti1p1' NOT NULL; |
|
|
|
|
CREATE TABLE plugin_ims_lti_lineitem ( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
tool_id INT NOT NULL, |
|
|
|
|
evaluation INT NOT NULL, |
|
|
|
|
ADD client_id VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD public_key LONGTEXT DEFAULT NULL, |
|
|
|
|
ADD login_url VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD redirect_url VARCHAR(255) DEFAULT NULL, |
|
|
|
|
ADD advantage_services LONGTEXT DEFAULT NULL COMMENT '(DC2Type:json)', |
|
|
|
|
ADD version VARCHAR(255) DEFAULT 'lti1p1' NOT NULL; |
|
|
|
|
CREATE TABLE plugin_ims_lti_lineitem |
|
|
|
|
( |
|
|
|
|
id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
tool_id INT NOT NULL, |
|
|
|
|
evaluation INT NOT NULL, |
|
|
|
|
resource_id VARCHAR(255) DEFAULT NULL, |
|
|
|
|
tag VARCHAR(255) DEFAULT NULL, |
|
|
|
|
start_date DATETIME DEFAULT NULL, |
|
|
|
|
end_date DATETIME DEFAULT NULL, |
|
|
|
|
tag VARCHAR(255) DEFAULT NULL, |
|
|
|
|
start_date DATETIME DEFAULT NULL, |
|
|
|
|
end_date DATETIME DEFAULT NULL, |
|
|
|
|
INDEX IDX_BA81BBF08F7B22CC (tool_id), |
|
|
|
|
UNIQUE INDEX UNIQ_BA81BBF01323A575 (evaluation), |
|
|
|
|
PRIMARY KEY(id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 COLLATE `utf8_unicode_ci` ENGINE = InnoDB; |
|
|
|
|
PRIMARY KEY (id) |
|
|
|
|
) DEFAULT CHARACTER SET utf8 |
|
|
|
|
COLLATE utf8_unicode_ci |
|
|
|
|
ENGINE = InnoDB; |
|
|
|
|
ALTER TABLE plugin_ims_lti_lineitem |
|
|
|
|
ADD CONSTRAINT FK_BA81BBF08F7B22CC FOREIGN KEY (tool_id) REFERENCES plugin_ims_lti_tool (id) ON DELETE CASCADE; |
|
|
|
|
ALTER TABLE plugin_ims_lti_lineitem |
|
|
|
|
@ -145,6 +184,7 @@ ALTER TABLE plugin_ims_lti_lineitem |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.5.1 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
DROP FOREIGN KEY FK_C5E47F7C727ACA70, |
|
|
|
|
@ -152,6 +192,7 @@ ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.4 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
CHANGE consumer_key consumer_key VARCHAR(255) DEFAULT NULL, |
|
|
|
|
@ -159,34 +200,41 @@ ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.3 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD privacy LONGTEXT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD privacy LONGTEXT DEFAULT NULL; |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.2 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD c_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD CONSTRAINT FK_C5E47F7C91D79BD3 |
|
|
|
|
FOREIGN KEY (c_id) REFERENCES course (id); |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD c_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD CONSTRAINT FK_C5E47F7C91D79BD3 FOREIGN KEY (c_id) REFERENCES course (id); |
|
|
|
|
CREATE INDEX IDX_C5E47F7C91D79BD3 ON plugin_ims_lti_tool (c_id); |
|
|
|
|
|
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD parent_id INT DEFAULT NULL, DROP is_global; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD CONSTRAINT FK_C5E47F7C727ACA70 |
|
|
|
|
FOREIGN KEY (parent_id) REFERENCES plugin_ims_lti_tool (id); |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD parent_id INT DEFAULT NULL, |
|
|
|
|
DROP is_global; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD CONSTRAINT FK_C5E47F7C727ACA70 FOREIGN KEY (parent_id) REFERENCES plugin_ims_lti_tool (id); |
|
|
|
|
CREATE INDEX IDX_C5E47F7C727ACA70 ON plugin_ims_lti_tool (parent_id); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
## To v1.1 |
|
|
|
|
|
|
|
|
|
```sql |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD active_deep_linking TINYINT(1) DEFAULT '0' NOT NULL, |
|
|
|
|
CHANGE id id INT AUTO_INCREMENT NOT NULL, |
|
|
|
|
CHANGE launch_url launch_url VARCHAR(255) NOT NULL; |
|
|
|
|
|
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD gradebook_eval_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool ADD CONSTRAINT FK_C5E47F7C82F80D8B |
|
|
|
|
FOREIGN KEY (gradebook_eval_id) REFERENCES gradebook_evaluation (id) |
|
|
|
|
ON DELETE SET NULL; |
|
|
|
|
|
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD gradebook_eval_id INT DEFAULT NULL; |
|
|
|
|
ALTER TABLE plugin_ims_lti_tool |
|
|
|
|
ADD CONSTRAINT FK_C5E47F7C82F80D8B FOREIGN KEY (gradebook_eval_id) REFERENCES gradebook_evaluation (id) ON DELETE SET NULL; |
|
|
|
|
CREATE INDEX IDX_C5E47F7C82F80D8B ON plugin_ims_lti_tool (gradebook_eval_id); |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|