Merge branch 'master_MDL-71613-viewcreator' of https://github.com/catalyst/moodle-MDL-70329
This commit is contained in:
@@ -1943,6 +1943,7 @@ class core_plugin_manager {
|
||||
'editquestion',
|
||||
'exportquestions',
|
||||
'importquestions',
|
||||
'viewcreator',
|
||||
'viewquestionname',
|
||||
'viewquestiontext',
|
||||
'viewquestiontype',
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
<?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/>.
|
||||
|
||||
namespace qbank_viewcreator;
|
||||
|
||||
use core_question\local\bank\column_base;
|
||||
|
||||
/**
|
||||
* A column type for the name of the question creator.
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2009 Tim Hunt
|
||||
* @author 2021 Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class creator_name_column extends column_base {
|
||||
|
||||
public function get_name(): string {
|
||||
return 'creatorname';
|
||||
}
|
||||
|
||||
protected function get_title(): string {
|
||||
return get_string('createdby', 'question');
|
||||
}
|
||||
|
||||
protected function display_content($question, $rowclasses): void {
|
||||
global $PAGE;
|
||||
$displaydata = [];
|
||||
|
||||
if (!empty($question->creatorfirstname) && !empty($question->creatorlastname)) {
|
||||
$u = new \stdClass();
|
||||
$u = username_load_fields_from_object($u, $question, 'creator');
|
||||
$displaydata['date'] = userdate($question->timecreated, get_string('strftimedatetime', 'langconfig'));
|
||||
$displaydata['creator'] = fullname($u);
|
||||
echo $PAGE->get_renderer('qbank_viewcreator')->render_creator_name($displaydata);
|
||||
}
|
||||
}
|
||||
|
||||
public function get_extra_joins(): array {
|
||||
return ['uc' => 'LEFT JOIN {user} uc ON uc.id = q.createdby'];
|
||||
}
|
||||
|
||||
public function get_required_fields(): array {
|
||||
$allnames = \core_user\fields::get_name_fields();
|
||||
$requiredfields = [];
|
||||
foreach ($allnames as $allname) {
|
||||
$requiredfields[] = 'uc.' . $allname . ' AS creator' . $allname;
|
||||
}
|
||||
$requiredfields[] = 'q.timecreated';
|
||||
return $requiredfields;
|
||||
}
|
||||
|
||||
public function is_sortable(): array {
|
||||
return [
|
||||
'firstname' => ['field' => 'uc.firstname', 'title' => get_string('firstname')],
|
||||
'lastname' => ['field' => 'uc.lastname', 'title' => get_string('lastname')],
|
||||
'timecreated' => ['field' => 'q.timecreated', 'title' => get_string('date')]
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?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/>.
|
||||
|
||||
namespace qbank_viewcreator;
|
||||
|
||||
use core_question\local\bank\column_base;
|
||||
|
||||
/**
|
||||
* A column type for the name of the question last modifier.
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2009 Tim Hunt
|
||||
* @author 2021 Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class modifier_name_column extends column_base {
|
||||
|
||||
public function get_name(): string {
|
||||
return 'modifiername';
|
||||
}
|
||||
|
||||
protected function get_title(): string {
|
||||
return get_string('lastmodifiedby', 'question');
|
||||
}
|
||||
|
||||
protected function display_content($question, $rowclasses): void {
|
||||
global $PAGE;
|
||||
$displaydata = [];
|
||||
|
||||
if (!empty($question->modifierfirstname) && !empty($question->modifierlastname)) {
|
||||
$u = new \stdClass();
|
||||
$u = username_load_fields_from_object($u, $question, 'modifier');
|
||||
$displaydata['date'] = userdate($question->timemodified, get_string('strftimedatetime', 'langconfig'));
|
||||
$displaydata['modifier'] = fullname($u);
|
||||
echo $PAGE->get_renderer('qbank_viewcreator')->render_modifier_name($displaydata);
|
||||
}
|
||||
}
|
||||
|
||||
public function get_extra_joins(): array {
|
||||
return ['um' => 'LEFT JOIN {user} um ON um.id = q.modifiedby'];
|
||||
}
|
||||
|
||||
public function get_required_fields(): array {
|
||||
$allnames = \core_user\fields::get_name_fields();
|
||||
$requiredfields = [];
|
||||
foreach ($allnames as $allname) {
|
||||
$requiredfields[] = 'um.' . $allname . ' AS modifier' . $allname;
|
||||
}
|
||||
$requiredfields[] = 'q.timemodified';
|
||||
return $requiredfields;
|
||||
}
|
||||
|
||||
public function is_sortable(): array {
|
||||
return [
|
||||
'firstname' => ['field' => 'um.firstname', 'title' => get_string('firstname')],
|
||||
'lastname' => ['field' => 'um.lastname', 'title' => get_string('lastname')],
|
||||
'timemodified' => ['field' => 'q.timemodified', 'title' => get_string('date')]
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?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/>.
|
||||
|
||||
namespace qbank_viewcreator\output;
|
||||
|
||||
/**
|
||||
* Class renderer.
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2021 Catalyst IT Australia Pty Ltd
|
||||
* @author Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class renderer extends \plugin_renderer_base {
|
||||
|
||||
/**
|
||||
* Render question creator.
|
||||
*
|
||||
* @param array $displaydata
|
||||
* @return string
|
||||
*/
|
||||
public function render_creator_name($displaydata) {
|
||||
return $this->render_from_template('qbank_viewcreator/creator_display', $displaydata);
|
||||
}
|
||||
|
||||
/**
|
||||
* Render question modifier.
|
||||
*
|
||||
* @param array $displaydata
|
||||
* @return string
|
||||
*/
|
||||
public function render_modifier_name($displaydata) {
|
||||
return $this->render_from_template('qbank_viewcreator/modifier_display', $displaydata);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
<?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/>.
|
||||
|
||||
namespace qbank_viewcreator;
|
||||
|
||||
use core_question\local\bank\plugin_features_base;
|
||||
|
||||
/**
|
||||
* Class plugin_feature is the entrypoint for the columns.
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2021 Catalyst IT Australia Pty Ltd
|
||||
* @author Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class plugin_feature extends plugin_features_base {
|
||||
|
||||
public function get_question_columns($qbank): array {
|
||||
return [
|
||||
new creator_name_column($qbank),
|
||||
new modifier_name_column($qbank)
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?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/>.
|
||||
|
||||
namespace qbank_viewcreator\privacy;
|
||||
|
||||
/**
|
||||
* Privacy Subsystem for qbank_viewcreator implementing null_provider.
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2021 Catalyst IT Australia Pty Ltd
|
||||
* @author Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class provider implements \core_privacy\local\metadata\null_provider {
|
||||
|
||||
public static function get_reason(): string {
|
||||
return 'privacy:metadata';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Strings for component qbank_viewcreator, language 'en'
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2021 Catalyst IT Australia Pty Ltd
|
||||
* @author Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
$string['pluginname'] = 'View creator';
|
||||
$string['privacy:metadata'] = 'View creator question bank plugin does not store any user data.';
|
||||
@@ -0,0 +1,33 @@
|
||||
{{!
|
||||
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 qbank_viewcreator/creator_display
|
||||
Example context (json):
|
||||
{
|
||||
"displaydata": [
|
||||
{
|
||||
"creator": "Marc Ghaly",
|
||||
"date": "2 June 2021, 5:32 PM",
|
||||
}
|
||||
]
|
||||
}
|
||||
}}
|
||||
|
||||
<span class="qbank-creator-name">
|
||||
{{creator}}
|
||||
</span>
|
||||
<br>
|
||||
<span class="date">
|
||||
{{date}}
|
||||
</span>
|
||||
@@ -0,0 +1,33 @@
|
||||
{{!
|
||||
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 qbank_viewcreator/modifier_display
|
||||
Example context (json):
|
||||
{
|
||||
"displaydata": [
|
||||
{
|
||||
"modifier": "Marc Ghaly",
|
||||
"date": "2 June 2021, 5:32 PM",
|
||||
}
|
||||
]
|
||||
}
|
||||
}}
|
||||
|
||||
<span class="qbank-creator-name">
|
||||
{{modifier}}
|
||||
</span>
|
||||
<br>
|
||||
<span class="date">
|
||||
{{date}}
|
||||
</span>
|
||||
@@ -0,0 +1,33 @@
|
||||
@qbank @qbank_viewcreator
|
||||
Feature: Use the qbank plugin manager page for viewcreator plugin
|
||||
In order to check the plugin behaviour with enable and disable
|
||||
|
||||
Background:
|
||||
Given the following "courses" exist:
|
||||
| fullname | shortname | category |
|
||||
| Course 1 | C1 | 0 |
|
||||
And the following "activities" exist:
|
||||
| activity | name | course | idnumber |
|
||||
| quiz | Test quiz | C1 | quiz1 |
|
||||
And the following "question categories" exist:
|
||||
| contextlevel | reference | name |
|
||||
| Course | C1 | Test questions |
|
||||
And the following "questions" exist:
|
||||
| questioncategory | qtype | name | questiontext |
|
||||
| Test questions | truefalse | First question | Answer the first question |
|
||||
|
||||
Scenario: Enable/disable viewcreator column from the base view
|
||||
Given I log in as "admin"
|
||||
And I navigate to "Plugins > Question bank plugins > Manage question bank plugins" in site administration
|
||||
And I should see "View creator"
|
||||
When I click on "Disable" "link" in the "View creator" "table_row"
|
||||
And I am on the "Test quiz" "quiz activity" page
|
||||
And I navigate to "Question bank > Questions" in current page administration
|
||||
Then I should not see "Created by"
|
||||
And I should not see "Last modified by"
|
||||
And I navigate to "Plugins > Question bank plugins > Manage question bank plugins" in site administration
|
||||
And I click on "Enable" "link" in the "View creator" "table_row"
|
||||
And I am on the "Test quiz" "quiz activity" page
|
||||
And I navigate to "Question bank > Questions" in current page administration
|
||||
Then I should see "Created by"
|
||||
And I should see "Last modified by"
|
||||
@@ -0,0 +1,31 @@
|
||||
<?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/>.
|
||||
|
||||
/**
|
||||
* Version information for qbank_viewcreator.
|
||||
*
|
||||
* @package qbank_viewcreator
|
||||
* @copyright 2021 Catalyst IT Australia Pty Ltd
|
||||
* @author Ghaly Marc-Alexandre <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$plugin->component = 'qbank_viewcreator';
|
||||
$plugin->version = 2021070700;
|
||||
$plugin->requires = 2021052500;
|
||||
$plugin->maturity = MATURITY_STABLE;
|
||||
@@ -17,9 +17,9 @@
|
||||
/**
|
||||
* A column type for the name of the question creator.
|
||||
*
|
||||
* @package core_question
|
||||
* @copyright 2009 Tim Hunt
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @package core_question
|
||||
* @copyright 2009 Tim Hunt
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
namespace core_question\bank;
|
||||
|
||||
@@ -189,7 +189,7 @@ class_alias('qbank_viewquestionname\viewquestionname_column_helper', 'question_b
|
||||
* @deprecated since Moodle 2.7 MDL-40457
|
||||
* @todo MDl-72004 delete the class alias, not done in MDL-71516 for any potential error from other plugins.
|
||||
*/
|
||||
class_alias('core_question\bank\creator_name_column', 'question_bank_creator_name_column', true);
|
||||
class_alias('qbank_viewcreator\creator_name_column', 'question_bank_creator_name_column', true);
|
||||
|
||||
|
||||
/**
|
||||
@@ -200,7 +200,7 @@ class_alias('core_question\bank\creator_name_column', 'question_bank_creator_nam
|
||||
* @deprecated since Moodle 2.7 MDL-40457
|
||||
* @todo MDl-72004 delete the class alias, not done in MDL-71516 for any potential error from other plugins.
|
||||
*/
|
||||
class_alias('core_question\bank\modifier_name_column', 'question_bank_modifier_name_column', true);
|
||||
class_alias('qbank_viewcreator\modifier_name_column', 'question_bank_modifier_name_column', true);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user