Skip to content

Commit 688fd34

Browse files
authored
Merge pull request #2707 from drgrice1/resurrection-achievement-reset
Restore previous behavior of the "Scroll of Resurrection" achievement item.
2 parents 1de70d2 + 9fb8bb6 commit 688fd34

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

lib/WeBWorK/AchievementItems/ResurrectGW.pm

+13-8
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use Mojo::Base 'WeBWorK::AchievementItems', -signatures;
1919
# Item to extend the due date on a gateway
2020

2121
use WeBWorK::Utils qw(x);
22-
use WeBWorK::Utils::DateTime qw(between);
22+
use WeBWorK::Utils::DateTime qw(after);
2323

2424
use constant ONE_DAY => 86400;
2525

@@ -35,7 +35,8 @@ sub new ($class) {
3535
}
3636

3737
sub can_use($self, $set, $records) {
38-
return $set->assignment_type =~ /gateway/ && between($set->due_date, $set->due_date + ONE_DAY);
38+
return $set->assignment_type =~ /gateway/
39+
&& (after($set->due_date) || ($set->reduced_scoring_date && after($set->reduced_scoring_date)));
3940
# TODO: Check if a new version can be created, and only allow using this reward in that case.
4041
}
4142

@@ -55,17 +56,21 @@ sub use_item ($self, $set, $records, $c) {
5556

5657
# Add time to the reduced scoring date, due date, and answer date.
5758
if ($set->reduced_scoring_date) {
58-
$set->reduced_scoring_date($set->reduced_scoring_date + ONE_DAY);
59+
$set->reduced_scoring_date(time + ONE_DAY);
5960
$userSet->reduced_scoring_date($set->reduced_scoring_date);
6061
}
61-
$set->due_date($set->due_date + ONE_DAY);
62+
$set->due_date(time + ONE_DAY);
6263
$userSet->due_date($set->due_date);
63-
$set->answer_date($set->answer_date + ONE_DAY);
64-
$userSet->answer_date($set->answer_date);
64+
if ($set->due_date > $set->answer_date) {
65+
$set->answer_date(time + ONE_DAY);
66+
$userSet->answer_date($set->answer_date);
67+
}
6568
$db->putUserSet($userSet);
6669

67-
return $c->maketext('Close date of this test extended by 24 hours to [_1].',
68-
$c->formatDateTime($set->due_date, $c->ce->{studentDateDisplayFormat}));
70+
return $c->maketext(
71+
'This assignment has been reopened and will now close on [_1].',
72+
$c->formatDateTime($set->due_date, $c->ce->{studentDateDisplayFormat})
73+
);
6974
}
7075

7176
1;

lib/WeBWorK/AchievementItems/ResurrectHW.pm

+7-7
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use Mojo::Base 'WeBWorK::AchievementItems', -signatures;
1919
# Item to resurrect a homework for 24 hours
2020

2121
use WeBWorK::Utils qw(x);
22-
use WeBWorK::Utils::DateTime qw(between);
22+
use WeBWorK::Utils::DateTime qw(after);
2323

2424
use constant ONE_DAY => 86400;
2525

@@ -32,7 +32,8 @@ sub new ($class) {
3232
}
3333

3434
sub can_use($self, $set, $records) {
35-
return $set->assignment_type eq 'default' && between($set->due_date, $set->due_date + ONE_DAY);
35+
return $set->assignment_type eq 'default'
36+
&& (after($set->due_date) || ($set->reduced_scoring_date && after($set->reduced_scoring_date)));
3637
}
3738

3839
sub print_form ($self, $set, $records, $c) {
@@ -56,11 +57,11 @@ sub use_item ($self, $set, $records, $c) {
5657

5758
# Add time to the reduced scoring date if it was defined in the first place
5859
if ($set->reduced_scoring_date) {
59-
$set->reduced_scoring_date($set->reduced_scoring_date + ONE_DAY);
60+
$set->reduced_scoring_date(time + ONE_DAY);
6061
$userSet->reduced_scoring_date($set->reduced_scoring_date);
6162
}
6263
# Add time to the close date
63-
$set->due_date($set->due_date + ONE_DAY);
64+
$set->due_date(time + ONE_DAY);
6465
$userSet->due_date($set->due_date);
6566
# This may require also extending the answer date.
6667
if ($set->due_date > $set->answer_date) {
@@ -70,9 +71,8 @@ sub use_item ($self, $set, $records, $c) {
7071
$db->putUserSet($userSet);
7172

7273
return $c->maketext(
73-
'Close date of this assignment extended by 24 hours to [_1].',
74-
$c->formatDateTime($set->due_date, $c->ce->{studentDateDisplayFormat})
75-
);
74+
'This assignment has been reopened and will now close on [_1]. Problems have been rerandomized.',
75+
$c->formatDateTime($set->due_date, $c->ce->{studentDateDisplayFormat}));
7676
}
7777

7878
1;

0 commit comments

Comments
 (0)