Merge branch 'bootstrap' of https://github.com/PrestaShop/PrestaShop into bootstrap

This commit is contained in:
Vincent Augagneur
2013-10-07 09:09:26 +02:00
21 changed files with 429 additions and 290 deletions
+42 -41
View File
@@ -8146,25 +8146,26 @@ textarea {
border-color: #cccccc !important; }
/* line 559, admin-theme.sass */
tr.highlight td {
background-color: #ffffc0; }
tr.highlighted td {
background-color: #1ba6e5 !important;
color: white; }
/* line 562, admin-theme.sass */
/* line 565, admin-theme.sass */
.hook_panel {
-webkit-box-shadow: rgba(255, 255, 255, 0.9) 0 0 0 1px inset;
box-shadow: rgba(255, 255, 255, 0.9) 0 0 0 1px inset;
padding: 10px 10px 5px 10px;
margin-bottom: 3px !important; }
/* line 567, admin-theme.sass */
/* line 570, admin-theme.sass */
.module_name {
font-size: 1.2em; }
/* line 571, admin-theme.sass */
/* line 574, admin-theme.sass */
.hook_panel_header {
margin: 0 -10px 0 -10px;
padding: 0 10px 10px 10px; }
/* line 574, admin-theme.sass */
/* line 577, admin-theme.sass */
.hook_panel_header .hook_name {
font-weight: 400;
font-size: 1.2em;
@@ -8177,15 +8178,15 @@ tr.highlight td {
border: solid 1px #cccccc;
background-color: white;
padding: 0 4px; }
/* line 582, admin-theme.sass */
/* line 585, admin-theme.sass */
.hook_panel_header .hook_title {
text-transform: uppercase;
font-size: 1em; }
/* line 585, admin-theme.sass */
/* line 588, admin-theme.sass */
.hook_panel_header .hook_description {
padding: 3px 0 0 3px; }
/* line 589, admin-theme.sass */
/* line 592, admin-theme.sass */
.module_list .module_list_item {
display: table;
width: 100%;
@@ -8200,7 +8201,7 @@ tr.highlight td {
-o-border-radius: 3px;
border-radius: 3px; }
/* line 597, admin-theme.sass */
/* line 600, admin-theme.sass */
.module_col_select {
display: table-cell;
width: 22px;
@@ -8209,13 +8210,13 @@ tr.highlight td {
text-align: center;
border-right: 1px solid #dddddd; }
/* line 604, admin-theme.sass */
/* line 607, admin-theme.sass */
.module_col_position {
display: table-cell;
width: 60px;
vertical-align: middle;
text-align: right; }
/* line 609, admin-theme.sass */
/* line 612, admin-theme.sass */
.module_col_position .positions {
font-family: "Ubuntu", sans-serif;
font-weight: 200;
@@ -8233,41 +8234,41 @@ tr.highlight td {
border: solid 1px #cccccc;
background-color: #eeeeee; }
/* line 620, admin-theme.sass */
/* line 623, admin-theme.sass */
.module_col_icon {
display: table-cell;
width: 50px;
text-align: center;
vertical-align: middle; }
/* line 626, admin-theme.sass */
/* line 629, admin-theme.sass */
.module_col_infos {
display: table-cell;
height: 50px;
vertical-align: middle; }
/* line 631, admin-theme.sass */
/* line 634, admin-theme.sass */
.module_col_actions {
display: table-cell;
width: 160px;
padding: 0 10px;
vertical-align: middle;
text-align: right; }
/* line 637, admin-theme.sass */
/* line 640, admin-theme.sass */
.module_col_actions .btn-group {
text-align: left; }
/* line 641, admin-theme.sass */
/* line 644, admin-theme.sass */
.tree {
padding: 0 0 0 20px;
list-style: none; }
/* line 644, admin-theme.sass */
/* line 647, admin-theme.sass */
.tree input {
margin-right: 4px; }
/* line 646, admin-theme.sass */
/* line 649, admin-theme.sass */
.tree i {
font-size: 1.3em; }
/* line 650, admin-theme.sass */
/* line 653, admin-theme.sass */
.tree .tree-item-name, .tree .tree-folder-name {
padding: 0 5px;
-webkit-border-radius: 6px;
@@ -8276,17 +8277,17 @@ tr.highlight td {
-o-border-radius: 6px;
border-radius: 6px;
font-weight: normal; }
/* line 654, admin-theme.sass */
/* line 657, admin-theme.sass */
.tree .tree-item-name:hover, .tree .tree-folder-name:hover {
background-color: #eeeeee;
cursor: pointer; }
/* line 657, admin-theme.sass */
/* line 660, admin-theme.sass */
.tree .tree-selected {
background-color: #a4dcf5; }
/* line 659, admin-theme.sass */
/* line 662, admin-theme.sass */
.tree .tree-selected i.tree-dot {
background-color: #1ba6e5; }
/* line 661, admin-theme.sass */
/* line 664, admin-theme.sass */
.tree i.tree-dot {
display: inline-block;
position: relative;
@@ -8299,55 +8300,55 @@ tr.highlight td {
-ms-border-radius: 6px;
-o-border-radius: 6px;
border-radius: 6px; }
/* line 669, admin-theme.sass */
/* line 672, admin-theme.sass */
.tree .tree-item-disable, .tree .tree-folder-name-disable {
color: #cccccc; }
/* line 671, admin-theme.sass */
/* line 674, admin-theme.sass */
.tree .tree-item-disable:hover, .tree .tree-folder-name-disable:hover {
color: #cccccc;
background-color: none; }
/* line 675, admin-theme.sass */
/* line 678, admin-theme.sass */
.nav-tabs {
border-bottom: none; }
/* line 678, admin-theme.sass */
/* line 681, admin-theme.sass */
.nav-tabs li.active a.tab-page {
background-color: white; }
/* line 681, admin-theme.sass */
/* line 684, admin-theme.sass */
.tree-actions {
padding-bottom: 4px;
display: inline-block; }
/* line 686, admin-theme.sass */
/* line 689, admin-theme.sass */
.tt-query {
border-bottom-right-radius: 3px !important;
border-top-right-radius: 3px !important; }
/* line 688, admin-theme.sass */
/* line 691, admin-theme.sass */
.tt-dropdown-menu {
background-color: white;
border: solid 1px #cccccc;
font-size: 0.9em;
text-transform: none; }
/* line 693, admin-theme.sass */
/* line 696, admin-theme.sass */
.tt-suggestions {
padding: 0 6px;
-webkit-box-shadow: rgba(0, 0, 0, 0.25) 0 1px 4px;
box-shadow: rgba(0, 0, 0, 0.25) 0 1px 4px; }
/* line 696, admin-theme.sass */
/* line 699, admin-theme.sass */
.tt-suggestion p {
border-bottom: solid 1px #cccccc;
margin: 0 !important;
padding: 0 !important; }
/* line 700, admin-theme.sass */
/* line 703, admin-theme.sass */
.tt-suggestion:last-child p {
border-bottom: none; }
/* line 704, admin-theme.sass */
/* line 707, admin-theme.sass */
.tagify-container {
background-color: white;
padding: 2px 6px;
@@ -8361,10 +8362,10 @@ tr.highlight td {
border: solid 1px #cccccc;
-webkit-box-shadow: rgba(0, 0, 0, 0.075) 0 1px 1px inset;
box-shadow: rgba(0, 0, 0, 0.075) 0 1px 1px inset; }
/* line 712, admin-theme.sass */
/* line 715, admin-theme.sass */
.tagify-container span {
float: left; }
/* line 714, admin-theme.sass */
/* line 717, admin-theme.sass */
.tagify-container > span {
display: inline-block;
padding: 3px 5px;
@@ -8373,26 +8374,26 @@ tr.highlight td {
border: 1px solid #1ba6e5;
background-color: #60c1ed;
color: white; }
/* line 722, admin-theme.sass */
/* line 725, admin-theme.sass */
.tagify-container > span > a {
padding-left: 5px;
color: #1ba6e5;
text-decoration: none;
font-weight: bold; }
/* line 727, admin-theme.sass */
/* line 730, admin-theme.sass */
.tagify-container > input {
margin-top: 2px;
border: 0 none;
width: 100px;
-webkit-box-shadow: none;
box-shadow: none; }
/* line 732, admin-theme.sass */
/* line 735, admin-theme.sass */
.tagify-container > input:focus {
outline: 0;
-webkit-box-shadow: none;
box-shadow: none; }
/* line 737, admin-theme.sass */
/* line 740, admin-theme.sass */
li.sortable-placeholder {
border: 1px dashed #cccccc;
background-color: #bbbbbb;
@@ -556,8 +556,11 @@ textarea
background-color: white
border-color: #ccc!important
tr.highlight td
background-color: #FFFFC0
tr.highlighted td
background-color: $brand-primary!important
color: white
.hook_panel
@extend .well
@@ -99,18 +99,17 @@
</div>
</div>
{/if}
<div class="form-group">
<div class="col-lg-9 col-lg-offset-3">
<button class="btn btn-default" type="submit" name="submitNewVoucher">
<i class="icon-ok"></i>
{l s='Add'}
</button>
<button class="btn btn-default" type="button" id="cancel_add_voucher">
<i class="icon-remove"></i>
<i class="icon-remove text-danger"></i>
{l s='Cancel'}
</button>
<button class="btn btn-default" type="submit" name="submitNewVoucher">
<i class="icon-ok text-success"></i>
{l s='Add'}
</button>
</div>
</div>
</div>
@@ -123,8 +123,8 @@
{if !isset($document->is_delivery)}
{if $document->getRestPaid()}
<a href="#" class="js-set-payment btn btn-default" data-amount="{$document->getRestPaid()}" data-id-invoice="{$document->id}" title="{l s='Set payment form'}">
<i class="icon-pencil"></i>
{l s='Set payment form'}
<i class="icon-money"></i>
{l s='Enter Payment'}
</a>
{/if}
<a href="#" class="btn btn-default" onclick="$('#invoiceNote{$document->id}').show(); return false;" title="{if $document->note eq ''}{l s='Add note'}{else}{l s='Edit note'}{/if}">
@@ -148,7 +148,7 @@
<p>
<label for="editNote{$document->id}" class="t">{l s='Note'}</label>
<input type="hidden" name="id_order_invoice" value="{$document->id}" />
<textarea name="note" rows="10" cols="10" id="editNote{$document->id}" class="edit-note">{$document->note|escape:'htmlall':'UTF-8'}</textarea>
<textarea name="note" id="editNote{$document->id}" class="edit-note textarea-autosize">{$document->note|escape:'htmlall':'UTF-8'}</textarea>
</p>
<p>
<button type="submit" name="submitEditNote" class="btn btn-default">
@@ -76,9 +76,13 @@
{/if}
</td>
<td style="display:none;">
<button type="button" class="btn btn-default" id="cancelAddProduct">
<i class="icon-remove text-danger"></i>
{l s='Cancel'}
</button>
<button type="button" class="btn btn-default" id="submitAddProduct" disabled="disabled">
<i class="icon-ok"></i>
{l s='Add product'}
<i class="icon-ok text-success"></i>
{l s='Add'}
</button>
</td>
</tr>
@@ -134,26 +134,38 @@
{/if}
</td>
<td class="partial_refund_fields current-edit" style="display:none;">
<div>
{l s='Quantity:'}
<div class="form-group">
<label class="control-label">
{l s='Quantity:'}
</label>
<div class="input-group">
<input onchange="checkPartialRefundProductQuantity(this)" type="text" name="partialRefundProductQuantity[{{$product['id_order_detail']}}]" value="0" />
<div class="input-group-addon">0/{$productQuantity-$product['product_quantity_refunded']}</div>
</div>
</div>
<div>
<input onchange="checkPartialRefundProductQuantity(this)" type="text" name="partialRefundProductQuantity[{{$product['id_order_detail']}}]" value="0" />
0/{$productQuantity-$product['product_quantity_refunded']}
<div class="form-group">
<label class="control-label">
{l s='Amount:'}
</label>
<div class="input-group">
<div class="input-group-addon">
{$currency->prefix}
{$currency->suffix}
</div>
<input onchange="checkPartialRefundProductAmount(this)" type="text" name="partialRefundProduct[{$product['id_order_detail']}]" />
</div>
</div>
<div>
{l s='Amount:'}
<div class="form-group">
{if !empty($product['amount_refund']) && $product['amount_refund'] > 0}
({l s='%s refund' sprintf=$product['amount_refund']})
{/if}
<input type="hidden" value="{$product['quantity_refundable']}" class="partialRefundProductQuantity" />
<input type="hidden" value="{$product['amount_refundable']}" class="partialRefundProductAmount" />
</div>
<div>
{$currency->prefix}
<input onchange="checkPartialRefundProductAmount(this)" type="text" name="partialRefundProduct[{$product['id_order_detail']}]" />
{$currency->suffix}
</div>
{if !empty($product['amount_refund']) && $product['amount_refund'] > 0}
({l s='%s refund' sprintf=$product['amount_refund']})
{/if}
<input type="hidden" value="{$product['quantity_refundable']}" class="partialRefundProductQuantity" />
<input type="hidden" value="{$product['amount_refundable']}" class="partialRefundProductAmount" />
</td>
{if ($can_edit && !$order->hasBeenDelivered())}
<td class="product_invoice" colspan="2" style="display: none;">
@@ -198,7 +210,6 @@
{l s='Cancel'}
</button>
</td>
{/if}
</tr>
@@ -66,7 +66,10 @@
<span class="shipping_number_edit" style="display:none;">
<input type="hidden" name="id_order_carrier" value="{$line.id_order_carrier|htmlentities}" />
<input type="text" name="tracking_number" value="{$line.tracking_number|htmlentities}" />
<input type="submit" class="btn btn-default" name="submitShippingNumber" value="{l s='Update'}" />
<button type="submit" class="btn btn-default" name="submitShippingNumber">
<i class="icon-ok"></i>
{l s='Update'}
</button>
</span>
<a href="#" class="edit_shipping_number_link btn btn-default">
<i class="icon-pencil"></i>
@@ -119,7 +119,7 @@
<tbody>
{foreach from=$history item=row key=key}
{if ($key == 0)}
<tr class="highlight">
<tr class="highlighted">
<td><img src="../img/os/{$row['id_order_state']}.gif" /></td>
<td><span class="title_box ">{$row['ostate_name']|stripslashes}</span></td>
<td><span class="title_box ">{if $row['employee_lastname']}{$row['employee_firstname']|stripslashes} {$row['employee_lastname']|stripslashes}{/if}</span></td>
@@ -332,7 +332,7 @@
{if count($order->getOrderPayments()) > 0}
<p class="alert alert-warning" style="{if round($orders_total_paid_tax_incl, 2) == round($total_paid, 2) || $currentState->id == 6}display: none;{/if}">
<p class="alert alert-danger" style="{if round($orders_total_paid_tax_incl, 2) == round($total_paid, 2) || $currentState->id == 6}display: none;{/if}">
{l s='Warning'}
<strong>{displayPrice price=$total_paid currency=$currency->id}</strong>
{l s='paid instead of'}
@@ -764,7 +764,7 @@
{/if}
</th>
<th style="display:none" class="partial_refund_fields">
{l s='Partial refund'}
<span class="title_box ">{l s='Partial refund'}</span>
</th>
{if !$order->hasBeenDelivered()}
<th></th>
@@ -788,10 +788,10 @@
{if $can_edit}
{if !$order->hasBeenDelivered()}
<div class="row-margin-bottom">
<a href="#" class="add_product btn btn-default">
<button type="button" id="add_product" class="btn btn-default">
<i class="icon-plus-sign"></i>
{l s='Add a product'}
</a>
</button>
</div>
{/if}
{/if}
@@ -836,9 +836,13 @@
{displayPrice price=$order->total_shipping_tax_incl currency=$currency->id}
</td>
<td class="partial_refund_fields current-edit" style="display:none;">
{$currency->prefix}
<input type="text" name="partialRefundShippingCost" value="0" />
{$currency->suffix}
<div class="input-group">
<div class="input-group-addon">
{$currency->prefix}
{$currency->suffix}
</div>
<input type="text" name="partialRefundShippingCost" value="0" />
</div>
</td>
</tr>
<tr id="total_order">
@@ -851,6 +855,59 @@
</table>
</div>
</div>
<div style="display: none;" class="standard_refund_fields form-horizontal">
{if ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN'))}
<p class="checkbox">
<label for="reinjectQuantities">
<input type="checkbox" name="reinjectQuantities"/>
{l s='Re-stock products'}
</label>
</p>
{/if}
{if ((!$order->hasBeenDelivered() && $order->hasBeenPaid()) || ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN')))}
<p class="checkbox">
<label for="generateCreditSlip">
<input type="checkbox" id="generateCreditSlip" name="generateCreditSlip" onclick="toggleShippingCost(this)" />
{l s='Generate a credit card slip'}
</label>
</p>
<p class="checkbox">
<label for="generateDiscount">
<input type="checkbox" id="generateDiscount" name="generateDiscount" onclick="toggleShippingCost(this)" />
{l s='Generate a voucher'}
</label>
</p>
<p class="checkbox" id="spanShippingBack" style="display:none;">
<label for="shippingBack" style="float:none">
<input type="checkbox" id="shippingBack" name="shippingBack" />
{l s='Repay shipping costs'}
</label>
</p>
{/if}
{if (!$order->hasBeenDelivered() || ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN')))}
<input type="submit" name="cancelProduct" value="{if $order->hasBeenDelivered()}{l s='Return products'}{elseif $order->hasBeenPaid()}{l s='Refund products'}{else}{l s='Cancel products'}{/if}" class="btn btn-default" />
{/if}
</div>
<div style="display:none;" class="partial_refund_fields">
<p class="checkbox">
<label for="reinjectQuantities">
<input type="checkbox" id="reinjectQuantities" name="reinjectQuantities" />
{l s='Re-stock products'}
</label>
</p>
<p class="checkbox">
<label for="generateDiscountRefund">
<input type="checkbox" id="generateDiscountRefund" name="generateDiscountRefund" onclick="toggleShippingCost(this)" />
{l s='Generate a voucher'}
</label>
</p>
<button type="submit" name="partialRefund" class="btn btn-default" />
<i class="icon-ok"></i>
{l s='Partial refund'}
</button>
</div>
</fieldset>
<fieldset >
@@ -872,7 +929,9 @@
{l s='Value'}
</span>
</th>
{if $can_edit}<th></th>{/if}
{if $can_edit}
<th></th>
{/if}
</tr>
</thead>
<tbody>
@@ -908,35 +967,6 @@
{/if}
{/if}
<div style="display: none;" class="standard_refund_fields">
{if ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN'))}
<input type="checkbox" name="reinjectQuantities"/>
<label for="reinjectQuantities">{l s='Re-stock products'}</label>
{/if}
{if ((!$order->hasBeenDelivered() && $order->hasBeenPaid()) || ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN')))}
<input type="checkbox" id="generateCreditSlip" name="generateCreditSlip" onclick="toggleShippingCost(this)" />
<label for="generateCreditSlip">{l s='Generate a credit card slip'}</label>
<input type="checkbox" id="generateDiscount" name="generateDiscount" onclick="toggleShippingCost(this)" />
<label for="generateDiscount">{l s='Generate a voucher'}</label>
<span id="spanShippingBack" style="display:none;">
<input type="checkbox" id="shippingBack" name="shippingBack" class="btn btn-default" />
<label for="shippingBack" style="float:none; font-weight:normal;">{l s='Repay shipping costs'}</label>
</span>
{/if}
{if (!$order->hasBeenDelivered() || ($order->hasBeenDelivered() && Configuration::get('PS_ORDER_RETURN')))}
<input type="submit" name="cancelProduct" value="{if $order->hasBeenDelivered()}{l s='Return products'}{elseif $order->hasBeenPaid()}{l s='Refund products'}{else}{l s='Cancel products'}{/if}" class="btn btn-default" />
{/if}
</div>
<div style="display:none;" class="partial_refund_fields">
<input type="checkbox" name="reinjectQuantities" class="btn btn-default" />
<label for="reinjectQuantities">{l s='Re-stock products'}</label>
<input type="checkbox" id="generateDiscountRefund" name="generateDiscountRefund" class="btn btn-default" onclick="toggleShippingCost(this)" />
<label for="generateDiscount">{l s='Generate a voucher'}</label>
<input type="submit" name="partialRefund" value="{l s='Partial refund'}" class="btn btn-default" />
</div>
</fieldset>
</form>
@@ -946,36 +976,79 @@
<i class="icon-envelope"></i>
{l s='New message'}
</h3>
<button type="button" class="btn btn-default" onclick="$('#message').slideToggle();$('#message_m').slideToggle();return false">
<p id="message_m" style="display: {if Tools::getValue('message')}none{else}block{/if}">
{l s='to add a comment or send a message to the customer.'}
</p>
<button id="newMessage" type="button" class="btn btn-default">
<i class="icon-envelope"></i>
{l s='New message'}
</button>
<div id="message_m" style="display: {if Tools::getValue('message')}none{else}block{/if}">
{l s='to add a comment or send a message to the customer.'}
<div id="message" class="form-horizontal" style="display:none">
<div class="form-group">
<label class="control-label col-lg-3">{l s='Choose a standard message'}</label>
<div class="col-lg-9">
<select name="order_message" id="order_message" onchange="orderOverwriteMessage(this, '{l s='Do you want to overwrite your existing message?'}')">
<option value="0" selected="selected">--</option>
{foreach from=$orderMessages item=orderMessage}
<option value="{$orderMessage['message']|escape:'htmlall':'UTF-8'}">{$orderMessage['name']}</option>
{/foreach}
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">{l s='Display to customer?'}</label>
<div class="col-lg-9">
<div class="row">
<div class="input-group col-lg-2">
<span class="switch prestashop-switch">
<input type="radio" name="visibility" id="visibility_on" value="0" />
<label class="radio" for="visibility_on">
<i class="icon-check-sign text-success"></i>
{l s='Yes'}
</label>
<input type="radio" name="visibility" id="visibility_off" value="1" checked="checked" />
<label class="radio" for="visibility_off">
<i class="icon-ban-circle text-danger"></i>
{l s='No'}
</label>
<span class="slide-button btn btn-default"></span>
</span>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">{l s='Message'}</label>
<div class="col-lg-9">
<textarea id="txt_msg" class="textarea-autosize" name="message">{Tools::getValue('message')|escape:'htmlall':'UTF-8'}</textarea>
<p id="nbchars"></p>
</div>
</div>
<div class="form-group">
<div class="col-lg-9 col-lg-offset-3">
<input type="hidden" name="id_order" value="{$order->id}" />
<input type="hidden" name="id_customer" value="{$order->id_customer}" />
<button type="button" id="cancelMessage" class="btn btn-default">
<i class="icon-remove text-danger"></i>
{l s='Cancel'}
</button>
<button type="submit" id="submitMessage" class="btn btn-default" >
<i class="icon-ok text-success"></i>
{l s='Send'}
</button>
</div>
</div>
</div>
<hr/>
<a href="{$link->getAdminLink('AdminCustomerThreads')|escape:'htmlall':'UTF-8'}">
<b>{l s='Click here'}</b> {l s='to see all messages.'}
<i class="icon-external-link"></i>
</a>
<div id="message" style="display: {if Tools::getValue('message')}block{else}none{/if}">
<select name="order_message" id="order_message" onchange="orderOverwriteMessage(this, '{l s='Do you want to overwrite your existing message?'}')">
<option value="0" selected="selected">-- {l s='Choose a standard message'} --</option>
{foreach from=$orderMessages item=orderMessage}
<option value="{$orderMessage['message']|escape:'htmlall':'UTF-8'}">{$orderMessage['name']}</option>
{/foreach}
</select>
<b>{l s='Display to customer?'}</b>
<input type="radio" name="visibility" id="visibility" value="0" /> {l s='Yes'}
<input type="radio" name="visibility" value="1" checked="checked" /> {l s='No'}
<p id="nbchars"></p>
<textarea id="txt_msg" name="message" cols="50" rows="8" onKeyUp="var length = document.getElementById('txt_msg').value.length; if (length > 600) length = '600+'; document.getElementById('nbchars').innerHTML = '{l s='600 characters, max.'} (' + length + ')';">{Tools::getValue('message')|escape:'htmlall':'UTF-8'}</textarea>
<input type="hidden" name="id_order" value="{$order->id}" />
<input type="hidden" name="id_customer" value="{$order->id_customer}" />
<input type="submit" class="btn btn-default" name="submitMessage" value="{l s='Send'}" />
</div>
</fieldset>
</form>
@@ -989,7 +1062,7 @@
<div {if $message['is_new_for_me']}class="new_message"{/if}>
{if ($message['is_new_for_me'])}
<a class="new_message" title="{l s='Mark this message as \'viewed\''}" href="{$smarty.server.REQUEST_URI}&token={$smarty.get.token}&messageReaded={$message['id_message']}">
<img src="../img/admin/enabled.gif" alt="" />
<i class="icon-ok"></i>
</a>
{/if}
{l s='At'} <i>{dateFormat date=$message['date_add']}</i>
@@ -1003,4 +1076,8 @@
</fieldset>
{/if}
<script type="text/javascript">
$(".textarea-autosize").autosize();
</script>
{/block}
@@ -368,7 +368,7 @@
{if isset($input.disabled) && $input.disabled}disabled="disabled"{/if}
/>
<label
class="t radio"
class="radio"
{if $value.value == 1}
for="{$input.name}_on"
{else}
@@ -45,9 +45,9 @@
success: function(jsonData){
if (!jsonData.has_errors)
{
if (jsonData.value)
if (jsonData.value != undefined)
$('#{$id|addslashes} .value').html(jsonData.value);
if (jsonData.data)
if (jsonData.data != undefined)
{
$("#{$id|addslashes} .boxchart svg").remove();
set_d3_{$id|str_replace:'-':'_'|addslashes}(jsonData.data);
+11 -1
View File
@@ -142,10 +142,12 @@ class ProductSaleCore
$sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
$sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(image_shop.`id_image`) id_image, il.`legend`,
ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category, p.show_price, p.available_for_order, p.quantity, p.customizable,
IFNULL(pa.minimal_quantity, p.minimal_quantity) as minimal_quantity, p.out_of_stock
FROM `'._DB_PREFIX_.'product_sale` ps
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
'.Shop::addSqlAssociation('product', 'p').'
LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa ON (ps.`id_product` = pa.`id_product` AND pa.default_on = 1)
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
ON p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').'
@@ -166,6 +168,7 @@ class ProductSaleCore
GROUP BY product_shop.id_product
ORDER BY sales DESC
LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
return false;
@@ -173,6 +176,13 @@ class ProductSaleCore
{
$row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']);
$row['id_image'] = Product::defineProductImage($row, $id_lang);
$row['allow_oosp'] = Product::isAvailableWhenOutOfStock($row['out_of_stock']);
$row['price_tax_exc'] = Product::getPriceStatic(
(int)$row['id_product'],
false,
((isset($row['id_product_attribute']) && !empty($row['id_product_attribute'])) ? (int)$row['id_product_attribute'] : null),
(Product::$_taxCalculationMethod == PS_TAX_EXC ? 2 : 6)
);
}
return $result;
}
@@ -132,6 +132,11 @@ class AdminOrdersControllerCore extends AdminController
parent::__construct();
}
public function initContent(){
$this->addJS(_PS_JS_DIR_.'jquery/plugins/jquery.autosize.min.js');
return parent::initContent();
}
public function initPageHeaderToolbar()
{
$this->page_header_toolbar_title = $this->l('Orders');
+39 -41
View File
@@ -34,6 +34,7 @@ class AdminTabsControllerCore extends AdminController
$this->context = Context::getContext();
$this->multishop_context = Shop::CONTEXT_ALL;
$this->table = 'tab';
$this->list_id = 'tab';
$this->className = 'Tab';
$this->lang = true;
@@ -85,11 +86,19 @@ class AdminTabsControllerCore extends AdminController
public function initPageHeaderToolbar()
{
$this->page_header_toolbar_title = $this->l('Menus');
$this->page_header_toolbar_btn['new_menu'] = array(
'href' => self::$currentIndex.'&amp;addtab&amp;token='.$this->token,
'desc' => $this->l('Add new menu'),
'icon' => 'process-icon-new'
);
if ($this->display == 'details')
$this->page_header_toolbar_btn['back_to_list'] = array(
'href' => Context::getContext()->link->getAdminLink('AdminTabs'),
'desc' => $this->l('Back to list'),
'icon' => 'process-icon-back'
);
else
$this->page_header_toolbar_btn['new_menu'] = array(
'href' => self::$currentIndex.'&amp;addtab&amp;token='.$this->token,
'desc' => $this->l('Add new menu'),
'icon' => 'process-icon-new'
);
parent::initPageHeaderToolbar();
}
@@ -212,53 +221,42 @@ class AdminTabsControllerCore extends AdminController
return parent::renderList();
}
/**
* method call when ajax request is made with the details row action
* @see AdminController::postProcess()
*/
public function ajaxProcessDetails()
public function initProcess()
{
if (($id = Tools::getValue('id')))
if (Tools::getIsset('details'.$this->table))
{
// override attributes
$this->display = 'list';
$this->lang = false;
$this->list_id = 'details';
if (isset($_POST['submitReset'.$this->list_id]))
$this->processResetFilters();
}
else
$this->list_id = 'tab';
return parent::initProcess();
}
public function renderDetails()
{
if (($id = Tools::getValue('id_tab')))
{
$this->lang = false;
$this->list_id = 'details';
$this->addRowAction('edit');
$this->addRowAction('delete');
$this->toolbar_btn = array();
$tab = $this->loadObject($id);
$this->toolbar_title = $tab->name[$this->context->employee->id_lang];
$this->_select = 'b.*';
$this->_join = 'LEFT JOIN `'._DB_PREFIX_.'tab_lang` b ON (b.`id_tab` = a.`id_tab` AND b.`id_lang` = '.$this->context->language->id.')';
$this->_where = 'AND a.`id_parent` = '.(int)$id;
$this->_orderBy = 'position';
// get list and force no limit clause in the request
$this->getList($this->context->language->id);
// Render list
$helper = new HelperList();
$helper->actions = $this->actions;
$helper->list_skip_actions = $this->list_skip_actions;
$helper->no_link = true;
$helper->shopLinkType = '';
$helper->identifier = $this->identifier;
$helper->imageType = $this->imageType;
$helper->toolbar_scroll = false;
$helper->show_toolbar = false;
$helper->orderBy = 'position';
$helper->orderWay = 'ASC';
$helper->currentIndex = self::$currentIndex;
$helper->token = $this->token;
$helper->table = $this->table;
$helper->position_identifier = $this->position_identifier;
// Force render - no filter, form, js, sorting ...
$helper->simple_header = true;
$content = $helper->generateList($this->_list, $this->fields_list);
echo Tools::jsonEncode(array('use_parent_structure' => false, 'data' => $content));
self::$currentIndex = self::$currentIndex.'&details'.$this->table;
$this->processFilter();
return parent::renderList();
}
die;
}
public function postProcess()
+32 -9
View File
@@ -293,13 +293,35 @@ function closeAddProduct()
current_product = null;
}
/**
* This method allow to initialize all events
*/
function init()
{
$('.add_product').unbind('click');
$('.add_product').click(function() {
$('#txt_msg').on('keyup', function(){
var length = $('#txt_msg').val().length;
if (length > 600) length = '600+';
$('#nbchars').html(length+'/600');
});
$('#newMessage').unbind('click');
$('#newMessage').click(function() {
$(this).hide();
$('#message').show();
return false;
});
$('#cancelMessage').unbind('click');
$('#cancelMessage').click(function() {
$('#newMessage').show();
$('#message').hide();
return false;
});
$('#add_product').unbind('click');
$('#add_product').click(function() {
$('.cancel_product_change_link:visible').trigger('click');
$('.add_product_fields').show();
$('.edit_product_fields').hide();
@@ -308,12 +330,17 @@ function init()
$('tr#new_product').slideDown('fast', function () {
$('tr#new_product td').fadeIn('fast');
});
$(this).hide();
$.scrollTo('tr#new_product', 1200, {offset: -100});
return false;
});
$('#cancelAddProduct').unbind('click');
$('#cancelAddProduct').click(function() {
$('#add_product').show();
$('tr#new_product td').fadeOut('fast');
});
$("#add_product_product_name").autocomplete(admin_order_tab_link,
{
minChars: 3,
@@ -793,15 +820,13 @@ function init()
$('#add_voucher').click(function() {
$(this).hide();
$('#voucher_form').show();
return false;
});
$('#cancel_add_voucher').unbind('click');
$('#cancel_add_voucher').click(function() {
$('#voucher_form').hide();
$('#add_discount_btn').show();
$('#add_voucher').show();
return false;
});
@@ -873,7 +898,6 @@ $(document).ready(function() {
$('.partial_refund_fields').hide();
$('.standard_refund_fields').fadeIn();
}
return false;
});
@@ -896,7 +920,6 @@ $(document).ready(function() {
$('.standard_refund_fields').hide();
$('.partial_refund_fields').fadeIn();
}
return false;
});
});
@@ -217,7 +217,7 @@ class BlockBestSellers extends Module
if (Configuration::get('PS_CATALOG_MODE'))
return false;
if (!($result = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, 5)))
if (!($result = ProductSale::getBestSalesLight((int)$params['cookie']->id_lang, 0, 8)))
return (Configuration::get('PS_BLOCK_BESTSELLERS_DISPLAY') ? array() : false);
$bestsellers = array();
+1
View File
@@ -112,6 +112,7 @@ class HomeFeatured extends Module
public function hookHeader($params)
{
$this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all');
$this->context->controller->addJS(($this->_path).'js/homefeatured.js');
}
public function hookDisplayHome($params)
+36
View File
@@ -0,0 +1,36 @@
/*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
$(document).ready(function()
{
$('.title_block').click(function(){
var button = $(this);
$('#index #center_column .products_block').removeClass('active');
button.parent('.products_block').addClass('active');
$('#index #center_column .products_block .block_content').hide(0, function(){
button.next('.block_content').show(0);
});
});
});
@@ -22,35 +22,5 @@
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<!-- MODULE Home Block best sellers -->
<div id="best-sellers_block_center" class="block products_block">
<p class="title_block">{l s='Top sellers' mod='blockbestsellers'}</p>
{if isset($best_sellers) AND $best_sellers}
<div class="block_content">
{assign var='liHeight' value=320}
{assign var='nbItemsPerLine' value=4}
{assign var='nbLi' value=$best_sellers|@count}
{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
{math equation="nbLines*liHeight" nbLines=$nbLines|ceil liHeight=$liHeight assign=ulHeight}
<ul style="height:{$ulHeight}px;">
{foreach from=$best_sellers item=product name=myLoop}
<li style="border-bottom:0" class="ajax_block_product {if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if} {if $smarty.foreach.myLoop.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.myLoop.iteration%$nbItemsPerLine == 1}clear{/if} {if $smarty.foreach.myLoop.iteration > ($smarty.foreach.myLoop.total - ($smarty.foreach.myLoop.total % $nbItemsPerLine))}last_line{/if}">
<p class="s_title_block"><a href="{$product.link|escape:'html'}" title="{$product.name|truncate:32:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:27:'...'|escape:'htmlall':'UTF-8'}</a></p>
<div class="product_desc"><a href="{$product.link|escape:'html'}" title="{l s='More' mod='blockbestsellers'}">{$product.description_short|strip_tags|truncate:130:'...'}</a></div>
<a href="{$product.link|escape:'html'}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.name|escape:html:'UTF-8'}" /></a>
<div>
{if !$PS_CATALOG_MODE}<p class="price_container"><span class="price">{$product.price}</span></p>{else}<div style="height:21px;"></div>{/if}
<a class="button" href="{$product.link|escape:'html'}" title="{l s='View' mod='blockbestsellers'}">{l s='View' mod='blockbestsellers'}</a>
</div>
</li>
{/foreach}
</ul>
<p class="clearfix" style="padding: 5px;"><a style="float:right;" href="{$link->getPageLink('best-sales')|escape:'html'}" title="{l s='All best sellers' mod='blockbestsellers'}" class="button_large">{l s='All best sellers' mod='blockbestsellers'}</a></p>
</div>
{else}
<p>{l s='No best sellers at this time' mod='blockbestsellers'}</p>
{/if}
<br class="clear"/>
</div>
<!-- /MODULE Home Block best sellers -->
{capture name=title}{l s='Best sellers' mod='blockbestsellers'}{/capture}
{include file="$tpl_dir./product-list-home.tpl" id="blockbestsellers_block" title=$smarty.capture.title products=$best_sellers}
@@ -22,29 +22,5 @@
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<!-- MODULE Block new products -->
<div id="new-products_block_right" class="block products_block">
<p class="title_block"><a href="{$link->getPageLink('new-products')|escape:'html'}" title="{l s='New products' mod='blocknewproducts'}">{l s='New products' mod='blocknewproducts'}</a></p>
<div class="block_content">
{if $new_products !== false}
<ul class="product_images clearfix">
{foreach from=$new_products item='product' name='newProducts'}
{if $smarty.foreach.newProducts.index < 2}
<li{if $smarty.foreach.newProducts.first} class="first"{/if}><a href="{$product.link|escape:'html'}" title="{$product.legend|escape:html:'UTF-8'}"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'medium_default')|escape:'html'}" height="{$mediumSize.height}" width="{$mediumSize.width}" alt="{$product.legend|escape:html:'UTF-8'}" /></a></li>
{/if}
{/foreach}
</ul>
<dl class="products">
{foreach from=$new_products item=newproduct name=myLoop}
<dt class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}"><a href="{$newproduct.link|escape:'html'}" title="{$newproduct.name|escape:html:'UTF-8'}">{$newproduct.name|strip_tags|escape:html:'UTF-8'}</a></dt>
{if $newproduct.description_short}<dd class="{if $smarty.foreach.myLoop.first}first_item{elseif $smarty.foreach.myLoop.last}last_item{else}item{/if}"><a href="{$newproduct.link|escape:'html'}">{$newproduct.description_short|strip_tags:'UTF-8'|truncate:75:'...'}</a><br /><a href="{$newproduct.link}" class="lnk_more">{l s='Read more' mod='blocknewproducts'}</a></dd>{/if}
{/foreach}
</dl>
<p><a href="{$link->getPageLink('new-products')|escape:'html'}" title="{l s='All new products' mod='blocknewproducts'}" class="button_large">&raquo; {l s='All new products' mod='blocknewproducts'}</a></p>
{else}
<p>&raquo; {l s='No new products at this time' mod='blocknewproducts'}</p>
{/if}
</div>
</div>
<!-- /MODULE Block new products -->
{capture name=title}{l s='New arrivals' mod='blocknewproducts'}{/capture}
{include file="$tpl_dir./product-list-home.tpl" id="blocknewproducts_block" title=$smarty.capture.title products=$new_products}
@@ -22,45 +22,5 @@
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<!-- MODULE Home Featured Products -->
<div id="featured-products_block_center" class="block products_block clearfix">
<p class="title_block">{l s='Featured products' mod='homefeatured'}</p>
{if isset($products) AND $products}
<div class="block_content">
{assign var='liHeight' value=250}
{assign var='nbItemsPerLine' value=4}
{assign var='nbLi' value=$products|@count}
{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
{math equation="nbLines*liHeight" nbLines=$nbLines|ceil liHeight=$liHeight assign=ulHeight}
<ul style="height:{$ulHeight}px;">
{foreach from=$products item=product name=homeFeaturedProducts}
{math equation="(total%perLine)" total=$smarty.foreach.homeFeaturedProducts.total perLine=$nbItemsPerLine assign=totModulo}
{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
<li class="ajax_block_product {if $smarty.foreach.homeFeaturedProducts.first}first_item{elseif $smarty.foreach.homeFeaturedProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.homeFeaturedProducts.iteration > ($smarty.foreach.homeFeaturedProducts.total - $totModulo)}last_line{/if}">
<a href="{$product.link|escape:'html'}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.name|escape:html:'UTF-8'}" />{if isset($product.new) && $product.new == 1}<span class="new">{l s='New' mod='homefeatured'}</span>{/if}</a>
<p class="s_title_block"><a href="{$product.link|escape:'html'}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></p>
<div class="product_desc"><a href="{$product.link|escape:'html'}" title="{l s='More' mod='homefeatured'}">{$product.description_short|strip_tags|truncate:65:'...'}</a></div>
<div>
<a class="lnk_more" href="{$product.link|escape:'html'}" title="{l s='View' mod='homefeatured'}">{l s='View' mod='homefeatured'}</a>
{if $product.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<p class="price_container"><span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span></p>{else}<div style="height:21px;"></div>{/if}
{if ($product.id_product_attribute == 0 OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product.available_for_order AND !isset($restricted_country_mode) AND $product.minimal_quantity == 1 AND $product.customizable != 2 AND !$PS_CATALOG_MODE}
{if ($product.quantity > 0 OR $product.allow_oosp)}
<a class="exclusive ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$link->getPageLink('cart')|escape:'html'}?qty=1&amp;id_product={$product.id_product}&amp;token={$static_token}&amp;add" title="{l s='Add to cart' mod='homefeatured'}">{l s='Add to cart' mod='homefeatured'}</a>
{else}
<span class="exclusive">{l s='Add to cart' mod='homefeatured'}</span>
{/if}
{else}
<div style="height:23px;"></div>
{/if}
</div>
</li>
{/foreach}
</ul>
</div>
{else}
<p>{l s='No featured products' mod='homefeatured'}</p>
{/if}
</div>
<!-- /MODULE Home Featured Products -->
{capture name=title}{l s='Popular' mod='homefeatured'}{/capture}
{include file="$tpl_dir./product-list-home.tpl" id="homefeatured_block" title=$smarty.capture.title}
+62
View File
@@ -0,0 +1,62 @@
{*
* 2007-2013 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*}
<div{if isset($id)} id="{$id}"{/if} class="block products_block{if isset($id) && $id eq 'blocknewproducts_block'} active{/if}">
<h4 class="title_block">{if isset($title)}{$title}{/if}</h4>
{if isset($products) AND $products}
<div class="block_content">
{assign var='liHeight' value=250}
{assign var='nbItemsPerLine' value=4}
{assign var='nbLi' value=$products|@count}
{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}
{math equation="nbLines*liHeight" nbLines=$nbLines|ceil liHeight=$liHeight assign=ulHeight}
<ul style="height:{$ulHeight}px;">
{foreach from=$products item=product name=homeProducts}
{math equation="(total%perLine)" total=$smarty.foreach.homeProducts.total perLine=$nbItemsPerLine assign=totModulo}
{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}
<li class="ajax_block_product {if $smarty.foreach.homeProducts.first}first_item{elseif $smarty.foreach.homeProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.homeProducts.iteration > ($smarty.foreach.homeProducts.total - $totModulo)}last_line{/if}">
<a href="{$product.link|escape:'html'}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html'}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.name|escape:html:'UTF-8'}" />{if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}</a>
<h5 class="s_title_block"><a href="{$product.link|escape:'html'}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h5>
<div class="product_desc"><a href="{$product.link|escape:'html'}" title="{l s='More'}">{$product.description_short|strip_tags|truncate:65:'...'}</a></div>
<div>
<a class="lnk_more" href="{$product.link|escape:'html'}" title="{l s='View'}">{l s='View'}</a>
{if isset($product.show_price) && $product.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<p class="price_container"><span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span></p>{else}<div style="height:21px;"></div>{/if}
{if ((isset($product.id_product_attribute) && $product.id_product_attribute == 0) OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND (isset($product.available_for_order) && $product.available_for_order) AND !isset($restricted_country_mode) AND $product.minimal_quantity == 1 AND $product.customizable != 2 AND !$PS_CATALOG_MODE}
{if ($product.quantity > 0 OR $product.allow_oosp)}
<a class="exclusive ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$link->getPageLink('cart')|escape:'html'}?qty=1&amp;id_product={$product.id_product}&amp;token={$static_token}&amp;add" title="{l s='Add to cart'}">{l s='Add to cart'}</a>
{else}
<span class="exclusive">{l s='Add to cart'}</span>
{/if}
{else}
<div style="height:23px;"></div>
{/if}
</div>
</li>
{/foreach}
</ul>
</div>
{else}
<p>{l s='No products'}</p>
{/if}
</div>