Skip to content

Commit

Permalink
Merge branch 'master_MDL-75126-allow-multiple-bulk-action-40' of http…
Browse files Browse the repository at this point in the history
  • Loading branch information
junpataleta committed Nov 10, 2022
2 parents 759a872 + 047d341 commit 0905aae
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 23 deletions.
2 changes: 1 addition & 1 deletion question/bank/bulkmove/classes/bulk_move_action.php
Expand Up @@ -30,7 +30,7 @@ public function get_bulk_action_title(): string {
return get_string('movetobulkaction', 'qbank_bulkmove');
}

public function get_bulk_action_key(): string {
public function get_key(): string {
return 'move';
}

Expand Down
6 changes: 4 additions & 2 deletions question/bank/bulkmove/classes/plugin_feature.php
Expand Up @@ -28,7 +28,9 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class plugin_feature extends plugin_features_base {
public function get_bulk_actions(): ?bulk_action_base {
return new bulk_move_action();
public function get_bulk_actions(): array {
return [
new bulk_move_action(),
];
}
}
Expand Up @@ -30,7 +30,7 @@ public function get_bulk_action_title(): string {
return get_string('delete');
}

public function get_bulk_action_key(): string {
public function get_key(): string {
return 'deleteselected';
}

Expand Down
6 changes: 4 additions & 2 deletions question/bank/deletequestion/classes/plugin_feature.php
Expand Up @@ -43,7 +43,9 @@ public function get_question_columns($qbank): array {
];
}

public function get_bulk_actions(): ?bulk_action_base {
return new bulk_delete_action();
public function get_bulk_actions(): array {
return [
new bulk_delete_action(),
];
}
}
22 changes: 21 additions & 1 deletion question/classes/local/bank/bulk_action_base.php
Expand Up @@ -44,7 +44,9 @@ abstract public function get_bulk_action_title(): string;
*
* @return string
*/
abstract public function get_bulk_action_key(): string;
public function get_bulk_action_key(): string {
return '';
}

/**
* URL of the bulk action redirect page.
Expand All @@ -68,4 +70,22 @@ abstract public function get_bulk_action_url(): \moodle_url;
public function get_bulk_action_capabilities(): ?array {
return null;
}


/**
* A unique key for the bulk action, this will be used in the api to identify the action data.
* Every bulk must have a unique key to perform the action as a part of the form post in the base view.
* When questions are selected, it will post according to the key its selected from the dropdown.
*
* Note: This method is the first towards moving from get_bulk_action_key() to get_key().
*
* @return string
*/
public function get_key(): string {
if (!empty($this->get_bulk_action_key())) {
return $this->get_bulk_action_key();
}
throw new \coding_exception('Bulk actions must implement the get_key() or get_bulk_action_key() method. ' .
'In Moodle 4.1, get_bulk_action_key() is being deprecated and replaced by get_key().');
}
}
6 changes: 3 additions & 3 deletions question/classes/local/bank/plugin_features_base.php
Expand Up @@ -59,10 +59,10 @@ public function get_navigation_node(): ?navigation_node_base {
/**
* This method will return the array objects for the bulk actions ui.
*
* @return null|bulk_action_base
* @return bulk_action_base[]
*/
public function get_bulk_actions(): ?bulk_action_base {
return null;
public function get_bulk_actions() {
return [];
}

}
28 changes: 15 additions & 13 deletions question/classes/local/bank/view.php
Expand Up @@ -197,22 +197,24 @@ public function __construct($contexts, $pageurl, $course, $cm = null) {
protected function init_bulk_actions(): void {
$plugins = \core_component::get_plugin_list_with_class('qbank', 'plugin_feature', 'plugin_feature.php');
foreach ($plugins as $componentname => $plugin) {
$pluginentrypoint = new $plugin();
$pluginentrypointobject = $pluginentrypoint->get_bulk_actions();
// Don't need the plugins without bulk actions.
if ($pluginentrypointobject === null) {
unset($plugins[$componentname]);
continue;
}
if (!\core\plugininfo\qbank::is_plugin_enabled($componentname)) {
unset($plugins[$componentname]);
continue;
}
$this->bulkactions[$pluginentrypointobject->get_bulk_action_key()] = [
'title' => $pluginentrypointobject->get_bulk_action_title(),
'url' => $pluginentrypointobject->get_bulk_action_url(),
'capabilities' => $pluginentrypointobject->get_bulk_action_capabilities()
];

$pluginentrypoint = new $plugin();
$bulkactions = $pluginentrypoint->get_bulk_actions();
if (!is_array($bulkactions)) {
$bulkactions = [$bulkactions];
}

foreach ($bulkactions as $bulkactionobject) {
$this->bulkactions[$bulkactionobject->get_key()] = [
'title' => $bulkactionobject->get_bulk_action_title(),
'url' => $bulkactionobject->get_bulk_action_url(),
'capabilities' => $bulkactionobject->get_bulk_action_capabilities()
];
}

}
}

Expand Down
5 changes: 5 additions & 0 deletions question/upgrade.txt
@@ -1,5 +1,10 @@
This files describes API changes for code that uses the question API.

=== 4.0.5 ===

1) Question bank plugins can now define more than one bulk action. Therefore, plugin_features_base::get_bulk_actions has been
changed to return an array, rather than a single bulk action class. Please update the plugin_features class in your plugin if necessary.

=== 4.0 ===

Moodle 4.0 included the results of a major project to re-work the question bank.
Expand Down

0 comments on commit 0905aae

Please sign in to comment.