sub process_skel {
my ($tree, %args) = @_;
+ $tree->fid('logo')->replace_with(literal scalar read_file "mclogo.svg");
$tree->content_handler(
title => $args{title},
content => literal $args{meat});
$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},
if ($args{contest_stop}) {
$tree->fid('solution')->detach;
$tree->fid('solution_modal')->detach;
- my $score = $tree->fid('score');
- $score->attr('data-start' => $args{open_time});
- $score->attr('data-stop' => $args{contest_stop});
- $score->attr('data-value' => $args{value});
+ $tree->fid('score')->replace_content($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});
$tr->fclass('contest')->namedlink($data->{contest}, $data->{contest_name}) if $data->{contest};
$tr->fclass('contest')->replace_content('None') unless $data->{contest};
$tr->fclass('date')->replace_content(ftime $data->{date});
- $tr->fclass('source')->namedlink("$data->{id}.$data->{extension}", sprintf "%.2fKB %s", $data->{size}/1024, $data->{format});
+ $tr->fclass('source')->namedlink("$data->{id}.$data->{extension}", sprintf "%.2fKB %s", $data->{size}/1024, Plack::App::Gruntmaster::FORMAT_EXTENSION()->{$data->{format}});
$tr->fclass('owner')->namedlink($data->{owner}, $data->{owner_name});
$tr->fclass('result_text')->replace_content($data->{result_text});
$tr->fclass('result_text')->attr(class => "r$data->{result}");