Changeset 935 for lang

Show
Ignore:
Timestamp:
10/31/07 02:35:37 (6 years ago)
Author:
tokuhirom
Message:

lang/perl/mobirc: added pager for /recent

Location:
lang/perl/mobirc/trunk/mobirc
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/mobirc/trunk/mobirc/assets/tmpl/recent.html

    r837 r935  
    11[% INCLUDE 'include/header.html' %] 
    22 
    3 [% FOR canon_channel IN channel_name.keys.sort %] 
    4     [% IF channel_name.item(canon_channel) and channel_recent.item(canon_channel) and channel_recent.item(canon_channel).size %] 
    5         <div class="ChannelHeader"> 
    6             <b class="ChannelName">[% channel_name.item(canon_channel) | html %]</b> 
    7             <a href="[% docroot %]channels/[% channel_name.item(canon_channel) | uri%]">more..</a><br /> 
    8         </div> 
     3[% FOR channel IN target_channels %] 
     4    <div class="ChannelHeader"> 
     5        <b class="ChannelName">[% channel_name.item(channel) | html %]</b> 
     6        <a href="[% docroot %]channels/[% channel_name.item(channel) | uri%]">more..</a><br /> 
     7    </div> 
    98 
    10         [% FOR line IN channel_recent.item(canon_channel) %] 
    11             [% render_line( line ) %]<br /> 
    12         [% END %] 
     9    [% FOR line IN channel_recent.item(channel) %] 
     10        [% render_line( line ) %]<br /> 
     11    [% END %] 
    1312 
    14         <hr /> 
    15     [% END %] 
     13    <hr /> 
    1614[% END %] 
    1715<br /> 
     16 
     17[% IF has_next_page %] 
     18<a href="[% docroot %]recent?t=[% now %]">next</a> 
     19[% END %] 
     20 
     21<hr /> 
     22 
    1823<a accesskey="8" href="[% docroot %]">ch list[8]</a> 
    1924 
  • lang/perl/mobirc/trunk/mobirc/config.yaml.sample

    r916 r935  
    2222  cookie_expires: +3d 
    2323  use_cookie: 1 
     24  # recent_log_per_page: 40 
    2425  authorizer: 
    2526    - module: Mobirc::HTTPD::Authorizer::Cookie 
  • lang/perl/mobirc/trunk/mobirc/lib/Mobirc/ConfigLoader.pm

    r927 r935  
    6060                root           => { type => 'str', }, 
    6161                echo           => { type => 'bool', }, 
    62                 au_pcsv        => { type => 'bool', }, 
     62                recent_log_per_page => { type => 'int', }, 
    6363                filter => { 
    6464                    type     => 'seq', 
     
    133133    $config->{httpd}->{content_type}   ||= 'text/html; charset=Shift_JIS'; 
    134134    $config->{httpd}->{echo} = true unless exists $config->{httpd}->{echo}; 
     135    $config->{httpd}->{recent_log_per_page} ||= 30; 
    135136    $config->{global}->{assets_dir}    ||= File::Spec->catfile( $FindBin::Bin, 'assets' ); 
    136137 
  • lang/perl/mobirc/trunk/mobirc/lib/Mobirc/HTTPD/Controller.pm

    r928 r935  
    6565    my ($class, $c) = @_; 
    6666 
     67    my @target_channels; 
     68    my $log_counter = 0; 
     69    my $has_next_page = false; 
     70 
     71    my @unread_channels = 
     72      grep { @{ $c->{irc_heap}->{channel_recent}->{$_} || [] } } 
     73      keys %{ $c->{irc_heap}->{channel_recent} }; 
     74 
     75    DEBUG "SCALAR " . scalar @unread_channels; 
     76 
     77    for my $channel (@unread_channels) { 
     78        push @target_channels, $channel; 
     79        $log_counter += scalar @{ $c->{irc_heap}->{channel_recent}->{$channel} }; 
     80 
     81        if ($log_counter >= $c->{config}->{httpd}->{recent_log_per_page}) { 
     82            $has_next_page = true; 
     83            last; 
     84        } 
     85    } 
     86 
    6787    my $out = render( 
    6888        $c, 
    6989        'recent' => { 
     90            target_channels => \@target_channels, 
     91            has_next_page   => $has_next_page, 
    7092        }, 
    7193    ); 
    7294 
    7395    # reset counter. 
    74     for my $canon_channel ( sort keys %{ $c->{irc_heap}->{channel_name} } ) { 
     96    for my $canon_channel ( @target_channels ) { 
    7597        $c->{irc_heap}->{unread_lines}->{$canon_channel}   = 0; 
    7698        $c->{irc_heap}->{channel_recent}->{$canon_channel} = []; 
     
    200222        title                => $c->{config}->{httpd}->{title}, 
    201223        version              => $Mobirc::VERSION, 
     224        now                  => time(), 
    202225 
    203226        %{ $c->{irc_heap} }, 
  • lang/perl/mobirc/trunk/mobirc/lib/Mobirc/HTTPD/Router.pm

    r883 r935  
    1717        return 'topics'; 
    1818    } 
    19     elsif ( $uri eq '/recent' ) { 
     19    elsif ( $uri =~ m{^/recent(?:\?t=\d+)?$} ) { 
    2020        return 'recent'; 
    2121    }