// Release branch merged

This commit is contained in:
François Gaillard
2013-03-27 10:25:16 +01:00
1089 changed files with 4260 additions and 52622 deletions
+1 -1
View File
@@ -84,7 +84,7 @@ $(document).ready(function() {
{/if}
</p>
<form action="{$link->getPageLink('address', true)}" method="post" id="add_adress">
<form action="{$link->getPageLink('address', true)}" method="post" id="add_address" data-ajax="false">
<legend><h3>{if isset($id_address) && $id_address != 0}{l s='Your address'}{else}{l s='New address'}{/if}</h3></legend>
<div class="required text dni">
<label for="dni">{l s='Identification number'}</label>
+8
View File
@@ -29,6 +29,10 @@
clear:both;
}
.width-15 {
width:15%;
}
.width-20 {
width:20%;
}
@@ -37,6 +41,10 @@
width:40%;
}
.width-60 {
width:60%;
}
.width-70 {
width:70%;
}
+172
View File
@@ -88,6 +88,20 @@ function initEvent()
});
}
function updateCarrierList(json)
{
var html = json.carrier_block;
// @todo check with theme 1.4
//if ($('#HOOK_EXTRACARRIER').length == 0 && json.HOOK_EXTRACARRIER !== null && json.HOOK_EXTRACARRIER != undefined)
// html += json.HOOK_EXTRACARRIER;
$('#carrier_area').replaceWith(html);
bindInputs();
/* update hooks for carrier module */
$('#HOOK_BEFORECARRIER').html(json.HOOK_BEFORECARRIER);
}
function giftShowDiv()
{
if ($('#gift').is(':checked'))
@@ -134,3 +148,161 @@ function updateCarrierSection(elm)
}
});
}
function bindInputs()
{
// Order message update
$('#message').blur(function() {
$('#opc_delivery_methods-overlay').fadeIn('slow');
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: orderOpcUrl + '?rand=' + new Date().getTime(),
async: false,
cache: false,
dataType : "json",
data: 'ajax=true&method=updateMessage&message=' + encodeURIComponent($('#message').val()) + '&token=' + static_token ,
success: function(jsonData)
{
if (jsonData.hasError)
{
var errors = '';
for(var error in jsonData.errors)
//IE6 bug fix
if(error !== 'indexOf')
errors += jsonData.errors[error] + "\n";
alert(errors);
}
else
$('#opc_delivery_methods-overlay').fadeOut('slow');
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (textStatus !== 'abort')
alert("TECHNICAL ERROR: unable to save message \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
$('#opc_delivery_methods-overlay').fadeOut('slow');
}
});
});
// Recyclable checkbox
$('#recyclable').click(function() {
updateCarrierSelectionAndGift();
});
// Gift checkbox update
$('#gift').click(function() {
if ($('#gift').is(':checked'))
$('#gift_div').show();
else
$('#gift_div').hide();
updateCarrierSelectionAndGift();
});
if ($('#gift').is(':checked'))
$('#gift_div').show();
else
$('#gift_div').hide();
// Gift message update
$('#gift_message').change(function() {
updateCarrierSelectionAndGift();
});
// Term Of Service (TOS)
$('#cgv').click(function() {
updatePaymentMethodsDisplay();
});
}
function updateCarrierSelectionAndGift()
{
var recyclablePackage = 0;
var gift = 0;
var giftMessage = '';
var delivery_option_radio = $('.delivery_option_radio');
var delivery_option_params = '&';
$.each(delivery_option_radio, function(i) {
if ($(this).prop('checked'))
delivery_option_params += $(delivery_option_radio[i]).attr('name') + '=' + $(delivery_option_radio[i]).val() + '&';
});
if (delivery_option_params == '&')
delivery_option_params = '&delivery_option=&';
if ($('input#recyclable:checked').length)
recyclablePackage = 1;
if ($('input#gift:checked').length)
{
gift = 1;
giftMessage = encodeURIComponent($('#gift_message').val());
}
$('#opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow');
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: orderOpcUrl + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType : "json",
data: 'ajax=true&method=updateCarrierAndGetPayments' + delivery_option_params + 'recyclable=' + recyclablePackage + '&gift=' + gift + '&gift_message=' + giftMessage + '&token=' + static_token ,
success: function(jsonData)
{
if (jsonData.hasError)
{
var errors = '';
for(var error in jsonData.errors)
//IE6 bug fix
if(error !== 'indexOf')
errors += jsonData.errors[error] + "\n";
alert(errors);
}
else
{
updateCartSummary(jsonData.summary);
updatePaymentMethods(jsonData);
updateHookShoppingCart(jsonData.summary.HOOK_SHOPPING_CART);
updateHookShoppingCartExtra(jsonData.summary.HOOK_SHOPPING_CART_EXTRA);
updateCarrierList(jsonData.carrier_data);
$('#opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow');
refreshDeliveryOptions();
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
if (textStatus !== 'abort')
alert("TECHNICAL ERROR: unable to save carrier \n\nDetails:\nError thrown: " + XMLHttpRequest + "\n" + 'Text status: ' + textStatus);
$('#opc_delivery_methods-overlay, #opc_payment_methods-overlay').fadeOut('slow');
}
});
}
function updatePaymentMethods(json)
{
$('#HOOK_TOP_PAYMENT').html(json.HOOK_TOP_PAYMENT);
$('#opc_payment_methods-content #HOOK_PAYMENT').html(json.HOOK_PAYMENT);
}
function updatePaymentMethodsDisplay()
{
var checked = '';
if ($('#cgv:checked').length !== 0)
checked = 1;
else
checked = 0;
$('#opc_payment_methods-overlay').fadeIn('slow', function(){
$.ajax({
type: 'POST',
headers: { "cache-control": "no-cache" },
url: orderOpcUrl + '?rand=' + new Date().getTime(),
async: true,
cache: false,
dataType : "json",
data: 'ajax=true&method=updateTOSStatusAndGetPayments&checked=' + checked + '&token=' + static_token,
success: function(json)
{
updatePaymentMethods(json);
}
});
$(this).fadeOut('slow');
});
}
+1 -1
View File
@@ -96,7 +96,7 @@ var ProductFn = (function()
return true;
}
ProductFn.already_init = true;
if ($('.attributes_group select').length) {
if ($('.attributes_group select').length || $('.attributes_group input[type=radio]').length) {
initAttrSelector();
}
ProductFn.checkMinimalQuantity();
+1 -1
View File
@@ -143,7 +143,7 @@
</div>
</div>
</span>
<span class="delivery_option_carrier ui-block-b {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}selected{/if} {if $option.unique_carrier}not-displayable{/if}">
<span class="delivery_option_carrier_desc ui-block-b {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}selected{/if} {if $option.unique_carrier}not-displayable{/if}">
{foreach $option.carrier_list as $carrier}
<tr>
{if !$option.unique_carrier}
+1 -1
View File
@@ -203,7 +203,7 @@
<ul data-role="listview" >
{foreach from=$order->getShipping() item=line}
<li>
<h3>{$line.state_name}</h3>
<h3>{$line.carrier_name}</h3>
<p><strong>{l s='Weight'}</strong> {$line.weight|string_format:"%.3f"} {Configuration::get('PS_WEIGHT_UNIT')}</p>
<p><strong>{l s='Shipping cost'}</strong> {if $order->getTaxCalculationMethod() == $smarty.const.PS_TAX_INC}{displayPrice price=$line.shipping_cost_tax_incl currency=$currency->id}{else}{displayPrice price=$line.shipping_cost_tax_excl currency=$currency->id}{/if}</p>
<p><strong>{l s='Tracking number'}</strong> {if $line.url && $line.tracking_number}<a href="{$line.url|replace:'@':$line.tracking_number}" data-ajax="false">{$line.tracking_number}</a>{elseif $line.tracking_number != ''}{$line.tracking_number}{else}----{/if}</p>
+120 -13
View File
@@ -26,16 +26,112 @@
{capture assign='page_title'}{l s='Shipping:'}{/capture}
{include file='./page-title.tpl'}
<script type="text/javascript">
// <![CDATA[
var orderProcess = 'order';
var currencySign = '{$currencySign|html_entity_decode:2:"UTF-8"}';
var currencyRate = '{$currencyRate|floatval}';
var currencyFormat = '{$currencyFormat|intval}';
var currencyBlank = '{$currencyBlank|intval}';
var txtProduct = "{l s='product' js=1}";
var txtProducts = "{l s='products' js=1}";
var orderUrl = '{$link->getPageLink("order", true)}';
var msg = "{l s='You must agree to the terms of service before continuing.' js=1}";
{literal}
function acceptCGV()
{
if ($('#cgv').length && !$('input#cgv:checked').length)
{
alert(msg);
return false;
}
else
return true;
}
{/literal}
//]]>
</script>
<div data-role="content" id="delivery_choose">
<h3 class="bg">{l s='Choose your delivery method'}</h3>
<fieldset data-role="controlgroup">
{if isset($delivery_option_list)}
{foreach $delivery_option_list as $id_address => $option_list}
{foreach $option_list as $key => $option}
{foreach $option.carrier_list as $carrier}
<input type="radio" name="delivery_option[{$id_address}]" class="delivery_option_radio delivery_option_radio_carrier" id="opc_carrier_{$carrier.instance->id}" value="{$carrier.instance->id}" {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}checked="checked"{/if} />
<label for="opc_carrier_{$carrier.instance->id}">{$carrier.instance->name}</label>
{/foreach}
<div class="delivery_option {if ($option@index % 2)}alternate_{/if}item">
<input class="delivery_option_radio" type="radio" name="delivery_option[{$id_address}]" onchange="{if $opc}updateCarrierSelectionAndGift();{else}updateExtraCarrier('{$key}', {$id_address});{/if}" id="delivery_option_{$id_address}_{$option@index}" value="{$key}" {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}checked="checked"{/if} />
<label for="delivery_option_{$id_address}_{$option@index}">
<div class="ui-grid-a">
<span class="resume ui-block-a">
<div class="ui-grid-b">
<p class="delivery_option_logo ui-block-a">
{foreach $option.carrier_list as $carrier}
{if $carrier.logo}
<img src="{$carrier.logo}" alt="{$carrier.instance->name}"/>
{else if !$option.unique_carrier}
{$carrier.instance->name}
{if !$carrier@last} - {/if}
{/if}
{/foreach}
</p>
<div class="ui-block-b" style="padding-left:4px;">
{if $option.unique_carrier}
{foreach $option.carrier_list as $carrier}
<div class="delivery_option_title">{$carrier.instance->name}</div>
{/foreach}
{/if}
</div>
<div class="ui-block-c">
<div class="delivery_option_price">
{if $option.total_price_with_tax && !$free_shipping}
{if $use_taxes == 1}
{convertPrice price=$option.total_price_with_tax} {l s='(tax incl.)'}
{else}
{convertPrice price=$option.total_price_without_tax} {l s='(tax excl.)'}
{/if}
{else}
{l s='Free'}
{/if}
</div>
</div>
</div>
</span>
<span class="delivery_option_carrier_desc ui-block-b {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}selected{/if} {if $option.unique_carrier}not-displayable{/if}">
{foreach $option.carrier_list as $carrier}
<tr>
{if !$option.unique_carrier}
<td class="first_item">
<input type="hidden" value="{$carrier.instance->id}" name="id_carrier" />
{if $carrier.logo}
<img src="{$carrier.logo}" alt="{$carrier.instance->name}"/>
{/if}
</td>
<td>
{$carrier.instance->name}
</td>
{/if}
<td {if $option.unique_carrier}class="first_item" colspan="2"{/if}>
<input type="hidden" value="{$carrier.instance->id}" name="id_carrier" />
{if isset($carrier.instance->delay[$cookie->id_lang])}
{$carrier.instance->delay[$cookie->id_lang]}<br />
{if count($carrier.product_list) <= 1}
({l s='Product concerned:'}
{else}
({l s='Products concerned:'}
{/if}
{* This foreach is on one line, to avoid tabulation in the title attribute of the acronym *}
{foreach $carrier.product_list as $product}
{if $product@index == 4}<acronym title="{/if}{if $product@index >= 4}{$product.name}{if !$product@last}, {else}">...</acronym>){/if}{else}{$product.name}{if !$product@last}, {else}){/if}{/if}{/foreach}
{/if}
</td>
</tr>
{/foreach}
</span>
</div>
</label>
</div>
{/foreach}
{/foreach}
{/if}
@@ -45,15 +141,26 @@
<label for="recyclable">{l s='I agree to receive my order in recycled packaging'}.</label>
</fieldset>
<h3 class="bg">{l s='Gift'}</h3>
<fieldset data-role="fieldcontain">
<input type="checkbox" id="gift" name="gift" value="1" class="delivery_option_radio" {if $cart->gift == 1}checked="checked"{/if} />
<label for="gift">{l s='I would like my order to be gift-wrapped.'}</label>
</fieldset>
<p class="textarea" id="gift_div" style="display: none;">
<label for="gift_message">{l s='If you would like, feel free to add a personalized message.'}</label>
<textarea name="gift_message" id="gift_message" cols="35" rows="5">{$cart->gift_message|escape:'htmlall':'UTF-8'}</textarea>
</p>
{if $giftAllowed}
<h3 class="gift_title">{l s='Gift'}</h3>
<p class="checkbox">
<input type="checkbox" name="gift" id="gift" value="1" {if $cart->gift == 1}checked="checked"{/if} />
<label for="gift">{l s='I would like my order to be gift wrapped.'}</label>
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{if $gift_wrapping_price > 0}
({l s='Additional cost of'}
<span class="price" id="gift-price">
{if $priceDisplay == 1}{convertPrice price=$total_wrapping_tax_exc_cost}{else}{convertPrice price=$total_wrapping_cost}{/if}
</span>
{if $use_taxes}{if $priceDisplay == 1} {l s='(tax excl.)'}{else} {l s='(tax incl.)'}{/if}{/if})
{/if}
</p>
<p id="gift_div" class="textarea">
<label for="gift_message">{l s='If you\'d like, you can add a note to the gift:'}</label>
<textarea rows="5" cols="35" id="gift_message" name="gift_message">{$cart->gift_message|escape:'htmlall':'UTF-8'}</textarea>
</p>
{/if}
<h3 class="bg">{l s='Terms of service'}</h3>
<fieldset data-role="fieldcontain" id="cgv_checkbox">
+1
View File
@@ -69,6 +69,7 @@
var errorCarrier = "{$errorCarrier}";
var errorTOS = "{$errorTOS}";
var checkedCarrier = "{if isset($checked)}{$checked}{else}0{/if}";
var freeShippingTranslation = "{l s='Free shipping!' js=1}";
var addresses = new Array();
var isLogged = {$isLogged|intval};
+2 -2
View File
@@ -39,9 +39,9 @@
{if $HOOK_PAYMENT}
{if !$opc}
<div id="order-detail-content" class="table_block">
<table id="cart_summary" class="std ui-responsive table-stroke" data-role="table" data-mode="reflow">
<table id="cart_summary" data-role="table" class="ui-body-d ui-shadow ui-responsive table-stroke" data-mode="reflow">
<thead>
<tr>
<tr class="ui-bar-a">
<th class="cart_product first_item">{l s='Product'}</th>
<th class="cart_description item">{l s='Description'}</th>
<th class="cart_availability item">{l s='Avail.'}</th>
@@ -0,0 +1,53 @@
{*
* 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
*}
<input type="hidden" name="cart_product_id[]" value="{$product.id_product}"/>
<input type="hidden" id="cart_product_attribute_id_{$product.id_product}" value="{$product.id_product_attribute|intval}"/>
<input type="hidden" id="cart_product_address_delivery_id_{$product.id_product}" value="{$product.id_address_delivery}"/>
<div class="fl width-20">
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small_default')}" class="img_product_cart" />
</div>
<div class="fl width-60 padding-left-5px">
<h3>{$product.name}</h3>
{if $product.reference}<p>{l s='Ref:'} {$product.reference}</p>{/if}
<p>{$product.description_short}</p>
</div>
<div class="fl width-15" style="text-align:right">
<p class="price" id="product_price_{$product.id_product}_{$product.id_product_attribute}_{$product.id_address_delivery|intval}{if !empty($product.gift)}_gift{/if}" style="padding-top:20px">
{if !empty($product.gift)}
<h3 class="gift-icon" style="background-color:#0088CC;color:white;display:inline;padding:2px 14px;-webkit-border-radius:6px;border-radius:6px;font-weight:normal">{l s='Gift!'}</h3>
{else}
{if isset($product.is_discounted) && $product.is_discounted}
<span style="text-decoration:line-through;">{convertPrice price=$product.price_without_specific_price}</span><br />
{/if}
{if !$priceDisplay}
{convertPrice price=$product.price_wt}
{else}
{convertPrice price=$product.price}
{/if}
{/if}
</p>
</div>
+17 -1
View File
@@ -22,7 +22,7 @@
<div class="fl width-20">
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'small_default')}" class="img_product_cart" />
</div>
<div class="fl width-70 padding-left-5px">
<div class="fl width-60 padding-left-5px">
<h3>{$product.name}</h3>
{if $product.reference}<p>{l s='Ref:'} {$product.reference}</p>{/if}
<p>{$product.description_short}</p>
@@ -61,6 +61,22 @@
<a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery|intval}&amp;token={$token_cart}")}" data-ajax="false">{l s='Delete'}</a>
</li>
{/foreach}
{assign var='last_was_odd' value=$product@iteration%2}
{foreach $gift_products as $product}
<li id="element_product_{$product.id_product}">
<a style="padding-right:10px">
{assign var='productId' value=$product.id_product}
{assign var='productAttributeId' value=$product.id_product_attribute}
{assign var='quantityDisplayed' value=0}
{assign var='odd' value=($product@iteration+$last_was_odd)%2}
{assign var='ignoreProductLast' value=isset($customizedDatas.$productId.$productAttributeId)}
{assign var='cannotModify' value=1}
{* Display the gift product line *}
{include file="./shopping-cart-gift-line.tpl" productLast=$product@last productFirst=$product@first}
</a>
<a rel="nofollow" class="cart_quantity_delete" id="{$product.id_product}_{$product.id_product_attribute}_0_{$product.id_address_delivery|intval}" href="{$link->getPageLink('cart', true, NULL, "delete=1&amp;id_product={$product.id_product|intval}&amp;ipa={$product.id_product_attribute|intval}&amp;id_address_delivery={$product.id_address_delivery|intval}&amp;token={$token_cart}")}" data-ajax="false" style="display:none">{l s='Delete'}</a>
</li>
{/foreach}
</ul>
{/if}
{if sizeof($discounts)}