Skip to content

Commit

Permalink
Merge branch 'MDL-74505-master' of https://github.com/JBThong/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
junpataleta committed Jul 5, 2022
2 parents 10c837f + def8753 commit d3565b6
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 12 deletions.
1 change: 1 addition & 0 deletions lang/en/deprecated.txt
Expand Up @@ -82,3 +82,4 @@ close,core_contentbank
notflagged,core_question
cannotswitcheditmodeon,core_error
multilangforceold,core_admin
nopermissionmove,core_question
5 changes: 4 additions & 1 deletion lang/en/question.php
Expand Up @@ -247,7 +247,7 @@
$string['needtochoosecat'] = 'You need to choose a category to move this question to or press \'cancel\'.';
$string['nocate'] = 'No such category {$a}!';
$string['nopermissionadd'] = 'You don\'t have permission to add questions here.';
$string['nopermissionmove'] = 'You don\'t have permission to move questions from here. You must save the question in this category or save it as a new question.';
$string['nopermissionedit'] = 'You don\'t have permission to edit questions from here.';
$string['noprobs'] = 'No problems found in your question database.';
$string['noquestions'] = 'No questions were found that could be exported. Make sure that you have selected a category to export that contains questions.';
$string['noquestionsinfile'] = 'There are no questions in the import file';
Expand Down Expand Up @@ -501,3 +501,6 @@

// Deprecated since Moodle 4.0.
$string['notflagged'] = 'Not flagged';

// Deprecated since Moodle 4.1.
$string['nopermissionmove'] = 'You don\'t have permission to move questions from here. You must save the question in this category or save it as a new question.';
39 changes: 32 additions & 7 deletions question/tests/behat/edit_questions.feature
Expand Up @@ -20,12 +20,9 @@ Feature: A teacher can edit questions in the question bank
And the following "questions" exist:
| questioncategory | qtype | name | questiontext |
| Test questions | essay | Test question to be edited | Write about whatever you want |
And I log in as "teacher1"
And I am on "Course 1" course homepage
And I navigate to "Question bank" in current page administration

Scenario: Edit a previously created question
When I choose "Edit question" action for "Test question to be edited" in the question bank
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the following fields to these values:
| Question name | Edited question name |
| Question text | Write a lot about what you want |
Expand All @@ -34,8 +31,36 @@ Feature: A teacher can edit questions in the question bank
And I should not see "Test question to be edited"
And "Edited question name" row "Created by" column of "categoryquestions" table should contain "Teacher 1"

Scenario: Edit a previously created question without permission 'moodle/question:moveall' and 'moodle/question:movemine'
Given I log in as "admin"
And the following "permission overrides" exist:
| capability | permission | role | contextlevel | reference |
| moodle/question:movemine | Prevent | editingteacher | System | |
| moodle/question:moveall | Prevent | editingteacher | System | |
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the following fields to these values:
| Question name | Edited question name |
| Question text | Write a lot about what you want |
And I press "id_submitbutton"
Then I should see "Edited question name"
And I should not see "Test question to be edited"
And "Edited question name" row "Created by" column of "categoryquestions" table should contain "Teacher 1"

Scenario: Edit a previously created question without permission 'moodle/question:editall' and 'moodle/question:editmine'
Given I log in as "admin"
And the following "permission overrides" exist:
| capability | permission | role | contextlevel | reference |
| moodle/question:editmine | Prevent | editingteacher | System | |
| moodle/question:editall | Prevent | editingteacher | System | |
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the following fields to these values:
| Question name | Edited question name |
| Question text | Write a lot about what you want |
And I press "id_submitbutton"
Then I should see "You don't have permission to edit questions from here."

Scenario: Editing a question can be cancelled
When I choose "Edit question" action for "Test question to be edited" in the question bank
When I am on the "Test question to be edited" "core_question > edit" page logged in as "teacher1"
And I set the field "Question name" to "Edited question name"
And I press "Cancel"
Then I should see "Test question to be edited"
Expand All @@ -45,7 +70,7 @@ Feature: A teacher can edit questions in the question bank
Given the following "questions" exist:
| questioncategory | qtype | name | idnumber |
| Test questions | essay | Question with idnumber | frog |
And I reload the page
When I am on the "Course 1" "core_question > course question bank" page logged in as "teacher1"
Then I should see "frog" in the "Question with idnumber" "table_row"
When I choose "Edit question" action for "Question with idnumber" in the question bank
And I set the field "ID number" to ""
Expand All @@ -56,7 +81,7 @@ Feature: A teacher can edit questions in the question bank
Given the following "questions" exist:
| questioncategory | qtype | name | questiontext |
| Test questions | missingtype | Broken question | Write something |
When I reload the page
When I am on the "Course 1" "core_question > course question bank" page logged in as "teacher1"
Then "Edit question" "link" should not exist in the "Broken question" "table_row"
And "Duplicate" "link" should not exist in the "Broken question" "table_row"
And "Manage tags" "link" should exist in the "Broken question" "table_row"
Expand Down
8 changes: 4 additions & 4 deletions question/type/edit_question_form.php
Expand Up @@ -846,11 +846,11 @@ public function validation($fromform, $files) {
global $DB;

$errors = parent::validation($fromform, $files);

// Make sure that the user can edit the question.
if (empty($fromform['makecopy']) && isset($this->question->id)
&& ($this->question->formoptions->canedit ||
$this->question->formoptions->cansaveasnew)
&& empty($fromform['usecurrentcat']) && !$this->question->formoptions->canmove) {
$errors['currentgrp'] = get_string('nopermissionmove', 'question');
&& !$this->question->formoptions->canedit) {
$errors['currentgrp'] = get_string('nopermissionedit', 'question');
}

// Category.
Expand Down

0 comments on commit d3565b6

Please sign in to comment.