From 17841c838f2e5624dca4903733bc19b0f139e732 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Wed, 5 May 2010 18:48:41 -0700 Subject: [PATCH] Better messaging and error handling in the Shop/Credit screen. Cannot give credit to Visitor. --- lib/WebGUI/Shop/Credit.pm | 29 +++++++++++++++++++---------- lib/WebGUI/i18n/English/Shop.pm | 6 ++++++ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/lib/WebGUI/Shop/Credit.pm b/lib/WebGUI/Shop/Credit.pm index d08f2214e..f7b02a363 100644 --- a/lib/WebGUI/Shop/Credit.pm +++ b/lib/WebGUI/Shop/Credit.pm @@ -49,8 +49,11 @@ The reason for this adjustment. sub adjust { my ($self, $amount, $comment) = @_; + my $user = WebGUI::User->new($self->session, $self->userId); + return 0 if $user->isVisitor; $self->session->db->write("insert into shopCredit (creditId, userId, amount, comment, dateOfAdjustment) values (?,?,?,?,now())", [$self->session->id->generate, $self->userId, $amount, $comment]); + return $amount; } #------------------------------------------------------------------- @@ -179,11 +182,11 @@ sub www_adjust { my ($class, $session) = @_; my $admin = WebGUI::Shop::Admin->new($session); return $session->privilege->insufficient() unless $admin->canManage; - my $form = $session->form; - my $credit = $class->new($session, $form->get('userId')); - $credit->adjust($form->get('amount'), $form->get('comment')); - my $i18n = WebGUI::International->new($session, "Shop"); - my $message = sprintf $i18n->get('add credit message'), $form->get('amount'), WebGUI::User->new($session, $form->get('userId'))->username, $credit->getSum; + my $form = $session->form; + my $credit = $class->new($session, $form->get('userId')); + my $amount = $credit->adjust($form->get('amount'), $form->get('comment')); + my $i18n = WebGUI::International->new($session, "Shop"); + my $message = sprintf $i18n->get('add credit message'), $amount, WebGUI::User->new($session, $form->get('userId'))->username, $credit->getSum; return $class->www_manage($session, $message); } @@ -199,14 +202,16 @@ sub www_manage { my ($class, $session, $message) = @_; my $admin = WebGUI::Shop::Admin->new($session); return $session->privilege->insufficient() unless $admin->canManage; - my $i18n = WebGUI::International->new($session, "Shop"); - my $f = WebGUI::HTMLForm->new($session); - $f->hidden(name=>'shop',value=>'credit'); - $f->hidden(name=>'method',value=>'adjust'); + my $i18n = WebGUI::International->new($session, "Shop"); + my $f = WebGUI::HTMLForm->new($session); + my $userId = $session->form->process('userId') || $session->user->userId; + my $user = WebGUI::User->new($session, $userId); + $f->hidden(name => 'shop', value => 'credit'); + $f->hidden(name => 'method', value => 'adjust'); $f->user( name => 'userId', label => $i18n->get('username'), - value => $session->user->userId, + value => $userId, ); $f->float( name => 'amount', @@ -217,6 +222,10 @@ sub www_manage { label => $i18n->get('notes'), ); $f->submit; + if (! $message) { + my $credit = $class->new($session, $userId); + $message ||= sprintf $i18n->get('current credit message'), $user->username, $credit->getSum; + } return $admin->getAdminConsole->render($message.$f->print, $i18n->get('in shop credit')); } diff --git a/lib/WebGUI/i18n/English/Shop.pm b/lib/WebGUI/i18n/English/Shop.pm index 43696ab3d..25965a646 100644 --- a/lib/WebGUI/i18n/English/Shop.pm +++ b/lib/WebGUI/i18n/English/Shop.pm @@ -567,6 +567,12 @@ our $I18N = { context => q|field label| }, + 'current credit message' => { + message => q|%s has a total credit of %s.|, + lastUpdated => 0, + context => q|field label| + }, + 'amount' => { message => q|Amount|, lastUpdated => 1213632324,