Skip to content

Commit de9ea6a

Browse files
committed
Fix the generated image file endpoint and clean up the PTX static rendering.
1 parent b252095 commit de9ea6a

3 files changed

Lines changed: 38 additions & 43 deletions

File tree

conf/pg_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ directories:
5151
- $pg_root/macros/parsers
5252
- $pg_root/macros/ui
5353
- $pg_root/macros/deprecated
54-
- /opt/renderer/private/macros
54+
- $render_root/private/macros
5555

5656
URLs:
5757
# The public URL of the html directory above.

lib/RenderApp/Controller/Render.pm

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
package RenderApp::Controller::Render;
33
use Mojo::Base 'Mojolicious::Controller', -async_await;
44

5-
use Mojo::DOM;
65
use Mojo::JSON qw(encode_json decode_json);
76
use Crypt::JWT qw(encode_jwt decode_jwt);
87
use Time::HiRes qw/time/;
@@ -215,26 +214,14 @@ async sub problem {
215214

216215
async sub render_ptx {
217216
my $c = shift;
218-
my $p = $c->req->params->to_hash;
217+
219218
$c->render_later;
220-
my $res = await Mojo::IOLoop->subprocess->run_p(sub {
221-
my $pg = WeBWorK::PreTeXt::render_ptx($p);
222-
223-
my $dom = Mojo::DOM->new->xml(1);
224-
for my $answer (sort keys %{ $pg->{answers} }) {
225-
$dom->append_content($dom->new_tag(
226-
$answer, map { $_ => ($pg->{answers}{$answer}{$_} // '') } keys %{ $pg->{answers}{$answer} }
227-
));
228-
}
229-
$dom->wrap_content('<answerhashes></answerhashes>');
230-
my $answerXML = $dom->to_string;
231-
# <?xml verion=\"1.0\"?>\n
232-
return "<webwork>\n$pg->{body}\n$answerXML</webwork>";
233-
})->catch(sub {
234-
my $err = shift;
235-
return "error: $err";
236-
});
237-
return $c->render(text => "$res");
219+
my $res = await WeBWorK::PreTeXt::render_ptx($c->req->params->to_hash);
220+
221+
return $c->render(text => $res) unless ref($res) eq 'HASH';
222+
223+
$c->res->headers->content_type('text/xml; charset=utf-8');
224+
return $c->render(template => 'RPCRenderFormats/ptx', %$res);
238225
}
239226

240227
async sub sendAnswerJWT {

lib/WeBWorK/PreTeXt.pm

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,45 @@
11
package WeBWorK::PreTeXt;
22
use Mojo::Base 'Mojolicious::Controller', -async_await;
33

4+
use Mojo::DOM;
5+
use Mojo::IOLoop;
46
use Data::Structure::Util qw(unbless);
57

6-
use warnings;
7-
use strict;
8-
98
use lib "$ENV{PG_ROOT}/lib";
109
use WeBWorK::PG;
1110

1211
sub render_ptx {
1312
my $p = shift;
1413
my $source = $p->{rawProblemSource};
15-
my $pg = WeBWorK::PG->new(
16-
showSolutions => 1,
17-
showHints => 1,
18-
processAnswers => 1,
19-
displayMode => 'PTX',
20-
language_subroutine => WeBWorK::PG::Localize::getLoc('en'),
21-
problemSeed => $p->{problemSeed} // 1234,
22-
$p->{problemUUID} ? (problemUUID => $p->{problemUUID}) : (),
23-
$p->{templateDirectory} ? (templateDirectory => $p->{templateDirectory}) : (),
24-
$p->{tempDirectory} ? (tempDirectory => $p->{tempDirectory}) : (),
25-
$p->{sourceFilePath} ? (sourceFilePath => $p->{sourceFilePath}) : (),
26-
$source ? (r_source => \$source) : ()
27-
);
2814

29-
my $ret = {
30-
body => $pg->{body_text},
31-
answers => unbless($pg->{answers})
32-
};
15+
return Mojo::IOLoop->subprocess->run_p(sub {
16+
my $pg = WeBWorK::PG->new(
17+
showSolutions => 1,
18+
showHints => 1,
19+
processAnswers => 1,
20+
displayMode => 'PTX',
21+
language_subroutine => WeBWorK::PG::Localize::getLoc('en'),
22+
problemSeed => $p->{problemSeed} // 1234,
23+
$p->{problemUUID} ? (problemUUID => $p->{problemUUID}) : (),
24+
$p->{sourceFilePath} ? (sourceFilePath => $p->{sourceFilePath}) : (),
25+
$source ? (r_source => \$source) : ()
26+
);
27+
28+
my $dom = Mojo::DOM->new->xml(1);
29+
for my $answer (sort keys %{ $pg->{answers} }) {
30+
$dom->append_content($dom->new_tag(
31+
$answer, map { $_ => ($pg->{answers}{$answer}{$_} // '') } keys %{ $pg->{answers}{$answer} }
32+
));
33+
}
34+
$dom->wrap_content('<answerhashes></answerhashes>');
35+
36+
my $ret = { problemText => $pg->{body_text}, answerhashXML => $dom->to_string };
3337

34-
$pg->free;
35-
return $ret;
38+
$pg->free;
39+
return $ret;
40+
})->catch(sub {
41+
my $err = shift;
42+
return "error: $err";
43+
});
3644
}
3745
1;

0 commit comments

Comments
 (0)