]>
iEval git - plack-app-gruntmaster.git/blob - Gruntmaster/Page/Ct.pm
1 package Gruntmaster
::Page
::Ct
;
6 use parent qw
/Exporter/;
7 our @EXPORT_OK = qw
/generate/;
8 our $VERSION = '0.001';
10 use constant TITLE
=> 'Contests';
13 use HTML
::Template
::Compiled
;
15 use POSIX qw
/strftime/;
16 use YAML
::Any qw
/LoadFile/;
17 use Gruntmaster
::Page
::Common qw
/header footer/;
22 <h1>Running contests</h1>
25 <tr><th>Name<th>Start date<th>End date<th>Owner
27 <tmpl_loop running><tr><td><a href="<tmpl_var id>"><tmpl_var name></a>
36 <h1>Pending contests</h1>
39 <tr><th>Name<th>Start date<th>End date<th>Owner
41 <tmpl_loop pending><tr><td><a href="<tmpl_var id>"><tmpl_var name></a>
50 <h1>Finished contests</h1>
53 <tr><th>Name<th>Start date<th>End date<th>Owner
55 <tmpl_loop finished><tr><td><a href="<tmpl_var id>"><tmpl_var name></a>
65 $templates{$_} = header
($_, TITLE
) . $templates{$_} for keys %templates;
66 $templates{$_} .= footer
$_ for keys %templates;
69 my $template = $templates{$_[1]};
70 my $htc = HTML
::Template
::Compiled
->new(scalarref
=> \
$template);
71 IO
::File
->new('>ct/meta.yml')->close unless -f
'ct/meta.yml';
72 flock my $metafh = IO
::File
->new('<ct/meta.yml'), LOCK_SH
;
74 my (@running, @pending, @finished);
75 for (<ct
/*/meta
.yml
>) {
76 my $meta = LoadFile
$_;
77 my $id = (m
,^ct
/(.*)/meta
.yml
$,)[0];
79 name
=> $meta->{name
},
80 start
=> strftime
('%c', localtime $meta->{start
}),
81 end
=> strftime
('%c', localtime $meta->{end
}),
82 owner
=> $meta->{owner
}};
85 push @pending, $ct if time < $meta->{start
};
86 push @running, $ct if time >= $meta->{start
} && time < $meta->{end
};
87 push @finished, $ct if time > $meta->{end
};
90 $htc->param(runningn
=> scalar @running);
91 $htc->param(pendingn
=> scalar @pending);
92 $htc->param(finishedn
=> scalar @finished);
93 $htc->param(running
=> \
@running);
94 $htc->param(pending
=> \
@pending);
95 $htc->param(finished
=> \
@finished);
This page took 0.053715 seconds and 4 git commands to generate.