You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.2 KiB
87 lines
3.2 KiB
2 years ago
|
{{!
|
||
|
This file is part of Moodle - http://moodle.org/
|
||
|
|
||
|
Moodle is free software: you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License as published by
|
||
|
the Free Software Foundation, either version 3 of the License, or
|
||
|
(at your option) any later version.
|
||
|
|
||
|
Moodle is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
GNU General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||
|
}}
|
||
|
{{!
|
||
|
@template mod_lti/contentitem
|
||
|
|
||
|
Provides a template for the creation of a new external tool instance via the content-item message.
|
||
|
|
||
|
Classes required for JS:
|
||
|
* none
|
||
|
|
||
|
Data attributes required for JS:
|
||
|
* none
|
||
|
|
||
|
Context variables required for this template:
|
||
|
* url The URL the iframe has to load.
|
||
|
* postData The JSON object that contains the information to be POSTed for the ContentItemSelectionRequest.
|
||
|
|
||
|
Example context (json):
|
||
|
{
|
||
|
"url": "/",
|
||
|
"postData": {
|
||
|
"id": "1",
|
||
|
"course": "1",
|
||
|
"title": "Sample title",
|
||
|
"text": "This is a description"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}}
|
||
|
<div id="contentitem-container" class="contentitem-container">
|
||
|
<div class="contentitem-loading-container loading-screen">
|
||
|
{{> mod_lti/loader }}
|
||
|
<p class="loading-text">{{#str}} loadinghelp, moodle {{/str}}</p>
|
||
|
<p id="tool-loading-failed" class="hidden">{{#str}} register_warning, mod_lti {{/str}}</p>
|
||
|
</div>
|
||
|
<div class="contentitem-page">
|
||
|
<iframe id="contentitem-page-iframe" name="contentitem-page-iframe" class="hidden" tabindex="0">
|
||
|
</iframe>
|
||
|
<form target="contentitem-page-iframe" action="{{url}}" id="contentitem-request-form" method="post">
|
||
|
<input type="hidden" name="id" value="{{postData.id}}" />
|
||
|
<input type="hidden" name="course" value="{{postData.course}}" />
|
||
|
<input type="hidden" name="title" value="{{postData.title}}" />
|
||
|
<input type="hidden" name="text" value="{{postData.text}}" />
|
||
|
</form>
|
||
|
</div>
|
||
|
</div>
|
||
|
{{#js}}
|
||
|
require(['jquery'], function($) {
|
||
|
var loadingContainer = $('.contentitem-loading-container');
|
||
|
var iframe = $('#contentitem-page-iframe');
|
||
|
var timeout = setTimeout(function () {
|
||
|
var failedContainer = $('#tool-loading-failed');
|
||
|
failedContainer.removeClass('hidden');
|
||
|
}, 20000);
|
||
|
|
||
|
// Submit form.
|
||
|
$('#contentitem-request-form').submit();
|
||
|
|
||
|
iframe.on('load', function() {
|
||
|
loadingContainer.addClass('hidden');
|
||
|
iframe.removeClass('hidden');
|
||
|
|
||
|
// Adjust iframe's width to the fit the container's width.
|
||
|
var containerWidth = $('div.contentitem-container').width();
|
||
|
$('#contentitem-page-iframe').width(containerWidth + 'px');
|
||
|
|
||
|
// Adjust iframe's height to 75% of the width.
|
||
|
var containerHeight = containerWidth * 0.75;
|
||
|
$('#contentitem-page-iframe').height(containerHeight + 'px');
|
||
|
});
|
||
|
});
|
||
|
{{/js}}
|