diff --git a/lib/WeBWorK/ContentGenerator.pm b/lib/WeBWorK/ContentGenerator.pm index 56de76dc12..e96264cd34 100644 --- a/lib/WeBWorK/ContentGenerator.pm +++ b/lib/WeBWorK/ContentGenerator.pm @@ -1196,7 +1196,8 @@ sub systemLink ($c, $urlpath, %options) { my $url = $options{use_abs_url} ? $urlpath->to_abs : $urlpath; for my $name (keys %params) { - $params{$name} = [ $c->param($name) ] if (!defined $params{$name} && defined $c->param($name)); + $params{$name} = [ $c->param($name) ] + if (!defined $params{$name} && defined $c->param($name) && $c->param($name) ne ''); } return %params ? $url->query(%params) : $url; diff --git a/lib/WeBWorK/ContentGenerator/Feedback.pm b/lib/WeBWorK/ContentGenerator/Feedback.pm index 2082d978b2..3ba1af90d6 100644 --- a/lib/WeBWorK/ContentGenerator/Feedback.pm +++ b/lib/WeBWorK/ContentGenerator/Feedback.pm @@ -143,16 +143,11 @@ sub initialize ($c) { my $systemURL = $c->url_for('root')->to_abs; - my $msg = qq/This message was automatically generated by the WeBWorK -system at $systemURL, in response to a request from $remote_host:$remote_port. - -Click this link to see the page from which the user sent feedback: -$emailableURL - -/; + my $msg = sprintf("Message from %s (%s) via WeBWorK at\n%s\n\n", $user->full_name, $user->user_id, $systemURL); + $msg .= "To visit the page from which the user sent feedback, go to:\n$emailableURL\n\n"; if ($feedback) { - $msg .= qq/***** The feedback message: *****\n\n\n$feedback\n\n\n/; + $msg .= sprintf("%s (%s) wrote:\n\n\n%s\n\n\n", $user->full_name, $user->user_id, $feedback); } if ($problem and $verbosity >= 1) { $msg .= @@ -172,6 +167,7 @@ $emailableURL if ($user && $verbosity >= 1) { $msg .= "***** Data about the user: *****\n\n"; $msg .= $c->format_user($user) . "\n"; + $msg .= "$remote_host:$remote_port\n"; } if ($problem && $verbosity >= 1) { diff --git a/lib/WeBWorK/Utils.pm b/lib/WeBWorK/Utils.pm index c1a2467646..e4aa20694d 100644 --- a/lib/WeBWorK/Utils.pm +++ b/lib/WeBWorK/Utils.pm @@ -358,24 +358,23 @@ sub generateURLs ($c, %params) { if ($userName) { my $routePath; - my @args; + my %args; if (defined $params{set_id} && $params{set_id} ne '') { if ($params{problem_id}) { $routePath = $c->url_for('problem_detail', setID => $params{set_id}, problemID => $params{problem_id}); - @args = qw/displayMode showOldAnswers showCorrectAnswers showHints showSolutions/; + for my $name ('displayMode', 'showCorrectAnswers', 'showHints', 'showOldAnswers', 'showSolutions') { + $args{$name} = [ $c->param($name) ] if defined $c->param($name) && $c->param($name) ne ''; + } + $args{showProblemGrader} = 1; } else { $routePath = $c->url_for('problem_list', setID => $params{set_id}); } } else { $routePath = $c->url_for('set_list'); } - $emailableURL = $c->systemLink( - $routePath, - authen => 0, - params => [ 'effectiveUser', @args ], - use_abs_url => 1, - ); - $returnURL = $c->systemLink($routePath, params => [@args]); + $args{effectiveUser} = [ $c->param('effectiveUser') ] if defined $c->param('effectiveUser'); + $emailableURL = $routePath->to_abs->query(map { $_ => $args{$_} } sort keys %args); + $returnURL = $c->systemLink($routePath); } else { $emailableURL = '(not available)'; $returnURL = '';