view release on metacpan or search on metacpan
1.14 01/25/2010
- add search by item, news, event, user
- move error message to yml
- Moose can work well with my app now.
- handle duplicated PK exception when adding a user
- add Moose class - App::Cinema::Event
1.15 01/29/2010
- add captcha
- switch db to mysql
1.16 01/31/2010
- add validate to name field
- modify Role based access control
- add description of Role based access control
<http://jandc.co.cc/menu/howto>
1.17 02/02/2010
- send email to user when check out movie
- sysadmin can edit all users' roles
- every account can edit its own roles
- user can send email to ask for upgrading to vip
- sysadmin can only upgrade account to vipuser but can't edit other info
- fixed bug: delete user also delete its 'has many' data
lib/App/Cinema/Controller/Comment.pm view on Meta::CPAN
sub add : Local Form {
my ( $self, $c, $arg ) = @_;
if ( !$c->user_exists ) {
$c->flash->{error} = $c->config->{need_login_errmsg};
$c->res->redirect( $c->uri_for('/menu/about') );
return 0;
}
my $form = $self->formbuilder;
my $comment = $form->field('desc');
if ( $form->submitted && $form->validate ) {
if ( $form->submitted eq 'Preview' ) {
$c->stash->{message} = $comment;
}
elsif ( $form->submitted eq 'Save' ) {
$c->model('MD::Comment')->create(
{
uid => $c->user->obj->username(),
content => $comment,
e_time => HTTP::Date::time2iso(time),
}
lib/App/Cinema/Controller/Item.pm view on Meta::CPAN
sub add : Local Form {
my ( $self, $c ) = @_;
my $form = $self->formbuilder;
$form->field(
name => 'genre',
options => [ map { [ $_->id, $_->name ] } $c->model('MD::Genre')->all ]
);
if ( $form->submitted && $form->validate ) {
my $row = $c->model('MD::Item')->create(
{
title => $form->field('title'),
plot => $form->field('plot'),
year => $form->field('year'),
img => $form->field('img'),
release_date => HTTP::Date::time2iso(time),
genre_items => [ { g_id => $form->field('genre') }, ],
uid => $c->user->obj->username()
}
lib/App/Cinema/Controller/Menu.pm view on Meta::CPAN
}
if ( $c->check_user_roles(qw/vipuser/) ) {
$c->flash->{error} = "You're already a vipuser";
$c->res->redirect( $c->uri_for('/menu/howto') );
return;
}
my $form = $self->formbuilder;
if ( $form->submitted && $form->validate ) {
my $email = $c->user->obj->email_address;
if ( !$email ) {
$c->stash->{error} = $c->config->{email_null_errmsg};
return;
}
my $subject =
"Upgrade to vipuser:"
. $c->user->obj->username . ':'
. time2iso(time);
my $mailer = Mail::Mailer->new("sendmail");
lib/App/Cinema/Controller/News.pm view on Meta::CPAN
BEGIN {
extends qw/Catalyst::Controller::FormBuilder/;
our $VERSION = $App::Cinema::VERSION;
}
sub add : Local Form {
my ( $self, $c ) = @_;
my $form = $self->formbuilder;
if ( $form->submitted && $form->validate ) {
my $row = $c->model('MD::News')->create(
{
title => $form->field('title'),
content => $form->field('desc'),
release_date => HTTP::Date::time2iso(time),
}
);
$c->flash->{message} = 'Created News : ' . $row->title;
$c->res->redirect( $c->uri_for('add') );
}
lib/App/Cinema/Controller/User.pm view on Meta::CPAN
return;
}
my $form = $self->formbuilder;
# Get the username and password from form
my $uid = $form->field('username') || "";
my $pwd = $form->field('password') || "";
# If the username and password values were found in form
if ( $form->submitted && $form->validate ) {
my $status = $c->authenticate(
{
username => $uid,
password => $pwd,
active => 1
}
);
if ($status) { # If successful, then let them use the application
$c->flash->{message} = "Welcome back, " . $uid;
$c->res->redirect( $c->uri_for('/menu/home') );
lib/App/Cinema/Controller/User.pm view on Meta::CPAN
my $page = $c->req->param('page');
$page = 1 if ( $page !~ /^\d+$/ );
$rs = $rs->page($page);
$c->stash->{pager} = $rs->pager();
$c->stash->{events} = $rs;
}
sub add : Local Form {
my ( $self, $c ) = @_;
my $form = $self->formbuilder;
if ( $form->submitted && $form->validate ) {
eval {
my $row = $c->model('MD::Users')->create(
{
first_name => $form->field('fname'),
last_name => $form->field('lname'),
email_address => $form->field('email'),
username => $form->field('uid'),
password => $form->field('pwd'),
active => 1,
user_roles => [ { role_id => $form->field('role') } ]
lib/App/Cinema/Controller/User.pm view on Meta::CPAN
my $form = $self->formbuilder;
my $user = $c->model('MD::Users')->find( { username => $id } );
my $email = $user->email_address;
unless ($email) {
$c->flash->{error} = $c->config->{email_null_errmsg};
$c->res->redirect( $c->uri_for('view') );
return;
}
if ( $form->submitted && $form->validate ) {
unless ( $form->submitted eq 'Save' ) {
$c->res->redirect( $c->uri_for('/user/view') );
return;
}
$c->model('MD::UserRoles')->search( { user_id => $user->username } )
->delete();
foreach ( $form->field('role') ) {
$user->create_related( 'user_roles', { role_id => $_ } );
lib/App/Cinema/Controller/User.pm view on Meta::CPAN
sub edit : Local Form {
my ( $self, $c, $id ) = @_;
my $form = $self->formbuilder;
my $user = $c->model('MD::Users')->find( { username => $id } );
unless ( $user->username eq $c->user->obj->username() ) {
$c->res->redirect( $c->uri_for('edit_sys') . "/" . $id );
return;
}
if ( $form->submitted && $form->validate ) {
unless ( $form->submitted eq 'Save' ) {
$c->res->redirect( $c->uri_for('/user/view') );
return;
}
my %attrs = { user_id => $user->username };
$c->model('MD::UserRoles')->search( { user_id => $user->username } )
->delete();
$user->first_name( $form->field('fname') );
root/forms/user/add.fb view on Meta::CPAN
fields:
fname:
label: First Name
size: 30
lname:
label: Last Name
size: 30
email:
label: Email
size: 30
validate: EMAIL
required: 1
uid:
label: User Id
size: 30
required: 1
pwd:
label: Password
size: 30
type: Password
required: 1
root/forms/user/edit.fb view on Meta::CPAN
name: user_edit
method: POST
fields:
fname:
label: First Name
size: 30
validate: NAME
lname:
label: Last Name
size: 30
validate: NAME
email:
label: Email
size: 30
validate: EMAIL
required: 1
pwd:
label: Password
size: 30
type: Password
required: 1
role:
label: Roles
submit: Save, Cancel
stylesheet: 1