NAME
CatalystX::Resource::TraitFor::Controller::Resource::Sortable - makes your resource sortable
VERSION
version 0.03
SYNOPSIS
# TestApp.pm
'Controller::Resource::Artist' => {
resultset_key => 'artists',
resource_key => 'artist',
form_class => 'TestApp::Form::Resource::Artist',
model => 'DB::Resource::Artist',
redirect_mode => 'list',
traits => ['Sortable'],
actions => {
base => {
PathPart => 'artists',
},
},
},
# TestApp/Schema/Result/Resource/Artist.pm
__PACKAGE__->load_components(qw/ Ordered Core /);
__PACKAGE__->table('artist');
__PACKAGE__->add_columns(
...,
'position',
{
data_type => 'integer',
is_numeric => 1,
is_nullable => 0,
},
);
__PACKAGE__->resultset_attributes({ order_by => 'position' });
__PACKAGE__->position_column('position');
DESCRIPTION
adds these paths to your Controller which call move_previous/move_next on your resource item as provided by DBIx::Class::Ordered
Make sure the schema for your sortable resource has a 'position' column.
/resource/*/move_previous
/resource/*/move_next
For nested resources you need to set a grouping_column Example: Artist has_many Albums has_many Songs
# TestApp/Schema/Result/Resource/Song.pm
__PACKAGE__->grouping_column('album_id');
After a move operation you will always be redirected to the referer If no referer header is foudn you'll be redirected to '/'
ACTIONS
move_next
will switch the resource with the next one
move_previous
will switch the resource with the previous one
move_to
move resource to denoted position
AUTHOR
David Schmidt <davewood@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by David Schmidt.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.