implemented detailed cart

2.0@2770
Daniel Tiefnig 18 years ago
parent b141849a73
commit 3443113b69

@ -130,6 +130,82 @@ sub clear_cart : Local {
return;
}
=head2 show_cart
=cut
sub show_cart : Local {
my ( $self, $c ) = @_;
$c->response->redirect('http://www.libratel.at/')
unless defined $c->request->params->{sk} and
$c->request->params->{sk} eq $c->session->{shop}{session_key};
$c->stash->{template} = 'tt/shop/cart.tt';
$c->stash->{sk} = $c->session->{shop}{session_key};
$self->_load_products($c) or return;
if(ref $c->session->{shop}{cart} eq 'HASH' and keys %{$c->session->{shop}{cart}}) {
my (@cart, $price_sum);
foreach my $ci (sort keys %{$c->session->{shop}{cart}}) {
push @cart, { count => $c->session->{shop}{cart}{$ci},
product => $ci,
price => sprintf("%.2f", $c->session->{shop}{dbprodhash}{$ci}{price} / 100),
price_sum => sprintf("%.2f", $c->session->{shop}{cart}{$ci} * $c->session->{shop}{dbprodhash}{$ci}{price} / 100),
};
$price_sum += $c->session->{shop}{cart}{$ci} * $c->session->{shop}{dbprodhash}{$ci}{price};
}
$c->stash->{price_sum} = sprintf "%.2f", $price_sum / 100;
$c->stash->{tax_sum} = sprintf "%.2f", $price_sum * 0.002;
$c->stash->{price_with_tax} = sprintf "%.2f", $c->stash->{price_sum} + $c->stash->{tax_sum};
$c->stash->{cart} = \@cart;
} else {
$c->stash->{price_sum} = '0.00';
}
}
=head2 update_cart
=cut
sub update_cart : Local {
my ( $self, $c ) = @_;
$c->response->redirect('http://www.libratel.at/')
unless defined $c->request->params->{sk} and
$c->request->params->{sk} eq $c->session->{shop}{session_key};
unless(defined $c->request->params->{product} and length $c->request->params->{product}) {
$c->log->error('***shop::update_cart no product specified');
$c->session->{messages}{toperr} = 'Server.Internal';
return;
}
my $product = $c->request->params->{product};
my $count = $c->request->params->{count};
$count = 0 unless $count; # hmm, or shouldn't we?
$self->_load_products($c) or return;
unless(exists $c->session->{shop}{dbprodhash}{$product}) {
$c->log->error("***shop::update_cart product '$product' not found in product hash");
$c->session->{messages}{toperr} = 'Server.Internal';
return;
}
if($count) {
$c->log->info("***shop::update_cart setting '$product' count to '$count'");
$c->session->{shop}{cart}{$product} = $count;
} else {
$c->log->info("***shop::update_cart removing '$product' from cart");
delete $c->session->{shop}{cart}{$product};
}
$c->response->redirect('/shop/show_cart?sk='. $c->session->{shop}{session_key});
return;
}
=head2 set_extensions
=cut

@ -598,6 +598,7 @@
border: 1px solid #8D9FAA;
}
/* add to cart link next to product images */
#main .produktwahlshop .produktwahl .add_to_cart {
width: auto;
text-align: left;
@ -610,6 +611,14 @@
cursor: pointer;
}
/* settings for small cart table on top in right column */
#main .cart_small_container {
margin-left: -3px;
width: 185px;
padding: 4px;
border: 1px solid #D0DCDF;
background: url(../grafik/cartsmallbg.gif) left top repeat-y #fff;
}
#main table.cart_small {
width: 100%;
border-spacing: 0;
@ -623,19 +632,66 @@
padding: 1px 4px;
border-bottom: 1px solid #D0DCDF;
}
#main td.money {
#main #cart_header {
margin-left: 5px;
margin-top: 3px;
}
#main #delete_cart {
float: left;
margin: 10px 0 5px 5px;
}
#main #show_cart {
float: right;
margin: 10px 5px 5px 0;
}
/* also used for cart template */
#main td.money,
#main th.money {
white-space: nowrap;
text-align: right;
}
.cart_small_container {
margin-left: -3px;
width: 185px;
padding: 4px;
border: 1px solid #D0DCDF;
background: url(../grafik/cartsmallbg.gif) left top repeat-y #fff;
/* settings for cart template */
#main table.carttable {
width: 100%;
border-spacing: 0;
margin-bottom: 30px;
}
#main #delete_cart {
float: right;
#main .carttable th {
padding: 1px 4px;
border-bottom: 1px solid #D0DCDF;
background: url(/grafik/bg_set.gif) left bottom repeat-x;
}
#main .carttable th.cart_image {
width: 20px;
}
#main .carttable th.cart_price {
width: 70px;
padding-right: 34px;
}
#main .carttable th.cart_update {
width: 80px;
}
#main .carttable th.cart_price_sum {
width: 100px;
}
#main .carttable td {
padding: 1px 4px;
border-bottom: 1px solid #D0DCDF;
}
#main .carttable td.cart_price {
padding-right: 40px;
}
#main .carttable td.cart_price_sum {
padding-right: 10px;
}
#main .carttable input {
margin-top: 2px;
margin-bottom: 2px;
}
#main .carttable input.ci_reload {
margin-top: 4px;
margin-left: 5px;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 871 B

@ -0,0 +1,149 @@
[% META title = 'Libratel hardware shop' %]
<div id="headimg">
<a href=""><img src="/grafik/area_anmeldung.jpg" width="869" height="69" alt="Jetzt Kunde werden und alle Vorteile genießen!" /></a>
</div>
<div id="main">
<div id="spalten31">
<div id="topmsg">
<p> [% messages.topmsg %] </p>
</div>
<div id="toperr">
<p> [% messages.toperr %] </p>
<p> [% messages.prov_error %] </p>
</div>
<h2>Folgende Artikel befinden sich in Ihrem Warenkorb</h2>
<div class="spalte1">
<div class="anmelden">
<input type="hidden" name="sk" value="[% sk %]" />
<table class="carttable">
<tr>
<th class="cart_image"></th>
<th class="cart_product">Artikel</th>
<th class="cart_price money">Einzelpreis</th>
<th class="cart_update">Anzahl</th>
<th class="cart_price_sum money" >Gesamtpreis</th>
</tr>
[% IF cart %]
[% FOREACH ci = cart %]
<tr>
<td class="cart_image"></td>
<td class="cart_product">[% ci.product %]</td>
<td class="cart_price money">&euro;&nbsp;[% ci.price %]</td>
<td class="cart_update">
<form method="post" action="/shop/update_cart">
<input type="hidden" name="sk" value="[% sk %]" />
<input type="hidden" name="product" value="[% ci.product %]" />
<input type="text" name="count" value="[% ci.count %]" class="input5" />
<input type="image" src="/grafik_shop/reload.gif" alt="aktualisieren" class="noborder ci_reload" />
</form>
</td>
<td class="cart_price_sum money"><strong class="smallpreis">&euro;&nbsp;[% ci.price_sum %]</strong></td>
</tr>
[% END %]
<tr class="mysumme">
<td colspan="4" class="tdright">
Zwischensumme exklusive Umsatzsteuer und Versand
</td>
<td class="money"><strong class="smallpreis">&euro;&nbsp;[% price_sum %]</strong></td>
</tr>
<!--
<tr>
<td colspan="4" class="tdright">
Umsatzsteuer 20%
</td>
<td class="money"><strong class="smallpreis">&euro;&nbsp;[% tax_sum %]</strong></td>
</tr>
<tr class="mysumme">
<td colspan="4" class="tdright">
Summe inklusive Steuern, zuzüglich Versandkosten
</td>
<td class="money"><strong class="smallpreis">&euro;&nbsp;[% price_with_tax %]</strong></td>
</tr>
-->
[% ELSE %]
<tr class="mysumme">
<td colspan="5">
Ihr Warenkorb ist leer.
</td>
</tr>
[% END %]
</table>
<div class="einrichtung">
<div class="einrichtungleft">
<h4>Melden Sie sich kostenlos bei Libratel an!</h4>
<p>
Ihre Anmeldung bei Libratel ist
vollkommen kostenlos. Libratel ist Ihr
Internet-Telefonanschluss ohne
Anmeldegebühr und ohne Mindestumsatz.
</p>
<p class="next">
<a href="#" class="link">Jetzt kostenlos Registrieren</a>
</p>
</div>
<div class="einrichtungright">
<h4 style="padding-left: 20px;">Sie sind bereits bei Libratel angemeldet?</h4>
<p style="padding-left: 30px;">
Um mit der Bestellung Ihrer Endgeräte
fortzufahren loggen Sie sich bitte mit
Ihrem Usernamen und Passwort ein.
</p>
<form id="anmelden">
<fieldset>
<label for="benutzer">Benutzer</label>
<input type="text" id="benutzer" name="benutzer" class="benutzer" size="20" /><br clear="all" />
<label for="passwort">Passwort</label>
<input type="text" id="passwort" name="passwort" class="passwort" size="20" /><br clear="all" />
</fieldset>
<p class="next">
<a href="#" class="link">Jetzt einloggen</a>
</p>
</form>
</div>
</div>
<div class="einrichtungstop"></div>
</div><br clear="all" />
</div>
<div class="spalte2">
<div class="prodsumme">
<strong><a href="/shop/hardware" class="link">weiter einkaufen</a></strong>
</div>
<ul class="schritte">
<li class="on">
<strong>Schritt 1:</strong><br />
Hardwareauswahl<br />
</li>
<li>
<strong>Schritt 2:</strong><br />
Registrierung oder Login<br />
</li>
<li>
<strong>Schritt 3:</strong><br />
Bestellung abschließen
</li>
</ul>
</div>
</div>
</div><br clear="all" />

@ -658,8 +658,7 @@
<div class="spalte2">
<div class="prodsumme cart_small_container">
<a href="/shop/clear_cart" class="link" id="delete_cart">löschen</a>
<strong><a href="#" class="link">Warenkorb</a></strong>
<strong><a href="/shop/show_cart?sk=[% sk %]" class="link" id="cart_header">Warenkorb</a></strong>
[% IF cart %]
<table class="cart_small">
[% bgflip = 0 %]
@ -678,6 +677,8 @@
[% END %]
</table>
Warenwert: <strong>&euro; [% price_sum %]</strong>
<a href="/shop/clear_cart?sk=[% sk %]" class="link" id="delete_cart">leeren</a>
<a href="/shop/show_cart?sk=[% sk %]" class="link" id="show_cart">bestellen</a>
[% ELSE %]
<table class="cart_small">
<tr><td>Ihr Warenkorb ist leer.</td></tr>

Loading…
Cancel
Save