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