Changeset 23661

Show
Ignore:
Timestamp:
11/14/08 17:25:40 (6 years ago)
Author:
tokuhirom
Message:

r30515@skinny: tokuhirom | 2008-11-14 15:12:50 +0900
BBS に pager つけた

Location:
lang/perl/MENTA/trunk
Files:
1 added
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/MENTA/trunk/NOTE

    r23659 r23661  
    4949    docroot は環境変数でうまくやれないかな 
    5050    uri_for みたいなのがほしい? 
     51    フックとかつける? 
     52    redirect/render とかは発行したら detach するべき 
    5153 
  • lang/perl/MENTA/trunk/app/controller/bbs_sqlite.pl

    r23659 r23661  
    11use DBI; 
    22 
    3 # DBI ってやっぱりわかりにくいよねえ 
     3# DBI ってやっぱりわかりにくいよねえ。もうちょいすっきりこれを書けるプラグインが欲しい。 
    44 
    55sub do_bbs_sqlite { 
     
    1515        redirect(docroot . 'bbs_sqlite'); 
    1616    } else { 
    17         my $sth = $dbh->prepare('SELECT id, body FROM entries ORDER BY id DESC LIMIT 10') or die $dbh->errstr; 
    18         $sth->execute(); 
     17        my $page = param('page') || 1; 
     18        my $limit = 10; # 1ページあたりの表示件数 
     19        my $offset = ($page-1) * $limit; 
     20        my $sth = $dbh->prepare('SELECT id, body FROM entries ORDER BY id DESC LIMIT ? OFFSET ?') or die $dbh->errstr; 
     21        $sth->execute($limit+1, $offset); 
    1922        my @res; 
    2023        while (my ($id, $body) = $sth->fetchrow_array()) { 
    2124            push @res, {id => $id, body => $body}; 
    2225        } 
    23         render("bbs.html", \@res); 
     26        my $has_next = 0; 
     27        if (@res == $limit+1) { 
     28            pop @res; 
     29            $has_next++; 
     30        } 
     31        render("bbs.html", \@res, { page => $page, has_next => $has_next}); 
    2432    } 
    2533} 
  • lang/perl/MENTA/trunk/app/tmpl/bbs.html

    r23660 r23661  
    1 % my $entries = shift; 
     1% my ($entries, $pager) = @_; 
    22% my $title = 'SQLite をつかった一行掲示板' 
    33%=r render_partial('header.html', $title) 
     
    1313% } 
    1414</ul> 
     15 
     16<%=r render_partial('pager.html', $pager) %> 
     17