@@ -25,10 +25,9 @@ WeBWorK::ContentGenerator::Feedback - Send mail to professors.
25
25
use Data::Dumper;
26
26
use Email::Stuffer;
27
27
use Try::Tiny;
28
- use Text::Wrap qw( wrap) ;
29
28
30
29
use WeBWorK::Upload;
31
- use WeBWorK::Utils qw( decodeAnswers createEmailSenderTransportSMTP fetchEmailRecipients) ;
30
+ use WeBWorK::Utils qw( createEmailSenderTransportSMTP fetchEmailRecipients) ;
32
31
33
32
# request paramaters used
34
33
#
@@ -137,52 +136,18 @@ sub initialize ($c) {
137
136
my $subject = $ce -> {mail }{feedbackSubjectFormat } || ' WeBWorK question from %c: %u set %s/prob %p' ;
138
137
$subject =~ s / %([$chars])/ defined $subject_map {$1 } ? $subject_map {$1 } : ''/ eg ;
139
138
140
- # Get info about remote user.
141
139
my $remote_host = $c -> tx-> remote_address || ' UNKNOWN' ;
142
- my $remote_port = $c -> tx-> remote_port || ' UNKNOWN' ;
143
140
144
- my $systemURL = $c -> url_for(' root' )-> to_abs;
145
-
146
- my $msg = sprintf (" Message from %s (%s ) via WeBWorK at\n %s \n\n " , $user -> full_name, $user -> user_id, $systemURL );
147
- $msg .= " To visit the page from which the user sent feedback, go to:\n $emailableURL \n\n " ;
148
-
149
- if ($feedback ) {
150
- $msg .= sprintf (" %s (%s ) wrote:\n\n\n %s \n\n\n " , $user -> full_name, $user -> user_id, $feedback );
151
- }
152
- if ($problem and $verbosity >= 1) {
153
- $msg .=
154
- qq/ ***** Data about the problem processor: ***** \n\n /
155
- . ' Display Mode: '
156
- . $c -> param(' displayMode' ) . " \n "
157
- . ' Show Old Answers: '
158
- . ($c -> param(' showOldAnswers' ) ? ' yes' : ' no' ) . " \n "
159
- . ' Show Correct Answers: '
160
- . ($c -> param(' showCorrectAnswers' ) ? ' yes' : ' no' ) . " \n "
161
- . ' Show Hints: '
162
- . ($c -> param(' showHints' ) ? ' yes' : ' no' ) . " \n "
163
- . ' Show Solutions: '
164
- . ($c -> param(' showSolutions' ) ? ' yes' : ' no' ) . " \n\n " ;
165
- }
166
-
167
- if ($user && $verbosity >= 1) {
168
- $msg .= " ***** Data about the user: *****\n\n " ;
169
- $msg .= $c -> format_user($user ) . " \n " ;
170
- $msg .= " $remote_host :$remote_port \n " ;
171
- }
172
-
173
- if ($problem && $verbosity >= 1) {
174
- $msg .= " ***** Data about the problem: *****\n\n " ;
175
- $msg .= $c -> format_userproblem($problem ) . " \n " ;
176
- }
177
- if ($set && $verbosity >= 1) {
178
- $msg .= " ***** Data about the homework set: *****\n\n " . $c -> format_userset($set ) . " \n " ;
179
- }
180
- if ($ce && $verbosity >= 2) {
181
- $msg .= " ***** Data about the environment: *****\n\n " . Dumper($ce ) . " \n\n " ;
182
- }
183
-
184
- my $email = Email::Stuffer-> to(join (' ,' , @recipients ))-> subject($subject )-> text_body($msg )
185
- -> header(' X-Remote-Host' => $remote_host );
141
+ my $email = Email::Stuffer-> to(join (' ,' , @recipients ))-> subject($subject )-> html_body($c -> render_to_string(
142
+ ' ContentGenerator/Feedback/feedback_email' ,
143
+ user => $user ,
144
+ emailableURL => $emailableURL ,
145
+ feedback => $feedback ,
146
+ problem => $problem ,
147
+ set => $set ,
148
+ verbosity => $verbosity ,
149
+ remote_host => $remote_host ,
150
+ ))-> header(' X-Remote-Host' => $remote_host );
186
151
if ($ce -> {feedback_sender_email }) {
187
152
my $from_name = $user ? $user -> full_name : $ce -> {generic_sender_name };
188
153
$email -> from(" $from_name <$ce ->{feedback_sender_email}>" )-> reply_to($sender );
@@ -263,81 +228,4 @@ sub page_title ($c) {
263
228
return $c -> ce-> {feedback_button_name } || $c -> maketext(' E-mail Instructor' );
264
229
}
265
230
266
- sub format_user ($c , $user ) {
267
- my $ce = $c -> ce;
268
-
269
- my $result = " User ID: " . $user -> user_id . " \n " ;
270
- $result .= " Name: " . $user -> full_name . " \n " ;
271
- $result .= " Email: " . $user -> email_address . " \n " ;
272
- unless ($ce -> {blockStudentIDinFeedback }) {
273
- $result .= " Student ID: " . $user -> student_id . " \n " ;
274
- }
275
-
276
- my $status_name = $ce -> status_abbrev_to_name($user -> status);
277
- my $status_string =
278
- defined $status_name
279
- ? " $status_name ('" . $user -> status . " ')"
280
- : $user -> status . " (unknown status abbreviation)" ;
281
- $result .= " Status: $status_string \n " ;
282
-
283
- $result .= " Section: " . $user -> section . " \n " ;
284
- $result .= " Recitation: " . $user -> recitation . " \n " ;
285
- $result .= " Comment: " . $user -> comment . " \n " ;
286
-
287
- return $result ;
288
- }
289
-
290
- sub format_userset ($c , $set ) {
291
- my $ce = $c -> ce;
292
-
293
- my $result = " Set ID: " . $set -> set_id . " \n " ;
294
- $result .= " Set header file: " . $set -> set_header . " \n " ;
295
- $result .= " Hardcopy header file: " . $set -> hardcopy_header . " \n " ;
296
-
297
- $result .= " Open date: " . $c -> formatDateTime($set -> open_date) . " \n " ;
298
- $result .= " Due date: " . $c -> formatDateTime($set -> due_date) . " \n " ;
299
- $result .= " Answer date: " . $c -> formatDateTime($set -> answer_date) . " \n " ;
300
- $result .= " Visible: " . ($set -> visible ? " yes" : " no" ) . " \n " ;
301
- $result .= " Assignment type: " . $set -> assignment_type . " \n " ;
302
- if ($set -> assignment_type =~ / gateway/ ) {
303
- $result .= " Attempts per version: " . $set -> assignment_type . " \n " ;
304
- $result .= " Time interval: " . $set -> time_interval . " \n " ;
305
- $result .= " Versions per interval: " . $set -> versions_per_interval . " \n " ;
306
- $result .= " Version time limit: " . $set -> version_time_limit . " \n " ;
307
- $result .= " Version creation time: " . $c -> formatDateTime($set -> version_creation_time) . " \n " ;
308
- $result .= " Problem randorder: " . $set -> problem_randorder . " \n " ;
309
- $result .= " Version last attempt time: " . $set -> version_last_attempt_time . " \n " ;
310
- }
311
-
312
- return $result ;
313
- }
314
-
315
- sub format_userproblem ($c , $problem ) {
316
- my $ce = $c -> ce;
317
-
318
- my $result = " Problem ID: " . $problem -> problem_id . " \n " ;
319
- $result .= " Source file: " . $problem -> source_file . " \n " ;
320
- $result .= " Value: " . $problem -> value . " \n " ;
321
- $result .=
322
- " Max attempts " . ($problem -> max_attempts == -1 ? " unlimited" : $problem -> max_attempts) . " \n " ;
323
- $result .= " Random seed: " . $problem -> problem_seed . " \n " ;
324
- $result .= " Status: " . $problem -> status . " \n " ;
325
- $result .= " Attempted: " . ($problem -> attempted ? " yes" : " no" ) . " \n " ;
326
-
327
- my %last_answer = decodeAnswers($problem -> last_answer);
328
- if (%last_answer ) {
329
- $result .= " Last answer:\n " ;
330
- foreach my $key (sort keys %last_answer ) {
331
- $result .= " \t $key : $last_answer {$key }\n " if $last_answer {$key };
332
- }
333
- } else {
334
- $result .= " Last answer: none\n " ;
335
- }
336
-
337
- $result .= " Number of correct attempts: " . $problem -> num_correct . " \n " ;
338
- $result .= " Number of incorrect attempts: " . $problem -> num_incorrect . " \n " ;
339
-
340
- return $result ;
341
- }
342
-
343
231
1;
0 commit comments