From f568d4cc9236f8339536c05c20b81d6fa62438d5 Mon Sep 17 00:00:00 2001 From: Philipp Memmel Date: Fri, 20 Dec 2024 21:39:09 +0100 Subject: [PATCH] MBS-9808: Refactor bulk actions UI of rights table --- classes/form/rights_config_form.php | 36 ++++++++++++++++++++++++----- lang/en/local_ai_manager.php | 7 ++++-- rights_config.php | 17 ++++++++------ 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/classes/form/rights_config_form.php b/classes/form/rights_config_form.php index 8916158..f980914 100644 --- a/classes/form/rights_config_form.php +++ b/classes/form/rights_config_form.php @@ -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. */ @@ -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'); diff --git a/lang/en/local_ai_manager.php b/lang/en/local_ai_manager.php index 34882bc..bf22f82 100644 --- a/lang/en/local_ai_manager.php +++ b/lang/en/local_ai_manager.php @@ -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'; @@ -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'; @@ -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})'; @@ -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'; diff --git a/rights_config.php b/rights_config.php index f968ee3..8ecc3d5 100644 --- a/rights_config.php +++ b/rights_config.php @@ -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(); }