package Doxory::Dispatcher; use strict; use warnings; use Jifty::Dispatcher -base; before '*' => run { if (Jifty->web->current_user->id) { my $top = Jifty->web->navigation; $top->child( _('Pick!') => url => '/pick' ); $top->child( _('Choices') => url => '/choices' ); } elsif ($1 !~ /^login|^signup/) { tangent 'login'; } }; #on '/' => show 'new_choice'; on pick => run { my $choices = Doxory::Model::ChoiceCollection->new; my $votes = $choices->join( type => 'left', alias1 => 'main', column1 => 'id', table2 => 'votes', column2 => 'choice', ); $choices->limit( leftjoin => $votes, column => 'voter', value => Jifty->web->current_user->id, ); $choices->limit( alias => $votes, column => 'voter', operator => 'IS', value => 'NULL', ); if (my $c = $choices->first) { set choice => $c; } else { show 'nothing_to_pick'; } }; 1;