add empty the cart action to the shop
authorTony Cook <tony@develop-help.com>
Mon, 15 Nov 2010 07:33:06 +0000 (07:33 +0000)
committertony <tony@45cb6cf1-00bc-42d2-bb5a-07f51df49f94>
Mon, 15 Nov 2010 07:33:06 +0000 (07:33 +0000)
WIP for versioning the table load files

site/cgi-bin/modules/BSE/Modules.pm
site/cgi-bin/modules/BSE/UI/Shop.pm
site/data/db/bse_background_tasks.data
site/data/db/bse_msg_base.data
site/data/db/bse_msg_defaults.data
site/data/db/sql_statements.data
site/templates/cart_base.tmpl
site/util/make_versions.pl

index 282c5a8..6057f3e 100644 (file)
@@ -3,7 +3,7 @@ use strict;
 
 # automatically generated
 
-our $hash = "05cd6e77d34a1f6a35167c20ada19aee";
+our $hash = "b14eacca6398718e49d065458ad8fead";
 
 our %versions =
   (
@@ -185,7 +185,7 @@ our %versions =
   "BSE::UI::Page" => "1.001",
   "BSE::UI::Redirect" => "1.000",
   "BSE::UI::Search" => "1.000",
-  "BSE::UI::Shop" => "1.002",
+  "BSE::UI::Shop" => "1.003",
   "BSE::UI::SiteUserUpdate" => "1.000",
   "BSE::UI::SiteuserCommon" => "1.000",
   "BSE::UI::SubAdmin" => "1.000",
@@ -253,4 +253,12 @@ our %versions =
   "Util" => "1.000",
   );
 
+our %file_versions =
+  (
+  "db/bse_background_tasks.data" => "1.000",
+  "db/bse_msg_base.data" => "1.000",
+  "db/bse_msg_defaults.data" => "1.000",
+  "db/sql_statements.data" => "1.000",
+  );
+
 1;
index fe51b19..7a22777 100644 (file)
@@ -18,7 +18,7 @@ use BSE::Shipping;
 use BSE::Countries qw(bse_country_code);
 use BSE::Util::Secure qw(make_secret);
 
-our $VERSION = "1.002";
+our $VERSION = "1.003";
 
 use constant MSG_SHOP_CART_FULL => 'Your shopping cart is full, please remove an item and try adding an item again';
 
@@ -41,6 +41,7 @@ my %actions =
    location => 1,
    paypalret => 1,
    paypalcan => 1,
+   emptycart => 1,
   );
 
 my %field_map = 
@@ -96,6 +97,8 @@ sub req_cart {
   $cust_class->enter_cart(\@cart, \@cart_prods, \%custom_state, $req->cfg); 
   $msg = '' unless defined $msg;
   $msg = escape_html($msg);
+
+  $msg ||= $req->message;
   
   my %acts;
   %acts =
@@ -118,6 +121,31 @@ sub req_cart {
   return $req->response($template, \%acts);
 }
 
+=item a_emptycart
+
+Empty the shopping cart.
+
+Refreshes to the URL in C<r> or the cart otherwise.
+
+Flashes msg:bse/shop/cart/empty unless C<r> is supplied.
+
+=cut
+
+sub req_emptycart {
+  my ($self, $req) = @_;
+
+  my $old = $req->session->{cart};;
+  $req->session->{cart} = [];
+
+  my $refresh = $req->cgi->param('r');
+  unless ($refresh) {
+    $refresh = $req->user_url(shop => 'cart');
+    $req->flash("msg:bse/shop/cart/empty");
+  }
+
+  return _add_refresh($refresh, $req, !$old);
+}
+
 sub req_add {
   my ($class, $req) = @_;
 
index 3c28f18..5cec783 100644 (file)
@@ -1,4 +1,5 @@
 --
+# VERSION=1.000
 id: bse_gen
 description: Regenerate Site
 binname: perl util/gen.pl
index 8ee7943..9e0e489 100644 (file)
@@ -1,4 +1,5 @@
 --
+# VERSION=1.000
 id: bse/
 description: BSE messages
 
@@ -79,6 +80,12 @@ description: Multiple lines of text supplied when creating or saving a single li
 id: bse/shop/
 description: Shop messages
 
+id: bse/shop/cart/
+description: Messages from interacting with the cart
+
+id: bse/shop/cart/empty
+description: flashed when the cart is emptied
+
 id: bse/shop/paypal/
 description: PayPal messages
 
index 628b081..688c2ef 100644 (file)
@@ -1,4 +1,5 @@
 ---
+# VERSION=1.000
 # defaults for the following
 language_code: en
 priority: 0
@@ -33,6 +34,9 @@ message: Unknown language code - no entry found in [languages]
 id: bse/admin/message/badmultiline
 message: Message $1:s may contain only a single line of text
 
+id: bse/shop/cart/empty
+message: Cart emptied
+
 id: bse/shop/paypal/notoken
 message: No token supplied by PayPal
 
index 407a4d5..1905d79 100644 (file)
@@ -1,4 +1,5 @@
 --
+# VERSION=1.000
 name: bse_siteuserSeminarBookingsDetail
 sql_statement: <<SQL
 select ar.*, pr.*, se.*, ss.*, sb.*,
index f43f46a..44d749a 100644 (file)
@@ -84,6 +84,8 @@
           <tr> 
             <td><img src="/images/store/left_end_cap_solid.gif" width="12" height="31"></td>
             <td bgcolor="#EEEEEE" NOWRAP valign="MIDDLE"> 
+              <input type="submit" name="a_emptycart" value="Empty Cart">
+              &nbsp; 
               <input type="submit" name="recalc" value="Recalculate">
               &nbsp; 
               <input type="submit" name="checkout" value="Checkout">
index 85522cf..d1ea730 100644 (file)
@@ -33,6 +33,21 @@ for my $file (@files) {
   $md5->add("$module=$1\n");
 }
 
+my %data_versions;
+my @data_files = sort grep m(data/db/.*\.data$), keys %$files;
+for my $file (@data_files) {
+  my $content = read_file($file);
+  
+  (my $inst_name = $file) =~ s(^site/data/)()
+    or die "Can't convert $file to installed name\n";
+  $content =~ /^\s*\#\s*VERSION=\s*([0-9.]+)/m
+    or die "No version found in $file\n";
+
+  $data_versions{$inst_name} = $1;
+
+  $md5->add("$inst_name=$1\n");
+}
+
 my $hash = $md5->hexdigest;
 
 open my $out, ">", $outname
@@ -57,5 +72,16 @@ for my $module (sort keys %versions) {
 print $out <<EOS;
   );
 
+our %file_versions =
+  (
+EOS
+
+for my $file (sort keys %data_versions) {
+  print $out qq/  "$file" => "$data_versions{$file}",\n/;
+}
+
+print $out <<EOS
+  );
+
 1;
 EOS