Skip to content

Commit

Permalink
MBS-9808: Refactor bulk actions UI of rights table
Browse files Browse the repository at this point in the history
  • Loading branch information
PhMemmel committed Jan 7, 2025
1 parent eddacaf commit f568d4c
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 15 deletions.
36 changes: 30 additions & 6 deletions classes/form/rights_config_form.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,16 @@
*/
class rights_config_form extends \moodleform {

/** @var string Constant for defining the action "assign role". */
const ACTION_ASSIGN_ROLE = 'assignrole';

/** @var string Constant for defining the action "change lock status". */
const ACTION_CHANGE_LOCK_STATE = 'changelockstate';
/** @var string Constant for defining the action option "locked" for the action {@see self::ACTION_CHANGE_LOCK_STATE}. */
const ACTIONOPTION_CHANGE_LOCK_STATE_LOCKED = 'locked';
/** @var string Constant for defining the action option "unlocked" for the action {@see self::ACTION_CHANGE_LOCK_STATE}. */
const ACTIONOPTION_CHANGE_LOCK_STATE_UNLOCKED = 'unlocked';

/**
* Form definition.
*/
Expand All @@ -48,19 +58,33 @@ public function definition() {
$mform->addElement('hidden', 'userids', '', ['id' => 'rights-table-userids']);
$mform->setType('userids', PARAM_TEXT);

$roleelementsarray = [];
$roleelementsarray[] = $mform->createElement('select', 'role', '', [
$actionselectsgroup[] = $mform->createElement('select', 'action', '',
[
self::ACTION_ASSIGN_ROLE => get_string('assignrole', 'local_ai_manager'),
self::ACTION_CHANGE_LOCK_STATE => get_string('changelockstate', 'local_ai_manager'),
]);

$actionselectsgroup[] = $mform->createElement('select', 'role', '', [
userinfo::ROLE_BASIC => get_string(userinfo::get_role_as_string(userinfo::ROLE_BASIC), 'local_ai_manager'),
userinfo::ROLE_EXTENDED => get_string(userinfo::get_role_as_string(userinfo::ROLE_EXTENDED), 'local_ai_manager'),
userinfo::ROLE_UNLIMITED => get_string(userinfo::get_role_as_string(userinfo::ROLE_UNLIMITED), 'local_ai_manager'),
userinfo::ROLE_DEFAULT => get_string('defaultrole', 'local_ai_manager'),
]);
$roleelementsarray[] = $mform->createElement('submit', 'changerole', get_string('assignrole', 'local_ai_manager'));
$mform->addGroup($roleelementsarray, 'buttonarrayrole', '', [' '], false);
$mform->hideif('role', 'action', 'neq', self::ACTION_ASSIGN_ROLE);

$actionselectsgroup[] = $mform->createElement('select', 'lockstate', '',
[
self::ACTIONOPTION_CHANGE_LOCK_STATE_LOCKED => get_string('lock', 'local_ai_manager'),
self::ACTIONOPTION_CHANGE_LOCK_STATE_UNLOCKED => get_string('unlock', 'local_ai_manager'),
]
);
$mform->hideif('lockstate', 'action', 'neq', self::ACTION_CHANGE_LOCK_STATE);

$mform->addGroup($actionselectsgroup, 'actiongroup', get_string('executebulkuseractions', 'local_ai_manager') . ':', [' '],
false);

$buttonarray = [];
$buttonarray[] = $mform->createElement('submit', 'lockusers', get_string('lockuser', 'local_ai_manager'));
$buttonarray[] = $mform->createElement('submit', 'unlockusers', get_string('unlockuser', 'local_ai_manager'));
$buttonarray[] = $mform->createElement('submit', 'executeaction', get_string('executeaction', 'local_ai_manager'));
$buttonarray[] = $mform->createElement('cancel');
$mform->addGroup($buttonarray, 'buttonar', '', [' '], false);
$mform->closeHeaderBefore('buttonar');
Expand Down
7 changes: 5 additions & 2 deletions lang/en/local_ai_manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
$string['basicsettings'] = 'Basic settings';
$string['basicsettingsdesc'] = 'Configure basic settings for the AI manager plugin';
$string['cachedef_googleauth'] = 'Cache for Google OAuth2 access token';
$string['changelockstate'] = 'Change lock state';
$string['configure_instance'] = 'Configure AI Tool Instances';
$string['configureaitool'] = 'Configure AI tool';
$string['configurepurposes'] = 'Configure the purposes';
Expand Down Expand Up @@ -105,6 +106,8 @@
$string['exception_tenantaccessdenied'] = 'You must not access this tenant ({$a}).';
$string['exception_tenantnotallowed'] = 'The tenant is not allowed by the administrator';
$string['exception_usernotexists'] = 'The user does not exist';
$string['executeaction'] = 'Execute action';
$string['executebulkuseractions'] = 'Execute action for selected users';
$string['female'] = 'Female';
$string['filterroles'] = 'Filter roles';
$string['formvalidation_editinstance_azureapiversion'] = 'You must provide the api version of your Azure Resource';
Expand All @@ -129,8 +132,8 @@
$string['instancename'] = 'Internal identifier';
$string['landscape'] = 'landscape';
$string['large'] = 'large';
$string['lock'] = 'Lock';
$string['locked'] = 'Locked';
$string['lockuser'] = 'Lock user';
$string['male'] = 'Male';
$string['max_request_time_window'] = 'Time window for maximum number of requests';
$string['max_requests_purpose'] = 'Maximum number of requests per time window ({$a})';
Expand Down Expand Up @@ -212,7 +215,7 @@
$string['termsofusesettingdesc'] = 'Here you can add your specific terms of use for the AI manager. These will have to be accepted by the user before he/she will be able to use the AI tools.';
$string['unit_count'] = 'request(s)';
$string['unit_token'] = 'token';
$string['unlockuser'] = 'Unlock user';
$string['unlock'] = 'Unlock';
$string['usage'] = 'Usage';
$string['use_openai_by_azure_apiversion'] = 'API version of the Azure resource';
$string['use_openai_by_azure_deploymentid'] = 'Deployment ID of the Azure resource';
Expand Down
17 changes: 10 additions & 7 deletions rights_config.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,16 @@
throw new moodle_exception('exception_changestatusnotallowed', 'local_ai_manager', '', '', 'User ID: ' . $userid);
}
$userinfo = new userinfo($userid);
if (isset($data->lockusers)) {
$userinfo->set_locked(true);
} else if (isset($data->unlockusers)) {
$userinfo->set_locked(false);
} else if (isset($data->changerole) && isset($data->role)) {
$role = intval($data->role);
$userinfo->set_role($role);
switch ($data->action) {
case rights_config_form::ACTION_CHANGE_LOCK_STATE:
$userinfo->set_locked($data->lockstate === rights_config_form::ACTIONOPTION_CHANGE_LOCK_STATE_LOCKED);
break;
case rights_config_form::ACTION_ASSIGN_ROLE:
$role = intval($data->role);
$userinfo->set_role($role);
break;
default:
throw new \coding_exception('Unknown action: ' . $data->action);
}
$userinfo->store();
}
Expand Down

0 comments on commit f568d4c

Please sign in to comment.