From 45c4d4aa8c7e7fcc3d042c65aa93263dbfb22356 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Thu, 10 Oct 2019 12:32:09 +0100 Subject: [PATCH] MDL-46123 accesslib: improve get_component_string --- lib/accesslib.php | 58 ++++++++++--------- mod/quiz/lang/en/quiz.php | 1 + .../report/grading/lang/en/quiz_grading.php | 1 - .../statistics/lang/en/quiz_statistics.php | 1 - mod/quiz/report/upgrade.txt | 8 +++ 5 files changed, 41 insertions(+), 28 deletions(-) diff --git a/lib/accesslib.php b/lib/accesslib.php index cd3058f7429..6c419f2cb3a 100644 --- a/lib/accesslib.php +++ b/lib/accesslib.php @@ -2560,43 +2560,49 @@ function get_capability_string($capabilityname) { */ function get_component_string($component, $contextlevel) { - if ($component === 'moodle' or $component === 'core') { - switch ($contextlevel) { - // TODO MDL-46123: this should probably use context level names instead - case CONTEXT_SYSTEM: return get_string('coresystem'); - case CONTEXT_USER: return get_string('users'); - case CONTEXT_COURSECAT: return get_string('categories'); - case CONTEXT_COURSE: return get_string('course'); - case CONTEXT_MODULE: return get_string('activities'); - case CONTEXT_BLOCK: return get_string('block'); - default: print_error('unknowncontext'); - } + if ($component === 'moodle' || $component === 'core') { + return context_helper::get_level_name($contextlevel); } list($type, $name) = core_component::normalize_component($component); $dir = core_component::get_plugin_directory($type, $name); if (!file_exists($dir)) { // plugin not installed, bad luck, there is no way to find the name - return $component.' ???'; + return $component . ' ???'; } + // Some plugin types need an extra prefix to make the name easy to understand. switch ($type) { - // TODO MDL-46123: this is really hacky and should be improved. - case 'quiz': return get_string($name.':componentname', $component);// insane hack!!! - case 'repository': return get_string('repository', 'repository').': '.get_string('pluginname', $component); - case 'gradeimport': return get_string('gradeimport', 'grades').': '.get_string('pluginname', $component); - case 'gradeexport': return get_string('gradeexport', 'grades').': '.get_string('pluginname', $component); - case 'gradereport': return get_string('gradereport', 'grades').': '.get_string('pluginname', $component); - case 'webservice': return get_string('webservice', 'webservice').': '.get_string('pluginname', $component); - case 'block': return get_string('block').': '.get_string('pluginname', basename($component)); + case 'quiz': + $prefix = get_string('quizreport', 'quiz') . ': '; + break; + case 'repository': + $prefix = get_string('repository', 'repository') . ': '; + break; + case 'gradeimport': + $prefix = get_string('gradeimport', 'grades') . ': '; + break; + case 'gradeexport': + $prefix = get_string('gradeexport', 'grades') . ': '; + break; + case 'gradereport': + $prefix = get_string('gradereport', 'grades') . ': '; + break; + case 'webservice': + $prefix = get_string('webservice', 'webservice') . ': '; + break; + case 'block': + $prefix = get_string('block') . ': '; + break; case 'mod': - if (get_string_manager()->string_exists('pluginname', $component)) { - return get_string('activity').': '.get_string('pluginname', $component); - } else { - return get_string('activity').': '.get_string('modulename', $component); - } - default: return get_string('pluginname', $component); + $prefix = get_string('activity') . ': '; + break; + + // Default case, just use the plugin name. + default: + $prefix = ''; } + return $prefix . get_string('pluginname', $component); } /** diff --git a/mod/quiz/lang/en/quiz.php b/mod/quiz/lang/en/quiz.php index 1ef7d86b078..10d33de4f54 100644 --- a/mod/quiz/lang/en/quiz.php +++ b/mod/quiz/lang/en/quiz.php @@ -735,6 +735,7 @@ $string['quizordernotrandom'] = 'Order of quiz not shuffled'; $string['quizorderrandom'] = '* Order of quiz is shuffled'; $string['quiz:preview'] = 'Preview quizzes'; $string['quiz:regrade'] = 'Regrade quiz attempts'; +$string['quizreport'] = 'Quiz report'; $string['quiz:reviewmyattempts'] = 'Review your own attempts'; $string['quizsettings'] = 'Quiz settings'; $string['quiz:view'] = 'View quiz information'; diff --git a/mod/quiz/report/grading/lang/en/quiz_grading.php b/mod/quiz/report/grading/lang/en/quiz_grading.php index 2f637922546..cd939b01e2f 100644 --- a/mod/quiz/report/grading/lang/en/quiz_grading.php +++ b/mod/quiz/report/grading/lang/en/quiz_grading.php @@ -48,7 +48,6 @@ $string['graded'] = '(graded)'; $string['gradenextungraded'] = 'Grade next {$a} ungraded attempts'; $string['gradeungraded'] = 'Grade all {$a} ungraded attempts'; $string['grading'] = 'Manual grading'; -$string['grading:componentname'] = 'Manual grading report'; $string['grading:viewidnumber'] = 'See student ID numbers while grading'; $string['grading:viewstudentnames'] = 'See student names while grading'; $string['gradingall'] = 'All {$a} attempts on this question.'; diff --git a/mod/quiz/report/statistics/lang/en/quiz_statistics.php b/mod/quiz/report/statistics/lang/en/quiz_statistics.php index 310364b602d..6c091b2452a 100644 --- a/mod/quiz/report/statistics/lang/en/quiz_statistics.php +++ b/mod/quiz/report/statistics/lang/en/quiz_statistics.php @@ -112,7 +112,6 @@ $string['standarddeviation'] = 'Standard deviation (for {$a})'; $string['standarddeviationq'] = 'Standard deviation'; $string['standarderror'] = 'Standard error (for {$a})'; $string['statistics'] = 'Statistics'; -$string['statistics:componentname'] = 'Quiz statistics report'; $string['statisticsreport'] = 'Statistics report'; $string['statisticsreportgraph'] = 'Statistics for question positions'; $string['statistics:view'] = 'View statistics report'; diff --git a/mod/quiz/report/upgrade.txt b/mod/quiz/report/upgrade.txt index 9c006f2de85..a4b6e3ebeca 100644 --- a/mod/quiz/report/upgrade.txt +++ b/mod/quiz/report/upgrade.txt @@ -2,6 +2,14 @@ This files describes API changes for quiz report plugins. Overview of this plugin type at http://docs.moodle.org/dev/Quiz_reports +=== 3.9 === + +* Quiz report plugins defining capabilities used to require an extra string like + $string['statistics:componentname'] = 'Quiz statistics report'; +in addition to + $string['pluginname'] = 'Statistics'; +This is no longer required. + === 3.8 === * New quiz_attempts_report_table method: \quiz_attempts_report_table::checkbox_col_header()