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

Conflicts:
	admin-dev/themes/default/template/controllers/carrier_wizard/helpers/form/form_ranges.tpl
	admin-dev/themes/default/template/controllers/groups/helpers/view/view.tpl
	admin-dev/themes/default/template/controllers/import/helpers/form/form.tpl
	admin-dev/themes/default/template/controllers/modules/filters.tpl
	admin-dev/themes/default/template/controllers/modules/list.tpl
	admin-dev/themes/default/template/controllers/orders/form.tpl
	admin-dev/themes/default/template/helpers/form/form.tpl
	classes/Category.php
	classes/controller/AdminController.php
	controllers/admin/AdminAttributesGroupsController.php
	controllers/admin/AdminFeaturesController.php
	controllers/admin/AdminImportController.php
	controllers/admin/AdminLogsController.php
	install-dev/install_version.php
	install-dev/langs/ru/data/tab.xml
	js/admin_carrier_wizard.js
	modules/loyalty/loyalty.php
This commit is contained in:
Kevin Granger
2013-10-14 12:21:29 +02:00
316 changed files with 8504 additions and 1178 deletions
+3
View File
@@ -27,6 +27,9 @@
$timer_start = microtime(true);
define('_PS_ADMIN_DIR_', getcwd());
if (!defined('PS_ADMIN_DIR'))
define('PS_ADMIN_DIR', _PS_ADMIN_DIR_);
require(_PS_ADMIN_DIR_.'/../config/config.inc.php');
require(_PS_ADMIN_DIR_.'/functions.php');
+6 -3
View File
@@ -49,9 +49,12 @@ try
AdminTab::$currentIndex = $currentIndex;
$iso = $context->language->iso_code;
include(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php');
include(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php');
include(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php');
if (file_exists(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php'))
include(_PS_TRANSLATIONS_DIR_.$iso.'/errors.php');
if (file_exists(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php'))
include(_PS_TRANSLATIONS_DIR_.$iso.'/fields.php');
if (file_exists(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php'))
include(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php');
/* Server Params */
$protocol_link = (Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://';
@@ -76,6 +76,8 @@
</fieldset>
</div>
<div class="col-lg-12">
<h2>{l s='Members of this customer group'}</h2>
<p>{l s='Limited to the first 100 customers.'} {l s='Please use filters to narrow your search.'}</p>
{$customerList}
</div>
{/block}
@@ -71,37 +71,60 @@
{if count($files_to_import)}
<select name="csv">
{foreach $files_to_import AS $filename}
<option value="{$filename}"{if $csv_selected == $filename} selected="selected"{/if}>{$filename}</option>
<option value="{$filename}"{if $csv_selected == $filename} selected="selected"{/if}>{$filename|escape:'htmlall':'UTF-8'}</option>
{/foreach}
</select>
{/if}
&nbsp;
<a href="#upload_file_import" id="upload_file_import_link" class="btn btn-default">
<i class="icon-plus-sign-alt"></i>
{l s='Upload'}
</a>
</div>
</div>
<div class="form-group">
<p class="alert alert-info col-lg-offset-3">
<a href="#" onclick="$('#sample_files_import').slideToggle(); return false;">
{l s='Click to view our sample import csv files.'}
</a>
</p>
<div id="sample_files_import" style="display:none" class="list-group">
<a class="list-group-item" href="../docs/csv_import/categories_import.csv">{l s='Sample Categories file'}</a>
<a class="list-group-item" href="../docs/csv_import/products_import.csv">{l s='Sample Products file'}</a>
<a class="list-group-item" href="../docs/csv_import/combinations_import.csv">{l s='Sample Combinations file'}</a>
<a class="list-group-item" href="../docs/csv_import/customers_import.csv">{l s='Sample Customers file'}</a>
<a class="list-group-item" href="../docs/csv_import/addresses_import.csv">{l s='Sample Addresses file'}</a>
<a class="list-group-item" href="../docs/csv_import/manufacturers_import.csv">{l s='Sample Manufacturers file'}</a>
<a class="list-group-item" href="../docs/csv_import/suppliers_import.csv">{l s='Sample Suppliers file'}</a>
{if $PS_ADVANCED_STOCK_MANAGEMENT}
<a class="list-group-item" href="../docs/csv_import/supply_orders_import.csv">{l s='Supply Orders sample file'}</a>
<a class="list-group-item" href="../docs/csv_import/supply_orders_details_import.csv">{l s='Supply Orders Details sample file'}</a>
{/if}
<div class="col-lg-6">
<p class="alert alert-info">
<a href="#" onclick="$('#sample_files_import').slideToggle(); return false;">
{l s='Click to view our sample import csv files.'}
</a>
</p>
<div id="sample_files_import" style="display:none" class="list-group">
<a class="list-group-item" href="../docs/csv_import/categories_import.csv" target="_blank">{l s='Sample Categories file'}</a>
<a class="list-group-item" href="../docs/csv_import/products_import.csv" target="_blank">{l s='Sample Products file'}</a>
<a class="list-group-item" href="../docs/csv_import/combinations_import.csv" target="_blank">{l s='Sample Combinations file'}</a>
<a class="list-group-item" href="../docs/csv_import/customers_import.csv" target="_blank">{l s='Sample Customers file'}</a>
<a class="list-group-item" href="../docs/csv_import/addresses_import.csv" target="_blank">{l s='Sample Addresses file'}</a>
<a class="list-group-item" href="../docs/csv_import/manufacturers_import.csv" target="_blank">{l s='Sample Manufacturers file'}</a>
<a class="list-group-item" href="../docs/csv_import/suppliers_import.csv" target="_blank">{l s='Sample Suppliers file'}</a>
{if $PS_ADVANCED_STOCK_MANAGEMENT}
<a class="list-group-item" href="../docs/csv_import/supply_orders_import.csv" target="_blank">{l s='Supply Orders sample file'}</a>
<a class="list-group-item" href="../docs/csv_import/supply_orders_details_import.csv" target="_blank">{l s='Supply Orders Details sample file'}</a>
{/if}
</div>
</div>
<div class="col-lg-6">
<p class="alert alert-info">
<a href="#" onclick="$('#csv_files_import').slideToggle(); return false;">
{l s='Click to view your csv files.'}
</a>
</p>
<ul id="csv_files_import" style="display:none;">
{foreach $files_to_import AS $filename}
<li>
<a href="{$current}&token={$token}&csvfilename={$filename|@base64_encode}">{$filename}</a>
<a href="{$current}&token={$token}&csvfilename={$filename|@base64_encode}&delete=1" class="btn btn-default">
<i class="icon-trash"></i> {l s='Delete'}
</a>
</li>
{/foreach}
</ul>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">{l s='What kind of entity would you like to import?'} </label>
<div class="col-lg-6">
@@ -140,14 +163,14 @@
<label class="control-label col-lg-3">{l s='Field separator'} </label>
<div class="col-lg-6 input-group">
<span class="input-group-addon">{l s='e.g. '}"1; Ipod; 129.90; 5"</span>
<input type="text" size="2" value=";" name="separator"/>
<input type="text" size="2" value="{if isset($separator_selected)}{$separator_selected|escape:'htmlall':'UTF-8'}{else};{/if}" name="separator"/>
</div>
</div>
<div class="form-group">
<label class="control-label col-lg-3">{l s='Multiple value separator'} </label>
<div class="col-lg-6 input-group">
<span class="input-group-addon">{l s='e.g. '}"Ipod; red.jpg, blue.jpg, green.jpg; 129.90"</span>
<input type="text" size="2" value="," name="multiple_value_separator"/>
<input type="text" size="2" value="{if isset($multiple_value_separator_selected)}{$multiple_value_separator_selected|escape:'htmlall':'UTF-8'}{else},{/if}" name="multiple_value_separator"/>
</div>
</div>
<div class="form-group">
@@ -172,7 +195,6 @@
<input name="regenerate" id="regenerate" type="checkbox" />
</div>
</div>
<div class="form-group">
<label for="forceIDs" class="control-label col-lg-3">
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='If you don\'t use this option, all ID\'s will be auto-incremented.'}">
@@ -263,7 +285,7 @@
else
{
$(".import_supply_orders_details").hide();
$('input[name=multiple_value_separator]').val(',');
$('input[name=multiple_value_separator]').val('{if isset($multiple_value_separator_selected)}{$multiple_value_separator_selected}{else},{/if}');
}
if ($("#entity > option:selected").val() == 1)
$("label[for=match_ref], #match_ref, label[for=regenerate], #regenerate").show();
@@ -25,7 +25,7 @@
{extends file="helpers/view/view.tpl"}
{block name="override_tpl"}
<script type="text/javascript">
var errorEmpty = '{l s='Please name your matching configuration to save.' js='1'}';
var errorEmpty = '{l s='Please name your matching configuration to save.' js=1}';
var token = '{$token}';
var current = 0;
function showTable(nb)
@@ -126,4 +126,4 @@
</table>
</form>
</div>
{/block}
{/block}
@@ -104,7 +104,7 @@
{$module->description}
{/if}
</p>
{if isset($module->message) && (!isset($module->type) || ($module->type != 'addonsMustHave' || $module->type !== 'addonsNative'))}<div class="alert alert-success">{$module->message}</div>{/if}
{if isset($module->message) && (empty($module->name) !== false) && (!isset($module->type) || ($module->type != 'addonsMustHave' || $module->type !== 'addonsNative'))}<div class="alert alert-success">{$module->message}</div>{/if}
</div>
</td>
<td>
@@ -64,7 +64,7 @@
</span>
{/if}
</td>
{if $display_warehouse}<td>{$product.warehouse_name|escape:'htmlall':'UTF-8'}</td>{/if}
{if $display_warehouse}<td align="center">{$product.warehouse_name|escape:'htmlall':'UTF-8'}</td>{/if}
{if ($order->hasBeenPaid())}
<td class="productQuantity">
{$product['product_quantity_refunded']}
@@ -38,6 +38,11 @@
var defaults_order_state = new Array();
var customization_errors = false;
var pic_dir = '{$pic_dir}';
var currency_format = 5;
var currency_sign = '';
var currency_blank = false;
var priceDisplayPrecision = 2;
{foreach from=$defaults_order_state key='module' item='id_order_state'}
defaults_order_state['{$module}'] = '{$id_order_state}';
{/foreach}
@@ -505,7 +510,6 @@
}
displaySummary(res);
resetBind();
updateCurrencySign();
}
});
}
@@ -652,11 +656,12 @@
var id_product = Number(this.id_product);
var id_product_attribute = Number(this.id_product_attribute);
cart_quantity[Number(this.id_product)+'_'+Number(this.id_product_attribute)+'_'+Number(this.id_customization)] = this.cart_quantity;
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" size="7" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="'+this.price+'" />&nbsp;<span class="currency_sign"></span></td><td>';
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" size="7" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="' + formatCurrency(parseFloat(this.price.replace(',', '.')), currency_format, currency_sign, currency_blank) + '" /></td><td>';
cart_content += (!this.id_customization ? '<div style="float:left;"><a href="#" class="increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/up.gif" /></a><br /><a href="#" class="decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><img src="../img/admin/down.gif" /></a></div>' : '');
cart_content += (!this.id_customization ? '<div style="float:left;"><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />' : '');
cart_content += (!this.id_customization ? '<a href="#" class="delete_product" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/delete.gif" /></a></div>' : '');
cart_content += '</td><td>'+this.total+'&nbsp;<span class="currency_sign"></span></td></tr>';
cart_content += '</td><td>' + formatCurrency(parseFloat(this.total.replace(',', '.')), currency_format, currency_sign, currency_blank) + '</td></tr>';
if (this.id_customization && this.id_customization != 0)
{
$.each(this.customized_datas[this.id_product][this.id_product_attribute][id_address_delivery], function() {
@@ -712,6 +717,11 @@
function displaySummary(jsonSummary)
{
currency_format = jsonSummary.currency.format;
currency_sign = jsonSummary.currency.sign;
currency_blank = jsonSummary.currency.blank;
priceDisplayPrecision = jsonSummary.currency.decimals ? 2 : 0;
updateCartProducts(jsonSummary.summary.products, jsonSummary.summary.gift_products, jsonSummary.cart.id_address_delivery);
updateCartVouchers(jsonSummary.summary.discounts);
updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice);
@@ -737,20 +747,19 @@
$('#free_shipping').removeAttr('checked');
$('#gift_message').html(jsonSummary.cart.gift_message);
if(!changed_shipping_price)
$('#shipping_price').html('<b>'+jsonSummary.summary.total_shipping+'</b>');
if (!changed_shipping_price)
$('#shipping_price').html('<b>' + formatCurrency(parseFloat(jsonSummary.summary.total_shipping), currency_format, currency_sign, currency_blank) + '</b>');
shipping_price_selected_carrier = jsonSummary.summary.total_shipping;
$('#total_vouchers').html(jsonSummary.summary.total_discounts_tax_exc);
$('#total_shipping').html(jsonSummary.summary.total_shipping_tax_exc);
$('#total_taxes').html(jsonSummary.summary.total_tax);
$('#total_without_taxes').html(jsonSummary.summary.total_price_without_tax);
$('#total_with_taxes').html(jsonSummary.summary.total_price);
$('#total_products').html(jsonSummary.summary.total_products);
$('#total_vouchers').html(formatCurrency(parseFloat(jsonSummary.summary.total_discounts_tax_exc.replace(',', '.')), currency_format, currency_sign, currency_blank));
$('#total_shipping').html(formatCurrency(parseFloat(jsonSummary.summary.total_shipping_tax_exc.replace(',', '.')), currency_format, currency_sign, currency_blank));
$('#total_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_tax.replace(',', '.')), currency_format, currency_sign, currency_blank));
$('#total_without_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price_without_tax.replace(',', '.')), currency_format, currency_sign, currency_blank));
$('#total_with_taxes').html(formatCurrency(parseFloat(jsonSummary.summary.total_price.replace(',', '.')), currency_format, currency_sign, currency_blank));
$('#total_products').html(formatCurrency(parseFloat(jsonSummary.summary.total_products.replace(',', '.')), currency_format, currency_sign, currency_blank));
id_currency = jsonSummary.cart.id_currency;
$('#id_currency option').removeAttr('selected');
$('#id_currency option[value="'+id_currency+'"]').attr('selected', true);
updateCurrencySign();
id_lang = jsonSummary.cart.id_lang;
$('#id_lang option').removeAttr('selected');
$('#id_lang option[value="'+id_lang+'"]').attr('selected', true);
@@ -778,21 +787,21 @@
qty: qty,
id_customer: id_customer,
id_cart: id_cart,
},
},
success : function(res)
{
displaySummary(res);
var errors = '';
if(res.errors.length)
{
$.each(res.errors, function() {
errors += this+'<br />';
});
$('#products_err').show();
}
else
$('#products_err').hide();
$('#products_err').html(errors);
displaySummary(res);
var errors = '';
if (res.errors.length)
{
$.each(res.errors, function() {
errors += this + '<br />';
});
$('#products_err').show();
}
else
$('#products_err').hide();
$('#products_err').html(errors);
}
});
}
@@ -888,11 +897,6 @@
});
}
function updateCurrencySign()
{
$('.currency_sign').html(currencies[id_currency]);
}
function sendMailToCustomer()
{
$.ajax({
@@ -925,11 +929,33 @@
var addresses_invoice_options = '';
var address_invoice_detail = '';
var address_delivery_detail = '';
var delivery_address_edit_link = '';
var invoice_address_edit_link = '';
$.each(addresses, function() {
if (this.id_address == id_address_invoice)
address_invoice_detail = this.company+' '+this.firstname+' '+this.lastname+'<br />'+this.address1+'<br />'+this.address2+'<br />'+this.postcode+' '+this.city+' '+this.country;
{
address_invoice_detail = this.company+' '+this.firstname+' '+this.lastname+'<br />'+this.address1+'<br />'+this.address2+'<br />'+this.postcode+' '+this.city;
if (this.state != null)
address_invoice_detail += ' '+this.state;
address_invoice_detail += '</br>'+this.country;
invoice_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#";
}
if(this.id_address == id_address_delivery)
address_delivery_detail = this.company+' '+this.firstname+' '+this.lastname+'<br />'+this.address1+'<br />'+this.address2+'<br />'+this.postcode+' '+this.city+' '+this.country;
{
address_delivery_detail = this.company+' '+this.firstname+' '+this.lastname+'<br />'+this.address1+'<br />'+this.address2+'<br />'+this.postcode+' '+this.city;
if (this.state != null)
address_delivery_detail += ' '+this.state;
address_delivery_detail += '</br>'+this.country;
delivery_address_edit_link = "{$link->getAdminLink('AdminAddresses')}&id_address="+this.id_address+"&updateaddress&realedit=1&liteDisplaying=1&submitFormAjax=1#";
}
addresses_delivery_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_delivery ? 'selected="selected"' : '')+'>'+this.alias+'</option>';
addresses_invoice_options += '<option value="'+this.id_address+'" '+(this.id_address == id_address_invoice ? 'selected="selected"' : '')+'>'+this.alias+'</option>';
@@ -949,6 +975,8 @@
$('#id_address_invoice').html(addresses_invoice_options);
$('#address_delivery_detail').html(address_delivery_detail);
$('#address_invoice_detail').html(address_invoice_detail);
$('#edit_delivery_address').attr('href', delivery_address_edit_link);
$('#edit_invoice_address').attr('href', invoice_address_edit_link);
}
function updateAddresses()
@@ -992,7 +1020,7 @@
</a>
</div>
<label class="control-label col-lg-3">
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search a customer by tapping the first letters of his/her name'}">
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search a customer by typping the first letters of his/her name'}">
{l s='Search customers'}
</span>
</label>
@@ -1013,7 +1041,7 @@
</h3>
<div class="row">
<label class="control-label col-lg-3">
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search a product by tapping the first letters of his/her name.'}">
<span title="" data-toggle="tooltip" class="label-tooltip" data-original-title="{l s='Search a product by typping the first letters of his/her name.'}">
{l s='Search for a product'}
</span>
</label>
@@ -1132,7 +1160,7 @@
<i class="icon-folder-close"></i>
{l s='Carts'}
</h4>
<table cellspacing="0" cellpadding="0" class="table width5">
<table cellspacing="0" cellpadding="0" class="table width5">
<colgroup>
<col width="10">
<col width="200">
@@ -1204,7 +1232,6 @@
<input type="text" id="voucher" value="" />
</div>
</div>
<div class="margin-form">
<table cellspacing="0" cellpadding="0" class="table" id="voucher_list">
<thead>
@@ -1278,7 +1305,7 @@
{l s='Shipping price:'}
</label>
<div class="col-lg-6">
<span id="shipping_price" name="shipping_price"></span>&nbsp;<span class="currency_sign"></span>&nbsp;
<span id="shipping_price" name="shipping_price"></span>
</div>
</div>
<div class="row">
@@ -1311,12 +1338,12 @@
<div class="row">
<div id="cart_summary" class="col-lg-12">
<ul class="nav navbar-nav">
<li><span>{l s='Total products:'}</span>&nbsp;<span id="total_products"></span><span class="currency_sign"></span> |</li>
<li><span>{l s='Total vouchers:'}</span>&nbsp;<span id="total_vouchers"></span><span class="currency_sign"></span> |</li>
<li><span>{l s='Total shipping:'}</span>&nbsp;<span id="total_shipping"></span><span class="currency_sign"></span> |</li>
<li><span>{l s='Total taxes:'}</span>&nbsp;<span id="total_taxes"></span><span class="currency_sign"></span> |</li>
<li><span>{l s='Total without taxes:'}</span>&nbsp;<span id="total_without_taxes"></span><span class="currency_sign"></span> |</li>
<li><span>{l s='Total with taxes'}</span>&nbsp;<span id="total_with_taxes"></span><span class="currency_sign"></span></li>
<li><span>{l s='Total products:'}</span>&nbsp;<span id="total_products"></span></li>
<li><span>{l s='Total vouchers:'}</span>&nbsp;<span id="total_vouchers"></span></li>
<li><span>{l s='Total shipping:'}</span>&nbsp;<span id="total_shipping"></span></li>
<li><span>{l s='Total taxes:'}</span>&nbsp;<span id="total_taxes"></span></li>
<li><span>{l s='Total without taxes:'}</span>&nbsp;<span id="total_without_taxes"></span></li>
<li><span>{l s='Total with taxes'}</span>&nbsp;<span id="total_with_taxes"></span></li>
</ul>
</div>
</div>
@@ -42,7 +42,7 @@
<div class="col-lg-8">
<select id="id_category" name="id_category">
{foreach from=$categories item='category'}
<option value="{$category.id_category}">{$category.name}</option>
<option value="{$category.id_category|intval}">({$category.id_category|intval}) {$category.name}</option>
{/foreach}
</select>
</div>
@@ -360,7 +360,6 @@
{/if}
{elseif $input.type == 'radio'}
{foreach $input.values as $value}
<div class="radio {if isset($input.class)}"{$input.class}"{/if}">
<label>
<input type="radio" name="{$input.name}" id="{$value.id}" value="{$value.value|escape:'htmlall':'UTF-8'}"