MDL-67810 core_contentbank: placed the edit action in the view page
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
// 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/>.
|
||||
|
||||
/**
|
||||
* Class containing data for a content view.
|
||||
*
|
||||
* @package core_contentbank
|
||||
* @copyright 2020 Victor Deniz <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core_contentbank\output;
|
||||
|
||||
use core_contentbank\content;
|
||||
use core_contentbank\contenttype;
|
||||
use moodle_url;
|
||||
use renderable;
|
||||
use renderer_base;
|
||||
use stdClass;
|
||||
use templatable;
|
||||
|
||||
/**
|
||||
* Class containing data for the content view.
|
||||
*
|
||||
* @copyright 2020 Victor Deniz <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class viewcontent implements renderable, templatable {
|
||||
/**
|
||||
* @var contenttype Content bank content type.
|
||||
*/
|
||||
private $contenttype;
|
||||
|
||||
/**
|
||||
* @var stdClass Record of the contentbank_content table.
|
||||
*/
|
||||
private $content;
|
||||
|
||||
/**
|
||||
* Construct this renderable.
|
||||
*
|
||||
* @param contenttype $contenttype Content bank content type.
|
||||
* @param content $content Record of the contentbank_content table.
|
||||
*/
|
||||
public function __construct(contenttype $contenttype, content $content) {
|
||||
$this->contenttype = $contenttype;
|
||||
$this->content = $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export this data so it can be used as the context for a mustache template.
|
||||
*
|
||||
* @param renderer_base $output
|
||||
*
|
||||
* @return stdClass
|
||||
*/
|
||||
public function export_for_template(renderer_base $output): stdClass {
|
||||
$data = new stdClass();
|
||||
|
||||
// Get the content type html.
|
||||
$contenthtml = $this->contenttype->get_view_content($this->content);
|
||||
$data->contenthtml = $contenthtml;
|
||||
|
||||
// Check if the user can edit this content type.
|
||||
if ($this->contenttype->can_edit()) {
|
||||
$data->usercanedit = true;
|
||||
$urlparams = [
|
||||
'contextid' => $this->content->get_contextid(),
|
||||
'plugin' => $this->contenttype->get_plugin_name(),
|
||||
'id' => $this->content->get_id()
|
||||
];
|
||||
$editcontenturl = new moodle_url('/contentbank/edit.php', $urlparams);
|
||||
$data->editcontenturl = $editcontenturl->out(false);
|
||||
}
|
||||
|
||||
$closeurl = new moodle_url('/contentbank/index.php', ['contextid' => $this->content->get_contextid()]);
|
||||
$data->closeurl = $closeurl->out(false);
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{{!
|
||||
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 comments.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
}}
|
||||
{{!
|
||||
@template core_contentbank/view_content
|
||||
|
||||
View content page.
|
||||
|
||||
Classes required for JS:
|
||||
* none
|
||||
|
||||
Data attributes required for JS:
|
||||
* none
|
||||
|
||||
Context variables required for this template:
|
||||
* contenthtml - string - content html.
|
||||
* usercanedit - boolean - whether the user has permission to edit the content.
|
||||
* editcontenturl - string - edit page URL.
|
||||
* closeurl - string - close landing page.
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"contenthtml" : "<iframe src=\"http://something/h5p/embed.php?url=h5pfileurl\"></iframe>",
|
||||
"usercanedit" : true,
|
||||
"editcontenturl" : "http://something/contentbank/edit.php?contextid=1&plugin=h5p&id=1",
|
||||
"closeurl" : "http://moodle.test/h5pcb/moodle/contentbank/index.php"
|
||||
}
|
||||
}}
|
||||
<div class="core_contentbank_viewcontent">
|
||||
<div class="d-flex justify-content-end flex-column flex-sm-row">
|
||||
{{>core_contentbank/viewcontent/toolbarview}}
|
||||
</div>
|
||||
<div class="container mt-1 mb-1" data-region="viewcontent-content">
|
||||
{{{ contenthtml }}}
|
||||
</div>
|
||||
<div class="d-flex justify-content-end flex-column flex-sm-row">
|
||||
{{>core_contentbank/viewcontent/toolbarview}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,50 @@
|
||||
{{!
|
||||
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 comments.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
}}
|
||||
{{!
|
||||
@template core_contentbank/viewcontent/toolbarview
|
||||
|
||||
Contentbank view toolbar.
|
||||
|
||||
Classes required for JS:
|
||||
* none
|
||||
|
||||
Data attributes required for JS:
|
||||
* none
|
||||
|
||||
Context variables required for this template:
|
||||
* contenthtml - string - content html.
|
||||
* usercanedit - boolean - whether the user has permission to edit the content.
|
||||
* editcontenturl - string - edit page URL.
|
||||
* closeurl - string - close landing page.
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"usercanedit" : true,
|
||||
"editcontenturl" : "http://something/contentbank/edit.php?contextid=1&plugin=h5p&id=1",
|
||||
"closeurl" : "http://moodle.test/h5pcb/moodle/contentbank/index.php"
|
||||
}
|
||||
}}
|
||||
{{#usercanedit}}
|
||||
<div class="cb-toolbar-container mb-2">
|
||||
<a href="{{editcontenturl}}" class="btn btn-primary" data-action="edit-content">
|
||||
{{#str}}edit{{/str}}
|
||||
</a>
|
||||
<a href="{{closeurl}}" class="btn btn-secondary" data-action="close-content">
|
||||
{{#str}}close, core_contentbank{{/str}}
|
||||
</a>
|
||||
</div>
|
||||
{{/usercanedit}}
|
||||
@@ -53,7 +53,7 @@ if ($PAGE->course) {
|
||||
$PAGE->set_url(new \moodle_url('/contentbank/view.php', ['id' => $id]));
|
||||
$PAGE->set_context($context);
|
||||
$PAGE->navbar->add($record->name);
|
||||
$PAGE->set_heading($title);
|
||||
$PAGE->set_heading($record->name);
|
||||
$title .= ": ".$record->name;
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_pagetype('contenbank');
|
||||
@@ -109,7 +109,6 @@ $PAGE->add_header_action(html_writer::div(
|
||||
));
|
||||
|
||||
echo $OUTPUT->header();
|
||||
echo $OUTPUT->box_start('generalbox');
|
||||
|
||||
// If needed, display notifications.
|
||||
if ($errormsg !== '') {
|
||||
@@ -118,8 +117,11 @@ if ($errormsg !== '') {
|
||||
echo $OUTPUT->notification($statusmsg, 'notifysuccess');
|
||||
}
|
||||
if ($contenttype->can_access()) {
|
||||
echo $contenttype->get_view_content($content);
|
||||
$viewcontent = new core_contentbank\output\viewcontent($contenttype, $content);
|
||||
echo $OUTPUT->render($viewcontent);
|
||||
} else {
|
||||
$message = get_string('contenttypenoaccess', 'core_contentbank', $record->contenttype);
|
||||
echo $OUTPUT->notification($message, 'error');
|
||||
}
|
||||
|
||||
echo $OUTPUT->box_end();
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
@@ -31,6 +31,7 @@ $string['contentnotdeleted'] = 'An error was encountered while trying to delete
|
||||
$string['contentnotrenamed'] = 'An error was encountered while trying to rename the content.';
|
||||
$string['contentrenamed'] = 'The content has been renamed.';
|
||||
$string['contentsmoved'] = 'Content bank contents moved to {$a}.';
|
||||
$string['contenttypenoaccess'] = 'You can not view this {$a} instance';
|
||||
$string['eventcontentcreated'] = 'Content created';
|
||||
$string['eventcontentdeleted'] = 'Content deleted';
|
||||
$string['eventcontentupdated'] = 'Content updated';
|
||||
|
||||
Reference in New Issue
Block a user