forked from moodle/moodle
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MDL-71573 qbank_exportquestion: Add plugin to core
This implementation will introduce a qbank plugin "exporquestions" which will add the export feature in the question bank view by replacing the core classes. Having this plugin will give users the flexibility of enabling or disabling the export questions tab. Co-Authored-By: Guillermo Gomez Arias <[email protected]>
- Loading branch information
Showing
12 changed files
with
387 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
58 changes: 58 additions & 0 deletions
58
question/bank/exportquestions/classes/exportquestions_helper.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Library functions used by qbank_exportquestions/export.php. | ||
* | ||
* This code is based on lib/questionlib.php by Martin Dougiamas. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Guillermo Gomez Arias <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace qbank_exportquestions; | ||
|
||
use moodle_url; | ||
|
||
/** | ||
* Class exportquestions_helper contains all the library functions. | ||
* | ||
* @package qbank_exportquestions | ||
*/ | ||
class exportquestions_helper { | ||
|
||
/** | ||
* Create url for question export. | ||
* | ||
* @param int $contextid Current context. | ||
* @param int $categoryid Category id. | ||
* @param string $format Format. | ||
* @param string $withcategories nocategories or withcategories text. | ||
* @param string $withcontexts nocontexts or withcontexts text. | ||
* @param string $filename File name. | ||
* @return moodle_url Return an URL. | ||
*/ | ||
public static function question_make_export_url($contextid, $categoryid, $format, $withcategories, | ||
$withcontexts, $filename): moodle_url { | ||
global $CFG; | ||
$urlbase = "$CFG->wwwroot/pluginfile.php"; | ||
return moodle_url::make_file_url($urlbase, | ||
"/$contextid/question/export/{$categoryid}/{$format}/{$withcategories}" . | ||
"/{$withcontexts}/{$filename}", true); | ||
} | ||
} |
100 changes: 100 additions & 0 deletions
100
question/bank/exportquestions/classes/form/export_form.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Defines the export questions form. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2007 Jamie Pratt [email protected] | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace qbank_exportquestions\form; | ||
|
||
use moodleform; | ||
|
||
defined('MOODLE_INTERNAL') || die(); | ||
|
||
require_once($CFG->libdir . '/formslib.php'); | ||
|
||
|
||
/** | ||
* Form to export questions from the question bank. | ||
* | ||
* @copyright 2007 Jamie Pratt [email protected] | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class export_form extends moodleform { | ||
|
||
/** | ||
* Build the form definition. | ||
* | ||
* This adds all the form fields that the export questions feature needs. | ||
*/ | ||
protected function definition() { | ||
global $OUTPUT; | ||
|
||
$mform = $this->_form; | ||
|
||
$defaultcategory = $this->_customdata['defaultcategory']; | ||
$contexts = $this->_customdata['contexts']; | ||
|
||
// Choice of format, with help. | ||
$mform->addElement('header', 'fileformat', get_string('fileformat', 'question')); | ||
|
||
$fileformatnames = get_import_export_formats('export'); | ||
$radioarray = []; | ||
$separators = []; | ||
foreach ($fileformatnames as $shortname => $fileformatname) { | ||
$radioarray[] = $mform->createElement('radio', 'format', '', $fileformatname, $shortname); | ||
|
||
$separator = ''; | ||
if (get_string_manager()->string_exists('pluginname_help', 'qformat_' . $shortname)) { | ||
$separator .= $OUTPUT->help_icon('pluginname', 'qformat_' . $shortname); | ||
} | ||
$separator .= '<div class="w-100"></div>'; | ||
$separators[] = $separator; | ||
} | ||
|
||
$radioarray[] = $mform->createElement('static', 'makelasthelpiconshowup', ''); | ||
$mform->addGroup($radioarray, "formatchoices", '', $separators, false); | ||
$mform->addRule("formatchoices", null, 'required', null, 'client'); | ||
|
||
// Export options. | ||
$mform->addElement('header', 'general', get_string('general', 'form')); | ||
|
||
$mform->addElement('questioncategory', 'category', get_string('exportcategory', 'question'), | ||
['contexts' => $contexts, 'top' => true]); | ||
$mform->setDefault('category', $defaultcategory); | ||
$mform->addHelpButton('category', 'exportcategory', 'question'); | ||
|
||
$categorygroup = []; | ||
$categorygroup[] = $mform->createElement('checkbox', 'cattofile', '', get_string('tofilecategory', 'question')); | ||
$categorygroup[] = $mform->createElement('checkbox', 'contexttofile', '', get_string('tofilecontext', 'question')); | ||
$mform->addGroup($categorygroup, 'categorygroup', '', '', false); | ||
$mform->disabledIf('categorygroup', 'cattofile', 'notchecked'); | ||
$mform->setDefault('cattofile', 1); | ||
$mform->setDefault('contexttofile', 1); | ||
|
||
// Set a template for the format select elements. | ||
$renderer = $mform->defaultRenderer(); | ||
$template = "{help} {element}\n"; | ||
$renderer->setGroupElementTemplate($template, 'format'); | ||
|
||
// Submit buttons. | ||
$this->add_action_buttons(false, get_string('exportquestions', 'question')); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Plugin entrypoint for navigation. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Guillermo Gomez Arias <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace qbank_exportquestions; | ||
|
||
/** | ||
* Class navigation. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Guillermo Gomez Arias <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class navigation extends \core_question\local\bank\navigation_node_base { | ||
|
||
public function get_navigation_title(): string { | ||
return get_string('export', 'question'); | ||
} | ||
|
||
public function get_navigation_key(): string { | ||
return 'export'; | ||
} | ||
|
||
public function get_navigation_url(): \moodle_url { | ||
return new \moodle_url('/question/bank/exportquestions/export.php'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
<?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/>. | ||
|
||
/** | ||
* Entry point for plugin. | ||
* | ||
* Every qbank plugin must extent this class. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Safat Shahin <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace qbank_exportquestions; | ||
|
||
/** | ||
* Class plugin_feature. | ||
* | ||
* @package qbank_exportquestions | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Safat Shahin <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
class plugin_feature extends \core_question\local\bank\plugin_features_base { | ||
|
||
public function get_navigation_node(): ?object { | ||
return new navigation(); | ||
} | ||
} |
37 changes: 37 additions & 0 deletions
37
question/bank/exportquestions/classes/privacy/provider.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/>. | ||
|
||
/** | ||
* Privacy Subsystem for qbank_exportquestions implementing null_provider. | ||
* | ||
* @package qbank_exportquestions | ||
* @category privacy | ||
* @copyright 2021 Catalyst IT Australia Pty Ltd | ||
* @author Guillermo Gomez Arias <[email protected]> | ||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | ||
*/ | ||
|
||
namespace qbank_exportquestions\privacy; | ||
|
||
/** | ||
* Class provider. | ||
*/ | ||
class provider implements \core_privacy\local\metadata\null_provider { | ||
|
||
public static function get_reason(): string { | ||
return 'privacy:metadata'; | ||
} | ||
} |
Oops, something went wrong.