Salut à tous !
Pour répondre rapidement aux différentes questions posées et aux divers bugs exposés, j'ai précisé dans mon post initial que je n'avais pas touché au fichier mobile_shopping_cart.php
ça, c'est fait.
Toutefois, comme je l'ai déjà indiqué à d'autres utilisateurs, les fichiers shopping_cart, header et footer vont être réécrits en CSS dans les prochains jours (quand j'aurai un peu le temps quoi...). Je posterai un nouveau full package + un package ne contenant que les fichiers modifiés pour celles et ceux utilisant déjà la contrib.
Donc
OUI il est normal que le panier aie la tronche du panier de la boutique "normale"
Concernant le total ligne à 0, c'est un grand mystère... Je viens de retester tout est ok chez ouam... Avez-vous bien tous ce code ?
Code
<?php
require_once('mobile/includes/application_top.php');
if ($cart->count_contents() > 0) {
include(DIR_WS_CLASSES . 'payment.php');
$payment_modules = new payment;
}
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);
$breadcrumb->add(NAVBAR_TITLE, tep_mobile_link(FILENAME_SHOPPING_CART));
require(DIR_MOBILE_INCLUDES . 'header.php');
$headerTitle->write();
?>
<div id="iphone_content">
<?php echo tep_draw_form('cart_quantity', tep_mobile_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<?php
if ($cart->count_contents() > 0) {
?>
<tr>
<td>
<?php
$info_box_contents = array();
$info_box_contents[0][] = array('params' => 'class="productListing-heading"',
'text' => TABLE_HEADING_PRODUCTS);
$info_box_contents[0][] = array('align' => 'center',
'params' => 'class="productListing-heading"',
'text' => TABLE_HEADING_QUANTITY);
$info_box_contents[0][] = array('align' => 'right',
'params' => 'class="productListing-heading"',
'text' => TABLE_HEADING_TOTAL);
$any_out_of_stock = 0;
$products = $cart->get_products();
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
// Push all attributes information in an array
if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
while (list($option, $value) = each($products[$i]['attributes'])) {
echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
where pa.products_id = '" . (int)$products[$i]['id'] . "'
and pa.options_id = '" . (int)$option . "'
and pa.options_id = popt.products_options_id
and pa.options_values_id = '" . (int)$value . "'
and pa.options_values_id = poval.products_options_values_id
and popt.language_id = '" . (int)$languages_id . "'
and poval.language_id = '" . (int)$languages_id . "'");
$attributes_values = tep_db_fetch_array($attributes);
$products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
$products[$i][$option]['options_values_id'] = $value;
$products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
$products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
$products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
}
}
}
for ($i=0, $n=sizeof($products); $i<$n; $i++) {
if (($i/2) == floor($i/2)) {
$info_box_contents[] = array('params' => 'class="productListing-even"');
} else {
$info_box_contents[] = array('params' => 'class="productListing-odd"');
}
$cur_row = sizeof($info_box_contents) - 1;
$products_name = '<table border="0" cellspacing="0" cellpadding="0">' .
' <tr>' .
' <td class="productListing-data" align="center" rowspan="10"><a href="' . tep_mobile_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH/2, SMALL_IMAGE_HEIGHT/2) . '</a></td>' .
' </tr>' .
' <tr>' .
' <td class="productListing-data" valign="top"><a href="' . tep_mobile_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>';
if (STOCK_CHECK == 'true') {
$stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
if (tep_not_null($stock_check)) {
$any_out_of_stock = 1;
$products_name .= $stock_check;
}
}
if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
reset($products[$i]['attributes']);
while (list($option, $value) = each($products[$i]['attributes'])) {
$products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';
}
}
$products_name .= ' </td>' .
' </tr>' .
' <tr><td>'.
' <a href="' . tep_mobile_link(FILENAME_SHOPPING_CART,"action=remove_product&products_id=" . tep_get_uprid($products[$i]['id'], $products[$i]['attributes'])) .'">' . TABLE_HEADING_REMOVE . '</a>' .
' </td></tr>' .
'</table>';
$info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"',
'text' => $products_name);
$info_box_contents[$cur_row][] = array('align' => 'center',
'params' => 'class="productListing-data" valign="top"',
'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));
$info_box_contents[$cur_row][] = array('align' => 'right',
'params' => 'class="productListing-data" valign="top"',
'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']),0, $products[$i]['quantity']) . '</b>');
}
new productListingBox($info_box_contents);
?>
</td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td>
</tr>
<?php
if ($any_out_of_stock == 1) {
if (STOCK_ALLOW_CHECKOUT == 'true') {
?>
<tr>
<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>
</tr>
<?php
} else {
?>
<tr>
<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>
</tr>
<?php
}
}
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<td class="main"><?php echo tep_mobile_button(IMAGE_BUTTON_UPDATE_CART);/*tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART);*/ ?></td>
<td align="right" class="main"></form><?php echo tep_draw_form('cart_quantity', tep_mobile_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')) . tep_mobile_button(IMAGE_BUTTON_CHECKOUT, 'name="checkout"') . '</form>'; ?></td>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
//$initialize_checkout_methods = $payment_modules->checkout_initialization_method();
if (!empty($initialize_checkout_methods)) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td align="right" class="main" style="padding-right: 50px;"><?php echo TEXT_ALTERNATIVE_CHECKOUT_METHODS; ?></td>
</tr>
<?php
reset($initialize_checkout_methods);
while (list(, $value) = each($initialize_checkout_methods)) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td align="right" class="main"><?php echo $value; ?></td>
</tr>
<?php
}
}
} else {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '2'); ?></td>
</tr>
<tr>
<td align="center" class="main"><?php echo TEXT_CART_EMPTY; ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '2'); ?></td>
</tr>
<tr>
<td align="center" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_mobile_button(IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
</tr>
<?php
}
?>
</table>
</form>
<?php require(DIR_MOBILE_INCLUDES . 'footer.php'); ?>
</div>
J'ai testé dans tous les sens, en supprimant, en multipliant les quantités et en mettant à jour le panier, ça fonctionne...
@ZIZOU94 : oui j'ai vu ça, c'est un des points faisant partie de ma todo list et dont la correction sera intégrée au prochain package
@TennisDVD : j'ai eu des infos techniques de la part de ma plateforme bancaire et suis en train de remédier au problème du paiement CB en ligne qui génère toujours une erreur de mon côté. Très certainement encore une histoire de lien, je cite la Caisse d'Epargne :
Citation
L'affichage de la page SP+ sur mobile s'effectue comme sur ordinateur, l'application SP+ effectue les mêmes traitements quel que soit le matériel utilisé. Après vérification, le test sur IPhone/Safari ne pose pas de problème, l'erreur reçue peut provenir d'un lien de paiement mal formé.
et, logiquement (hélas), ce problème se répercute sur l'ensemble des modules de paiement CB.
@titi02330 : c'est bizarre, j'ai testé ta solution par acquis de conscience mais je me suis retrouvé avec le problème que tu rencontrais avec ma solution... lol Attention, quand on appelle le fichier de langue dans les pages mobile, on appelle le fichier de la boutique "normale", pour éviter d'avoir à se retaper tout le répertoire french (par exemple) dans le includes/languages. Ceci dit, ton idée d'amélioration est notée !
Voilà pour ce soir, suite au prochain épisode !
Restant à votre disposition.
Loran
Edit : pour celles et ceux que ça intéresse, le sujet (en anglais) sur iOSC2 par son auteur original :
iOSC2 Bumbarash