X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FPlack%2FApp%2FGruntmaster%2FHTML.pm;h=b4abd19f5194fbe28f40bcd41e9794b237119f8b;hb=refs%2Fheads%2Fnewmc;hp=f18e5f65bb107cb7be0ad6a895ec830c8bf9065e;hpb=1f0d9746c599663df5fd961b34db48ff1f40992d;p=plack-app-gruntmaster.git diff --git a/lib/Plack/App/Gruntmaster/HTML.pm b/lib/Plack/App/Gruntmaster/HTML.pm index f18e5f6..b4abd19 100644 --- a/lib/Plack/App/Gruntmaster/HTML.pm +++ b/lib/Plack/App/Gruntmaster/HTML.pm @@ -4,6 +4,7 @@ use parent qw/Exporter/; our @EXPORT = qw/render render_article/; use File::Slurp qw/read_file/; +use List::Util qw[min max]; use HTML::Element::Library; use HTML::TreeBuilder; use POSIX qw//; @@ -82,7 +83,7 @@ sub render_article { $lang //= 'en'; my $title = read_file "a/$art.$lang.title"; chomp $title; - my $meat = read_file "a/$art.$lang"; + my $meat = read_file "a/$art.$lang", binmode => ':utf8'; _render('skel', $lang, title => $title , meat => $meat, %args) } @@ -210,7 +211,8 @@ sub process_pb { my $iter = sub { my ($data, $tr) = @_; $tr->set_child_content(class => 'author', $data->{author}); - $tr->set_child_content(class => 'value', $data->{value}); + $tr->set_child_content(class => 'value', $data->{value}) if $args{args}{contest}; + $tr->fclass('value')->detach unless $args{args}{contest}; $tr->set_child_content(class => 'level', ucfirst $data->{level}); $tr->fclass('name')->namedlink($data->{id}, $data->{name}); $tr->fclass('name')->find('a')->edit_href(sub {$_ .= "?contest=$args{args}{contest}"}) if $args{args}{contest}; @@ -218,6 +220,8 @@ sub process_pb { $tr->find('td')->attr(class => $tr->find('td')->attr('class').' warning') if $data->{private} && !$args{args}{contest}; }; + $tree->find('thead')->fclass('value')->detach unless $args{args}{contest}; + $tree->find('tbody')->find('tr')->iter3([sort { $a->{value} <=> $b->{value} } @{$args{pb}}], $iter); $tree->fid('open-alert')->detach unless $args{args}{contest}; } @@ -274,7 +278,9 @@ sub process_log { my $str = join '&', map { $_ . '=' . $args{args}{$_} } keys %{$args{args}}; $elem->find('a')->edit_href(sub{s/$/&$str/}) if $str; } - $tree->fclass('current')->replace_content("Page $args{current_page} of $args{last_page}"); + + my $total_pages = max(1, $args{last_page}); + $tree->fclass('current')->replace_content("Page $args{current_page} of $total_pages"); } sub process_st {