App-Cinema

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

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



( run in 0.307 second using v1.01-cache-2.11-cpan-4d50c553e7e )