package Bigtop::Example::Billing::LineItem; use strict; use base 'Bigtop::Example::Billing::GEN::LineItem'; use Gantry::Plugins::AutoCRUD qw( do_add do_edit do_delete form_name ); use Bigtop::Example::Billing::Model; use Bigtop::Example::Billing::Model::line_item qw( $LINE_ITEM ); use Bigtop::Example::Billing::Model::invoice qw( $INVOICE ); sub schema_base_class { return 'Bigtop::Example::Billing::Model'; } use Gantry::Plugins::DBIxClassConn qw( get_schema ); use Gantry::Plugins::Calendar qw( do_calendar_month calendar_month_js ); #----------------------------------------------------------------- # $self->do_main( [ $invoice_id ] ) #----------------------------------------------------------------- sub do_main { my ( $self, $invoice_id ) = @_; my $title = 'Line Items'; my $only_one_invoice = 0; if ( defined $invoice_id ) { $only_one_invoice = 1; my $invoice = $INVOICE->gfind( $self, $invoice_id ); $title .= ' for Invoice ' . $invoice->foreign_display(); } $self->stash->view->template( 'results.tt' ); $self->stash->view->title( $title ); my $retval = { headings => [ 'Name', 'Due Date', 'Invoice', ], header_options => [ { text => 'Add', link => $self->location() . "/add", }, ], }; my $schema = $self->get_schema(); my @rows = $LINE_ITEM->get_listing( { schema => $schema } ); ROW: foreach my $row ( @rows ) { my $id = $row->id; next ROW if ( $only_one_invoice and $id != $invoice_id ); push( @{ $retval->{rows} }, { data => [ $row->name, $row->due_date, $row->invoice->foreign_display(), ], options => [ { text => 'Edit', link => $self->location() . "/edit/$id", }, { text => 'Delete', link => $self->location() . "/delete/$id", }, ], } ); } $self->stash->view->data( $retval ); } # END do_main #----------------------------------------------------------------- # $self->form( $row ) #----------------------------------------------------------------- # This method supplied by Bigtop::Example::Billing::GEN::LineItem #----------------------------------------------------------------- # get_model_name( ) #----------------------------------------------------------------- sub get_model_name { return $LINE_ITEM; } #----------------------------------------------------------------- # get_orm_helper( ) #----------------------------------------------------------------- sub get_orm_helper { return 'Gantry::Plugins::AutoCRUDHelper::DBIxClass'; } #----------------------------------------------------------------- # text_descr( ) #----------------------------------------------------------------- sub text_descr { return 'line item'; } 1; =head1 NAME Bigtop::Example::Billing::LineItem - A controller in the Billing application =head1 SYNOPSIS This package is meant to be used in a stand alone server/CGI script or the Perl block of an httpd.conf file. Stand Alone Server or CGI script: use Bigtop::Example::Billing::LineItem; my $cgi = Gantry::Engine::CGI->new( { config => { #... }, locations => { '/someurl' => 'Bigtop::Example::Billing::LineItem', #... }, } ); httpd.conf: # ... use Bigtop::Example::Billing::LineItem; SetHandler perl-script PerlHandler Bigtop::Example::Billing::LineItem If all went well, one of these was correctly written during app generation. =head1 DESCRIPTION This module was originally generated by Bigtop. But feel free to edit it. You might even want to describe the table this module controls here. =head1 METHODS =over 4 =item get_model_name =item text_descr =item schema_base_class =item get_orm_helper =back =head1 METHODS MIXED IN FROM Bigtop::Example::Billing::GEN::LineItem =over 4 =item do_main =item form =back =head1 DEPENDENCIES Bigtop::Example::Billing Bigtop::Example::Billing::GEN::LineItem Bigtop::Example::Billing::Model::line_item Gantry::Plugins::Calendar Gantry::Plugins::AutoCRUD =head1 AUTHOR Phil Crow Tim Keefer =head1 COPYRIGHT AND LICENSE Copyright (C) 2006 Phil Crow This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available. =cut