]> iEval git - gruntmaster-page.git/blobdiff - lib/Plack/App/Gruntmaster.pm
Add solutions
[gruntmaster-page.git] / lib / Plack / App / Gruntmaster.pm
index f647783e61ac9d1b7ad4c8c7eafb98af6df3ff07..c8b04f3873a9bace214ef2620b3e6a87259dc0cf 100644 (file)
@@ -76,6 +76,7 @@ sub response {
                $params = $title;
                $title = 'No title';
        }
+       $params->{time} = time;
        bless {template => $template, title => $title, params => $params}, __PACKAGE__.'::Response'
 }
 
@@ -153,11 +154,17 @@ sub dispatch_request{
                sub (/us/:user)    { response us_entry => user->name, db->user_entry($_{user}) },
                sub (/ct/:contest) { response ct_entry => contest->name, db->contest_entry($_{contest}) },
                sub (/log/:job)    { response log_entry => "Job  $_{job}", db->job_entry($_{job}) },
-               sub (/pb/:problem + ?:contest~) {
+               sub (/pb/:problem + ?contest~) {
+                       my (undef, undef, $contest) = @_;
+                       $_{contest} = $contest;
                        return NOT_FOUND if !contest && !problem->is_in_archive || contest && !db->contest_problems->find($_{contest}, $_{problem});
                        forbid problem->is_private;
                        response pb_entry => problem->name, db->problem_entry($_{problem}, $_{contest}, remote_user && remote_user->id);
                },
+               sub (/sol/:problem) {
+                       forbid !problem->is_in_archive;
+                       response sol => 'Solution of ' . problem->name, {solution => db->problem($_{problem})->solution};
+               },
 
                sub (/) { redispatch_to '/index' },
                sub (/:article) { [200, ['Content-Type' => 'text/html'], [render_article $_{article}, 'en']] }
This page took 0.018718 seconds and 4 git commands to generate.