Changeset 25532

Show
Ignore:
Timestamp:
12/01/08 13:27:02 (4 years ago)
Author:
tokuhirom
Message:

掲示板を OpenID 対応させてみた

Location:
lang/perl/MENTA/trunk/app
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/MENTA/trunk/app/controller/demo/bbs.mt

    r25380 r25532  
    22?= render('header.mt', 'SQLite をつかった一行掲示板') 
    33<div class="blocked-content"> 
    4 <form method="post" action="<?= uri_for('demo/bbs_sqlite') ?>"> 
    5  <input type="text" name="body"> 
    6  <input type="submit" value="送信"> 
    7 </form> 
     4 
     5? if (my $user = openid_get_user()) { 
     6    <?= $user->{nickname} ?> さんこんにちは 
     7 
     8    <form method="post" action="<?= uri_for('demo/bbs_sqlite') ?>"> 
     9    <input type="text" name="body"> 
     10    <input type="submit" value="送信"> 
     11    </form> 
     12 
     13    <form method="post" action="<?= session_logout_url(uri_for('demo/openid')) ?>"> 
     14        <input type="submit" value="ログアウト" /> 
     15    </form> 
     16? } else { 
     17    発言するにはログインが必要です (個人情報は記録/公開されます) 
     18    <ul> 
     19    <? my $map = openid_login_url_map( cancelled => uri_for('demo/bbs'), verified => uri_for('demo/bbs') ) ?> 
     20    <? while (my ($name, $url) = each %$map) { ?> 
     21        <li><a href="<?= $url ?>"><?= $name ?> でログイン</a></li> 
     22    <? } ?> 
     23    </ul> 
     24? } 
    825 
    926<ul> 
    1027? for my $entry (@{$entries}) { 
    11  <li class="hentry"><?= $entry->{id} ?> <?= $entry->{body} ?></li> 
     28 <li class="hentry"><?= $entry->{id} ?> <?= $entry->{body} ?> by <a href="<?= $entry->{openid} ?>"><?= $entry->{nickname} ?></a></li> 
    1229? } 
    1330</ul> 
  • lang/perl/MENTA/trunk/app/controller/demo/bbs_sqlite.pl

    r25415 r25532  
    22 
    33sub run { 
    4     sql_prepare_exec(q{CREATE TABLE IF NOT EXISTS entries (id INTEGER PRIMARY KEY, body VARCHAR(255))}); 
     4    sql_prepare_exec(q{CREATE TABLE IF NOT EXISTS entries (id INTEGER PRIMARY KEY, nickname VARCHAR(255), openid TEXT, body VARCHAR(255))}); 
    55 
    66    if (is_post_request()) { 
     7        my $user = openid_get_user(); 
    78        my $body = param('body'); 
    8         if ($body) { 
    9             sql_prepare_exec('INSERT INTO entries (body) VALUES (?)', $body); 
     9        if ($body && $user) { 
     10            sql_prepare_exec('INSERT INTO entries (body, nickname, openid) VALUES (?, ?, ?)', $body, $user->{nickname}, $user->{openid}); 
    1011        } 
    1112        redirect(uri_for('demo/bbs_sqlite')); 
    1213    } else { 
    1314        my ( $rows, $pager ) = sql_select_paginate( 
    14             'SELECT id, body FROM entries ORDER BY id DESC', 
     15            'SELECT id, body, nickname, openid FROM entries ORDER BY id DESC', 
    1516            [], 
    1617            { 
     
    1920            } 
    2021        ); 
    21         render_and_print('demo/bbs.mt', $rows, $pager); 
     22        render_and_print('demo/bbs.mt', $rows||[], $pager); 
    2223    } 
    2324}