|
1 | 1 | % use WeBWorK::Utils qw(decodeAnswers); |
2 | 2 | % use WeBWorK::Utils::Sets qw(format_set_name_display); |
3 | 3 | % |
| 4 | +% my $yes = maketext('yes'); |
| 5 | +% my $no = maketext('no'); |
| 6 | +% |
4 | 7 | <html> |
5 | 8 | <body> |
6 | 9 | <p> |
7 | | - % if ($problem) { |
8 | | - Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at |
9 | | - <%= $ce->{institutionName} %> (sent from |
10 | | - <%= link_to format_set_name_display($set->set_id) . ', #' . $problem->problem_id => $emailableURL %>). |
11 | | - % } elsif ($set) { |
12 | | - Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at |
13 | | - <%= $ce->{institutionName} %> |
14 | | - (sent from <%= link_to format_set_name_display($set->set_id) => $emailableURL %>). |
15 | | - % } else { |
16 | | - Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at |
17 | | - <%= $ce->{institutionName} %> (sent from <%= link_to 'this page' => $emailableURL %>). |
18 | | - % } |
| 10 | + <%== maketext('Message from [_1] ([_2]) via WeBWorK at [_3] (sent from [_4]).', |
| 11 | + $user->full_name, $user->user_id, $ce->{institutionName}, |
| 12 | + $problem ? link_to(format_set_name_display($set->set_id) . ', #' . $problem->problem_id, $emailableURL) |
| 13 | + : $set ? link_to(format_set_name_display($set->set_id), $emailableURL) |
| 14 | + : link_to('this page', $emailableURL) |
| 15 | + ) =%> |
19 | 16 | </p> |
20 | 17 | % if ($numRecipients > 1) { |
21 | 18 | <p><%= maketext('Message delivered to multiple recipients. Consider using reply-all.') =%></p> |
|
35 | 32 | <table style="border-collapse: collapse; margin-bottom: 1rem"> |
36 | 33 | <thead> |
37 | 34 | <tr><th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
38 | | - background-color: lightgray" colspan="2">Data about the problem</th></tr> |
| 35 | + background-color: lightgray" colspan="2"><%= maketext('Data about the problem') %></th></tr> |
39 | 36 | </thead> |
40 | 37 | <tbody> |
41 | 38 | % my @rows = ( |
42 | | - % [ 'Problem ID', $problem->problem_id ], |
43 | | - % [ 'Source file', $problem->source_file ], |
44 | | - % [ 'Value', $problem->value ], |
45 | | - % [ 'Max attempts', $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts ], |
46 | | - % [ 'Random seed', $problem->problem_seed ], |
47 | | - % [ 'Status', $problem->status ], |
48 | | - % [ 'Attempted', $problem->attempted ? 'yes' : 'no' ], |
49 | | - % [ 'Correct attempts', $problem->num_correct ], |
50 | | - % [ 'Incorrect attempts', $problem->num_incorrect ] |
| 39 | + % [ maketext('Problem ID'), $problem->problem_id ], |
| 40 | + % [ maketext('Source file'), $problem->source_file ], |
| 41 | + % [ maketext('Value'), $problem->value ], |
| 42 | + % [ maketext('Max attempts'), |
| 43 | + % $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts ], |
| 44 | + % [ maketext('Random seed'), $problem->problem_seed ], |
| 45 | + % [ maketext('Status'), $problem->status ], |
| 46 | + % [ maketext('Attempted'), $problem->attempted ? $yes : $no ], |
| 47 | + % [ maketext('Correct attempts'), $problem->num_correct ], |
| 48 | + % [ maketext('Incorrect attempts'), $problem->num_incorrect ] |
51 | 49 | % ); |
52 | 50 | % for (@rows) { |
53 | 51 | <tr> |
|
57 | 55 | % } |
58 | 56 | % my %last_answer = decodeAnswers($problem->last_answer); |
59 | 57 | <tr style="border-top: solid 1pt"> |
60 | | - <th style="text-align: left; padding: 0.25rem; vertical-align: baseline">Last submission:</th> |
| 58 | + <th style="text-align: left; padding: 0.25rem; vertical-align: baseline"> |
| 59 | + <%= maketext('Last submission:') =%> |
| 60 | + </th> |
61 | 61 | % if (%last_answer) { |
62 | | - <td style="text-align: left; padding: 0.25rem; padding-top: 0"><table style="border-collapse: collapse"> |
63 | | - % for my $key (sort keys %last_answer) { |
64 | | - % if ($last_answer{$key}) { |
65 | | - <tr> |
66 | | - <td style="text-align: left; padding: 0.25rem"><%= $key %>:</td> |
67 | | - <td style="text-align: left; padding: 0.25rem"><%= $last_answer{$key} %></td> |
68 | | - </tr> |
69 | | - % } |
70 | | - % } |
71 | | - </table></td> |
| 62 | + <td style="text-align: left; padding: 0.25rem; padding-top: 0"> |
| 63 | + <table style="border-collapse: collapse"> |
| 64 | + % for my $key (sort keys %last_answer) { |
| 65 | + % if ($last_answer{$key}) { |
| 66 | + <tr> |
| 67 | + <td style="text-align: left; padding: 0.25rem"><%= $key %>:</td> |
| 68 | + <td style="text-align: left; padding: 0.25rem"> |
| 69 | + <%= $last_answer{$key} %> |
| 70 | + </td> |
| 71 | + </tr> |
| 72 | + % } |
| 73 | + % } |
| 74 | + </table> |
| 75 | + </td> |
72 | 76 | % } else { |
73 | | - <td style="text-align: left; padding: 0.25rem">none</td> |
| 77 | + <td style="text-align: left; padding: 0.25rem"><%= maketext('none') %></td> |
74 | 78 | % } |
75 | 79 | </tr> |
76 | 80 | </tbody> |
|
80 | 84 | <table style="border-collapse: collapse; margin-bottom: 1rem"> |
81 | 85 | <thead> |
82 | 86 | <tr><th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
83 | | - background-color: lightgray" colspan="2">Data about the assignment</th></tr> |
| 87 | + background-color: lightgray" colspan="2"><%= maketext('Data about the assignment') %></th></tr> |
84 | 88 | </thead> |
85 | 89 | <tbody> |
86 | 90 | % my @rows = ( |
87 | | - % [ 'Set ID', $set->set_id ], |
88 | | - % [ 'Set header file', $set->set_header ], |
89 | | - % [ 'Hardcopy header file', $set->hardcopy_header ], |
90 | | - % [ 'Open date', $c->formatDateTime($set->open_date) ], |
91 | | - % [ 'Close date', $c->formatDateTime($set->due_date) ], |
92 | | - % [ 'Answer date', $c->formatDateTime($set->answer_date) ], |
93 | | - % [ 'Visible', $set->visible ? 'yes' : 'no' ], |
94 | | - % [ 'Assignment type', $set->assignment_type ] |
| 91 | + % [ maketext('Set ID'), $set->set_id ], |
| 92 | + % [ maketext('Set header file'), $set->set_header ], |
| 93 | + % [ maketext('Hardcopy header file'), $set->hardcopy_header ], |
| 94 | + % [ maketext('Open date'), $c->formatDateTime($set->open_date) ], |
| 95 | + % [ maketext('Close date'), $c->formatDateTime($set->due_date) ], |
| 96 | + % [ maketext('Answer date'), $c->formatDateTime($set->answer_date) ], |
| 97 | + % [ maketext('Visible'), $set->visible ? $yes : $no ], |
| 98 | + % [ maketext('Assignment type'), $set->assignment_type ] |
95 | 99 | % ); |
96 | 100 | % if ($set->assignment_type =~ /gateway/) { |
97 | 101 | % push @rows, ( |
98 | | - % [ 'Attempts per version', $set->attempts_per_version ], |
99 | | - % [ 'Time interval', $set->time_interval ], |
100 | | - % [ 'Versions per interval', $set->versions_per_interval ], |
101 | | - % [ 'Version time limit', $set->version_time_limit ], |
102 | | - % [ 'Version creation time', $c->formatDateTime($set->version_creation_time) ], |
103 | | - % [ 'Problem randorder', $set->problem_randorder ], |
104 | | - % [ 'Version last attempt time', $set->version_last_attempt_time ] |
| 102 | + % [ maketext('Attempts per version'), $set->attempts_per_version ], |
| 103 | + % [ maketext('Time interval'), $set->time_interval ], |
| 104 | + % [ maketext('Versions per interval'), $set->versions_per_interval ], |
| 105 | + % [ maketext('Version time limit'), $set->version_time_limit ], |
| 106 | + % [ maketext('Version creation time'), $c->formatDateTime($set->version_creation_time) ], |
| 107 | + % [ maketext('Problem randorder'), $set->problem_randorder ], |
| 108 | + % [ maketext('Version last attempt time'), $set->version_last_attempt_time ] |
105 | 109 | % ); |
106 | 110 | % } |
107 | 111 | % for (@rows) { |
|
116 | 120 | % if ($problem && $verbosity >= 1) { |
117 | 121 | <table style="border-collapse: collapse; margin-bottom: 1rem"> |
118 | 122 | <thead> |
119 | | - <tr><th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
120 | | - background-color: lightgray" colspan="2">Data about the problem processor</th></tr> |
| 123 | + <tr> |
| 124 | + <th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
| 125 | + background-color: lightgray" colspan="2"> |
| 126 | + <%= maketext('Data about the problem processor') =%> |
| 127 | + </th> |
| 128 | + </tr> |
121 | 129 | </thead> |
122 | 130 | <tbody> |
123 | 131 | % my @rows = ( |
124 | | - % [ 'Display Mode', param('displayMode') ], |
125 | | - % [ 'Show Old Answers', param('showOldAnswers') ? 'yes' : 'no' ], |
126 | | - % [ 'Show Correct Answers', param('showCorrectAnswers') ? 'yes' : 'no' ], |
127 | | - % [ 'Show Hints', param('showHints') ? 'yes' : 'no' ], |
128 | | - % [ 'Show Solutions', param('showSolutions') ? 'yes' : 'no' ] |
| 132 | + % [ maketext('Display Mode'), param('displayMode') ], |
| 133 | + % [ maketext('Show Old Answers'), param('showOldAnswers') ? $yes : $no ], |
| 134 | + % [ maketext('Show Correct Answers'), param('showCorrectAnswers') ? $yes : $no ], |
| 135 | + % [ maketext('Show Hints'), param('showHints') ? $yes : $no ], |
| 136 | + % [ maketext('Show Solutions'), param('showSolutions') ? $yes : $no ] |
129 | 137 | % ); |
130 | 138 | % for (@rows) { |
131 | 139 | <tr> |
|
141 | 149 | <table style="border-collapse: collapse; margin-bottom: 1rem"> |
142 | 150 | <thead> |
143 | 151 | <tr><th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
144 | | - background-color: lightgray" colspan="2">Data about the user</th></tr> |
| 152 | + background-color: lightgray" colspan="2"><%= maketext('Data about the user') %></th></tr> |
145 | 153 | </thead> |
146 | 154 | <tbody> |
147 | 155 | % my @rows = ( |
148 | | - % [ 'User ID', $user->user_id ], |
149 | | - % [ 'Name', $user->full_name ], |
150 | | - % [ 'Email', $user->email_address ] |
| 156 | + % [ maketext('User ID'), $user->user_id ], |
| 157 | + % [ maketext('Name'), $user->full_name ], |
| 158 | + % [ maketext('Email'), $user->email_address ] |
151 | 159 | % ); |
152 | 160 | % unless ($ce->{blockStudentIDinFeedback}) { push @rows, ['Student ID', $user->student_id]; } |
153 | 161 | % my $status_name = $ce->status_abbrev_to_name($user->status); |
154 | 162 | % my $status_string = |
155 | 163 | % defined $status_name |
156 | 164 | % ? "$status_name ('" . $user->status . q{')} |
157 | | - % : $user->status . ' (unknown status abbreviation)'; |
| 165 | + % : maketext('[_1] (unknown status abbreviation)', $user->status); |
158 | 166 | % push @rows, ( |
159 | | - % [ 'Status', $status_string ], |
160 | | - % [ 'Section', $user->section ], |
161 | | - % [ 'Recitation', $user->recitation ], |
162 | | - % [ 'Comment', $user->comment ], |
163 | | - % [ 'IP Address', $remote_host ] |
| 167 | + % [ maketext('Status'), $status_string ], |
| 168 | + % [ maketext('Section'), $user->section ], |
| 169 | + % [ maketext('Recitation'), $user->recitation ], |
| 170 | + % [ maketext('Comment'), $user->comment ], |
| 171 | + % [ maketext('IP Address'), $remote_host ] |
164 | 172 | %); |
165 | 173 | % for (@rows) { |
166 | 174 | <tr> |
|
175 | 183 | <table style="border-collapse: collapse"> |
176 | 184 | <thead> |
177 | 185 | <tr><th style="text-align: left; padding: 0.25rem; border: 1px solid black; |
178 | | - background-color: lightgray" colspan="2">Data about the environment</th></tr> |
| 186 | + background-color: lightgray" colspan="2"><%= maketext('Data about the environment') %></th></tr> |
179 | 187 | </thead> |
180 | 188 | <tbody> |
181 | 189 | <tr><td style="text-align: left; padding: 0.25rem"><pre><%= dumper($ce) %></pre></td></tr> |
|
0 commit comments