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

This commit is contained in:
Francois Gaillard
2013-04-23 11:39:14 +02:00
34 changed files with 261 additions and 213 deletions
@@ -35,7 +35,7 @@
{else}
{assign var=params_url value="&id_category={$category.id_category}&viewcategory"}
{/if}
{if $key == 0}
{if $category.id_category == $categories_tree_current_id}
{$category.name}
{else}
<a href="{$currentIndex}{$params_url}&token={$token}">{$category.name}</a>&nbsp;>&nbsp;
@@ -38,7 +38,7 @@
{foreach $addresses AS $addresse}
<table border="0" cellpadding="0" cellspacing="0" class="table" style="width: 600px;">
<tr>
<th><strong>{$addresse.firstname} {$addresse.lastname}</strong></th>
<th><strong>{$addresse.firstname} {$addresse.lastname} <a href="{$link->getAdminLink('AdminManufacturers')}&id_address={$addresse.id_address}&editaddresses=1"><img src="../img/admin/edit.gif"></a></strong></th>
</tr>
<tr>
<td>
@@ -25,7 +25,7 @@
<div id="statsContainer">
<div id="calendar">
<form action="{$current}&token={$token}{if $action && $table}&{$action}{$table}{/if}{if $identifier && $id}&{$identifier}={$id}{/if}" method="post" id="calendar_form" name="calendar_form">
<form action="{$current}&token={$token}{if $action && $table}&{$action|escape}{$table|escape}{/if}{if $identifier && $id}&{$identifier|escape}={$id|escape}{/if}" method="post" id="calendar_form" name="calendar_form">
<input type="submit" name="submitDateDay" class="button submitDateDay" value="{$translations.Day}">
<input type="submit" name="submitDateMonth" class="button submitDateMonth" value="{$translations.Month}">
<input type="submit" name="submitDateYear" class="button submitDateYear" value="{$translations.Year}">
@@ -25,7 +25,7 @@
<br/>
<div class="blocEngine">
<form action="{$current}&token={$token}" method="post" id="settings_form" name="settings_form">
<form action="{$smarty.server.REQUEST_URI|escape}" method="post" id="settings_form" name="settings_form">
<h3 class="icon-{l s='Settings'}">{l s='Settings'}</h3>
<div class="rowForm">
@@ -35,39 +35,33 @@
buildTreeView(use_context);
});
</script>
<div class="category-filter">
<span><a href="#" id="collapse_all" >{$categories.trads['Collapse All']}</a>
|</span>
<span><a href="#" id="expand_all" >{$categories.trads['Expand All']}</a>
<span><a href="#" id="collapse_all">{$categories.trads['Collapse All']}</a>|&nbsp;</span>
<span><a href="#" id="expand_all">{$categories.trads['Expand All']}</a>|&nbsp;</span>
{if !$categories.use_radio}
|</span>
<span></span><a href="#" id="check_all" >{$categories.trads['Check All']}</a>
|</span>
<span></span><a href="#" id="uncheck_all" >{$categories.trads['Uncheck All']}</a></span>
{/if}
<span><a href="#" id="check_all">{$categories.trads['Check All']}</a>|&nbsp;</span>
<span><a href="#" id="uncheck_all">{$categories.trads['Uncheck All']}</a>|&nbsp;</span>
{/if}
{if $categories.use_search}
<span style="margin-left:20px">
{$categories.trads.search} :
{$categories.trads.search}:&nbsp;
<form method="post" id="filternameForm">
<input type="text" name="search_cat" id="search_cat">
<input type="text" name="search_cat" id="search_cat"/>
</form>
</span>
{/if}
</div>
{assign var=home_is_selected value=false}
{foreach $categories.selected_cat AS $cat}
{if is_array($cat)}
{if $cat.id_category != $categories.trads.Root.id_category}
<input {if in_array($cat.id_category, $categories.disabled_categories)}disabled="disabled"{/if} type="hidden" name="{$categories.input_name}" value="{$cat.id_category}" >
<input {if in_array($cat.id_category, $categories.disabled_categories)}disabled="disabled"{/if} type="hidden" name="{$categories.input_name}" value="{$cat.id_category}"/>
{else}
{assign var=home_is_selected value=true}
{/if}
{else}
{if $cat != $categories.trads.Root.id_category}
<input {if in_array($cat, $categories.disabled_categories)}disabled="disabled"{/if} type="hidden" name="{$categories.input_name}" value="{$cat}" >
<input {if in_array($cat, $categories.disabled_categories)}disabled="disabled"{/if} type="hidden" name="{$categories.input_name}" value="{$cat}"/>
{else}
{assign var=home_is_selected value=true}
{/if}
@@ -80,8 +74,8 @@
<input type="{if !$categories.use_radio}checkbox{else}radio{/if}"
name="{$categories.input_name}"
value="{$categories.trads.Root.id_category}"
{if $home_is_selected}checked{/if}
onclick="clickOnCategoryBox($(this));" />
{if $home_is_selected}checked="checked"{/if}
onclick="clickOnCategoryBox($(this));"/>
<span class="category_label">{$categories.trads.Root.name}</span>
{else}
&nbsp;
@@ -97,4 +91,4 @@
searchCategory();
</script>
{/if}
{/if}
{/if}
+1 -1
View File
@@ -1451,7 +1451,7 @@ class ProductCore extends ObjectModel
}
if (count($id_shop_list))
$combination->id_shop_list = $id_shop_list;
$combination->id_shop_list = array_unique($id_shop_list);
$combination->add();
+1 -1
View File
@@ -984,7 +984,7 @@ class ToolsCore
if (function_exists('mb_strtolower'))
$str = mb_strtolower($str, 'utf-8');
elseif (!$allow_accented_chars)
if (!$allow_accented_chars)
$str = Tools::replaceAccentedChars($str);
// Remove all non-whitelist chars.
+7 -10
View File
@@ -239,17 +239,14 @@ class HelperCore
$html .= '
<div class="category-filter">
<span><a href="#" id="collapse_all" >'.$translations['Collapse All'].'</a>
| </span>
<span><a href="#" id="expand_all" >'.$translations['Expand All'].'</a>
<span><a href="#" id="collapse_all">'.$translations['Collapse All'].'</a>|&nbsp;</span>
<span><a href="#" id="expand_all">'.$translations['Expand All'].'</a>|&nbsp;</span>
'.(!$use_radio ? '
|</span>
<span> <a href="#" id="check_all" >'.$translations['Check All'].'</a>
|</span>
<span><a href="#" id="uncheck_all" >'.$translations['Uncheck All'].'</a>|</span>
' : '').($use_search ? '<span>'.$translations['search'].' : <input type="text" name="search_cat" id="search_cat"></span>' : '').'
</div>
';
<span><a href="#" id="check_all">'.$translations['Check All'].'</a>|&nbsp;</span>
<span><a href="#" id="uncheck_all">'.$translations['Uncheck All'].'</a>|&nbsp;</span>' : '')
.($use_search ? '
<span>'.$translations['search'].': <input type="text" name="search_cat" id="search_cat"/></span>' : '')
.'</div>';
$home_is_selected = false;
foreach ($selected_cat as $cat)
+1 -1
View File
@@ -124,7 +124,7 @@ class HelperListCore extends Helper
// Append when we get a syntax error in SQL query
if ($list === false)
{
$this->displayWarning($this->l('Bad SQL query', 'Helper'));
$this->context->controller->warnings[] = $this->l('Bad SQL query', 'Helper');
return false;
}
+94 -93
View File
@@ -100,7 +100,7 @@ class OrderHistoryCore extends ObjectModel
'id_order' => (int)$order->id
));
if (Validate::isLoadedObject($order) && ($old_os instanceof OrderState) && ($new_os instanceof OrderState))
if (Validate::isLoadedObject($order) && ($new_os instanceof OrderState))
{
// An email is sent the first time a virtual item is validated
$virtual_products = $order->getVirtualProducts();
@@ -160,108 +160,109 @@ class OrderHistoryCore extends ObjectModel
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
$manager = StockManagerFactory::getManager();
// foreach products of the order
foreach ($order->getProductsDetail() as $product)
{
// if becoming logable => adds sale
if ($new_os->logable && !$old_os->logable)
if (Validate::isLoadedObject($old_os))
foreach ($order->getProductsDetail() as $product)
{
ProductSale::addProductSale($product['product_id'], $product['product_quantity']);
// @since 1.5.0 - Stock Management
if (!Pack::isPack($product['product_id']) &&
($old_os->id == Configuration::get('PS_OS_ERROR') || $old_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product'], (int)$order->id_shop))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], -(int)$product['product_quantity'], $order->id_shop);
}
// if becoming unlogable => removes sale
elseif (!$new_os->logable && $old_os->logable)
{
ProductSale::removeProductSale($product['product_id'], $product['product_quantity']);
// @since 1.5.0 - Stock Management
if (!Pack::isPack($product['product_id']) &&
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
}
// if waiting for payment => payment error/canceled
elseif (!$new_os->logable && !$old_os->logable &&
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
// @since 1.5.0 : if the order is being shipped and this products uses the advanced stock management :
// decrements the physical stock using $id_warehouse
if ($new_os->shipped == 1 && $old_os->shipped == 0 &&
Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') &&
Warehouse::exists($product['id_warehouse']) &&
$manager != null &&
((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement($product['product_id'])))
{
// gets the warehouse
$warehouse = new Warehouse($product['id_warehouse']);
// decrements the stock (if it's a pack, the StockManager does what is needed)
$manager->removeProduct(
$product['product_id'],
$product['product_attribute_id'],
$warehouse,
$product['product_quantity'],
Configuration::get('PS_STOCK_CUSTOMER_ORDER_REASON'),
true,
(int)$order->id
);
}
// @since.1.5.0 : if the order was shipped, and is not anymore, we need to restock products
elseif ($new_os->shipped == 0 && $old_os->shipped == 1 &&
Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') &&
Warehouse::exists($product['id_warehouse']) &&
$manager != null &&
((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement($product['product_id'])))
{
// if the product is a pack, we restock every products in the pack using the last negative stock mvts
if (Pack::isPack($product['product_id']))
// if becoming logable => adds sale
if ($new_os->logable && !$old_os->logable)
{
$pack_products = Pack::getItems($product['product_id'], Configuration::get('PS_LANG_DEFAULT', null, null, $order->id_shop));
foreach ($pack_products as $pack_product)
ProductSale::addProductSale($product['product_id'], $product['product_quantity']);
// @since 1.5.0 - Stock Management
if (!Pack::isPack($product['product_id']) &&
($old_os->id == Configuration::get('PS_OS_ERROR') || $old_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product'], (int)$order->id_shop))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], -(int)$product['product_quantity'], $order->id_shop);
}
// if becoming unlogable => removes sale
elseif (!$new_os->logable && $old_os->logable)
{
ProductSale::removeProductSale($product['product_id'], $product['product_quantity']);
// @since 1.5.0 - Stock Management
if (!Pack::isPack($product['product_id']) &&
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
}
// if waiting for payment => payment error/canceled
elseif (!$new_os->logable && !$old_os->logable &&
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
// @since 1.5.0 : if the order is being shipped and this products uses the advanced stock management :
// decrements the physical stock using $id_warehouse
if ($new_os->shipped == 1 && $old_os->shipped == 0 &&
Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') &&
Warehouse::exists($product['id_warehouse']) &&
$manager != null &&
((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement($product['product_id'])))
{
// gets the warehouse
$warehouse = new Warehouse($product['id_warehouse']);
// decrements the stock (if it's a pack, the StockManager does what is needed)
$manager->removeProduct(
$product['product_id'],
$product['product_attribute_id'],
$warehouse,
$product['product_quantity'],
Configuration::get('PS_STOCK_CUSTOMER_ORDER_REASON'),
true,
(int)$order->id
);
}
// @since.1.5.0 : if the order was shipped, and is not anymore, we need to restock products
elseif ($new_os->shipped == 0 && $old_os->shipped == 1 &&
Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') &&
Warehouse::exists($product['id_warehouse']) &&
$manager != null &&
((int)$product['advanced_stock_management'] == 1 || Pack::usesAdvancedStockManagement($product['product_id'])))
{
// if the product is a pack, we restock every products in the pack using the last negative stock mvts
if (Pack::isPack($product['product_id']))
{
if ($pack_product->advanced_stock_management == 1)
$pack_products = Pack::getItems($product['product_id'], Configuration::get('PS_LANG_DEFAULT', null, null, $order->id_shop));
foreach ($pack_products as $pack_product)
{
$mvts = StockMvt::getNegativeStockMvts($order->id, $pack_product->id, 0, $pack_product->pack_quantity * $product['product_quantity']);
foreach ($mvts as $mvt)
if ($pack_product->advanced_stock_management == 1)
{
$manager->addProduct(
$pack_product->id,
0,
new Warehouse($mvt['id_warehouse']),
$mvt['physical_quantity'],
null,
$mvt['price_te'],
true
);
$mvts = StockMvt::getNegativeStockMvts($order->id, $pack_product->id, 0, $pack_product->pack_quantity * $product['product_quantity']);
foreach ($mvts as $mvt)
{
$manager->addProduct(
$pack_product->id,
0,
new Warehouse($mvt['id_warehouse']),
$mvt['physical_quantity'],
null,
$mvt['price_te'],
true
);
}
if (!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($pack_product->id, 0, (int)$pack_product->pack_quantity * $product['product_quantity'], $order->id_shop);
}
if (!StockAvailable::dependsOnStock($product['id_product']))
StockAvailable::updateQuantity($pack_product->id, 0, (int)$pack_product->pack_quantity * $product['product_quantity'], $order->id_shop);
}
}
// else, it's not a pack, re-stock using the last negative stock mvts
else
{
$mvts = StockMvt::getNegativeStockMvts($order->id, $product['product_id'], $product['product_attribute_id'], $product['product_quantity']);
foreach ($mvts as $mvt)
{
$manager->addProduct(
$product['product_id'],
$product['product_attribute_id'],
new Warehouse($mvt['id_warehouse']),
$mvt['physical_quantity'],
null,
$mvt['price_te'],
true
);
}
}
}
// else, it's not a pack, re-stock using the last negative stock mvts
else
{
$mvts = StockMvt::getNegativeStockMvts($order->id, $product['product_id'], $product['product_attribute_id'], $product['product_quantity']);
foreach ($mvts as $mvt)
{
$manager->addProduct(
$product['product_id'],
$product['product_attribute_id'],
new Warehouse($mvt['id_warehouse']),
$mvt['physical_quantity'],
null,
$mvt['price_te'],
true
);
}
}
}
}
}
$this->id_order_state = (int)$new_order_state;
@@ -187,8 +187,9 @@ class AdminCategoriesControllerCore extends AdminController
&& (Shop::getContext() == Shop::CONTEXT_SHOP && !Shop::isFeatureActive() && $count_categories_without_parent > 1))
$categories_tree = array(array('name' => $this->_category->name[$this->context->language->id]));
asort($categories_tree);
$categories_tree = array_reverse($categories_tree);
$this->tpl_list_vars['categories_tree'] = $categories_tree;
$this->tpl_list_vars['categories_tree_current_id'] = $this->_category->id;
if (Tools::isSubmit('submitBulkdelete'.$this->table) || Tools::isSubmit('delete'.$this->table))
{
@@ -569,7 +569,12 @@ class AdminManufacturersControllerCore extends AdminController
{
if (!($manufacturer = $this->loadObject()))
return;
$this->toolbar_btn['new'] = array(
'href' => $this->context->link->getAdminLink('AdminManufacturers').'&addaddress=1&id_manufacturer='.(int)$manufacturer->id,
'desc' => $this->l('Add address')
);
$addresses = $manufacturer->getAddresses($this->context->language->id);
$products = $manufacturer->getProductsLite($this->context->language->id);
@@ -79,6 +79,12 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor
$context->controller->addJqueryUI('ui.datepicker');
if ($identifier === null && Tools::getValue('module'))
{
$identifier = 'module';
$id = Tools::getValue('module');
}
$tpl->assign(array(
'current' => self::$currentIndex,
'token' => $token,
@@ -146,7 +146,6 @@ class AdminSuppliersControllerCore extends AdminController
'id' => 'id_country',
'name' => 'name',
),
'desc' => $this->l('Country where the state, region or city is located')
),
array(
'type' => 'select',
+2 -2
View File
@@ -102,7 +102,7 @@ return array(
'Receive this information by e-mail' => 'Recevez ces informations par e-mail',
'Warning: You will receive this information only if your e-mail configuration is correct.' => 'Attention : vous ne recevrez ces informations que si votre configuration des e-mails est correcte',
'Configure your database by filling out the following fields:' => 'Configurez la connexion à votre base de données en remplissant les champs suivants.',
'You have to create a database, help available in <a href="http://doc.prestashop.com" target="_blank">our online documentation</a>.' => 'Vous devez créer une base de données, de l\'aide est disponible sur <a href="http://doc.prestashop.com" target="_blank">notre documentation en ligne</a>.',
'You have to create a database, help available in <a href="http://doc.prestashop.com" target="_blank">our online documentation</a>.' => 'Vous devez créer une base de données, de l\'aide est disponible sur <a href="http://doc.prestashop.com/display/PS15/Installer+PrestaShop#InstallerPrestaShop-Cr%C3%A9erunebasededonn%C3%A9espourvotreboutique" target="_blank">notre documentation en ligne</a>.',
'Database server address:' => 'Adresse du serveur de la base :',
'If you want to use a different port, add :XX after your server address where XX is your port number.' => 'Si vous souhaitez utiliser un port différent, ajoutez :XX à l\'adresse de votre serveur, XX étant le numéro de votre port.',
'Database name:' => 'Nom de la base :',
@@ -241,4 +241,4 @@ return array(
'PrestaShop can provide you with guidance on a regular basis by sending you tips on how to optimize the management of your store which will help you grow your business. If you do not wish to receive these tips, please uncheck this box.' => 'PrestaShop peut vous guider de façon régulière en vous faisant parvenir des conseils afin d\'optimiser la gestion de votre boutique et développer votre activité. Si vous ne souhaitez pas recevoir ces conseils, nous vous invitons à décocher cette case.',
'Your PHP sessions path is not writable - check with your hosting provider:' => 'Le dossier de stockage n\'est pas accessible en écriture - consultez votre hébergeur',
),
);
);
+1 -1
View File
@@ -627,7 +627,7 @@ ul#optional {
#prestastore,
#prestastore_update {
height:210px;
height:590px;
width:645px;
border:none;
/*-moz-border-radius: 5px;
+1 -1
View File
@@ -75,7 +75,7 @@ var process_steps = <?php echo Tools::jsonEncode($this->process_steps) ?>;
</div>
<?php if (@fsockopen('addons.prestashop.com', 80, $errno, $errst, 3)): ?>
<iframe src="http://addons.prestashop.com/psinstall.php?version=2&lang=<?php echo $this->language->getLanguageIso() ?>&email=<?php echo $this->session->admin_email ?>&activity=<?php echo $this->session->shop_activity ?>&country=<?php echo $this->session->shop_country ?>" scrolling="no" id="prestastore">
<iframe src="http://addons.prestashop.com/psinstall1541.php?version=2&lang=<?php echo $this->language->getLanguageIso() ?>&email=<?php echo $this->session->admin_email ?>&activity=<?php echo $this->session->shop_activity ?>&country=<?php echo $this->session->shop_country ?>" scrolling="no" id="prestastore">
<p>Your browser does not support iframes.</p>
</iframe>
<?php endif; ?>
@@ -33,20 +33,31 @@
{/if}
<form action="{$link->getPageLink('index')}" method="post">
<p>
{* @todo use jquery (focusin, focusout) instead of onblur and onfocus *}
<input type="text" name="email" size="18"
value="{if isset($value) && $value}{$value}{else}{l s='Your email address' mod='blocknewsletter'}{/if}"
onfocus="javascript:if(this.value=='{l s='Your email address' mod='blocknewsletter' js=1}')this.value='';"
onblur="javascript:if(this.value=='')this.value='{l s='Your email address' mod='blocknewsletter' js=1}';"
class="inputNew" />
<!--<select name="action">
<option value="0"{if isset($action) && $action == 0} selected="selected"{/if}>{l s='Subscribe' mod='blocknewsletter'}</option>
<option value="1"{if isset($action) && $action == 1} selected="selected"{/if}>{l s='Unsubscribe' mod='blocknewsletter'}</option>
</select>-->
<input type="submit" value="ok" class="button_mini" name="submitNewsletter" />
<input class="inputNew" id="newsletter-input" type="text" name="email" size="18" value="{if isset($value) && $value}{$value}{else}{l s='your e-mail' mod='blocknewsletter'}{/if}">
<input type="submit" value="ok" class="button_mini" name="submitNewsletter" />
<input type="hidden" name="action" value="0" />
</p>
</form>
</div>
</div>
<!-- /Block Newsletter module-->
<script>
var placeholder = "{l s='your e-mail' mod='blocknewsletter' js=1}";
{literal}
$(document).ready(function() {
$('#newsletter-input').on({
focus: function() {
if ($(this).val() == placeholder) {
$(this).val('');
}
},
blur: function() {
if ($(this).val() == '') {
$(this).val(placeholder);
}
}
});
});
{/literal}
</script>
@@ -67,7 +67,7 @@ PS_SE_HandleEvent();
<ul id="carriercompare_errors_list"></ul><br />
</div>
<div id="SE_AjaxDisplay">
<img src="{$new_base_dir}loader.gif" /><br />
<img src="{$new_base_dir}loader.gif" alt="Loading data" /><br />
<p></p>
</div>
<div id="availableCarriers" style="display: none;">
+2 -6
View File
@@ -67,12 +67,8 @@ class GridHtml extends ModuleGridEngine
foreach ($params['columns'] as $column)
$html .= '<th style="width:'.$column['width'].'px;cursor:pointer">
'.$column['header'].'<br />
<a href="javascript:getGridData(\''.$grider.'&sort='.$column['dataIndex'].'&dir=ASC\');">
<img src="../img/admin/up.gif" />
</a>
<a href="javascript:getGridData(\''.$grider.'&sort='.$column['dataIndex'].'&dir=DESC\');">
<img src="../img/admin/down.gif" />
</a>
<a href="javascript:getGridData(\''.$grider.'&sort='.$column['dataIndex'].'&dir=ASC\');"><img src="../img/admin/up.gif" /></a>
<a href="javascript:getGridData(\''.$grider.'&sort='.$column['dataIndex'].'&dir=DESC\');"><img src="../img/admin/down.gif" /></a>
</th>';
$html .= '</tr></thead>
<tbody></tbody>
+15 -15
View File
@@ -285,9 +285,9 @@ class PSCleaner extends Module
continue;
$query = 'DELETE FROM `'._DB_PREFIX_.$query_array[0].'` WHERE `'.$query_array[1].'` NOT IN (SELECT `'.$query_array[3].'` FROM `'._DB_PREFIX_.$query_array[2].'`)';
$db->Execute($query);
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
if ($db->Execute($query))
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
}
// _lang table cleaning
@@ -299,14 +299,14 @@ class PSCleaner extends Module
$id_table = 'id_'.preg_replace('/^'._DB_PREFIX_.'/', '', $table);
$query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)';
$db->Execute($query);
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
if ($db->Execute($query))
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
$query = 'DELETE FROM `'.bqSQL($table_lang).'` WHERE `id_lang` NOT IN (SELECT `id_lang` FROM `'._DB_PREFIX_.'lang`)';
$db->Execute($query);
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
if ($db->Execute($query))
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
}
// _shop table cleaning
@@ -321,14 +321,14 @@ class PSCleaner extends Module
continue;
$query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `'.bqSQL($id_table).'` NOT IN (SELECT `'.bqSQL($id_table).'` FROM `'.bqSQL($table).'`)';
$db->Execute($query);
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
if ($db->Execute($query))
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
$query = 'DELETE FROM `'.bqSQL($table_shop).'` WHERE `id_shop` NOT IN (SELECT `id_shop` FROM `'._DB_PREFIX_.'shop`)';
$db->Execute($query);
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
if ($db->Execute($query))
if ($affected_rows = $db->Affected_Rows())
$logs[$query] = $affected_rows;
}
Category::regenerateEntireNtree();
@@ -52,24 +52,26 @@ class StatsBestCustomers extends ModuleGrid
$this->_emptyMessage = $this->l('Empty recordset returned');
$this->_pagingMessage = sprintf($this->l('Displaying %1$s of %2$s'), '{0} - {1}', '{2}');
$currency = new Currency(Configuration::get('PS_CURRENCY_DEFAULT'));
$this->_columns = array(
array(
'id' => 'lastname',
'header' => $this->l('Last Name'),
'dataIndex' => 'lastname',
'width' => 50
'width' => 80
),
array(
'id' => 'firstname',
'header' => $this->l('First Name'),
'dataIndex' => 'firstname',
'width' => 50
'width' => 80
),
array(
'id' => 'email',
'header' => $this->l('Email'),
'dataIndex' => 'email',
'width' => 120
'width' => 140
),
array(
'id' => 'totalVisits',
@@ -78,10 +80,16 @@ class StatsBestCustomers extends ModuleGrid
'width' => 80,
'align' => 'right'),
array(
'id' => 'totalMoneySpent',
'header' => $this->l('Money spent'),
'dataIndex' => 'totalMoneySpent',
'id' => 'totalValidOrders',
'header' => $this->l('Valid orders'),
'dataIndex' => 'totalValidOrders',
'width' => 80,
'align' => 'right'),
array(
'id' => 'totalMoneySpent',
'header' => $this->l('Money spent').' ('.Tools::safeOutput($currency->iso_code).')',
'dataIndex' => 'totalMoneySpent',
'width' => 140,
'align' => 'right')
);
@@ -142,7 +150,14 @@ class StatsBestCustomers extends ModuleGrid
WHERE o.id_customer = c.id_customer
AND o.invoice_date BETWEEN '.$this->getDate().'
AND o.valid
), 0) as totalMoneySpent
), 0) as totalMoneySpent,
IFNULL((
SELECT COUNT(*)
FROM `'._DB_PREFIX_.'orders` o
WHERE o.id_customer = c.id_customer
AND o.invoice_date BETWEEN '.$this->getDate().'
AND o.valid
), 0) as totalValidOrders
FROM `'._DB_PREFIX_.'customer` c
LEFT JOIN `'._DB_PREFIX_.'guest` g ON c.`id_customer` = g.`id_customer`
LEFT JOIN `'._DB_PREFIX_.'connections` co ON g.`id_guest` = co.`id_guest`
+3 -3
View File
@@ -207,15 +207,15 @@ $(function(){ldelim}
<label for="other">{l s='Additional information'}</label>
<textarea id="other" name="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{else}{if isset($address->other)}{$address->other}{/if}{/if}</textarea>
</p>
{if $one_phone_at_least}
{if isset($one_phone_at_least) && $one_phone_at_least}
<p class="inline-infos required">{l s='You must register at least one phone number.'}</p>
{/if}
<p class="text">
<label for="phone">{l s='Home phone'}</label>
<input type="text" id="phone" name="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{else}{if isset($address->phone)}{$address->phone}{/if}{/if}" />
</p>
<p class="{if $one_phone_at_least}required {/if}text">
<label for="phone_mobile">{l s='Mobile phone'}{if $one_phone_at_least} <sup>*</sup>{/if}</label>
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text">
<label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" id="phone_mobile" name="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{else}{if isset($address->phone_mobile)}{$address->phone_mobile}{/if}{/if}" />
</p>
<p class="required text" id="adress_alias">
+16 -11
View File
@@ -23,8 +23,13 @@
* International Registered Trademark & Property of PrestaShop SA
*}
{capture name=path}{l s='Login'}{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
{capture name=path}
{if !isset($email_create)}{l s='Authentication'}{else}
<a href="{$link->getPageLink('authentication', true)}" rel="nofollow" title="{l s='Authentication'}">{l s='Authentication'}</a>
<span class="navigation-pipe">{$navigationPipe}</span>{l s='Create your account'}
{/if}
{/capture}
{include file="$tpl_dir./breadcrumb.tpl"}
<script type="text/javascript">
// <![CDATA[
@@ -69,7 +74,7 @@ $(document).ready(function() {
{/literal}
</script>
<h1>{if !isset($email_create)}{l s='Log in'}{else}{l s='Create an account'}{/if}</h1>
<h1>{if !isset($email_create)}{l s='Authentication'}{else}{l s='Create an account'}{/if}</h1>
{if !isset($back) || $back != 'my-account'}{assign var='current_step' value='login'}{include file="$tpl_dir./order-steps.tpl"}{/if}
{include file="$tpl_dir./errors.tpl"}
{assign var='stateExist' value=false}
@@ -181,10 +186,10 @@ $(document).ready(function() {
<label for="passwd">{l s='Password'}</label>
<span><input type="password" id="passwd" name="passwd" value="{if isset($smarty.post.passwd)}{$smarty.post.passwd|stripslashes}{/if}" class="account_input" /></span>
</p>
<p class="lost_password"><a href="{$link->getPageLink('password')}">{l s='Forgot your password?'}</a></p>
<p class="lost_password"><a href="{$link->getPageLink('password')}" title="{l s='Recover your forgotten password'}" rel="nofollow">{l s='Forgot your password?'}</a></p>
<p class="submit">
{if isset($back)}<input type="hidden" class="hidden" name="back" value="{$back|escape:'htmlall':'UTF-8'}" />{/if}
<input type="submit" id="SubmitLogin" name="SubmitLogin" class="button" value="{l s='Log in'}" />
<input type="submit" id="SubmitLogin" name="SubmitLogin" class="button" value="{l s='Authentication'}" />
</p>
</div>
</fieldset>
@@ -315,9 +320,9 @@ $(document).ready(function() {
</select>
</p>
{elseif $field_name eq "phone"}
<p class="required text">
<label for="phone">{l s='Phone'} <sup>*</sup></label>
<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{/if} "/>
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text">
<label for="phone">{l s='Phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{/if}"/>
</p>
{/if}
{/foreach}
@@ -544,15 +549,15 @@ $(document).ready(function() {
<label for="other">{l s='Additional information'}</label>
<textarea name="other" id="other" cols="26" rows="3">{if isset($smarty.post.other)}{$smarty.post.other}{/if}</textarea>
</p>
{if $one_phone_at_least}
{if isset($one_phone_at_least) && $one_phone_at_least}
<p class="inline-infos">{l s='You must register at least one phone number.'}</p>
{/if}
<p class="text">
<label for="phone">{l s='Home phone'}</label>
<input type="text" class="text" name="phone" id="phone" value="{if isset($smarty.post.phone)}{$smarty.post.phone}{/if}" />
</p>
<p class="{if $one_phone_at_least}required {/if} text">
<label for="phone_mobile">{l s='Mobile phone'}{if $one_phone_at_least} <sup>*</sup>{/if}</label>
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if} text">
<label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" class="text" name="phone_mobile" id="phone_mobile" value="{if isset($smarty.post.phone_mobile)}{$smarty.post.phone_mobile}{/if}" />
</p>
<p class="required text" id="address_alias">
+2 -2
View File
@@ -64,7 +64,7 @@
{$HOOK_HEADER}
</head>
<body {if isset($page_name)}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if} class="{if $hide_left_column}hide-left-column{/if} {if $hide_right_column}hide-right-column{/if} {if $content_only} content_only {/if}">
<body {if isset($page_name)}id="{$page_name|escape:'htmlall':'UTF-8'}"{/if} class="{if $hide_left_column}hide-left-column {/if} {if $hide_right_column}hide-right-column {/if} {if $content_only} content_only {/if}">
{if !$content_only}
{if isset($restricted_country_mode) && $restricted_country_mode}
<div id="restricted-country">
@@ -76,7 +76,7 @@
<!-- Header -->
<div id="header" class="grid_9 alpha omega">
<a id="header_logo" href="{$base_dir}" title="{$shop_name|escape:'htmlall':'UTF-8'}">
<img class="logo" src="{$logo_url}" alt="{$shop_name|escape:'htmlall':'UTF-8'}" {if $logo_image_width}width="{$logo_image_width}"{/if} {if $logo_image_height}height="{$logo_image_height}" {/if} />
<img class="logo" src="{$logo_url}" alt="{$shop_name|escape:'htmlall':'UTF-8'}" {if $logo_image_width}width="{$logo_image_width}"{/if} {if $logo_image_height}height="{$logo_image_height}" {/if}/>
</a>
<div id="header_right" class="grid_9 omega">
{$HOOK_TOP}
+5 -3
View File
@@ -422,9 +422,11 @@ function displayImage(domAAroundImgThumb, no_animation)
var newSrc = domAAroundImgThumb.attr('href').replace('thickbox', 'large');
if ($('#bigpic').attr('src') != newSrc)
{
$('#bigpic').attr('src', newSrc);
if (typeof(jqZoomEnabled) != 'undefined' && jqZoomEnabled)
$('#bigpic').attr('rel', domAAroundImgThumb.attr('href'));
$(this).attr('src', newSrc).load(function() {
$(this).show();
if (typeof(jqZoomEnabled) != 'undefined' && jqZoomEnabled)
$(this).attr('alt', domAAroundImgThumb.attr('href'));
});
}
$('#views_block li a').removeClass('shown');
$(domAAroundImgThumb).addClass('shown');
+1 -1
View File
@@ -23,7 +23,7 @@
* International Registered Trademark & Property of PrestaShop SA
*}
{capture assign='page_title'}{if !isset($email_create)}{l s='Log in'}{else}{l s='Create an account'}{/if}{/capture}
{capture assign='page_title'}{if !isset($email_create)}{l s='Authentication'}{else}{l s='Create an account'}{/if}{/capture}
{include file='./page-title.tpl'}
{include file="./errors.tpl"}
+1 -1
View File
@@ -74,7 +74,7 @@
{if $logged}
<a href="{$link->getPageLink('my-account', true)}" class="link_account" data-ajax="false">{l s='My account'}</a>
{else}
<a href="{$link->getPageLink('authentication', true)}" class="link_account" data-ajax="false">{l s='Log in'}</a>
<a href="{$link->getPageLink('authentication', true)}" class="link_account" data-ajax="false">{l s='Authentication'}</a>
{/if}
</div>
{hook h="displayMobileTop"}
@@ -24,6 +24,7 @@
*}
<!-- Block Newsletter module-->
<div id="newsletter_block_left" class="block">
<p class="title_block">{l s='Newsletter' mod='blocknewsletter'}</p>
<div class="block_content">
@@ -32,16 +33,31 @@
{/if}
<form action="{$link->getPageLink('index')}" method="post">
<p>
{* @todo use jquery (focusin, focusout) instead of onblur and onfocus *}
<input type="text" name="email" size="18"
value="{if isset($value) && $value}{$value}{else}{l s='your e-mail' mod='blocknewsletter'}{/if}"
onfocus="javascript:if(this.value=='{l s='your e-mail' mod='blocknewsletter' js=1}')this.value='';"
onblur="javascript:if(this.value=='')this.value='{l s='your e-mail' mod='blocknewsletter' js=1}';"
class="inputNew" />
<input type="submit" value="ok" class="button_mini" name="submitNewsletter" />
<input class="inputNew" id="newsletter-input" type="text" name="email" size="18" value="{if isset($value) && $value}{$value}{else}{l s='your e-mail' mod='blocknewsletter'}{/if}">
<input type="submit" value="ok" class="button_mini" name="submitNewsletter" />
<input type="hidden" name="action" value="0" />
</p>
</form>
</div>
</div>
<!-- /Block Newsletter module-->
<script>
var placeholder = "{l s='your e-mail' mod='blocknewsletter' js=1}";
{literal}
$(document).ready(function() {
$('#newsletter-input').on({
focus: function() {
if ($(this).val() == placeholder) {
$(this).val('');
}
},
blur: function() {
if ($(this).val() == '') {
$(this).val(placeholder);
}
}
});
});
{/literal}
</script>
+1 -1
View File
@@ -219,7 +219,7 @@
</select>
</p>
<p class="checkbox addressesAreEquals" {if $cart->isVirtualCart()}style="display:none;"{/if}>
<input type="checkbox" name="same" id="addressesAreEquals" value="1" onclick="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}" {if $cart->id_address_invoice == $cart->id_address_delivery || $addresses|@count == 1}checked="checked"{/if} />
<input type="checkbox" name="same" id="addressesAreEquals" value="1" onclick="updateAddressesDisplay();{if $opc}updateAddressSelection();{/if}"{if $cart->id_address_invoice == $cart->id_address_delivery || $addresses|@count == 1} checked="checked"{/if}/>
<label for="addressesAreEquals">{l s='Use the delivery address as the billing address.'}</label>
</p>
+6 -6
View File
@@ -259,15 +259,15 @@
<label for="other">{l s='Additional information'}</label>
<textarea name="other" id="other" cols="26" rows="3"></textarea>
</p>
{if $one_phone_at_least}
{if isset($one_phone_at_least) && $one_phone_at_least}
<p class="inline-infos required is_customer_param">{l s='You must register at least one phone number.'}</p>
{/if}
<p class="text is_customer_param">
<label for="phone">{l s='Home phone'}</label>
<input type="text" class="text" name="phone" id="phone" value="{if isset($guestInformations) && $guestInformations.phone}{$guestInformations.phone}{/if}" />
</p>
<p class="{if $one_phone_at_least}required {/if}text">
<label for="phone_mobile">{l s='Mobile phone'}{if $one_phone_at_least} <sup>*</sup>{/if}</label>
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text">
<label for="phone_mobile">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" class="text" name="phone_mobile" id="phone_mobile" value="" />
</p>
<input type="hidden" name="alias" id="alias" value="{l s='My address'}" />
@@ -360,15 +360,15 @@
<label for="other_invoice">{l s='Additional information'}</label>
<textarea name="other_invoice" id="other_invoice" cols="26" rows="3"></textarea>
</p>
{if $one_phone_at_least}
{if isset($one_phone_at_least) && $one_phone_at_least}
<p class="inline-infos required">{l s='You must register at least one phone number.'}</p>
{/if}
<p class="text">
<label for="phone_invoice">{l s='Home phone'}</label>
<input type="text" class="text" name="phone_invoice" id="phone_invoice" value="" />
</p>
<p class="{if $one_phone_at_least}required {/if}text is_customer_param">
<label for="phone_mobile_invoice">{l s='Mobile phone'}{if $one_phone_at_least} <sup>*</sup>{/if}</label>
<p class="{if isset($one_phone_at_least) && $one_phone_at_least}required {/if}text is_customer_param">
<label for="phone_mobile_invoice">{l s='Mobile phone'}{if isset($one_phone_at_least) && $one_phone_at_least} <sup>*</sup>{/if}</label>
<input type="text" class="text" name="phone_mobile_invoice" id="phone_mobile_invoice" value="" />
</p>
<input type="hidden" name="alias_invoice" id="alias_invoice" value="{l s='My Invoice address'}" />
+1 -1
View File
@@ -41,7 +41,7 @@
<img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" alt="{$product.legend|escape:'htmlall':'UTF-8'}" {if isset($homeSize)} width="{$homeSize.width}" height="{$homeSize.height}"{/if} />
{if isset($product.new) && $product.new == 1}<span class="new">{l s='New'}</span>{/if}
</a>
<h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|escape:'htmlall':'UTF-8'|truncate:35:'...'}</a></h3>
<h3><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.name|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h3>
<p class="product_desc"><a href="{$product.link|escape:'htmlall':'UTF-8'}" title="{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}" >{$product.description_short|strip_tags:'UTF-8'|truncate:360:'...'}</a></p>
</div>
<div class="right_block">
+1 -1
View File
@@ -327,7 +327,7 @@ var fieldRequired = '{l s='Please fill in all the required fields before saving
</div>
{/if}
<p id="product_reference" {if isset($groups) OR !$product->reference}style="display: none;"{/if}>
<label for="product_reference">{l s='Reference:'} </label>
<label>{l s='Reference:'} </label>
<span class="editable">{$product->reference|escape:'htmlall':'UTF-8'}</span>
</p>
+1 -1
View File
@@ -51,7 +51,7 @@
<li><a href="{$link->getPageLink('history', true)}" title="{l s='View a list of my orders'}" rel="nofollow">{l s='Order history'}</a></li>
{else}
<li><a href="{$link->getPageLink('authentication', true)}" title="{l s='Authentication'}" rel="nofollow">{l s='Authentication'}</a></li>
<li><a href="{$link->getPageLink('authentication', true)}" title="{l s='Create new account'}"rel="nofollow">{l s='Create new account'}</a></li>
<li><a href="{$link->getPageLink('authentication', true)}" title="{l s='Create new account'}" rel="nofollow">{l s='Create new account'}</a></li>
{/if}
{if $logged}
<li><a href="{$link->getPageLink('index')}?mylogout" title="{l s='Log out'}" rel="nofollow">{l s='Log out'}</a></li>