// Add a link to the Content Bank if the user can access.
$course = $this->get_course();
- $context = context_course::instance($course->id);
- if (has_capability('moodle/contentbank:access', $context)) {
- $url = new moodle_url('/contentbank/index.php', ['contextid' => $context->id]);
- $msg = get_string('usecontentbank', 'mod_h5pactivity', $url->out());
- $msg .= ' '.$OUTPUT->help_icon('contentbank', 'mod_h5pactivity');
+ $coursecontext = context_course::instance($course->id);
+ if (has_capability('moodle/contentbank:access', $coursecontext)) {
+ $msg = null;
+ $context = $this->get_context();
+ if ($context instanceof \context_module) {
+ // This is an existing activity. If the H5P file it's a referenced file from the content bank, a link for
+ // displaying this specific content will be used instead of the generic link to the main page of the content bank.
+ $fs = get_file_storage();
+ $files = $fs->get_area_files($context->id, 'mod_h5pactivity', 'package', 0, 'sortorder, itemid, filepath,
+ filename', false);
+ $file = reset($files);
+ if ($file && $file->get_reference() != null) {
+ $referencedfile = \repository::get_moodle_file($file->get_reference());
+ if ($referencedfile->get_component() == 'contentbank') {
+ // If the attached file is a referencedfile in the content bank, display a link to open this content.
+ $url = new moodle_url('/contentbank/view.php', ['id' => $referencedfile->get_itemid()]);
+ $msg = get_string('opencontentbank', 'mod_h5pactivity', $url->out());
+ $msg .= ' '.$OUTPUT->help_icon('contentbank', 'mod_h5pactivity');
+ }
+ }
+ }
+ if (!isset($msg)) {
+ $url = new moodle_url('/contentbank/index.php', ['contextid' => $coursecontext->id]);
+ $msg = get_string('usecontentbank', 'mod_h5pactivity', $url->out());
+ $msg .= ' '.$OUTPUT->help_icon('contentbank', 'mod_h5pactivity');
+ }
+
$mform->addElement('static', 'contentbank', '', $msg);
}
-@mod @mod_h5pactivity @core_h5p @_file_upload @_switch_iframe @current
+@mod @mod_h5pactivity @core_h5p @_file_upload @_switch_iframe
Feature: Content bank link in the activity settings form
In order to have direct access to the Content bank
As a teacher
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
+ And the following "contentbank content" exist:
+ | contextlevel | reference | contenttype | user | contentname | filepath |
+ | Course | C1 | contenttype_h5p | admin | filltheblanks.h5p | /h5p/tests/fixtures/filltheblanks.h5p |
@javascript
Scenario: The content bank link should go to the course Content bank
And I am on "Course 1" course homepage with editing mode on
And I add a "H5P" to section "1"
Then I should not see "Use the content Bank (opens in new window) to manage your H5P files"
+
+ @javascript
+ Scenario: A different message should be displayed if the package file is a link to the content bank file
+ Given I log in as "admin"
+ And I am on "Course 1" course homepage with editing mode on
+ And I add a "H5P" to section "1"
+ And I set the following fields to these values:
+ | Name | H5P package added with link to content bank |
+ | Description | Description |
+ And I click on "Add..." "button" in the "Package file" "form_row"
+ And I select "Content bank" repository in file picker
+ And I click on "filltheblanks.h5p" "file" in repository content area
+ And I click on "Link to the file" "radio"
+ And I click on "Select this file" "button"
+ And I click on "Save and display" "button"
+ And I switch to "h5p-player" class iframe
+ And I switch to "h5p-iframe" class iframe
+ And I should see "Of which countries are Berlin, Washington, Beijing, Canberra and Brasilia the capitals?"
+ And I switch to the main frame
+ When I navigate to "Edit settings" in current page administration
+ Then I should not see "Use the content Bank (opens in new window) to manage your H5P files"
+ And I should see "Access the H5P file in the content bank (opens in a new window)."
+ And I follow "Access the H5P file in the content bank"
+
+ @javascript
+ Scenario: The content bank link should go to the course Content bank if the file is a copy to a content bank file
+ Given I log in as "admin"
+ And I am on "Course 1" course homepage with editing mode on
+ And I add a "H5P" to section "1"
+ And I set the following fields to these values:
+ | Name | H5P package added with link to content bank |
+ | Description | Description |
+ And I click on "Add..." "button" in the "Package file" "form_row"
+ And I select "Content bank" repository in file picker
+ And I click on "filltheblanks.h5p" "file" in repository content area
+ And I click on "Make a copy of the file" "radio"
+ And I click on "Select this file" "button"
+ And I click on "Save and display" "button"
+ And I switch to "h5p-player" class iframe
+ And I switch to "h5p-iframe" class iframe
+ And I should see "Of which countries are Berlin,"
+ And I switch to the main frame
+ When I navigate to "Edit settings" in current page administration
+ Then I should see "Use the content bank (opens in new window) to manage your H5P files"
+
+ @javascript
+ Scenario: The content bank link should go to the course Content bank if the file is referenced but to another repository
+ Given I log in as "admin"
+ And I follow "Manage private files..."
+ And I upload "h5p/tests/fixtures/guess-the-answer.h5p" file to "Files" filemanager
+ And I click on "Save changes" "button"
+ And I am on "Course 1" course homepage with editing mode on
+ And I add a "H5P" to section "1"
+ And I set the following fields to these values:
+ | Name | H5P package added with link to content bank |
+ | Description | Description |
+ And I click on "Add..." "button" in the "Package file" "form_row"
+ And I select "Private files" repository in file picker
+ And I click on "guess-the-answer.h5p" "file" in repository content area
+ And I click on "Link to the file" "radio"
+ And I click on "Select this file" "button"
+ And I click on "Save and display" "button"
+ And I switch to "h5p-player" class iframe
+ And I switch to "h5p-iframe" class iframe
+ And I should see "Which fruit is this?"
+ And I switch to the main frame
+ When I navigate to "Edit settings" in current page administration
+ Then I should see "Use the content bank (opens in new window) to manage your H5P files"