From 05680020e7381f0ef2f2ba47851c041112866ac7 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Tue, 28 Jan 2020 00:56:48 +0000 Subject: [PATCH] MDL-67702 mod_assign: distinct uniqueid value for grading tables. This has the effect of making table sorting and filtering by initials apply only to the current table instance, rather than to all of them. --- mod/assign/gradingtable.php | 4 +++- mod/assign/tests/locallib_test.php | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/mod/assign/gradingtable.php b/mod/assign/gradingtable.php index a8e7192f952..4a9962d8db1 100644 --- a/mod/assign/gradingtable.php +++ b/mod/assign/gradingtable.php @@ -82,7 +82,9 @@ class assign_grading_table extends table_sql implements renderable { $quickgrading, $downloadfilename = null) { global $CFG, $PAGE, $DB, $USER; - parent::__construct('mod_assign_grading'); + + parent::__construct('mod_assign_grading-' . $assignment->get_context()->id); + $this->is_persistent(true); $this->assignment = $assignment; diff --git a/mod/assign/tests/locallib_test.php b/mod/assign/tests/locallib_test.php index 31831a55434..8c51acbebc1 100644 --- a/mod/assign/tests/locallib_test.php +++ b/mod/assign/tests/locallib_test.php @@ -391,7 +391,7 @@ class mod_assign_locallib_testcase extends advanced_testcase { $document = new DOMDocument(); @$document->loadHTML($output); $xpath = new DOMXPath($document); - $this->assertEquals('', $xpath->evaluate('string(//td[@id="mod_assign_grading_r0_c8"])')); + $this->assertEmpty($xpath->evaluate('string(//td[@id="mod_assign_grading-' . $assign->get_context()->id. '_r0_c8"])')); } /** @@ -462,25 +462,30 @@ class mod_assign_locallib_testcase extends advanced_testcase { @$document->loadHTML($output); $xpath = new DOMXPath($document); + // The XPath expression is based on the unique ID of the table. + $xpathuniqueidroot = 'mod_assign_grading-' . $assign->get_context()->id; + // Check status. - $this->assertSame(get_string('submissionstatus_submitted', 'assign'), $xpath->evaluate('string(//td[@id="mod_assign_grading_r0_c4"]/div[@class="submissionstatussubmitted"])')); - $this->assertSame(get_string('submissionstatus_submitted', 'assign'), $xpath->evaluate('string(//td[@id="mod_assign_grading_r3_c4"]/div[@class="submissionstatussubmitted"])')); + $this->assertSame(get_string('submissionstatus_submitted', 'assign'), + $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r0_c4"]/div[@class="submissionstatussubmitted"])')); + $this->assertSame(get_string('submissionstatus_submitted', 'assign'), + $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r3_c4"]/div[@class="submissionstatussubmitted"])')); // Check submission last modified date - $this->assertGreaterThan(0, strtotime($xpath->evaluate('string(//td[@id="mod_assign_grading_r0_c8"])'))); - $this->assertGreaterThan(0, strtotime($xpath->evaluate('string(//td[@id="mod_assign_grading_r3_c8"])'))); + $this->assertGreaterThan(0, strtotime($xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r0_c8"])'))); + $this->assertGreaterThan(0, strtotime($xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r3_c8"])'))); // Check group. - $this->assertSame($group->name, $xpath->evaluate('string(//td[@id="mod_assign_grading_r0_c5"])')); - $this->assertSame($group->name, $xpath->evaluate('string(//td[@id="mod_assign_grading_r3_c5"])')); + $this->assertSame($group->name, $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r0_c5"])')); + $this->assertSame($group->name, $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r3_c5"])')); // Check submission text. - $this->assertSame('Submission text', $xpath->evaluate('string(//td[@id="mod_assign_grading_r0_c9"]/div/div)')); - $this->assertSame('Submission text', $xpath->evaluate('string(//td[@id="mod_assign_grading_r3_c9"]/div/div)')); + $this->assertSame('Submission text', $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r0_c9"]/div/div)')); + $this->assertSame('Submission text', $xpath->evaluate('string(//td[@id="' . $xpathuniqueidroot . '_r3_c9"]/div/div)')); // Check comments can be made. - $this->assertSame(1, (int)$xpath->evaluate('count(//td[@id="mod_assign_grading_r0_c10"]//textarea)')); - $this->assertSame(1, (int)$xpath->evaluate('count(//td[@id="mod_assign_grading_r3_c10"]//textarea)')); + $this->assertEquals(1, $xpath->evaluate('count(//td[@id="' . $xpathuniqueidroot . '_r0_c10"]//textarea)')); + $this->assertEquals(1, $xpath->evaluate('count(//td[@id="' . $xpathuniqueidroot . '_r3_c10"]//textarea)')); } public function test_show_intro() {