Skip to content

Commit 70861c8

Browse files
committed
Bring back the old text message for a text fallback.
1 parent c961f98 commit 70861c8

File tree

1 file changed

+121
-2
lines changed

1 file changed

+121
-2
lines changed

lib/WeBWorK/ContentGenerator/Feedback.pm

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use Email::Stuffer;
2727
use Try::Tiny;
2828

2929
use WeBWorK::Upload;
30-
use WeBWorK::Utils qw(createEmailSenderTransportSMTP fetchEmailRecipients);
30+
use WeBWorK::Utils qw(decodeAnswers createEmailSenderTransportSMTP fetchEmailRecipients);
3131

3232
# request paramaters used
3333
#
@@ -136,7 +136,49 @@ sub initialize ($c) {
136136
my $subject = $ce->{mail}{feedbackSubjectFormat} || 'WeBWorK question from %c: %u set %s/prob %p';
137137
$subject =~ s/%([$chars])/defined $subject_map{$1} ? $subject_map{$1} : ''/eg;
138138

139+
# Get info about remote user.
139140
my $remote_host = $c->tx->remote_address || 'UNKNOWN';
141+
my $remote_port = $c->tx->remote_port || 'UNKNOWN';
142+
143+
my $systemURL = $c->url_for('root')->to_abs;
144+
145+
my $msg = sprintf("Message from %s (%s) via WeBWorK at\n%s\n\n", $user->full_name, $user->user_id, $systemURL);
146+
$msg .= "To visit the page from which the user sent feedback, go to:\n$emailableURL\n\n";
147+
148+
if ($feedback) {
149+
$msg .= sprintf("%s (%s) wrote:\n\n\n%s\n\n\n", $user->full_name, $user->user_id, $feedback);
150+
}
151+
if ($problem and $verbosity >= 1) {
152+
$msg .=
153+
qq/***** Data about the problem processor: ***** \n\n/
154+
. 'Display Mode: '
155+
. $c->param('displayMode') . "\n"
156+
. 'Show Old Answers: '
157+
. ($c->param('showOldAnswers') ? 'yes' : 'no') . "\n"
158+
. 'Show Correct Answers: '
159+
. ($c->param('showCorrectAnswers') ? 'yes' : 'no') . "\n"
160+
. 'Show Hints: '
161+
. ($c->param('showHints') ? 'yes' : 'no') . "\n"
162+
. 'Show Solutions: '
163+
. ($c->param('showSolutions') ? 'yes' : 'no') . "\n\n";
164+
}
165+
166+
if ($user && $verbosity >= 1) {
167+
$msg .= "***** Data about the user: *****\n\n";
168+
$msg .= $c->format_user($user) . "\n";
169+
$msg .= "$remote_host:$remote_port\n";
170+
}
171+
172+
if ($problem && $verbosity >= 1) {
173+
$msg .= "***** Data about the problem: *****\n\n";
174+
$msg .= $c->format_userproblem($problem) . "\n";
175+
}
176+
if ($set && $verbosity >= 1) {
177+
$msg .= "***** Data about the homework set: *****\n\n" . $c->format_userset($set) . "\n";
178+
}
179+
if ($ce && $verbosity >= 2) {
180+
$msg .= "***** Data about the environment: *****\n\n" . Dumper($ce) . "\n\n";
181+
}
140182

141183
my $email = Email::Stuffer->to(join(',', @recipients))->subject($subject)->html_body($c->render_to_string(
142184
'ContentGenerator/Feedback/feedback_email',
@@ -147,7 +189,7 @@ sub initialize ($c) {
147189
set => $set,
148190
verbosity => $verbosity,
149191
remote_host => $remote_host,
150-
))->header('X-Remote-Host' => $remote_host);
192+
))->text_body($msg)->header('X-Remote-Host' => $remote_host);
151193
if ($ce->{feedback_sender_email}) {
152194
my $from_name = $user ? $user->full_name : $ce->{generic_sender_name};
153195
$email->from("$from_name <$ce->{feedback_sender_email}>")->reply_to($sender);
@@ -228,4 +270,81 @@ sub page_title ($c) {
228270
return $c->ce->{feedback_button_name} || $c->maketext('E-mail Instructor');
229271
}
230272

273+
sub format_user ($c, $user) {
274+
my $ce = $c->ce;
275+
276+
my $result = "User ID: " . $user->user_id . "\n";
277+
$result .= "Name: " . $user->full_name . "\n";
278+
$result .= "Email: " . $user->email_address . "\n";
279+
unless ($ce->{blockStudentIDinFeedback}) {
280+
$result .= "Student ID: " . $user->student_id . "\n";
281+
}
282+
283+
my $status_name = $ce->status_abbrev_to_name($user->status);
284+
my $status_string =
285+
defined $status_name
286+
? "$status_name ('" . $user->status . "')"
287+
: $user->status . " (unknown status abbreviation)";
288+
$result .= "Status: $status_string\n";
289+
290+
$result .= "Section: " . $user->section . "\n";
291+
$result .= "Recitation: " . $user->recitation . "\n";
292+
$result .= "Comment: " . $user->comment . "\n";
293+
294+
return $result;
295+
}
296+
297+
sub format_userset ($c, $set) {
298+
my $ce = $c->ce;
299+
300+
my $result = "Set ID: " . $set->set_id . "\n";
301+
$result .= "Set header file: " . $set->set_header . "\n";
302+
$result .= "Hardcopy header file: " . $set->hardcopy_header . "\n";
303+
304+
$result .= "Open date: " . $c->formatDateTime($set->open_date) . "\n";
305+
$result .= "Due date: " . $c->formatDateTime($set->due_date) . "\n";
306+
$result .= "Answer date: " . $c->formatDateTime($set->answer_date) . "\n";
307+
$result .= "Visible: " . ($set->visible ? "yes" : "no") . "\n";
308+
$result .= "Assignment type: " . $set->assignment_type . "\n";
309+
if ($set->assignment_type =~ /gateway/) {
310+
$result .= "Attempts per version: " . $set->assignment_type . "\n";
311+
$result .= "Time interval: " . $set->time_interval . "\n";
312+
$result .= "Versions per interval: " . $set->versions_per_interval . "\n";
313+
$result .= "Version time limit: " . $set->version_time_limit . "\n";
314+
$result .= "Version creation time: " . $c->formatDateTime($set->version_creation_time) . "\n";
315+
$result .= "Problem randorder: " . $set->problem_randorder . "\n";
316+
$result .= "Version last attempt time: " . $set->version_last_attempt_time . "\n";
317+
}
318+
319+
return $result;
320+
}
321+
322+
sub format_userproblem ($c, $problem) {
323+
my $ce = $c->ce;
324+
325+
my $result = "Problem ID: " . $problem->problem_id . "\n";
326+
$result .= "Source file: " . $problem->source_file . "\n";
327+
$result .= "Value: " . $problem->value . "\n";
328+
$result .=
329+
"Max attempts " . ($problem->max_attempts == -1 ? "unlimited" : $problem->max_attempts) . "\n";
330+
$result .= "Random seed: " . $problem->problem_seed . "\n";
331+
$result .= "Status: " . $problem->status . "\n";
332+
$result .= "Attempted: " . ($problem->attempted ? "yes" : "no") . "\n";
333+
334+
my %last_answer = decodeAnswers($problem->last_answer);
335+
if (%last_answer) {
336+
$result .= "Last answer:\n";
337+
foreach my $key (sort keys %last_answer) {
338+
$result .= "\t$key: $last_answer{$key}\n" if $last_answer{$key};
339+
}
340+
} else {
341+
$result .= "Last answer: none\n";
342+
}
343+
344+
$result .= "Number of correct attempts: " . $problem->num_correct . "\n";
345+
$result .= "Number of incorrect attempts: " . $problem->num_incorrect . "\n";
346+
347+
return $result;
348+
}
349+
231350
1;

0 commit comments

Comments
 (0)