[Jifty-commit] r4495 - in apps/spensive: . lib/Spensive lib/Spensive/Model lib/Spensive/View

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Tue Nov 20 12:12:55 EST 2007


Author: jesse
Date: Tue Nov 20 12:12:52 2007
New Revision: 4495

Modified:
   apps/spensive/   (props changed)
   apps/spensive/etc/config.yml
   apps/spensive/lib/Spensive/Dispatcher.pm
   apps/spensive/lib/Spensive/Model/Email.pm
   apps/spensive/lib/Spensive/Model/EmailAttachment.pm
   apps/spensive/lib/Spensive/Model/ExpenseReport.pm
   apps/spensive/lib/Spensive/Model/User.pm
   apps/spensive/lib/Spensive/View.pm
   apps/spensive/lib/Spensive/View/Expenses.pm
   apps/spensive/lib/Spensive/View/Reports.pm

Log:
 r67478 at pinglin (orig r7385):  jesse | 2007-09-22 16:13:28 -0400
 snapshot


Modified: apps/spensive/etc/config.yml
==============================================================================
--- apps/spensive/etc/config.yml	(original)
+++ apps/spensive/etc/config.yml	Tue Nov 20 12:12:52 2007
@@ -48,7 +48,7 @@
       default_escape_flags: h
       error_format: text
       error_mode: fatal
-    Port: 8888
+    Port: 9999
     ServeStaticFiles: 1
 #    ServerClass: Jifty::Server::Prefork
     StaticRoot: share/web/static

Modified: apps/spensive/lib/Spensive/Dispatcher.pm
==============================================================================
--- apps/spensive/lib/Spensive/Dispatcher.pm	(original)
+++ apps/spensive/lib/Spensive/Dispatcher.pm	Tue Nov 20 12:12:52 2007
@@ -23,18 +23,18 @@
 }
 };
 
-on qr'/report/(\d+)/' => run {
+on qr'/reports/(\d+)/' => run {
     my $report = Spensive::Model::ExpenseReport->new();
     $report->load($1);
 
     my $reports = Jifty->web->navigation->child('Reports');
-    $reports->child( Build => label => 'Build', url => '/report/'.$report->id.'/build');
-    $reports->child( Show => label => 'Show', url => '/report/'.$report->id.'/show');
+    $reports->child( Build => label => 'Build', url => '/reports/'.$report->id.'/build');
+    $reports->child( Show => label => 'Show', url => '/reports/'.$report->id.'/show');
 
     set( report => $report );
 };
 
-on qr'/report/(\d+)/(build|show)' => run { show 'report/'.$2; };
+on qr'/reports/(\d+)/(build|show)' => run { show 'reports/'.$2; };
 
 # Change a password
 on '/prefs' => run {

Modified: apps/spensive/lib/Spensive/Model/Email.pm
==============================================================================
--- apps/spensive/lib/Spensive/Model/Email.pm	(original)
+++ apps/spensive/lib/Spensive/Model/Email.pm	Tue Nov 20 12:12:52 2007
@@ -3,6 +3,7 @@
 
 package Spensive::Model::Email;
 use Jifty::DBI::Schema;
+use Jifty::RightsFrom column => 'expense';
 
 use Spensive::Record schema {
     column expense => references Spensive::Model::Expense;

Modified: apps/spensive/lib/Spensive/Model/EmailAttachment.pm
==============================================================================
--- apps/spensive/lib/Spensive/Model/EmailAttachment.pm	(original)
+++ apps/spensive/lib/Spensive/Model/EmailAttachment.pm	Tue Nov 20 12:12:52 2007
@@ -4,6 +4,8 @@
 package Spensive::Model::EmailAttachment;
 use Jifty::DBI::Schema;
 
+use Jifty::RightsFrom column => 'email';
+
 use Spensive::Record schema {
     column parent => references Spensive::Model::EmailAttachment;
     column content_type => type is 'text';
@@ -19,9 +21,6 @@
     my $args = shift;
     my $mime_obj = delete $args->{'mime_obj'};
 
-    warn "My PARENT IS " .$args->{parent};
-
-    warn "Creating ". $mime_obj->content_type;
     $args->{content_type} = $mime_obj->content_type;
     $args->{filename} =$mime_obj->filename;
     $args->{content} = $mime_obj->body;

Modified: apps/spensive/lib/Spensive/Model/ExpenseReport.pm
==============================================================================
--- apps/spensive/lib/Spensive/Model/ExpenseReport.pm	(original)
+++ apps/spensive/lib/Spensive/Model/ExpenseReport.pm	Tue Nov 20 12:12:52 2007
@@ -4,6 +4,8 @@
 package Spensive::Model::ExpenseReport;
 use Jifty::DBI::Schema;
 
+our $PWGEN =   Text::Password::Pronounceable->new(6=>8);
+
 use Spensive::Record schema {
     column title => type is 'text';
     column description => type is 'text', render as 'textarea';
@@ -25,7 +27,9 @@
 }
 sub categories { @{Spensive::Model::Expense->new()->column('category')->valid_values()} }
 
-our $PWGEN =   Text::Password::Pronounceable->new(6=>8);
+
+
+
 sub before_create {
     my $self = shift;
     my $args = shift;

Modified: apps/spensive/lib/Spensive/Model/User.pm
==============================================================================
--- apps/spensive/lib/Spensive/Model/User.pm	(original)
+++ apps/spensive/lib/Spensive/Model/User.pm	Tue Nov 20 12:12:52 2007
@@ -30,6 +30,21 @@
 
 # Your model-specific methods go here.
 
-sub current_user_can {1}
+sub current_user_can {
+    my $self = shift;
+    my $action = shift;
+    if ($self->current_user->id == $self->id) {
+        if ($action eq 'read') {
+            return 1;
+        } 
+        elsif ($action eq 'update') {
+            warn "Asked to update ".Join(',', at _);  
+        }
+
+    }
+
+
+    return ($self->SUPER::current_user_can($action, @_));
+}
 1;
 

Modified: apps/spensive/lib/Spensive/View.pm
==============================================================================
--- apps/spensive/lib/Spensive/View.pm	(original)
+++ apps/spensive/lib/Spensive/View.pm	Tue Nov 20 12:12:52 2007
@@ -14,26 +14,14 @@
     h3   { _('Unsubmitted expenses') };
     form { 
         my $search = Spensive::Model::ExpenseCollection->new();
-        $search->limit(
-            column      => 'expense_report',
-            value       => 'null',
-            operator    => 'is',
-            quote_value => 0
-        );
-        $search->limit(
-            column => 'incurred_by',
-            value  => Jifty->web->current_user->id
-        );
+        $search->limit( column      => 'expense_report', value       => 'null', operator    => 'is', quote_value => 0);
+        $search->limit( column => 'incurred_by', value  => Jifty->web->current_user->id);
         set( search_collection => $search );
-        render_region(
-            name     => 'expenses',
-            path     => '/expenses/list',
-            defaults => { page => 1, id => 'xxx' }
+        render_region( name     => 'expenses', path     => '/expenses/list', defaults => { page => 1, id => 'xxx' }
 
         );
     };
-    span {
-        { class is 'hint' };
+    span { { class is 'hint' };
         hyperlink( label => 'All my expenses...', path => '/expenses/all' );
     };
 };
@@ -43,10 +31,7 @@
     h3   { _('Open expense reports') };
     form {
         my $search = Spensive::Model::ExpenseReportCollection->new();
-        $search->limit(
-            column => 'submitted_by',
-            value  => Jifty->web->current_user->id
-        );
+        $search->limit( column => 'submitted_by', value  => Jifty->web->current_user->id);
         set( search_collection => $search );
         render_region(
             name     => 'reports',
@@ -55,8 +40,7 @@
 
         );
     };
-    span {
-        { class is 'hint' };
+    span { { class is 'hint' };
         hyperlink(
             label => 'All my expense reports...',
             path  => '/reports/all'
@@ -72,313 +56,12 @@
 
 require Spensive::View::Prefs;
 alias Spensive::View::Prefs under './prefs';
-
-use Jifty::Plugin::TabView::View;
-
-template 'report/show' => page {
-    my $report = get('report');
-    h1 { 'Expense Report: ' . $report->title };
-
-    my %category_totals = ();
-    my %category_items  = ();
-    my %appendices = ();
-    my $expenses        = $report->expenses();
-    my ( $earliest, $latest );
-    my $appendix_counter='A';
-
-    map {
-        $earliest = $_->date_incurred
-            if ( !$earliest || $_->date_incurred < $earliest );
-        $latest = $_->date_incurred
-            if ( !$latest || $_->date_incurred > $latest )
-
-    } @{ $expenses->items_array_ref };
-
-    div {
-        { id is 'report-date-range' };
-        outs(_('%1 to %2', $earliest, $latest));
-
-    };
-    table {
-        foreach my $cat ( $report->categories ) {
-            my $expenses = $report->expenses( category => $cat );
-            div {
-                { class is 'expense-category' };
-                row {
-                    th { {colspan is '3' };
-                    h2 {$cat};
-                    }
-                }
-                }
-                my $expense;
-            foreach $expense ( grep { $_->category eq $cat }
-                @{ $expenses->items_array_ref } )
-            {
-                row {
-                    { class is 'expense-entry' };
-                    for (qw(date_incurred title cost)) {
-                        cell {
-                            { class is 'expense-' . $_ };
-                            $expense->$_();
-                        };
-                    };
-                    if ($expense->attachments->count) {
-                        $appendices{++$appendix_counter} = $expense;
-                        cell { 'For attachments, see appendix '.$appendix_counter};
-                    }
-                };
-                row { 
-                    cell {
-                        { class is 'expense-description'; colspan is '3'; };
-                        $expense->description();
-                    };
-                };
-                $category_totals{$cat} += $expense->cost;
-                push @{ $category_items{$cat} }, $expense;
-            }
-
-            if ( $category_items{$cat}->[0] ) {
-
-                row { { class is 'subtotal' };
-                    th { { colspan is '3' };
-                        span { { class is 'label' }; _('Subtotal: '); };
-                        outs( $category_totals{$cat} );
-                    };
-
-                };
-            } else {
-                row {
-                    cell {
-                        {
-                            { class is 'subtotal-empty' };
-                            outs("Nothing to report");
-                        }
-                        }
-                    }
-            }
-        }
-        }
-        div {
-        h2 {'Totals'};
-
-        { class is 'total' };
-        span {
-            { class is 'label' };
-            _('Total');
-        };
-        outs( List::Util::sum( values %category_totals ) );
-        };
-
-    h1{ _('Attachments')};
-
-    for('A'..$appendix_counter) {
-
-        my $expense = $appendices{$_};
-        next unless $expense;
-        h2{_("Appendix %1",$_)};
-        my $attaches= $expense->attachments;
-    while (my $attach = $attaches->next) {
-    
-        with( item => $attach), show('/attachment/image');
-    }
-    }
-
-
-};
-
-template 'report/build' => page {
-    my $self = shift;
-    h1 { get('report')->title };
-    div { { class is 'hint'};
-        outs_raw(_('You can add new expenses to this expense report by emailing %1'. a{ {href is 'mailto:'.get('report')->published_address;} get('report')->published_address}));
-    };
-    render_region(
-        name     => 'reports',
-        path     => 'report_tabs',
-        defaults => { report => get('report')->id }
-    );
-
-    outs_raw( Jifty->web->return( label => 'Done' ) );
-};
-
-template report_tabs => sub {
-    my $self = shift;
-    $self->render_tabs(
-        'reports',
-        [qw(report)],
-        {   label => 'Attach expenses',
-            path  => '/attach_reports',
-            defer => 1
-        },
-        {   label => 'Remove expenses',
-            path  => '/remove_reports',
-            defer => 1,
-        },
-        {   label => 'Add expenses',
-            path  => '/add_report',
-            defer => 1,
-        }
-    );
-
-    #        qw(/attach_reports_tab /remove_reports_tab ) );
-};
-
-
-template 'add_report' => sub {
-    my $report_id = get('report');
-    my $report    = Spensive::Model::ExpenseReport->new();
-    $report->load($report_id);
-
-    h2 { _('Add a new expense'); };
-    render_region(
-        name     => 'expense-new',
-        path     => 'report/new_expense',
-        defaults => { report => $report->id }
-    );
-
-
-};
-
-template 'attach_reports' => sub {
-    my $report_id = get('report');
-    my $report    = Spensive::Model::ExpenseReport->new();
-    $report->load($report_id);
-    h2 { _('add some stuff') };
-
-    my $untied = Spensive::Model::ExpenseCollection->new();
-    $untied->limit(
-        column => 'incurred_by',
-        value  => Jifty->web->current_user->id
-
-    );
-    $untied->limit(
-        column          => 'expense_report',
-        operator        => 'is',
-        value           => 'null',
-        entryaggregator => 'or'
-    );
-    $untied->limit(
-        column   => 'expense_report',
-        operator => '=',
-        value    => ''
-    );
-
-    h3 {'Open expenses'};
-
-    while ( my $item = $untied->next ) {
-        render_region(
-            name     => 'expense-' . $item->id,
-            path     => 'report/add_expense',
-            defaults => { id => $item->id, report => $report->id }
-        );
-
-    }
-
-};
-template 'remove_reports' => sub {
-    my $report_id = get('report');
-    my $report    = Spensive::Model::ExpenseReport->new();
-    $report->load($report_id);
-    h2 { _('remove some stuff') };
-
-    my $untied = Spensive::Model::ExpenseCollection->new();
-    $untied->limit(
-        column => 'incurred_by',
-        value  => Jifty->web->current_user->id
-    );
-    $untied->limit(
-        column   => 'expense_report',
-        operator => '=',
-        value    => $report->id
-    );
-    while ( my $item = $untied->next ) {
-        render_region(
-            name     => 'expense-' . $item->id,
-            path     => 'report/remove_expense',
-            defaults => { id => $item->id, report => $report->id }
-        );
-    }
-};
-
-template 'report/new_expense' => sub {
-    my $report = get('report');
-    my $action = Jifty->web->new_action(
-        class     => 'CreateExpense',
-        arguments => { expense_report => $report, incurred_by => Jifty->web->current_user->id }
-    );
-    form {
-        for (qw(title cost date_incurred description)) {
-            render_param($action => $_);
-        }
-        for (qw(incurred_by expense_report)) {
-            render_param($action => $_, 
-            render_as     => 'Hidden');
-        }
-        outs_raw(
-            $action->button(
-                label   => 'Add',
-                onclick => [ { submit => $action, }, { refresh_self => 1 } ]
-            )
-        );
-        }
-};
-
-template 'report/add_expense' => sub {
-    my $report = get('report');
-    my $item   = Spensive::Model::Expense->new();
-    $item->load( get 'id' );
-    my $action
-        = Jifty->web->new_action( class => 'UpdateExpense', record => $item,
-        );
-    h3 { $item->title, ' - ', $item->cost, " - ", };
-    form {
-        render_param(
-            $action       => 'expense_report',
-            render_as     => 'Hidden',
-            default_value => $report
-        );
-        outs_raw(
-            $action->button(
-                label   => 'Add',
-                onclick => [
-                    { submit => $action, },
-                    { delete => Jifty->web->current_region }
-                ]
-            )
-        );
-        }
-};
-
-template 'report/remove_expense' => sub {
-    my $report = get('report');
-    my $item   = Spensive::Model::Expense->new();
-    $item->load( get 'id' );
-    my $action
-        = Jifty->web->new_action( class => 'UpdateExpense', record => $item,
-        );
-    h3 { $item->title, ' - ', $item->cost, " - ", };
-    form {
-        render_param(
-            $action       => 'expense_report',
-            render_as     => 'Hidden',
-            default_value => undef
-        );
-        outs_raw(
-            $action->button(
-                label   => 'Remove',
-                onclick => [
-                    { submit => $action, },
-                    { delete => Jifty->web->current_region }
-                ]
-            )
-        );
-        }
-};
-
 template 'attachment/image' => sub {
     my $item = get('attachment');
+    if ($item) {
     Jifty->handler->apache->content_type( $item->content_type );
     outs_raw( $item->content );
+    }
 
 };
 

Modified: apps/spensive/lib/Spensive/View/Expenses.pm
==============================================================================
--- apps/spensive/lib/Spensive/View/Expenses.pm	(original)
+++ apps/spensive/lib/Spensive/View/Expenses.pm	Tue Nov 20 12:12:52 2007
@@ -15,9 +15,20 @@
 
 private template view_item_controls => sub {
     my $self =shift;
-    my $item=shift;
+    my $record=shift;
     div { { class is 'controls'};
-    tangent(url => '/expense/'.$item->id, label => 'Details');
+    tangent(url => '/expense/'.$record->id, label => 'Details');
+    if ( $record->current_user_can('update') ) {
+        hyperlink(
+            label   => _("Edit"),
+            class   => "editlink",
+            onclick => {
+                replace_with => $self->fragment_for('update'),
+                args         => { id => $record->id }
+            },
+        );
+    }
+
 };
 };
 

Modified: apps/spensive/lib/Spensive/View/Reports.pm
==============================================================================
--- apps/spensive/lib/Spensive/View/Reports.pm	(original)
+++ apps/spensive/lib/Spensive/View/Reports.pm	Tue Nov 20 12:12:52 2007
@@ -11,7 +11,7 @@
 private template view_item_controls => sub {
     my $self =shift;
     my $item=shift;
-    tangent(url => '/report/'.$item->id."/build", label => 'Details');
+    tangent(url => '/reports/'.$item->id."/build", label => 'Details');
 };
 
 sub display_columns {
@@ -21,4 +21,307 @@
 }
 
 
+
+use Jifty::Plugin::TabView::View;
+
+template 'show' => page {
+    my $report = get('report');
+    h1 { 'Expense Report: ' . $report->title };
+
+    my %category_totals = ();
+    my %category_items  = ();
+    my %appendices = ();
+    my $expenses        = $report->expenses();
+    my ( $earliest, $latest );
+    my $appendix_counter='A';
+    $appendix_counter--;
+    map {
+        $earliest = $_->date_incurred
+            if ( !$earliest || $_->date_incurred < $earliest );
+        $latest = $_->date_incurred
+            if ( !$latest || $_->date_incurred > $latest )
+
+    } @{ $expenses->items_array_ref };
+
+    div {
+        { id is 'report-date-range' };
+        outs(_('%1 to %2', $earliest, $latest));
+
+    };
+    table {
+        foreach my $cat ( $report->categories ) {
+            my $expenses = $report->expenses( category => $cat );
+            div {
+                { class is 'expense-category' };
+                row {
+                    th { {colspan is '3' };
+                    h2 {$cat};
+                    }
+                }
+                }
+                my $expense;
+            foreach $expense ( grep { $_->category eq $cat }
+                @{ $expenses->items_array_ref } )
+            {
+                row {
+                    { class is 'expense-entry' };
+                    for (qw(date_incurred title cost)) {
+                        cell {
+                            { class is 'expense-' . $_ };
+                            $expense->$_();
+                        };
+                    };
+                    if ($expense->attachments->count) {
+                        $appendices{++$appendix_counter} = $expense;
+                        cell { 'For attachments, see appendix '.$appendix_counter};
+                    }
+                };
+                row { 
+                    cell {
+                        { class is 'expense-description'; colspan is '3'; };
+                        $expense->description();
+                    };
+                };
+                $category_totals{$cat} += $expense->cost;
+                push @{ $category_items{$cat} }, $expense;
+            }
+
+            if ( $category_items{$cat}->[0] ) {
+
+                row { { class is 'subtotal' };
+                    th { { colspan is '3' };
+                        span { { class is 'label' }; _('Subtotal: '); };
+                        outs( $category_totals{$cat} );
+                    };
+
+                };
+            } else {
+                row {
+                    cell {
+                        {
+                            { class is 'subtotal-empty' };
+                            outs("Nothing to report");
+                        }
+                        }
+                    }
+            }
+        }
+        }
+        div {
+        h2 {'Totals'};
+
+        { class is 'total' };
+        span {
+            { class is 'label' };
+            _('Total');
+        };
+        outs( List::Util::sum( values %category_totals ) );
+        };
+
+    h1{ _('Attachments')};
+
+    for('A'..$appendix_counter) {
+
+        my $expense = $appendices{$_};
+        next unless $expense;
+        h2{_("Appendix %1",$_)};
+        my $attaches= $expense->attachments;
+    while (my $attach = $attaches->next) {
+    
+        with( item => $attach), show('/attachment/image');
+    }
+    }
+
+
+};
+
+template 'build' => page {
+    my $self = shift;
+    h1 { get('report')->title };
+    div { { class is 'hint'};
+        outs_raw(_('You can add new expenses to this expense report by emailing %1'. a{ {href is 'mailto:'.get('report')->published_address;} get('report')->published_address}));
+    };
+    render_region(
+        name     => 'reports',
+        path     => '/reports/report_tabs',
+        defaults => { report => get('report')->id }
+    );
+
+    outs_raw( Jifty->web->return( label => 'Done' ) );
+};
+
+template report_tabs => sub {
+    my $self = shift;
+    $self->render_tabs(
+        'reports',
+        [qw(report)],
+        {   label => 'Attach expenses',
+            path  => 'attach_reports',
+            defer => 1
+        },
+        {   label => 'Remove expenses',
+            path  => 'remove_reports',
+            defer => 1,
+        },
+        {   label => 'Add expenses',
+            path  => 'add_report',
+            defer => 1,
+        }
+    );
+
+    #        qw(/attach_reports_tab /remove_reports_tab ) );
+};
+
+
+template 'add_report' => sub {
+    my $report_id = get('report');
+    my $report    = Spensive::Model::ExpenseReport->new();
+    $report->load($report_id);
+
+    h2 { _('Add a new expense'); };
+    render_region(
+        name     => 'expense-new',
+        path     => 'new_expense',
+        defaults => { report => $report->id }
+    );
+
+
+};
+
+template 'attach_reports' => sub {
+    my $report_id = get('report');
+    my $report    = Spensive::Model::ExpenseReport->new();
+    $report->load($report_id);
+    h2 { _('add some stuff') };
+
+    my $untied = Spensive::Model::ExpenseCollection->new();
+    $untied->limit(
+        column => 'incurred_by',
+        value  => Jifty->web->current_user->id
+
+    );
+    $untied->limit(
+        column          => 'expense_report',
+        operator        => 'is',
+        value           => 'null',
+        entryaggregator => 'or'
+    );
+    $untied->limit(
+        column   => 'expense_report',
+        operator => '=',
+        value    => ''
+    );
+
+    h3 {'Open expenses'};
+
+    while ( my $item = $untied->next ) {
+        render_region(
+            name     => 'expense-' . $item->id,
+            path     => '/reports/add_expense',
+            defaults => { id => $item->id, report => $report->id }
+        );
+
+    }
+
+};
+template 'remove_reports' => sub {
+    my $report_id = get('report');
+    my $report    = Spensive::Model::ExpenseReport->new();
+    $report->load($report_id);
+    h2 { _('remove some stuff') };
+
+    my $untied = Spensive::Model::ExpenseCollection->new();
+    $untied->limit(
+        column => 'incurred_by',
+        value  => Jifty->web->current_user->id
+    );
+    $untied->limit(
+        column   => 'expense_report',
+        operator => '=',
+        value    => $report->id
+    );
+    while ( my $item = $untied->next ) {
+        render_region(
+            name     => 'expense-' . $item->id,
+            path     => '/reports/remove_expense',
+            defaults => { id => $item->id, report => $report->id }
+        );
+    }
+};
+
+template 'new_expense' => sub {
+    my $report = get('report');
+    my $action = Jifty->web->new_action(
+        class     => 'CreateExpense',
+        arguments => { expense_report => $report, incurred_by => Jifty->web->current_user->id }
+    );
+    form {
+        for (qw(title cost date_incurred description)) {
+            render_param($action => $_);
+        }
+        for (qw(incurred_by expense_report)) {
+            render_param($action => $_, 
+            render_as     => 'Hidden');
+        }
+        outs_raw(
+            $action->button(
+                label   => 'Add',
+                onclick => [ { submit => $action, }, { refresh_self => 1 } ]
+            )
+        );
+        }
+};
+
+template 'add_expense' => sub {
+    my $report = get('report');
+    my $item   = Spensive::Model::Expense->new();
+    $item->load( get 'id' );
+    my $action
+        = Jifty->web->new_action( class => 'UpdateExpense', record => $item,
+        );
+    h3 { $item->title, ' - ', $item->cost, " - ", };
+    form {
+        render_param(
+            $action       => 'expense_report',
+            render_as     => 'Hidden',
+            default_value => $report
+        );
+        outs_raw(
+            $action->button(
+                label   => 'Add',
+                onclick => [
+                    { submit => $action, },
+                    { delete => Jifty->web->current_region }
+                ]
+            )
+        );
+        }
+};
+
+template 'remove_expense' => sub {
+    my $report = get('report');
+    my $item   = Spensive::Model::Expense->new();
+    $item->load( get 'id' );
+    my $action
+        = Jifty->web->new_action( class => 'UpdateExpense', record => $item,
+        );
+    h3 { $item->title, ' - ', $item->cost, " - ", };
+    form {
+        render_param(
+            $action       => 'expense_report',
+            render_as     => 'Hidden',
+            default_value => undef
+        );
+        outs_raw(
+            $action->button(
+                label   => 'Remove',
+                onclick => [
+                    { submit => $action, },
+                    { delete => Jifty->web->current_region }
+                ]
+            )
+        );
+
+    }
+};
 1;


More information about the Jifty-commit mailing list