Fix some bugs
authorMarius Gavrilescu <marius@ieval.ro>
Mon, 24 Mar 2014 06:32:53 +0000 (08:32 +0200)
committerMarius Gavrilescu <marius@ieval.ro>
Mon, 24 Mar 2014 06:32:53 +0000 (08:32 +0200)
lib/Gruntmaster/Page/Base.pm
lib/Gruntmaster/Page/Generic.pm
lib/Gruntmaster/Page/Submit.pm
lib/Plack/App/Gruntmaster.pm

index 0cae932d05cf197e8674ef8e4c9cfee1ae761dcd..99ca432732cfc9d8a9a27ba21e79752a01d2f726 100644 (file)
@@ -88,7 +88,7 @@ sub generate{
        my $htc = HTML::Template::Compiled->new(scalarref => \$templates{$self}{$lang}, default_escape => 'HTML', use_perl => 1);
        $self->_generate($htc, $lang, @args);
        my $out = $htc->output;
-       utf8::downgrade($out);
+       utf8::encode($out);
        my $vary = 'Accept-Language, ' . $self->vary;
        [200, ['Content-Type' => 'text/html', 'Content-Language' => $_[1], 'Vary' => $vary, 'X-Forever' => 1, 'Cache-Control' => 'max-age=' . $self->max_age], [ $out ] ]
 }
index 9c5687b2b705ab77622da9217b453e9df41f1e05..36ca445a98c00c26ee4cae0b3b5190936d56d75d 100644 (file)
@@ -42,7 +42,10 @@ sub list {
                @params{'page', 'pages'} = ($page, $pages);
                $rs = $rs->search(undef, {offset => ($page - 1) * PAGE_SIZE, ($page == $pages ? () : (rows => PAGE_SIZE))});
        }
-       $rs = $rs->search(undef, {prefetch => $thing{prefetch}}) if exists $thing{prefetch};
+       $rs = $rs->search(undef, {
+               exists $thing{prefetch} ? (prefetch => $thing{prefetch}) : (),
+               exists $thing{columns} ? (columns => $thing{columns}) : (),
+       });
        my @thing = map +{rs => $_, $_->get_columns}, $rs->all;
        @thing = map  { $thing{mangle}->(); $_ } @thing if exists $thing{mangle};
        @thing = grep { $thing{choose}->() } @thing if exists $thing{choose};
@@ -86,6 +89,7 @@ sub sortby (&);
 sub group  (&);
 sub mangle (&);
 sub prefetch;
+sub columns;
 
 sub thing (&){
        my %thing;
@@ -97,6 +101,7 @@ sub thing (&){
        local *{"group"} = sub { $thing{group} = shift };
        local *{"makers"} = sub { $thing{makers} = shift };
        local *{"prefetch"} = sub { $thing{prefetch} = \@_ };
+       local *{"columns"} = sub { $thing{columns} = \@_ };
        use strict 'refs';
 
        shift->();
index 5eed07c379314bd80333a2a554389c41319e8d50..5f7d7279006a0d0804c04e28fd537537e6d07d8e 100644 (file)
@@ -16,6 +16,8 @@ sub generate{
        my ($self, $frm, $env) = @_;
        my $r = Plack::Request->new($env);
        my ($problem, $format, $contest, $private, $prog) = map {scalar $r->param($_)} 'problem', 'prog_format', 'contest', 'private', 'source_code';
+       $problem //= $env->{'gruntmaster.problem'};
+       $contest //= $env->{'gruntmaster.contest'};
        my $upload = $r->upload('prog');
        if (defined $upload) {
                my $temp = read_file $upload->path;
@@ -26,7 +28,7 @@ sub generate{
        return reply 'A required parameter was not supplied' if grep { !defined } $problem, $format, $prog;
        return reply 'Maximum source size is 10KB' if length $prog > 25 * 1024;
        return reply 'You must wait 30 seconds between jobs' unless time > db($env)->user($r->user)->lastjob + 30;
-       db($env)->user($r->user)->lastjob(time)->update;
+       db($env)->user($r->user)->update({lastjob => time});
 
        db($env)->jobs->create({
                defined $contest ? (contest => $contest) : (),
@@ -34,9 +36,9 @@ sub generate{
                extension => FORMAT_EXTENSION->{$format},
                format => $format,
                defined $private ? (private => $private) : (),
-               probem => $problem,
+               problem => $problem,
                source => $prog,
-               user => $r->user
+               owner => $r->user
        });
 
        $contest //= '';
index 8d828c0963d27de49f6f9fd05a6e884dfd9eb013..e009d792041083c4a0b6e7bf00edb4f3c33aca05 100644 (file)
@@ -79,7 +79,7 @@ BEGIN{
        generic qw/us ct pb log/;
 
        get qr,/log/src/$number\.$word, => 'Src';
-       post qr,/pb/$word/submit, => 'Submit';
+       post qr,/submit, => 'Submit';
 
        post qr,/action/register, => 'Register';
        post qr,/action/passwd, => 'Passwd';
This page took 0.015465 seconds and 4 git commands to generate.