]> iEval git - plack-app-gruntmaster.git/blobdiff - lib/Plack/App/Gruntmaster/HTML.pm
Fix problem job log link during contests
[plack-app-gruntmaster.git] / lib / Plack / App / Gruntmaster / HTML.pm
index 1e0f7889870101de3c74c793ac537e51bfc99b98..acb45c049c8eb42c0cfbe08c43e804ff1f207f9d 100644 (file)
@@ -50,11 +50,11 @@ sub render {
 }
 
 sub render_article {
-       my ($art, $lang) = @_;
+       my ($art, $lang, %args) = @_;
        $lang //= 'en';
        my $title = read_file "a/$art.$lang.title";
        my $meat  = read_file "a/$art.$lang";
-       _render('skel', $lang, title => $title , meat => $meat)
+       _render('skel', $lang, title => $title , meat => $meat, %args)
 }
 
 sub _render {
@@ -66,6 +66,9 @@ sub _render {
        $tree->defmap(smap => \%args);
        my $process = __PACKAGE__->can("process_$tmpl");
        $process->($tree, %args) if $process;
+       $_->detach for $tree->look_down(static => $args{static} ? 'no' : 'yes');
+       $_->attr('static', undef) for $tree->look_down(sub {$_[0]->attr('static')});
+       $_->attr('smap', undef) for $tree->look_down(sub {$_[0]->attr('defmap')});
        $tree->as_HTML;
 }
 
@@ -143,7 +146,6 @@ sub process_pb_entry {
        $tree->fid('owner')->edit_href(sub{s/owner_id/$args{owner}/});
        $tree->fid('job_log')->edit_href(sub{s/problem_id/$args{id}/});
        $tree->fid('solution')->edit_href(sub{s/problem_id/$args{id}/});
-       $tree->fid('job_log')->edit_href(sub{$_ .= "&private=$args{private}"}) if $args{private};
        $tree->content_handler(
                statement => literal $args{statement},
                level     => ucfirst $args{level},
@@ -163,6 +165,7 @@ sub process_pb_entry {
                $score->attr('data-value'  => $args{value});
                $tree->fid('countdown')->attr('data-stop' => $args{contest_stop});
        } else {
+               $tree->fid('job_log')->edit_href(sub{$_ .= "&private=$args{private}"}) if $args{private};
                $tree->fid('solution')->detach unless $args{solution};
                $_->detach for $tree->fclass('rc'); # requires contest
                $tree->fid('solution_modal')->fclass('modal-body')->replace_content(literal $args{solution});
This page took 0.019097 seconds and 4 git commands to generate.