]>
iEval git - gruntmaster-page.git/blob - lib/Gruntmaster/Page/Pb/Entry.pm
1 package Gruntmaster
::Page
::Pb
::Entry
;
6 use parent qw
/Exporter/;
7 our @EXPORT_OK = qw
/generate/;
8 our $VERSION = '0.001';
11 use HTML
::Template
::Compiled
;
13 use POSIX qw
/strftime/;
14 use YAML
::Any qw
/LoadFile/;
15 use File
::Basename qw
/fileparse/;
16 use File
::Slurp qw
/slurp/;
17 use Gruntmaster
::Page
::Common qw
/header footer/;
19 use constant FORMATS
=> [qw
/CPP/];
20 use constant TITLE
=> '<tmpl_var name>';
27 <h1>Submit solution</h1>
28 <form action="https://gm.ieval.ro/action/submit" method="POST" enctype="multipart/form-data">
29 <input type="hidden" name="problem" value="<tmpl_var id>">
30 <tmpl_if_defined contest><input type="hidden" name="contest" value="<tmpl_var contest>"></tmpl_if_defined>
31 <label>File: <input name="prog" required type="file"></label>
33 <label>File format: <select name="prog_format" required>
34 <tmpl_loop formats><option value="<tmpl_var _>"><tmpl_var _></option>
35 </tmpl_loop></select></label>
37 <input type="submit" value="Submit job">
42 $templates{$_} = header
($_, TITLE
) . $templates{$_} for keys %templates;
43 $templates{$_} .= footer
$_ for keys %templates;
46 my ($path, $lang) = @_;
48 $contest = $1 if $path =~ m
,ct
/([^/]*)/,;
49 my $id = ($path =~ m
,pb
/([^/]*)/index,)[0];
50 $path =~ s
,/index\
.html
$,,;
51 my $template = $templates{$_[1]};
52 my $htc = HTML
::Template
::Compiled
->new(scalarref
=> \
$template);
53 flock my $metafh = IO
::File
->new("<$path/meta.yml"), LOCK_SH
;
54 my $meta = LoadFile
"$path/meta.yml";
56 $htc->param(cansubmit
=> 1);
57 if (defined $contest) {
58 my $meta = LoadFile
"ct/$contest/meta.yml";
59 $htc->param(cansubmit
=> time >= $meta->{start
} && time <= $meta->{end
});
60 $htc->param(contest
=> $contest);
62 $htc->param(formats
=> FORMATS
);
63 $htc->param(id
=> $id);
64 $htc->param(name
=> $meta->{name
});
65 $htc->param(statement
=> scalar slurp
"$path/statement.$lang");
This page took 0.058686 seconds and 4 git commands to generate.