Changeset 17116

Show
Ignore:
Timestamp:
08/05/08 23:18:49 (6 years ago)
Author:
tomi-ru
Message:

エントリの削除機能追加。Catalyst::Controller::Resourcesを使う

Location:
websites/mobilecat/trunk
Files:
2 added
2 removed
8 modified

Legend:

Unmodified
Added
Removed
  • websites/mobilecat/trunk/lib/MobileCat/Controller/API/Mail/Post.pm

    r16952 r17116  
    4141    $c->req->param(filter => 1); 
    4242    $c->req->param(body   => $text); 
    43     $c->forward('/post'); 
     43    $c->forward('/entry/create'); 
    4444} 
    4545 
  • websites/mobilecat/trunk/lib/MobileCat/Controller/Entry.pm

    r16955 r17116  
    22use strict; 
    33use warnings; 
    4 use base 'Catalyst::Controller'; 
     4use base 'Catalyst::Controller::Resources'; 
    55 
    6 sub default :Path { 
    7     my ($self, $c, $entry_id) = @_; 
     6__PACKAGE__->config( member => { 
     7    delete => { method => 'POST',  path => 'delete' }, 
     8}); 
    89 
    9     if ($entry_id) { 
    10         $c->view('TT')->template('entry/page.tt'); 
    11         $c->forward('page', [ $entry_id ]); 
    12     } 
    13     elsif (my $user_id = $c->req->param('user')) { 
    14         $c->view('TT')->template('entry/list.tt'); 
    15         $c->forward('user', [ $user_id ]); 
    16     } 
    17     else { 
    18         $c->view('TT')->template('entry/list.tt'); 
     10use Acme::Neko; 
     11 
     12sub list { 
     13    my ($self, $c) = @_; 
     14    if (my $user_id = $c->req->param('user')) { 
     15        $c->forward('user_list', [ $user_id ]); 
     16    } else { 
    1917        $c->forward('recent'); 
    2018    } 
     
    2523    $c->stash->{entries} = $c->model('Entries')->search(undef, { 
    2624        order_by => ['created_at DESC'], 
    27         page     => 1, 
    2825        rows     => 5, 
    2926    }); 
    3027} 
    3128 
    32 sub user :Private { 
     29sub user_list :Private { 
    3330    my ($self, $c, $user_id) = @_; 
    3431    my $user = $c->model('Users')->find($user_id); 
    35     unless ($user) { 
    36         $c->error(404); 
    37         return; 
    38     } 
    3932     
    4033    $c->stash->{entries} = $c->model('Entries')->search({ 
     
    4740} 
    4841 
    49 sub page :Private { 
     42sub post { 
     43    my ($self, $c) = @_; 
     44} 
     45 
     46sub create { 
     47    my ($self, $c) = @_; 
     48     
     49    $c->view('TT')->template('entry/post.tt'); 
     50 
     51    if ($c->req->param('filter')) { 
     52        $c->req->param(body => do { 
     53            Acme::Neko->nya( $c->req->param('body') ); 
     54        }); 
     55    } 
     56     
     57    $c->req->param(user_agent => $c->req->user_agent); 
     58    $c->req->param(user_id    => $c->user->id) if $c->user_exists; 
     59    $c->form( 
     60        body       => [ 'NOT_BLANK', ['NOT_REGEX', qr/^\s+$/] ], 
     61        user_agent => [], 
     62        user_id    => [], 
     63    ); 
     64     
     65    if ($c->form->has_error) { 
     66        return; 
     67    } else { 
     68        $c->model('Entries')->create($c->form->valid); 
     69    } 
     70     
     71    $c->res->redirect( $c->uri_for('/') ); 
     72} 
     73 
     74sub show { 
    5075    my ($self, $c, $entry_id) = @_; 
    51     my $entry = $c->model('Entries')->find($entry_id); 
    52     unless ($entry) { 
     76    $c->stash->{entry} = $c->model('Entries')->find($entry_id) or do { 
    5377        $c->error(404); 
    5478        return; 
     79    }; 
     80} 
     81 
     82sub delete { 
     83    my ($self, $c, $entry_id) = @_; 
     84    if (not $c->user_exists) { 
     85        return; 
    5586    } 
     87      
     88    my $entry = $c->model('Entries')->single({ 
     89        id      => $entry_id, 
     90        user_id => $c->user->id, 
     91    }) or do { 
     92        $c->error(404); 
     93        return; 
     94    }; 
    5695     
    57     $c->stash->{entry} = $entry; 
     96    $entry->delete; 
     97     
     98    $c->res->redirect( $c->uri_for('/entry', { user => $c->user->id }) ); 
    5899} 
    59100 
  • websites/mobilecat/trunk/lib/MobileCat/Controller/Root.pm

    r16955 r17116  
    66__PACKAGE__->config->{namespace} = ''; 
    77 
    8 use Acme::Neko; 
    9  
    108sub index :Private { 
    119    my ($self, $c) = @_; 
    1210    $c->forward('/entry/recent'); 
    13 } 
    14  
    15 sub post :Local { 
    16     my ($self, $c) = @_; 
    17      
    18     return unless $c->req->method eq 'POST'; 
    19      
    20     if ($c->req->param('filter')) { 
    21         $c->req->param(body => do { 
    22             Acme::Neko->nya( $c->req->param('body') ); 
    23         }); 
    24     } 
    25       
    26     $c->req->param(user_agent => $c->req->user_agent); 
    27     $c->req->param(user_id    => $c->user->id) if $c->user_exists; 
    28     $c->form( 
    29         body       => [ 'NOT_BLANK', ['NOT_REGEX', qr/^\s+$/] ], 
    30         user_agent => [], 
    31         user_id    => [], 
    32     ); 
    33      
    34     if ($c->form->has_error) { 
    35         return; 
    36     } else { 
    37         $c->model('Entries')->create($c->form->valid); 
    38     } 
    39      
    40     $c->res->redirect( $c->uri_for('/') ); 
    4111} 
    4212 
  • websites/mobilecat/trunk/mobilecat.yaml

    r16950 r17116  
    88  expires: 3600 
    99  storage: /tmp/mobilecat/session 
     10  param: sid 
    1011 
    1112validator: 
  • websites/mobilecat/trunk/root/entry/list.tt

    r16955 r17116  
    11[% WHILE (entry = entries.next); 
    2      INCLUDE "entry/page.tt"; 
     2     INCLUDE "entry/show.tt"; 
    33   END; 
    44%] 
    55 
    6 [% IF template.name == "entry/list.tt" %] 
    7  
     6[% IF entries.attrs.page %] 
    87<div class="center"> 
    98[% FOREACH page = entries.pager.pages_in_navigation(5) %] 
     
    2322[% END %] 
    2423</div> 
     24[% END %] 
    2525 
     26[% IF template.name == "entry/list.tt" %] 
    2627<br /> 
    2728&#xE6E9;<a href="[% c.req.uri.hostless %]" accesskey="8">更新</a><br /> 
  • websites/mobilecat/trunk/root/index.tt

    r16955 r17116  
    1 &#xE719;<a href="/post">投稿する</a><br /> 
     1&#xE719;<a href="/entry/new">投稿する</a><br /> 
    22<br /> 
    33 
     
    66<br /> 
    77&#xE6EB;<a href="/" accesskey="0">更新</a><br /> 
    8 &#xE6E2;<a href="/post" accesskey="1">投稿する</a><br /> 
     8&#xE6E2;<a href="/entry/new" accesskey="1">投稿する</a><br /> 
    99&#xE6FB;<a href="/about">ここは何?</a><br /> 
    1010[% IF c.user_exists %] 
  • websites/mobilecat/trunk/root/settings/index.tt

    r16952 r17116  
    1111<img src="http://static.koneta.org/dot.gif" height="5" /><br /> 
    1212 
     13&#xE689;<a href="[% c.uri_for('/entry/', { user => c.user.id }) %]">自分の投稿リスト</a><br /> 
     14<img src="http://static.koneta.org/dot.gif" height="5" /><br /> 
     15 
    1316&#xE708;<a href="[% c.uri_for('/logout') %]">ログアウト</a><br /> 
    1417<img src="http://static.koneta.org/dot.gif" height="5" /><br /> 
  • websites/mobilecat/trunk/root/static/mobile.css

    r16950 r17116  
    1010} 
    1111.small { 
    12     font-size: 16pt; 
     12    font-size: smaller; 
    1313} 
    1414.center {